Please or Register to create posts and topics.

Switching to Godot and a Genre Choice

Over the past month, I decided to tackle procedurally-generating the world, and have been working on implementing the Wave Function Collapse algorithm. It took several nights to get it working in Game Maker Studio, and I finally ironed out most of the issues I was having. I realized a few things in the process:

  1. I don't like the GML
  2. Performance will likely be an issue in Game Maker
  3. I don't think I'll need Tiled at all since I'm switching to procedural generation
  4. I don't need much in the way of engine assisted tools, like Game Maker's level-editor and the sprite editor
  5. I use VIM exclusively in my day job and Game Maker's native editor doesn't support it. I was constantly having to remember different key combinations to do things, which really slowed things down.
  6. I don't like the way Game Maker handles tabs. Another option is GMEdit , but there is no VIM support for it that I'm aware of.

Moving to Godot

All of these issues got me looking at other game frameworks. I looked at libGDX a bit, Construct 3, and settled on Godot, mostly at the recommendation of other devs and the ability to use C# and C++. Godot is open source and really has been a dream to setup and work with so far. It's very intuitive and offers more mature languages (namely C# and C++). Finally a real object-oriented language (who needs OO when making a complex game??). And I can always drop down to C++ for things that need to be more performant. The documentation is also clearly written and organized.

So Godot it is. I was able to rewrite the GML Wave Function Collapse in C# in a couple nights. I'm still not entirely satisfied with the results of the algorithm. But it runs considerably faster in C#. I use Visual Studio Code to write the C# parts, and my experience of setting that all up was seamless. I downloaded the DotNET SDK and got C# code talking with Godot without any issues very quickly. I was expecting a lot of hassles with it on my old Macbook, but everything worked right out of the box. The C# IntelliSense is really useful as well.

Tweaking WFC

I'm not 100% my implementation is correct - I think I may have a key misunderstanding of the algorithm as my results do not seem as nice as some of the implementations I've seen, but I need to dive further into it. Right now it's very random which is good, but I'd like some more order to the grouping of terrain types (like grass in bigger sections and water in more of a lake formation).

Here are a few examples of my WFC implementation.

Initial Attempt in Game Maker Studio:

Here is WFC running in Godot:

Another version with corner tiles added:

I haven't done any art in the past 2 weeks, so am eager to do some creative things soon, but there are things I want to work out in Godot, such as figuring out the optimal resolution, different screen sizes, and I want to flesh out a better implementation of WFC. After that, I can start adding objects to the map and work on a basic UI.