Sticky Pi Challenge, being finished


Ok there it is, a finished product and finished developer. When I started this project a couple of years ago, I did not think that I would make it this far. The project was an on and off thing but it is something that I've learnt a lot from and after this I think I can call myself a game developer. At least in the same sense that a self-published author can call themselves an author.

This project was spun out of the idea that due to Pi being an infinite and irrational number without any repeating patterns, all finite information should be possible to find among the decimals of Pi. This means that any image or document will be reflected in a sequence of decimals eventually. People have even built theoretical storage systems based on this. From this I thought about how you could use this property in a game somehow. After some brainstorming that seemingly goes on in my head all of the time but especially before falling asleep I did think of an idea of having a procedurally generated platformer where the Pi decimals would be central somehow.

At this point I had not really done any game development at all, but I had worked a lot with JavaScript. A first attempt was done in a JavaScript framework. It did not get farther than a square being able to jump. There were also block involved but Pi decimals was not even on the table at this stage. I was never really happy and I went engine hunting to see what there was out there to use. I remember that I wanted to have something that I could use for multi-platform development and at that time Unity had become a big thing. But it just felt so big so I hesitated a bit before starting.

I did some tutorials and got started. I quickly had the squares in place with a squared sprite for the hero and a bunch of squares as the blocks. At this point I was using the built-in physics to move the hero and eventually the blocks.

At this point the idea was that each decimal of Pi would represent a certain action that could be either positive or negative. An example could be that the block could be a catapult, or that it could explode. A positive action could be that it could spawn a health point or a weapon of some kind. If you learnt the actions of the decimals the idea was that you could plan ahead when seeing the block.

Finally there was something playable. There were blocks, a hero in form of a square that could jump. There were some actions, mainly that the block could ascend, descend and also act as a spring. While it was exhilarating the game was not that fun. This is a tough realization to make. At this point I likely gave up and left the project, at least temporarily.

I think I left the project at least three times and let it rot for about a year before picking it up again. I guess I felt there was some potential there and I also felt that I had to finish this.

Picking it up again a year later I tried to analyze what the problems were, and one major problem was the controls. Unity’s built-in physics is not what you should use to control a character in a platformer. This is for sure the conclusion you get when googling and checking tutorials, so I went ahead and tried to implement a new character controller. I borrowed heavily from different tutorials and resources online to get what is in the game now. This made a huge difference.

Next step was to design a puzzle system that would generate puzzles. In my game that is basically the positions of the blocks and the associated actions. I defined a puzzle as a sequence of positions and some constraints on which position the preceding block must have. An example could be Block 1 - Highest position followed by Block 2 - Medium position. As the first block was on the highest position the preceding block must be of the second highest position or have an action that will lead to the block ascending. The character can only jump up one level or position at a time.

With this puzzle system I could define up to 40 different puzzles that could be combined depending on the difficulty level to create engaging gameplay that would not be the same from different playing sessions.

The next step was to start to create assets and sprites that I could use. This part is my weakest point and I have worked with paint, paint3D and Gimp to create the sprites in the game. I guess I intentionally made it look like doodles on a workbook to hide my poor drawing skills. Poor sprites or not it did wonders for the game. Suddenly it looked real!

At this point it was all about maximizing for fun, which I guess is the super-duper tough optimization problem for all game developers. Will it be more fun if I add more enemies? Fun for who? Who will play my game?

I have intentionally gone for the people wanting to maximize high scores. The game has a high score system albeit a local one only. The game is supposedly infinite as Pi is infinite, so it made sense to make it this way. The difficulty level will increase when you cross certain thresholds of PI decimals and the blocks will speed up and you will hit more difficult block puzzles and block actions. I found it challenging and fun but I'm not kidding myself thinking that everyone will find it fun. But I do hope there are people out there that will enjoy this style of gameplay.

I'm aware that I'm just adding another drop to the sea of games out there but for me it was about learning the trade and finishing the bloody thing already. Hopefully there is someone out there who will enjoy Sticky Pi Challenge and then it would be a huge bonus.

Files

Sticky Pi Challenge v1.0.6.zip Play in browser
Jan 18, 2022

Leave a comment

Log in with itch.io to leave a comment.