Coming back to gamedev
I spent the entire day today exploring game frameworks and trying to setup a “Hello World” output. The frameworks I checked out were:
- HaxeFlixel (Haxe)
- Heaps (Haxe)
- Ebiten (Golang)
- SDL (C++)
- Love2D (LUA)
I’ll try to summarise my experience with these 5 frameworks below.
HaxeFlixel
This was my first Haxe game framework when I started gamedev many years ago. It is built on top of OpenFL, which is built on top of Lime, which is built using Haxe. The dependency itself makes me worry sometimes, but putting that aside…
I only built the HTML5 target. The minimified, DCE (dead-code eliminated) version of the final “Hello World” JS file was about 2mb. When gzipped, it goes down to a whopping 500kb, which is great news!
However, setting up the development environment for Windows is a pain.
Heaps
It’s by the creator of Haxe. It does not have any underlying dependencies. The documentation looked solid, and there were great games made with the framework (Dead Cells, Evoland). I really loved the integrated debugging for Haxe on VS Code.
Unfortunately, after troubleshooting for about 2 hours or more, I couldn’t get the final .exe to compile. I compiled a C project using HashLink, but I got stuck. Perhaps it’s my lack of experience with gcc. The HashLink binary of the Hello World program works fine, but this is not intended for distribution.
In short, Heaps looks the most enticing to me, but ultimately I couldn’t build a distributable .exe file, so I gave up.
Ebiten
Looked promising. Unfortunately, I don’t like that the HTML5 build is a WASM (web assembly) file, and even then, the build was 8mb. When gzipped, it went down to 2.3mb, which was still unacceptable.
The initial .exe is similar size to the WASM file (8mb). When gzipped, it only went down to 4.8mb. Anyway, I still like the framework’s simplicity. I might come back to this later on to check out the GopherJS export alternative, and the mobile exports.
SDL
Just for kicks, I thought of going back to old-school gamedev using SDL.
Unfortunately, similar to Heaps, I was unable to figure out how to compile the sample Hello World program using gcc. I probably should’ve used Visual Studio Community Edition, but I didn’t want to invest in a heavy IDE just for the sake of developing on one language/purpose.
Ultimately, I’ll have to give up on SDL, possibly until I figure out how to use gcc correctly.
Love2D
I don’t usually like scripting languages, but I figured I should give this a chance. Surprisingly, it was really easy to build for both desktop and HTML5. The game data size was also somewhat acceptable (700kb), but the game depends on the love.js
as its base engine, which is a whopping 44mb! But wait, that’s just the development build, phew.
The release build of love.js
is 6mb (minified), and when gzipped, it goes down to 1.3mb. However, combined with the aforementioned game data file, it still totals up to 2mb, which I find as unacceptable.
Summary
I personally really wanted to love Heaps, but I guess my lack of experience in using gcc stopped me from making any progress.
My next choice is Ebiten, I’ll explore that a little more later.
HaxeFlixel holds a special place in my heart, but the 3-level dependency makes me hesitate a little. However, I’ll likely come back to this if Heaps and Ebiten don’t work out.
Love2D also looked really good, and I wanted to love it, but the HTML5 build size is a little unattractive. I would like to come back to this someday, though. I like the documentation and community.