Devlog 2: Prototyping



Art

Style

After plenty of prototyping and experimenting with different colours and settings, our team has settled on a style! We’re going for a vibrant, sunset-soaked atmosphere where lush plant overgrowth and intricate steampunk machinery blend together to shape the world.

Environment

The environment will feature assets designed to mimic the look of folded and glued cardboard, similar to the aesthetic seen in Paper Mario. After testing out the parallax effect, we’ve decided to keep it as it adds depth and gives us more room for artistic expression in crafting our world. To bring the environment to life, we’re also incorporating animated elements like moving gears and glowing emissive details, adding that extra bit of charm and energy to the scene. Multiple prototypes were made for the UI layout.

Character Animation

We are approaching this with cutout animation. Our first prototypes were made in Adobe After Effects by taking reference from games that inspired ours. We then took our best prototype and attempted the same result with the Unity's built in sprite editor. We found that the result from Unity were better and more efficient with the benefit of the sprite already beign in the project. 

What's next...?

We want to start approaching designing our characters and environment. Currently we are aiming for 4 unique character with the possibility of customization. A fun idea that we want to test out is wheels, mainly tank wheels, but we are currently trying to find ways to achieve what we have in mind. As for what's left to protype, we still have to test how we're going to design the RFX and where to use them. Another thing is the design of the level itself and the finalization UI.


Coding

Player Controller

In our last devlog, we emphasized how crucial movement is in a fast-paced game. Initially, we used a Celeste-style player controller, which worked well but didn’t fully suit our Speedrunners-inspired gameplay. Additionally, the grappling hook wasn’t fully compatible with it.

To improve movement, we switched to a Super Meat Boy-style controller, which makes it easier to reach max speed and perform big jumps. Like Celeste, Super Meat Boy also includes hidden mechanics such as jump buffering and coyote time.

If we need further adjustments, we can easily tweak movement speed and hidden mechanics using our scriptable object system.



More information in the folllowing videos or you can try the prototype below:

Audio Implementation

This week the audio architecture took shape in the form of using a global audio manager instance that get's called from within the Player Controller script. This made checking what needs to be called really easy and fast to debug. For example whenever the player wishes to Jump, the ExecuteJump() method is called and a single line of code referencing the Audio Manager triggers: 

        AudioManager.Instance.PlayJumpSound();

And the AudioManager itself holds a specific call where additional parameters are also triggered using Scriptable Objects:

  public void PlayJumpSound()

  {

PlayRandomClip(audioClipData.jumpClips,
audioClipData.randomizeJumpPitch,
audioClipData.jumpPitchMin,
audioClipData.jumpPitchMax,
audioClipData.jumpVolume);

  }

While not ideal the audio manager holds all methods that would need SFX and a lot of logic is repeated, something for the future is figure out how to further make the manager's logic modular and decoupled.


Notice how the scriptable object holds a whole bunch of fun modular settings?
public class MusicSegment : ScriptableObject

{

    public AudioClip audioClip;
    public bool loop;
    public int loopCount = 1;
    public bool useFade;
    public float fadeInDuration = 1.0f;
    public float fadeOutDuration = 1.0f;
    public AudioMixerGroup audioMixerGroup;
    [Range(0f, 1f)] public float volume = 1f;
}

The same workflow was applied to a first musical segmentation system. By defining "game states' or phases different music segments get triggered. 

Notice how the different segment references are themselves Scriptable Objects? Here's how they work:


The clip itself can be set to Loop, how many times it should loop if necessary, if it needs to fade in and/ or out and to what mixer bus it should be delegated. Lastly a global volume slider for further granular control.

Figuring out what sounds need the player's attention is an ongoing thing. A main idea was to have the Player interactions front and center in the audio mix, and have all other sounds make way for these interactions. The easiest method using Unity is to use sends and returns in addition to a compressor that ducks the audio of the music and the environmental audio mixer busses. This artificially pushes the sound of whatever bus send forward.

Files

WESTDRIVE[Gr20]_Prototype_PlayerController.zip 26 MB
59 days ago
SCRAPPLED[Gr20]_Prototype_Build.zip 33 MB
51 days ago

Get Group20Scrappled

Leave a comment

Log in with itch.io to leave a comment.