Godot 3.2 is an exciting new launch with many new features. I did encounter a little issue with my current project when switching to Godot 3.2 that my solution may help people out.
I wrote a finite state machine for use with my game. In this state machine, a state calls on the player controller. For some reason, the state machine is loaded before the onready commands are called in the player controller, causing any onready vars to not be prepared. To fix this, and to add a little bit of lazy programming into the player controller, I implemented the following code:
onready var kinematic_controller : KinematicBody2D = get_node("Character_Controller")var kinematic_controller : KinematicBody2D = null ... func get_kinematic_controller() -> KinematicBody2D: if kinematic_controller == null: kinematic_controller = get_node("Character_Controller") return kinematic_controller
This way, if for any reason the onready call to set a controller is not called, we can call it in the get function. I got my game from a non-running state to running perfectly again.
This blog has been idle for a significant amount of time. I have fallen too busy to follow my passion in game development. This is due to the fact that I do work another job full time, and I was pursuing my Bachelor of Science in Computer Science degree full time. Game development just took a back seat. Well, now this is changing. I graduated from my program in December of 2019. Now, to fill in the time that I spent working on my degree jumping back into game development full time.
Now, let me lay down my intentions and plans with this blog, so that anyone reading on this site understands my actions and intentions. Getting back into game development is my attempt into changing my career to become a game developer. Over the next three and a half years, I intend to put a lot of effort into developing a game for release. This blog will go over my development journey, while focusing on tips, techniques and procedures for others to succeed in their attempts at learning game development.
First off, the tools that I intend to use for development are going to be fairly varied to work on my projects. I will write about these tools and their usage in game development as I work on the projects.
Game Engine: Godot
The engine I will be using from here on out is the Godot game engine. There are a few reasons for this. Namely, the flexibility in usage in the most I have ever experienced in the past. I have worked on RPG Maker, Unity, App Game Kit, and others. All of the proceeded tools are fantastic tools and they satisfy a place in the market.
RPG Maker is a great entry point to new developers who wants to see the process of adding content, however, it is quite difficult to change mechanics. There is a high reliance on plug ins with specified orders and such, but lacks the flexibility of a full fledged engine. However, it makes up for this with ease of use. For my purposes, RPG Maker is not flexible enough for what I want to achieve.
Unity is an amazing engine with many options for developers. It is why it has become one of the top engines on the face of this planet. However, with the closed nature of Unity and it’s growth, it has become rather bloated. The way components works with each other leads to situations where it is exceptionally easy to create an interlocking system that is convoluted and harder to work with. There are also fewer and fewer ways to script for Unity.
App Game Kit is an excellent tool for pure C++ usage, it’s workflow is too narrow to achieve what I want to do. There is also much more work needed to achieve a full project to be released.
Godot offers the flexibility of Unity with options to code in GDScript and C++ (With Mono C# as well). Working with compiled C++ gives a new level of optimization that is not possible with Unity. I can work in C++ for computationally intense work while using the simpler GDScript for simpler tasks. This is also neglecting the fact that I am developing on Linux, which none of the other tools can really do as well as Godot does.
What can I say? Tiled is so easy to use and powerful that there aren’t really any significant alternatives for the work that can be done.
Similar to Tiled, Aseprite is so power in it’s workflow, and reasonably affordable.
Blog, and the future
As covered, this blog will be my game developer’s journey. Many of the blog posts will be about the proceeded tools, but more importantly, I plan on focusing on techniques that are universally applicable. I plan on a blog post about every week or two. Whether it is a simple update, such as this post, or a game development concept, there will be something with regards to game development regularly. Think of it as a replacement to the essays that I worked on in college. For this posting, it is simply a status update. I look forward to developing with you.