Pycraft Progress Report
Tags: programming, python, gamedev, opengl
Published: 2023-01-31 18:21:00

Hello there everyone, its time for our weekly progress update, and this one is a bit different, as in light of the recent release of Pycraft v9.5.6 we have had to combine the one from the week beginning the 16th of January, and the one the week beginning the 29th of January as we had to push the release of the first article back so that we could prioritise getting the latest version of Pycraft out!

Now we start off this article by discussing the testing of Pycraft v9.5.6, and we have decided that we are going to make a slight change to the way we test and make improvements to Pycraft. In Pycraft v9.5.5 we spent a very long time thoroughly testing all of Pycraft and the installer, this was because Pycraft v9.5.5 was a much larger release than we would expect for a developer version of Pycraft (if we were to rate our usual update size as a 5 out of 10, then Pycraft v9.5.5 was comfortably a 7 or 8) and as such, because so much had changed, almost everything needed testing.
Moving on then from that we are going to be changing our testing strategy so that we test the features that we have changed in a developer version of Pycraft, and the systems that use that feature. In addition to this, we will be fixing any bugs we find as we go, which is something we do as we make changes to Pycraft anyway. This has been put in place as Pycraft is now getting rather large, and sitting mid-way through the development of Pycraft v9.5.7, we are currently at a total of 22, 343 lines for the source code for Pycraft, and testing every single line would be incredibly time consuming. For comparison, we spent longer testing Pycraft v9.5.5 than we did on the majority of the work on Pycraft v9.5.6!
Naturally, the final major/minor (but not developer) releases of Pycraft will still have extensive tests and performance analysis carried out, so that we can make optimisations for slow areas of Pycraft, and fix all the bugs we can that we have identified.

Now we have been also putting in a lot of time on the documentation for Pycraft, as we continue with the development of Pycraft, this is because we have a goal that for every release (major, minor or developer) of Pycraft we must update the documentation with the changes to any areas of code that we have worked on, and an additional 5% of other sections of Pycraft that we haven’t yet written documentation for. This applies exclusively to the Module Breakdown section of the documentation.

However we have also been very busy filling up other areas of the documentation with useful information and content, and managed to finish the Introduction and Formatting guide before the release of Pycraft v9.5.6, and have also transferred over the about section from Pycraft’s GitHub repository here: https://github.com/PycraftDeveloper/Pycraft and have plans to add in the other areas too, like the update timeline and sound preview, but those will be added in Pycraft v9.5.7 because they need work done on them before they are release ready.

Now, we have been also making some pretty significant changes to the installer for Pycraft v9.5.6, as we have equally larger changes planned for Pycraft v9.5.7, which will be when the installer for Pycraft will become completely separate from Pycraft, and therefore have no reliance on any code from Pycraft its self, making updates easier to do in future for Pycraft through the installer. In light of this major planned change, we have made the decision to change some of the mechanics of the installer behind the scenes so that this change in Pycraft v9.5.7 will require less work to the core structure of the installer, although we have plans to make some pretty large changes to the entire installer based off of the latest changes we have introduced to Pycraft. This therefore meant that we had lots to do in the installer, but because this was prior to the launch of Pycraft v9.5.6, we were limited in what we could do, and what we wanted to do given that there would be so many major changes coming in Pycraft v9.5.7!

Immediately prior to the release of Pycraft v9.5.6, we shared a lot of interesting game mechanics and ideas we have for Pycraft when we start work on the game engine. Now some of these features are yes, very far way still, but some are much closer than you might think, and keep an eye out for the latest game mechanic previews on our twitter account or on Pycraft’s repository when we have finished compiling our list!

Now, moving onto the second week of work, we had just released Pycraft v9.5.6, and immediately started work on introducing the previously prototyped features into Pycraft. For those unfamiliar with how we work on new releases of Pycraft, as a group we spend around half our time working on features that will be coming in the next version of Pycraft, sometimes these features have been worked on for a considerably longer time than that, for example collisions is something that we first looked at adding to Pycraft nearly two years ago, and since then we have considerably refined the implementation, and plan to add it into Pycraft v10! By doing this we can significantly increase the quality of the features we add to Pycraft, as we have had time to better prefect them, and remove any ideas that may not be in our best interests for that release, all whilst significantly cutting down on the time taken to work on that version of Pycraft!

Now, on the subject of work on Pycraft v9.5.7, we don’t only add or revise features in Pycraft, sometimes we remove them too, and the benchmark system is no different. In the testing of Pycraft v9.5.6 we discovered a bug in the benchmark menu that prevented the process from completing successfully, with this in mind we made the decision to lock the user out of gaining access to the benchmark menu in Pycraft v9.5.6, and then in Pycraft v9.5.7 we have started going about the process of removing this flawed section of Pycraft, which is actually as planned as in Pycraft v9.5.8 we plan to completely redesign the entire benchmark section for Pycraft, and we need to clear up the previous attempt at this in Pycraft v9.5.7!

Now, with the benchmark section for Pycraft now completely removed from Pycraft v9.5.7, we have started working on adding the first new feature to Pycraft v9.5.7, and this is of course the new pop-up design for Pycraft. These pop-ups are going to replace in most situations the Tkinter message box windows that we have used previously, and because they are built into Pycraft, they should be better themed and more manageable than the alternative. Now, we cannot use this new pop-up mechanic in the event that Pycraft was to crash or develop an error, simply because we do not know what caused the problem, and therefore keeping our method of detecting and reporting crashes to the end user as simple as possible is crucial in order to make sure that everything works as intended in the event something does go wrong.
Now these new pop-ups will occasionally include widgets that we first introduced in the new settings menu, and will be used to: Ask the user for permissions, display minor errors and to display additional content to the user when a new menu is not required. This will not replace the messages that appear at the bottom of the home screen, and will instead build off that concept. These pop-ups can appear anywhere in Pycraft’s 2D engine, however they will never appear in the game engine, or anywhere in the 3D engine to avoid interrupting something important.

Now as Pycraft grows in complexity, it can be easy to overlook some really basic expectations for any application really; help.
Lots of applications and programs will come with some form of help guide that will help you to fix problems that cannot be necessarily fixed through code, for example if there is a problem with how Pycraft interacts with your graphics driver, or with actually installing Pycraft. There have been times when we have faced problems like this with Pycraft, and want to use our combined knowledge of Pycraft, and other common problems when running code to help user’s fix more common problems. This does not mean that we won’t help out if we need to, just let us know if your having problems, and if we think we have overlooked something, then the help section for Pycraft’s documentation (in versions 9.5.7 and newer) will be updated regularly with the latest information!

Now, in two weeks, lots has happened, and admittingly a large amount of it has been admin and documentation related, but we have got some new content to share as we begin work on Pycraft v9.5.7, and expect more as we continue to add new features!


![Pycraft's new update notes pop-up with temporary text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n3wbk9d2hu35yq1dyabi.png)


![The FAQ section of Pycraft's new documentation](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9rujc1c6twcx7e3swqei.png)