My Summer Placement in Hamilton Robson's Software Team

Sean McKiernan

Hi I’m Sean and I’m currently studying Game Design and Development at Ulster University. Over the summer I had the opportunity to do a placement as a Software Developer at Hamilton Robson. I had seen some of their experiences like the Game of Thrones Tour and the Crumlin Road Gaol Experience before, so I was excited to be learning more about how they were created. 

Gaining Real World Experience 

During my placement I was able to work on Outpouring, an interactive project made in partnership with artist Joe Caslin and Nerve Centre. I also was involved in creating interactive media displays for one of Hamilton Robson’s biggest clients in the Med Tech industry.

I started my work for Outpouring in Blender, editing animations before moving into Unity. I mainly worked in Unity for both projects’ scenes and features such as spawning more bubbles on the AR app created for Outpouring and using sensors to track a person’s movement onto a model, emulating the user being inside an MRI scan for body tracking. 

An example of the spawned balloons and Mr. Riddel.

While I enjoyed working with the body tracking, getting the tracking to work properly was pretty difficult. I had never worked on anything like body tracking before, so trying to figure out how to track a person with one sensor was hard. What was harder was tracking a person with two sensors and then making the different sensors work together, it was a real challenge. Having to figure out how to differentiate multiple users from each other was probably the hardest part.  

I ended up using the position of the user being tracked to keep my model from jumping between the different users. By saving the tracked users previous position and comparing it to all user’s current positions, I can get the user closest to the previous position and use them to update the position.  

An example of the body tracking for one of my displays.

It was a challenge but I’m proud about the work I did and I’m hoping I can get to work on something similar in the future, like putting what I learned to the test to create some kind of VR experience. 

Working on these projects helped me to get a better understanding of Unity. Using configuration files like JSON and web-based Application Programming Interfaces (APIs) seemed daunting before I started. 

When creating the displays, we knew we wanted to include a weather component which would update live to show the current weather at the office, so I used an API to fetch the weather it and update the weather icons to match. 

Some examples of the weather API being used to change the weather icon.

I feel like there’s a lot of interesting games that could be created using APIs to effect aspects of a game. For example, using the weather API you could make a game where the level changes based on the weather in the players region, having different paths open or close depending on if it is snowing, raining or sunny. You could even make surfaces have different properties like being slippery or slowing the player. These could be really engaging features and I’m sure there’s plenty of other ideas that could be made using other APIs. 

I started using JSON files to save information needed for my body tracking display to work. Information like my model’s and sensors position or rotation was all saved and allowed me to change aspects of the display by using the button inputs or the debug menu.  

Using a JSON to save any changes instead of making the changes Unity scripts really sped up the testing process as having the changes persist after I stop testing didn’t mean I would need to constantly stop and start the display to make any changes to Unity scripts to keep the information.  

It also allowed me to make changes while playing a build of the project, making it far easier to set up the display without having to make a new build every time a change is needed. 

It took me some time to figure out how to use the JSON properly. Loading the JSON was easy, but saving it gave me some trouble as I would accidently write over the whole JSON file. That ened up being a simple fix by making sure I was getting the whole JSON changing the parts I wanted, then saving the whole thing to the JSON. 

I can see myself using JSON files for my future games as they seem like a great way to save players setting like mouse sensitivity and volume or player save data such as the levels they completed, and items collected. 

 

My Biggest Learning Experiences

Before working on Outpouring, I had never touched the animation side of Blender. This meant working on the animations for Mr. Riddel for the project was a great learning experience. Having to go through the animations and fix up the broken poses, fill in the seams on the model and changing out parts of the model like the hands. I don’t know how often I’ll be animating in Blender in the future, but I’m sure knowing more about the process will help when working on future projects with others. 

Working on the displays were a chance for me to get more familiar with Unity’s different tools, mainly the UI Toolkit. When I started to use the custom styles, it made it easier for me to quickly make the UI elements have the same properties, like boarder thickness or colour, background colour and corner radius. 

An exampled of a screen I created using the UI Toolkit.

After working through this project, I can’t wait to put what I learnt to the test for the games I’ll be creating in the future. 

Final Thoughts

After working on these projects and reflecting on what I’ve learned I say doing a placement is a must if you can! Being in a real work environment is great learning experience that puts what you learn in university to the test. I’ve been able take so much away for this experience that will surely help me in the future, such as: 

  • The difference between level of coding ability between me and others that worked on the projects. At the start I remember feeling a little lost trying to figure out their code but as I worked on these projects and I got more experience, it helped to set the bar I want to be able to reach. 
  • How important communication is, seeing how everyone communicated and explained the work they’re doing or have done either through the morning meetings or other meetings throughout the day, to get feedback on work and to show its coming along to help plan around its development, it showed me how much I need to work on my communication and ability to break down my work to be more easily understood. 
  • The Difference between working in a real work environment compared the classroom and how it helps you learn so much more about the work you’re doing. 

I’m looking forward to a future career in game development, and this placement help to show some of the similarities between game development and software development.

The Hamilton Robson Belfast Team.

LETS TALK.

Want to find out how the subject of this blog could help your business? 

Our blended team of experts go over and above with our services to our customers, no matter what the challenge. Get in touch to find out how we can work together.