Awesome Ebitengine
A curated list of awesome Ebitengine frameworks, libraries and software
Ebitengine is an open source game library for the Go programming language. Ebitengine's simple API allows you to quickly and easily develop 2D games that can be deployed across multiple platforms. Ebitengine is made by Hajime Hoshi.
Contributing
Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!
If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!
Contents
Frameworks
Various architectural patterns and approaches to game design
- donburi - Just another Entity Component System library for Ebitengine.
- arche - An archetype-based Entity Component System for Go.
- unitoftime-ecs - A simple and generic ECS implementation in Go.
- gameengine-ecs - A fast Entity Component System in Golang.
- mizu - Entity Component System framework for Ebitengine.
- gohan - Entity Component System framework for Ebitengine.
- goecs - An implementation of the ECS paradigm in Go.
- pgfsm - A state and stack machine framework for Ebitengine.
- looplab-fsm - A Finite State Machine for Go.
- stagehand - The only scene manager you will ever need for Ebitengine.
- routine - A package for running routines.
- mipix - A pixel art aware layout and camera managment.
GUI
Libraries for building GUI Applications
- ebitenui - A user interface engine and widget library for Ebitengine.
- ebiten-imgui - Dear ImGui renderer for Ebitengine.
- furex - A simple UI framework with a subset of flexbox layout specification.
- messeji - Text input and display widgets for Ebitengine.
- etk - Tool kit for creating graphical user interfaces.
Graphics
Useful libraries for graphics
- tetra3d - A 3D software renderer written in Go by means of Ebitengine, primarily for video games.
- etxt - A library for font management and text rendering in Ebitengine.
- colorgrad - Go color scales library for data visualization, charts, games, maps, generative art and others.
- go-colorful - A complex library for handling color spaces and comparing colors.
- canvas - Cairo in Go for Ebitengine.
- aseprite - An image loader for Aseprite files, supports animation tags, layers and more.
- goaseprite - A JSON loader for Aseprite files for Golang.
- raycaster-go - Golang raycaster engine using the Ebitengine 2D Game Library.
- gween - A small library to perform tweening in Go.
- ganim8 - An animation library for Ebitengine inspired by anim8.
- anim - An animation player for Ebitengine.
- ebitengine-graphics - A library that implements graphical primitives like Sprite, Line, Rect, etc.
- bitmapfont - A plug-and-play
font.Face
, that supports a wide range of languages and symbols
- bitsweetfont - A plug-and-play
font.Face
that has limited language support, but has multiple sizes
Video
Video decoding and playback
- reisen - A simple library to extract video and audio frames from media containers (based on libav).
- mpeg - A MPEG-1 video decoder, MP2 audio decoder and MPEG-PS demuxer in pure Go.
Audio
Audio delay, low-pass filtering, panning, distortion
- resound - A library for applying sound effects to Ebitengine games and controlling sound playback easily.
- xm - A library for XM music format support: play and modify XM music straight from your game.
Physics
Rigid-body dynamics, collision detection and resolution
- cp - A 2D rigid body physics library - Chipmunk2D, ported to Go.
- resolv - 2D collision detection and resolution library.
- box2d - A Go port of Box2D v2.4.1 physics library.
- physix-go - A simple physics engine in Golang.
- physac-go - A single file physics engine for videogames.
World
Interaction with the game world
- ldtkgo - LDtk-Go is a loader for "Level Designer Toolkit" projects written in pure Go.
- go-tiled - Go library to parse Tiled map editor file format (TMX) and render map to image.
- kamera - A camera with noise shake, lerp motion, rotation and zooming.
- ebiten-camera - A simple camera implementation based on vrld's HUMP for Love2d.
- dngn - A golang library specifically created to help make generating random maps easier.
- paths - A pathfinding library written in Golang created mainly for video games.
- go-astar - A* pathfinding implementation for Go.
- grid - Generic 2D grid with pathfinding, ray and shadow casting and line-of-sight.
- pathing - A grid-based pathfinding; somewhat restrictive, but very efficient.
Resources
Resource management for games, their loading, packing and caching
- ebitengine-resource - A resource manager for Ebitengine.
- gdata - A gamedata package that provides convenient cross-platform storage.
Networking
Realtime messaging and multiplayer on different platforms
- kcp-go - A Crypto-Secure, Production-Grade Reliable-UDP Library for Go with FEC.
- go-enet - Enet bindings for Go.
- necs - A networking layer for Donburi ECS.
Integration
Integration with other programs
Input
Input and output across platforms
- ebitengine-input - A Godot-inspired action input handling system for Ebitengine.
- clipboard - Cross platform (MacOS/Linux/Windows/Android/iOS) clipboard package in Go.
- kibodo - On-screen keyboard widget for Ebitengine.
Games
Games and emulators written in Ebitengine
- aaaaxy - A nonlinear 2D puzzle platformer taking place in non-Euclidean geometry.
- assemblox - A 2D real-time strategy game made for a GMTK2023 game jam.
- bindless - Puzzles in a magnetic world for Ebitengine's first game jam (2022).
- escort-mission - Follow a dog through a post-apocalytpic wasteland full of zombies.
- mag - Defend the embryonic core from the onslaught of magnetic robottos.
- decipherism-game - A puzzle game where you solve the encoding machine ciphers.
- roboden-game - An indirect control real-time strategy game about robot colonies.
- attraction - A sokoban-like puzzle game, where you move magnetic pieces in order to collect gems within a limited number of moves.
- domagna - Dodge obstacles while falling through a tube with magnetic surfaces.
- mini-tanks - Fight enemy tanks and defend your base.
- worldwide - A toy GameBoy Color emulator written in golang.
- tetriverse - Tetris... in reverse.
- retromancer - Harness the powers of reversing time and fight the Lich in this short action-adventure pseudo bullet-hell game.
- sinecord - Solve the puzzles and create the music along the way.
- gosol - Polymorphic solitaire engine in Go+Ebitengine.
- feta-feles-remastered - An eerie bullet hell shooter, featuring a small story based around your "pet cat".
- passage - Small puzzle game. Reverse glyphs to create a passage from * to O.
- red-cat-run-2d - Become enlightened in this cat platformer game.
- revdriller - Control a character that has a drill, and dig through the ceiling, reverse breakable and unbreakable blocks.
- reverset-raiders - Defeat your enemy by strategically choosing which tiles to flip over to boost the animals that come towards him.
- amaru - Rid the sea of waste and rescue the trapped marine animals in multiplayer mode.
- game-engine-dev-sim - Tackle endless bugs and feature requests that relentlessly attack, and strive for a world-class game engine.
- godanmaku - Simple shooting game using Ebitengine and Golang.
- monovania - Metroidvania game.
- brownboxbatman - A bullet hell video game.
- citylimits - A city-building simulation video game.
- skulls - A simple columns-like strategy game developed in Golang with the Ebitengine library (for Android).
- go-inovation - Port of "INO VATION! 2007". You are a wild boar. Collect the three sacred treasures!
- ebiten-breakout - A simple breakout game made in Ebitengine.
- minesweeper-go - Minesweeper game in Go that can compile to WASM (uses Ebitengine v2).
- travel-game - A remake of an 80's card game classic "Around the World" (pt-br: "Volta ao Mundo").
- lost-the-plot - Twitchty action gun-play of "Guess Who?" combined with the casual of "Tomb Raider".
- btod - This is a runner game made in Go with Ebitengine.
- carotid-artillery - A top-down twin-stick shooter.
- cr1ckt - Tap left and right to jump through the caves to the fruit... as long as the game.
- go-space-crane - Simple moonlander like game with some new mechanics.
- kuronan-dash - Doujin game "Kuronan Dash" from the comic "Nekomusume Doujinshi".
- sokoban-go - Sokoban game in Go using Ebitengine game engine with ECS.
- arkanoid-go - Arkanoid game in Go using Ebitengine game engine with ECS.
- space-invaders-go - Space invaders game in Go using Ebitengine game engine with ECS.
- pong - Pong is a classic arcade game developed by Atari and originally released back in 1972.
- fishfightback - A side-scrolling bullet hell video game.
- gtris - A Tetris clone.
- open-diablo-2 - An ARPG game engine in the same vein of the 2000's games, and supports playing Diablo 2.
- boxcars - A client for playing backgammon online.
Demoscenes
Demoscenes and simulations written in Ebitengine
- ray-engine - A toy raycasting engine built with Go and Ebitengine.
- protozoa - A simulation of protozoan behavior and evolution.
- biogo - A simple genetic simulator written in Go.
- fire - Experiments with Ebitengine - Doomfire.
- balls-ebiten - Bouncing balls demo - collision and rotatable gravity simulation.
- ebitengine-hexboard - A simple example of hexboard with Ebitengine.
Applications
Other useful programs that use or are made for Ebitengine
- sketchy - A framework for creating generative art in Go.
- darktile - A GPU rendered terminal emulator designed for tiling window managers.
- wasmserve - An HTTP server for Wasm testing like gopherjs serve.
- ebiten-bunny-mark - An implementation of the popular graphics benchmark written on Ebitengine.
- neko - Neko is a cross-platform open-source animated cursor-chasing cat.
- kagei - A CLI tool for testing Kage shaders.
- kageviewer - A CLI tool to run, view and test Kage shaders.
- kageland - A website to create, find and share Kage shaders - inspired by Shadertoy.
Articles
Implementation details of the engine, game loop, etc.
- tps-vs-fps - Detailed explanation of how fps and tps work in Ebitengine.
- kage-desk - Gentle introduction to the Kage shading language.
- how-rendering-works - How Ebitengine achieves efficent rendering with its simple Image API.