Shadeshaper is a short puzzle game with 3 levels. Hold left click to place the light. It can't be near tiles, and will glow when the placement is valid. Once there is a valid placement, use A and D to move, and space to jump. The goal is to reach the green platform without touching the light. Press R to restart the level. Have fun!

Pygame and shapely are the required packages for this game. Use `pip install -r requirements.txt` to install them, or feel free to use another method. Python 3.11 is also technically required, but this can be bypassed by directly running the `main.pyw` file instead of `` (should work for most versions of Python).

Try making your own levels in the editor (``)! Left click to place tiles, middle click to place goal tiles, and right click to place the light. Use M to save the level. For now, the player position needs to be manually written in the .lvl file by replacing one of the tiles with P.

Please report any bugs/issues you have with the game in the Python discord! Feel free to mention/message me (ncro#0259).


Presented by siddhartha13

Give this entry an award


Ratings (show detail)

Overall: 3.5
Fun: 3.3
Production: 3.2
Innovation: 4

Respondents: 13


File Uploader Date
shadeshaper v0.0.1 | added requirements.txt
ncrohawk 2023/04/02 19:10

Diary Entries

Shadow casting implementation

In order to create the shadows for the player to move through, I needed to implement a shadow casting algorithm. This video explained it quite well, implemented in C++. I decided to give it a shot, and although it took a while, I got there in the end. Overall I'm pretty happy with how it turned out, but I haven't figured out how to apply the final optimization step yet, I'm still working on it.

Below is a demonstration.

Shadow casting demonstration for Shadeshaper


Editor changes + some levels

I added some features to the level editor and I made a few levels, one of which being the title screen. The green platforms indicate the 3 levels (the last one is a bit tricky to get to) that I want to have for the first release, of which I've made 2. Other than that, I just need a way to transition between the levels once the platform is landed on, and a collision system for the light so that the player dies when they come into contact with it. After I finish that, the base game is done, and I can move on to a bit of polishing before the final release.

Title level for Shadeshaper

Add a comment

The end

Pyweek 35 is over, and I submitted my game a little while ago. It was a wild ride, and I'm glad with what I've learned and created. Again, good luck to all participants, I can't wait to test your games! Thank you to the amazing organizers for giving us this opportunity. Until next time!

Add a comment