Skip to content
A fork of "Minecraft in 500 lines of python" intended to someday be used as a real engine, instead of as a learning example.
Python Shell GLSL
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs * Ran pep8 on all files for style Apr 19, 2016
pycraft Added click type for hit Jun 18, 2017
tests Test improvements on storage May 19, 2016
.travis.yml Add xvfb for GUI tests to .travis.yml Apr 23, 2016
CHANGES.rst * Ran pep8 on all files for style Apr 19, 2016
LICENSE added LICENSE Feb 3, 2013 * Ran pep8 on all files for style Apr 19, 2016
README.rst Update README.rst Jul 18, 2017
pytest.ini * Ran pep8 on all files for style Apr 19, 2016
requirements-dev.txt Fixed security issue from pyyaml Jun 17, 2019
requirements.txt Python 2.7 compatibility Apr 20, 2016
screenshot.png Added screenshot Apr 11, 2016
setup.cfg * Ran pep8 on all files for style Apr 19, 2016 Python 2.7 compatibility Apr 20, 2016
tox.ini * Ran pep8 on all files for style Apr 19, 2016



A community driven fork of foglemans "Minecraft" repo.

#pycraft on freenode


Python is somewhat poorly suited for game development. However it is well suited to data-science. A lot of our tasks, working with large voxels sets, strongly resemble the kind of problems you encounter in data science.

The big advantage comes from limiting "real-time" state. By not relying on anything having to happen now, we can do more complicated computation. At the low-end, that means we can implement much more complicated occluding algorithms, and thus draw more complicated scenes.

This kind of split could also be used to run more complicated types of operations, like a cellular automata crudely simulating things like plant growth or water.

When possible, we would prefer to "scale-out". We don't care about outright efficiency too much, rather we care that our solutions can work for very large or very complicated operations. The exact opposite of "typical" game development methodology, which would prefer solutions that "scale-up", solutions that a very fast for the type of data they expect to deal with.

It is currently pre-alpha quality.


Virtual Environment (Recommended)

# create a virtual environment
virtualenv -p python3 ~/.venv/pycraft # (or wherever)
# you may need to add execute permissions
chmod -R a+x ~/.venv
# activate
. ~/.venv/pycraft/bin/activate # on mac
. ~/.venv/pycraft/Scripts/activate # on windows
# deactivate (when you're done)


pip install -e .

option 1:

pip install -e .[dev]
# or: python3 develop

option 2:

python -m pycraft
# or: python3 -m pycraft


  • Support for python 3.5
  • Simple Perlin Noise terrain generator
  • Object-oriented blocks system

How to Play


  • W: forward
  • S: back
  • A: strafe left
  • D: strafe right
  • Mouse: look around
  • Space: jump
  • Tab: toggle flying mode


  • Selecting the type of block to create:
    • 1: brick
    • 2: grass
    • 3: sand
  • Mouse left-click: remove block
  • Mouse right-click: create block


  • ESC: release mouse, then close window


We support and encourage contributions.


The game textures "Piehole" by Alex Voelk is licensed under CC BY 3.0.

You can’t perform that action at this time.