Okay.
You know the drill.
Before we jump into unity and start building our project, it's a good idea to create our game design
document.
And with Laser Defender, we're going to be making a slightly larger project this time than we have
done so far in the course.
And so our game design document is going to be slightly more detailed.
So let's think about our need for Laser Defender.
And to start with, let's just cover off the basic concept of this game.
First up, it's going to be a space shooter, so we can think of it in terms of the old arcade games
like Galaxy Ion and R-type.
The general premise of the game will be to avoid waves of enemies for as long as possible and to shoot
enemies to score points.
So it's going to have a really old school arcade vibe to the game.
Because our game is slightly larger than before.
We're not going to be constrained to a single scene in our project anymore.
So the general flow is that our game will start on a main menu screen where we can decide to start the
game or quit from here.
Once the player clicks on start.
We're going to transition into a new scene, which is going to be our core game.
And then once the game has finished, once the player has died, we're going to transition into a final
scene, which is our game.
Overseeing this scene is going to display our score and give the player the option to either play again,
going straight back into our game scene or loop back around to our main menu.
So that's going to be the general flow of how the player interacts with our game.
But now let's take a closer look at what's going to happen within the game scene itself.
So on this screen, there's a little bit going on, so let's break it down.
First of all, we're going to need a player that we can control and we're going to need enemies that
we can avoid for our game.
The enemies aren't just going to move around randomly.
We're going to get them following a fixed path, and we're also going to get them spawning in waves.
Now, at this point, we've essentially got a game, we've got a player and some enemies for that player
to avoid.
But it would be great if we could start shooting at the enemies and they could shoot back at us.
So on this screen as well, we have some projectiles.
We have the blue projectiles from the player and the orange projectiles from the enemies.
We have the remnants of an enemy here with a particle explosion.
So we're going to learn all about the particle system for that.
And then down at the bottom of the screen, we have the UI.
So we have a health slider and we've seen sliders before and we've got some score text.
So quite a few moving parts there and we'll come back to that in just a moment.
For now, though, let's consider the general game design for the theme.
I'm going to make mine a space shooter.
So think of a good thing for your particular version of this project.
For the player experience, I want the player to feel very frantic so there's going to be lots of enemies
on the screen, bullets flying everywhere and explosions happening all over the place.
But the core mechanic really just comes down to shooting enemies and dodging bullets.
So I'm kind of going for that easy to learn, difficult to master kind of gameplay.
As for the general game loop, we're just going to have a single level with endless enemy wave spawning,
so the player is going to have to shoot the enemies to score points until such a point where their health
reaches zero and the game ends.
Now, because our game is a little bit bigger than what we're used to so far, it might be a good idea
to do a quick feature analysis to see roughly what we want to build.
So I like to break down all the proposed features that are going to go into my game to see what's really
essential and what's just kind of nice to have.
So all of the essential stuff we call the core gameplay, and for this game to really function, we're
going to need to have a player that can move, but a player moving on the screen doing nothing isn't
really exciting or frantic gameplay.
So we're going to add some enemies and they're also going to have to move.
But rather than working out some complicated A.I. or just having them randomly move around, we're going
to have them move and spawn in enemy waves.
So the enemy movement and the enemy wave system that we're going to build are very closely related to
each other, and we can't really have one without the other.
The final piece of core gameplay, in my opinion, will be player health, because if the player can't
die, then the game can end and then also not be any real stakes or point in playing if the player can't
die.
So with that, we have a functioning game and you may be wondering how the player can die in this kind
of situation.
And we could just make it that when the player collides with an enemy, then they lose health and die.
But to make this game a bit more fun and a bit more frantic, we wanted to be able to shoot enemies
and dodge bullets.
So for our secondary features, the big one is going to be shooting.
And you may argue that this should be a core feature for our game, but by adding shooting, we also
add some extra mechanics that we need to worry about.
And the main one is enemy health.
So now that we can shoot back, we need a way of destroying enemies.
And then finally, for our secondary features, we're going to want a scoring system so that the player
can see how well they did on their last run.
Now, with our core and secondary features all planned out, we do have a working game, but it's very
much lacking Polish.
Polish will generally be added at the end of development, but to keep game development interesting,
it is nice to do a little bit of polish here and there as you build your game.
So polish for our game will include things like visual effects, so enemies exploding into showers of
particles.
We'll have some sound effects for when the enemies and the players shoot at each other and explode.
We'll have our menus and additional game screens.
And finally, our last piece of polish will be extra content and tuning of our variables.
So this will be adding additional enemies, additional waves, and generally making it to the game is
playable without being too easy or too difficult.
Now, with our feature analysis out of the way, we know roughly what we need to build.
And also because we've stacked these into individual boxes, we kind of know roughly what type of script
we're going to need to create our game.
So we might have a player movement script and a shooting script and so on.
So with our feature analysis done, let's finally look at the assets that we're going to need for our
game.
And these might come from a pre created asset pack.
You may choose to use the same ones that I'm using, or you may want to create your own, but the ones
we're going to need are going to include our player ship.
So we're going to need something for the player to move around the screen.
We're going to need some enemy ships.
And this may be one or more depending on if you have different types of enemy in your game.
Since we're going to have the enemies and players shooting at each other, we're going to need something
to act as a projectile to save us playing against a blank black background.
Then we're going to want some sort of background sprites.
So I'm going to be using a nice starfield for my space theme.
But again, you can choose whatever works for your particular genre that you've picked.
We're going to need some fonts for our score text and for our main menu and end screen.
And finally, we're going to need some UI sprites for things like our buttons and any other objects
that we want to add to our canvases.
So that's all slightly more in depth guide for this section, and now it's time for your challenge.
I want you to go ahead and choose your theme.
So it may be a space theme like mine or something entirely different.
I then want you to create your game design document and share your document with the community.
So go ahead and complete that challenge and I'll see you in the next lecture where we go ahead and set
up our project.
So I'll see you there.