Mewnition

Authors: Jared Flores & Alex Pham

An HTML5 experiment

WHAT IS MEWNITION

MewNition is a game that utilizes HTML, Javascript, and CSS. The focus of the game is to play with your buddy to defeat the boss. Equipped with your atomic modulator, you will have to take down the boss (or your friend) to win! Watch out, because the boss will also be controlled by another player. The name of the game is to take down the boss and to take down the other players in order to win.

WHAT WAS USED TO CREATE IT

  • The program features AFrame, which is a web framework for building virtuality reality experiences. This really helped us create amazing games with virtual reality. This entity-component system
  • uWebSockets, a C++ library for high-performance WebSocket servers, used to compensate for the high latency environment of Heroku

PROBLEMS FACED

  • Creating a high-performance C++ server has historically been a problem in past hackathons, given the time restriction, but this time we found a way to compromise for engaging & fast gameplay without introducing lag
  • This was the first time either of us worked with AFrame (or virtual reality in general), so creating the Pill & learning to render was a challenge
  • Rotating assets introduces a lot of noise in pixel art, so we had to upscale all artwork by 3 in order to use interpolation to rotate
  • The Oculus Go would start to crash on the upscaled artwork, most likely due to memory restrictions. We had to compensate for this by using different coordinate systems in the virtual reality Canvas than in the laptop canvas, and create formulas to go between the two
  • The boss was meant to follow the viewport in the Oculus, and achieving this involved a lot of trial and error, along with a good deal of geometry calculations to map the viewport to a location on the Canvas
  • Since the Oculus version would be printed onto a cylinder, we had to make the entire game wrap around using modulo arithmetic and other little hacks. Accommodating for this screen wrap was incredibly challenging and the codebase became very messy
  • Dealing with screen wrapping when doing bounding box based collision was really tricky, we had to create two different bounding boxes for each asset, in case the screen wrapped around
  • Getting the boss to follow the cursor also meant dealing with cases where it would be closer to wrap around than to go in the positive direction
  • Running C++ code on Heroku involved creating a fake NodeJS application to abuse the buildpack and force it to run a precompiled executable
  • Creating a good viewport for the VR player took a lot of time to playtest and figure out, since it would have a big impact on the overall experience
  • Creating a tile & collision engine from scratch was difficult

Built With

Share this project:

Updates