itch.io is community of indie game creators and players

Devlogs

Dimensions introduction

Dimension Deflation
A downloadable game for Windows and Linux

Dimension Deflation is a platformer game where player is able to switch between 3D and 2D environment. Main inspiration for the project is Super Paper Mario. The game is in development for over a year as of writing this post. The scope of the project is enormous for a solo developer and a lot of stuff needs to be done on engine level.
This post is a summary of the work I have accomplished so far but doesn’t include everything, it mainly focuses on the engine level stuff.

Engine

For this project I decided to use the Godot engine.

  • Godot is open-source I can add all the core mechanics of the game directly to the engine and avoid tediously attaching core mechanic functionality as scripts to every single object in game, which could be error prone.
  • Godot node based architecture with clear distinction between 2D and 3D nodes made it possible to modify the base classes (Node2D and Spatial as of version 3) and enable the core mechanic to work on every node which derives from those classes and extends them depending on the need.
  • Godot allows multiple separate physical worlds to exists at the same. Every 2D environment can exists on its own without affecting others. Without that I would have to use some workaround to make sure bodies won’t collide with bodies which shouldn’t be there (adding offset to their location or affecting their collision masks)

Core mechanic

DimensionMatrix

(Please take a note of the debug text visible on the video it reports when game is in 2D or 3D mode. At the time of recording the camera switchng wasn't implemented)

Prototype of the prototype

In this prototype a lot of heavy lifting was performed by the nodes. Player object had a ton of code to create its 2D counterpart, check the global state of the game and follow the counterpart. The was also an implementation to support creating box collider counterparts using a derived from RigidBody script. Without finishing rest of the colliders and body types I started moving all the functionality to C++ and as soon as they were in the engine I gradually removed a lot of code from the GDScripts.

Future of the project

I’m still working on the game, there’s still a lot of stuff I didn’t discussed in this post but I didn’t want to make it too long. I may add those extra tidbits in a new post some other time. The plan for now is to work on gameplay and create some first playable levels. I already have a story in mind which I don’t want to discuss at this moment. I’m designing this game as a 3D/2D platformer primarly with puzzle elements being on the second place. I want the player to be able to run, jump, climb and whatever else platformers do + also switching dimensions on the way. I have ideas for multiple related mechanics I want to experiment with. I would like to explore the concept of how objects and characters are adapting to whenever they are in 3D or 2D.

Download Dimension Deflation
Leave a comment