Development Plan 2.0

January 4, 2021

In my previous post, I concluded that my original development plan was too impractical. As such, I needed to factor in all the new information that I learned to produce a new plan. In this post, I'll provide a summary of my research, a key decision, and my updated plan.

Godot Limitations

Godot’s support for keyboard input mapping, focus management, and 2D layout system are even better than expected. It is faster to prototype in Godot than expected –even with GDscript. However, it’s 2D rendering pipeline is not that flexible. Some UI elements are insufficient for my purposes. And yet the Theme system and the existing UI components are not quite as elegant as I had hoped. For the most part, Godot's UI components do not support animating state transitions and they cannot support any new rendering properties without some amount of reimplementation.

Blender does not support animating meshes at a per vertex, edge, or face level. It supports object transforms, bone rigs, and object modifiers only. Godot can only support topologically non-degenerate meshes. But it can also support some basic mesh drawing in 2D. As a consequence, the content production pipeline concept is no longer necessary (unless I pivot to using a bones system). These limitations primarily effect artists rather than developers. As a result, I doubt production studios and content creators will ever prefer Godot to Unity or Unreal.

Many of these issues described above are not a problem if the game remains very limited in its presentation quality. However, I think such limitations will make the development less enjoyable and may imperil the fun-factor of the gameplay itself. And thus I can only continue with Godot if I'm willing to absorb a much higher development cost to create my own UI components and my own rendering pipeline from the existing Godot source.

Game Development Options

Given the current status of the project I have the following four options:

Option 1: Continue development without making changes

If I decide to continue forward without making any adjustments the game could potentially be released about 2-4 weeks late. However, it could just as likely face more setbacks that force me to abandon it when any other project (or job opportunity) comes along. Even if I completed the game with this plan, it would be lame. I need a lot more time to tune the interactivity.

Option 2: Reduce scope or pivot project to finish on time

The scope could be reduced by removing in the following ways:

  1. Remove all AI development and make it a one-player game that does not involve strategy
  2. Remove all AI development and make it a two-player game where the gameplay strategy is more similar to Battleship
  3. Remove Godot completely and return to a pure C++ project and refocus on the storytelling

Alternatively, I could try to pivot the project to become something else:

  1. Make a game engine-based console app that looks cool (e.g. Cathode)
  2. Make a TUI dashboarding system that can draw graphs and tables
  3. Make a video as a tool to generate a fund to finish a real game

Option 3: Expand scope and restrict my job search

To be able to support a longer-term commitment to the game concept, I could choose to restrict myself to job opportunities that didn't demand the 60+ hour work weeks that are so common in tech. This would mean avoiding fulltime jobs at startups and focusing on freelance work that is a good match for my existing skills. This would also require a commitment to producing a good quality game to justify the time investment. This might then push me to pivot from Godot to Unreal Engine or Unity for further development.

Option 4: Discontinue the project and start interviewing

I read that Josh Ge of Grid Sage Games spent at least 2000 hours (over a 1.5 years) to launch an alpha version of Cogmind. I knew going into this project that just getting an initial prototype done in six weeks would be unrealistic. I could cancel this project and focus on interviewing and skills development. I suppose that would make this project a failure but I don’t think anyone is really holding their breath for this passion project of mine. Though, I wonder if I would regret this decision later...🤔

Next Steps

Option #3 is my preference but it does require a big commitment and a supportive professional arrangement. I'll pursue that first. If I cannot make such an arrangement by mid-February then I'll pivot to option #2 or #4.

As a consequence of that decision, it's time for me to consider Unreal Engine and Unity as alternatives to Godot. Furthermore, the timeline is now TBD. Once I've chosen a game development platform, I'll produce a target deadline.