Pycraft Progress Report
Tags: programming, python, gamedev, opensource
Published: 2022-05-29 18:40:48

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

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

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

* You can also find the latest documentation for Pycraft https://python-Pycraft.readthedocs.io/en/latest/

## May the 09th – 2022
My network connection was back today, after a bit of a shaky start, and this means I'm now exactly one day behind on the medium and Dev articles, so instead of releasing the article on Dev today, I've made and published more changes to the medium article for the final time, there were some broken links and badly explained areas, but that has been significantly improved and you can find the article here: (medium.com/@PycraftDev/ho…) And this will be published on Dev tomorrow, I've made a large amount of the project migrated to Dev, after all I was working on this on Saturday too, but I need to make some final changes and tweaks because the text formatting is completely different, so the Entire article needs to change. But today I've also been busy looking through the archives I've found the earliest published version of Pycraft, and surprisingly it's actually not in too bad working condition, so I fixed it up and wow we have made a lot of changes since Then, and it raises the question, do we want to see me showing the different GUI designs before and after style, although what is interesting is that the game engine at this stage is more developed than later versions before the switch to ModernGL, because We were so limited on performance! Let me know if you would be interested in this! Tomorrow, I plan to release the Dev edition of the article and also make small changes to Pycraft, there are more bug fixes to do and the next update may be entirely bug fixes at this rate!
## May the 10th - 2022
Today I absolutely slashed by to do list for today and tomorrow nearly in half, I published the article on Dev, as well as sharing that news on discord and twitter, then I also merged my older Animated skybox program with Pycraft, there are a few rough edges, the actual animation it's self is a built in one from ModernGL that in most cases looks great (although not designed for this, I'm making a bespoke one) and some of the textures do not scale Or rotate accordingly, since I shared a preview earlier this afternoon I’ve made numerous changes and improvements, although Pycraft isn't quite as performant as it was before I added both the skybox and shadow mapping I believe this is because I've not Yet made much in the way of changes to the shadow mapping programme to make it more performant, and it really needs the optimisation. The new animated skybox loses around 20 FPS in performance And I will be making more improvements and optimisations as well as getting that sunset animation working, as that will be what the animated skybox will display, it's all currently synced to the in-game time, it just needs the new resources which I'm working on tomorrow I had planned to work on this tomorrow, but the Dev article was finished quicker than expected! I'm very close to a new Dev release of Pycraft v0.9.5, there are still improvements to make and a basic weather function to still work on!
## May the 11th - 2022
Today was nearly as successful as yesterday when it comes down to Pycraft progress, the entire dynamic skybox implementation is nearly finished, but before we get into all the details and progress made, I'd like to say two things Firstly, I'll be splitting weather and time into two or more Dev releases of Pycraft, so that in the event that something goes wrong developing the weather implementation the time implementation isn't lost too, and to allow you all to check out the significant tweaks! Secondly, I'm going to be busy again at work from early June to late July as we prepare for the summer break, I'll be doing as much progress as I can up to that point, and trying my best through this period too, but just as a brief heads up there OK so what progress has been made on Pycraft today? Well, I've converted the entire day and night animation on the skybox from a single picture in a similar form to an old tape with images placed on top of each other, to a gif file, even with the gif compression which I'm Creating a solution to avoid the animation looks really good and makes a big difference to aesthetics, there is currently no additional effects, like stars, but that will be added. The same texture is tiled to all sides of the skybox so there are issues at times with the rotation of some sides, and with the top and bottom, but we are hopeful for a quick conclusion to that issue. I’ve also found fixes for the slow performance in Pycraft, firstly full screening the window gains an additional 100 FPS in unlimited mode, and the caption For the window was really slow and slowing down the FPS from a measly 500 from a previous of 650, and unlimited mode is a mode where we do not limit the FPS of the game engine (which is dangerous but necessary for performance testing) this feature is going very well And although I can't deliver a set time to completion, if we are as successful as we have been recently we will be close to finishing this feature soon! I'll also be sharing the result after I've ironed out the visual issues.
## May the 12th - 2022
Another moderately successful day here today, not as successful due to my struggles to find a decent platform to make a gif from a series of pictures, I needed this because we store the stages of the skybox as one gif file instead of the 41 different pictures, it's a much smaller file size this way. So, we now have the ability to load the gif file and extract each frame and transition slowly between the day and night cycles. Some work is still needed in cropping the images as there are some rough issues around the edges and with timing, but the functionality its self is there, I just need to tweak the feature to make it all fit together properly as the sun makes two day and night cycles in the time it takes the skybox to transition Once so there is some changes to be made there.

Also, as of today we do not use a skybox in Pycraft, it’s a bit of a misnomer, we now use a sphere, this means we only tile the texture once and avoid all the issues around the images not rotating properly and also Having separate images for the top and bottom. We have yet to see if this has any performance advantages, but Pycraft, with the dynamic skybox* and shadow mapping falls well into the 650 FPS range in most scenarios, so there is plenty of headroom! 
## May the 13th - 2022
I have written very little code today, but have tweaked the mathematical formula for organising the skybox and sun path in the sky, I've shared a video a few minutes ago at the time of writing and I'm now going to go into more detail about the Evident issues currently present.

Starting of course with some fact, a full day and night cycle is 20 minutes, 8 minutes of daylight, then a 2-minute sunset, an 8-minute night and a final 2-minute sunrise.

In this time, the sun will do one loop Every 10 minutes, because we use the same sun and moon for day and night cycles it needs to move at twice the speed so we can get a sun and moon, which we will colour differently and adjust the light levels accordingly Additionally the entire skysphere's animation is finished, although I've been improving the design, the timings need to change, to follow the 8:2:8:2-day cycle we mentioned earlier. The process will require some of the more complex maths in the project and is currently proving Challenging. But I've not had much time to experiment yet.

I’d also like to say that Pycraft v0.9.5-3 will be featuring many big fixes and the time implementation. Pycraft v0.9.5-4 will feature changes to the texture based on the relief Then Pycraft v0.9.5-5 and onwards will focus on weather, although currently how I plan to do this is unclear. But I look forward to the experimentation! Although I'm all caught up here so I'll be able to continue to focus on Pycraft now.
## May the 14th - 2022
Pycraft progress update time! And today was focused mainly on mathematics, performance and bug fixes. The mathematics was in the form of linking together the skybox and sun to the timing we are aiming for the game Which is an 8 minute day, 2 minute sunset then an 8 minute night and a 2 minute sunrise in the 8:2:8:2 structure, meaning one day and night cycle is 20 minutes, this may change, and isn’t too difficult to do so depending on how we feel based on playing the game at a More finished state, the time functionality is coming along nicely, there are more options and changes we still want to change here though, more keyboard functionality for developers, for now we have introduced the 'I' key that when pressed with Dev mode enabled Allows you to move around at a much faster screen for faster testing of visuals. There are some bugs still and the changing of the sun to the moon isn't currently happening, that's tomorrow’s goal, and the skybox could still do with some visual improvements but most of these are minor changes, much like the bugs that I spent today fixing, more on the installer and game engine! We are close to a release of Pycraft v0.9.5-3, but at the same time there is still a bit of work to be done here, the game engine is looking fantastic.
## May the 15th – 2022
I discovered (and fixed) a few issues in the skybox changing of Pycraft, and also fixed the captions for the game so now the way time is displayed in game is more sensible on the caption, so instead of displaying for example 3 minutes and 190 seconds It now displays 3 minutes and 10 seconds instead. This then led me to identify another issue where the skysphere, which I reprogrammed the timings mechanism for now, would not properly transition between day and night after the first 20 minutes is up, this now has been Addressed and in working currently on linking the sun and the skysphere together in game.

I’ve also today spent some time bringing the earliest saved instance of Pycraft back to working condition, and started to work on a side by side comparison of each menu of the project Which I'll release gradually over the next few weeks, progress today was not too exciting, but the exciting news is that we are nearing an end to Pycraft v0.9.5-3's development and testing and ready to move onto Pycraft v0.9.5-4 which will either be mapping the Texture of the ground differently based on its Y axis, or the early implementation of weather, featuring sounds, transitions, timings and potentially rain/snow particles and changes to the reflectivity of the ground based on how waterlogged it is, although that's a Lot and may need spreading out a bit!

Thanks for reading folks!