A game for my Final Computing Project at university
For my final computing project at Teesside University, I decided to make a game based around a mechanic which, as far as my research shows, has never been done before. The mechanic is based around the concept of Quantum Superposition, which states that, while unobserved, a single electron can occupy multiple different states and positions at the same time. This page contains my development log of the whole process.
Jan 23 2019
I started off creating a character controller script from scratch, so it had all the necessary variables, without bombarding me with unnecessary stuff. Perfecting the movement is key, because if it doesn't feel good and intuitive, it breaks the flow of the game. I decided to leave the main part of the superposition mechanic for the moment
Jan 24 2019
I implemented the main bulk of the superposition mechanic, allowing people to enter the quantum state, move themselves to multiple different positions, and collapse themselves into one single place. Building the character controller from scratch made this far easier to manage. The next aim is to implement the observers; external items like cameras, laser grids, pressure pads, etc, that when they see the player, they force the player to collapse into a single position. The gif on the right demonstrates this mechanic in more detail, with the player entering the quantum state, moving each replica of themselves into different places, and then collapsing to one of those places.
Jan 28 2019
I implemented the first of the observers, a basic detection laser that, as soon as the player crosses it, they collapse into a single position, meaning the core elements of the superposition mechanic are functional as of today. Currently, the observing laser works by detecting when a gameobject with a certain tag crosses its path, but wish to refine this so that it works via raycasting, meaning the player can use objects to block the laser. I also intend on using this type of view obstruction to work with cameras, but as soon as i've got everything working at a simple level, i can take the time to refine it.
Jan 29 2019
Making the camera observer was tricky, but pulled it off. At first, I intended to use the OnWillRenderObject method, but that proved to be too problematic, and also doesn't work unless the camera output is shown on screen. I took a step back to work out a better method, and decided to create a camera collision volume, use that as a trigger object, to detect if players are within the volume. This would work on its own, but doesn't take into consideration whether the player is obscured by some other object. Adding a raycast into the script fixes this issue, and the result is the player can now hide behind objects to avoid being seen by the cameras
Feb 05 2019
A terrible illness had me unable to work for longer than I had intended, but today, I was well enough to make more progress. I made a system where players can pick up items and move them about. This system also allows users to transfer items from one copy of themselves to another, and if the user should collapse out of the quantum state, only the current active state, or the one observed, will keep hold of the item they're carrying.
Feb 06 2019
Mostly testing and small tweaks to certain parts today. Knowing certain pieces of information, such as how far the player can jump, or how high, will be extremely useful when trying to make puzzles later. I also fixed an issue with the items clipping through the walls when being held.
Feb 08 2019
Buttons and pressure pads are now implemented, and can control the camera observers and laser fields. The button also has a timer option to allow for more puzzle possibilities. The pressure pad is currently experiencing some small issues, because although it detects when items are placed on it, and can even manage multiple items pressing it at once, it doesn't detect the player at all. Fixing this will be my primary focus for the next few days.
Feb 13 2019
The pressure pad now detects players, by using a simple, but clever trick. The pad has two BoxColliders on it, one ordinary one for detecting items, and a larger one as a trigger volume which detects players. Never before had I considered placing collision volumes and trigger volumes on the same object, and this outside the box thinking (Ha!) has helped fix this issue with the gameplay.
Feb 14 2019
I added a small GUI feature that highlights which state is currently active. This small detail will help a lot, as it means players won't accidently move the wrong copy of themselves when trying to solve puzzles.
Feb 21 2019
I made a simple slope block model which can be scaled to whatever size desired. Adding this in also made me aware of another problem, which was the player interaction with said slopes, particularly steep slopes. My original implementation of the player movement meant that the player practically stuck to slopes, and by continuously jumping, they could scale them. I spent 3 days trying to figure this out, but eventually managed to do it, so now the player can't go up slopes that are too steep, and instead slide back down them. I also fixed an alignment error with the active state GUI.
Feb 28 2019
I've been busy focusing on ensuring everything runs smoothly. I've not come across many errors in the past couple of days, except for a small bug where sometimes, one of the players will drop an item they shouldn't when collapsing. This took a bit of thinking, but I sorted it out
Mar 01 2019
I added in an automatic door, allowing me to separate puzzles off from each other. I also began working on puzzle design, starting with a simple starting area for the player. I ran into another major error with the pressure pad, wherein if the player collapses while standing on it, it essentially jams it open. It took a good while to figure this out, but I got there eventually.
Mar 05 2019
Over the weekend and monday, I sat developing ideas for all the puzzles, and today, I've implemented 3 of them. These initial puzzles are the simple ones, designed to teach the player how the mechanics of the game work, but without explicitly telling them how they work. Over the next 4 weeks, I'll add the rest in, and sort them in order of ascending difficulty. I also added in moving platforms, used for certain puzzles, and I had to fix the pressure pad yet again, but now it works perfectly, and has no issues.
Mar 07 2019
Two more levels built for the game, one of which was particularly big, and has so far taken the longest time to build. I've done some vigourous testing to make sure the puzzles are solvable, and can't be broken, and have a few friends who are willing to test it out. The intended amount of levels is somewhere between 15 and 20, so this means I'm between a quarter and a third of the way there.
Mar 12 2019
Made plans for 5 more puzzles, and implemented a 6th. Had some issues with the moving platforms, specifically when moving from side to side and having players or items on them, so I've had to redesign one of my puzzles to avoid this issue. I will try to fix this, but it has defeated me at present.
Mar 13 2019
After taking a night to try and figure out how to get players to move sideways with moving platforms, I've unfortunately been completely defeated, and have had no choice but to leave it. I have redesigned the only puzzle that was affected, and completed it, and another puzzle. Progress is continuing at a steady pace, and I should hopefully be able to finish the remainder of the levels by next week at the earliest.
Mar 14 2019
10 puzzles are now complete, with only between 5 or 10 puzzles left to go. I've found an extra unintended solution for one puzzle, but because of its ingenuity, I've left the alternate solution in. It does require some outside of the box thinking to achieve it, and if you can think like that with this mechanic, it should be rewarded.
Mar 17 2019
One more ultra complex puzzle was added in. It's the hardest puzzle yet, and feels rather fitting of a final exam puzzle.
Mar 27 2019
The last 10 days have been dedicated to testing and bug fixing. I've placed a custom timing script inside the game to record the player performance. I've also recorded the difficulty ratings, so i can rearrange the puzzles in terms of most difficult to least difficult. One early puzzle is quite tricky, and will need to be placed further towards the end of the game, whereas some of the later puzzles are a bit easier, and will need to be placed a bit earlier
Mar 30 2019
Using the insightful feedback and recorded times of my testers, I've rearranged the puzzles into a more fitting order. Puzzles that were deemed harder were moved towards the end of the game, and the easier puzzles were moved closer to the beginning. I also made some slight adjustments to the puzzles to make them work better. Sometime during development, there was an issue with the moving platforms and the cubes, where if a cube touches one of those platforms, it would end up flying off at high speed. I figured out what the issue was, and sorted that out.
Apr 07 2019
Since the start of April, I've been working on the aesthetics of the game, making everything look nice. I've been updating the lighting, making better models, making each of the rooms look much nicer than the boring plain grey they've been throughout development.
Apr 08 2019
Finished improving the looks of every room according to the decided global style. I've still yet to add some small additional touches to each individual room, but overall, the art style is coming together quite nicely
Apr 10 2019
Added some sound effects and some extra visual aids to the game. Also have some music composed, and will implement that later.
Apr 12 2019
Implemented a simple pause menu, as well as the music for the game. Still a few more touchups necessary here and there, but overall, it's nearing completion.