KEOLA SILVA
  • Professional Work
  • Side Projects
  • About
  • Résumé
  • Professional Work
  • Side Projects
  • About
  • Résumé

Marbelous Development: Initial Prototyping

5/13/2019

0 Comments

 
Marbelous at its current stage is set to be a collect-a-thon platformer that rewards players for exploring and thinking outside the box. It's heavily inspired by the old Marble Blast games and Banjo-Kazooie.

I wanted movement in Marbelous to be a little bit more stiff than in games like Marble Blast, only because I wanted players to be very deliberate with their movement. As a result, I predicted that players wouldn't be holding down the W key all the time, and instead holding it down only when they wanted to gain a lot of speed (uncapped speed was another feature I wanted).  However, aside from this deliberate "stiffness" I also wanted movement to be fun and expressive, which brings me to another feature I was dead-set on having: wall jumping!

I also added the ability to brake, allowing players to slow their momentum at high speeds.

With the previous in mind, I started to prototype movement in Unity3D (where I would build the rest of the project).

Getting a ball to move and jump how I wanted was easy. However, what I wanted was to be able to jump based on collision normals instead of just the ground, or even just one wall/normal. My goal was for the player's jumps to be divided among each collision normal for that frame. So, I needed to keep track of every collision the player is experiencing before it jumps.

I couldn't do this by getting each normal when it jumps, since separate collision events aren't easy to read from outside of the collision event methods. So, every time the player has a new collision, I'm storing the new normal in a list from inside OnCollisionEnter() (as long as it's not a duplicate) and clearing it at the end of FixedUpdate(). Doing this would also solve the issue of jumping twice off of one surface, if that surface was comprised of two different colliders.

An issue I ran into with this, however, is that floats aren't extremely accurate since they lack the precision that doubles have, so in the code I'm rounding off my calculations before checking for duplicates.
Picture
Picture
This isn't very pretty, but I'm not concerned with pre-optimizing the code in the prototyping phase.

This allowed me to begin perfecting my movement and ensure that movement feels great before continuing on. Afterwards, I could start prototyping what I'm calling level "chunks"—small, low-effort parts of a level that revolve around a particular idea or exercise.
Picture
0 Comments



Leave a Reply.

    BY MONTH

    December 2019
    May 2019
    February 2018
    October 2017
    August 2017

    BY GAME

    All
    Gaia
    Marbelous

    RSS Feed

Powered by Create your own unique website with customizable templates.