What to make?
With Chapter 3 out of the way, it's time to start working on the long-term project that will make up the core of the book. Only problem is, I'm still not entirely sure what that project should be.
I've taught half- and full-day NES development workshops several times. At first, I used a Pong clone as the project, which had the advantage of being something most people immediately understood, but the disadvantage that I had to spend a disproportionate amount of time on handling collisions. It was eating into the time I had for teaching more parts of the hardware, so I decided to come up with a different project.
My second teaching project was a top-down adventure game in the style of Legend of Zelda. No collisions, no need to program velocity/acceleration since movement was solely from the controller, and having the player character face different directions provided a great example of tile re-use. I am hesitant to use the top-down adventure model in the book, though, because ultimately it's a bit simple.
So, I'm leaning toward creating a platformer for the book. Platform games are what the NES was largely known for relative to its competition, and they are filled with technical challenges for the programmer:
- Storing map data for multiple levels
- Scrolling across multiple screens
- Jump and platform physics
- Sub-pixel positioning for velocity/acceleration
- Collision detection with enemies and world elements
There's a lot to dig into, and since this is a book, plenty of time to get into the details. It will also be the first platformer I've ever written! I'm looking forward to it and I hope you are too.