Skip to content
A Minecraft like game written in go
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
vendor update vendor Apr 8, 2018
.gitignore support persistent changed blocks Apr 5, 2018
cube.go multiplayer support Apr 7, 2018
item.go init Apr 2, 2018
render.go reduce background thread cpu usage Apr 11, 2018
rpc.go fix multiplayer panic Apr 8, 2018
shader.go init Apr 2, 2018
store.go multiplayer support Apr 7, 2018
world.go multiplayer support Apr 7, 2018


A Minecraft like game written in go, just for fun!



  • Basic terrain generation
  • Add and Remove blocks.
  • Move and fly.
  • Multiplayer support


For go

  • go 1.10+

For glfw

  • 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 libgl1-mesa-dev and xorg-dev packages.
  • On CentOS/Fedora-like Linux distributions, you need libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel packages.


go get


Suppose $GOPATH/bin is in your PATH env, use command below to run.

cd $GOPATH/src/ && gocraft

How to play

  • W, S, A, D to move around.
  • TAB to toggle flying mode.
  • SPACE to jump.
  • Left and right click to add/remove block.
  • E,R to cycle through the blocks.


Multiplayer is supported now!

The server code is at .

You can use gocraft -s to connect the public server.

Since the player on public server is anonymous, be carefull for your work!

If any network error occurs, the game will end with a panic, may changed in the future.

Local cache is saved as cache_$server.db, you can use gocraft -db xxx.db to offline use.


  • Persistent changed blocks
  • Multiplayer support
  • Ambient Occlusion support

Implementation Details

Many implementations is inspired by, thanks for Fogleman's good work!

Multiplayer is implementated used a duplex rpc call, client can call server to update blocks or fetch chunks, server can also push changes to clients.

You can’t perform that action at this time.