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

This is transferred roughly weekly from my Twitter profile (here: https://twitter.com/PycraftDev) to here on Dev! This is for the week 02/04/2022 - 08/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 02nd – 2022
There are times when I wish I had a clone of myself, or a larger team, and yes there are a lot of helpful and fantastic people collaborating and helping out with Pycraft, which you can absolutely do! But I would never dish out boring work to them and the medium article, as well as updating the folks at Dev, would fall into that category exactly, it's not boring as such, it's nice to reflect on the progress we have made, but takes a long time to do, but I do to build and inform the community, I have a large Team at work and we can make quick headway into a challenge, and working on such a large task single headedly takes a lot longer. This medium article is so nearly complete, and it'll be out in a few days’ time, but reminds me of how quickly We can make progress, and the oppose too in some cases, I'm not a great writer :)

In other news I've been trialling making dynamic skyboxes in Pycraft, we have two approaches, we make two skyboxes and use transparency to switch between them, or we make a new gradient Texture in an array, and blend it together to make a cool effect, this is the style I'm looking to do, but does make development very complex either way and I've spent a lot of time trialling and changing features in Pycraft over the last few days too!
## May the 03rd - 2022
It’s been a very busy and productive day here, I need maybe one more day on the medium article to get it finished, then I'll be releasing that on Wednesday (tomorrow) on medium, then on Thursday on Dev (I have to reformat the entire article) And finally I'll be sharing links on discord and here on twitter providing access to the new articles. Then (I'm not done) I plan to update the folks at Dev with all the twitter news of late, then I'm back to programming, and I've made many changes already I've tweaked the sun movement across the sky, as well as adding a range of new features for aiding development, fixing a range of bugs and experimenting with dynamic skyboxes, although that's going to be a nightmare to do, I look forward to the challenge.
## May the 04th - 2022
It’s been a VERY busy afternoon here, today I've finished writing up the medium article, fixed many, many bugs with the installer (nearly all are graphics related, nothing that renders the installer unusable or worse) And at the same time I've also made a small project to automatically extract files zip files I download, which I have called AutoExtract.

AutoExtract is the 5623rd project on my PC, not including any work from 2009 and earlier and any at work. It is 12 lines long and every 10 seconds it scans the download location on my PC for any zip files, then it extract them to a new file and deletes the original, and it's really fast, it's considerably faster than Window's built in file extraction utility, but slower than 7zip, with Minor performance testing to come. This will be available on GitHub at a later date as a project and compiled so you can run it as an EXE. But you might wonder what this has to do with Pycraft, well I don't have much time to program each day, 5 hours at most during the week, and I spend on average more time waiting to extract files with windows than I do waiting for them to download, and I regularly download older revisions of Pycraft to search for bugs and to trace and map out features and any bugs So this means that we save a bit of time there.
In other news I've also finished the medium article, although I want to do a final read through, and consolidate some areas that are probably unnecessary, and then tomorrow that's going to go live, I've also spent today starting to format the medium article for Dev too!
And finally today I've also fixed a lot of visual bugs with the installer, and one issue loading a file after the install, this is general maintenance and also because as I work through the medium article I'm also Going through the project, with more focus on the installer, fixing bugs, and as the project ages we can tweak features and fix bugs that may not have been present at the time of development, so this is significant as it means I'm close to finishing this long process, then I have a very complex feature to do, adding a gradient in GLSL to a skybox, using the original GLSL file, this is something I'm relatively familiar with, I work with DirectX at work, and I've not used OpenGL outside of Pycraft since 2015, so there is a bit Of a refresh needed!
## May the 05th - 2022
Wow it’s been a busy day, but I did release the medium article, I needed a bit of tweaking and I'll continue to make small changes as I get it prepared for Dev, which I'll be doing this weekend, but not Friday, I need a break from writing To write code because it’s been neglected a bit and writing the article has given me ideas for new helpful features and bugs that need fixing, but I've been very busy today, I did a bit of feature tweaking and terrain design, I've got a lot planned for Pycraft v0.9.5-3 And it's near the end of the Pycraft v0.9.5 development cycle, I've got a bit more to do with level and terrain design, but I've got a good idea of what to make! I'm looking forward to get back into programming, the Dev article will be released around the end of the Weekend!
## May the 06th - 2022
It’s been a nice and restful day here a change from the article writing, I'll be formatting that and making some improvements for Dev tomorrow, but then today I've not been having a break from programming I've been going back through some archives and found an old CD with some old OpenGL projects in C from between 2005-7 and whilst the programming language, and implication of OpenGL are different, the GLSL files are similar, and on there I have Found some files that will reduce development time of Pycraft significantly, one that makes animated skyboxes so we can continue our quick implication of time into Pycraft, and another one that will blend textured together based on their axis Allow me to explain, if we have terrain that is fairly steep then we can use the grass texture at the top and bottom where it levels off, and a rocky texture on the steeper section, a bit like this: (thanks @alphr) ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/omguzyvsfmrzq1e8te4v.png)
Compared to the latest images from Pycraft (attached below) where you can see we use the same texture regardless of the incline (although there is shadow mapping!), these are two features coming to Pycraft v0.9.5 and are partly related to the end goal of adding in time ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iodfrxdi23vngrv2eafr.png)
  And also improving the visual appearance of Pycraft, now I've just got to see if I can adapt Pycraft to support this! 
## May the 07th - 2022
Today I have made numerous changes to the medium article, mainly improvements and some better explanations here and there, I'm not quite finished so that will go live tomorrow afternoon once I've finished converting the article over to Dev Which is when I'd likely find some issues. That's very nearly finished, I'm up the evening, uninstaller section so am close to drawing that to a close. I've also been spending time profiling the code, and the two slowest sections of the game engine (and this was a nightmare to profile) but I can conclude that the last section where we swap the OpenGL Buffers, and also where we compute the shadows for the shadow map, those are the areas that are the slowest. Additionally, I've been experimenting with the new GLSL files I've found and am truly excited for the next few weeks where I implement these shaders!
## May the 08th – 2022
Its Pycraft progress update time, and it will be Pycraft progress today, after approximately 11 am today my Internet connection was pulled "for necessary maintenance" and has been offline since, I'm sharing this exciting news with you through My mobile data so hopefully that sends. But that means that today I've had to change my schedule, I've been working on the skybox redesign and have very nearly got day and night cycles working to a level where I would be happy to share it, but I've also spent Today benchmarking my new AutoExtract utility, it’s as fast, if not faster than 7-zip in most applications when windows security decides not to get in the way (it seems to want to check the process to make sure it's behaving properly, which it does!) and is working Perfectly, which I've used today because I decided to pull up an old archive of the first recorded version of Pycraft, and wow how far we have come, the graphics are much improved, features have been polished, and most importantly the game engine actually works now Although at the same time there are a lot of menus that are very similar, the settings menu has seen little change since then, over 2 years ago! But today I've been focusing on the skybox implementation and that is going well, and I'll be sharing that once I've got a few small issues and the timings ironed out!

Thanks for reading folks!