Python-pycraft

Latest version: v0.9.5

Safety actively analyzes 623704 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

0.9.5

<p align="center">
<a href="https://github.com/PycraftDeveloper" target="_blank" rel="noreferrer"><img src="https://user-images.githubusercontent.com/81379254/154152710-694ce1f7-44e0-47fd-bbca-988093628e70.svg" alt="my banner"></a>
</p>

Pycraft is an OpenGL, open world, video game made entirely with Python. This project is a game to shed some light on OpenGL programming in Python as it is a seldom touched area of Python's vast amount of uses. Feel free to give this project a run, and message us if you have any feedback! <br />
Made with Python 3 64-bit and Microsoft Visual Studio Code.

[![](https://img.shields.io/badge/python-3.10-blue.svg)](www.python.org/downloads/release/python-3100) [![](https://img.shields.io/badge/python-3.9-blue.svg)](www.python.org/downloads/release/python-390) [![](https://img.shields.io/badge/python-3.8-blue.svg)](www.python.org/downloads/release/python-380) [![](https://img.shields.io/badge/python-3.7-blue.svg)](www.python.org/downloads/release/python-370) <br />
![](https://img.shields.io/github/license/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/stars/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/forks/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/issues/PycraftDeveloper/Pycraft) ![GitHub all releases](https://img.shields.io/github/downloads/PycraftDeveloper/Pycraft/total) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/PycraftDeveloper/Pycraft) ![](https://img.shields.io/pypi/wheel/python-pycraft) ![GitHub repo size](https://img.shields.io/github/repo-size/PycraftDeveloper/Pycraft) ![Discord](https://img.shields.io/discord/929750166255321138)

Contents
This is a guide of where some of the sections of this README have gone, as well as useful links to other documents.

> * [About](https://github.com/PycraftDeveloper/Pycraft#about)
> * [Preview Video](https://youtu.be/shAprkrcaiI)
> * [Setup](https://github.com/PycraftDeveloper/Pycraft#setup)
> * * [Installing the project from GitHub (Method 1)](https://github.com/PycraftDeveloper/Pycraft#installing-the-project-from-github-method-1)
> * * [Installing the project from GitHub (Method 2)](https://github.com/PycraftDeveloper/Pycraft#installing-the-project-from-github-method-2)
> * * [Installing from PyPi (preferred)](https://github.com/PycraftDeveloper/Pycraft#installing-from-pypi-preferred)
> * * [Installing using Pipenv](https://github.com/PycraftDeveloper/Pycraft#installing-using-pipenv)
> * [Running The Program](https://github.com/PycraftDeveloper/Pycraft#running-the-program)
> * [Credits](https://github.com/PycraftDeveloper/Pycraft#credits)
> * [Uncompiled Pycraft Dependancies](https://github.com/PycraftDeveloper/Pycraft#uncompiled-pycraft-dependencies-)
> * [Changes](https://github.com/PycraftDeveloper/Pycraft#changes)
> * [Understanding the Release Notes](https://github.com/PycraftDeveloper/Pycraft/tree/Pycraft-v0.9.5#understanding-the-release-notes)
> * [Input Mapping](https://github.com/PycraftDeveloper/Pycraft/tree/Pycraft-v0.9.5#input-mapping)
> * [Our Update Policy](https://github.com/PycraftDeveloper/Pycraft#our-update-policy)
> * [Version Naming](https://github.com/PycraftDeveloper/Pycraft#version-naming)
> * [Releases](https://github.com/PycraftDeveloper/Pycraft#releases)
> * [Other Sources](https://github.com/PycraftDeveloper/Pycraft#other-sources)
> * [Final Notices](https://github.com/PycraftDeveloper/Pycraft#final-notices)

> * [Update Timeline](https://github.com/PycraftDeveloper/Pycraft/blob/Pycraft-v0.9.5/Update_Timeline.md#update-timeline)
> * [The Planned Storyline](https://github.com/PycraftDeveloper/Pycraft/blob/Pycraft-v0.9.5/Planned_Storyline.md#the-planned-storyline)
> * [Sound Preview](https://github.com/PycraftDeveloper/Pycraft/blob/Pycraft-v0.9.5/Sound_Preview.md#pycrafts-sound-files---preview-1)

> * [The Documentation for Pycraft (Read-The-Docs)](https://python-pycraft.readthedocs.io/en/latest/)
> * [The Documentation for Pycraft (GitHub Wikis)](https://github.com/PycraftDeveloper/Pycraft/wiki)
> * [The project's PyPi page](https://pypi.org/project/Python-Pycraft/)

> * [Contact me on Twitter](https://twitter.com/PycraftDev)
> * [Contact me on Dev](https://dev.to/pycraftdev)
> * [Pycraft's Discord Server Invite](https://discord.gg/83EBntQqpf)

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
Installing the project from GitHub (Method 1)
The project will download as a (.zip) compressed file. Please make sure you have the project decompressed before use. Next make sure that any folders and files outside of the 'Pycraft' folder are removed and that the 'Pycraft' file is in the intended place for the file to be run from. This file can be freely moved around, transported between drives, computers and folders in this form!

_Just make sure that if you plan to use the installer that you make sure the file location is correct after you have moved the project, to do this simply remove everything in the 'pycraft/Data_Files/InstallerConfig.json' file and re-load the game, it will try to repair the file and write the new path instead, during this process it may appear that Pycraft has crashed as it will likely bring up an error message, a more user-friendly experience is coming soon__

When running the program please make sure you have a minimum of 1GB of free space on the drive and also have Python 3.7 or above installed on your device. This can be found here: (www.python.org/downloads). The version of Python isn't too important in this circumstance however the project has been tested in Python 3.7 and above and is known to work. In addition to all this please make sure you have the following modules installed on your device:

Pygame, Numpy, Pillow, PyAutoGUI, Psutil, PyWaveFront, CPUinfo, Ctypes, ModernGL, ModernGL_Window, GPUtil, Pyrr, PyJoystick, Noise and Matplotlib.

For those not familiar they can be found here: (pypi.org).

You can use the following syntax to install, update and remove these modules:

``pip install <module>``
``pip uninstall <module>``

Here is a short video tutorial walk you through all this: (https://youtu.be/DG5YbE-umw0)

Installing the project from GitHub (Method 2)
If you are installing the project from the GitHub releases page or through Source Forge, then this will be relevant for you.
After you have selected your preferred file type (it'll be either a compiled (.exe) file or a (.zip) file, those that download the (.zip) file will find the information above more relevant.

If you, however, download the (.exe) type file, then this will be more relevant for you. If you locate the file in your file explorer and double click it, then this will run the project. You do not need Python, or any of the projects required modules, as they come built-in with this method. This method does also not install anything extra to your devise, to remove the project, simply delete the (.exe) file in your file explorer. Please note that it can take a few moments for everything in the (.exe) file to load and initialise, so nothing might not appear to happen at first. Also, you can only run one instance of Pycraft at any time (even if you are using another method).

Installing from PyPi (preferred)
If you are installing the project from PyPi, then you will need an up-to-date build of Python (3.7 or greater ideally) and also permission to install additional files to your device. Then you need to open a command-line interface (or CLI), we recommend Terminal on Apple based devises, and Command Prompt on Windows based machines. You install the latest version of Pycraft, and all its needed files though this command:

``pip install Python-Pycraft``

and you can also uninstall the project using the command:

``pip uninstall Python-Pycraft``

And now you can run the project as normal.
Please note that at present it can be a bit tricky to locate the files that have downloaded, you can import the project into another python file using:

``import Pycraft``

Installing using Pipenv
You can alternatively run these commands in the directory containing a file called `Pipfile`:

``pip install pipenv`` then: ``pipenv install python-pycraft``

And to start the game: ``pipenv run python <PATH to 'main.py'>``

Running The Program
When running the program, you will either have a (.exe) file, downloaded from the releases page, or you will have the developer preview, if you have the developer preview, which can be found in the files section of this repository then this is how you run that program.

Now you have the program properly installed hopefully (you'll find out if you haven't promptly!) you need to locate and run the file "main.py" if it crashes on your first run then chances are you haven't installed the program correctly, if it still doesn't work then you can contact us. We do hope however that it works alright for you and you have a pleasant experience. This program has been developed on a Windows 64-bit computer however should run fine on a 32-bit Windows machine (uncompiled) or through MacOS although they remain untested for now.

We recommend creating a shortcut for the "main.py" file too so it's easier to locate.

Credits
With thanks to; <br />
![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)
![OpenGL](https://img.shields.io/badge/OpenGL-%23FFFFFF.svg?style=for-the-badge&logo=opengl)
![OpenCV](https://img.shields.io/badge/opencv-%23white.svg?style=for-the-badge&logo=opencv&logoColor=white)
![Blender](https://img.shields.io/badge/blender-%23F5792A.svg?style=for-the-badge&logo=blender&logoColor=white)
![Gimp Gnu Image Manipulation Program](https://img.shields.io/badge/Gimp-657D8B?style=for-the-badge&logo=gimp&logoColor=FFFFFF)
![Inkscape](https://img.shields.io/badge/Inkscape-e0e0e0?style=for-the-badge&logo=inkscape&logoColor=080A13)
![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white)
![Visual Studio](https://img.shields.io/badge/Visual%20Studio-5C2D91.svg?style=for-the-badge&logo=visual-studio&logoColor=white)
![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)
![Stack Overflow](https://img.shields.io/badge/-Stackoverflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white)
![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge&logo=numpy&logoColor=white)
![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white)
![Edge](https://img.shields.io/badge/Edge-0078D7?style=for-the-badge&logo=Microsoft-edge&logoColor=white)

- Thomas Jebbo (PycraftDeveloper) www.github.com/PycraftDeveloper <br />
- Count of Freshness Traversal www.twitter.com/DmitryChunikhin <br />
- Dogukan Demir (demirdogukan) www.github.com/demirdogukan <br />
- Henri Post (HenryFBP) www.github.com/HenryFBP <br />
- PyPi www.pypi.org <br />
- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- Py-CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />
- Moderngl www.github.com/moderngl/moderngl <br />
- Moderngl_window www.github.com/moderngl/moderngl-window <br />
- PyJoystick www.github.com/justengel/pyjoystick <br />
- Noise www.github.com/caseman/noise <br />
- Matplotlib www.github.com/matplotlib/matplotlib <br />
- FreeSound: - Erokia's "ambient wave compilation" www.freesound.org/s/473545 <br />
- FreeSound: - Soundholder's "ambient meadow near forest" www.freesound.org/s/425368 <br />
- FreeSound: - monte32's "Footsteps_6_Dirt_shoe" www.freesound.org/people/monte32/sounds/353799 <br />
- Freesound: - Straget's 'Thunder' www.freesound.org/people/straget/sounds/527664/ <br />
- Freesound: - FlatHill's 'Rain and Thunder 4' www.freesound.org/people/FlatHill/sounds/237729/ <br />
- Freesound: - BlueDelta's 'Heavy Thunder Strike - no Rain - QUADRO' - www.freesound.org/people/BlueDelta/sounds/446753/ <br />
- Freesound: - Justkiddink's 'Thunder » Dry thunder1' www.freesound.org/people/juskiddink/sounds/101933/ <br />
- Freesound: - Netaj's 'Thunder' www.freesound.org/people/netaj/sounds/193170/ <br />
- Freesound: - Nimlos' 'Thunders » Rain Thunder' www.freesound.org/people/Nimlos/sounds/359151/ <br />
- Freesound: - Kangaroovindaloo's 'Thunder Clap' www.freesound.org/people/kangaroovindaloo/sounds/585077/ <br />
- Freesound: - Laribum's 'Thunder » thunder_01' www.freesound.org/people/laribum/sounds/353025/ <br />
- Freesound: - Jmbphilmes's 'Rain » Rain light 2 (rural)' www.freesound.org/people/jmbphilmes/sounds/200273/ <br />

Uncompiled Pycraft Dependencies
When you're installing the uncompiled Pycraft variant from here you need to install the following 'modules', which can be done through your Control Panel in Windows (First; press <windows key + r> then type "cmd" then run the below syntax) or on Apple systems in Terminal.


pip install <module>
pip uninstall <module>

pip is usually installed by default when installing Python with most versions.

- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- Py-CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />
- Moderngl www.github.com/moderngl/moderngl <br />
- Moderngl_window www.github.com/moderngl/moderngl-window <br />
- PyJoystick www.github.com/justengel/pyjoystick <br />
- Noise www.github.com/caseman/noise <br />
- Matplotlib www.github.com/matplotlib/matplotlib <br />

_Disclaimer; unfortunately, lots of these python modules (first and third party) can require some external modules that will be installed during the installing process of the above modules, unfortunately this makes it really difficult to give credit to those modules, if you have any recommendations, please contact me appropriately._

Changes
Pycraft v0.9.5 is now live! Here is a list of all the added features to this major update: <br />

* Feature: This update features the new start-up animation by Dogukan Demir.
* Feature: This update also includes transitional effects between the different GUIs, which can be seen when navigating through different GUIs
* Feature: Basic collisions have been added to Pycraft, with better implementations coming after Pycraft v0.9.4

* Feature: Screen animation/transitions have been added throughout the project. This was showcased in Pycraft v0.9.5-0 but now works with the Pycraft v0.9.4 update.
* Feature: Wide range support for controllers has been added, you can now use a controller seamlessly throughout the game (currently only PS4 controllers have been tested but that's only due to hardware limitations).
* Performance: The inventory and map sections have had some serious performance optimisations, up to 2x in frame rates there now compared to Pycraft v0.9.4.
* Feature: The adaptive mode AI style performance adjustment utility has been re-written and now performs much better.
* Bug-Fix: The map icon in the map GUI now has transparency and a lightly improved resolution.

* Feature: The game engine has been completely redesigned, now with an additional utility file ("GameEngineUtils.py") that helps to make the project more modular. This was done as part of making the game engine compatible with shadow mapping, the focus of this update. At the same time, we have improved other game engine functions and improved performance, and fixed numerous bugs some of which are listed below:
* Bug-Fix: You can now move in the direction of the camera with either WASD or the controller.
* Bug-Fix: The camera movement is not restricted to the size of the window.
* Bug-Fix: The screenshot functionality for the inventory now supports multiple monitors (* although for now this functionality is windowed mode only)
* Feature: Accessing the inventory and map functions from in game are now significantly faster and does not take you back to the load screen.
* Feature: All of Pycraft's functions now have error handling in some form, with the most common method now closing the program and displaying a suitable error message onscreen.
* Feature: The entire adaptive mode functionality has been reprogrammed and is now much better at changing the performance of the game to balance performance and detail.
* Bug-Fix: The home screen had numerous issues with the bottom of the screen, this has now been fixed and the messages function is cleaned up. Also, on the home screen, the name has changed from "Tom Jebbo" to PycraftDev as that is the username that we use for my Pycraft related accounts - avoiding confusion.
* Identified-Bugs: There is an issue with changing to full-screen in game, when pressing any keys or interacting with the window will make an 'error sound' although no error is raised and the project runs fine.
* Identified-Bugs: There is an issue with moving backwards and left using the controller or keyboard, this will be fixed before the full release of Pycraft v0.9.5.

* Feature: The game engine now has had a sky change, instead of using 6 unique textures in a cube style, we now use one texture and a sphere to reduce the complexity and number of files Pycraft uses.
* Feature: The game engine has now got a skysphere (that is a spherical skybox) that changes with time. We have an 8-minute day, with a 2-minute sunset, then an 8-minute night with a 2-minute sunrise, this means 1 hour is 50 seconds long in real time.
* Feature: The game engine now includes celestial entities, in the form of the sun and moon, which are in sync with the day and night periods and are the light source through the day/night cycles.
* Feature: The game engine now includes a fog effect, this is not noticeable unless you travel really far at the moment, with fog starting at 1200m and ending at 1600m, this is going to be much more noticeable when the final map for the game is released, which will be much larger than it is right now and take advantage of this effect. Additionally, this will be edited in the next update to change based on the weather conditions.
* Feature: The game engine now has dynamic shadows that adjust based on the time of day, with more harsher shadows coming in the night to reflect the change in lighting.
* Bug-Fix: The benchmark function now works completely after issues with the OpenGL section and trying to use deprecated functions.
* Bug-Fix: Many issues with the installer are being fixed in the next few updates, if you identify one, please feel free to let us know so we can fix it!
* Bug-Fix: Many improvements have been made to the game engine to improve the quality of the shadows, which are now much less glitchy.
* Performance: Yet more performance improvements have been made to Pycraft, in particular in the game engine section.

* Feature: The game now includes the start of a weather implementation, including procedurally generated clouds that move around the player. The clouds and weather will change randomly through the day/night, based on the rough relative probabilities of that respective weather in the UK. They also employ the fog effect we added to the terrain last time and have variable height based on the weather. Additionally, the fog throughout the game now varies based on the current weather, so on a rainy day there will be more fog.
* Feature: The entire project has started to undergo restructuring to bring it in line with some of the PEP-8 standards.
* Bug-Fix: Numerous issues and bugs have been fixed regarding the benchmark functionality and exiting the benchmark now is much friendlier and any errors that used to be raised have now been fixed.
* Bug-Fix: More work has been done on the installer to improve its functionality, expect more improvements and eventual Linux compatibility there.
* Identified-Bugs: After toggling between full-screen in the 2D engine of Pycraft (which uses Pygame) the window cannot be resized on some systems, even with the correct flags.
* Identified-Bugs: The installer will render incorrectly if the user has chosen to scale their displays.
* Identified-Bugs: The cloud noise file for Pycraft (Rand_noise.png) is only generated once and the file is never re-written unless it's deleted.
* Bug-Fix: we are improving compatibility with non-Nvidia GPUs as the GLSL programmes can occasionally incur errors due to minor changes to how different GPUs accept syntaxes.

* Feature: The day and night has had some work done, the orbital path of the sun and moon in altered, simplified and along with many other formulae for the GameEngine.py and GameEngineUtils.py modules been simplified and tidied up a bit.
* Feature: Introducing storms, thunder and lightning has been added to the storm section of Pycraft under the 'rain.heavy.thundery' tag.
* Feature: The probabilities of different weather events ( as well as their duration) has been tweaked in Pycraft.
* Feature: Added a rain sound effect that plays when the weather tag is not 'sunny'.
* Feature: Adjusted how audio (sound and music) is handed in Pycraft slightly.
* Performance: We have made many more performance improvements to Pycraft since Pycraft v0.9.5-4, including the introduction of mip-maps for textures in OpenGL
* Feature: There have been tweaks to the shadow mapping function so now there is a greater variation between day and night and different weather events.
* Feature: All of the commonly used functions in Pycraft's 2D engine have been added to one function in DisplayUtils.py to improve upgradability and to simplify other areas of the project.
* Identified-Bugs: After toggling between full-screen in the 2D engine of Pycraft (which uses Pygame) the window cannot be resized on some systems, even with the correct flags.
* Identified-Bugs: The installer will render incorrectly if the user has chosen to scale their displays.
* Bug-Fix: The cloud noise file for Pycraft (Rand_noise.png) is only generated once and the file is never re-written unless it's deleted.
* Feature: We have started work on converting most of the audio files to the same format (.ogg) and suitably giving accreditation in the credits GUI and later here.

* Bug-Fix: Improved the joystick implementation and fixed issues that occurred when applying pep8 to Pycraft.
* Feature: Introducing rain particles to Pycraft, they are randomly coloured and are the final distinctive feature of the weather implementation in Pycraft!
* Feature: Introducing the concept of multi-texture terrain into Pycraft, for now there is a grass and rock texture with more complex use cases for this coming soon.
* Feature: We now blend (linearly interpolate) between the different weather events in Pycraft, including the colour and height of the clouds and transparency of the skysphere based on different weather events.
* Feature: We have improved the installer for Pycraft and work on adding Linux compatibility is continuing. We have updated the installer to be compatible with Pycraft v0.9.5

Again, feedback would be much appreciated this update was released on; 19/07/2022 (UK date; DD/MM/YYYY). As always, we hope you enjoy this new release and feel free to leave feedback.

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.

Input mapping
This section will be replaced with a dedicated file for keymapping as well as an in-game guide. The controller keys are labelled differently between controllers but have the same mapping in game.
Keyboard

* Use W, A, S, D in game to move around, and use these keys in the map GUI to move that around.
* Use SPACE to jump in game, reset your zoom in the map GUI, start the benchmark section, or press 10 times to enter Devmode.
* Use E in game to access your inventory
* Use R in game to access the map
* Use F11 to toggle full-screen
* Use Q to access a resource value screen
* Use L in game to toggle locking your mouse (forcing it to stay in the window or not)
* Use X to exit Devmode

Mouse

* SCROLL in the map to zoom in/out, or to scroll the settings menu
* LEFT CLICK to select

Controller

* Use the HAT keys (or the 4 buttons typically on the left of the controller in a '+' shape) to navigate between menu options
* Use the JOYSTICKs for camera panning and in game movement
* Use the 'Options' button to enter your inventory
* Use the 'Share' buttons to enter the map
* Use the Y or TRIANGLE button to jump in game or exit a GUI (not in game)
* Use the X or A button to start the benchmark or to reset your view in the map
* Use the X or SQUARE button to zoom in on the map GUI
* Use the O or B button to zoom out on the map

_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
In short, the new version naming system more closely follows the Semantic Naming system:
For example; Pycraft v0.9.2.1 The first number is relevant to if the project is in a finished state. The second number relates to the number of updates Pycraft has had. The third number relates to smaller sub-updates (that likely will not feature a (.exe) release). The last number there is rarely used, this is typically for PyPi releases only, as we can't edit uploaded version of the project, we use this number if there is an important change to the project description, those updates will not include any code changing!

Releases
All past versions of Pycraft are available under the releases section of Pycraft, this is a new change, but just as before, major releases like Pycraft v0.9 and Pycraft v0.8 will have (.exe) releases, but smaller sub-releases will not, this is in light of a change coming to Pycraft, this should help with the confusion behind releases, and be more accommodating to the installer that's being worked on as a part of Pycraft v0.9.4. This brings me on to another point, all past updates to Pycraft will be located at the releases page (Thats all versions), and the previous section on the home-page with branches will change. The default branch will be the most recent release, then there will be branches for all the sub-releases to Pycraft there too; and the sister program; Pycraft-Insider-Preview will be deprecated and all data moved to relevant places in this repository, this should hopefully cut down on the confusion and make the project more user-friendly.

Other Sources
We now post a roughly monthly article about Pycraft, showing behind the scenes, tips and tricks and additional information, this is shared to both Medium (medium.com/PycraftDev) and Dev (dev.to/PycraftDev) and builds on the regular posts we share to Twitter (twitter.com/PycraftDev) and Dev (dev.to/PycraftDev).

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.

0.9.4

<p align="center">
<a href="https://github.com/PycraftDeveloper" target="_blank" rel="noreferrer"><img src="https://user-images.githubusercontent.com/81379254/154152710-694ce1f7-44e0-47fd-bbca-988093628e70.svg" alt="my banner"></a>
</p>

Pycraft is an OpenGL, open world, video game made entirely with Python. This project is a game to shed some light on OpenGL programming in Python as it is a seldom touched area of Python's vast amount of uses. Feel free to give this project a run, and message us if you have any feedback! <br />
Made with Python 3 64-bit and Microsoft Visual Studio Code.

_Please note; all previous versions of Pycraft, with the exception of the most recent, have been moved to the releases section; Please consult the releases section of this README for more information_

[![](https://img.shields.io/badge/python-3.10-blue.svg)](www.python.org/downloads/release/python-3100) [![](https://img.shields.io/badge/python-3.9-blue.svg)](www.python.org/downloads/release/python-390) [![](https://img.shields.io/badge/python-3.8-blue.svg)](www.python.org/downloads/release/python-380) [![](https://img.shields.io/badge/python-3.7-blue.svg)](www.python.org/downloads/release/python-370) <br />
![](https://img.shields.io/github/license/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/stars/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/forks/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/issues/PycraftDeveloper/Pycraft) ![GitHub all releases](https://img.shields.io/github/downloads/PycraftDeveloper/Pycraft/total) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/PycraftDeveloper/Pycraft) ![](https://img.shields.io/pypi/wheel/python-pycraft) ![GitHub repo size](https://img.shields.io/github/repo-size/PycraftDeveloper/Pycraft) ![Discord](https://img.shields.io/discord/929750166255321138)

Contents
This is a guide of where some of the sections of this README have gone, as well as useful links to other documents.

> * [About](https://github.com/PycraftDeveloper/Pycraft#about)
> * [Preview Video](https://youtu.be/shAprkrcaiI)
> * [Setup](https://github.com/PycraftDeveloper/Pycraft#setup)
> * * [Installing the project from GitHub (Method 1)](https://github.com/PycraftDeveloper/Pycraft#installing-the-project-from-github-method-1)
> * * [Installing the project from GitHub (Method 2)](https://github.com/PycraftDeveloper/Pycraft#installing-the-project-from-github-method-2)
> * * [Installing from PyPi (preferred)](https://github.com/PycraftDeveloper/Pycraft#installing-from-pypi-preferred)
> * * [Installing using Pipenv](https://github.com/PycraftDeveloper/Pycraft#installing-using-pipenv)
> * [Running The Program](https://github.com/PycraftDeveloper/Pycraft#running-the-program)
> * [Credits](https://github.com/PycraftDeveloper/Pycraft#credits)
> * [Uncompiled Pycraft Dependancies](https://github.com/PycraftDeveloper/Pycraft#uncompiled-pycraft-dependencies-)
> * [Changes](https://github.com/PycraftDeveloper/Pycraft#changes)
> * [Our Update Policy](https://github.com/PycraftDeveloper/Pycraft#our-update-policy)
> * [Version Naming](https://github.com/PycraftDeveloper/Pycraft#version-naming)
> * [Releases](https://github.com/PycraftDeveloper/Pycraft#releases)
> * [Other Sources](https://github.com/PycraftDeveloper/Pycraft#other-sources)
> * [Final Notices](https://github.com/PycraftDeveloper/Pycraft#final-notices)

> * [The Documentation for Pycraft (Read-The-Docs)](https://python-pycraft.readthedocs.io/en/latest/)
> * [The Documentation for Pycraft (GitHub Wikis)](https://github.com/PycraftDeveloper/Pycraft/wiki)
> * [The project's PyPi page](https://pypi.org/project/Python-Pycraft/)

> * [Contact me on Twitter](https://twitter.com/PycraftDev)
> * [Contact me on Dev](https://dev.to/pycraftdev)
> * [Pycraft's Discord Server Invite](https://discord.gg/83EBntQqpf)

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 has been ignored, I 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 me hasn’t been an easy experience, far from it but I 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 I learn and experiment on what goes best where and how thing go together, this is why development can sometimes appear to have stopped, because I’m learning and testing what I've 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 I 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
Installing the project from GitHub (Method 1)
The project will download as a (.zip) compressed file. Please make sure you have the project decompressed before use. Next make sure that any folders and files outside of the 'Pycraft' folder are removed and that the 'Pycraft' file is in the intended place for the file to be run from. This file can be freely moved around, transported between drives, computers and folders in this form. A video guide to this will be uploaded here and in YouTube in the coming months.

When running the program please make sure you have a minimum of 1GB of free space on the drive and also have Python 3 installed on your device. This can be found here: (www.python.org/downloads). The sub version of Python isn't too important in this circumstance however the project has been tested in Python 3.9.5 and is known to work. In addition to all this please make sure you have the following modules installed on your device:
Pygame, Numpy, PyOpenGL, Pillow, PyAutoGUI, Psutil, PyWaveFront, CPUinfo and Ctypes.
For those not familiar they can be found here: (pypi.org) and you can use the following syntax to install, update and remove these modules:

``pip install <module>``
``pip uninstall <module>``

Here is a short video tutorial walk you through all this: (https://youtu.be/DG5YbE-umw0)

Installing the project from GitHub (Method 2)
If you are installing the project from the GitHub releases page, then this will be relevant for you.
After you have selected your preferred file type (it'll be either a compiled (.exe) file or a (.zip) file, those that download the (.zip) file will find the information above more relevant.

If you, however, download the (.exe) type file, then this will be more relevant for you. If you locate the file in your file explorer and double click it, then this will run the project. You do not need Python, or any of the projects required modules, as they come built-in with this method. This method does also not install anything extra to your devise, to remove the project, simply delete the (.exe) file in your file explorer. Please note that it can take a few moments for everything in the (.exe) file to load and initialise, so nothing might not appear to happen at first. Also, you can only run one instance of Pycraft at any time (even if you are using another method).

Installing from PyPi (preferred)
If you are installing the project from PyPi, then you will need an up-to-date build of Python (3.7 or greater ideally) and also permission to install additional files to your device. Then you need to open a command-line interface (or CLI), or this we recommend Terminal on Apple based devises, and Command Prompt on Windows based machines. You install the latest version of Pycraft, and all its needed files though this command:
``pip install Python-Pycraft``
and you can also uninstall the project using the command:
``pip uninstall Python-Pycraft``
And now you can run the project as normal.
Please note that at present it can be a bit tricky to locate the files that have downloaded, you can import the project into another python file using:
``import Pycraft``
But there is a better solution on its way!

Installing using Pipenv
You can alternatively run these commands in the directory containing a file called `Pipfile`:

``pip install pipenv`` then: ``pipenv install python-pycraft``

And to start the game: ``pipenv run python <PATH to 'main.py'>``

Running The Program
When running the program, you will either have a (.exe) file, downloaded from the releases page, or you will have the developer preview, if you have the developer preview, which can be found in the files section of this repository then this is how you run that program. Pycraft has recently undergone some large structural redesigning, so to run the program the advice is now different:

Now you have the program properly installed hopefully (you’ll find out if you haven’t promptly!) you need to locate the file "main.py" basically all this program does is run the right modules, initiates the main program, and catches any errors that might arise in the program in a nicely rendered error screen, if it crashes on your first run then chances are you haven’t installed the program correctly, if it still doesn’t work then you can drop me an email "ThomasJebbogmail.com" or comment here on the repository, I do hope however that it works alright for you and you have a pleasant experience. I might also add this program has been developed on a Windows 64-bit computer however should run fine on a 32-bit Windows machine (uncompiled) or through MacOS although they remain untested for now.

We recommend creating a shortcut for the "main.py" file too so it’s easier to locate.

Credits
With thanks to; <br />
![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54) ![OpenGL](https://img.shields.io/badge/OpenGL-%23FFFFFF.svg?style=for-the-badge&logo=opengl) ![OpenCV](https://img.shields.io/badge/opencv-%23white.svg?style=for-the-badge&logo=opencv&logoColor=white) ![Blender](https://img.shields.io/badge/blender-%23F5792A.svg?style=for-the-badge&logo=blender&logoColor=white) ![Canva](https://img.shields.io/badge/Canva-%2300C4CC.svg?style=for-the-badge&logo=Canva&logoColor=white) ![Figma](https://img.shields.io/badge/figma-%23F24E1E.svg?style=for-the-badge&logo=figma&logoColor=white) ![Gimp Gnu Image Manipulation Program](https://img.shields.io/badge/Gimp-657D8B?style=for-the-badge&logo=gimp&logoColor=FFFFFF) ![Inkscape](https://img.shields.io/badge/Inkscape-e0e0e0?style=for-the-badge&logo=inkscape&logoColor=080A13) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white) ![Visual Studio](https://img.shields.io/badge/Visual%20Studio-5C2D91.svg?style=for-the-badge&logo=visual-studio&logoColor=white) ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white) ![Stack Overflow](https://img.shields.io/badge/-Stackoverflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white) ![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge&logo=numpy&logoColor=white) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) ![Edge](https://img.shields.io/badge/Edge-0078D7?style=for-the-badge&logo=Microsoft-edge&logoColor=white)
- Thomas Jebbo (PycraftDeveloper) www.github.com/PycraftDeveloper <br />
- Count of Freshness Traversal https://twitter.com/DmitryChunikhinn <br />
- Dogukan Demir (demirdogukan) https://github.com/demirdogukan <br />
- Henri Post (HenryFBP) https://github.com/HenryFBP <br />
- PyPi www.pypi.org <br />
- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyOpenGL (and its counterpart PyOpenGL-accelerate) www.github.com/mcfletch/pyopengl <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- Py-CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />
- Moderngl https://github.com/moderngl/moderngl <br />
- Moderngl_window https://github.com/moderngl/moderngl-window <br />
- PyJoystick https://github.com/justengel/pyjoystick <br />
- Freedsound: - Erokia's "ambient wave compilation" www.freesound.org/s/473545 <br />
- Freedsound: - Soundholder's "ambient meadow near forest" www.freesound.org/s/425368 <br />
- Freedsound: - monte32's "Footsteps_6_Dirt_shoe" www.freesound.org/people/monte32/sounds/353799 <br />

Uncompiled Pycraft Dependencies
When you’re installing the uncompiled Pycraft variant from here you need to install the following 'modules', which can be done through your Control Panel in Windows (First; press <windows key + r> then type "cmd" then run the below syntax) or on Apple systems in Terminal.


pip install <module>
pip uninstall <module>

pip is usually installed by default when installing Python with most versions.

- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- Py-CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />
- Moderngl https://github.com/moderngl/moderngl <br />
- Moderngl_window https://github.com/moderngl/moderngl-window <br />
- PyJoystick https://github.com/justengel/pyjoystick <br />

_Disclaimer; unfortunately, lots of these python modules (first and third party) can require some external modules that will be installed during the installing process of the above modules, unfortunately this makes it really difficult to give credit to those modules, if you have any recommendations, please contact me appropriately._

Changes
Pycraft v0.9.4 is now live! Here is a list of all the added features to this major update: <br />

* Feature: Full Linux compatibility has been added to Pycraft and will be supported in all future versions of Pycraft.
* Feature: The update section of the installer has been added; this connects to both the installer and uninstaller for an optimised method of downloading the latest version of Pycraft.
* Feature: Message functions have been improved with some errors and issues there getting ironed out.
* Feature: The entire installer has been restructured and mostly reprogrammed from the preview releases, this improves readability and follows a similar structure to the rest of the project now.
* Bug Fix: All known issues with the installer and project have been fixed that were known in the developer releases and older versions of Pycraft.
* Feature: The way music is loaded has changed to make the project friendlier on storage space and RAM.
* Performance Improvements: There have been numerous improvements to the installer and game to make it perform better with more optimisations still to arrive.
* Bug Fix: The benchmark section of the project has had some fundamental changes and now works fine with the changed game engine.

* Feature - The program can now detect when you are connected to the internet, if permission is given, this is to detect updates.
* Feature - Pycraft now can detect updates to itself and its required modules, this is displayed on the home screen.
* Feature - Pycraft's home screen has been updated to include access to the new installer.
* Bug-fix - Issues with sound playback in game when navigating between GUI's quickly has been addressed.

* Feature - The error screen has been re-designed, with more features coming in the next snapshot.
* Feature - Most of the errors in Pycraft now have been given more information so that debugging is easier.
* Feature - Devmode captions have been added into the 3D game-engine.
* Feature - Work on the documentation.
* Feature - The benchmark GUI has had some processing optimisations and the file for the read test has been tweaked from 'Mebibytes' to 'Megabytes'.
* Bug-fix - The delays with transitioning between the 2D and 3D games engine have been fixed.

* Feature: Section 1 of 3 on the installer has been added, you can now download and install Pycraft through this method, although currently I would not advise it, past versions of Pycraft available to the installer where not build for the Installer so an amount of messy file transfer has to go on to set everything up properly. Installing versions of Pycraft greater than v0.9.3 I’ll be a much smoother experience. The installer will receive a lot of work by the time of the release of this version of Pycraft and will also see a change to the README to accommodate this change.
* Bug-fix: There have been numerous bug-fixes in this version of Pycraft, many of the changes also include shortening the length of existing code, however the installer is very long and will have a lot of work done on it to get it to the standard of the rest of the modules in Pycraft.
* Documentation: There have been tweaks to the documentation for Pycraft v0.9.3 with a big change planned when it is finished (each file will have documentation separately) however the documentation for Pycraft v0.9.4 will not start until its release.

* Feature: 2 of the 5 sections of the installer are now complete; the modify and install sections are now finished, with the uninstall, update and repair menus still to be completed (although the process will be accelerated). This update also saw tweaks to the install section, which won’t work fully until the release of Pycraft v0.9.4.
* Feature: ``PyOpenGL (and PyOpenGL_accelerate)`` have been removed entirely from the project, due to a more Pythonic, easier to install and faster alternative called ``ModernGL`` and its separate window counterpart taking its place, this should help make the project much easier to install.
* Feature: As a result of ``PyOpenGL`` being removed, the ``PycraftStartupTest`` module as well as the 3D test in ``ExBenchmark`` have been redesigned, both are now faster and better optimised.
* Feature: The ``Credits`` menu has had some tweaks to the text engine making it easier to add accreditation to contributors and update in the future, with a new accelerated text wrapping engine for Pygame text rendering added, this supports wrapping large bodies of text a well as colouring individual words, which will be made use of in later versions. Currently it is used primarily in the ``Credits`` menu, but will also be used later in the ``Benchmark`` GUI and the ``GameEngine`` modules.
* Feature: 3 axis movement in the ``GameEngine`` module has been tweaked, with movement speed no longer being frame rate dependant and more representative of real speed, and the jump animation also being tweaked for the same reasons (although still a linear movement, this will be tweaked in a later version).
* Feature: Joystick/Controller support has been added to Pycraft, now you can choose between keyboard and mouse or controller (although keyboard and controller both work together, controller and mouse do not work in combo), this support is wide ranging and there are likely to be bugs, but the ones known to me have been removed.
* Feature: The ``Inventory`` and ``MapGUI`` modules have been heavily optimised, now images aren’t loaded every frame and are only tweaked when the window resizes, which is detected now differently on those GUIs (with more support coming soon for other GUIs). The ``MapGUI`` module has also been brought into the same structure as the rest of the project and now works much better, although will still need to be updated graphically.
* Feature: The ``Fancy Sky`` setting has been swapped for ``Fancy Graphics`` which now toggles some of the new on-screen elements of the display, improving performance, although it should be noted, toggling the ``anti-aliasing`` setting will likely make a bigger change. ``anti-aliasing`` has not yet been added into the ``GameEngine``, with support coming soon there.
* Feature: The ``installer`` can now be reached directly through Pycraft.
* Feature: The 'tool-tips' text that appears on the new load screen has been updated with key changes as well as to showcase some of the project’s new features.
* Feature: The old load screen menu has been re-added and improved greatly.
* Feature: Object caching has been added to Pycraft, so now the ``GameEngine`` module will load quicker (with more support coming at a later date).
* Feature: Some files in the game are now loaded once centrally, notably the window icon and title font, which are used throughout Pycraft, so the total read/write count when running Pycraft has been significantly reduced (Especially in the ``Inventory`` and ``MapGUI`` modules).
* Feature: The project's caption has now been changed to have rounded corners using alpha, this is in light of the design changes as a part of Windows 11, and as a general aesthetic feature.

* Feature: 3 of the 5 sections of the installer utility is now complete, you can now - in addition to its previous functions - uninstall the project with 3 customisable options:
* * Uninstall both Pycraft and all additional files
* * Uninstall both Pycraft and all additional files but keep save data
* * Uninstall only Pycraft and leave all additional files
* Additionally, a large amount of the bugs and issues with the other aspects of the installer have also been corrected although any more bug reports will always help to make any aspect of the project better.
* The theme section menu has been entirely re-designed to support screen resizing and greatly improved graphics.
* The entire project has seen changes to the controller engine so now the performance there has been heavily improved.
* The entire project has had performance improvements.
* The first section of the benchmark GUI has seen changes to the text structure to make the menu easy to modify and now has updated instructions (with more improvements there coming soon!)
* There have been changes made to the messaging system on the home screen to further improve performance and allow for multiple messages to be properly handled.

Again, feedback would be much appreciated this update was released on; 03/04/2022 (UK date; DD/MM/YYYY). As always, we hope you enjoy this new release and feel free to leave feedback.

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
Versions have changed pretty dramatically the past few days, don’t panic I'm here to help! In short, the new version naming system more closely follows the Semantic Naming system:
For example; Pycraft v0.9.2.1 The first number is relevant to if the project is in a finished state. The second number relates to the number of updates Pycraft has had. The third number relates to smaller sub-updates (that likely will not feature a (.exe) release). The last number there is rarely used, this is typically for PyPi releases only, as we can't edit uploaded version of the project, we use this number if there is an important change to the project description, those updates will not include any code changing!

Releases
All past versions of Pycraft are available under the releases section of Pycraft, this is a new change, but just as before, major releases like Pycraft v0.9 and Pycraft v0.8 will have (.exe) releases, but smaller sub-releases will not, this is in light of a change coming to Pycraft, this should help with the confusion behind releases, and be more accommodating to the installer that's being worked on as a part of Pycraft v0.9.4. This brings me on to another point, all past updates to Pycraft will be located at the releases page (Thats all versions), and the previous section on the home-page with branches will change. The default branch will be the most recent release, then there will be branches for all the sub-releases to Pycraft there too; and the sister program; Pycraft-Insider-Preview will be deprecated and all data moved to relevant places in this repository, this should hopefully cut down on the confusion and make the project more user-friendly.

Other Sources
I have started writing an article on medium which is released at the start of every month, this compliments the weekly updates that are posted on my twitter profile, it would be greatly appreciated if you wanted to check it out here at this link: (https://medium.com/PycraftDev), these articles are also uploaded to my other account on Dev here: (https://dev.to/pycraftdev). Any recommendations and feedback are, as always, greatly appreciated, a lot of time and work goes into making this happen!

Final Notices
Thank you greatly for supporting this project simply by running it, I am sorry in advance for any spelling mistakes. The programs will be updated frequently and I shall do my best to keep this up to date too. I also want to add that you are welcome to view and change the program and share it with your friends however please may I 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 I can improve my program, it will all be much appreciated and give as much detail as you wish to give out.

0.9.3

<p align="center">
<a href="https://github.com/PycraftDeveloper" target="_blank" rel="noreferrer"><img src="https://user-images.githubusercontent.com/81379254/133644694-2c1149b8-01be-40f7-88ee-6110922bcf8a.png" alt="my banner"></a>
</p>

Pycraft is an OpenGL, OpenWorld, Video Game made entirely with Python. This project is a test to shed some light on OpenGL programming in Python as it is a seldom touched area of Python's vast amount of uses. Feel free to give this project a run, and message me if you have any feedback! <br />
Made with Python 64-bit and Microsoft Visual Studio Code.

[![](https://img.shields.io/badge/python-3.10-blue.svg)](www.python.org/downloads/release/python-3100) [![](https://img.shields.io/badge/python-3.9-blue.svg)](www.python.org/downloads/release/python-390) [![](https://img.shields.io/badge/python-3.8-blue.svg)](www.python.org/downloads/release/python-380) [![](https://img.shields.io/badge/python-3.7-blue.svg)](www.python.org/downloads/release/python-370) <br />
![](https://img.shields.io/github/license/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/stars/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/forks/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/issues/PycraftDeveloper/Pycraft) ![GitHub commits since tagged version](https://img.shields.io/github/commits-since/PycraftDeveloper/Pycraft/Pycraft-v0.0) ![GitHub all releases](https://img.shields.io/github/downloads/PycraftDeveloper/Pycraft/total) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/PycraftDeveloper/Pycraft) ![](https://img.shields.io/pypi/wheel/python-pycraft)

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 has been ignored, I 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 me hasn’t been an easy experience, far from it but I 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 I learn and experiment on what goes best where and how thing go together, this is why development can sometimes appear to have stopped, because I’m learning and testing what I've 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 I 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.

Preview Video
Here is a YouTube link to a showcase of Pycraft v0.9.1 (Developer Build): (https://youtu.be/shAprkrcaiI)

Setup
When setting up and installing this project you can either run the bare bones file which is likely found above this 'README.md' file if your viewing this on the GitHub website then please follow the steps below for more information on the setup and installation of this project however where possible it is recommended that you use the executable file (.exe) under the most recent releases page as this will run regardless of where you place the file or if you have python or even if you have any of the installed modules this project depends on because its compiled into one file (hence the larger file size). which makes removing the file much easier and also sharing and transporting the file easier and more convenient. However, if you are planning to use the project in its uncompiled format (which as mentioned will be at the top of this page if you are on the GitHub website) then it is recommended you follow the below steps to make sure the project works properly.

The project will download as a (.zip) compressed file. Please make sure you have the project decompressed before use. Next make sure that any folders and files outside of the 'Pycraft' folder are removed and that the 'Pycraft' file is in the intended place for the file to be run from. This file can be freely moved around, transported between drives, computers and folders in this form. A video guide to this will be uploaded here and in YouTube in the coming months.

When running the program please make sure you have a minimum of 1GB of free space on the drive and also have Python 3 installed on your device. This can be found here: (www.python.org/downloads). The sub version of Python isn't too important in this circumstance however the project has been tested in Python 3.7 and above and is known to work. In addition to all this please make sure you have the following modules installed on your device: <br />
Pillow, Pygame, PyOpenGL, PyOpenGL-Accelerate, Moderngl, Moderngl-window, Numpy, PyAutoGUI, Psutil, PyWaveFront, Py-Cpuinfo, Gputil, Tabulate.

_Please note that the use of PyOpenGL and PyOpenGL-Accelerate are being phased out, and they can be difficult to install; we recommend downloading the appropriate version from here: (https://www.lfd.uci.edu/~gohlke/pythonlibs)_
For those not familiar they can be found here: (pypi.org) and you can use the following syntax to install, update and remove these modules:

pip install <module>
pip uninstall <module>


Here is a short video tutorial explain all this (It’s really not too bad), this is the link to the YouTube video: (youtu.be/DG5YbE-umw0)

Running The Program
When running the program, you will either have a (.exe) file, downloaded from the releases page, or you will have the developer preview, if you have the developer preview, which can be found in the files section of this repository then this is how you run that program. Pycraft has recently undergone some large structural redesigning, so to run the program the advice is now different:

Now you have the program properly installed hopefully (you’ll find out if you haven’t promptly!) you need to locate the file "main.py" basically all this program does is run the right modules, initiates the main program, and catches any errors that might arise in the program in a nicely rendered error screen, if it crashes on your first run then chances are you haven’t installed the program correctly, if it still doesn’t work then you can drop me an email "ThomasJebbogmail.com" or comment here on the repository, I do hope however that it works alright for you and you have a pleasant experience. I might also add this program has been developed on a Windows 64-bit computer however should run fine on a 32-bit Windows machine (uncompiled) or through MacOS although they remain untested for now.

I recommend creating a shortcut for the "main.py" file too so it’s easier to locate.

Credits
With thanks to; <br />
![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54) ![OpenGL](https://img.shields.io/badge/OpenGL-%23FFFFFF.svg?style=for-the-badge&logo=opengl) ![OpenCV](https://img.shields.io/badge/opencv-%23white.svg?style=for-the-badge&logo=opencv&logoColor=white) ![Blender](https://img.shields.io/badge/blender-%23F5792A.svg?style=for-the-badge&logo=blender&logoColor=white) ![Canva](https://img.shields.io/badge/Canva-%2300C4CC.svg?style=for-the-badge&logo=Canva&logoColor=white) ![Figma](https://img.shields.io/badge/figma-%23F24E1E.svg?style=for-the-badge&logo=figma&logoColor=white) ![Gimp Gnu Image Manipulation Program](https://img.shields.io/badge/Gimp-657D8B?style=for-the-badge&logo=gimp&logoColor=FFFFFF) ![Inkscape](https://img.shields.io/badge/Inkscape-e0e0e0?style=for-the-badge&logo=inkscape&logoColor=080A13) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white) ![Visual Studio](https://img.shields.io/badge/Visual%20Studio-5C2D91.svg?style=for-the-badge&logo=visual-studio&logoColor=white) ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white) ![Stack Overflow](https://img.shields.io/badge/-Stackoverflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white) ![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge&logo=numpy&logoColor=white) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) ![Edge](https://img.shields.io/badge/Edge-0078D7?style=for-the-badge&logo=Microsoft-edge&logoColor=white)
- Thomas Jebbo (PycraftDeveloper) www.github.com/PycraftDeveloper <br />
- Count of Freshness Traversal https://twitter.com/DmitryChunikhinn <br />
- PyPi www.pypi.org <br />
- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyOpenGL (and its counterpart PyOpenGL-accelerate) www.github.com/mcfletch/pyopengl <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- Py-CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />
- Moderngl https://github.com/moderngl/moderngl <br />
- Moderngl_window https://github.com/moderngl/moderngl-window <br />
- Freedsound: - Erokia's "ambient wave compilation" www.freesound.org/s/473545 <br />
- Freedsound: - Soundholder's "ambient meadow near forest" www.freesound.org/s/425368 <br />
- Freedsound: - monte32's "Footsteps_6_Dirt_shoe" www.freesound.org/people/monte32/sounds/353799 <br />

Uncompiled Pycraft Dependencies <br />
When you’re installing the uncompiled Pycraft variant from here you need to install the following 'modules', which can be done through your Control Panel in Windows (First; press the windows key + r then type "cmd" then run the below syntax) or on Apple systems in Terminal.


pip install <module>
pip uninstall <module>

pip is usually installed by default when installing Python with most versions.

- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyOpenGL (and its counterpart PyOpenGL-accelerate) www.github.com/mcfletch/pyopengl <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- Py-CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />
- Moderngl https://github.com/moderngl/moderngl <br />
- Moderngl_window https://github.com/moderngl/moderngl-window <br />

_Disclaimer; unfortunately, lots of these python modules (first and third party) can require some external modules that will be installed during the installing process of the above modules, unfortunately this makes it really difficult to give credit to those modules, if you have any recommendations, please contact me appropriately._

Changes
Pycraft v0.9.3 is now live! Here is a list of all the added features to this major update: <br />

* Feature: The entire game engine has been reprogrammed, removing redundant functions, improving the visual experience and making future updates much easier.
* Feature: The project has moved over from using (.ogg) audio files to (.wav) files, this means a much larger file size, but in the current implementation Pygame does not appear to like (.ogg) files!
* Feature: We have added a messages screen to the home screen, this will display information like events, updates, important milestones in game and more! Expect this feature to be worked on significantly!
* Bug Fix: There have been lots of bug fixes in the course of programming this new update, however not many bugs were raised in Pycraft v0.9.2.5 so there haven't been many bug fixes that link the two updates (there have been bug fixes however to the game engine in the course of its programming and re-design). If you discover a bug, then feel free to share details with me on either Twitter or by email.

_Please note there have been features REMOVED from this update at this point in time, for example the new load-screen, this will be re-added hopefully, but will take some time to work on. Also, there will likely be a small update to Pycraft over the course of December, however this will be likely bug fixes and the arrival/integration of the upcoming installer._

Again, feedback would be much appreciated this update was released on; 04/12/2021 (UK date) DD/MM/YYYY. As always, we hope you enjoy this new release and feel free to leave feedback.

Update Timeline
Pycraft will be continually updated for a long time yet. The next few releases, Pycraft v0.9.x will not feature as a (.exe) release but only as a code release. Pycraft will now updated gradually, not all in one go, however (.exe) releases will likely only occur at major releases like the upcoming Pycraft v0.10! The following plan was taken from my Medium article: How We are Making a Video Game in Python 2 (here: https://medium.com/PycraftDev/how-we-are-making-a-video-game-in-python-2-547b504bbd67) <br />

At present this looks to be the schedule for Pycraft updates: <br />
* Pycraft v0.9.4 - This update, which is being worked on now, will feature the start of a documentation worked on here: https://python-pycraft.readthedocs.io/en/pycraft-v0.9.3/ (be aware, this link will change), and here on GitHub (over at the official releases under the wiki tab). This update also features the integration of the new installer which shall guide you through the installation process.
* Pycraft v0.9.5 — Will add better lighting, as well as a sun to the game! This update will also include the introduction of day and night cycles (20 minutes from sunset to sunrise), including clouds and dynamic skyboxes (featuring stars and night and day scenes). <br />
* Pycraft v0.9.6 — This will add weather events to the sky box, as well as updated sounds, including libraries for night sounds, day sounds, rain sounds, snow sounds, ambient music, footstep sounds on wet ground, footstep sounds on snow, hurt sounds, civilisation sounds, ocean sounds, and environmental sounds (like trees and grass). <br />
* Pycraft v0.9.7 — This will add an ocean to the OpenGL environment, as well as hopefully fixed collisions and much improved frame rates in game. <br />
* Pycraft v0.9.8 — This update will add structures (like buildings, trees, grass, boats, people) to the game. <br />
* Pycraft v0.9.9 — This update will feature interactions with the objects added in the previous update. <br />
* Pycraft v0.9.10 — This update will feature the addition of a story line to the game. <br />
* Pycraft v0.9.11 — This update will feature a start position in game, as well as saving your progress and loading them on a start screen, this update will also begin the process of playthrough! <br />
* Pycraft v0.9.12 — This update will feature a GUI, as well as an in-game character! <br />
* Pycraft v0.10 — This update is set to be released in Spring of 2022 at the earliest! This will showcase all the sub-updates to Pycraft v0.9, as well as featuring a compiled version. This update will also improve upon features added in sub-updates, as well as improving performance, and lots of bug fixes. <br />
* Pycraft v0.10.1 — This update will feature the addition of inventory items. <br />
* Pycraft v0.10.2 — This update will feature improvements to the inventory and map GUIs, this is as far as the plan reaches so far! <br />

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
Versions have changed pretty dramatically the past few days, don’t panic I'm here to help! In sort the new version naming system more closely follows the Semantic Naming system:
For example; Pycraft v0.9.2.1 The first number is relevant to if the project is in a finished state. The second number relates to the number of updates Pycraft has had. The third number relates to smaller sub-updates (that likely will not feature a (.exe) release). The last number there is rarely used, this is typically for PyPi releases only, as we can't edit uploaded version of the project, we use this number if there is an important change to the project description, those updates will not include any code changing!

Releases
Right time to tackle some of the confusion behind the Releases that will now be a feature of all main Pycraft updates. Now when installing and running the release its actually much, much easier to do, you just have to download the file attached and simply double click on the file to run it, typically the file will be downloaded to the downloads folder on your computer. The project might take a second or two to appear to start to do something (as everything it requires is loaded) then from there it will work without having any modules installed, any connection (like ALL other releases) or any extra downloads required, its all-in-one for much easier use, and this isn’t an app that installs anything onto your computer outside of the file so to remove you simply have to delete the 'Pycraft.exe' file. Simple!

The Planned Storyline
In Pycraft the plan is that you will start at sea on a boat, there you will learn that you have left your home on a separate island to find work and safety on this new one, when you arrive you are shown to your room and the next day join a small groups of trainee knights, each training to be part of the Royal Guards system that protects the island from the dangers on the island, you quickly rise in rank as your skills shine until one day all your skills are put to the test. Will you follow through? Well, you don't know yet, I've got to make the game first!

Other Sources
I have started writing an article on medium which is released at the start of every month, this compliments the weekly updates that are posted on my twitter profile, it would be greatly appreciated if you wanted to check it out here at this link: (https://medium.com/PycraftDev), these articles are also uploaded to my other account on Dev here: (https://dev.to/pycraftdev). Any recommendations and feedback are, as always, greatly appreciated, a lot of time and work goes into making this happen!

Final Notices
Thank you greatly for supporting this project simply by running it, I am sorry in advance for any spelling mistakes. The programs will be updated frequently and I shall do my best to keep this up to date too. I also want to add that you are welcome to view and change the program and share it with your friends however please may I 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 I can improve my program, it will all be much appreciated and give as much detail as you wish to give out. BY INSTALLING THIS PROJECT ONTO YOUR COMPUTER AND RUNNING IT I; Tom Jebbo DOES NOT TAKE ANY RESPONSIBILITY FOR ANY DAMAGES THIS MAY CAUSE HOWEVER UNLIKELY, AND YOU AGREE TO HAVE EXTERNAL MODULES INSTALLED ONTO YOUR COMPUTER (WHEN NOT CHOOSING THE RECOMMENDED EXECUTABLE VERSION) ALSO, OF WHICH I HAVE NO CONTROL OVER, PLEASE USE THIS PROGRAM RESPONSIBLY AND DO NOT USE IT TO CAUSE HARM. YOU MUST ALSO HAVE PERMISSION FROM THE DEVICES MANAGER OR ADMINISTRATOR TO INSTALL AND USE COMMAND PROMPT OR TERMINAL. NO DATA THIS PROGRAM COLLECTS IS STORED ANYWHERE BUT, ON YOUR DEVICE, AND AT ANY POINT NO CONNECTION TO A NETWORK IS REQUIRED. THIS PROGRAM DOES NOT SEND ANY DATA TO THE DEVELOPER OR ANYONE ELSE ABOUT THIS PROGRAM. Thank you.

0.9.2.5

<p align="center">
<a href="https://github.com/PycraftDeveloper" target="_blank" rel="noreferrer"><img src="https://user-images.githubusercontent.com/81379254/133644694-2c1149b8-01be-40f7-88ee-6110922bcf8a.png" alt="my banner"></a>
</p>

Pycraft is an OpenGL, OpenWorld, Video Game made entirely with Python. This project is a test to shed some light on OpenGL programming in Python as it is a seldom touched area of Python's vast amount of uses. Feel free to give this project a run, and message me if you have any feedback! <br />
Made with Python 64-bit and Microsoft Visual Studio Code.

[![](https://img.shields.io/badge/python-3.10-blue.svg)](www.python.org/downloads/release/python-3100) [![](https://img.shields.io/badge/python-3.9-blue.svg)](www.python.org/downloads/release/python-390) [![](https://img.shields.io/badge/python-3.8-blue.svg)](www.python.org/downloads/release/python-380) [![](https://img.shields.io/badge/python-3.7-blue.svg)](www.python.org/downloads/release/python-370) <br />
![](https://img.shields.io/github/license/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/stars/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/forks/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/issues/PycraftDeveloper/Pycraft) ![GitHub commits since tagged version](https://img.shields.io/github/commits-since/PycraftDeveloper/Pycraft/Pycraft-v0.0) ![GitHub all releases](https://img.shields.io/github/downloads/PycraftDeveloper/Pycraft/total) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/PycraftDeveloper/Pycraft) ![](https://img.shields.io/pypi/wheel/python-pycraft)

Pycraft v0.9.3 is now live; you can check it out here: https://github.com/PycraftDeveloper/Pycraft/tree/Pycraft-v0.9.3

This is a minor release of Pycraft with a few small changes, this will be the last edition of Pycraft to feature the game engine written entirely with PyOpenGL!

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 has been ignored, I 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 me hasn’t been an easy experience, far from it but I 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 ga in documentation. Pycraft then is a trial project, as I learn and experiment on what goes best where and how thing go together, this is why development can sometimes appear to have stopped, because I’m learning and testing what I've 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 I 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.

Preview Video

Here is a YouTube link to a showcase of Pycraft v0.9.1 (Developer Build): (https://youtu.be/shAprkrcaiI)

Setup
When setting up and installing this project you can either run the bare bones file which is likely found above this 'README.md' file if your viewing this on the GitHub website then please follow the steps below for more information on the setup and installation of this project however where possible it is recommended that you use the executable file (.exe) under the most recent releases page as this will run regardless of where you place the file or if you have python or even if you have any of the installed modules this project depends on because its compiled into one file (hence the larger file size). which makes removing the file much easier and also sharing and transporting the file easier and more convenient. However, if you are planning to use the project in its uncompiled format (which as mentioned will be at the top of this page if you are on the GitHub website) then it is recommended you follow the below steps to make sure the project works properly.

The project will download as a (.zip) compressed file. Please make sure you have the project decompressed before use. Next make sure that any folders and files outside of the 'Pycraft' folder are removed and that the 'Pycraft' file is in the intended place for the file to be run from. This file can be freely moved around, transported between drives, computers and folders in this form. A video guide to this will be uploaded here and in YouTube in the coming months.

When running the program please make sure you have a minimum of 1GB of free space on the drive and also have Python 3 installed on your device. This can be found here: (www.python.org/downloads). The sub version of Python isn't too important in this circumstance however the project has been tested in Python 3.9.5 and is known to work. In addition to all this please make sure you have the following modules installed on your device:
Pygame, Numpy, PyOpenGL, Pillow, PyAutoGUI, Psutil, PyWaveFront, CPUinfo and Ctypes.
For those not familiar they can be found here: (pypi.org) and you can use the following syntax to install, update and remove these modules:

pip install <module>
pip uninstall <module>
pip update <module>


Here is a short video tutorial explain all this (It’s really not too bad), this is the link to the YouTube video: (youtu.be/DG5YbE-umw0)

Running The Program

When running the program, you will either have a (.exe) file, downloaded from the releases page, or you will have the developer preview, if you have the developer preview, which can be found in the files section of this repository then this is how you run that program. Pycraft has recently undergone some large structural redesigning, so to run the program the advice is now different:

Now you have the program properly installed hopefully (you’ll find out if you haven’t promptly!) you need to locate the file "main.py" basically all this program does is run the right modules, initiates the main program, and catches any errors that might arise in the program in a nicely rendered error screen, if it crashes on your first run then chances are you haven’t installed the program correctly, if it still doesn’t work then you can drop me an email "ThomasJebbogmail.com" or comment here on the repository, I do hope however that it works alright for you and you have a pleasant experience. I might also add this program has been developed on a Windows 64-bit computer however should run fine on a 32-bit Windows machine (uncompiled) or through MacOS although they remain untested for now.

I recommend creating a shortcut for the "main.py" file too so it’s easier to locate.

Credits

With thanks to; <br />
![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54) ![OpenGL](https://img.shields.io/badge/OpenGL-%23FFFFFF.svg?style=for-the-badge&logo=opengl) ![OpenCV](https://img.shields.io/badge/opencv-%23white.svg?style=for-the-badge&logo=opencv&logoColor=white) ![Blender](https://img.shields.io/badge/blender-%23F5792A.svg?style=for-the-badge&logo=blender&logoColor=white) ![Canva](https://img.shields.io/badge/Canva-%2300C4CC.svg?style=for-the-badge&logo=Canva&logoColor=white) ![Figma](https://img.shields.io/badge/figma-%23F24E1E.svg?style=for-the-badge&logo=figma&logoColor=white) ![Gimp Gnu Image Manipulation Program](https://img.shields.io/badge/Gimp-657D8B?style=for-the-badge&logo=gimp&logoColor=FFFFFF) ![Inkscape](https://img.shields.io/badge/Inkscape-e0e0e0?style=for-the-badge&logo=inkscape&logoColor=080A13) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white) ![Visual Studio](https://img.shields.io/badge/Visual%20Studio-5C2D91.svg?style=for-the-badge&logo=visual-studio&logoColor=white) ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white) ![Stack Overflow](https://img.shields.io/badge/-Stackoverflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white) ![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge&logo=numpy&logoColor=white) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) ![Edge](https://img.shields.io/badge/Edge-0078D7?style=for-the-badge&logo=Microsoft-edge&logoColor=white)
- Thomas Jebbo (PycraftDeveloper) www.github.com/PycraftDeveloper <br />
- Count of Freshness Traversal https://twitter.com/DmitryChunikhinn <br />
- Pypi www.pypi.org <br />
- Pillow (PIL) www.python-pillow.org <br />
- Pygame www.pygame.org <br />
- Freesound: - Erokia's "ambient wave compilation" www.freesound.org/s/473545 <br />
- Freesound: - Soundholder's "ambient meadow near forest" www.freesound.org/s/425368 <br />
- Freesound: - monte32's "Footsteps_6_Dirt_shoe" www.freesound.org/people/monte32/sounds/353799 <br />

Uncompiled Pycraft's Dependencies <br />

When you’re installing the uncompiled Pycraft variant from here you need to install the following 'modules', which can be done through your Control Panel in Windows (First; press the windows key + r then type "cmd" then run the below syntax) or on Apple systems in Terminal.


pip install <module>
pip uninstall <module>
pip update <module>

pip is usually installed by default when installing Python with most versions.

- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyOpenGL (and its counterpart PyOpenGL-accelerate) www.github.com/mcfletch/pyopengl <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- Py-CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />

_Disclaimer; unfortunately, lots of these python modules (first and third party) can require some external modules that will be installed during the installing process of the above modules, unfortunately this makes it really difficult to give credit to those modules, if you have any recommendations, please contact me appropriately._

Changes

Pycraft v0.9.2.5 is now live! Here is a list of all the added features to this minor update: <br />

* Feature: Reprogrammed the loading screen for the game engine for a large performance improvement <br />
* Bug Fix: Minor bug fixes <br />

Again, feedback would be much appreciated this update was released on; 21/11/2021 (UK date) DD/MM/YYYY. As always, we hope you enjoy this new release and feel free to leave feedback.

Update Timeline
Pycraft will be continually updated for a long time yet. The next few releases, Pycraft v0.9.x will not feature as a (.exe) release but only as a code release. Pycraft will now updated gradually, not all in one go, however (.exe) releases will likely only occur at major releases like the upcoming Pycraft v0.10! The following plan was taken from my Medium article: How We are Making a Video Game in Python 2 (here: https://medium.com/PycraftDev/how-we-are-making-a-video-game-in-python-2-547b504bbd67) <br />

At present this looks to be the schedule for Pycraft updates: <br />
* Pycraft v0.9.3 — Will add better lighting, as well as a sun to the game! This update will also include the introduction of day and night cycles (20 minutes from sunset to sunrise), including clouds and dynamic skyboxes (featuring stars and night and day scenes). <br />
* Pycraft v0.9.4 — This will add weather events to the sky box, as well as updated sounds, including libraries for night sounds, day sounds, rain sounds, snow sounds, ambient music, footstep sounds on wet ground, footstep sounds on snow, hurt sounds, civilisation sounds, ocean sounds, and environmental sounds (like trees and grass). <br />
* Pycraft v0.9.5 — This will add an ocean to the OpenGL environment, as well as hopefully fixed collisions and much improved frame rates in game. <br />
* Pycraft v0.9.6 — This update will add structures (like buildings, trees, grass, boats, people) to the game. <br />
* Pycraft v0.9.7 — This update will feature interactions with the objects added in the previous update. <br />
* Pycraft v0.9.8 — This update will feature the addition of a story line to the game. <br />
* Pycraft v0.9.9 — This update will feature a start position in game, as well as saving your progress and loading them on a start screen, this update will also begin the process of playthrough! <br />
* Pycraft v0.9.10 — This update will feature a GUI, as well as an in-game character! <br />
* Pycraft v0.10 — This update is set to be released in Spring of 2022 at the earliest! This will showcase all the sub-updates to Pycraft v0.9, as well as featuring a compiled version. This update will also improve upon features added in sub-updates, as well as improving performance, and lots of bug fixes. <br />
* Pycraft v0.10.1 — This update will feature the addition of inventory items. <br />
* Pycraft v0.10.2 — This update will feature improvements to the inventory and map GUIs, this is as far as the plan reaches so far! <br />

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
Versions have changed pretty dramatically the past few days, don’t panic I'm here to help! In sort the new version naming system more closely follows the Semantic Naming system:
For example; Pycraft v0.9.2.1 The first number is relevant to if the project is in a finished state. The second number relates to the number of updates Pycraft has had. The third number relates to smaller sub-updates (that likely will not feature a (.exe) release). The last number there is rarely used, this is typically for PyPi releases only, as we can't edit uploaded version of the project, we use this number if there is an important change to the project description, those updates will not include any code changing!

(.exe) Releases

Right time to tackle some of the confusion behind the (.exe) releases that will now be a feature of all main releases. Now when installing and running the (.exe) release its actually much, much easier to do, you just have to download the file attached and simply double click on the file to run it, typically the file will be downloaded to the downloads folder on your computer. The project might take a second or two to appear to start to do something (as everything it requires is loaded) then from there it will work without having any modules installed, any connection (like ALL other releases) or any extra downloads required, its all-in-one for much easier use, and this isn’t an app that installs anything onto your computer outside of the file so to remove you simply have to delete the 'Pycraft.exe' file. Simple!

The Planned Storyline

In Pycraft the plan is that you will start at sea on a boat, there you will learn that you have left your home on a separate island to find work and safety on this new one, when you arrive you are shown to your room and the next day join a small groups of trainee knights, each training to be part of the Royal Guards system that protects the island from the dangers on the island, you quickly rise in rank as your skills shine until one day all your skills are put to the test. Will you follow through? Well, you don't know yet, I've got to make the game first!

Other Sources

I have started writing an article on medium which is released at the start of every month, this compliments the weekly updates that are posted on my twitter profile, it would be greatly appreciated if you wanted to check it out here at this link: (link.medium.com/Mhqd8qIAhjb). And recommendations and feedback are, as always, greatly appreciated, a lot of time and work goes into making this happen!

Final Notices

Thank you greatly for supporting this project simply by running it, I am sorry in advance for any spelling mistakes. The programs will be updated frequently and I shall do my best to keep this up to date too. I also want to add that you are welcome to view and change the program and share it with your friends however please may I 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 I can improve my program, it will all be much appreciated and give as much detail as you wish to give out. BY INSTALLING THIS PROJECT ONTO YOUR COMPUTER AND RUNNING IT I; Tom Jebbo DOES NOT TAKE ANY RESPONSIBILITY FOR ANY DAMAGES THIS MAY CAUSE HOWEVER UNLIKELY, AND YOU AGREE TO HAVE EXTERNAL MODULES INSTALLED ONTO YOUR COMPUTER (WHEN NOT CHOOSING THE RECOMMENDED EXECUTABLE VERSION) ALSO, OF WHICH I HAVE NO CONTROL OVER, PLEASE USE THIS PROGRAM RESPONSIBLY AND DO NOT USE IT TO CAUSE HARM. YOU MUST ALSO HAVE PERMISSION FROM THE DEVICES MANAGER OR ADMINISTRATOR TO INSTALL AND USE COMMAND PROMPT OR TERMINAL. NO DATA THIS PROGRAM COLLECTS IS STORED ANYWHERE BUT, ON YOUR DEVICE, AND AT ANY POINT NO CONNECTION TO A NETWORK IS REQUIRED. THIS PROGRAM DOES NOT SEND ANY DATA TO THE DEVELOPER OR ANYONE ELSE ABOUT THIS PROGRAM. Thank you.

0.9.2

<p align="center">
<a href="https://www.yushi.dev/" target="_blank" rel="noreferrer"><img src="https://user-images.githubusercontent.com/81379254/133644694-2c1149b8-01be-40f7-88ee-6110922bcf8a.png" alt="my banner"></a>
</p>

Pycraft is an OpenGL, OpenWorld, Video Game made entirely with Python. This project is a test to shed some light on OpenGL programming in Python as it is a seldom touched area of Python's vast amount of uses. Feel free to give this project a run, and message me if you have any feedback! <br />
Made with Python 64-bit and Microsoft Visual Studio Code.

[![](https://img.shields.io/badge/python-3.10-blue.svg)](www.python.org/downloads/release/python-3100) [![](https://img.shields.io/badge/python-3.9-blue.svg)](www.python.org/downloads/release/python-390) [![](https://img.shields.io/badge/python-3.8-blue.svg)](www.python.org/downloads/release/python-380) [![](https://img.shields.io/badge/python-3.7-blue.svg)](www.python.org/downloads/release/python-370) <br />
![](https://img.shields.io/github/license/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/stars/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/forks/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/issues/PycraftDeveloper/Pycraft) ![GitHub commits since tagged version](https://img.shields.io/github/commits-since/PycraftDeveloper/Pycraft/Pycraft-v0.0) ![GitHub all releases](https://img.shields.io/github/downloads/PycraftDeveloper/Pycraft/total) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/PycraftDeveloper/Pycraft) ![](https://img.shields.io/pypi/wheel/python-pycraft)

Pycraft v0.9.3 is now live; check it out here: https://github.com/PycraftDeveloper/Pycraft/tree/Pycraft-v0.9.3

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 has been ignored, I 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 me hasn’t been an easy experience, far from it but I 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 ga in documentation. Pycraft then is a trial project, as I learn and experiment on what goes best where and how thing go together, this is why development can sometimes appear to have stopped, because I’m learning and testing what I've 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 I 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.

Preview Video

Here is a YouTube link to a showcase of Pycraft v0.9.1 (Developer Build): (https://youtu.be/shAprkrcaiI)

Setup

The following instructions are for installing Pycraft via the new recommended method, through Pypi:
Installing Pycraft is now easier than ever, simply copy the command: pip install python-pycraft
Into Terminal (on Apple devices), or Command Prompt (on Windows based machines), and then once its installed, both the project and the modules it requires simply open Python's IDLE or a code editor of your choice (I personally recommend Visual Studio Code), create a new Python file and do: import Pycraft
It's that simple now! However if you are a fan of the GitHub releases then feel free to head over there and download the files as normal if you wish!

For anyone reading this README on my GitHub page, then the instructions below will be more helpful for you:
When setting up and installing this project you can either run the bare bones file which is likely found above this 'README.md' file if your viewing this on the GitHub website then please follow the steps below for more information on the setup and installation of this project however where possible it is recommended that you use the executable file (.exe) under the most recent releases page as this will run regardless of where you place the file or if you have python or even if you have any of the installed modules this project depends on because its compiled into one file (hence the larger file size). which makes removing the file much easier and also sharing and transporting the file easier and more convenient. However, if you are planning to use the project in its uncompiled format (which as mentioned will be at the top of this page if you are on the GitHub website) then it is recommended you follow the below steps to make sure the project works properly.

The project will download as a (.zip) compressed file. Please make sure you have the project decompressed before use. Next make sure that any folders and files outside of the 'Pycraft' folder are removed and that the 'Pycraft' file is in the intended place for the file to be run from. This file can be freely moved around, transported between drives, computers and folders in this form. A video guide to this will be uploaded here and in YouTube in the coming months.

When running the program please make sure you have a minimum of 1GB of free space on the drive and also have Python 3 installed on your device. This can be found here: (www.python.org/downloads). The sub version of Python isn't too important in this circumstance however the project has been tested in Python 3.9.5 and is known to work. In addition to all this please make sure you have the following modules installed on your device:
Pygame, Numpy, PyOpenGL, Pillow, PyAutoGUI, Psutil, PyWaveFront, CPUinfo and Ctypes.
For those not familiar they can be found here: (pypi.org) and you can use the following syntax to install, update and remove these modules:

pip install <module>
pip uninstall <module>
pip update <module>


Here is a short video tutorial explain all this (It’s really not too bad), this is the link to the YouTube video: (youtu.be/DG5YbE-umw0)

Running The Program
For anyone reading this README on my GitHub page, then we also recommend you read through this:

When running the program, you will either have a (.exe) file, downloaded from the releases page, or you will have the developer preview, if you have the developer preview, which can be found in the files section of this repository then this is how you run that program. Pycraft has recently undergone some large structural redesigning, so to run the program the advice is now different:

Now you have the program properly installed hopefully (you’ll find out if you haven’t promptly!) you need to locate the file "main.py" basically all this program does is run the right modules, initiates the main program, and catches any errors that might arise in the program in a nicely rendered error screen, if it crashes on your first run then chances are you haven’t installed the program correctly, if it still doesn’t work then you can drop me an email "ThomasJebbogmail.com" or comment here on the repository, I do hope however that it works alright for you and you have a pleasant experience. I might also add this program has been developed on a Windows 64-bit computer however should run fine on a 32-bit Windows machine (uncompiled) or through MacOS although they remain untested for now.

I recommend creating a shortcut for the "main.py" file too so it’s easier to locate.

Credits

With thanks to; <br />
![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54) ![OpenGL](https://img.shields.io/badge/OpenGL-%23FFFFFF.svg?style=for-the-badge&logo=opengl) ![OpenCV](https://img.shields.io/badge/opencv-%23white.svg?style=for-the-badge&logo=opencv&logoColor=white) ![Blender](https://img.shields.io/badge/blender-%23F5792A.svg?style=for-the-badge&logo=blender&logoColor=white) ![Canva](https://img.shields.io/badge/Canva-%2300C4CC.svg?style=for-the-badge&logo=Canva&logoColor=white) ![Figma](https://img.shields.io/badge/figma-%23F24E1E.svg?style=for-the-badge&logo=figma&logoColor=white) ![Gimp Gnu Image Manipulation Program](https://img.shields.io/badge/Gimp-657D8B?style=for-the-badge&logo=gimp&logoColor=FFFFFF) ![Inkscape](https://img.shields.io/badge/Inkscape-e0e0e0?style=for-the-badge&logo=inkscape&logoColor=080A13) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white) ![Visual Studio](https://img.shields.io/badge/Visual%20Studio-5C2D91.svg?style=for-the-badge&logo=visual-studio&logoColor=white) ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white) ![Stack Overflow](https://img.shields.io/badge/-Stackoverflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white) ![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge&logo=numpy&logoColor=white) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) ![Edge](https://img.shields.io/badge/Edge-0078D7?style=for-the-badge&logo=Microsoft-edge&logoColor=white)
- Thomas Jebbo (PycraftDeveloper) www.github.com/PycraftDeveloper <br />
- Count of Freshness Traversal https://twitter.com/DmitryChunikhinn <br />
- Pypi www.pypi.org <br />
- Pillow (PIL) www.python-pillow.org <br />
- Pygame www.pygame.org <br />
- Freesound: - Erokia's "ambient wave compilation" www.freesound.org/s/473545 <br />
- Freesound: - Soundholder's "ambient meadow near forest" www.freesound.org/s/425368 <br />
- Freesound: - monte32's "Footsteps_6_Dirt_shoe" www.freesound.org/people/monte32/sounds/353799 <br />

Uncompiled Pycraft's Dependencies <br />

When you’re installing the uncompiled Pycraft variant from here you need to install the following 'modules', which can be done through your Control Panel in Windows (First; press the windows key + r then type "cmd" then run the below syntax) or on Apple systems in Terminal.


pip install <module>
pip uninstall <module>
pip update <module>

pip is usually installed by default when installing Python with most versions.

- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyOpenGL (and its counterpart PyOpenGL-accelerate) www.github.com/mcfletch/pyopengl <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- Py-CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />

_Disclaimer; unfortunately, lots of these python modules (first and third party) can require some external modules that will be installed during the installing process of the above modules, unfortunately this makes it really difficult to give credit to those modules, if you have any recommendations, please contact me appropriately._

Changes

Pycraft v0.9.2 is now live! Here is a list of all the added features to this sub-release: <br />

* Feature: Reprogrammed 'Devmode' graph feature, now scales with screen better (but NOT completely on resize as yet), when switching between modes of full-screen and windowed. <br />
* Feature: Parallelized CPU data collection to create a more accurate graph in 'Devmode'. <br />
* Feature: Labelled text at the top of 'Devmode' and added more useful information. <br />
* Feature: Tweaked caption in 'Devmode' to now include some new features. <br />
* Feature: Fixed mouse movement in game to the centre of the display, and polished mouse detection effects. <br />
* Feature: Improved inventory backdrop snapshot with a blur effect. <br />
* Feature: Created a small sub-program that runs parallel to the main program, this checks all the variables that have the potential to hit the 32/64-bit integer limit. <br />
* Feature: Added better implementations of the 'Adaptive' setting mode, now this dynamically changes FPS to boost performance, detail and keeping system from running hot. This also takes data from the Benchmark mode function based on scores, this is an early feature preview so expect some changes here. (This is run in parallel.) <br />
* Feature: Major performance improvements to the game engine. <br />
* Feature: VBOs have been added to Pycraft! This makes way for some significant changes to come, as well as netting significant performance improvements! <br />
* Feature: The skybox has been pinned to the players camera now. <br />
* Feature: Rotations and movements have been tweaked, but still will need a little bit of work into Pycraft v0.0.3 <br />
* Feature (disabled... for now): Parallelization of the Collisions and Drawing algorithms. <br />
* Feature (disabled... for now): Pycraft’s fog and weather engine has not been working for some time, however a later edition of Pycraft is intended to address this. <br />
* Bug Fix: Prevented the music in game from playing loud, and uncontrollably on start-up, and after certain menu interactions. <br />
* Bug Fix: Some internal clearing up after the big change that came with the last pre-release regarding the programming restructuring. <br />
* Bug Fix: Added and tweaked some internal values for the game and it's saves. <br />
* Bug Fix: Fixed an issue with the animation on the Home Screen changing speed with FPS changes. <br />
* Bug Fix: Cleaned up the game engine a touch, removing unnecessary code and variables. <br />

Again, feedback would be much appreciated this update was released on; 6/11/2021 (UK date) DD/MM/YYYY. As always, we hope you enjoy this new release and feel free to leave feedback.

Update Timeline
Pycraft will be continually updated for a long time yet. The next few releases, Pycraft v0.9.x will not feature as a (.exe) release but only as a code release. Pycraft will now updated gradually, not all in one go, however (.exe) releases will likely only occur at major releases like the upcoming Pycraft v0.10! The following plan was taken from my Medium article: How We are Making a Video Game in Python 2 (here: https://medium.com/PycraftDev/how-we-are-making-a-video-game-in-python-2-547b504bbd67) <br />

At present this looks to be the schedule for Pycraft updates: <br />
* Pycraft v0.9.3 — Will add better lighting, as well as a sun to the game! This update will also include the introduction of day and night cycles (20 minutes from sunset to sunrise), including clouds and dynamic skyboxes (featuring stars and night and day scenes). <br />
* Pycraft v0.9.4 — This will add weather events to the sky box, as well as updated sounds, including libraries for night sounds, day sounds, rain sounds, snow sounds, ambient music, footstep sounds on wet ground, footstep sounds on snow, hurt sounds, civilisation sounds, ocean sounds, and environmental sounds (like trees and grass). <br />
* Pycraft v0.9.5 — This will add an ocean to the OpenGL environment, as well as hopefully fixed collisions and much improved frame rates in game. <br />
* Pycraft v0.9.6 — This update will add structures (like buildings, trees, grass, boats, people) to the game. <br />
* Pycraft v0.9.7 — This update will feature interactions with the objects added in the previous update. <br />
* Pycraft v0.9.8 — This update will feature the addition of a story line to the game. <br />
* Pycraft v0.9.9 — This update will feature a start position in game, as well as saving your progress and loading them on a start screen, this update will also begin the process of playthrough! <br />
* Pycraft v0.9.10 — This update will feature a GUI, as well as an in-game character! <br />
* Pycraft v0.10 — This update is set to be released in Spring of 2022 at the earliest! This will showcase all the sub-updates to Pycraft v0.9, as well as featuring a compiled version. This update will also improve upon features added in sub-updates, as well as improving performance, and lots of bug fixes. <br />
* Pycraft v0.10.1 — This update will feature the addition of inventory items. <br />
* Pycraft v0.10.2 — This update will feature improvements to the inventory and map GUIs, this is as far as the plan reaches so far! <br />

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
Versions have changed pretty dramatically the past few days, don’t panic I'm here to help! In sort the new version naming system more closely follows the Semantic Naming system:
For example; Pycraft v0.9.2.1 The first number is relevant to if the project is in a finished state. The second number relates to the number of updates Pycraft has had. The third number relates to smaller sub-updates (that likely will not feature a (.exe) release). The last number there is rarely used, this is typically for PyPi releases only, as we can't edit uploaded version of the project, we use this number if there is an important change to the project description, those updates will not include any code changing!

(.exe) Releases

Right time to tackle some of the confusion behind the (.exe) releases that will now be a feature of all main releases. Now when installing and running the (.exe) release its actually much, much easier to do, you just have to download the file attached and simply double click on the file to run it, typically the file will be downloaded to the downloads folder on your computer. The project might take a second or two to appear to start to do something (as everything it requires is loaded) then from there it will work without having any modules installed, any connection (like ALL other releases) or any extra downloads required, its all-in-one for much easier use, and this isn’t an app that installs anything onto your computer outside of the file so to remove you simply have to delete the 'Pycraft.exe' file. Simple!

The Planned Storyline

In Pycraft the plan is that you will start at sea on a boat, there you will learn that you have left your home on a separate island to find work and safety on this new one, when you arrive you are shown to your room and the next day join a small groups of trainee knights, each training to be part of the Royal Guards system that protects the island from the dangers on the island, you quickly rise in rank as your skills shine until one day all your skills are put to the test. Will you follow through? Well, you don't know yet, I've got to make the game first!

Other Sources

I have started writing an article on medium which is released at the start of every month, this compliments the weekly updates that are posted on my twitter profile, it would be greatly appreciated if you wanted to check it out here at this link: (link.medium.com/Mhqd8qIAhjb). And recommendations and feedback are, as always, greatly appreciated, a lot of time and work goes into making this happen!

Final Notices

Thank you greatly for supporting this project simply by running it, I am sorry in advance for any spelling mistakes. The programs will be updated frequently and I shall do my best to keep this up to date too. I also want to add that you are welcome to view and change the program and share it with your friends however please may I 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 I can improve my program, it will all be much appreciated and give as much detail as you wish to give out. BY INSTALLING THIS PROJECT ONTO YOUR COMPUTER AND RUNNING IT I; Tom Jebbo DOES NOT TAKE ANY RESPONSIBILITY FOR ANY DAMAGES THIS MAY CAUSE HOWEVER UNLIKELY, AND YOU AGREE TO HAVE EXTERNAL MODULES INSTALLED ONTO YOUR COMPUTER (WHEN NOT CHOOSING THE RECOMMENDED EXECUTABLE VERSION) ALSO, OF WHICH I HAVE NO CONTROL OVER, PLEASE USE THIS PROGRAM RESPONSIBLY AND DO NOT USE IT TO CAUSE HARM. YOU MUST ALSO HAVE PERMISSION FROM THE DEVICES MANAGER OR ADMINISTRATOR TO INSTALL AND USE COMMAND PROMPT OR TERMINAL. NO DATA THIS PROGRAM COLLECTS IS STORED ANYWHERE BUT, ON YOUR DEVICE, AND AT ANY POINT NO CONNECTION TO A NETWORK IS REQUIRED. THIS PROGRAM DOES NOT SEND ANY DATA TO THE DEVELOPER OR ANYONE ELSE ABOUT THIS PROGRAM. Thank you.

0.9.1

<p align="center">
<a href="https://www.yushi.dev/" target="_blank" rel="noreferrer"><img src="https://user-images.githubusercontent.com/81379254/133644694-2c1149b8-01be-40f7-88ee-6110922bcf8a.png" alt="my banner"></a>
</p>

Pycraft is an OpenGL, OpenWorld, Video Game made entirely with Python. This project is a test to shed some light on OpenGL programming in Python as it is a seldom touched area of Pythons vast amount of uses. Feel free to give this project a run, and message me if you have any feedback! | Made with Python 64-bit and Microsoft Visual Studio Code.

[![](https://img.shields.io/badge/python-3.10-blue.svg)](www.python.org/downloads/release/python-3100) [![](https://img.shields.io/badge/python-3.9-blue.svg)](www.python.org/downloads/release/python-390) [![](https://img.shields.io/badge/python-3.8-blue.svg)](www.python.org/downloads/release/python-380) [![](https://img.shields.io/badge/python-3.7-blue.svg)](www.python.org/downloads/release/python-370) <br />
![](https://img.shields.io/github/license/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/stars/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/forks/PycraftDeveloper/Pycraft) ![](https://img.shields.io/github/issues/PycraftDeveloper/Pycraft) ![GitHub commits since tagged version](https://img.shields.io/github/commits-since/PycraftDeveloper/Pycraft/Pycraft-v0.0) ![GitHub all releases](https://img.shields.io/github/downloads/PycraftDeveloper/Pycraft/total) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/PycraftDeveloper/Pycraft)

Pycraft v0.9.2 is here, we recommend you use the latest version of Pycraft for the newest features and better bug-fixes!

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 has been ignored, I 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 me hasn’t been an easy experience, far from it but I 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 ga in documentation. Pycraft then is a trial project, as I learn and experiment on what goes best where and how thing go together, this is why development can sometimes appear to have stopped, because I’m learning and testing what I've 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 I 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

Preview video

Here is a YouTube link to a showcase of Pycraft v0.9.1 (Developer Build): (https://youtu.be/shAprkrcaiI)

Setup

The following instructions are for installing Pycraft via the new recommended method, through Pypi:
Installing Pycraft is now easier than ever, simply copy the command: pip install python-pycraft
Into Terminal (on Apple devices), or Command Prompt (on Windows based machines), and then once its installed, both the project and the modules it requires simply open Python's IDLE or a code editor of your choice (I personally recommend Visual Studio Code), create a new Python file and do: import Pycraft
It's that simple now! However if you are a fan of the Github releases then feel free to head over there and download the files as normal if you wish!

For anyone reading this README on my Github page, then the instructions below will be more helpful for you:
When setting up and installing this project you can either run the bare bones file which is likely found above this 'README.md' file if your viewing this on the GitHub website then please follow the steps below for more information on the setup and installation of this project however where possible it is recommended that you use the executable file (.exe) under the most recent releases page as this will run regardless of where you place the file or if you have python or even if you have any of the installed modules this project depends on because its compiled into one file (hence the larger file size). which makes removing the file much easier and also sharing and transporting the file easier and more convenient. However, if you are planning to use the project in its uncompiled format (which as mentioned will be at the top of this page if you are on the GitHub website) then it is recommended you follow the below steps to make sure the project works properly.

The project will download as a (.zip) compressed file. Please make sure you have the project decompressed before use. Next make sure that any folders and files outside of the 'Pycraft' folder are removed and that the 'Pycraft' file is in the intended place for the file to be run from. This file can be freely moved around, transported between drives, computers and folders in this form. A video guide to this will be uploaded here and in YouTube in the coming months.

When running the program please make sure you have a minimum of 1GB of free space on the drive and also have Python 3 installed on your device. This can be found here: (www.python.org/downloads). The sub version of Python isn't too important in this circumstance however the project has been tested in Python 3.9.5 and is known to work. In addition to all this please make sure you have the following modules installed on your device:
Pygame, Numpy, PyOpenGL, Pillow, PyAutoGUI, Psutil, PyWaveFront, CPUinfo and Ctypes.
For those not familiar they can be found here: (pypi.org) and you can use the following syntax to install, update and remove these modules:

pip install <module>
pip uninstall <module>
pip update <module>


Here is a short video tutorial explain all this (It’s really not too bad), this is the link to the YouTube video: (youtu.be/DG5YbE-umw0)

Running the program
For anyone reading this README on my Github page, then we also recommend you read through this:

When running the program, you will either have a (.exe) file, downloaded from the releases page, or you will have the developer preview, if you have the developer preview, which can be found in the files section of this repository then this is how you run that program. Pycraft has recently undergone some large structural redesigning, so to run the program the advice is now different:

Now you have the program properly installed hopefully (you’ll find out if you haven’t promptly!) you need to locate the file "main.py" basically all this program does is run the right modules, initiates the main program, and catches any errors that might arise in the program in a nicely rendered error screen, if it crashes on your first run then chances are you haven’t installed the program correctly, if it still doesn’t work then you can drop me an email "ThomasJebbogmail.com" or comment here on the repository, I do hope however that it works alright for you and you have a pleasant experience. I might also add this program has been developed on a Windows 64-bit computer however should run fine on a 32-bit Windows machine (uncompiled) or through MacOS although they remain untested for now.

I recommend creating a shortcut for the "main.py" file too so it’s easier to locate.

Credits

With thanks to; <br />
![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54) ![OpenGL](https://img.shields.io/badge/OpenGL-%23FFFFFF.svg?style=for-the-badge&logo=opengl) ![OpenCV](https://img.shields.io/badge/opencv-%23white.svg?style=for-the-badge&logo=opencv&logoColor=white) ![Blender](https://img.shields.io/badge/blender-%23F5792A.svg?style=for-the-badge&logo=blender&logoColor=white) ![Canva](https://img.shields.io/badge/Canva-%2300C4CC.svg?style=for-the-badge&logo=Canva&logoColor=white) ![Figma](https://img.shields.io/badge/figma-%23F24E1E.svg?style=for-the-badge&logo=figma&logoColor=white) ![Gimp Gnu Image Manipulation Program](https://img.shields.io/badge/Gimp-657D8B?style=for-the-badge&logo=gimp&logoColor=FFFFFF) ![Inkscape](https://img.shields.io/badge/Inkscape-e0e0e0?style=for-the-badge&logo=inkscape&logoColor=080A13) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white) ![Visual Studio](https://img.shields.io/badge/Visual%20Studio-5C2D91.svg?style=for-the-badge&logo=visual-studio&logoColor=white) ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white) ![Stack Overflow](https://img.shields.io/badge/-Stackoverflow-FE7A16?style=for-the-badge&logo=stack-overflow&logoColor=white) ![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge&logo=numpy&logoColor=white) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) ![Edge](https://img.shields.io/badge/Edge-0078D7?style=for-the-badge&logo=Microsoft-edge&logoColor=white)
- Thomas Jebbo (PycraftDeveloper) www.github.com/PycraftDeveloper <br />
- dfchunihin www.github.com/dfchunihin <br />
- Pypi www.pypi.org <br />
- Pillow (PIL) www.python-pillow.org <br />
- Pygame www.pygame.org <br />
- Freesound: - Erokia's "ambient wave compilation" www.freesound.org/s/473545 <br />
- Freesound: - Soundholder's "ambient meadow near forest" www.freesound.org/s/425368 <br />
- Freesound: - monte32's "Footsteps_6_Dirt_shoe" www.freesound.org/people/monte32/sounds/353799 <br />

Uncompiled Pycraft's Dependencies <br />

When you’re installing the uncompiled Pycraft variant from here you need to install the following 'modules', which can be done through your Control Panel in Windows (First; press the windows key + r then type "cmd" then run the below syntax) or on Apple systems in Terminal.


pip install <module>
pip uninstall <module>
pip update <module>

pip is usually installed by default when installing Python with most versions.

- PIL (Pillow or Python Imaging Library) www.github.com/python-pillow/Pillow <br />
- Pygame www.github.com/pygame/pygame <br />
- Numpy www.github.com/numpy/numpy <br />
- PyOpenGL (and its counterpart PyOpenGL-accelerate) www.github.com/mcfletch/pyopengl <br />
- PyAutoGUI www.github.com/asweigart/pyautogui <br />
- Psutil www.github.com/giampaolo/psutil <br />
- PyWaveFront www.github.com/pywavefront/PyWavefront <br />
- CPUinfo www.github.com/pytorch/cpuinfo <br />
- GPUtil www.github.com/anderskm/gputil <br />
- Tabulate www.github.com/p-ranav/tabulate <br />

_Disclaimer; unfortunately, lots of these python modules (first and third party) can require some external modules that will be installed during the installing process of the above modules, unfortunately this makes it really difficult to give credit to those modules, if you have any recommendations, please contact me appropriately._

Changes

Pycraft v0.9.1 is now live! Here is a list of all the added features to this sub-release:

- Some UI improvements to the home screen, which now displays an animation on the 'geometric rose' design.
- Added OpenGL benchmarks to the benchmark function, which has seen some minor graphical changes too.
- The ENTIRE programming structure of the game has changed, improving performance and load times, and will hopefully make adding features and inevitably debugging them much easier, also this is a feature we hope you don't notice as the games reprogramming from before to after has been extensively checked and modified to make sure everything works and is just as seamless as before.
- Screenshots have been fixed and hopefully for the final time.
- Windows 11 compatibility is now also added, although the game should work fine on Windows 10 as possibly earlier machines, however this hasn’t been tested at present.
- Many, many, many bug fixes.

Again, feedback would be much appreciated this update was released on; 10/10/2021 (UK date) DD/MM/YYYY. As always, we hope you enjoy this new release and feel free to leave feedback.

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
Versions have changed pretty dramatically the past few days, don’t panic I'm here to help! In sort the new version naming system more closely follows the Semantic Naming system; in short the first number in this example 'v0.8.1' stands for release number, this project has not yet been released officially so is still in development, which is why the second number increases, because that indicates each pre-release, and finally that last number which won’t appear in most releases will indicate a special release over the 'normal' file style release, which actually won’t be the typical standard actually in the far future, but that’s a (long) way off for now!

Pycraft's update plan

Pycraft will be continually updated for a long time yet. The next release, Pycraft v0.9.1 will not feature as a (.exe) release but only as a code release, it will feature some small UI changes and some larger code restructuring and reprogramming, most of this will go on behind the scenes and won't result in much of a change for the average user, then Pycraft v0.9.2 will include changes to the 3D space, and thus will continue for multiple releases to come, Pycraft will now updated gradually, not all in one go, however (.exe) releases will likely only occur at major releases like the upcoming Pycraft v0.10!

(.exe) releases

Right time to tackle some of the confusion behind the (.exe) releases that will now be a feature of all main releases. Now when installing and running the (.exe) release its actually much, much easier to do, you just have to download the file attached and simply double click on the file to run it, typically the file will be downloaded to the downloads folder on your computer. The project might take a second or two to appear to start to do something (as everything it requires is loaded) then from there it will work without having any modules installed, any connection (like ALL other releases) or any extra downloads required, its all-in-one for much easier use, and this isn’t an app that installs anything onto your computer outside of the file so to remove you simply have to delete the 'Pycraft.exe' file. Simple!

The Planned Storyline

In Pycraft the plan is that you will start at sea on a boat, there you will learn that you have left your home on a separate island to find work and safety on this new one, when you arrive you are shown to your room and the next day join a small groups of trainee knights, each training to be part of the Royal Guards system that protects the island from the dangers on the island, you quickly rise in rank as your skills shine until one day all your skills are put to the test. Will you follow through? Well, you don't know yet, I've got to make the game first!

Other sources

I have started writing an article on medium which is released at the start of every month, this compliments the weekly updates that are posted on my twitter profile, it would be greatly appreciated if you wanted to check it out here at this link: (link.medium.com/Mhqd8qIAhjb). And recommendations and feedback are, as always, greatly appreciated, a lot of time and work goes into making this happen!

Final Notices

Thank you greatly for supporting this project simply by running it, I am sorry in advance for any spelling mistakes. The programs will be updated frequently and I shall do my best to keep this up to date too. I also want to add that you are welcome to view and change the program and share it with your friends however please may I 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 I can improve my program, it will all be much appreciated and give as much detail as you wish to give out. BY INSTALLING THIS PROJECT ONTO YOUR COMPUTER AND RUNNING IT I; Tom Jebbo DOES NOT TAKE ANY RESPONSIBILITY FOR ANY DAMAGES THIS MAY CAUSE HOWEVER UNLIKELY, AND YOU AGREE TO HAVE EXTERNAL MODULES INSTALLED ONTO YOUR COMPUTER (WHEN NOT CHOOSING THE RECOMMENDED EXECUTABLE VERSION) ALSO, OF WHICH I HAVE NO CONTROL OVER, PLEASE USE THIS PROGRAM RESPONSIBLY AND DO NOT USE IT TO CAUSE HARM. YOU MUST ALSO HAVE PERMISSION FROM THE DEVICES MANAGER OR ADMINISTRATOR TO INSTALL AND USE COMMAND PROMPT OR TERMINAL. NO DATA THIS PROGRAM COLLECTS IS STORED ANYWHERE BUT, ON YOUR DEVICE, AND AT ANY POINT NO CONNECTION TO A NETWORK IS REQUIRED. THIS PROGRAM DOES NOT SEND ANY DATA TO THE DEVELOPER OR ANYONE ELSE ABOUT THIS PROGRAM. Thank you.

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.