Shadow Knights Development Update: SKE Completed and GitHub Profile Automation Script Additions

December 01, 2025

The Shadow Knights Editor (SKE) is now complete and will be released together with the game.

As mentioned in the previous update, the editor wasn't built from scratch - I used The Pushing Point Editor as the starting point. However, I had to heavily modify the map renderer. The original editor used uniform 16x16 pixel tiles for each layer. For SKE, I wanted to display the actual sprites instead of 16x16 placeholders. This required rewriting large parts of the renderer because it relies on the dirty rectangle rendering technique to update maps efficiently.

Since the sprites vary in size, applying the same dirty-rectangle-based approach to the objects layer became significantly more complex. I did manage to update only the necessary map regions in the end, but doing so with the Graphics Device Interface (GDI) was challenging, especially because I had to handle transparency manually. There are still a few edge cases where it doesn't behave perfectly (for example, rotating a copied map segment containing sprites can clip them), but overall I got it working. The effort paid off: map rendering is still "fast" given the limitations of GDI.

Here's a screenshot showing the first release version of the editor:

SKE (Shadow Knights Editor)

In other news, I've expanded my Python GitHub profile automation script. I added a section that displays my top used languages across my public repositories (excluding forks), as well as a section showing my latest YouTube videos.

The top languages section includes a legend and an automatically generated SVG file that shows a stacked bar chart of used languages - similar to GitHub's own language bar. The data is retrieved via the GitHub REST API, and the latest YouTube videos are fetched using the YouTube Data API v3.

This was a fun challenge, though my first attempt at generating the top languages section didn't work on GitHub. I initially tried using HTML with inline CSS, but GitHub sanitizes it, presumably for security reasons, so the styling was removed. I ended up generating an SVG instead. I could have saved myself some time by checking beforehand whether GitHub supports inline CSS in README.md files - but oh well.