*GO* and *DO* the Game Engine *T*hing

I announced a few weeks ago on my personal blog that I’ve decided to adopt Godot as my Game Engine of choice for Heropath. For the sake of blog continuity, I’m outlining my reasons here as well.

Godot possessed the qualities I was looking for:

  • An easy on-board ramp to coding
  • Appealing features
  • Positive momentum
  • Visually beautiful output

I found a great YouTube evaluation of the different game engines that helped me navigate my choice.

I decided against GDevelop as it is very platformer-ish and did not have attractive outputs based on what I saw. On Itch.io games made by GDevelop had only 9 Strategy and 18 RPGs in contrast to Godot which had 171 Strategy and 158 RPGs. GDevelop has been in development since 2008 while Godot was initially released in 2014. GDevelop does not feel very serious to me.

At the opposite end of the spectrum of seriousness, I decided to not pick Unreal because I see it as too advanced for Heropath as a first project. I’m sticking to 2D to start and adopting a complex and powerful 3D graphics and physics engine really feels like overkill.

I am going to keep Unity as a backup option to Godot. It has some gorgeous games and has lots of learning resources out there. It actually feels a bit overwhelming with all of the options and a few people on Twitter have posted Unity breaking-itself-issues that have come up for them. In contrast Godot appears to have lots of enthusiasm which is not surprising as it does some things better than Unity, is Open Source, and being smaller means it has room to grow.

My plan is now to install Godot and begin getting acquainted with its interface and start developing Heropath with it.

First Sights, First Steps

I’m excited to share my first development diary entry for Heropath. Thanks to Chris DeLeon’s course ‘Code Your First Game’ I’ve gotten an introduction to game coding. His course starts off with pong, then breakout, followed by a car racer, and then ends with a graphic adventure game. The graphic adventure game would provide the launching point to create the style of game that I intend for Heropath to be, a top-down strategy-adventure.

DeLeon’s code would provide four critical mechanics: 1) Draws a grid map with different objects on it, 2) Move the player’s character around, 3) The character can pick-up items located on the map, 4) Use those items to pass obstacles on the map. Below you can see a screen shot of DeLeon’s adventure game.

DeLeon’s adventure game

One of the first things I did to make DeLeon’s game my own was update the graphics. I did this for three reasons: 1) It was super easy to do, 2) Gave me a sense of momentum, 3) Gave me enthusiasm seeing aesthetics that resonates with me.

The graphics come from an outstanding homage/update to Atari 2600 Adventure and are an inspiration for Heropath.

Heropath First Sights Screenshot

The above screenshot is the modest first sights and first steps of Heropath. This alpha demo is an exceedingly simple puzzle game with a fantasy theme. You can play Heropath version 0.0.0.2 with a web browser and keyboard here:

https://heropath.com/demo/alpha-v0.0.0.2/heropath.htm.

Instructions: You control Sir Bloc with the keyboard arrow keys. You need to collect the keys to unlock the doors to get the chalice.

Version 0.0.0.2 currently has the following features:

– Load grid map
– Load character
– Load objects (keys, doors, chalice)
– Logic for character movement
– Logic for key pickup and door unlock
– Logic for capturing chalice resets map
– Updated graphics
– Updated demonstration map
– Updated on-screen instructions

Updates for Heropath can be found at the version history and will include improvements and new features such as:

  • Fix collision detection as the walls and doors feel squishy which contradicts their appearance.
  • Add a nice UI with a character traits panel.
  • Have characters carry the key graphically.
  • Have the doors be replaced by an open door graphic instead of vanishing.
  • Add a monster that chases the character.
  • Add a weapon to defeat the monster.
  • Add encumbrance so when the character picks up an item the character’s movement slows down.
  • Have characters be able to drop the carried key and the object remains on the screen. This changes the item from a grid item that vanishes to an object that has some persistence and is interacted with.
  • Expand the setting with new maps.
  • Add win and end screens.
  • Add a ‘possession’ mechanic that will centre the plot and story.
  • Explore variations of game development fundamentals like camera-usage and time (real-time vs turn-based).

As I think about these improvements, I am considering adopting a game development engine like Godot or Unity to implement these things. While I can learn how to do this in JavaScript it will take a longer time, time that could be better spent developing skills with one of those engines.