developer during the night • I also stream indie games from itch io • Playing video games since ~2000 I used Game Maker, Godot and Ebitengine a lot. I also tried making games with Defold, Phaser and SDL.
Ebitengine • List Ebitengine features (as of today) • Discover 3rd-party Ebitengine libraries • Make some conclusions Because this is the foundation of every game
Ebitengine • List Ebitengine features (as of today) • Discover 3rd-party Ebitengine libraries • Make some conclusions You’ll probably need some of those
usually re-twits Ebitengine projects, so check out his Twitter to find more interesting stuff. Awesome-ebitengine repository lists some Ebitengine games (with links to their repositories).
functional options pattern a lot • Accepts *ebiten.Image as an input • Uses ints for measurements, coordinates It may be incompatible with the rest of your game. API wrapping can help here.
functional options pattern a lot • Accepts *ebiten.Image as an input • Uses ints for measurements, coordinates It’s not a real problem but I personally don’t like it.
functional options pattern a lot • Accepts *ebiten.Image as an input • Uses ints for measurements, coordinates This is very good. You can handle the image objects caching and loading on your side.
functional options pattern a lot • Accepts *ebiten.Image as an input • Uses ints for measurements, coordinates This may result in many float64->int conversions around the UI-related code. Wrappers could help here too.
library (use it!) I highly recommend to wrap it, so you can benefit from the implementation while keeping the API surface more consistent with the rest of your game code. Smash that ⭐ button! -> github.com/ebitenui/ebitenui
new concept, the authors of ECS are trying to see what are the limits and how can we create both convenient and efficient ECS system. Perhaps Artem Sedykh will make a detailed talk about it one day. Let’s look forward to it.
default language • In-game texts should not be hardcoded It could be OK-ish to use English as a default, but not everyone know that language. You may need some very easy to understand language switch buttons to make the game more accessible for the players.
need to match the system language with dictionaries available first. golang.org/x/text/language can be useful to match and compare the languages. See also: golang.org/x/text/collate
team and your users. User-created maps in WarCraft III wouldn’t be as great if there were no scripting support! Scripting makes it possible to extend the game without having to re-build it (good for the players).
lib? • Try avoiding redundant allocs (slices, etc) • Do not use “container/heap” • Whether possible, use generics instead of interface{} The devil is in the details.
lib? • Try avoiding redundant allocs (slices, etc) • Do not use “container/heap” • Whether possible, use generics instead of interface{} The devil is in the details.
lib? • Try avoiding redundant allocs (slices, etc) • Do not use “container/heap” • Whether possible, use generics instead of interface{} The devil is in the details.
struct (no slices involved) • Compatible with ebitengine-input package • Includes utility things like convenient Rand sources gmath works for me, maybe it’s good enough for you too.
struct (no slices involved) • Compatible with ebitengine-input package • Includes utility things like convenient Rand sources gmath works for me, maybe it’s good enough for you too.
struct (no slices involved) • Compatible with ebitengine-input package • Includes utility things like convenient Rand sources gmath works for me, maybe it’s good enough for you too.
struct (no slices involved) • Compatible with ebitengine-input package • Includes utility things like convenient Rand sources gmath works for me, maybe it’s good enough for you too.
go get github.com/SolarLune/resolv go get github.com/quasilyte/gmath go get github.com/quasilyte/gsignal go get github.com/quasilyte/ebitengine-input go get github.com/quasilyte/ebitengine-resource
• Supports many platforms • Relatively simple installation (few external deps) • Easy to get started (but maybe hard to master?) • Feature reach core (shaders, audio, etc.) • Good docs, many examples • An active community
libraries will make your code look less consistent due to different API styles. I suggest to wrap 3rd party libraries and use them via your own APIs. This will also help you to change the 3rd party dependency later if you’ll ever want to do that. This is better than writing everything from scratch.
becoming an Ebitengine sponsor • Contribute to Ebitengine (or submit bug reports) • Credit/mention #ebitengine in your game or content • Contribute to cool libraries or create your own • Be an active community member (Discord channel)
Tweet using #ebitengine tag • Post in show-and-tell channel in Discord • Create a reddit post in /r/ebitengine • For itch.io, add game to made-with-ebitengine • Open source? => submit to awesome-ebitengine • Let me know and I’ll stream it
like Go more than gdscript or C#. It’s not only about the language: • I like Go communities • I like the 3rd party tooling (and the “go tool” itself) • I am feeling at home here