Pycraft is the OpenGL, open world, video game made with Python.
Contents
About
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.
Setup
Note: Python version 3.7 to 3.11 is required!
Installing the project (recommended)
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.
Installing the project (manual approach)
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 not automatically be updated to the latest version when a newer version is available.
Execution
Regardless of how you installed Pycraft, automatically or manually, the same process applies to you:
You need to locate in that installation directory to a file called main.py
. Run this Python file through your preferred version of Python.
*** Custom environments! **
Note: We strongly advise you make a shortcut to this location on your system
Credits
With thanks to;
- 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)'
Understanding the release notes
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.
Input mapping
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.
Keyboard
- 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
Our Update Policy
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.
Version Naming
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.
Final Notices
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.