While ebiten is fun, it absolutely will be limiting for your larger project. Consider options and research properly before choosing tech. In the case of ebiten + golang, you will suffer greatly from the FFI overhead when calling external graphics API:s.
This is not true, for 2d game the performance of Ebiten is good, you don't suffer from ffi.
Some games have been shiped on that engine, even running on the Nintendo switch.
I tend to write fireworks or simple particle simulations in a new language / graphics api to test for performance as my first step (aka learning how to place a pixel on the screen, double buffer or whatever, do some simple logic / math, and learn the compilation pipeline). It's always a fun task and an easy benchmark: how many pixels can I move per frame? I did this in 2021 in GO and Ebitengine and I was blown away b…
I always do a web project because it typically shows you language features that you wont see in "Hello World". It also shows me what the database drivers look like, if its painful to setup, and all that fun stuff.
I have been a happy user of Ebitengine for several years. If you are interested in seeing the source of some games created with it, check out the awesome-ebitengine list.
I tend to write fireworks or simple particle simulations in a new language / graphics api to test for performance as my first step (aka learning how to place a pixel on the screen, double buffer or whatever, do some simple logic / math, and learn the compilation pipeline). It's always a fun task and an easy benchmark: how many pixels can I move per frame? I did this in 2021 in GO and Ebitengine and I was blown away b…
I also created a performance test with Ebitengine, like I have done for many 2d engines/rendering libraries in the past. Typically I like to test performance with the web/WASM target. More often than not, even just a few rotating sprites will result in some dropped frames. I was extremely surprised at just how insanely smooth Ebitengine performed. For my purposes it was the second most performant engine/rendering library, second only to Kha. Being new to Go I was also blown away how simple it was to just copy memory around and create Braid-like time travel, as well as the exceptionally simple build process. Rust and Bevy get a lot of mentions on Hacker News, but I think Go and Ebitengine will be my next choice to build my next game.
While ebiten is fun, it absolutely will be limiting for your larger project. Consider options and research properly before choosing tech. In the case of ebiten + golang, you will suffer greatly from the FFI overhead when calling external graphics API:s.
This is not true, for 2d game the performance of Ebiten is good, you don't suffer from ffi. Some games have been shiped on that engine, even running on the Nintendo switch.
At least from my own tests, I also found Ebiten extremely smooth and performant when building for the WASM target. There seems to be some people spouting a bit of nonsense in this thread without having actually given Ebiten a chance.
Is size still an issue with Go if you wanted to compile to WASM and target the browser?
If the browser is the main target, I would just use browser native engines like Pixijs.
I would recommend against anyone using PixiJS. From a code perspective it feels dated and inconsistent. It can be very difficult finding correct information for the latest version, and you will very easily hit performance problems if you want to create a full screen game. You will need to apply the bitmap caching feature to yield best performance, and to me it seemed riddled with rendering and interaction bugs, or at the very least highly unintuitive behaviour from its usage. I didn’t discover these problems until I was too far into development of my game.
Unfortunately, garbage-collected languages have historically not been great for real-time action games. Throughput and performance can be excellent, but without control over the garbage collector pauses can wreck the experience. For any game that doesn't require smooth frames for the experience, the best language is the one you're most comfortable with (modulo some base level of game dev community) Edit: on the other…
I'm making a game in Go, and it runs perfectly smooth on my 240hz monitor (and should run perfectly smooth on 1000hz monitors once we get there). The garbage collector has not been an issue, because I use memory the same way as if I were doing it in the C language: Allocate all memory used by the game at program launch. I find this scheme easier to work with in Go than in C, because Go's slice type is a natural fit f…
Thank you for sharing, I've never considered allocating the memory for an entire Go program at launch.
One neat thing that Go has is built-in benchmarking (part of the built-in test package) which shows you allocations per-invocation making it easy to spot the functions which need more work.
If the browser is the main target, I would just use browser native engines like Pixijs.
I would recommend against anyone using PixiJS. From a code perspective it feels dated and inconsistent. It can be very difficult finding correct information for the latest version, and you will very easily hit performance problems if you want to create a full screen game. You will need to apply the bitmap caching feature to yield best performance, and to me it seemed riddled with rendering and interaction bugs, or at…
And the alternative 2D game engine designed for the Web with GPU acceleration is?
Beware the factory factory factory. https://factoryfactoryfactory.net/
as much as i hate the overhead of frameworks & all the tooling that is (seemingly) required for simple things nowadays, the analogy that is attempted to be made, doesn't really fit well. The author seems to have been too focused on writing a "classic analogy" that has it's own URL rather than writing a good & fitting one for the case he/she dislikes – and especially, putting real thought into the analogy to make it a…
> The author seems to have been too focused on writing a "classic analogy" that has it's own URL
That doesn't track, given the sources at the beginning. One person wrote the essay, then somebody else started hosting it at that URL. There doesn't seem to be a direct connection between the writer and the URL at all.
I am a fan of Go due to the focus on simplicity in the language... but why Go for game dev? The purpose of the language was to tackle backend services previously written in C++ focusing on junior developers, not game dev. It's not really a popular tool for the job: Python, which is a simpler language, has a much larger community of gamedev noobs. Or maybe better yet: start with Godot and GDScript