Pycraft Progress Report
Tags: programming, python, gamedev, opensource
Published: 2022-03-23 20:03:06

This is transferred roughly weekly from my Twitter profile (here: https://twitter.com/PycraftDev) to here on Dev! This is for the week 14/03/2022 - 20/03/2022.

* You can find the latest release of Pycraft (v0.9.3) here: https://github.com/PycraftDeveloper/Pycraft

* You can find the latest developer preview of Pycraft (v0.9.4-4) here: https://github.com/PycraftDeveloper/Pycraft/tree/Pycraft-v0.9.4-4

* You can find the latest feature preview for Pycraft (v0.9.5-0) here: https://github.com/PycraftDeveloper/Pycraft/tree/Pycraft-v0.9.5-0

* You can also find the latest documentation for Pycraft https://python-Pycraft.readthedocs.io/en/latest/
_Although be aware there is a lot of changes occurring here._

## March the 14th – 2022
Today I took a break from the restructuring of the installer to focus on Linux, and in order to explain this I need to take you back a few months, I enabled virtualization on my server at home and installed windows subsystem for Linux, or WSL, this caused me huge issues, I struggled to keep windows stable, and although I managed to fix a few Linux related bugs in Pycraft at the time, it was a struggle to manage the constant system instability, this is likely due to the strange hardware configuration that I have, I've had good experiences with WSL on other platforms, but this wasn't the long term solution for Pycraft, particularly because I didn't want to risk damaging the system I have, so recently we retired an old Web server, and although from a server point of view it was old, from a home purpose it was still pretty relevant, and I brought this server from my own work place, and have been making changes and integrating it into my home server setup I didn't want to buy a new server for this, for a few reasons, 1 I already have a more than functional PC and I do not want to buy more hardware to build a second one, because I already have one and I try I reduce the amount of e waste, showing that old hardware can be re-used. I was using this PC for only testing Pycraft, I was building the platform in my normal PC. And also, I want to make the project entirely free to make, and the issues I've faced with virtualization are pretty unique, and you don’t need to buy a second system to develop apps. So, you could say I'm serious about supporting Linux, and I'm using Manjaro to test the project, and already I've found a few more OS linked bugs there that will be squashed for the release of Pycraft v0.9.4!

## March the 15th - 2022
Today I spent more time finishing off setting up and testing the project on Linux, there are a few bugs I've identified, and tkinter is an absolute nightmare to install, but aside from that the project doesn't appear to have many serious flaws and the issues I've encountered on Pycraft side, like the strange path/file loading issues, I'll fix, but the issues with tkinter installing might be more complex, if I can find a solution I'll make that public because I've been having a lot of issues there but aside from that, I've been working on the restructuring of the installer too, although progress has shifted focus slightly to supporting Linux as I've not had enough time yet this week to properly focus on the installer, I might have more free time this weekend though

## March the 16th - 2022
I'll be making two posts today, one, this one, which will be the usual report on the progress I've made on Pycraft, and the other is my current experience with Linux, which I'm using to debug Pycraft on a second OS so then, progress for Pycraft, I've fixed numerous bugs today, none currently related to Linux, for reasons you'll find out later, but several have been identified on that OS, I've also fixed the issues with sound playback of music on the main screen, traveling through some GUIs is causing the program to crash with sound related issues, and also I've cleaned up some errors and issues when switching between the Pygame and ModernGL windows when messages on the bottom of the display are shown this hasn't caused crashing as far as I'm aware, but I've fixed some messy error messages. This is some of a few bugs I've fixed today, and some of the larger ones on the list, the installer has been coming along nicely too, 2 sections now complete, 1 more to go! 

## March the 17th - 2022
Today I've been focusing more time on the installer, the uninstaller section has now also been restructured and is finished, one more to go but should be theoretically the quickest to do but I've also got exciting news, I've fixed the issues with tkinter and reinstalled Ubuntu, this is the Linux distro I'll be using to test Pycraft on Linux, and have already started today to add compatibility to that OS in windows file paths are specified by a "\\", however on Linux this changes to "//" which causes issues because now I have to allow the project to work out what OS they are running on and load the right path as according making this one of the first Linux dedicated changes for the project, and one of many bugs there that I need to fix, I've also got a bug with detecting mouse presses but the joystick support is fine, and also there are some universal bugs between sound loading and playback and certain buttons on the controller which are still causing issues, this will be resolved in the final release ideally and currently the installer is windows only, but absolutely will be gradually changed to allow Linux installs too so there have been a lot of changes there, and they are the larger issues, there are also some smaller ones that are getting addressed too. This is the final update of Pycraft v0.9.4 before we move on to the game engine focused development so I'm working to fix all the bugs and issues encountered since starting this stage of development, and testing everything to make sure it's working as expected, so this is taking longer than most other updates, but I am close to the release now!

## March the 18th - 2022
Today's progress has been slightly reduced as I rearrange my setup and make way for better speakers and a 3rd monitor, but today I realised, I brought some pretty expensive speakers and audio equipment 6 years ago, and wired up the left speakers to the right channel and vice versa, oops! Well, that's now been corrected, and I need the additional monitor real estate for my job, which I'll explain now: Back in my youth I ran a fairly popular hardware recycling brand with my father, since then that has closed.  But has left me with a few contacts, and now every 6 months I ask for an old, dysfunctional low end laptop (maximum budget of £250), then I repair it, and use the screen and remote access to run and test projects on it, I do the same every year for mid-range laptop in the £500 pound range, and a final laptop in the in excess of £500 pound range, these are all e-waste and broken, I fix them and use them for my own purposes, I've been doing this for about 9 years now, excluding the last ones for covid, instead I'd take a lot of the laptops, fix them and share them with society for a heavy discount to help out with the chip shortage, but I have a huge library of old hardware, and I run programs and tests on my programming work on them, the 3rd monitor would be allowing me more real estate for remotely accessing my PCs (through @RealVNC, thanks folk!), so I'll be running more tests in Pycraft on these as I have more time to do so, to fix bugs on a variety of different hardware and OS', so I'm sure you can probably guess what I've been doing today it’s been bug fix focused, and I've fixed even more bugs, some on Linux, but I don't want to focus too much on one OS so lots of the bug fixes have been pretty agnostic that I've fixed today, work on the last bit of the installer to restructure starts tomorrow!

## March the 19th - 2022
Today I have gone through my extensive to do list for Pycraft and fixed every single bug that I am aware of. I've also been working on the website for Pycraft that is currently not accessible, it's difficult to know what to share, I'm not a web developer, or have much skills in Web design so wouldn't know what to put, if anyone has any ideas then absolutely let me know and I'll do what I can, but now I'm going to go through all the changes and bugs I've fixed today to start with I've taken the old inventory sound, which was in an uncompressed file format and replaced it with a compressed alternative, this change reduces the size of Pycraft by about 8 MB, but I then decided to take advantage of the additional compression and share the full sound, instead of the first 5 minutes, so now the inventory sound is over 1 hour long and roughly the project is similar in size, this change was made available due to the change in loading music files in Pycraft to support compressed file types like (.ogg) although this is isolated to the music section, other sound files still use the uncompressed (.wav) format but are shorter in length, if people are interested, then I could support a compact Pycraft edition that is as small as possible for portable installs, but that likely will not happen until much later into development due to the added complexity of more projects to maintain, I've also been working on bug fixes and have completely added Linux support, although mouse issues still need addressing, Linux does not register mouse clicks for me in Pycraft, using a controller works fine though so I'll be looking into the issue there before the final release of Pycraft v0.9.4, I've also fixed the rest of the sound issues and the installer now supports Linux to the first screen, there are only about 5 lines that would need adapting for Linux support, but I'll likely make the additional support there available when I add in the repair section of the project progress is quick and the installer is very nearly complete

## March the 20th - 2022
Today work on Pycraft was focused on the installer and start-up section of the project, the installer now will not even allow you to modify or change your install if you have the project already installed through a different method or decide to transfer your project to another machine, the installer now checks for supported OS'. The project can run on any storage medium large enough, so you could install it on a USB stick and move it between PCs, the move to do this should never have needed to be made, the process should already have been locked down on non-Windows OS' but due to a small oversight the modify screen was accessible, this was picked up as part of the extensive testing the project is going through and on multiple OS', we have made the decision to do this because the installer relies on some windows based functions and some functions move files to locations that exist only on windows PCs, or may modify unexpected files, you can modify the installer yourself if you want to risk the install on Linux or apple, but there will be support there later on so it would be recommended to wait. I've also changed how the project starts up, with a progress bar for the start-up which although does not need it much now, unless you’re using a low powered system but will likely be used when the project begins to expand with music and 3D files as well as in code, so the start-up will be slower, although we will make it as quick as we can! This changes slightly now the start-up animation works, but that needed no changing (Thanks @Dogukan12732765 for that excellent code). There are also small changes here and there for Linux compatibility and more tests and bug fixes!

Thanks for reading folks!