Pycraft is a 3D open-source, open-world video game made in Python. For a long time attempts to make large 3D games in Python have been ignored, we believe there are two reasons: one; People use Python primarily for data handling and processing and not graphics and, two; there is little to no documentation out there to do anything more than make a 3D rotating cube in Python. Making a 3D game in Python for us hasn't been an easy experience, far from it but we have decided to share my project, complete with tutorials, explanations, articles and code explanations in the hope that 3D game development in Python can be seen as a more easily attainable target, and to fill that gap in documentation. Pycraft then is a trial project, as we learn and experiment on what goes best where and how thing go together, this is why development can sometimes appear to have stopped, because we are learning and testing what we have learned, so hopefully for people in the future it will be an easier experience. Also, don't forget there is more to game development than just graphics, there is AI, sound, physics and all the other GUIs that go with it, and as we learn the quality of the overall program will improve. Pycraft is not going to be the final name of the game, however until something better becomes available, we shall stick to it.
Note: Python version 3.7 to 3.11 is required!
The way to install Pycraft is changing. For the best experience, we recommend this installation approach:
- Navigate to the most recent release of Pycraft in the releases section
- Download the installer in your desired format.
- Run the installer and follow the installation instructions.
Note: If you run the installer from the source code, instead of through an executable format, make sure you have the following packages: requests
, pillow
. You can install these packages together using the command pip install requests pillow
and on Linux make sure you also install pillow's dependencies using: sudo apt-get install python3-pil.imagetk
and that you have the full Python standard library, which can be installed using the command: sudo apt install python3.10-full
The way we develop Pycraft is changing with code developed here and the resources hosted through MediaFire. The new installer is built to handle this, and is recommended, however if you wanted to install Pycraft on your system manually, do the following:
- Download the source code for the most recent release of Pycraft in the releases section
- Extract the contents to a directory of your choosing on your system.
- Download the resources for Pycraft, found here
- Extract the contents to the same directory as the code on your system.
- You should end up with two sub-directories called:
src
andresources
. - Run the command:
pip install -r requirements.txt
from the directory you just installed Pycraft to. This installs Pycraft's dependencies.
Note: When installing Pycraft manually, you will likely be automatically be updated to the latest version when a newer version is available. This behaviour can be configured in the settings menu.
In order to run Pycraft on your system, please follow the steps below before heaving to the "Everyone" section.
Or created a custom virtual environment in the Pycraft
directory yourself.
- Navigate to the directory
Pycraft
on your system. - From here the process is different depending on which operating system you are using:
- On Windows; head to this location within the
Pycraft
directory:/venv/pycraft/Scripts/python.exe
- On Linux; head to this location within the
Pycraft
directory:/venv/pycraft/bin/python
- Make a note of the full path to this location.
- Navigate to the location you created your custom virtual environment in.
- From here the process is different depending on which operating system you are using:
- On Windows; from there head to this location:
/venv/pycraft/Scripts/python.exe
- On Linux; from there head to this location:
/venv/pycraft/bin/python
- Make a note of the full path to this location.
- This process is much simpler, simply make a note of the command you would use to run python in the terminal.
- On Windows, this will likely be
python
- On Linux, this will likely be
python3
orpython
- From the
Pycraft
directory, navigate to thesrc
sub-directory. - Open this sub-directory in a terminal or command prompt window.
- Type or paste (by right clicking or using the shortcut;
CONTROL + SHIFT + v
) the location of the Python executable you made a note of earlier. - Then type
main.py
and hit enter.
Note: We strongly advise you make a shortcut for this command as it makes the process of running Pycraft much easier.
- Thomas Jebson (PycraftDeveloper)
- Count of Freshness Traversal
- Dogukan Demir (demirdogukan)
- Henri Post (HenryFBP)
- FreeSound: - Erokia's "ambient wave compilation"
- FreeSound: - Soundholder's "ambient meadow near forest"
- FreeSound: - monte32's "Footsteps_6_Dirt_shoe"
- Freesound: - Straget's 'Thunder'
- Freesound: - FlatHill's 'Rain and Thunder 4'
- Freesound: - BlueDelta's 'Heavy Thunder Strike - no Rain - QUADRO'
- Freesound: - Justkiddink's 'Thunder » Dry thunder1'
- Freesound: - Netaj's 'Thunder'
- Freesound: - Nimlos' 'Thunders » Rain Thunder'
- Freesound: - Kangaroovindaloo's 'Thunder Clap'
- Freesound: - Laribum's 'Thunder » thunder_01'
- Freesound: - Jmbphilmes's 'Rain » Rain light 2 (rural)'
This section will hopefully provide additional information on helping to read the release notes.
- Points detailed after the "Feature" tag are what was focused on in the update and will likely always be present in each update, often this is the most significant area of the update.
- Points detailed after the "Bug-Fix" tag are likely to be the most frequent, they outline the most major bugs that have been fixed in this update, although they are not the only bugs that have been fixed.
- Points detailed after the "Performance" tag are used where there have been significant performance improvements to the project.
- Points detailed after the "Identified-Bugs" tag are bugs that have been identified in the project and that haven't been fixed as of writing the release notes, these are significant issues and will be fixed as soon as possible.
- Points detailed after the final "Documentation" tag are indicators of significant improvements to the documentation. The "PEP8" tag is used to signify that significant changes have been made to Pycraft to bring it in line with the PEP8 standards.
This section will be replaced with a dedicated file for key-mapping as well as an in-game guide when this area of Pycraft is completed.
- Use W, A, S, D in game to move around.
- Use SPACE to jump in game or to control the camera spin in the 2D engine.
- Use F11 to toggle full-screen
- Use L in game to toggle locking your mouse (forcing it to stay in the window or not)
A detailed map of inputs for keyboard and mouse or controller combinations is coming; for now, see the section below, toggling between full-screen is currently not bound to a button on the controller because we will need all the different buttons for gameplay
New releases will be introduced regularly, it is likely that there will be some form of error or bug, therefore unless you intend to use this project for development and feedback purposes (Thank you all!) we recommend you use the latest stable release; below is how to identify the stable releases.
Pycraft's versions will always follow the semantic versioning structure; "vA.B.C"
- Where "A" is the major revision number.
- Where "B" is the minor revision number.
- Where "C" is the patch and developer preview numbers (combined).
Every version of Pycraft as of the 27/10/2022 (DD/MM/YYYY) must feature all 3 values. Updates also now go sequentially, so Pycraft v9.6.4 is newer than Pycraft v9.5.7.
Thank you greatly for supporting this project simply by running it, we are sorry in advance for any spelling mistakes. The program will be updated frequently and we shall do my best to keep this up to date too. we also want to add that you are welcome to view and change the program and share it with your friends however please may we have some credit, just a name would do and if you find any bugs or errors, please feel free to comment in the comments section any feedback so we can improve my program, it will all be much appreciated and give as much detail as you wish to give out.