Don't wanna be here? Send us removal request.
Text
Planning a video showcase for GAFest
As part of our submission to GAfest, we need an accociated video showing all the core content in our game. Ideally this will also be under 2 minutes, unless our game takes longer to complete - which it won't so this is something to be mindful of.
To create our video, I suggested to our group that we use OBS to record a video showing, in order:
Both puzzles
The radio
Moving furniture
And then if neccesary use an video editing program like DaVinci Resolve to trim parts of the video to meet the requriements of the submission.
Ethan and Albie agreed but suggested that the music coming out of the radio should be the one he comissioned an artist to make, and I had no objections with this. Now that we had a plan we were ready to make the video.
0 notes
Text
Is our game ready to be presented at GAFest?
Our game is going to be presented at Game Anglia Festival 2025, meaning it will be played by loads of people with varying knowledge of games and their controls. Most importantly, they will have no idea what to do in our game so I need to make the controls as clear an obvious as possible. The game has four controls:
WASD - movement
E - Interact
R - Rotate Furniture
B - Pick up / Place furniture
It's really important that we have some way of communicating these to a player to make the gameplay experience as smooth as possible. There are a few approaches we could take to this, such as displaying the controls on a info screen or permantly on a widget somewhere. I didn't really like either of these because
presenting all the controls at once means the player needs to do a lot of reading which most people don't want to do just to play the game. This would lead to players misreading or skipping controls, leading to confusion.
Instead, I want to present the controls as they are needed so the player can understand them when it is neccesary to use them, cementing their purpose in the player's mind.
For WASD, I made sure to have it be the first thing the player sees because they're required to use them to access anything else in the game.
When it comes to E (interact), we already presented this to the player whenever they can press E, so no changes were needed here:
Finally, for the furniture, I added the tutorial for this in a room with a single piece of furniture, allowing the player to try these controls as soon as the tutorial is presented to them. This calls back to what I said earlier and cements the controls in the player's mind:
We did some final playtesting after adding these tutorial messages, and every player managed to interact with every system/control, so as a team we're happy with the result of this tutorial messages.
0 notes
Text
Unreal Engine: Title screen
Me and Albie had already discussed some parts of the title screen, like the name and font, but we weren't sure what we wanted it to look like. I suggested a method that I used in one of my previous project, where the title screen was something that existed in the world and it used a different camera to show it to the player:
Albie liked this idea, and we decided it would make the most sense if he (the designer) designed the title screen in Unreal Engine, and then I (the developer) developed the systems behind them.
He got to work and gave me these assets:
I really like how the title background turned out, and the use of a blur in the credits screen so you can be more focused on the text is a really nice and quality touch.
Now it was my job to implement these into the game. I had already done these systems in my previous project that I was inspired from so a lot of the code was familiar to me and didn't raise any problems.
Something different in this project though was that I needed to navigate back and forth through a credits menu. If I had made these UI elements, I might have tried to merge both widgets into one and then just set the location/opacity of the appropriate one but I was given 2 widgets to work with so I used those. I created references to their counterparts and made a back button to swap between them:
And the quit button, of course, just quits the game:
This was the result:
youtube
My only criticism is that it doesn't really feel like the ship is moving because the skybox is stationary. Ethan couldn't find a way to make this happen when he added it so unfortunately we're keeping it like that- but honestly I don't mind. Everything else in this title screen is really cool, and I'm satisfied with how it's been programmed even if it isn't exactly how I wanted to do it.
0 notes
Text
Meeting #8- 12/12/24
------------------------------------------------------------------------------
Members present- AB, TB, EC
Meeting start- 9:16
Given the time left in the project, the only things regarding the game to discuss is what needs to be polished, we all agree that we’re beyond the time threshold to add new features. Tom mentioned that another screen needed to be added to the puzzle monitor, allowing the player to select which puzzle to do. We all agreed that the only things past that are:
More furniture to buy
Audio/sfx for things like the puzzle monitor, footsteps, furniture movement
More tracks in the music player
Past that, the most important thing for us to be working on was recording our developments in our blogs which would be the other thing for us to do this week.
------------------------------------------------------------------------------
I already mentioned that I would start work on the puzzle monitor features, but this shows anything else I may work on today.
0 notes
Text
Goals for 12/12
today is basically the last day of development, so it's all about polishing the features we already have. The trello has a few outstanding things regarding the puzzle monitor, so I want to start here:
0 notes
Text
Research: Feelings of isolation in space
One of the responses in our feedback form mentioned how our setting and character, a single person alone in space, could give a feeling of isolation:
This was a really good point, and if it something a lot of players experienced it would really go against the cozy and relaxing vibe we're trying to give to the player. To combat this, I wanted to do some research into the emotions that astronauts face in the real world.
This article highlighted that yes, being in space really can have impacts on the mental health of an individual due to the isolation and lack of a connection to an actual planet, or a large group of people. This means that our player, who should have a connection to the character they're playing due to things like our first person camera, might also find that the environment of space isn't cozy.
So naturally, I wanted to find ways that astronauts reduced the impacts of these feelings of isolation and mental health strain. This led me to an article published by NASA, showing how people aboard space stations deal with isolation:
It references a system called C-O-N-N-E-C-T, which is a thought training exercise that aims to get an individual to feel more connected to a community while having to isolate themselves, they even provided an image to portray this:
What I thought would be really cool, and a way to portray my efforts to improve the cozy feel of the game, is to put this image as a poster in game. I asked Ethan, who was already making a different poster at the time, and he said he would be able to add this. I'm happy with my developments and research here- there's definitely a link to space and mental health, but it doesn't have to be negative.
0 notes
Text
Unreal Engine: Letting the player move furniture
Based on my research, I knew what I wanted my end result to look like here. A simple, pick-up & place mechanic that also allowed you to rotate the object you were holding, while show a hologram of where it would be. This was incredibly similar to how Lethal Company did it, but I think it's good to work to such a strict end goal because it would aid in my decision making.
To start, I needed to know if my player was picking up something, and what they were picking up. From there, I could set create a new object, the same class as the one they picked up, that would serve as a preview of where the player would end up placing them.
To get the first two things I created 2 new variables, IsHoldingSomething & Held Actor. To put them to use I used tags to the if my player interacted with an object that could be picked up (out hit location comes from the interaction line trace):
Then I thought I could just set the location of my HeldActor to the HitLocation of my line trace, but for some reason it only worked when I actually hit something. I took some debug code I wrote when first making my interaction line trace and added the output of the HitLocation:
As it turns out, if the OutHitLocation doesn't hit anything, it will return 0,0,0 (which makes sense now that I think about it):
I noticed that there was an OutHitTraceEnd output pin, which sounded like what I wanted so I tested what the output of that would be:
And sure enough it would always give me a number I could use. Now I was able to write code that would either set HeldActor to the appropriate location depending on if the line trace hit something or not:
And this worked, but I was missing something. I wanted the furniture to snap to the closest floor surface- which I thought I could achieve easily enough with a line trace:
This custom event uses the output of the first line trace to make a new one from the location of the first one, like this:
I would then use the OutHitLocation from this to determine where to place the object:
But I quickly ran into a bug when the player looked too close to the ground, and it sent the furniture to 0,0,0:
While trying to think of a fix for this, I went into a different part of the code and wrote something that allowed the player to put down the furniture they picked up, while removing the initial thing they picked up (while destroying the original piece of furniture). This uses a new variable, ActorToRemove, which comes from HeldActor when the player presses B without holding something:
And sure enough, while doing that, I realized the solution to my problem. I needed to give my PositionFurniture event the TraceHitLocation of my first line trace, and then just use that as the location of the actor if it hit something:
Now that I had fixed that bug, the system worked like this:
youtube
Obviously, this wasn't right, but it was close to what I wanted it to do. Because of this I realized that the line traces I was using to set the position of the furniture were actually hitting themselves, causing the glitchy behavior. Luckily line traces have a ActorsToIgnore input, so I could do this:
And got this result:
youtube
So now I can move it around but there a a few issues:
I can "surf" on the furniture because I am colliding with it
I can't repick-up the furniture after placing it.
The second one is an easy fix- I'm checking for a 'Movable' tag here, which isn't initialized on BeginPlay, instead it was just added in the viewport, so I fixed that here:
As for the other issue, I knew it was because I was colliding with the furniture, but I didn't know how I could tell HeldActor to change its collision without a direct cast.
I tried SetActorEnableCollision:
Based on the description I didn't think this didn't actually do what I wanted it to- it was worded like it would then let me set the collision based on if this was true/false, but it worked!
I also added a rotation system using the knowledge I had gained from making the movement system to allow the player to have ultimate customization freedom:
After those bug fixes, this is the result:
youtube
Now this works great, aside from the fact that you could stack the furniture on itself to place it mid-air. Luckily I knew an easy fix, which was just adding ActorToRemove to the line trace ignore list, which I imagine is the same way Lethal Company did it:
And that fixed that issue. Overall, I'm really happy with how I developed this system, from conceptualization to the finished product. I went in knowing what my end result should look like, and while I wasn't 100% sure how I was going to get there, I skillfully iterated on my code to get a good end result.
0 notes
Text
Research: Furniture moving systems
Now that my focus is on this furniture moving system, which should really tie together our game's cozy and relaxing feeling, I wanted to do some research and see how other games went about doing similar things.
Lethal Company:
youtube
The way Lethal Company does their system is really close to what I initially had in mind. It's literally just "pick up, rotate, put down" with a hologram preview. I really like the way furniture snaps to the counters and drawers. The sounds are also really immersive and heavy for the large pieces of furniture which is a simple but really effective touch. A small criticism would be that it's hard to do micro adjustments on big furniture items, but I may be able to find a solution to this during my own developments.
Fallout 4:
Fallout has similar mechanics to Lethal Company, but it incorporates more systems to make building & moving furniture a more complex system that requires you to manage resources. First of all, you can scrap junk items (shown from ~0:1:30-0:2:00 in the video) to get materials that allow you to place furniture. This is an interesting system and adds depth to the building mechanic but is unnecessary in the game we are making- we already have resource management in the form of the credits you get from contracts.
Something that I do like in this game is the "snap" mechanic that some furniture has, where it senses it next to another similar tile and locks itself to a desirable position (shown at 0:3:30). This really helps the player design place furniture, but could also limit some freedom in their placement. I'm not sure if I want to implement a system like this into my simple furniture movement, but it's something to think about.
The Sims 4:
youtube
This game has a completely different perspective to our game, but I wanted to look at it because it's one of the first things I think of when I think furniture movement/customization in games. This video shows the process of building/customizing a house and honestly, there's not much I can apply into our game. One thing that I liked about The Sims though is the almost endless amount of customization. There's hundreds of fridges, thousands of wall designs (each with their own color variations), it really allows for a players creativity to shine through. I think if we had time, individual object customization would be a really important thing to aim for but at the moment it doesn't seem like something we have time to implement. This is especially true if you think about the fact that we are using mostly free assets, limiting how much creative freedom we as developers have over them.
0 notes
Text
Goals for 6/12
Now that I've implemented the playtest feedback, I can work on implementing our final system, moving furniture. I created a card on the Trello to help find out all the systems that would make up this:
0 notes
Text
Making changes based on feedback
Now that I know what changes to make, I went through them one at a time:
Clearly Identify which document is the original/copy:
To do this, I added to the headings of each document. This isn't a flashy fix, but I don't think it really needed one, so I'm happy with how this looks.
Clearly show how many errors are in a contract document:
I was just going to add a text block with the total amount of errors, but Ethan suggested that I could just bind it to a variable, as it was already handled in the widget anyway so it wouldn't be hard to do. He was right, and all the code I needed was this:
Again, nothing flashy but this is crucial player information and I think I've displayed it in an effective way here.
Push the player to read the E-mail before the contract
The first way I did this was just by putting the Company E-mail button before the Begin Contracts button:
Most people's brains scan left to right in situations like these, and when I watched people playtest it only confirmed this when people tended to open the contracts before the E-mail.
Of course, I couldn't just rely on this so I also added a small notification icon to the E-mail, to attract the player's attention:
This would be infuriating if there was no way to get rid of it, so I was sure to make it invisible after it was clicked:
Here is the result of these changes:
youtube
I'm really happy with the impact these change will have. Of course to truly find out if they are impactful we'll have to playtest again, but until then I'm satisfied with my outcomes here.
0 notes
Text
Reflection after playtest feedback
To help direct our team to make changes directly influenced by the feedback, I created a new card on the Trello which mentions things that we discussed when reviewing what our playtesters wrote:
This now gives me clear goals for tomorrow before we work on adding anything else.
0 notes
Text
Acquiring feedback + reviewing it
Like every other project, we wanted to acquire feedback to find out if we were going in the right direction with our game. I specifically wanted to focus on two things- was the game cozy? and did the puzzles work / make sense?
Again like previous projects I made a google form and each of us added questions we all thought we all wanted feedback on:
I included this question not because I thought players would find actual bugs, but instead sometimes a player may think a confusing feature/mechanic is a bug. This is a good way to catch that kind of confusion. For example, the response mentioning the music track told us that we need to double check how loud each song is relative to each other.
This was added by Ethan (designer) and while it's good that people don't hate the look of the game, it doesn't really give me much to expand or reflect on.
I added this question to further help me understand if player's agreed with the cozy vibe of the game. Overall, yes.
However, there are some good comments mentioning how we failed to make it cozy. Response #2 mentions the rough metal walls feel cold and industrial, and response #5 mentions being isolated in space which could be stressful/not cozy. After some discussion, Ethan said he could adjust the wall textures to try and improve the feel of them, and we all agreed that as more furniture is added to ship, the feeling of isolation should diminish as you think less and less of it.
Again this is good, it means Albie's style of writing was immersive yet understandable enough to the player to where it didn't hinder their grasp on the mechanics. I don't think there's much to improve on here, if we add more company E-mails they should be fine in his current style- and Albie agrees with this.
This was something I was keen to get feedback on. While watching people play I noticed a few different approaches:
players understood the puzzle very quickly & got both errors.
players understood the puzzle, but stopped looking after the first error.
players clicked on the contract before the e-mail, then backed out because they were confused (then read the e-mail and understood).
player's just clicked on every button to solve the puzzle, regardless if they had read the e-mail or not.
It was really interesting to see people approach the puzzles in their own unique ways while still falling into a general approach, and I talked with the team to see how we go about solving some confusions/issues player's had. We decided it was important to:
Clearly identify which document is the copy/original on the contract menu itself
Clearly show how many errors are in a document/contract
Push the player to read the E-mail before the contract by positioning the E-mails to be in a clearer spot (and maybe adding a visual thing like a notification symbol?)
Add some kind of minor penalty if the player clicks an incorrect button (expanded on this later in another question)
1- Difficult , 5- Easy
I was expecting this kind of response, although I would like there to be some kind of stakes to these to make them more engaging. Maybe that would remove the chilled, cozy vibes from the game though so I'm not sure.
Some really good feedback here, highlighting both the strengths and weaknesses of what we made. After discussing with the team we 100% want to add a label of Original/Copy to the contracts, and response #8 does talk about ways we could increase the difficulty which again is something I'm on the fence about.
Response #2 mentions the grate texture on the ground being too big, and Ethan agreed and said he could try and find a way to shrink it while still retaining the blue glow from the floor.
0 notes
Text
Meeting #7- discussing steps needed to start playtesting
------------------------------------------------------------------------------
Group agrees that playtesting is a must, so we discussed what we needed to get it there. Tom mentioned that the biggest thing we’re missing is the connection between the Puzzles and Room Building. He stated that to do this, the system to reward the player after correctly completing a puzzle needed to be finished. This required:
A visual element telling the player they got credits when they got a puzzle correct (ker-ching cash register sound)
Letting the player see their credits
Puzzles closing themselves on completion
Adding ambient SFX
Ethan said he could take the first point, and Tom took the second and third.
Tom also mentioned he wanted to add an actual model to the radio, and Ethan shared a resource that he found assets for the game from: Sketchfab - The best 3D viewer on the web. He also added links to specific assets onto the GitHub Repository.
Ethan already started on a playtest form for our playtesters- we agreed the questions should be mainly about the vibe of the game, but we can also ask about the mechanics we have in at the moment.
Albie will work on a third, more difficult puzzle to add to the vertical slice.
------------------------------------------------------------------------------
0 notes
Text
Unreal Engine: Monitor/Puzzle functionality
I found some settings in the widget editor that allowed me to manipulate the margin on my buttons/text:
I used these to create better looking screens on the monitor:
The text is now more focused on the center of the screen where the player's eyes tend to be, making it look neater and more cohesive.
0 notes
Text
Unreal Engine: Making automatic sliding doors
This is something I wanted to quickly add before our first round of playtesting, to really round out the player's ship.
I didn't want a door the player could interact with(e.g. by pressing E), like a door with a handle because that's a whole system in itself. Instead, and to give it more of a space theme, I wanted to make an automatic door that would slide open when it detects something near it.
First I made the model for it: 2 cubes, representing the doors, and a collision box that would tell the doors to open on overlap.
To get I doors to move I decided to use the MoveComponentTo node. I've had bad experiences using this in previous projects, but I thought this would be the perfect job for this node so it was my first approach.
I also made an event for closing the doors, which was obviously just the opposite of the open event, and assigned them to begin/end overlap:
This first attempt resulted in some weird bugs, shown here:
youtube
Just by looking at this, it looked like the overlap events were getting triggered multiple times, so I wrote some debug code to show me exactly what was overlapping with the box:
Turns out that the doors could overlap with the collision box, and repeatedly did that when they were moving, causing the buggy behavior:
I also got readings of my player's "LookAtBall":
So I disabled that component's collision just to be safe.
To fix the doors overlapping themselves, I could have made it check for the player using something like a cast, but that's expensive so instead I added a check to make sure only things that weren't the door could overlap:
Now this is the result:
youtube
I noticed that the door's opened a bit slow, enough that you bumped into them, so I made them open in 0.4 seconds faster after this, and then I was really happy with how the player could interact with them.
The video also shows a small bug where if you rapidly enter/leave the CollisionBox, the door gets confused and bugs out it's movement. i know this is because of the MoveComponentTo node, and to fix this I would change it out to be a Timeline instead. But this can be done later if I have time, the doors are in a state where we can use them during playtesting, which is a priority for us right now- we need that feedback to better influence our next actions.
0 notes
Text
Unreal Engine: creating a "spot the difference puzzle"
Making the widget
Now that I had the interactable monitor, I needed to create the widget that would be displayed on it. Just to test what I was working with, I added a canvas panel and a button covering the whole canvas to a widget and assigned it to the widget component:
This was the first result:
So the widget is there in the world, but not fully loading. I dived into the widget component's details panel to look for something regarding this, and found its draw size:
This seemed like what I need, so I upped to 2000x2000, just to see if there was a difference (I was also changing the Alpha of the widget, to stop it being really dark/bright):
So now the widget has fully loaded in, and it's just too big for the screen. This meant I just had to tweak the draw size until it fit the screen, and then make a widget that fit inside that draw size.
After just increasing/decreasing the draw size, I found the widget fit when the draw size was 1280x1080:
Then I adjusted the size of the widget to fit into this draw size. Luckily, the numbers were the same:
Now that I had the bounds of my monitor, I could add in the proper puzzle and give it some functionality.
Adding in the puzzle/making it work:
The way Albie designed the puzzles is:
you have 2 documents, the original (left), and the copy (right). You need to find the typos/incorrect info in the copy, and click on it.
My biggest problem here as a developer was: "how can I let the player click on text?" A text block doesn't have an OnClicked event, and would I need to make each word individually clickable? I was really confused, so I asked Albie to make an example puzzle so I could better solve this problem.
He then sent me this:
When I saw this, I immediately thought of how buttons looks when you place them as a child in a box:
This created lines, and I could then put text blocks in these lines to create the fields (age, species, claim type, etc.).
This is what that looked like:
To get the white background, I made the buttons transparent and then added a border to my scrollbox, making it white. I also made it so you could only click on the copy document
Now I had a basic design, I could add functionality.
When the player clicks the correct line of text: it should turn green
When the player clicks the wrong line of text: it should flash red.
This code was cool because it introduced me to a new kind of cast, which didn't load anything in memory:
Instead, it's just a kind of check to see if the thing you put into the cast is the thing you want, in my case I'm putting in Widget Object Reference and seeing if it is a Text Object Reference. If it is, I'm allowed to make changes to it like I would normally with a TextBlock.
Now I just had to call this event when I clicked on a correct or incorrect button. Unfortunately I couldn't find a way to see what button I've pressed without using the OnClicked event, so the code looks a bit messy:
(yes, its one event for every button)
But it's not inefficient by any means, and the function itself is modular so I'll never have to change this wall of code ever again. I'm happy with this code to move on.
Here is the result of it all:
youtube
It needs:
a more polished/designed UI
Audio
Functionality past red/green colors
But the systems I've made are really cool, and I've learnt a lot about widgets and casting from this, resulting in some really cool and efficient code that I'm happy with and proud of making.
0 notes
Text
Unreal Engine: creating an interactable monitor
This monitor I'm making will be responsible for holding the puzzles in game. I'd prefer it to be an actual computer terminal or laptop, but I'm just making a quick model of it to test the systems I want to add:
This actor has:
a camera to use with the SetViewTargetWithBlend node
The screen itself (just a cube)
the backing of the screen (also just a cube)
a widget component, which allows me to place a widget in the world rather than just on the screen:
To interact with the monitor, I'm using the Blueprint Interface again, because I knew this how I wanted every interactable to work so I had no reason to change it here:
The code to enter the monitor looks like this:
And to exit:
These all used systems I was familiar with, so implementing them was really simple, but I ran into one bug when spamming enter/exit monitor:
youtube
Me and Ethan spent a good 10 minutes trying to use an IsInMonitor variable and delays to lock the player into the camera transition, but they could still spam enter/exit and get unintended results.
As a hail mary, I just ticked the "Lock Outgoing" box on the SetViewTargetWithBlend node, just to see what happened, and it just fixed it:
youtube
Now I have a really smooth camera transition both ways. I'm happy enough with this system based on the time put into it, I think the real challenge will come from adding a widget to this screen.
0 notes