A hand-crafted 2D game library in Go. Take a look into the features to see what it cando.
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.
The Wiki of this repo contains an extensive tutorialcovering several topics of Pixel. Here's the content of the tutorial parts so far:
The examples repository contains a fewexamples 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!
Lights | Platformer |
---|---|
Smoke | Typewriter |
---|---|
Raycaster | Gizmo |
---|---|
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.
sprite.Draw(window, matrix)
window.Bounds().Center()
"image"
package for loading pictures"time"
package for measuring delta time and FPS"image/color"
for colors, or use Pixel's own color.Color
format, which supports easymultiplication and a few more featuresfloat64
throughout the library, compatible with "math"
packageClose
or Dispose
methodsHere are some packages which use Pixel:
SpriteSheet
and Animation
implementationsPixel is in development and still missing few critical features. Here're the most critical ones.
Implementing these features will get us to the 1.0 release. Contribute, so that it's as soon aspossible!
If you're using Windows and having trouble building Pixel, please check thisguide on thewiki.
PixelGL backend uses OpenGL to rendergraphics. Because of that, OpenGL development libraries are needed for compilation. The dependenciesare same as for GLFW.
The OpenGL version used is OpenGL 3.3.
xcode-select --install
) for requiredheaders and libraries.libgl1-mesa-dev
and xorg-dev
packages.libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel libXxf86vm-devel
packages.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 aremissing. That's why contributions are very important and welcome! All alone, I will be able tofinish the library, but it'll take a lot of time. With your help, it'll take much less. I encourageeveryone to contribute, even with just an idea. Especially welcome are issues and pullrequests.
However, I won't accept everything. Pixel is being developed with thought and care. Eachcomponent 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 pullrequests. It just means that I might not like your idea. Or that your pull requests could need somerewriting. That's perfectly fine, don't let it put you off. In the end, we'll just end up with abetter result.
Take a look at CONTRIBUTING.md for further information.