The goals for this project were simple. I wanted to make a small-scale, polished puzzle game.
Order of Operations consists of a series of levels in which you slide conveyor belts and spin robot arms to create the most optimized path for boxes to reach their loading dock. The gameplay is an evolution of the Unblock Me or Parking Panic style of puzzle game.

I decided to approach development and design differently with this project. Instead of thinking up a concept and then working the art around it, I started with the art, a fantastic asset pack from kenny.nl, and thought about what games would suit that. After working through some initial ideas, I realized that the style and dimensions of the conveyor belts would make for a perfect block-sliding puzzle game. Additional mechanics, such as the arms you see in the game, came as logical next steps when combining the asset pack with my idea. Using this process, I was able to achieve a working and polished mvp quickly, and start playtesting right after.

I am fortunate enough to have a group of friends who are willing to be playtesters for each other, so I took full advantage of that and started playtesting as soon as I had a working batch of levels. This was not only helpful for tweaking and honing the difficulty curve but also brought to my attention multiple quality-of-life tweaks I could make to help the game feel better. At each stage of development, I tested again with the same people, and then gradually reached out to new ones to test the whole game with fresh eyes. The game would not feel as intuitive and cohesive as it does without this process.

Two elements of the game I am especially proud of are the moves system and the dragging mechanic.
The moves system works by storing the initial and final position of a conveyor belt once it is placed in a new location. These moves are stored in a new datatype and then sent to a list. This list is accessed to update the move counter, undo moves, and reset the whole puzzle.
The dragging works by applying a force from the conveyor belt to wherever the mouse is along the axis that the conveyor belt is aligned to (which way it's pointing). The belt is then stopped whenever it reaches the target point. There was a lot of iteration to get it to this point, and I am very satisfied with the result.
What I Learned From Making Order of Operations
Order of Operations has become my favorite project so far, and one of the best things I've ever made, so I undoubtedly learned a lot from it.
Firstly, starting with the art ready to go in the form of an asset pack sped up the development and design process even more than I expected. The guesswork of blocking out game elements and estimating their dimensions, and then to have the task of finishing the art hanging over my head, is always a headache to deal with. Instead, I was able to solely focus on the design, as well as implementation. Having the art in a finished state from the start also helped with playtesting, as the testers didn't have to fill in any visual gaps. They can quickly understand the concept of the game visually, which then leads to better feedback.
​
Secondly, designing puzzles is very different from designing gameplay and systems, and I had to learn how to do it properly. A solution could feel so apparent to me, and even to one playtester, but take another 5 minutes to find. Reconciling all of these differences and creating a difficulty curve that works for as many people as possible was a unique experience. Rather than requiring mastery of a mechanic in the physical sense (get better at jumping or managing enemies), you have to teach an idea to the player, and then allow them to master that concept and how to apply it to future puzzles.
​