1
00:00:04,160 --> 00:00:04,600
Okay.

2
00:00:04,610 --> 00:00:05,450
You know the drill.

3
00:00:05,480 --> 00:00:11,030
Before we jump into unity and start building our project, it's a good idea to create our game design

4
00:00:11,030 --> 00:00:11,840
document.

5
00:00:11,840 --> 00:00:16,640
And with Laser Defender, we're going to be making a slightly larger project this time than we have

6
00:00:16,640 --> 00:00:18,350
done so far in the course.

7
00:00:18,350 --> 00:00:22,070
And so our game design document is going to be slightly more detailed.

8
00:00:22,160 --> 00:00:25,460
So let's think about our need for Laser Defender.

9
00:00:25,820 --> 00:00:29,840
And to start with, let's just cover off the basic concept of this game.

10
00:00:29,930 --> 00:00:35,480
First up, it's going to be a space shooter, so we can think of it in terms of the old arcade games

11
00:00:35,480 --> 00:00:37,400
like Galaxy Ion and R-type.

12
00:00:37,670 --> 00:00:43,460
The general premise of the game will be to avoid waves of enemies for as long as possible and to shoot

13
00:00:43,460 --> 00:00:44,990
enemies to score points.

14
00:00:44,990 --> 00:00:48,650
So it's going to have a really old school arcade vibe to the game.

15
00:00:49,560 --> 00:00:52,560
Because our game is slightly larger than before.

16
00:00:52,560 --> 00:00:56,540
We're not going to be constrained to a single scene in our project anymore.

17
00:00:56,550 --> 00:01:01,890
So the general flow is that our game will start on a main menu screen where we can decide to start the

18
00:01:01,890 --> 00:01:03,880
game or quit from here.

19
00:01:03,900 --> 00:01:05,650
Once the player clicks on start.

20
00:01:05,670 --> 00:01:09,600
We're going to transition into a new scene, which is going to be our core game.

21
00:01:09,930 --> 00:01:14,490
And then once the game has finished, once the player has died, we're going to transition into a final

22
00:01:14,490 --> 00:01:15,750
scene, which is our game.

23
00:01:15,750 --> 00:01:21,300
Overseeing this scene is going to display our score and give the player the option to either play again,

24
00:01:21,300 --> 00:01:25,740
going straight back into our game scene or loop back around to our main menu.

25
00:01:25,770 --> 00:01:29,970
So that's going to be the general flow of how the player interacts with our game.

26
00:01:29,970 --> 00:01:34,320
But now let's take a closer look at what's going to happen within the game scene itself.

27
00:01:34,710 --> 00:01:38,010
So on this screen, there's a little bit going on, so let's break it down.

28
00:01:38,040 --> 00:01:43,140
First of all, we're going to need a player that we can control and we're going to need enemies that

29
00:01:43,140 --> 00:01:45,160
we can avoid for our game.

30
00:01:45,180 --> 00:01:48,000
The enemies aren't just going to move around randomly.

31
00:01:48,000 --> 00:01:53,760
We're going to get them following a fixed path, and we're also going to get them spawning in waves.

32
00:01:53,910 --> 00:01:58,410
Now, at this point, we've essentially got a game, we've got a player and some enemies for that player

33
00:01:58,410 --> 00:01:59,270
to avoid.

34
00:01:59,280 --> 00:02:03,780
But it would be great if we could start shooting at the enemies and they could shoot back at us.

35
00:02:03,780 --> 00:02:06,030
So on this screen as well, we have some projectiles.

36
00:02:06,030 --> 00:02:10,550
We have the blue projectiles from the player and the orange projectiles from the enemies.

37
00:02:10,560 --> 00:02:14,190
We have the remnants of an enemy here with a particle explosion.

38
00:02:14,190 --> 00:02:17,100
So we're going to learn all about the particle system for that.

39
00:02:17,250 --> 00:02:19,790
And then down at the bottom of the screen, we have the UI.

40
00:02:19,800 --> 00:02:25,230
So we have a health slider and we've seen sliders before and we've got some score text.

41
00:02:25,230 --> 00:02:29,400
So quite a few moving parts there and we'll come back to that in just a moment.

42
00:02:29,820 --> 00:02:33,900
For now, though, let's consider the general game design for the theme.

43
00:02:33,900 --> 00:02:36,420
I'm going to make mine a space shooter.

44
00:02:36,420 --> 00:02:40,410
So think of a good thing for your particular version of this project.

45
00:02:40,410 --> 00:02:45,600
For the player experience, I want the player to feel very frantic so there's going to be lots of enemies

46
00:02:45,600 --> 00:02:49,950
on the screen, bullets flying everywhere and explosions happening all over the place.

47
00:02:49,950 --> 00:02:54,660
But the core mechanic really just comes down to shooting enemies and dodging bullets.

48
00:02:54,660 --> 00:02:59,040
So I'm kind of going for that easy to learn, difficult to master kind of gameplay.

49
00:02:59,460 --> 00:03:05,910
As for the general game loop, we're just going to have a single level with endless enemy wave spawning,

50
00:03:05,910 --> 00:03:10,770
so the player is going to have to shoot the enemies to score points until such a point where their health

51
00:03:10,770 --> 00:03:12,870
reaches zero and the game ends.

52
00:03:13,440 --> 00:03:18,270
Now, because our game is a little bit bigger than what we're used to so far, it might be a good idea

53
00:03:18,270 --> 00:03:22,100
to do a quick feature analysis to see roughly what we want to build.

54
00:03:22,110 --> 00:03:26,970
So I like to break down all the proposed features that are going to go into my game to see what's really

55
00:03:26,970 --> 00:03:29,580
essential and what's just kind of nice to have.

56
00:03:29,850 --> 00:03:35,250
So all of the essential stuff we call the core gameplay, and for this game to really function, we're

57
00:03:35,250 --> 00:03:41,220
going to need to have a player that can move, but a player moving on the screen doing nothing isn't

58
00:03:41,220 --> 00:03:43,380
really exciting or frantic gameplay.

59
00:03:43,380 --> 00:03:47,040
So we're going to add some enemies and they're also going to have to move.

60
00:03:47,040 --> 00:03:52,020
But rather than working out some complicated A.I. or just having them randomly move around, we're going

61
00:03:52,020 --> 00:03:54,990
to have them move and spawn in enemy waves.

62
00:03:54,990 --> 00:03:59,820
So the enemy movement and the enemy wave system that we're going to build are very closely related to

63
00:03:59,820 --> 00:04:02,400
each other, and we can't really have one without the other.

64
00:04:02,700 --> 00:04:08,520
The final piece of core gameplay, in my opinion, will be player health, because if the player can't

65
00:04:08,520 --> 00:04:14,370
die, then the game can end and then also not be any real stakes or point in playing if the player can't

66
00:04:14,370 --> 00:04:14,920
die.

67
00:04:14,940 --> 00:04:20,459
So with that, we have a functioning game and you may be wondering how the player can die in this kind

68
00:04:20,459 --> 00:04:21,420
of situation.

69
00:04:21,420 --> 00:04:26,010
And we could just make it that when the player collides with an enemy, then they lose health and die.

70
00:04:26,340 --> 00:04:31,590
But to make this game a bit more fun and a bit more frantic, we wanted to be able to shoot enemies

71
00:04:31,590 --> 00:04:32,940
and dodge bullets.

72
00:04:32,940 --> 00:04:37,020
So for our secondary features, the big one is going to be shooting.

73
00:04:37,020 --> 00:04:42,480
And you may argue that this should be a core feature for our game, but by adding shooting, we also

74
00:04:42,480 --> 00:04:45,000
add some extra mechanics that we need to worry about.

75
00:04:45,000 --> 00:04:47,250
And the main one is enemy health.

76
00:04:47,250 --> 00:04:51,180
So now that we can shoot back, we need a way of destroying enemies.

77
00:04:51,180 --> 00:04:55,890
And then finally, for our secondary features, we're going to want a scoring system so that the player

78
00:04:55,890 --> 00:04:58,650
can see how well they did on their last run.

79
00:04:59,160 --> 00:05:04,860
Now, with our core and secondary features all planned out, we do have a working game, but it's very

80
00:05:04,860 --> 00:05:06,420
much lacking Polish.

81
00:05:06,420 --> 00:05:11,580
Polish will generally be added at the end of development, but to keep game development interesting,

82
00:05:11,580 --> 00:05:15,570
it is nice to do a little bit of polish here and there as you build your game.

83
00:05:15,690 --> 00:05:21,960
So polish for our game will include things like visual effects, so enemies exploding into showers of

84
00:05:21,960 --> 00:05:22,860
particles.

85
00:05:22,860 --> 00:05:27,990
We'll have some sound effects for when the enemies and the players shoot at each other and explode.

86
00:05:28,320 --> 00:05:31,270
We'll have our menus and additional game screens.

87
00:05:31,290 --> 00:05:36,360
And finally, our last piece of polish will be extra content and tuning of our variables.

88
00:05:36,360 --> 00:05:41,550
So this will be adding additional enemies, additional waves, and generally making it to the game is

89
00:05:41,550 --> 00:05:44,460
playable without being too easy or too difficult.

90
00:05:44,940 --> 00:05:49,110
Now, with our feature analysis out of the way, we know roughly what we need to build.

91
00:05:49,170 --> 00:05:55,470
And also because we've stacked these into individual boxes, we kind of know roughly what type of script

92
00:05:55,470 --> 00:05:57,540
we're going to need to create our game.

93
00:05:57,540 --> 00:06:01,980
So we might have a player movement script and a shooting script and so on.

94
00:06:02,640 --> 00:06:07,650
So with our feature analysis done, let's finally look at the assets that we're going to need for our

95
00:06:07,650 --> 00:06:08,250
game.

96
00:06:08,310 --> 00:06:11,190
And these might come from a pre created asset pack.

97
00:06:11,220 --> 00:06:16,860
You may choose to use the same ones that I'm using, or you may want to create your own, but the ones

98
00:06:16,860 --> 00:06:19,980
we're going to need are going to include our player ship.

99
00:06:19,980 --> 00:06:23,100
So we're going to need something for the player to move around the screen.

100
00:06:23,100 --> 00:06:24,990
We're going to need some enemy ships.

101
00:06:24,990 --> 00:06:29,550
And this may be one or more depending on if you have different types of enemy in your game.

102
00:06:30,000 --> 00:06:34,170
Since we're going to have the enemies and players shooting at each other, we're going to need something

103
00:06:34,170 --> 00:06:38,940
to act as a projectile to save us playing against a blank black background.

104
00:06:38,940 --> 00:06:41,520
Then we're going to want some sort of background sprites.

105
00:06:41,520 --> 00:06:44,970
So I'm going to be using a nice starfield for my space theme.

106
00:06:44,970 --> 00:06:49,080
But again, you can choose whatever works for your particular genre that you've picked.

107
00:06:49,170 --> 00:06:54,270
We're going to need some fonts for our score text and for our main menu and end screen.

108
00:06:54,690 --> 00:06:59,520
And finally, we're going to need some UI sprites for things like our buttons and any other objects

109
00:06:59,520 --> 00:07:01,590
that we want to add to our canvases.

110
00:07:01,860 --> 00:07:08,430
So that's all slightly more in depth guide for this section, and now it's time for your challenge.

111
00:07:08,670 --> 00:07:11,010
I want you to go ahead and choose your theme.

112
00:07:11,010 --> 00:07:14,820
So it may be a space theme like mine or something entirely different.

113
00:07:15,000 --> 00:07:20,370
I then want you to create your game design document and share your document with the community.

114
00:07:20,370 --> 00:07:25,440
So go ahead and complete that challenge and I'll see you in the next lecture where we go ahead and set

115
00:07:25,440 --> 00:07:26,430
up our project.

116
00:07:26,430 --> 00:07:27,840
So I'll see you there.

