Project Tide: Ravensbourne Unit Showcase Postmortem (2021)
The aim of this project was to create an interactive showcase and do it in a way that hasn't been done before. The project originally started way back in November/December 2020 as I was tasked to design and develop a similar project for the Fashion course at Ravensbourne University. This project was unfortunately scrapped but it didn't stop me wanting to still take the idea further.
Myself and my Game Design Tutor Dev began to look into ways to recreate the whole of the Ravensbourne University building. An ambitious task which we have yet to execute. Due to Lockdown, the idea faded until a new opportunity came with the Ravensbourne Unit. This was a elective unit which was being completed by Year 2 BA students (including myself). I felt this was a good time to pitch an idea to create a showcase based on the original Fashion project to see if we could really make this project a reality. After a successful pitch, work began on what would become Project Tide.
From the start, I knew I wanted to show the work done in the Ravensbourne Unit in a fun and interactive way. This meant that everything had to be done in game, I didn't want to just put in Video Links to other websites and leave it as that. I wanted those videos to be in the game! This includes all artwork and work documents/portfolios. This platform was being designed to house any style of work that students made. I was able to achieve this. Everything in this game was designed from scratch from GDD's & TDD's created by myself.
This postmortem will go through the good, bad and what could be done right next time. Everything I learnt from this project will be crucial for any sequel project that could arise from this.
What Went Right
1. Clear Vision
From the start we knew what we wanted this game to be. The vision was clear from the start and it remained the same all the way to the end of development. The vision from the start was to create a surreal experience which would showcase work created by Students in the Ravensbourne Unit. The focus was always on the work and how we could design a game to elevate that work. My idea was that anyone was able to look at this game and instantly understand what it is, how it works and how to play. Keeping this vision clear and concise really helped to keep a smooth development process and for the final product to be consistent across the board.
2. Development Process
Project Tide: Ravensbourne Unit Showcase began development in April 2021 after the initial pitch. Pre-production took less than a month to complete which led the game to having up to 4 months of production time. Reasonable deadlines were set so that I was always on track to complete on time. The release goal was to get this finished by September 2021, I was able to meet that deadline by keeping a steady pace throughout the last few months.
Another positive was being able to work on this project alongside my course and being able to actually implement it as part of my coursework. This helped move along the development fast in the early stages. Overall development went really smoothly especially as a one man team.
3. The Environment
One of the best parts of this project was the environment . After much development, Dev and myself came up with the Hexagon Corridor and the Student Rooms. The combination of this really helped to create a unique feel for the game while also keeping it feeling like a Ravensbourne Platform. The RavesHub area was also a really great idea and helps to ground the player before they head out into the showcase.
As you move through the game, the corridor also reacts to your movements by raising different parts of the map. This really makes the world feel alive and exciting. Combining this all with a variety of colours really brings the game to life. The student rooms were also great as they sampled the different colours of the students work to make it feel vibrant and true to that students work. It all comes together and while the layout is simple, it's easy to understand.
4. Student Work
The biggest challenge when in Pre-Production was figuring out how to implement all of the student work created for the Ravensbourne Unit. It was a daunting task due to the sheer volume and variety of work. I managed to pull it off by creating 3 types of systems to deal with the work. The first system was simply a click and view image mode, the second was a video mode where we streamed in video from Vimeo, and finally the third system which is similar to the first but you are able to flick through different pages of work, this worked well with documents and portfolios.
The fact I was able to get 30 Students work into the project using these systems saved me a lot of time and resources. These systems allowed me to simply insert the work and be done with it. The work all looks brilliant in a 3D environment too and every student's work is represented how they would have wanted it.
5. Performance & Playable on Web
One thing I really wanted for this project is that everyone was able to play it without any issues, regardless of your platform. I designed this to work using Unity's WebGL engine so you can play the game on your browser. With this in mind, we had to be careful with how much was going into the game to make sure it kept a stable framerate.
At the end of the project, the game still performs well and is playable on Chrome and Edge. Optimisation was important throughout the whole development process and it worked out very well. There are limitations for working with only the Web, but because I had planned ahead of time, we were able to design around these limitations.
One process we did was upload students' work to Vimeo and directly stream it into the game to save memory and loading times. This was a process that needed to happen overwise the game files would become way too huge for it to be hostable on a browser. Graphical Settings are also built into the game allowing the user to select three different settings; Low, Medium and High.
At the time of writing this, the game currently runs well on all machines that have been released since 2015-2016. It runs on much older machines but it isn't the best experience. The aim here wasn't to get it to run on older hardware but to get consistent performance across most modern day platforms. I feel I was able to achieve this.
What Went Wrong
1. Last Minute Memory Issues
In the final few weeks of development, I ran into a major issue which nearly changed the whole project. My issue is that the game file was simply too big, around 220MB which is way too large for a WebGL game. The issue was the images in the game, something which I didn't see being an issue when development started. While we were saving memory by leaving out videos, images were still causing the game to be massive.
My way around this was to do some serious compression while also trying to preserve the quality of student work. I was able to do this but some work did suffer from the compression, work that had smaller text on it became unreadable so work had to be cut. In the future, it may be worth streaming in images as well as videos. I also need to look into better ways to compress while keeping the quality of the source image.
2. The Environment
While the environment in Tide is fantastic and works really well, the lack of any kind of planning for the environment beforehand meant that it was designed really late in development. New ideas originated from the environment but we weren't able to implement them because it wasn’t planned beforehand. Multiple environments were made for the projects and only one felt right. I feel that if the environment was designed earlier I would have been able to elevate some of the game mechanics using the environment. If we do this project again, the environment and how it looks and feels will be planned from the start of the project.
3. Coding Practices
This project was by far, the strongest in terms of my programming ability. I was able to problem solve and create mechanics from scratch. I learnt so much from this project but something I am certainly aware of is my messy code. The project started out with neat code but as time went on and more problems needed to be fixed, my codebase became more messy and some solutions to bugs and issues were done in a way where there is definitely a more polished and easier solution. I think better programming patterns could have been used and more optimisation should have been done to the scripts. If we do this style of project again, some scripts will definitely need to be rewritten with tidier code to ensure that it performs better and is more user friendly.
Originally this project was going to have 60 Students in total, all with their own spaces filled with every single piece of work they made for the unit. While this remained the same goal for the whole project, in the last month of development this number needed to be cut in half due to budget and time restraints. Everything was in place though to have all 60 students but I feel for the time and money I had that number was just too big this time around. I was also cautious because we were working with a WebGL build, I didn’t want to make the file of the game too big for this first attempt at a project like this. Next time I will have to find new ways to be able to include large numbers of work.
I am a huge advocate for accessibility in the industry, I strongly believe that everyone should be able to enjoy gaming and customise the experience so it suits them. From the start of development I was doing research and planning around accessibility for the project. The main feature was going to be a color blindness filter as I already had this developed from another project. I also was trying my best to design the whole experience so that everyone is able to understand how to play. Unfortunately, due to technical problems that I wasn’t able to fix and all accessibility features had to be cut. This is something I really regret and will fix the next time around.
What To Do Next Time
1. Improved Workflow and Pipeline
Going forward into the future, a new workflow is definitely needed. Putting in student rooms manually worked for this project due to its small scale but for bigger projects, this workflow needs to be improved to save time and to achieve goals much faster. Including some form of generation would be a good area to look at. I want to build a system where the game world can build itself based on the data we feed it. While this is a technical task that would take much time to make, it would save time in regards to production.
Accessibility will be included in the next project. I will take feedback from this project and look to further enhance the game design next time so it's a fun experience for all. Most importantly however, I want the features that I wasn’t able to implement in this project to be in the next one. I will put more time towards these features to make sure they work. Feedback will also be important and I will host more play sessions to get as much feedback as possible.
3. Tidier Code
As previously mentioned, my code ended up being a mess by the end of the project. Next time I want to plan more ahead of time and design more systems before starting production instead of just “winging it”. In the meantime I will also be looking into Programming Patterns to discover better ways of organising and optimising my code for the future. I’m going to continue to develop my skill set so when we do this project again, we can make the codebase even stronger.
4. Image Streaming
Something that is very clear to me is that Image streaming is a technique we need to consider for the future. If we go to make larger scale projects, we can’t have 1000’s of images in the project files. The game needs to be as lightweight as possible, as well as Video Streaming, I will look into Image streaming, meaning images will also be streamed in from the internet. This will end up being beneficial as it will save so much memory in the project files and will make for a much easier project to upload onto a website and to run in a web browser.
5. More People!
For the next project, I think it will be important to be working with more people who will be able to contribute something to the project. As a technical designer, I wasn’t able to spend much time on the art side of the project, so having more people able to focus on the art would benefit the project greatly. Having even more roles in the team will help it in so many ways, even if it was only a small team.