Pycraft progress update!
Tags: programming, python, gamedev, opensource
Published: 2023-02-21 18:56:47

Hello there everyone, its time for our weekly programming update for Pycraft, and this week has been a very interesting week as we managed to condense 3 weeks of work into a single week and have significantly pulled forward our unreleased planned completion date for this slight side project to the development of Pycraft v9.5.7!

For those unfamiliar, last week we started, what we are calling a 'side project' to the planned development of Pycraft v9.5.7, meaning that we have diverted slightly from what we were originally planning to do in Pycraft v9.5.7 - which is currently meant to be working on improving the installer - to roll out some changes we had been planning for a while, but hadn't decided yet when to implement them. This all came in light of a discovery we made recently in Pycraft that allows us to significantly improve the way data is shared through Pycraft. We talked more about this last week, so for more information, we would recommend checking that out as we will be extending the work we started in that progress summary for a few weeks still.

However, those few weeks we still plan to be working on this are now much shorter than we were expecting due to the progress we made this week. Towards the start of the week we were continuing with the work on converting the main menu programs for Pycraft so that they followed the new structure, and now having done that we were able to move on to the utility programs for Pycraft. For those unfamiliar, the main menu programs are almost exclusively focused on the front-end design and mechanics of Pycraft, so the things you see and interact with onscreen, and the utility programs are what add functionality to those onscreen elements and are the driving force behind Pycraft.

Due to the nature of these utility programs, which we added in the 2nd large-scale restructuring of Pycraft, they are called often repeatedly by different areas of Pycraft, sometimes up to hundreds of times. This is excellent as it shows they are doing what we had planned, they shorten the length of Pycraft by taking sections of larger programs and putting them into their program so that they can be called repeatedly. Whilst this was added years ago now, we are still familiarising ourselves with the advantages this gives us, and in Pycraft v9.5.5 we made many major changes to Pycraft's overall structure, and changing the way utility programs interact was one of them.

In Pycraft v9.5.5 we split the parameters taken by the utility programs out from 'self' which was the variable containing an instance of the registry that was needed by every section of code in Pycraft. This significantly improves readability, at the cost however of line length. But the utility programs are also where we will be able to make large-scale changes very quickly to Pycraft, something that we proved this week.

Because the utility programs for Pycraft are called so regularly, changes to one utility program can affect multiple times it is referenced. Last week and at the beginning of this week, we were changing the way that the main body of Pycraft called the utility programs, and now we are changing the utility programs to correspond to this. Pycraft's source code will not run unless we make these changes.

We have been very focused on making these changes over the past few days, and this has led to some significant results, as over a few days we went from Pycraft barely booting to getting as far as the startup animation for Pycraft, an immense achievement given that so many of the utility programs needed to get that far are re-used, so whilst Pycraft isn't finished still, it is much further than we had planned to be, which is excellent. Now, this progress is also possible because where possible we are avoiding changing the actual body of the source code, we are only looking to change the way it interacts, meaning that this process is much faster than the development in Pycraft v9.5.5.

Unfortunately, we are expecting progress to slow, simply because whilst lots of utility programs get reused, there is a lot that doesn't, so changing these will result in a much less significant - but equally important - improvement in progress.

We hope that you have enjoyed this next week of progress on Pycraft, and whilst our progress to show for this week may seem strange, here are some images taken from Pycraft for this week:


![Pycraft's start-up screen](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/948bof5ulzpyfg4cdvad.png)


![Pycraft's home screen (the bottom banner isn't finished yet)](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/54n096712pbesd8nih2i.png)