Author: Kai Pearson

  • Unit 8: Devlog 3- Enemies

    Firstly I used my knowledge from setting up the camera system to set up a spline and movement system for the enemies

    I Then created a parent blueprint with stats that I could change for each enemy and also make them move along the spline

    Currently the deletion at the end doesn’t function but it is not as if I have the damge dealing system ready anyways.

    To spawn them in sections I initially created this:

    Which results in a manually entered sectioning of:

    (I am using place holders since I don’t feel like modeling and learning to animate currently)

    I researched how to format my waves easier and luckily found out about data table from Unreal Dev Hub (2024). Learn How to Use DATA TABLES in BLUEPRINT to Set Actor Values in UE5. [online] YouTube. Available at: https://www.youtube.com/watch?v=L1hz3tqg5QQ [Accessed 15 Apr. 2026].

    This may not be the most effiecient way but it works

    I need to add a timer/ When the enemies are killed, cooldown to the waves spawns. Since they currently spawn 5 seconds after the other one, with no time to place towers or take a breather. (Replaced by the start wave button)

    I used this video by Gorka Games (2023) To help me create the health bar above the enemies heads. How to Make a 3D Health Bar for your Enemy in Unreal Engine 5. [online] www.youtube.com. Available at: https://www.youtube.com/watch?v=PiPq3q1CXyM [Accessed 15 Apr. 2026].

    Some of the health bar code and detecting when the enemy is dead and deleting it

    In a Later blog I need to correctly setup the deletion when they reach the end (which I noted earlier wasn’t working) and also damaging the village untill the loss screen.

    I Learnt the basics of damage numbers from Pitchfork Academy (2024). How To Set Up A Floating Damage Indicator – Unreal Engine 5 Tutorial. [online] Youtu.be. Available at: https://youtu.be/qBDnJTb9Clo?si=FFQbJKS5kVnDflXP [Accessed 16 Apr. 2026].

    However the Setup was for a first person shooter so the damage number animation calculation was based of the cameras centre up and right vectors.

    I rewrote it to work entirely off of the enemies world location with added random variation in any axis besides up. Which has the esact effect I was going for, more than what the video was.

    In my existing (old) attack code which has a reference to the enemy and can apply damage, I added the spawn of the Damage number before it applies damage to the enemy.

    The actor spawned is this widget that has a Opacity and scale animation where it grows, and becomes opaque then shrinks and becomes transparent. This is basically the same as the video, besides I used a scale box instead of a canvas panel. Why? The canvas panel is like a panel of the screen and therefore the text was like offset on a plane. The scale box is just a fixed box meaning the widget spawns esactly where the world location was. Maybe I could have used something else but this works.

    To set the damage number (from video) I used this.

    I created a function in the enemy to send its location so I can spawn the widget on it. (Replaced with unit stat collection function from unit blog)

    Then to run the setting of the damage number and also create the random jumping movement of the damage numbers I wrote this (which is majorly from the video besides the randomisation with world location instead of camera).

    The animation basically just gets its own world location and picks a end point upwards in the z direction and in any forward/backwars/Left/Right location, which adds randomness.
    Right now I have the timeline set to ease in and out of these two positions so it slows in the middle.

    All of these randomised settings and also the font and colouring may be changed in the future like with a critical hit or colour based on the element of the damage, but right now it looks like this:


    The start button functions with:

    And on the bottom of the wave progressor code earlier in this blog I added to properly show the button when either the timeout of 120 second after the last enemy spawns or all enemies are killed.

    In later blogs I would like to add models and and animation to the enemies but other than that they are pretty much fully functional and customisable with my wave structure table and parent enemy blueprint. So I may not create another enemy blog.

  • Unit 8: Devlog 2- UI / Art

    Cursor visibilty and custom mouse (temporarily removed the custom cursor until proper texture is made) learnt from: Matt Aspland (2022). How To Create And Use A Custom Mouse Cursor In Unreal Engine 5 (Tutorial). [online] YouTube. Available at: https://www.youtube.com/watch?v=8VZtDdKApeM [Accessed 17 Apr. 2026].

    I wanted to learn how to tile a texture and couldnt find a good explanation so I just tried it and https://forums.unrealengine.com /t/how-to-tile-a-texture/314742 told me to use a node and it worked.

    I used this video to help learn how to use buttons: Ryan Laley (2024). Unreal Engine 5 Tutorial – Widgets Part 3: Custom Buttons. [online] YouTube. Available at: https://www.youtube.com/watch?v=rECOCwoLKK0 [Accessed 17 Apr. 2026].

    I created a basic widget with variables to display the currencies and wave counter aswell.

    I left the all of the images as fill colours, so that in future blogs I can create and add textures to the UI.

    Here is the current Ui in game:

  • Unit 8: Devlog 1- Camera system

    I started the unreal project with a blank template with no code, as I knew I would not need a bp_character of any sort as my movement would be simplistic.

    I started by researching how I may switch between the main menu and the first level with a video by Buvesa Game Development (2021). How To Change / Load Levels – Unreal Engine 5 Tutorial. [online] www.youtube.com. Available at: https://www.youtube.com/watch?v=yj04QBEjc38. [Accessed 11 Apr. 2026].

    I also added a reference image ontop of the map I exported from blender because I didn’t want to start on the environment art but also wanted a guide for the camera path. I learnt how from EZ Unreal (2024). Step-by-Step Guide: ADDING REFERENCE IMAGES with Translucency in Unreal Engine 5. [online] YouTube. Available at: https://www.youtube.com/watch?v=5zt2ixd2CUM [Accessed 11 Apr. 2026].

    I then started researching specific ways to make the camera system I wanted but couldn’t find anything specificly targeted to what I wanted.

    So I thought of how I could create it myself and what splines I actually needed and came up with the idea of: A central spline with a object sliding along it that follows the camera. The camera is on a second spline that orbits around the central spline and always faces towards the object sliding on the centre spline.

    I firstly learnt how to use splines to move the camera target with this video by JemGames (2024). Move Actor along Spline in Unreal Engine 5. [online] YouTube. Available at: https://www.youtube.com/watch?v=dEjHHnvlLNU [Accessed 11 Apr. 2026].

    Then to create a controllable pawn I learnt the basics from this by Rushcode (2023). UE5 Tutorial: Create a Flying Pawn using a Character Pawn (not raw pawn). [online] YouTube. Available at: https://www.youtube.com/watch?v=FRwcxhF35Ig [Accessed 11 Apr. 2026].

    Though I temporarily created some of the movement systems from this video I ended up removing them to create my own custom spline movement since I don’t want the camera to be free.

    I then created a second spline and used the same movement system from before but changed the speed based off the A/D input from the controllable pawn and locked the pawn to this spline.

    Example of the movement I created, you can orbit fully around the map and stop when you want.

    May add zoom in a later blog, however this is very unlikely due to priorities.

  • Unit 8:Weekly blog 3

    Firstly I Finished up the inspiration research leaving only my audience engagement heading to write under, although I may have covered it within the inspirations already.

    I then wrote up about the game pitches and styles and what parts of the 2 I analysed that I would like to use in my game pitch.

    I then started planning some of the UI.

    I didn’t finish planning the UI and moved on to the production of the map.

    I realised that I would probably only want to create base assets in blender and not set up the entire scene within blender, to save on meshes and textures in unreal.

    So I simply create a path and cube for a sense of scale compared to the temporary character I made in the previous week.

    Next week I will export this to unreal and start working on the camera system for the game and maybe also the level selction as planned in the UI.

  • Unit 8:Weekly blog 2

    Rough Character planning
    Questionaire to answe, target audience, platform suitability, pricing, and peer feedback
    Detailed upgrades, units, enemies and waves
    Level design

    This week I mostly felt like planing, so I started with creating some spreadsheets for the wave plan, enemy stats and unit stats.

    During that I realised that so much is intertwined within itself that I should get some outside feedback and ideas.

    So I created a google form for peer feedback and also to answer some of the research topics such as the target audience, pricing and platform.

    This helped me find a few extra unit ideas and also confirm some of the values I was stuck thinking about like the amount of heroes and units I should have, and aslo how many waves I should make.

    I added all of the questions onto the research page and wrote about them.

    I started planning the units in slightly more detail, thinking about how much income/ damage youo needed to do per wave and how much the units should cost. Though I got distracted as I needed to plan a visual change for each upgrade and started wondering how I will actually create my characters.

    I looked into rigging and animation for the low poly character and created a test design although I didnt bother to actually learn how to animate, I was just going to use it as a refernce to start sketching the visual changes for each character.

    I think this Is along the lines of what I would want my low poly style to look like. Personally I quite like it. I will learn how to create the animations for unreal in weeks to come. But for now I can create textures with the UVs.

    Then I procrastinated drawing some character sketches and decided to make a basic plan of the level design instead which I added to my planning page.

    Next week I will continue to plan out the units and enemies and hopefully finish up some of the writing for my research page.

  • Unit 8:Weekly blog 1

    This week I spent finishing the proposal and initial ideas, and then starting the research.

    Firstly I created a Gant chart to estimate and plan how I will manage my time.

    I then started picking from my inspirations, key features that I should write about. I also researched further into my inspirations, looking at their reviews and age rating. This is useful to see what people like and dislike about them and also to find a suitable age range for my target audience.

    I also researched and found some game pitches to inspire my game pitch to showcase my game demo, although I am yet to write about them properly.

    Next week I will continue my research and also start the planning.

  • Escape room devlog 10: Ending screens and timer

    To make the timer and loss screen i used:

    Fcb Dev (2024). How To Make A Countdown Bar Timer | Unreal Engine 5 Tutorial. [online] YouTube. Available at: https://www.youtube.com/watch?v=-0uSTCe3VxI [Accessed 1 Mar. 2026].

    Then on the end of the timer I created the passing out effect with the node I discovered from:

    Ivica Milarić (2022). How to Create a Fade to Black (Fade Out) Effect in Unreal Engine – UE Beginner Tutorial. [online] YouTube. Available at: https://www.youtube.com/watch?v=4Ck8IBHdLic [Accessed 1 Mar. 2026].

    To create the win screen I simply used a collision box that when walked into by the player would display a widget that covered the screen.

  • Escape room devlog 9: Map and props

    I created the rest of the map and filled the interior with fab assets so I could hide the puzzle pieces behind them.

    I made the room modules in blender and uv unwrapped them to make a simple texture in substance painter.

    I used:

    https://www.fab.com/listings/c625e29d-2203-4d40-91eb-b98974686fb0

    https://www.fab.com/listings/79552e5e-ad5d-4df9-b27a-f2f69dfe3271

    To fill the interior as you can see below:

    I also added those scene circles which spawned a random piece and a different spawner for the randomised card location.

    And this chooses one of the locations to spawn the card at

  • Escape room devlog 8: Second puzzle

    I First modelled the door, card and card reader.

    Then I textured them and exported them for use in unreal

    I also took A screeen shot of the card and created a widget for when you pick it up.

    On the coding side: The picking up code I simply added a extra class a variable onto the existing linetrace branch filter I had and I slightly tweaked the left click code to detect the reader component the send a message to it to start the animation.

    The hallway and card reader are part of the same blueprint, but the door and card are spawned by the main card reader bp.

    When the reader bp recieves the animation message it spawns a card and sets it to above the reader.
    It then swipes the card downwards and turns the light on the reader green.
    Then it messages the door it spawned to open.

    The door then plays the open animation of the centre rotating then the sides sliding open.

    I coded It with the ability to play in reverse as the door blueprint is seperate from the Reader blueprint and will be used in other areas around the map.

    With the card being spawned by the reader in a location on the map, you have to find it to be able to enter the main room to escape, which is the puzzle.

  • Unit 3: Outcome

    Unit 3: Outcome

    Firstly I finalised the textures to my liking using adobe substance painters smart materials and some custom drawn masks for the runes.

    Here is how I tweaked it to look within substance painter.

    I then baked and exported the textures for use in a game engine or any program the client required.

    To prove these maps function and could be used in a game engine for the client, I imported them into unreal as a example.