SpaceDrifter 4500 - Belated Post-Mortem and Results

First Ludum Dare completed! What an exhausting, yet rewarding experience! I didn't know that I had it in me to make a complete a game in 48 hours, let alone a game that I'd be proud of enough to show to others. Looking forward to participating in many more of these. In any case, here is my belated post-mortem (sorry if its a bit ramble-y, mostly using this as a place to put my thoughts down lol):

Game Description

https://ldjam.com/events/ludum-dare/45/spacedrifter-4500

"Spacedrifter 4500" is a game where you must pilot your spaceship back to your home planet, while managing your limited fuel and oxygen (picking up fuel and oxygen tanks that are scattered throughout space). Also, you must avoid asteroids. You start the game with no fuel, drifting haplessly through space.

I think there's an interesting balance in the game between moving quickly before your oxygen runs out, and moving carefully so that you don't crash into an asteroid. The fuel gauge is another variable that complicates the mix a bit (overall the game is still pretty simple though lol).

12emhit/eman_asteroid.gif

Development Timeline

The 48 hour stretch of game development is a bit of a blur. IIRC, a lot of coffee and insta-ramen were present. I basically lived like a college student again. I believe it went something like this:

Ideation:

Woke up to the theme of "Start with Nothing". I can't fully remember my brainstorming session, but I found that taking a short walk around the neighborhood helped me come to an idea that I liked. I settled on "shmup where you start with no fuel or ammo". My initial idea was for the controls to behave like a typical side-scrolling shmup, and if the player ran out of fuel, the ship would remain stationary. The player would have to decide between moving to dodge enemy bullets, and moving to ammo/fuel power ups.

During development, the design of the game changed. I noticed that it doesn't really make sense for a ship in space to remain stationary if it runs out of fuel. It should drift endlessly in the direction it was previously going. This led me to the design of the current game. With all the asteroids, oxygen tanks and fuel tanks galore.

General Timeline: 1. Ideation 2. Ship controls (spent a lot of time getting this the way I wanted to from the onset) (Played around with shmup controls, asteroids style and the current "snappy but drifty" style. 3. Gas Tank and Oxygen Tank implementation 4. A Full Game Loop (lose if you run out of oxygen, win if you reach the home planet) 5. Minimap implementation, Fuel and Oxygen UI 6. UI for level lose/win 7. Asteroid implementation 8. Procedural Level Generation based on Halton Sequences: https://en.wikipedia.org/wiki/Halton_sequence 9. Dynamic Difficulty Adjustment (less asteroids or more fuel/oxy tanks if you lose. more asteroids or less fuel/oxy tanks if you win) 10. particle effects...juicy stuff 11. Sound Effects 12. various polish 13. Tutorial / Intro Scene 14. Polish and make sure WebGL works

I'm happy with this sequence. I like that I started with the idea, then the controls, then the mechanics, then level design (a.k.a. lazy proc gen), then juicy-stuff (visual effects, ui, sfx, tutorial level).

I did mess up on the UI (didn't anchor it properly so it would work on many resolutions, had to fix that post jam).

Because of the stress of the deadline, I didn't make too many gifs during development. But here is the sequence that I have (note there are some things missing):

https://www.youtube.com/watch?v=86PDjgUMN7s

( 1. basic movement; 2 bullets; 3 parallax scrolling; 4 drift controls; 5 snappy-drift controls; 6 gas-tankmouseclick_accl; 7 full-game-loop; 8 minimap-pickups-UI; 9 Basic UI & Level Complete; 10 Level-Lost-Text; 11 Tutorial-Out-Of-Fuel; 12 Hit An Asteroid Playthrough )

Results

Drumroll please...

Screen Shot 2019-11-09 at 5.49.39 PM.png

Ayyy! Pretty happy with these results! Great to know there is a lot of room for growth and improvement. My main goal for this jam was to create a complete experience in 48 hours, so the low score for Innovation is understandable. Over the course of the next 6 months I'll try to create many different prototypes and stretch my game design skills creatively.

Learnings / Thoughts

  • Streamers are a great resource. It's always insightful to observe people playing your game, and they gave me some fantastic input. Utilize streamers! Especially if you don't have any IRL friends on hand (:cryingcatface: :cryingcatface: :cryingcatface:).
  • I've always found that doing some physical activity and then relaxing allows more creative ideas to come to me. I think I'm gunna start the next jam with a brisk walk as well.
  • Gameplay Improvements:
    • French people are people too! Have an alternative to WASD input!
    • The ships angle's is not quite perpendicular when holding a vertical input (it's around 80 degrees I believe?). This caused some confusion for some players about the direction the ship would move. The ships angle should represent the direction it will go in, purely vertical. The animations would be a bit choppier, but clear representation is more important. (plus I could add an interpolating animation to reduce the choppiness)
    • because the camera doesn't zoom in/out based on the speed of the ship, players are more inclined to move slowly (lest they crash into an asteroid). I don't want to discourage players from going fast, so variably zooming out the camera based on speed would have been a nice addition.
    • level ramp is weird (starts out harder, ends up easier as you hoard a bunch of fuel and oxygen, resulting in the level kind of being a chore at the end)
    • Initially, the game was too difficult. A common trend of the games I played seemed to suffer from this. Let's make it less punishing! Perhaps a health bar would be better than an insta-asteroid death.
    • the game is not diverse/interesting enough to constitute such a long game loop. Either shorter the level loop, or add move variation to the level or a sense of progression.
    • I spent a decent amount of time getting the spaceship physics to feel "snappy". They intentionally did not behave like real life physics because I wanted players to move fast and be able to quickly react to oncoming asteroids. However, direction changes were a bit jarring and harsh (I believe a perpendicular angle would completely cancel your speed). I think that having the ship direction based completely on user input was okay, but the speed changes could have been tweaked.
    • The font I used was a bit hard to read
  • Dynamic Difficulty Adjustment is an interesting mechanic. The game becomes easier/harder every time you win or lose (even on the first level). No one noticed/mentioned that the game got easier the more times that they played it. I assume that without this, the game would have been way too hard and my score would have suffered (I also think players would have a worse experience. In this kind of format, I assume that people have less patience for difficult/frustrating games). I do think it may be better to be explicit about the adjustment however.
  • I find the Halton sequence to be a great way of generating a level: https://en.wikipedia.org/wiki/Halton_sequence . The distribution of items seems natural, and its deterministic as well!
  • I liked the fact that the final design of the game was not what I initially drafted in the initial hours of the game. It's cool to see how the design of a game changes as its developed, especially at the rapid pace of a jam.
  • I love how much the system here promotes giving constructive feedback. It's incredibly motivating and I've learned things that would have gone completely over my head.

See y'all in April!