Porting stats
Porting progress: ~45%
Hours with Godot: ~328h
Scripts transferred: 58
3D-assets transferred: 44
Audio files transferred: 159
Godot project size: 11.04GB
What are these Godot Port Updates?
Porting a game to another engine is a big and rather unique thing, so these post are my way of documenting this porting experience and giving some honest updates on how the porting process is going.
These posts are a weekly thing until all the core features have been ported and along with these posts there are also Patreon test builds each week. These test builds are directed to small audience and the main purpose is to get performance data and early feedback on the ported features.
What has been ported this week?
Item architecture
Item database
Item events
Interface system
Inventory system
Inventory slot behavior
Container system
Equipment system
UI-audio events
Character preview
New building
More props
Core systems
This past week was definitely the most resource intensive porting week so far. My main porting topic was the inventory system and other core systems that are related to whole item architecture and how game handles UI events.
In other words, this was not just a simple "drag-and-drop" porting week :)
"Tactical downgrade"
When I was designing the new inventory and UI-system for Godot, I had basically one main goal and it was that the current implementation must be much more simpler than it was in Unity.
The system that I had in Unity was this multi-tile "tetris" inventory, which is my personal favorite inventory style, but it was a nightmare to work with since other systems around it were constantly changing it and it was a clear bottleneck for making fast progression with UI-related stuff.
Here's a screenshot from that Unity inventory and UI.
So, this time I decided that I will stay away from these multi-tile inventories until all other core UI systems are ready. After I decided this, the most straightforward thing was to implement a simple and modular slot based system that is easy to debug and fast to work with.
Here's a screenshot from the inventory and UI design that I'm currently implementing to Godot.
Technically, this is a pretty major temporary downgrade but I think this is the smart way to implement stuff when you have an on-going production, so you implement advanced features (like tetris inventories) only then when you have a working gameplay loop and most of the other systems ready.
The new inventory needs still some work but in terms of code complexity, this should highlight the difference between these two approaches:
Tetris inventory in Unity (contains ~12 scripts): 6541 lines of code
Slot inventory in Godot (contains ~3 scripts): 411 lines of code (so far)
Godot's UI tools
I have probably watched dozens of tutorials about Godot's UI, learned all the main UI nodes, signal systems, GUI input events, themes and now when I finally have that "UI knowledge" to finish this inventory system port, I honestly think Godot's UI tools are great and can easily compete with all other main game engines.
Related to this, I think I have rewritten this current inventory system in Godot about seven times and reason for this is that each time I have found more elegant approaches to handle UI-stuff and in general there's bunch hidden gems within Godot's UI tools.
Finishing the inventory system
Since this inventory port was one of those "scary" porting topics, this needs a bit more time than a week but if I can manage to implement most of this before next week, then we are still nicely on that original porting timeline.
- Antti (Developer)