Carbonated announces Madworld, a new mobile game built on O3DE | READ THE PR
NEWS & BLOGS | Tech Blog

Project Eureka Update: July 2023

22 Aug, 2023 | 4 min read

Over the past month, the team has been focused on implementing new features and working on new levels. We’ve implemented a number of new features, including our liquid mode environmental interaction and a vacuum feature on the player’s gun. On top of this, we’ve finished assets for the Hub and Descent, and built out a revamped version of level 1 along with the descent and starting on the Hub.

Development Updates

Gameplay Development

This month, a number of gameplay features were implemented. These include:

  • Glaciforming: The gun’s liquid mode environmental interaction. The player is able to fire the liquid mode at a frozen surface and build on top of it. This allows the player to create their own platforms and paths. Additionally, the extruded ice conducts electricity, which will be used for puzzles in levels 2 and 3. 
  • Siphon: The gun’s alternative fire has been switched from a push to a pull. The gun is able to suck physics objects (such as fuel cells) to it, which can then be moved around at will and launched by using the primary fire. It can also be used to pick up ammo from weakened/defeated enemies and the environment.
  • Plutinite Meter: The gun’s ammo system. The meter slowly recharges over time, but can be refueled faster by siphoning an ammo source or from shards dropped by defeated enemies. Each state uses different amounts of plutinite to fire, roughly correlating with density (gas uses the least, solid uses the most, liquid in the middle).
  • Interactions: The interaction system has been overhauled. It now works in a much more efficient way and provides an element in the HUD to alert the player if something is preventing them from completing an interaction. For example, in order to use an elevator, the HUD element would tell the player they need to power up the elevator to enable it.

We faced these primary technical challenges throughout the month:

  • Enemy AI pathfinding
  • Simulated and Kinematic Dynamic Rigid Bodies
  • Electricity System for Glaciforming

Art and Design

State of Matter is a low-poly, first-person puzzler, set in a dystopian sci-fi setting. The main events of the game occur on an asteroid that a group of scientists has established a mining facility on. The player’s journey will take them through the different areas of this facility, including its mines, research stations, and power generators. Aesthetically, the facility’s advanced technology contrasts with the seemingly barren asteroid. The abandoned nature of the facility, however, is eerily complementary to the void of space that surrounds it.

  • Created debris, HUB elevator, skeleton, TV display & broken version, Plutenite resource plant, benches, vault security (door & tripwires), recycling bin, Cleaning robot, vending machine, water cooler.

  • Begun work on overhauling Level 1
    • Added a movement and controls tutorial section
    • Heavily extended the rest of the Surface level to have more in-depth level design that makes clever use of the weapon’s Gas mode and its ability to melt ice
  • Work done on The Descent
    • Using level load/unload features, incorporate our second level sequence that transports the player to the interior of the asteroid, deep below the surface where the facility lies waiting.
  • Work done on The Hub
    • Following The Descent, the player will find themselves in “The Hub”, the facility’s lounge area that serves as its heart, everything else is connected to it.  This area is near completion, populated with new, unique assets and props.

Programming

This month for programming, we implemented:

  • Environmental / Puzzle Mechanic for Weapon’s Liquid mode – “Glaciforming”
    •  More on this in Struggles
  • Interaction System Overhaul
    • New additions = ability to handle interaction events that get the interactable item’s interaction message, interaction state, and interaction key hold-down time
    • These are extremely easy to use in Script Canvas alone – very little setup required to script an interactable object
  • Improvements to player movement and controls
    • Moving down a slope feels smoother than before
    • Jumping feels a lot better and jump height is no longer tied to framerate
    • Transition from StartingPointInput gem for mouse movement, which proved unreliable, to O3DE’s native input event notifications
      • Resulted in much smoother-feeling mouse movement that works with all mice at all framerates now (Mouse movement from StartingPointInput frequently would not detect mouse movement when it should)
  • Revamp of Close-Range enemies
    • Movement is much less jittery (jitter was a result of an O3DE bug – enabling “Interpolate Motion” on the dynamic rigid body caused the enemy to snap back to its original position after its transform was manipulated, even if it was set to kinematic
      • This bug is currently an active Github issue
    • Overhaul of attacking mechanic – added a “Lunge” ability when player is in range, rather than just dealing damage when the player is in its range, which has no user feedback

We faced these primary technical challenges throughout the month:

  • Glaciforming – The Algorithm
    • Most technically difficult mechanic in the game to implement
    • Essentially involves a graph – each “extrusion” node retains a list of all adjacent nodes
    • Figuring out exactly how melting a specific node affects surrounding nodes was one of the biggest challenges
      • Idea is that breaking a node should cause all nodes branching off of it to also break so as to avoid floating nodes
      • Glaciforming makes use of a breadth-first search to destroy all nodes that are no longer branching from a source body of ice, which there can be multiple of (a “source” is an ice that essentially already existed that the player can extrude from. These can be internally powered, meaning glaciforming can be used to create a connection from a source to a destination to provide power to it)
      • This search is also used to update the powered status of nodes for the electricity system, as nodes can only be powered by a source node that is “internally powered”
    • Other major challenge was ensuring that ALL possible situations for this mechanic were accounted for
      • Which… there are a lot of, as one can imagine. 

Sound and Music

Sound:

  • Scripts canvas coordination with WWise and C++ nodes have been explored and experienced, allowing for the integration of more complex audio triggers
  • Sound effects are starting to be fully integrated, including for the gun’s gas mode,  switching gun states, using levers, and doors opening (to name a few)
    • One sound effect to note is the looping heartbeat, which has its speed vary depending on the player’s health
  • Voice lines for A.L.I.C.E.’s introduction have been fully delivered and edited
  • Music has been more fully integrated, with the main menu theme swapping to a looping variation after one play

Music:

  • Began ideas for The Hub’s theme, which would be something much more atmospheric / emphasis on ambiance
  • Revisions to the Main Theme – different-sounding vocals are used, which overall sounds closer to the original vision for the theme

Team Shout-Outs

Shoutout to Jack Kalina for putting together and editing our Dev Blog, being our main person responsible for outsourcing, and working with RIT to ensure that our game can be published on Steam when it’s ready!

Subscribe for the latest updates, events, webinars and community news