Making Games

Coler 2D Platformer postmortem js13k 2020
September 2020
  Before the jam started I analyzed Celeste Source Code and researched about it, I wrote a tutorial about the mechanics of a platformer here. Last year, I worked hard on polishing the menu, adding music but I couldn't make it to top 100. So this year I decided to spend more on the gameplay. I had the idea of making a platformer, and used the theme by making the http status codes to be collectibles.

Plan Ahead

  This year, I started with a 20 day plan, you can see it here. Though I finished in less than 15 days. I started from scratch, and used my boilerplate starter code using webpack. It supports code minification and live reloading. I spent as less as possible for low level API's such as input events, asset loading, game loop, creating a canvas, and drawing on canvas.

Keep it Simple

  I decided to not have any text in the game. I had a single 128x128 spritesheet with 8x8 tiles for assets. It took 5kb, which later I figured It could go down to 2.5kbs by using a png optimizer. I used the Pico-8 palette with 16 colors. In the plan, I was to do placeholder art, later replace it with polished art, but I didn't have the skills to make it any better so I kept the polishing to minimum. For level design, I chose 32x32 tiles for a level, and added total of four levels. The levels were in 1D array format, and it took the most inefficient space, more than 11kbs. Next year I will use a custom format to fix that.

Challenge yourself

  For mechanics, Player had horizontal movement, jumping, and wall sliding. There were falling blocks, bouncy springs, collectibles, and deadly spikes, and the camera. I also added fall damage for the red tiles and placed them on various places. I asked about wall jumping on SO but couldn't really nail it. And the bouncy springs didn't feel good, but it was OK.

Get social feedback

  I shared my game on social media and got some feedback from /r/gamedev Feedback Friday, and from my twitter post. They said, the movement is too fast, and putting springs underneath the spikes wasn't nice. I slowed the player a bit, but kept the springs there. I figured it wouldn't be no challenging otherwise, the hitboxes were small so you could easily avoid them if you learn the way.

Decorate and Polish

  One feedback was to add atmosphere. I added decorative decals, background with animation, water drops, grass tiles, and a spider npc. At first spider was supposed to have attack but I cut it out. I had no music, but I added sounds using Sound box. I played three different notes and played them randomly on water drops, so it created sort of a tune to the game. I added camera shake and background animation when the player died.

Make it presentable with User Interface

  I had an intro scene, gameplay, a status scene, and an end scene. Status scene shows the collectibles and stats for death count and time. They were both progress bars so both are compared to author's stats. In the end I added a little coin spinning animation just to show the player something nice for collecting all the collectibles, thus finishing the game.

Better luck next year

See the source code.
Comment on on twitter.
Support me on on patreon.
Have fun, stay safe 💙.