BSc2a – Vertical Game Jam

Magic time of the year, in the middle of our first unit in year 2 we’re doing a game jam, with 16 students as well!

In my effort to help setup the group chats I seem to have also ended up with a creative lead in the project, over the course of a few hours we managed to form an idea using a mix of whiteboard, miro and noting numerous ideas over discord, and clearing some confusion about which idea we wanted to go with.

I focused on writing down the official idea we had so everyone would be on the same page as a lot of random ideas were thrown in the air and people weren’t sure what we’re sticking with. A slight hurdle we had in communication was we previously agreed to meet online after the briefing to discuss our idea, two of us had gone into the uni and still joined discord but they started working on a different idea anywhere, they had good intentions with diversifying our initial pool of ideas but brainstorming multiple initial ideas is to mainly clear roadblocks when people can’t decide on what they want to start with, our first idea had stuck really well with everyone and we had quickly built from that.

Felt like a really good start yesterday, it’s overwhelming organising the efforts of 16 people and I’m trying as much as a can to avoid being a ‘dictator’ where I want and value input from everybody so they have a say in the direction of the project.

We were supposed to have 2x year 2 indie devs however one of them was put into 2 groups and by the time they got back in touch with me they were already involved with the other group which leaves us with 2x year 2 game devs, a single year 2 indie dev and single year 3 indie dev. The year 3 dev has helped a lot with setting up github and letting me know how the dev process will work regarding tasks for the game jam, I haven’t yet managed to get much input from the other devs though one has fallen sick as well which is unfortunate timing for us, I’m comfortable doing as much as I can to fulfil everyone’s vision for the mechanical side of the game.

We’re using Trello to setup tasks for everyone to do, I’ve attached my name to say I will set up the player mechanics, and added descriptions to describe what the other tasks entail.


DAY 2

We’ve had a big discussion on some of the ideas of the game and some issues some people felt, largely the confusion between what assets are needed as well as what will or will not be 2D.

Lots of weird solutions coming from me.

I wanted to pass through a variable to this function but can only connect one in, I can’t figure out how to make it only pass through one. Used a select instead.

Great, the remove organ can pass through a listed organ bool to set to false, I want to further pass this reference to a function “regen organ” with a timer HOWEVER I just realised you can’t pass through inputs to a set timer by function name.

I’m having trouble passing values through to be adjusted. Thought best solution would be to put removed items in an array to add back as a queue, removing item at index 0 at a time. Couldn’t figure out a way to get bools or strong to work, found it best to store index numbers to use for select function.

forgot I can’t trigger multiple event instances on timers, instead I’m just going to make an event/function for each organ/limb

Goodbye hard work

new system is to

I did not like setting up selects each time so I’ve switched to using a struct.

The structs after I actually understood them made perfect sense and helped make the organ management work like a charm. I needed to track both the names as string whilst also track if the player did or did not have them, with bools I couldn’t track the name so much and with strings I couldn’t track if there were in the

Using an index number as a numerical “identifier” made it really easy to access stored strings and bools in the array.
This came in the most handy when it came to calling the organ’s functions with an integer passed in, branching from all the buttons used for the surgeon simulation widget.

PlayerBlueprint

Structs helped so much setting up both setting bools to false and calling needed functioned, and with set var by ref and an append string for the function call for calling the new functions to call regenorgan.

I originally had one regen function to call for regenerating each organ however I realised I could set once timer per function at a time (it would have used an integer array as a ‘queue’).

DAY 3:

optimisation We had a switch to go through 4 different set string functions, it took me a second to realise we can use the int being set to select a string to put into the set function instead.

I’ve used an array to track what the oldest organ in queue to regen is.

I’m finding a lot of difficulty documenting work as I’ve gone along, each day I’ve been in call with my game jam team for roughly 9-12 hours while working on the game. A lot of work happens at once and i try to get it out before i lose my thought process.

I spent a lot of time on day 3 working on making foodpoints decrease the regen timers for the organs.

First, when the timers are initially being set, I’ve made it check if any of these points are available to reduce the set timer using available points. The next complicated part was I wanted picking up a food item to update all existing timers, this was the hardest task so far to get working smoothly. I figured out I could use a string array as a ‘queue’ to track the oldest timers first then use that string on index 0 to find the shortest remaining timer and feed points into there.

Lots of trial and error went into this. Originally this function was on the collectible and I needed to use a loop but the actor only have ‘while loops’ which triggered infinite loops every time, so I moved it to the character to use a for loop.

I had an issue where lungs/livers weren’t coming back and I spent 2 hours debugging trying to figure out why it wasn’t working by adding print strings at every point I could to see what was happening to the data – the index numbers being used for the regenliver and regenlung functions were mixed up.

Last major issue I had was after setting the new timer and updating the remaining food points value, the math was off, I was getting the timer remaining again when setting the new variable which was getting the updated time. I’ve stored it in a local variable to retain the value after it gets changed.

Elo, our year 3 dev, ran me through how to set up a material using textures


Game Jam reflections:

Working in a team:

I’ve had a really pleasant experience with the game jam, the people I worked with were very sweet and committed to our 5-day project and we want to work together again for the global game jam in late January 2024.

I set up a group chat when we got our teams so we could introduce ourselves ahead of time and get comfortable which was a good first step, we eased into the brief so much more smoothly and very quickly progressed in idea forming stage. I helped set a lot more of our ideas in stone and by trying to guide the course of our efforts ended up taking more of a leadership role.

My work involved:

An important step I found I had taken was applying knowledge I had but never really tested before such as structs for handling multiple data types under one name, I used one as an array for a list of data but apparently achieves the same as an enumerator.

This was my first time using Github in a group project, it took some time to understand how every dev works on their own branch and merges to main when ready, and can make backups along the way incase anything goes terribly wrong.

Where I felt things didn’t go too well:

The biggest stepback I feel the project had was a lack of developers for blueprinting, our only other game dev was ill this week, one indie dev went with another group and our remaining 2 indie devs didn’t have much blueprint experience.
A friend of mine from game dev explained to me how much he preferred the indie dev curriculum explaining how they also taught both blueprinting then eventually C++ and given this I thought indie devs would be more comfortable with blueprints however they are much more comfortable with the more art side of game dev and level editing.

Because I thought the indie devs were comfortable blueprinting, I arranged some tasks for them to do, atleast for our year 2 indie dev I waited on him for blueprints I ended up not being able to use and had to quickly re-write. Our year 3 indie dev set up the main menu and some good initial blueprints such as an early version of the customers, food and foodpoints in the game.
I had set up our initial important tasks up and divided them among our dev team, while waiting for the time limit and day blueprints I focused on refining the blueprints that the other dev made as well as my own, I particularly spent a lot of time working on the system for handling the data for the organs (the regen timers, then applying foodpoints to the first in a queue array).

This project was overall great for testing what I could do in unreal engine, I used to hate even the thought of working with arrays but now I love them.

Things I could do next time to improve include:

  • Familiarise myself with the skills and strengths of the people I’m working with especially if I’m setting them tasks.
  • Prioritise core mechanics over fleshing out initial ones.
  • Public vs private things, a lot of code feels repeated specifically casts which i know is more costly on the engine performance, I want to see if I can

Leave a comment

Your email address will not be published. Required fields are marked *