Posted May 09, 2021 by bwdevel
#devlog #status update #gamejam
I've recently rekindled my interest in participating in game jams. I've always participating in jams as learning initiatives and never really tried to hard to finish anything; I've done all of the classic blunders, the most notable is switching to a new game engine after the jam started.
The few exceptions where I did complete something for a jam were a couple of historic Ludum Dare (as far back as approximately #21 or #22); as well as I submitted an entry to the Global Game Jam in 2013 and joined several Saturday-only game jams. Most/all of my games were lost to the internet black hole over the years.
My engine of choice has historically been overwhelmingly LÖVE. Over the past couple of years I did a bit of dabbling in Pico-8 and I really liked the engine but never had time to dive in. I recently completed my first game in Pico-8 for Ludam Dare #48.
I finally have a bit of time for myself so here I am, jammin' again.
After having so much fun in the last Ludum Dare, I decied to check out Itch.io's jam listing and found this jam and decided to join. Seems to be a fairly positive community so far.
I went to bed about 2 hours before the theme was announced: "Temperature is the Key". Once I woke up; I spent the majority of the day with the theme idling in my mind, unable to come up with a game idea that I wanted to spend the week with. So I decided to think about arcade games of my youth to see if any ideas came up; and once my mind settled on Space Zap, I knew I could do something with that. It's a easy to learn game that was quite enjoyable.
Space Zap was an arcade game released in 1980 that had a unique control mechanism (at least at the time): you are responsible for protecing a base from invaders by shooting your defensive lasers in one of 4 directions. The game is fast paced and is as fun as it simple.
With most of the day gone dinner down the hatch, I fired up Pico-8 and began getting to work.
I had a bit of a short wishlist I wanted to accomplish on Day 1:
That was it, a simple list to get started on day one; which I managed to do:
I like to set up my code tabs in Pico-8 (limited to 8 tables) to have a dedicated table for a major component of the game. My current project has the following tabs
Since game engines built around LUA scripting have their object management left up to the developer; I knew start out with setting up the relevant tables. Here is how my core tab0 is set up:
function _init() player=player_init() enemies=enemies_init() missles=missiles_init() particles=particles_init() end
function _update60() cls(0) player_update() enemies_update() missles_update() particles_update() end function _draw() player_draw() enemies_draw() missles_draw() particles_draw() end
And a typical tab for one of the above functions would look like this:
function enemies_init() local enemies = {} --- currently just an empty table but is future proof if I want to put something global here return {} end function enemy_init(origin,type) local enemy={} --- set coordinate, direction of travel, enemy type, --- hitpoints... etc via enemy.variables (e.g. enemy.hp=100, enemy.type=type) add(enemies,enemy) -- add to the global enemies table end function enemies_update() -- for update cycles in object tables, go in reverse -- so that you can delete an object from the table without -- screwing up the iteration of the table for n=#enemies,1,-1 do enemy_update(enemies[n]) end end function enemy_update(enemy) --- update enemy.x, enemy.y --- check collisions and resolve response --- kill if conditions are right (delete from enemies table) end function enemies_draw() for enemy in all(enemies) do enemy_draw(enemy) end end function enemy_draw(e) spr(e.spr,e.x,e.y) end
I ended up prototyping my to-do list quite quickly; so I ended up adding a lot more features on Day 1:
And here is the status of the game at the end of Day 1: