Simple and easy to use 2.5D game SDK for the Go programming language

go get


Shade SDK

A simple and easy to use 2.5D game SDK for the Go programming language.

NOTE: This SDK should be considered very experimental as it is still under development. It is currently being modeled after some aspects of the PyGame SDK, but this will probably change some as it matures. The project will not have its "experimental" status removed until it is easy to install, easy to use, and supports dynamic lighting.

While the above should work without needing to work with the OpenGL SDK, the packages of this SDK should be extendable such that more advanced uses are possible.


Linux (Debian based) Specific Instructions

# Install Go 1.6
$ sudo apt-get install git-core libgl1-mesa-dev libxrandr-dev libxcursor-dev libxinerama-dev libxi-dev

Windows Specific Instructions (work in progress)

To install:


$ go get -u
$ go get{3.2,3.3,4.1,4.4,4.5}-{core,compatibility}/gl
$ go get

NOTE: the first "go get" will produce an error because generated files are not generated yet.

$ go get
package cannot find package "" in any of:
    /usr/local/go/src/ (from $GOROOT)
    /Users/hurricanerix/bin/usr/gocode/src/ (from $GOPATH)
$ go generate
$ go get

To test your install:

cd $GOPATH/src/
go run main.go


This project was inspired by the article "Normal Mapping with Javascript and Canvas".

Some aspects of the SDK are inspired by the PyGame SDK.

assets/gopher* adapted from creations by Renee French under a Creative Commons Attributions 3.0 license.

Helpful Tools

Pyxel Edit - Very nice pixel art editor.

Sprite DLight - Instant normal maps for 2D graphics

Tiled - Your free, easy to use and flexible tile map editor.

sfxr/cfxr - Simple means of getting basic sound effects.


cannot find package ""

Some variables/assets are packaged into a generated code file, if you get this error run the script to generate that file.

Slow saves in VIM

Sometimes, go-imports inserts the the wrong things. VIM was hanging for me for about 10~20 seconds after saving. I'm not sure why, but switching from v2.1 to v4.1-core fixed the issue.

-       ""
+       ""

Error: "could not decode file player.png: image: unknown format"

The following line will not be auto-imported since our code does not call anything in the png, library directly. In order to ensure that the library loads (so image.decode("somefile.png") works), we must have the following import to load the PNG package.

+   _ "image/png" // register PNG decode

... has no field or method ...

And it just does not make sense why it is not found, check that go-imports imported the correct thing.