This project has been archived. It took me too long to write such low-level code. In addition, over the last few years my vision of what a retro game engine should look like has changed. So I decided to write the project from scratch. A new project with a greatly simplified API and tools for the game developer. The project is called Pi and is available at: https://github.com/elgopher/pi. I encourage you to use it.
Create Pixel Art games in Golang with fun and ease.
- draw images on a screen in real time using your favourite Go programming language
- manipulate every single pixel directly or with the use of tools (blend and clear supported at the moment)
- handle user input (keyboard and mouse supported at the moment)
- is the art of making digital images where the creator place every single pixel of the image
- it is all about limits: low resolution, limited palette, no rotation besides square angles and only integer scaling
- no automatic anti-aliasing, no filters, blur and other fancy tools
- more information can be found in The Pixel Art Tutorial
- Go 1.14+
- Ubuntu/Debian:
sudo apt-get install libgl1-mesa-dev xorg-dev gcc
- CentOS/Fedora:
sudo yum install libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel gcc
- MacOS:
xcode-select --install
$ go mod init hello
$ go get -u github.com/elgopher/pixiq
package main
import (
"github.com/elgopher/pixiq/colornames"
"github.com/elgopher/pixiq/glfw"
)
func main() {
glfw.RunOrDie(func(openGL *glfw.OpenGL) {
window, err := openGL.OpenWindow(80, 16, glfw.Zoom(5))
if err != nil {
panic(err)
}
for {
screen := window.Screen()
screen.SetColor(40, 8, colornames.White)
window.Draw()
if window.ShouldClose() {
break
}
}
})
}
More examples you can find in examples directory.
The project is under heavy development at the moment, and some of its features are experimental/missing and may change in the near future.
The project is using semantic versioning. Current version
is 0.X.Y
which basically means that future versions may introduce incompatible
API changes. More about architecture can be found in architecture document.
- Create Go API which is just fun to use. It will provide tools known from Pixel Art software.
- Create Development Tools similar to Chrome Developer Tools to support the development process
- Make it fast - image manipulation requires a lot of computation, therefore Pixiq should be well optimized
- Create a set of loosely coupled packages which can be used selectively and replaced or extended easily