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

This is transferred roughly weekly from my Twitter profile (here: https://twitter.com/PycraftDev) to here on Dev! This is for the week 16/04/2022 - 22/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 16th – 2022
Today on Pycraft I've been getting Pycraft v0.9.5-3 ready for release, although I don't plan to release Pycraft v0.9.5-3 soon, I've got some stuff still to do, which I'll get onto in a moment, I've been going through and clearing up some loose ends Adding more elements to the caption in Devmode which is important for developing future features in game, especially to do with time. Additionally, the minutes and seconds now behave as expected, increasing to 60 then back to 0. Additionally, I've made more tweaks to the installer and am gradually preparing the installer for Linux compatibility, although this is still locked down in software, and will be for a few more updates as I prep that because I want to make sure it will behave as expected. Another thing to note is that only full releases of the project are fully Linux compatible, as changes may need to be made quickly in development and whilst we try to make sure we don't leave out this, more stringent measures are taken when we release the project in full. Finally, today I've also Been working on the final bit of Pycraft v0.9.5-3, linking the sun to the skysphere animation, this is to very nearly finished, once it has been there will be a release of Pycraft, although we are unsure how long this will take to finish, although hopefully not too long.
## May the 17th - 2022
Today's progress was in two parts, it started with having issues even trying to load the project, and the behaviour I was experiencing was very strange, eventually I narrowed it down to an issue I had within a thread of Pycraft This runs right at the start of the project, before a lot of the functions of Devmode are enabled, that assist in this process. What went wrong was that I had removed some files from the directory, mainly the old skybox previously, and forgot to update the Self-test module accordingly, this checks every time you start the project for the first time that day to make sure that all resources are in the right place, which they would not have been when I changed things around, and instead of delivering a message to the user Telling them that Pycraft is set up wrong, it would silently crash, and the behaviour was difficult to iron out due to it running in a thread. After fixing this issue, it prompted me to add Linux support to the new files that need loading, but also to go through and make changes to the self-test functionality, as well as the error handling utility, and go through Pycraft very carefully to make sure this doesn't happen again.

I’ve also today started to work on linking the skysphere and sun together, although not yet Finished, delayed somewhat by the other issues that day, I'm hopeful for a swift conclusion to that soon, taking a more mathematical approach! 
## May the 18th - 2022
It's Pycraft progress update time, I had actually no plans to do a write up today as I was not expecting to get much done, but I powered through all of the social messages I had received (they were excellent, it's great to engage with everyone!) And managed to actually finish the sun animation for Pycraft, something I'm very pleased about, it needs some minor tweaks, as do other areas of the project, but these are minor tweaks and bug fixes rather than major issues and features, and I'm pleased with how the Update has turned out. There are some issues still to fix before I share any more images of the release though.

Additionally, I'm going to be sharing comparisons with the latest version of Pycraft and the earliest version that I have, this I have started today with the home screen. But what I'll also be doing is writing a post at the weekend to go with that, showing some of the design features and fun facts about that GUI, because we have come a long way!

Also, I think it's important to mention now that the folks at Dev will be updated with all the progress since they were last updated when I finish Pycraft v0.9.5-3, and as will discord. I will be taking a break from programming to do that, and also to continue the medium article for May. I’d also like to say that I'm looking into a more Automated solution there!
## May the 19th - 2022
I've made some progress on Pycraft today, I'm still working out the sun implementation, I've decided I'm going to use a combination of modular arithmetic (which was recommended to me) as well as two objects due to the complex nature Of this design, we will have to objects, a sun and a moon, each will have its own unique colour and emissive value, this way we can provide more granular control over the day and night separately Improving the dynamic, this also helps to reduce the visual issues related to the current implementation, we pan the sun across the top of the sky, then when it goes below the horizon we teleport it to the start again, and change the colour from the sun to the moon And pan over again. I'll make a diagram to demonstrate this issue, but it has caused so many headaches, I think it is time we take what we have learnt and use that to create a new solution. We will turn one light source of we didn't then we would get many visual Bugs and it wouldn't behave as expected. 
## May the 20th - 2022
I am so close to finishing the sun and moon in Pycraft, it’s been such a lengthy journey, but with suggestions from the folks here (that was really helpful, thank you!) and my own knowledge of programming and mathematics We are very close to a solution, it's not great, but it's the best we can do, it involves having two models, a sun and a moon, this allows for greater customization for example with colouring and texturing the sun and moon, which will happen in A future revision, as will likely tweaks to the orbit, which I won't go into much detail about because its super complicated, but we have two objects, a sun and moon, we render only one at a time, and allow shadow mapping on only one object at a time, to make it Less computationally expensive. We also now have a slight change to the shadows, at night they get darker and harsher as there is less light, this adds to the dynamic, we now just need to get the sun rising in the right position and setting at the right time Which might sound like a lot, but all being well it should be a relatively simple job. I'm going to be a bit busy this weekend, but I'll do as much as I can, once we have finished this section of the update there is a lot to catch up on elsewhere! 
## May the 21st - 2022
I've finished the sun and moon animation for Pycraft, the sun and moon how reliably pan across the sky in the way I would expect with minimal visual issues, and the minor ones that can still occur are not too significant But there is still more work to do, I need to change the resource for the skysphere, I need to improve the blending of the gif, it's currently fairly low resolution and created clear bands, I'm looking to see if this can be improved easily, although this resource Is expected to change in future anyway, I also need to fix the very noticeable moment when the shadows switch from the sun to the moon, there is a clear visual jitter when this time is reached. The plan to change this is fade in and out the shadows at the start and end of the day, we already do a similar process and this will make a big difference to the overall aesthetic of the game. Other than this, the majority of the hard work has been completed and now it's mainly a matter of tidying up and making sure that nothing Else has deteriorated in the game, although it all is still looking pristine! There are some changes also to the model of the map we use, and the grass texture, neither are permanent and are merely placeholders as I improve the resources for the project and design the map! 
## May the 22nd – 2022
It was nice to, today not have a day entirely based around mathematics, instead we are now looking at how to improve the skysphere resource for Pycraft, the current design uses a GIF that is as uncompressed as I could get it huge shout-out to @ezgif_com for their excellent range of tools that made this possible, it was the best GIF creator I could find online by far, and is free! So, we will be using this to create our GIF, we use @GIMP_Official to make the different gradients for the sunset, we will be looking to improve the night scene entirely, so instead of purple it is darker with stars, then the rest can be improved but is not as much of a focus. We create individual scenes, 41 in total I believe, one for the day, one for the night And the rest for the transition in between, then we upload these images to EZgif where it is thrown together into a very high quality GIF file, we can also (and will) be using the built in editing tools to add a slight blur and any other additional effects So now we have a GIF file, this is alright, but you may notice, and I'll upload the current GIF at a later date, it transitions abruptly, but the game engine we have designed adds a smoother transmission to this, completing the effect. Once we have done this, Pycraft V0.9.5-3 is about really to go!

Thanks for reading folks!