Pixel alternatives and similar packages
Based on the "Game Development" category.
Alternatively, view Pixel alternatives based on common mentions on social networks and blogs.
Ebiten9.5 9.7 Pixel VS EbitenEbitengine - A dead simple 2D game engine for Go
Leaf9.4 0.0 Pixel VS LeafA game server framework in Go (golang)
nano8.6 0.0 Pixel VS nanoLightweight, facility, high performance golang based game server framework
goworld8.6 0.0 Pixel VS goworldScalable Distributed Game Server Engine with Hot Swapping in Golang
g3n8.5 3.9 Pixel VS g3nGo 3D Game Engine (http://g3n.rocks)
Pitaya8.4 5.8 Pixel VS PitayaScalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.
go-sdl28.3 6.6 Pixel VS go-sdl2SDL2 binding for Go
gonet8.1 0.0 Pixel VS gonetA Game Server Skeleton in golang.
engo8.0 2.7 Pixel VS engoEngo is an open-source 2D game engine written in Go.
Oak7.8 8.3 Pixel VS OakA pure Go game engine
termloop7.7 0.0 Pixel VS termloopTerminal-based game engine for Go, built on top of Termbox
raylib-go7.4 5.1 L5 Pixel VS raylib-goGo bindings for raylib, a simple and easy-to-use library to enjoy videogames programming.
Azul3D6.8 0.0 L4 Pixel VS Azul3DAzul3D - A 3D game engine written in Go!
go-astar6.7 0.0 Pixel VS go-astarGo implementation of the A* search algorithm
GarageEngine6.2 0.0 Pixel VS GarageEngineGame engine written in Go (golang).
Harfang3D6.0 6.0 Pixel VS Harfang3DHARFANG 3D source code public repository
resolv5.9 0.0 Pixel VS resolvA Simple 2D Golang collision detection and resolution library for games
go3d5.9 0.0 Pixel VS go3dA performance oriented 2D/3D math package for Go
d3d94.7 0.0 Pixel VS d3d9Direct3D9 wrapper for Go.
tile3.9 0.0 Pixel VS tileTile is a 2D grid engine, built with data and cache friendly ways, includes pathfinding and observers.
prototype3.8 0.0 Pixel VS prototypeSimple 2D game prototyping framework.
glop3.6 0.0 L4 Pixel VS glopBare-bones osx alternative to sdl
go-collada2.1 0.0 Pixel VS go-colladaGo package for working with the Collada file format.
fantasyname1.3 0.0 Pixel VS fantasynameRinkWorks fantasy name generator for golang
canvas2d0.7 0.0 Pixel VS canvas2dLib to create 2d games with Go
goxit0.4 0.0 Pixel VS goxitGolang packages for the game of Go.
GCXO0.3 1.2 Pixel VS GCXOOpenGL based library for creating anything 2D!
grid0.3 10.0 Pixel VS gridGeneric 2D grid
Clean code begins in your IDE with SonarLint
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Pixel or a related project?
A hand-crafted 2D game library in Go. Take a look into the features to see what it can do.
go get github.com/faiface/pixel
If you are using Modules (Go 1.11 or higher) and want a mutable copy of the source code:
git clone https://github.com/faiface/pixel # clone outside of $GOPATH cd pixel go install ./...
See requirements for the list of libraries necessary for compilation.
All significant changes are documented in [CHANGELOG.md](CHANGELOG.md).
The Wiki of this repo contains an extensive tutorial covering several topics of Pixel. Here's the content of the tutorial parts so far:
- Creating a Window
- Drawing a Sprite
- Moving, scaling and rotating with Matrix
- Pressing keys and clicking mouse
- Drawing efficiently with Batch
- Drawing shapes with IMDraw
- Typing text on the screen
- Using a custom fragment shader
The examples repository contains a few examples demonstrating Pixel's functionality.
To run an example, navigate to it's directory, then
go run the
main.go file. For example:
$ cd pixel-examples/platformer $ go run main.go
Here are some screenshots from the examples!
Here's the list of the main features in Pixel. Although Pixel is still under heavy development, there should be no major breakage in the API. This is not a 100% guarantee, though.
- Fast 2D graphics
- Audio through a separate Beep library.
- Simple and convenient API
- Drawing a sprite to a window is as simple as
- Wanna know where the center of a window is?
- Drawing a sprite to a window is as simple as
- Full documentation and tutorial
- Works on Linux, macOS and Windows
- Window creation and manipulation (resizing, fullscreen, multiple windows, ...)
- Keyboard (key presses, text input) and mouse input without events
- Well integrated with the Go standard library
"image"package for loading pictures
"time"package for measuring delta time and FPS
"image/color"for colors, or use Pixel's own
color.Colorformat, which supports easy multiplication and a few more features
- Pixel uses
float64throughout the library, compatible with
- Geometry transformations with
- Moving, scaling, rotating
- Easy camera implementation
- Off-screen drawing to Canvas or any other target (Batch, IMDraw, ...)
- Fully garbage collected, no
- Full Porter-Duff composition, which enables
- 2D lighting
- Cutting holes into objects
- Much more...
- Pixel let's you draw stuff and do your job, it doesn't impose any particular style or paradigm
- Platform and backend independent core
- Core Target/Triangles/Picture pattern makes it easy to create new drawing targets that do arbitrarily crazy stuff (e.g. graphical effects)
- Small codebase, ~5K lines of code, including the backend glhf package
## Related repositories
Here are some packages which use Pixel:
- TilePix Makes handling TMX files built with Tiled trivially easy to work with using Pixel.
- spriteplus Basic
- PixelUI Imgui-based GUIs for Pixel
- pixelutils Variety of game related utilities (sprite packer, id generator, ticker, sprite loader, voronoia diagrams)
Pixel is in development and still missing few critical features. Here're the most critical ones.
Audio Drawing text
- Antialiasing (filtering is supported, though)
Advanced window manipulation (cursor hiding, window icon, ...)
- Better support for Hi-DPI displays
- Mobile (and perhaps HTML5?) backend
More advanced graphical effects (e.g. blur)(solved with the addition of GLSL effects)
- Tests and benchmarks
- Vulkan support
Implementing these features will get us to the 1.0 release. Contribute, so that it's as soon as possible!
If you're using Windows and having trouble building Pixel, please check this guide on the wiki.
PixelGL backend uses OpenGL to render graphics. Because of that, OpenGL development libraries are needed for compilation. The dependencies are same as for GLFW.
The OpenGL version used is OpenGL 3.3.
- On macOS, you need Xcode or Command Line Tools for Xcode (
xcode-select --install) for required headers and libraries.
- On Ubuntu/Debian-like Linux distributions, you need
- On CentOS/Fedora-like Linux distributions, you need
libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel libXxf86vm-develpackages.
- See here for full details.
The combination of Go 1.8, macOS and latest XCode seems to be problematic as mentioned in issue #7. This issue is probably not related to Pixel. Upgrading to Go 1.8.1 fixes the issue.
Join us in the Discord Chat!
Pixel is in, let's say, mid-stage of development. Many of the important features are here, some are missing. That's why contributions are very important and welcome! All alone, I will be able to finish the library, but it'll take a lot of time. With your help, it'll take much less. I encourage everyone to contribute, even with just an idea. Especially welcome are issues and pull requests.
However, I won't accept everything. Pixel is being developed with thought and care. Each component was designed and re-designed multiple times. Code and API quality is very important here. API is focused on simplicity and expressiveness.
When contributing, keep these goals in mind. It doesn't mean that I'll only accept perfect pull requests. It just means that I might not like your idea. Or that your pull requests could need some rewriting. That's perfectly fine, don't let it put you off. In the end, we'll just end up with a better result.
Take a look at [CONTRIBUTING.md](CONTRIBUTING.md) for further information.
*Note that all licence references and agreements mentioned in the Pixel README section above are relevant to that project's source code only.