Full notes
Full Push 3D update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Events
- Balance
- Gameplay
I'm really feeling Captain Picard's quote this month, and as a solo-developer also working a full-time job, some months are just really difficult to find the time to dig into a really large problem in the tiny bites of free time one gets.
Algorithmic Complexity
I started out the month working on a Computer Opponent algorithm which fit more traditional algorithms that chess programs and the like use. However, while I got it working relatively quickly, getting it to be performant is hideously difficult. For example, in most chess algorithms, you can usually constrain the number of possible moves one can make down to something that results in an opponent putting up a good challenge by being able to "see" approximately 10 turns ahead, a number which is seen as equivalent to how a really good chess player could see developing strategies almost presciently. In Push, I could only get about 4 turns ahead before I couldn't generate a move within the typical minute-default time limit. The issue with Push is that almost the whole board is "free" for a decent chunk of the game, meaning the number of possibilities per turn is vast, as compared to chess where the initial moves are limited to pawn movement and the knights, followed by limited moving as those shift around. As much as I tried to optimize, traversing that possibility space was mind-bending.
As the month drew on, and the code became more and more unreadable and indecipherable (akin to a text designed to summon some ancient unknowable mechanical god), I pushed my chair back, and decided to take a step away and re-assess the possibilities. This typical chess-style algorithm wasn't working.
Machine Learning Agents
In the back of my mind, I was passively aware of the recent trend in machine learning, and the successes one could find with it when "Training" it to perform specific tasks. Even more success can be found in environments where there are a known set of discrete actions one can take, much like this game. While I am incredibly wary of training sources for machine learning data sets, and care a lot about ethically training these "machine learning agents", I decided to at least educate myself more in the space enough to make an informed decision.
For the latter half of the month, I have been learning as much as I can about Unity's Machine Learning Agents, and training something that would not only learn to play this game, but end up quite fearsome by the end. Most importantly, it would likely be incredibly performant, and be able to make moves within the same time constraints that players have.
So far, I've noodled on a tic-tac-toe game, and pored over some machine-learning version of "Match-3" style games, and I've even taught cubes to balance a ball on their top surface!
The Direction for March
It's obvious, therefore, that as I am learning a whole new avenue of modern computer science, this will take more time. In March, I hope to have arranged the game in such a way as to allow for training of Machine Learning Agents, a process of which I have already started.
I would like to get something trained, watch it play (or even play against it), and then get a release out, as it has been a while since an update.
Thanks, dear reader, for your patience, and your interest in this game! I hope by the time this new direction has borne fruit, we will really have something super fun.
Here's to continuing to committing no more mistakes!
Source
Changelog.gg summarizes and formats this update. How we read updates.
