Lab 77 | Steam Awards
Enjoyed playing Lab 77 this year? Please vote for us in the 2025 Steam Awards!
Enjoyed playing Lab 77 this year? Please vote for us in the 2025 Steam Awards!

Distilled Productions Limited · Distilled Productions Limtied

Enjoyed playing Lab 77 this year? Please vote for us in the 2025 Steam Awards!
Enjoyed playing Lab 77 this year? Please vote for us in the 2025 Steam Awards!

At 10:37 today Unity published a notification that they had identified a security vulnerability for the version of Unity used for Lab 77 and more versions. They also mention that they were not aware of any evidence showing any exploitation of this vulnerability. Lab 77 has now be
At 10:37 today Unity published a notification that they had identified a security vulnerability for the version of Unity used for Lab 77 and more versions. They also mention that they were not aware of any evidence showing any exploitation of this vulnerability. Lab 77 has now been patched using their patching tool, so there should be no issues now.

Currently, the state of Lab 77 is as follows: Lab 77 is released. 1014 days. When I started this project I was at a loss. I was uncertain, after three years of university, whether any of my efforts there had been worth it or were able to use what I had been taught to actually mak
Currently, the state of Lab 77 is as follows:
1014 days.
When I started this project I was at a loss. I was uncertain, after three years of university, whether any of my efforts there had been worth it or were able to use what I had been taught to actually make games. I needed to test myself. To determine if I should just give up and flee the sinking ship of games development, which was also not helped by my university effectively axing the line I was on while I was finishing my degree.
But I had an idea.
While participating in a game jam in January of 2022 I had an idea for a game. A simple platformer, where you had to bridge the gap between platforms to complete levels. This idea had been gnawing at the back of my mind for months and by the 20th of August in 2022 I decided to sit down and try. So I did. And seven hours later I had, to my utter astonishment, been able to create the core gameplay loop. This gameplay loop still stands in Lab 77, 1014 days later, unchanged.
It had worked.
For the first time in years I genuinely felt accomplished in a task. It was a major relief because I was able to decide to do something not university related and on my own and it had worked. So, me being me, I kept whittling away at it. Bit by bit I designed and implemented levels, menu systems and more. I eventually got to meet great people to work with, and through their help Lab 77 has become what it now is, 1014 days later.
It has been a long journey. There were several points at which I thought I would not be able to finish this game. From Unity's incompetent handling of their fee situation to making major mistakes in the implementation and more, seeing this through to the finish has been a marathon. I initially thought that I would have been able to release this by January 2025, but as I am still learning how to manage this type of project I now realise I should have managed workloads and timings better than I had originally done. I am however glad that I took the extra time, even in the last week I found quite a few small issues that had to be resolved which goes to show how detailed your work has to be as a solo dev.
Throughout this project I have continuously heard about how many projects go unfinished. How many potential games go unpublished for any reason, and I never really took that to heart. Not until now. Because I now realise the stubbornness that is needed to see a project through from start to finish, and I am, thankfully I suppose, a very stubborn man. Looking back there were many points at which I could have given up, but I didn't. I kept going because I wanted this game to be released, becasue I wanted to play it myself. Now, 1014 days later, it is. It is a nice feeling.
Now, for a few housekeeping notes:
The Dev Diaries will go on hiatus from now until I have the next project properly set up.
I want to do a short itch.io game to reacquaint myself with Godot.
My intention is to start working on the next project this summer, and I have been looking for funding for a while now.
Lastly I just wanted to say thank you to everyone who helped along the journey. Family, friends, acquaintances and more. I know that were I to start listing off individuals some would fall through the cracks and that would not be my intention but thank you all for following this journey. That is all for this Dev Diary, more to come.
-Olav
P.S. If you want to follow what's next check out Bluesky, Reddit or Patreon, I have already been sharing things through the Patreon connected Discord.

Currently, the state of Lab 77 is as follows: 203 of 208 bugs have been squashed. All five remaining bugs require more testing. Biggest news first: Lab 77 now has a release date, the 30th of May 2025! Having this set in stone now is rather daunting, but for now all I can do is pr
Currently, the state of Lab 77 is as follows:
Biggest news first: Lab 77 now has a release date, the 30th of May 2025! Having this set in stone now is rather daunting, but for now all I can do is proceed and make the final small adjustments and improvements.
Now for actual work; starting off from the last Dev Diary I continued working with QA and playtesting. During this I managed to find yet another level that had a hidden zero placement path, but I was able to resolve this with a change that I had intended to make before. I just hadn't dedicated the time (admittedly only 2 minutes) to make the change. I also found more death block collider issues again, but they too were quickly resolved. In doing this playtesting I also gathered the remaining data I needed to finish the placement data set. This task is something that I had been wanting to finish for a while, and one of the last pieces of the puzzle for the final release version to be built.
Moreover, I merged the Steam achievements with the Wwise implementation in order to begin working on the final release version of the game. This may seem a rather small task to do, however this project has been slightly plagued by version control issues and as the achievements branch was rather old by the time I merged it I was quite concerned it would be problematic. Uploading this latest version to Steam for testing did present some issues as I had forgotten that I need to update the installer settings as well as the build but thankfully I was reminded to do so, and the version seemed to work. I did notice one issue, that the level music was not assigned correctly when loading a save game. Arguably another bug that I should have caught sooner, probably when I first implemented it, but it is good that I did catch it now.
After this I made some more improvements to the UI. Something that had fallen through the cracks earlier was ensuring the tutorial could be completed with, and was properly set up for, controllers. I made sure that the instructions were set up for an Xbox controller, as that is all I have to test with, and that you could press the Start button to return to the main menu. Unfortunately, I do not have a way, least none that I have discerned yet, to identify a type of controller thus if I were to include PlayStation controllers the tutorial would have to be more general. I don't doubt that using other input systems would help in identifying controller types, however as I am using the standard Unity input system with some tweaks I had to do for rebinds I am not aware of this being possible. Though it is something I can look into if I have the time to do so. I also made a small change to notify the player that controller rebinding is not implemented. This is an item that is loosely on the to-do list before release, but as my rebind system is duct taped I can not say for certain that implementing controller rebinds would be possible.
That is all for this time, more to come in two weeks. Thank you for reading.
-Olav

Currently, the state of Lab 77 is as follows: 200 of 205 bugs have been squashed. All five remaining bugs require more testing. Music and sound design implementations are being worked on. Starting off where Dev Diary 37 left off, the implementation of subtitles. This started off
Currently, the state of Lab 77 is as follows:
Starting off where Dev Diary 37 left off, the implementation of subtitles. This started off with some further research into Wwise and implementing that through code in Unity. Unfortunately, this proved a complex challenge as I discovered more and more how lacking the Wwise documentation is. As a developer, it is frustrating when the official documentation does not give you any information of how to use methods beyond saying something along the lines of "This is a callback function, it is used to call back an event". If anything, that line is more informative than the documentation, and the forums are not much better. Granted, there are some answers but there is rarely sufficient information to implement said answer.
Eventually, I was able to find a decent option for a callback that I could use called AK_Duration. However, implementing this was more of a headache than it should have been, largely due to the incredibly lackluster Wwise documentation which meant that it took too much time to find out how anything worked. This meant I spent a lot of time going in circles between forum posts and such, all of which had different pieces of the puzzle but none of which had the full set. Thankfully, after some help I was able to implement the AK_Duration callback and get the fDuration value which is the time in milliseconds, for some reason, as a float.
In case anyone else runs into this issue and wants to solve it in code, what I did was this:
void CallbackFunction(object in_cookie, AkCallbackType in_type, object in_info){
AkDurationCallbackInfo info = (AkDurationCallbackInfo)in_info;
if(in_type == AkCallbackType.AK_Duration){
t = ((float)info.fDuration/1000.0f) + 0.5f;
}
}
Now as far as I was able to tell, in_cookie does nothing but is still needed as Wwise expects it to be there. For this specific use case, what you need is in_type, which is the type of the callback, and in_info which is a C# object that you'll want to cast to AkDurationCallbackInfo for this specific use case. Admittedly, the following if statement is not necessary for my particular implementation as I only intend to use the AK_Duration callback, however it is not impossible that I change this in the future. As such, I wanted to make sure I don't create problems for myself if I do make changes. This brings us to the data I wanted, t, which is fDuration from in_info divided by one thousand, as it is in milliseconds and I need it in seconds due to using Time.deltaTime for the timer. I also decided to add 0.5 seconds, to give you a bit more time to read the subtitles. Admittedly, I may end up tweaking this number after more testing but that is a problem for future me. This ended up being a really nice implementation that took way too long to implement.
Additionally, the decision was made to move the randomisation of the voice over lines to be handled in code. This was done to simplify the process of displaying the correct subtitles, and as figuring out how callbacks worked took so long I didn't want to go through that process again in case I did something wrong with another callback. Doing this meant having to re-do some work both in Wwise and in code, which I normally am strongly against doing, but in this instance re doing it got me out of a sunk-cost fallacy. As a point of note, the intention is to have most of the voice over lines randomised according to the difficulty the player choses. This is to add flavour to the game world and expand a bit on the lore of the game, though most of the lore can be accessed through the collectible notes. I should also mention that the voice over does not read from the notes, as that would have been too much voice over, and likely would have messed with the flow of the game too much.
After the Wwise implementation was complete I moved on to the next part of my to-do list: testing and data gathering. I realise I haven't talked much about the setup for this before, but I have a branch on GitHub (admittedly this branch is in it's fifth version) that I use for setting up a playtesting version. This simply adds a little bit of code to the manager that records the number of placements per level, on easy mode so as to have unlimited available placements, and then writes that data to a CSV file after I click the "Exit" button on the main menu. This setup is very simple to make now, hence the fifth iteration of the branch as mistakes were made in the past, and it allows me to easily gather the data I need though I still need to set aside the time to do it.
Thankfully, I remembered to properly record the data after my first playthrough this time (for reference, see this). I also "only" recorded five bugs, four of which were really minor things and one of which was the complete lack of any audio in two levels. I did worry that this had something to do with the subtitles as it first happened on the first randomised voice over instance, but as it didn't happen on any other voice over instance in that playthrough that theory was nullified. I did manage to resolve this issue quite easily though as I had managed to forget to add the AkAudioListener component to the main camera in two scenes, which had caused the lack of audio. Admittedly, I should have caught this before making the build, but at least it is resolved now. After doing two rounds of playtesting I also decided to make yet another minor level redesign of level 52 to improve the flow of the level and thankfully this did not mess up the data as the level is still completable with the same number of placements.
Going forwards I have a few more items left on the to-do list:
That is all for this Dev Diary, more to come in two weeks time.
-Olav

Currently, the state of Lab 77 is as follows: 197 of 200 bugs have been squashed. All three bugs require further testing. Music and sound design implementations are being worked on. Last Dev Diary I outlined the key remaining objectives for Lab 77. After a slower start to the fol
Currently, the state of Lab 77 is as follows:
Last Dev Diary I outlined the key remaining objectives for Lab 77. After a slower start to the following week, I got started on the first point, which was finishing the Wwise implementation by implementing the last set of volume controls for the voice over. Realistically, this should have been the plan from the beginning but I fear I was a little bit big headed thinking I could do it differently even though the players are used to certain set things which ought not to be changed as it would likely generate needless negative feedback. After implementing the volume controls I also implemented a button click noise for all the UI buttons. It is a small detail, but a very important one as it would only be noticed through omission.
Following this I started working on the implementation of the randomised voice over. This is meant to play one voice over line per set of levels, one set being 11 levels and there being seven sets, with some levels having dedicated voice over lines. To do this, I implemented a simple randomisation at the start of each set which randomises a number within the range of level IDs for that set. Then, when the scene is loaded, the voice over plays. I decided to play the voice over early in the scene, as I did not want them to cause a break in the flow of a level. This is something I am very focused on, ensuring the flow of the game is as uninterrupted as possible by having as few interruptions as possible.
After the randomised voice over I shifted my attention back to the UI. Namely, the implementation of the subtitles. Admittedly, I was hesitant to begin this due to my previous run ins with the Unity UI, especially with my InGameUI prefab which caused me massive problems before. Unfortunately the implementation of the subtitles has hit a snag. This is due to some difficulties with the Wwise implementation and a lack of knowledge and good documentation on how callbacks work and a few other issues. I do think it will be possible to resolve these issues as I think they are solved problems, the difficulty lies in finding the solution.
Annoyingly, implementing the voice over using Wwise has been difficult to complete. Firstly, the documentation from Wwise is severely lacking especially considering I want to implement this in code instead of using components. Secondly, when I have found code snippets from forums they have not been overly well explained which makes implementing parts or all of the forum code snippet difficult as I need to first determine what the parts do. I do believe this is a solved issue, but finding that solution has so far proven difficult.
That is all for this Dev Diary. Thank you for reading and more to come in two weeks.
-Olav

Currently, the state of Lab 77 is as follows: 197 of 200 bugs have been squashed. Of the remaining three bugs, two require further testing and one requires more work. Music and sound design implementations are being worked on. First of all, Lab 77 has reached 200 recorded bugs. I
Currently, the state of Lab 77 is as follows:
197 of 200 bugs have been squashed. Of the remaining three bugs, two require further testing and one requires more work.
Music and sound design implementations are being worked on.
First of all, Lab 77 has reached 200 recorded bugs. I think this is some form of milestone? Anyways...
After the previous dev diary was released I decided to start off the past two weeks with some quality assurance and bug fixing. I managed to resolve some of the smaller bugs such as implementing the laser in the tutorial rather quickly, which was a nice way to start off. I also did a minor bit of code-refactoring by improving the scratch implementation I had made for Wwise the previous Friday. This refactoring will probably never be seen or noticed, but I was too ashamed of my initial implementation to let it stay the way it was. Additionally, I continued with the trailer, making a 2nd draft that I shared on Patreon and the connected Discord for feedback.
Next I made a small improvement to the main menu. I decided to explain the difference in death resets in the difficulty selection menu, which I really should have done for the demo. In all honesty this is something that I had put on my to-do list quite a while ago, but due to my eternal issues with Unity UI I was quite worried that I would run into issues even when I was just updating some text. Thankfully, I was able to make the edit without any issues. This is how little faith I have in Unity by now, being worried about making text edits and breaking everything.
Moving on, I continued working on the Wwise integration with Rossano. As mentioned last time, we had managed to get the basic implementation working with some levels of wrangling, but when we left it off it was in a stable state. Thankfully we were able to make a lot of progress in implementing the variance of the music, sound effects, voice over and more. We were able to validate that the basics were working after Rossano had made some changes to transition between the tracks faster and with this we added the variance based on number of placements in a level. Additionally, we implemented the volume control which I was somewhat dreading as it again meant a return to Unity UI fun. However, for a second time the changes worked and the volume control was re-established. Additionally, I realised I had to make larger UI changes to allow for separate volume controls for the voice over, which I don't look forward to. I know I should have set this up previously, but that would have been too easy.
In addition to working on Wwise I spent some time playtesting again. Having deleted two data sets out of carelessness before I finally sat down to gather a new data set from the newest version of the game, which also included some of the Wwise implementation. However, within five minutes of playing I realised there was a significant issue with the movement sound effects which made the game largely unplayable as the audio engine began lagging due to too much sound being played. The main issue was that I did not have enough stops of the looping movement sound effect, which I noticed by pressing pause, returning to the main menu and still hearing the movement sound.
This led me down a bit of a rabbit hole in realising this issue was not just with the proper levels, but also with the tutorial, at which point a decision I had made over a year ago in how the tutorial is managed came back to haunt me. Basically, as the tutorial is not counted as a "proper" level, it does not have a pause menu (this is also affected by the way the notes display works, but that's a story for another day). Because of this, the movement sounds would continue in the main menu after leaving the tutorial unfinished. And I was not able to make my slightly hacky solution for the proper levels work, which prompted me to implement a better solution that caught all the variances of this bug by having all sound effects governed by the game manager, an object I have set in DontDestroyOnLoad and which, as the name suggests, manages the game. With this, the sound effects bug was resolved.
Going forwards these are the key remaining objectives:
Finish the Wwise implementation, this involves the required UI changes.
Subtitles. This is again more UI stuff, but deserves its own point because there is a high chance this goes very wrong.
Gather the data for placements per level.
QA: Make sure the final version works, there are no outstanding bugs and make sure hard mode is completable.
Finish and release the trailer
Release the game
With each item that gets ticked off this list, the game gets closer to its full release and I get closer to completing my first proper indie game. I think that is just about starting to actually settle into my mind.
Anyways, that is all for this Dev Diary. Thank you for reading and there is more to come in two weeks.
-Olav

Currently, the state of Lab 77 is as follows: 186 of 195 bugs have been squashed. Of the remaining nine bugs, seven require further testing and two require more work. Music and sound design are being worked on. First and foremost, Lab 77 has reached 100 wishlists on Steam! This i
Currently, the state of Lab 77 is as follows:
First and foremost, Lab 77 has reached 100 wishlists on Steam! This is a major milestone for me as an indie game dev, especially given how difficult the games industry is at the moment. A massive thank you to any and all who have whishlisted Lab 77!
Secondly, music. I was sent the final master of the game music from Rossano Cariello who has done the in game music and sound design for Lab 77. Initially, I asked him to help me make 77 individual sound tracks. As in one for each level. Thankfully, I was convinced that this was a terrible idea and we have since then been working on one menu track, one tutorial track and seven variable in-game tracks that will be implemented using Wwise. These seven tracks will fit the seven sets of 11 levels in the game. While we have not gotten to the Wwise implementation just yet, the final version of the music is very close and you can hear a snippet here.
Implementing Wwise is the next big task to be done. It is not a thing I have any prior experience with, but I am looking forward to working on it. In addition to the in-game music the intention is to use Wwise for the sound effects as well. These sound effects are in the demo, which does not use Wwise. Instead the demo used my own concoction of madness that worked just well enough for the demo but I would rather have a proper underlying system that does not rely on my rushed implementation.
Working with Rossano I was able to get a start on the Wwise implementation. Initially we focused on the basics, making sure the connection between Wwise and Unity was correct and that it would play any sound at all. Once this was established we focused on the task of making sure the music tracks would switch at the correct times, which turned out to be a bit of a faff as we made some mistakes which complicated matters. After attempting to use the pre-made AkSwitch components, which did not work, I wrote a simple method in my game manager which now handles the entire switching as the manager is in DontDestroyOnLoad, which keeps the manager constantly loaded throughout the game. We also had some trouble after this with only one stem per track playing, but after some consultations we realised that we had set the number of instances to one, which we had done as the AkSwitch seemed to be layering multiple tracks. However, in the end we were able to make a start and leave the game in a stable state where we will pick it up next time.
In addition to the new music I have done more playtesting and data gathering. I mentioned last Dev Diary I intended to start working on more quality assurance through playtesting, and in this effort I also decided to re-start my data gathering which has been dormant for a while. I decided the best way to uphold the difficulty level that I am aiming for is to have the placement data, as difficulty in the game is determined by a limited number of placements, gathered by me as I am the only person with sufficient gameplay experience in Lab 77.
What this means in practical terms is that I have to play 66 levels at least five times (that is a total of 330 levels) to make sure I find the lowest amount of placements for each level. Thankfully, I did this job for the 11 levels in the demo before I released that, so they are set in stone. Still 66 levels need to be worked through, and the start did not go very well as I managed to lose two data sets through my own incompetence. So that was fun. That being said, I aim to pick this up again going forward, as it is something I must do to complete the game, it just needs time and patience.
I also did some "accidental" QA and playtesting work through my attempts at data gathering. At this point the QA work is very much focused on minor details such as moving floor blocks one unit to the side, up or down which is rather repetitive work but still very necessary to do. In doing this I also found that I have either got an issue with my GitHub repo or I made some git mistakes a long while ago in what branches I merged and how I resolved merge conflicts as level design bugs that I thought I had fixed resurfaced. All these things have thankfully been easy enough to fix. Though the trouble is that I have no idea which of the previous bugs now remain unfixed. I know I will find them as I do more playtesting, but it is certainly going to be a project until the release happens.
Lastly, I also started work on a proper trailer for Lab 77. I did share the first draft on Patreon and Discord, and got some feedback on it which is very appreciated. I know that I have to make some refinements to it, but I made a decent start for someone with no video editing experience to speak of. I do think this is an area I should improve in, as game trailers are very important for marketing. However, it is difficult to make things the way I want them to be at the moment, and that will probably show in the final trailer.
That is all for this week, more to come in two weeks.
-Olav

Currently, the state of Lab 77 is as follows: 182 of 187 bugs have been squashed. Of the remaining five bugs, three require further testing and two require more work. Music and sound design are being worked on. Following the debacle of wrangling Unity's UI I needed a shift of foc
Currently, the state of Lab 77 is as follows:
Following the debacle of wrangling Unity's UI I needed a shift of focus. Thankfully I got one as the final piece of the artwork puzzle came in, the death blocks. Since I first implemented the death blocks they have been represented as a red coloured floor tile, which works for testing but it far from good enough for the finished game. Now Lab 77 has new animated death blocks that really complete the look of the game. Adding some animation to these blocks as well as the conveyors and teleportation blocks really has given a lot of life to the game world that I had not realised would happen when I first started working on the game.

As a side note, this is the rough sketch I provided first to show what my ideas were. It is quite amazing to me how well they came out in comparison to the initial sketches.

Since implementing this artwork required more Unity prefab work I was naturally a bit apprehensive given the previous issues. I also had to remind myself how I made the conveyor belts with the new artwork as it is technically three different animations combined into one object. Basically, the way both the death blocks and conveyor belts work is the left and right edge tiles are veneers so to speak, and the colliders are all tied to the central block of X length, even when that length is zero as is the case with some of these blocks that are two wide. In these instances, the middle block can not be seen but it still provides the hit box and collider.
After having implemented the new artwork I was able to do some more playtesting. At this stage this largely involves finding small areas of improvements and refinements, since I have not uncovered any more major bugs that need to be resolved. This is quite a repetitive and tiresome process in many ways, and it is also all to easy to become blind to your own mistakes when you have been looking at and working on the same game for as long as I have. I have previously had some playtesting assistance from others, but not recently as I had been working on resolving some major bugs. Though I do aim to pick up some of that coming up and do some more data gathering on the number of placements per level now that I have the level designs finalised.
Going forwards, the next big step is implementing Wwise. Admittedly, this is not something I have any experience with yet, however I am not going at this on my own. I am hoping that I will be able to share more about this in two weeks, but I do not want to promise anything as this may be a longer term project. I do believe that I have set up a good underlying infrastructure that can handle this, but I am also aware that things often go wrong in game dev. I am also going to take more time for playtesting and data gathering. I have not yet determined how I am going to do this, but I will decide soon.
Lastly, I have not mentioned this in one of these for a while, but with the continued free-fall of the games industry it is more important than ever to support your local indie dev. It is a hard time for so many people working on brilliant games and the more support they get the better, Be it wishlists, likes, reviews or buying games any and everything helps. If you are interested in supporting me, and by extension Lab 77, you can check out the various links here. And if you chose to support me and Lab 77 then I thank you very, very much.
As a last side note, I am trying to be better about posting things directly to Patreon as well as the linked Discord, but keeping on top of all the time management as just one man is not the easiest.
That is all for this regular length Dev Diary, more to come in two weeks.
-Olav

Currently, the state of Lab 77 is as follows: 179 of 183 bugs have been squashed. Of the remaining four bugs, two require further testing and two require more work. Artwork, music and sound design are being worked on. There is nothing that demotivates me more as a game dev than w
Currently, the state of Lab 77 is as follows:
There is nothing that demotivates me more as a game dev than working with Unity. I can not believe how painfully frustrating this piece of software is.
To explain further, in the last two weeks I have attempted to add a fade effect to the game when the player respawns. I decided to do this first and foremost by adding a UI panel that I'd fade from opaque to transparent. Now, I know this is not the most ideal way of doing this, but I intended this initial implementation as a test of the effect. Attempting to implement this has been one of the most frustrating experiences in my personal recent memory.
I decided to implement this through using my pre-existing in game UI prefab. My reasoning for this was that I didn't want to make an extra prefab if it wasn't needed, and as it was just one panel that I wanted to implement so the addition to the prefab should not have been a massive change. This is where my problems began. When I added the panel to the prefab I set the colour of the panel to be black, and the alpha to be transparent. I then wrote a quick piece of code that would make it fade out, and I set this to be called when the player reset from a death. Then I clicked play in the editor, and was immediately greeted by a black screen. And I was quite confused.
My confusion stemmed from the fact that I knew I had set the properties to be transparent. Or at least, I thought I knew. "Well, no bother. I'll just check and make sure my code is not reversed of what I thought or see if there is anything I forgot to do" I thought to myself, and off I went to check. As I checked I found that I had indeed set the transparency correctly in the prefab and as I checked my code I found that it was not reversed. I found this odd, but I thought I could just set the transparency in the Start() function and then test my implementation, and so I did. And then I clicked play in the editor again.
Having made my way through my in-game menus I was once again greeted by a blacked out screen. And I was perplexed. Now, to avoid rehashing the entire story I ended work on it that day with my implementation not working and me being annoyed and perplexed by this behaviour. I didn't necessarily think this was an issue with Unity yet, but I was very confused as to why my implementation had failed. Also, I should mention that there were times where it seemed to work in my testing, but it was not consistent and I was not able to determine what caused this change in behaviour. After this I let it rest for a day or two before gathering the energy to have another go at it.
When I loaded up the editor some days later I went right to testing and found the problem was still there. I know this may seem a bit sill to do, but Unity sometimes fixes itself after being closed and opened again. Anyways, I digress. I spent this day trying several things I thought would fix it, and talking to several people who all suggested various things that didn't end up working. I eventually realised that the state of the prefab was not the same in the hierarchy in the level scenes as in the prefab preview, so I opened the preview and moved some things around and that seemed to fix the issue. This allowed me to do some more testing, during which I found that my implemented fade effect was quite annoying to me. I also used this chance to test on a level that I knew would provide the worst edge-case scenario which informed my decision not to implement the fade. But, I had not quite made the decision as I did want to try a snappier, but harsher effect and maybe some other ones that could sway my opinion. So I closed down the editor for the day and decided to come back to it a few days later.
As I opened the editor again, I thought I had resolved the previous issues and that I would be able to test some different fades. I was wrong. When I tried to implement a snappier fade, I found that the effect was not happening at all. This was odd, and after several attempted changes and a long conversation with someone who has much more game dev experience than me I was still not able to resolve the issue. Though I was able to discern a few things about Unity and this prefab. Mainly, I believe that there is something quite broken in this system. It is quite possible that this is something I have caused, but I do doubt it as I didn't attempt anything completely new or very unusual. I am more inclined to say the issue lies somewhere in the communication between scripts and prefabs in Unity, or with prefabs in general. What I can say for certain is that this has really, really annoyed me. No, it has angered me.
Now, I already have plenty bad experiences with the Unity Game Engine but this one feels particularly bad. I think the main reason for this is how it seems there is no way of resolving this, and nothing I have done seems to have made any improvements. Even if I were to completely erase the prefab and re-make it I have no confidence that this issue would not re-emerge, and re-making the prefab is not really a task I want to undertake as it is a rather convoluted one. Working with this engine just feels hopeless, and this being yet another issue in an ever growing list of issues does not help.
I can say with certainty that I will never use Unity again after Lab 77. Never. It really feels as if 90% of the engine is 50% implemented at best, and if you dig even a bit under the surface you realise there are so many systems you have to make yourself because the ones in the engine don't work. I find it really difficult to understand how anyone who works on the engine can be happy with the result, and that's not even counting the terrible business practices that go on there.
In short, this means that I will be switching completely to Godot for all future projects. This is not to say Godot is a perfect engine, as I find the workflow unintuitive and I don't yet love the way signals work but it is leagues better than Unity currently is. At least the features that are in Godot work. If I wanted to have to re-do as much of the engine as I fear I would if I kept going with Unity, I would make my own engine, and I don't want to do that either.
All in all, I think I have decided not to implement the fade. I know and understand that the snapping of the camera may be jarring to some players, but given the edge cases and my intention to maintain uniformity across all teleportations, respawns or placements I don't believe the fade effect would work. Additionally, I do not wish to interrupt the flow of the game which means that I didn't want to stop the player moving during the fade. I also found the fading annoying as a player, which also informed my decision.
That is all for this extra large Dev Diary, well rant. Anyways, more to come in two weeks.
-Olav
P.S. Just came back to read this and for one thing I'm still angry and for the other I have kind of enjoyed writing this one as a bit more of a story. Though I can't say that'll be the case for all upcoming ones.

Currently, the state of Lab 77 is as follows: 178 of 181 bugs have been squashed. Of the remaining three bugs, two require further testing and one requires more work. Artwork, music and sound design are being worked on. In the last two weeks I have finally done more proper playte
Currently, the state of Lab 77 is as follows:
In the last two weeks I have finally done more proper playtesting. In doing this I did not find many new bugs, apart from one which required yet another level redesign to a level I believe I have changed six or seven times by now. I found that there was a path the player could take which would allow them to jump a further distance than I had designed for, which would allow them to reach a series of teleportation blocks that led them close enough to the end to jump the gap. To rectify this I moved some of the platforms further apart, and removed one close to the beginning of the level which has now solved the issue. In the effort to ensure all but one level need at least one placement to be completed, I have gone through several iterations of level design, which has all been a good learning experience but has also been quite taxing as I am no fan of this type of repetitive work.
In addition to the level redesign, I have also updated the artwork for the teleportation blocks. This new artwork is no longer colour dependent, but has a directional arrow design going into or out of a portal. Although I had become quite used to the old coloured blocks, I am very happy with the new design, and it has yet again taken Lab 77 a big step closer to being complete. All that remains on the art front now is a new design for the death blocks.
Lastly, I began trying to implement a camera fade for the teleportation blocks and respawns. This has not been an easy process however as I have yet again ran head first into Unity woes. As it turns out, adding a new UI panel to an existing canvas is a minor issue as the variables I set for that canvas are being ignored on startup which leaves the screen with a big black box on it that obscures everything. At least sometimes. Which is very confusing. Unfortunately, I have not yet had the time to properly Debug this, but I did find that this issue is set off whenever I make a change to the script attached to the prefab UI canvas which does not make much sense. I will have to investigate this further, and as such I can not say for certain that I will be able to implement this fade effect in time.
That is all for this Dev Diary, more to come in two weeks.
-Olav

Currently, the state of Lab 77 is as follows: 176 of 180 bugs have been squashed. Of the remaining four bugs, two require further testing and two require more work. Artwork, music and sound design are being worked on. Having ended last year on a high with the revamped main menu I
Currently, the state of Lab 77 is as follows:
Having ended last year on a high with the revamped main menu I wanted to start this year from a similar point of view. While in Munich in the holiday period, I realised there may be a bug when attempting to load a game when no save game exists. After returning home, I tested this and found that there thankfully was no bug since the game would just effectively load a new game starting on level one. However, I realised that this may cause confusion for the player. Therefore, I decided to implement a small improvement wherein the game would simply notify the player that no save game exists to be loaded. I did consider removing the button if no save game existed, however remembering my previous issues with UI design, implementation and especially with the keyboard UI navigation I decided not to tempt fate and instead implement a simplified, if perhaps more rudimentary, solution.
While in Munich I also realised I had made a minor procedural mistake. Admittedly, I rushed the implementation of the new conveyor belts a bit, and as such I forgot to actually check that the old ones had all been replaced. Thankfully I did make a note of this in my list of bugs, and having made the check it turned out to be a necessary thing as I found two old conveyor belts that had not been replaced. This is why rushing things is never a good idea, and I really should have taken the time to ensure I finished the task as it did not take me long to find the two errant conveyor belts and replace them.
Next on the to-do list is more testing. I need to test all the small changes I have made thoroughly, as well as the steam achievements which I have been putting off as I am worried things will break. However, once I have done this I can move on to implementing Wwise and the remaining artwork as it comes in.
That is all for Dev Diary 31, more to come in two weeks.
-Olav

Currently, the state of Lab 77 is as follows: 175 of 180 bugs have been squashed. Of the remaining two bugs, one requires further testing and four require more work. Artwork, music and sound design are being worked on. In the last two weeks I have again been busy with a lot of ad
Currently, the state of Lab 77 is as follows:
In the last two weeks I have again been busy with a lot of admin. Some of this admin has resulted in Lab 77 having a proper press kit, which took me a while to do as I had no idea of how to make a press kit. I did finally take some time to do a bit of research on other games as well as press kit templates and I took the time to set up a specific page for a proper press kit. So if you are working in games press and you are reading this, why not check it out?
Furthermore, I finally took some time to implement an improvement to the background of the main menu. Having spent a lot of time thinking about what I wanted, and trying several options that did not work for various reasons, I settled on using the teleportation and conveyor blocks to create a repeating background animation of S539-77 being moved about. I also realised in doing this that it also functions as a little tutorial or showcase of what the teleportation blocks are, and how they work. I was very pleased with how the main menu turned out. And since I use prefabs for everything, it took me less than an hour to set it up. I only had to make the dupe of the player character as I don’t want the player to interact with the specimen in the main menu as that may be distracting.
Lastly, I do have to tell you that Lab 77 is not going to launch this year. I did set that as a goal earlier this autumn, however due to some setbacks and other issues this goal is not achievable. My aim has always been to release Lab 77 when it is ready, and at the high standard that I set for myself, which is why I am postponing the launch until that is met. I am optimisitc for a Q1 release in 2025, but my main objective is still to ensure the quality and as such I will only release Lab 77 when I believe this goal has been reached. I will keep providing updates wherever I can, and I hope you look forward to the launch as much as I do.
This is the last Dev Diary of 2024, I will be back with more in 2025. Be good, be safe and see yous soon.
-Olav

Currently, the state of Lab 77 is as follows 175 of 177 bugs have been squashed. Of the remaining two bugs, one requires further testing and one requires more work. Artwork, music and sound design are being worked on. Much of my time over the last two weeks has been spent on doin
Currently, the state of Lab 77 is as follows
Much of my time over the last two weeks has been spent on doing admin. Luckily I have also been able to make significant progress in two areas. Firstly, I have added achievements to Lab 77. Secondly, I have upgraded all the conveyor belts with excellent new artwork.
I have had the task of adding achievements on the to-do list for a while. Having finally gotten around to adding them to the game, my silly game being on Steam has suddenly gotten a lot more real. With the achievements having been added I had some fun with designing the achievement icons for Steam too, which is always a fun thing to do.
So far I have added 16 achievements, some obvious ones and some more obscure ones, and I plan on adding many more so please let me know if there are any funny or obscure achievements you want to have added to the game. I'm not going to divulge what the achievements are going to be, though some may be obvious, but I want to preserve the thrill of the hunt so to speak.
Furthermore, I received some brilliant new artwork for the conveyor belts. This means I no longer have to look at the gray squares with black letters that I had made as temporary assets early on. Unfortunately, due to the nature of what a conveyor belt is, this artwork was not a simple 128 x 128 tile I could easily duplicate. The central tile can be repeated horizontally, but the edge pieces need to be aligned individually which meant the replacement process was a bit more involved. Thankfully, not too much, and I was able to upgrade all the conveyors rather quickly.
Unfortunately I was unable to do any more QA and bug fixing. But with the new implementations, I will have to do more of that. So that will be back on the to-do list once again for the next two weeks.
That is all for now, more to come in two weeks
-Olav

Currently, the state of Lab 77 is as follows 175 of 177 bugs have been squashed. Of the remaining two bugs, one requires further testing and one requires more work. Artwork, music and sound design are being worked on. Unfortunately this dev diary will be shorter as I was ill for
Currently, the state of Lab 77 is as follows
Unfortunately this dev diary will be shorter as I was ill for a bit over a week. As such I was not able to make much progress. I was however able to finish editing the voice over lines, and they are now ready for implementation.
Editing the voice over lines meant undertaking a task I had very little familiarity with. My intention for the voice over lines was creating an effect as if the director had made these recordings in his office, and that they then were played back. To achieve this effect I tried a few things before settling on a "Corridor" reverb with the settings tuned down somewhat and a doubler to create more of an echo effect. I was very happy with the result of this, and as such I now have all voice over lines edited.
Going forward I will be doing more playtesting and QA. I will also look at implementing Steam achievements, which I haver quite a few ideas for. Hopefully, I will be able to make this fun and a challenge for players who enjoy getting 100% of the achievements in games. I will also re-visit my ideas for improving the main menu background with some form of randomised movement, though I am not yet sure what form this will take as my previous attempts at doing this have been unsuccessful.
Lastly I have had some good feedback on the demo. I covered some of this before, but it has been brought to my attention that there were some grammatical errors in the demo. I will resolve this for the full build, but as there is a lot of text and since English is not my first language, it may take a moment to be done.
That is all for now, more to come in two weeks barring any further illness
-Olav

Currently, the state of Lab 77 is as follows 175 of 176 bugs have been squashed. The remaining bug requires further testing. Artwork, music, sound design and voice overs are being worked on. Over the last two weeks my efforts have been largely focused on playtesting and QA. In th
Currently, the state of Lab 77 is as follows
Over the last two weeks my efforts have been largely focused on playtesting and QA. In this time I have found and resolved 21 bugs, almost all of which were minor improvements and alterations ensuring there were no gaps in the backgrounds and ensuring the design of each of the 77 levels need at least one placement to be completed. One bug was a bit more annoying, although I was never fully able to reproduce it. Similarly to the previous issues I had with horizontal position locking with the camera, I discovered that the same issue may have been happening with vertical locking.
As I was unable to reliably reproduce it I can not say for certain that it has been fixed. However, as I implemented the same solution as with the horizontal locking which I have not had any problems with I think it is quite likely it will not be a problem going forwards. I will keep an eye out for this problem re-occurring though in case my implemented fix was not sufficient.
The final outstanding bug is perhaps not as much of a bug as a potential point of improvement, although I have tracked it as a bug. One of the things I keep in the back of my mind is whether or not there are more things that should be added to any of the levels. This is why I keep it tracked as requiring further testing, as there is still the possibility that I will make changes to some levels.
I have also given some thought to improving the background in the main menu. Although I have not actually implemented anything yet, I did want to try to make some form of specimen churner that would repeat in the background of the main menu. Though in a quick test I did of this a while back it did not go well and the specimen would just jitter back and forth. In any case I want to complete some other more important tasks first.
Unfortunately, due to some issues outside of game making, I was not able to start working on the voice over editing as I said I would. This will be my main focus going forward however, as I will need to be done sooner than later.
That is all for now, more to come in two weeks
-Olav

Currently, the state of Lab 77 is as follows 149 of 157 bugs have been squashed. Of the remaining eight, three require further work and five require more testing or minor fixes. Artwork, music, sound design and voice overs are being worked on I have finally had a chance to do mor
Currently, the state of Lab 77 is as follows
I have finally had a chance to do more proper playtesting. And of course this means that I have found more bugs. Ergo, my work over the last two weeks has largely centered around fixing bugs and generally making improvements to the playing experience. Quite a few of the bugs came from the implementation of the new backgrounds, with some misalignments, parallax issues and other small mistakes that were relatively easily rectified, but as there were a few of them it was rather time consuming.
I also had some other feedback on some elements of the demo. Some of these changes were further UI changes which it was very useful to have feedback on. For instance rewording the popup about reading the note to say that it can only be read after the chamber is completed. Additionally, I revisited the main menu and did some fixing of the alignment of the settings menu and I made some changes to the difficulty selection menu.
Playtesting can often be the most tedious part of game development. In fact it would not surprise me if I have played certain levels 100 times just because I have repeatedly made small changes that needed to be tested. Though, the more you playtest your game and the more quality assurance you go through the closer you get to the finished product. Now that I have less items remaining on the to-do list as well, there is more and more need for quality assurance to make sure everything is as good as it can be.
Going forward my intention is to start implementing some of the voice over work that has been recorded. I will also be testing more of course while the remining artwork and music is being worked on. Once that is done I will implement it, and then make sure there are steam achievements and possibly other things I can think of implementing.
That is all for now, more to come in two weeks
-Olav

Currently, the state of Lab 77 is as follows 140 of 144 bugs have been squashed. Of the remaining four, three require further work and one requires more testing or minor fixes. Artwork, music, sound design and voice overs are being worked on Having finished the demo I had the opp
Currently, the state of Lab 77 is as follows
Having finished the demo I had the opportunity to take a bit of a step back and do some admin. I have tried to take account of what needs to be done on order to fully complete the game, and I have started work on this list. To start with, I began implementing the updated artwork for the remaining 66 levels, as I had only done the first 11 for the demo. Now that all the levels have updated backgrounds the game looks a lot better, and feels a lot more alive as well.
Each set of 11 levels is colour coded. The first eleven levels start with the purple background seen in the demo, and then the background colours go around the colour wheel until you end up at the magenta of the last 11 levels. I have also tried to play around with the parallax effect a bit. To add some variety, the amount of parallax varies and some levels have multiple layers of backgrounds.
In addition to the backgrounds I have done some small bug fixing. This mainly revolved around making sure most of the bugs I had listed as needing more testing or refinement were sorted out. I have not yet gotten around to all of them, but I will be focusing on that going forward. I am also going to start working on editing the recorded voice over lines as well as a more proper trailer, which will probably take me some time to do, but with every item ticked off the to-do list the full release of Lab 77 gets closer and closer.
That is all for this Dev Diary, more in two weeks
-Olav

Currently, the state of Lab 77 is as follows 136 of 144 bugs have been squashed. Of the remaining eight , three require further work and five require more testing or minor fixes. Artwork, music, sound design and voice overs are being worked on. A demo for the Steam Next Fest is d
Currently, the state of Lab 77 is as follows
Over the last two weeks my focus has been on polishing and finalising the demo for the Steam Next Fest. This process has revolved around adding sound effects, lasers and a lot of minor UI improvements. There are now sound effects for the UI interactions, collecting notes, hitting the end level button and player movement. They are implemented in a bit of a oversimplified way, but this is because I plan on properly implementing them using Wwise. I also aim to implement the game music using Wwise too.
Furthermore, the chambers of Lab 77 have been outfitted with cleaning lasers. Basically they are there to serve the purpose of killing a player were they to fall off the level, which they don't do if you look at the code. The player is just reset if they fall below -7.5 on the Y axis. More importantly, they serve the purpose of adding more life to the chambers as well as the story which is told through the collectible notes.
I have also spent some time fine tuning the UI. This has involved relatively simple tasks such as making sure the credits are properly displayed, ensuring the end menu is properly lined up and displayed and updating the help menu with actually useful information. These are all small things comparatively, but a game is only ever as good as its parts. Therefore, I want to make sure that all the pieces of the puzzle are as good as they can be.
All of this means that the demo is indeed done. I uploaded it to Steam, and it will be released in time for Steam Next Fest.
That is all for this Dev Diary, more to come in two weeks.
-Olav

Currently, the state of Lab 77 is as follows - 136 of 144 bugs have been squashed. Of the remaining eight , three require further work and five require more testing or minor fixes. - Artwork, music, sound design and voice overs are being worked on. - A demo for the Steam Next Fes
Currently, the state of Lab 77 is as follows
- 136 of 144 bugs have been squashed. Of the remaining eight , three require further work and five require more testing or minor fixes.
- Artwork, music, sound design and voice overs are being worked on.
- A demo for the Steam Next Fest is nearly done.
For the last two weeks my focus has been on the demo of Lab 77. As I mentioned last dev diary, I found that the underlying systems I have built up over the last two years working on this game were robust enough to adapt to the demo. I was concerned that lessening the amount of levels from 77 to 11 would be a bigger task, but this was not the case. Only one issue was encountered with the end credits scene, but this was thankfully simple to fix by adapting a few scene indexes.
Having ensured the underlying systems worked I went on to testing and adding polish. I added a music track, fixed up the main menu to ensure no dev tools were left in the build and then went on to the levels themselves. Firstly, I started implementing updated modular backgrounds and adding parallax effects to them. Secondly, I did a lot of testing. This testing was focused on two things: making sure the difficulties can be completed and smoothing out the order of the levels to ensure they scale nicely in difficulty. Having done this testing I can now say that I have set the order of the first 11 levels in stone and that they can be completed on easy, medium or hard. Though I will say, to complete them on hard you have to know the quirks of the characteristics of the game, which is what I intended the hard difficulty to be.
Lastly, I realised that I had forgotten to fix the background in the tutorial although I fixed the backgrounds in all the other levels. This is all part of my goal to deliver a product of high quality without omissions. I also decided to record my doing this, to give a look behind the scenes of the process, which you can see here. There are still some elements of the demo that I would like to improve on, but it is very, very close to being finished now.
Outside of the demo I have received some very good artwork for level 55. This level is one of the special levels, and you can say it is akin to an easter-egg level as it is the only level where you will not need a placement. Furthermore, I now have all the components I need for making the backgrounds for all the levels, but I will not start doing this until the demo is complete. There are still some bugs that need to be resolved, but I believe I may have hit the point at which testing yields fewer bugs each time.
That is all for this Dev Diary.
-Olav