After nearly a month into my game development journey, I have nearly 6 completed games under my belt. But so far, these have all been tutorial recreations of famous games (Harvard’s CS50 Game Development course, for those interested). I think it’s about time for me to try my hand at creating a game of my very own: Hue Hopper (working title).
In this post, I’m going to start listing what all is going to go into this first game. From my understanding, development teams often have a full game development document (GDD) that detail much of this information. So to build the habit, I’m going to do that here. Though probably in a much smaller and less formal scale. Not really familiar with this process, so I’m open to feedback from other developers. Let me know your feedback in the comments below.
Hue Hopper Concept
I’ve always love platformers and metroidvania-style games. Since working through the game development course and starting to try to think more like a developer, I’ve been thinking about how to go about actually building one. But I don’t want to try something that large just yet. Instead, I’ve decided to make just a simple platformer focused on only a few minor mechanics.
The main goal of this game will be to complete of series of 10-20 small rooms as quickly as possible. The faster a room is completed, the higher the points awarded. The first few rooms will focus on player movement, jumping, and wall jumping.
As an additional challenge, some platforms will be colored. This indicates the amount of time remaining for that platform to remain active. Once inactive, the platform will disappear. Bonus points could be awarded for the amount of time remaining on each platform (though this would be an extra feature, and may not be included).
There should be a button (or mechanic of some kind) to reset the platforms in the current room.
Hue Hopper Mechanics and Features
There are a few different things that I think are important here. I’m not really sure the best way to go about listing them. If you have any suggestions, be sure to leave them in the comments below. I’d appreciate the feedback.
Game States
This game will use a simple state machine to control the current game state. Game states should include:
- Title screen
- Play state
- High scores list
- Options
- Credits
- Pause screen
- Game over screen
Title screen will have a menu to start the game, view the high scores, change the game options, or view the game credits. Options will allow the player to change keyboard inputs and adjust audio volumes. This can also be done in game via the pause screen. Game over screen will display your score from this game and (if necessary) allow you to input a name into the high scores table.
Optionally, there could be a sort of end of level state that displays your time and points earned.
Player
The player should be able to move and jump. When jumping onto a wall or platform, you should be able to slide down. Pressing jump while sliding will cause you to jump the opposite way.
This will likely be done using a player state machine. Will have idle, moving, jumping, falling, and sliding (down the walls) states. Unsure if this will be a bit overkill, but it may be a good habit to go ahead and separate them out.
Platforms
The platforms will the one of the few things to interact with in the game. (The others being the reset switch and the goal object.) The first task will be making them collide with the Player object. This will likely be a simple AABB collision detector.
These will have an isSolid parameter. Platforms flagged true will be white and remain constantly. False will be a specified color. This color will indicate how much time is remaining before the platform will disappear. Red platforms will have the most time remaining. Colors will transition down through the rainbow to purple before finally disappearing.
There’s no easy way to tween this in RGB (that I’m aware of), so this will likely need to convert time remaining to HSL and from HSL to RGB values. The hue (H value in HSL) would likely be the easiest way of achieving this. Would be interested if there is an easier way to do this.
User Interface
Interface will be pretty minimal. Should display the current level, the total score, and the amount of time remaining for this level.
Level Maker
Some sort of Level or LevelMaker class will be required. This will like be created using a grid based system and an array/list/table of Platform information. I’m not sure the best way to actually go about implementing this system. It will like be the aspect that I’ll need to research. Videos that I think will likely help:
Assets
Everything in the game sort of give the appearance of an old 8-bit video game. Visually, everything will just be simple rectangles. At least for now. Can always upgrade them later.
The only main asset needed will be music and sound effects. Sound effects for jumping and level completion will be done with BFXR (application the generate random sound effects). Music will be similar to how old chiptunes were made (2 square waves, 1 triangle wave, 1 noise channel, and 1 audio sampler). Not really sure what style of music I want just yet, though. Will likely be one of the last pieces I add anyways.
Hue Hopper Schedule
For the entire project, I’m giving myself a one month deadline. This gives me until the end of 2021. I think this is a realistic deadline given my current skill level, but still has enough challenge to help me learn more about the game development process.
Development Timeline
This section is more for my own reference. I’m unsure of how long various aspects realistically take. So I’m estimating how long pieces will take. Afterwards, I’ll analyze how long it actually took me and use that information to help establish more realistic timelines on future projects.
- Repository and project setup – 1 day
- Basic state machine with state transitions – 1 day
- Basic room setup and placeholder GUI – 1 day
- Player movement and wall slides – 2 days
- Options and credits – 1 day
- Level goal objects – 1 day
- Basic platforms – 2 days
- Color changing platforms – 4 days
- Level Maker – 10 days (unsure on this one)
- Timer – 1 day
- Timer-to-score calculator – 1 day
- High scores – 2 days
Grand total: 27 days.
Some of these I think I’m over-estimating. But that’s kind of the point of this. To establish a goal and see if its realistic or not.
Final Thoughts on Hue Hopper
Overall, I think this is a fairly decent entry project for my game development journey. It has a fairly small scope with only a few primary mechanics. None of the mechanics seem too outside my skill level. The exception being the Level Maker, but it’ll be an interesting challenge for me.
Of course, I’d love to hear your feedback on Hue Hopper and my development plan. If you have any thoughts, suggestions, recommendations, or feedback of any kind, be sure to let me know in the comments below. (Even if you think the idea is stupid!)