Skip to main content

The Long And Winding Road

I started this blog back in November of last year. My aim was to document the development of a Bullet Hell shoot-em-up, written in JavaScript. Here we are, six months later, and lots has happened. With 20 posts already written, I thought that now would be a good time to take stock of what I've already done, and to look to the future and see what's to come.


The Story So Far

Here's what I've covered so far in the 20 blog posts about the game:

  1. Basic player control of a spaceship sprite on an HTML canvas
  2. Adding bullets and creating an object class
  3. Adding bullet spawners
  4. Re-factoring the game update and rendering to use an object manager
  5. Rough collision detection using hit boxes
  6. Upgraded to pixel-perfect collision
  7. Adding bit-mapped font support
  8. Fixed a resource loading bug
  9. Added game states and a state manager
  10. Housekeeping - adding utility and helper code
  11. Added score bullets that award you points when you collide with them
  12. Added a resource manager
  13. Tweaked player control
  14. Implemented animated objects
  15. Added the first enemy type: XY Zappers
  16. Implemented a game timer and game intro and game over ceremonies
  17. Went back to simplified graphics in order to focus on gameplay
  18. Added loading of levels from data files
  19. Started work on an in-game level editor
  20. Implemented an undo/redo system for the level editor

That's a lot of steps! Most of them are quite small, and that's the point - breaking any big project down into smaller tasks makes it much more achievable. It also helps me to focus on one thing at a time - if something comes up while I'm working on another task then, instead of getting side-tracked, I just add that new task to my task list and tackle it later.

Where Do We Go From Here?

So what's next on my task list? Well, the editor still isn't finished yet so there's clearly a lot of work to do there, but there are also lots of other tasks. Here's a list of some of the stuff that I'm planning to work on in the future, in no particular order:

  • Level editor improvements - creating new objects, editing object properties, copy and paste, level import, export and sharing, etc.
  • New bullet and enemy types - homing missiles, mines, enemies that fire, etc.
  • Background graphics - background tiles and maybe background effects like star-fields
  • Audio - music and sound effects
  • Game metrics - charting score, bullet counts, movements, etc. after you complete a level
  • Debug and release builds - run tests and extra checks in debug, take them out and minify the code in release
  • Cloud hosting - store users, levels, scores, etc. on a database hosted on AWS
  • Graphics - finding an artist who can create awesome visuals for the game
  • WebGL - porting the graphics engine over to WebGL to allow for high quality visual effects
  • Code improvements - adding tests, more comments and doing some code re-factoring in a few places

That's a pretty big list! If you think I've missed anything - let me know. If you think you know which of these I should work on next - let me know. You can leave a comment here, Tweet me at @evilpaul_atebit or email me (you can find my address in the git repo)

Comments

Popular posts from this blog

Set The Controls For The Heart Of The Sun

When we last met, I had just started work on a level editor. I'd got as far as adding the ability to select an object and move it around, and then I added an undo/redo system using the command pattern. That was a good start, but dragging items around the level is only fun for so long. What I really want to be doing is.. ..editing the properties of the bullet spawners! And I want to be doing this in realtime as the game plays so that I can immediately see what effect my changes have made to the gameplay of the level.

World In Motion

In the last post I touched on how easy it is to score in this game - you can just camp out on the score bullet spawner and watch the points rack up. I'm going to add a little delay to the score bullets so that they start out in a deactivated and uncollectable state, and then change to active and collectable after a short time - say, half a second. To make it clear what state they are in I'm going to add code to let me change the look of Objects and allow them to be animated.