Employee not Found: JS13K 2020 Postmortem

  • Custom game engine with basic DisplayObject-style scene graph and essential rendering components.
  • The blue top-down robot graphic from https://kenney.nl/
  • gulp.js build system with modules.
  • Mustache (via gulp-mustache) for template string replacements during build
  • Normal web JavaScript, concatenating JavaScript files into one (via gulp-concat).
  • UglifyJS (via gulp-uglify) for minifying JS, with name-mangling option enabled.
  • gulp-htmlmin for minifying HTML.
  • gulp-sass for variables and minifying CSS
  • gzip (via gulp-zip) for compressing.
  • express for local testing.
Green squares are doorways, blue square is player
This image is intentionally the broken icon.
Robot pack, Asset Package 1
Office rooms. White desks are mailable desks, blue are redirected desks, grey are the destinations for the redirected desks, and brown are non-interactive.
  • Open office: large room with desks laid out in a grid with walking space between them, potentially two desks per grid cell.
  • Private office: A single large desk in a small room, preferably facing and opposite side of the wall with a door.
  • Bullpen: very large room with cubicles.
  • Lobby: very large room with many chairs but one or two desks.
Green area is the potential desk area.
The “slide” collision response from the gamedev tutorial
  • Tried to implement swept collision (using this tutorial) to replace both wall and desk collisions, but colliding just stops the player completely. In hindsight, it probably did not work initially because I did not implement the slide collision response properly (slide collision is sliding against a wall without bouncing, effectively canceling the velocity perpendicular to the wall).
  • Reverted the collision code and turned the double-desks into a single collider to get rid of corner catching. However, the corner skipping was still happening. But at this point, the colliders and the visual desks are now completely separate entities.
  • I thought multiple collision iterations per step with smaller travel would work. It didn’t.
  • I looked closer at the slide collision response and re-implemented the swept collision, but only apply it to desks and other future furniture. This implementation worked… for now.
Bullpen layout, with cubicles
  • I thought about doing multiple collision iterations again, but initially went against it as it didn’t solve the issue last time.
  • Attempted to use axis-independent collisions, but it still had corner catching when sliding across a specific axis.
  • Attempted to store the swept collisions on a stack, but I didn’t really know how to convert the stack of collisions into a single slide collision response without going into physics-engine-style impulse vectors.
  • Armed with a deeper understanding of the slide collision response from last time, I revisited multiple collision iterations and tried again. It worked!
Welp.
  • Title/landing screen
  • Lobby room
  • Tutorial for controls and game
  • Sounds/music
  • Some indicator that the mail needs to be delivered to another desk.
  • Graphics for computer desks, mail, and chairs
A little too true, my robotic friend.
Turtleback, my 2019 entry
  • Simplify the game.
  • Don’t get stuck in one part; move on to other parts of the game.
  • Submit early; do not draw it out until the literal last minute.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store