Tower Defence - The Plan
Basic development plan for my Tower Defence game. Part of an assignment in 2D game creation.
Written the by Thomas Cairns.
Introduction
Currently I'm attending the course Game Programming 1: Computer Games in 2D at Uppsala University with Jerry Jonsson as the course director. As part of the course, I will be creating a game during the coming six weeks. I think the description of the assignment sums up the task quite nicely.
Alongside the project I will be documenting things that I learn during the development, and the progress of the project.
Assignment
The arcade games we where provided to select from are the following, Frogger, Space Invaders, Tetris, Pacman, Galaga, Digger, Zelda I, Duckhunt, Super Mario Bros, Bomberman, Nethack, Scorched Earth or own suggestion. I decided to go with the last option and ask if I could do a Tower Defence game. The reason to go with another games then provided is that I haven't played the classics all that much and I don't want to spend half the project learning how the game I'm creating should work.
As a base for the project we are creating the core of the game together with our course director who will be coding the solution live during our lectures. However some minor implementations have to be done by ourself, and of course we have to implement what is unique to the game we chosen.
- DrawManager
- AudioManager w/ Sound, Music
- InputManager
- SpriteManager w/ Sprite
- CollisionManager w/ AxisAlignedBoundingBox
- StateManager w/ States
- Entity hierarchy and management
- Heads-up display (HUD)
- Fully functional game
- Good code structure
To expand upon the assignment we can also implement some of the features listed below. Each feature gives a certain amount of point, the points will be combined and counted towards a grade that is above pass if properly the feature was properly implemented. The options suffixed with an asterisk are the features that I want to implement within the game.
- No memory leaks *
- Animation *
- Particle effects
- Artificial Intelligence
- Path finding *
- High-score system *
- Data driven entity creation *
- Graphical User Interface (GUI) *
- Extended CollisionManager *
- Procedurally generated content
Vision
There are a whole bunch of different tower defence games and even games that are based on the same concept have varying implementations. The direction I want to go is to based the game on a sub-type called Element Tower Defence. Ironically in my planning I'm not including much of the elemental system, the reason is simply based on the time restriction. The elements would require another resource system, a tower combination and relation system, and a specific mob type. However the rest of the game is solid and I want to keep that.
Plan
The engine that we are creating together is not yet complete but with only six weeks to go I want to get started. During the weekend I began planning what kind of structure I want my code to have. The structure is largely based on the basic engine that is provided by the course with minor additions of objects that I know will exist. In the future I will most likely make some larger modifications to match my own preferred flow, but for now it will give something to work with.
For the project I have also decided to work around the method of dividing work into tasks. The task structure is based on agile working methods, for example Kanban or Scrum. There are a few reasons for me to take this route:
- Provides a basic estimation about the amount of work that the game will require.
- Provides a way to divide the work across the available time.
- A rudimentary way for me to measure my working pace.
- A method that can be simplified to fit a one-man-crew.
- Based upon methodologies I have worked with previously.
The division and naming of the task are suited to be reminders for me, and it was not created with other readers in mind so it will most likely only give you a basic overview.