Friday, June 13, 2025

Game Gen - Week 68

 

The Wisp Awakens!

This week has been absolutely incredible for my horror game development! I'm thrilled to share some major breakthroughs that have brought my vision to life in ways I didn't think were possible just a few weeks ago.

Introducing "The Wisp" - A Multi-Dimensional Terror

The biggest accomplishment this week was successfully implementing a brand new enemy that I've been dreaming about for months: the Wisp. This multi-dimensional creature is designed to be one of the most unsettling elements in the game, randomly appearing to jump scare and harm players in truly unexpected ways.

Getting this enemy to work exactly as I envisioned was incredibly challenging. The concept I had in my mind seemed almost impossible to execute technically, but with tremendous help from Vives and other mentors, we finally cracked it! The result is everything I hoped for and more.


Here's this Dev Log's Video! 


The Wisp's Haunting Features

What makes The Wisp so terrifying is its mysterious nature:

Distance-Based Visual Distortion: The texture of the skull shape distorts based on how far you are from it. Unless you're close enough, you can't actually tell what the shape is - it's just this ominous, shifting form in your peripheral vision that immediately puts you on edge.

Ghostly Particle Effects: We created custom particles that give the Wisp an ethereal, supernatural presence. It doesn't feel like a solid enemy - it feels like something that shouldn't exist in your reality.

Dimensional Fading: In special locations throughout the mall, the Wisp fades in and out of view. You might catch just a glimpse of movement, something that makes you question whether you actually saw anything at all. This creates that perfect horror game moment where you're not sure if you should investigate or run.

The Jump Scare Mechanic: Here's where things get really intense. Once you get close enough to investigate what you've been seeing, the Wisp has two possible behaviors:

  • It might jump away with a haunting cry, leaving you startled but unharmed
  • Or it triggers a full jump scare with a horrifying ghost face I created in Krita that comes screaming toward you

When the jump scare happens, the ghost doesn't just disappear - it passes directly through your player character, completely destroying your visuals momentarily and dealing damage. It's this visceral, disorienting experience that makes you feel genuinely vulnerable.

Learning and Growing as a Developer

Beyond the exciting new content, this week was also valuable for my growth as a developer. Vives taught me some excellent techniques for using ChatGPT and other LLMs more effectively when I'm stuck on problems I can't solve through traditional resources. These AI tools have become invaluable for troubleshooting complex issues and finding creative solutions to technical challenges.

We also tackled several important bug fixes that have been nagging at me, cleaning up various aspects of the gameplay experience. It's amazing how fixing these smaller issues makes the entire game feel more polished and professional.

Visual and Gameplay Polish

I spent time this week updating graphics and implementing gameplay tweaks that really clean up the overall experience. While these might seem like minor changes, they contribute significantly to that immersive, eerie atmosphere I'm trying to create in this liminal mall setting.

Looking Ahead

Getting the Wisp working has opened up so many possibilities for other supernatural elements in the game. I'm excited to continue building on this foundation and adding more multi-dimensional horror experiences that will keep players constantly on edge.

The combination of technical achievement and creative vision coming together this week has been incredibly motivating. Despite the challenges of balancing development with my hectic work schedule, seeing these complex ideas actually come to life in the game makes all the effort worthwhile.

I can't wait to show The Wisp in action in my next video update - this is definitely one of those features that needs to be experienced to be fully appreciated!

Next Goals:
- Work on fixes to multiplayer replication on interactable objects. 
- Continue adding further 3D models and objects to the game (I could use some help sourcing some things, since I don't think I can model everything.)
- Continue polish!

Friday, May 16, 2025

Game Gen - Week 64

 Level Upgrades! 

The last two weeks, I've mainly been focused on improvements to the level itself for the game demo. It has been mocked up, but I now get to model and texture all the assets I'll need for the level to look truly magnificent. So far, I've been working on the elevator doors, the walls, and the columns that go against the walls. I still have plenty to make, but Ucupaint has made the process much easier! I couldn't get these to upload to Sketchfab with the materials, but here are some screenshots of the materials I've been working on. 


These are the elevator doors that you will use to escape from Level 1 when you finish the puzzle.


This is one of the walls with a doorway that will be used for the main walls of the mall area. 


We've started animating the doors in the game as well, using timelines. 


I don't have a huge update this time as learning Ucupaint has been a bit challenging, but I hope to have more next report to show you all the awesome materials and models imported into my game!

My goals for the next two weeks are to continue modeling assets and creating their materials, importing them into the game, and ensuring they are configured well in the level. 

Friday, May 2, 2025

Game Gen - Week 62

 

Game Development Progress Update

This week's development on my horror game has been focused on polishing, replication fixes, and preparation for upcoming features. While there's still plenty to do, I'm excited to share the progress I've made so far!

Here's my Progress Update in Video Form! 


Adding "Juice" to the Game

I've been working on making the game feel more alive and immersive by adding various elements and adding some "juice." This includes implementing new sound effects for player actions and environmental interactions, improving UI and visual feedback with subtle animations, and adding VFX elements like particle effects and lighting adjustments. These small touches make a huge difference in creating that eerie liminal mall atmosphere I'm aiming for.

Multiplayer Replication Progress

Replication has definitely been one of the more challenging aspects of development, but I'm making steady progress. I've continued working on ensuring all game elements replicate properly for multiplayer sessions. This includes ensuring items can be picked up by all players, enemies behave consistently across clients, and player actions are visible to everyone in the session.

Inventory System Fixes

The inventory system continues to be a work in progress, with several issues being addressed:

  • Fixed items occasionally disappearing when moving between inventory slots
  • Working on replication of item pickups so all players can see when items are collected
  • Improving the visual feedback when interacting with inventory items

These fixes are crucial for the core gameplay loop, as item collection and management are key elements of the horror experience I'm creating.

Steam Multiplayer Integration

Thanks to the Advanced Sessions System plugin, the Steam multiplayer integration is about 95% complete! Just a few minor bugs left to fix:

  • Ensuring player names display correctly on the party screen
  • Fixing an issue where quitting the game as a non-host player causes everyone to disconnect
  • Fine-tuning the session joining process for a smoother experience

I'm looking forward to getting this fully operational so we can properly playtest the multiplayer aspects of the game.

Designing New Functionalities

I've continued designing several new mechanics that will add to the dream-like, non-Euclidean feel of the game:

  • Further development of the portal system that will allow players to travel between seemingly impossible spaces
  • A metal detector mechanic that will help players locate hidden items or secret areas
  • More work on non-Euclidean spaces that defy normal physics and spatial relationships

These elements will help create that unsettling feeling where physics doesn't quite work the way you expect it to in the real world.

Bug Fixing and Adjustments

A significant portion of my time has been spent on various bug fixes and adjustments:

  • Fixed player model size inconsistencies so all players appear at the proper scale
  • Addressed several replication errors that were causing desync issues in multiplayer
  • Improved collision detection in certain areas of the map

Next Steps

Moving forward, my focus will be on continuing to add "juiciness" to the game experience through:

  • Additional sound effects and ambient audio to enhance the atmosphere
  • Better materials and textures for existing assets
  • Modeling or sourcing the actual assets for level completion instead of using placeholder blocks
  • Further refinement of the enemy AI behavior

Despite my hectic work schedule, I'm making steady progress on turning this liminal, 90s-inspired horror game into a reality. I can't wait to show more of these features in action in future updates!

Friday, March 21, 2025

Game Gen - Week 56

Story Writing and Lore Building

This week, I focused a lot on furthering the lore of my horror game and giving the players a secondary objective that would encourage them to explore more around my maps. I decided to create a system I'm calling the Notebook. 

The Note Collection System

The notebook is a UI interface that the player can open and view notes they have collected from around the maps. These notes are left behind by four characters who were previous visitors to the mysterious realm the players find themselves. As the game continues, the players can find more notes from the four characters, eventually leading to an incident report-type document that uncovers more of the sinister nature of the realm they currently inhabit. 

The Notes (Actor that the players find around the map) and Notebook both utilize string tables which I've created for each character's story. This is an easy way to pre-plan lots of text for different uses and dynamically pull the relevant text based on keys of the String Table you want. It also allows for much easier localization of your game into other languages down the line if you choose to. 

Non-Euclidean Portals

I wanted to create more dream-like mechanics that incorporate the feelings of things not matching the physics we expect in everyday life, so I've been working on a non-euclidean portal system. The portal is basically a doorway that looks like it's just in the middle of a space or on a wall where the players can confirm nothing is behind it, but when looking at the doorway from the front, you will see into another level. This gives a really trippy feeling of physics not abiding to what we expect in the real world and provides a sense of mystical strangeness as well. I have some bugs that are affecting the portal traveling properly right now, but I've included a clip of what the portal looks like. 

Steam Multiplayer Integration

Thanks to Vives' diligent research, we were actually able to almost fully hook up the Steam multiplayer system using the Advanced Sessions System plug-in. This provides a much easier interface between Unreal and the Steam online systems and we were able to see the game in development mode connected to my Steam account! I'm looking forward to getting this fully set up so we can do a playtest on the level and mechanics I have so far, especially in regards to ensuring replication will work properly. 

Furthering my Unreal Technical Knowledge

Other than those systems in my Horror game, I've been researching more in-depth on the various plugins and capabilities of Unreal Engine. 
These include: 
- Learning the unreal plugin for Motion Matching. 
- Learning more about Procedural Generation. 
- Learning about World Partitioning to optimize large maps. 
- Learning more about the Water system for Unreal. 
- Understanding more efficient ways to control data sets, like String Tables, Data Tables, etc. 

Here's a brief video of some of the things I've worked on the last two weeks:

(Canva was down, so I'll have to upload my video when that is available again)
Temporary Video:


Next Two Week Goals

- Finish getting Steam multiplayer set up and do a small playtest (nothing official, just testing replication)
- Continue learning more of the technicals of Unreal to better utilize all the available features. 
- Work on the next level block out for the Horror game.
- Continue fixing the Portal system. 
- Work on medal detector interactable/usable item. 

Here's one of the Incident Reports I made for one of the character storylines the players can uncover. 






Friday, March 7, 2025

Game Gen - Week 54

 Major Updates! 

Unfortunately, my work has been pretty hectic, and I've missed the last few blogs, however, I haven't missed working on my game! This liminal, 90s-inspired horror game is still moving along, and I'm excited to share some of the progress! 

Here's a short video to show some of the progress I've made: 

Since my last blog, here are the updates I've made:

  • Nearly finished the inventory system. 
    • The players can now pick up and drop items, move them around their inventory, and move them to their main hand. The last thing I need to implement here is being able to use the number keys to "switch pockets".
  • Improved manniquine enemy. 
    • I improved and adjusted the functionality of this enemy and added some more sounds and things to improve the "spook factor". I've gotten scared many times while testing from these guys. 
  • New Enemy - The Shade: 
    • I've also added a new enemy, on which I'm still adding the finishing touches on. This creepy alien-like creature crawls on all fours and is afraid of light. The only way to protect yourself is to make sure you have a flashlight! There are still some tweaks I need to do to this enemy, but I'm excited about the progress on him! 
  • Level 1 Complete Block Out
    • I've blocked out the entire first level of the game. Now, it feels a lot more like an abandoned mall. 
  • Multiplayer Sessions System
    • You can now create a multiplayer session and/or join other existing sessions.
  • Character Meshes
    • While I still need to implement the ability for the player to choose which character to be, I have both character models in place and fully functional in-game. 

Replication has definitely been the most challenging part of this project, but it's been really fun to learn the networking and authority system in Unreal Engine. I'm looking forward to playing this online with my niece and nephew. 

It's been fun to create liminal-feeling spaces and atmosphere so far. I've tried to focus on space lighting and shadowy areas, lots of mall-like architecture like large pillars, marketing display areas, 'back-of-house' spaces for the player to go, and interesting sounds as well. 

While the sound effects I've created or added weren't picked up in my video, I still have some work to do with the SFX anyways, so I'll be excited to show you that in a later blog. For now, I do have three songs I've worked on that will play in the game, as if coming from the mall's built-in sound system. 



Future Goals: 

  • Continue to improve the functionality of AI. 
  • Work on more animations for the AI to add to the creep factor. 
  • Work on 3D Models for environment items. 
  • Continue to fix and improve overall gameplay. 
  • Start level 2! Including more, different enemy AI and puzzles. 

Thursday, January 23, 2025

Game Gen - Week 47

Scary Fun Progress!

I say scary, because more than a few times I've been scared by my own weeping-angel-like mannequins while working on this project, and it's starting to feel like it's really coming along!

Wow is multiplayer a challenge though! It gets quite confusing sometimes when having to keep track of clients and servers and who has authority, etc, but it's quite a rewarding feeling when it all get's figured out! 

I missed out on blogs for a bit due to the holidays but I'm happy to show the progress I've made since my last one!

Here is a quick overview of what I've accomplished since last time: 

  • Furthered the interaction system and created a player inventory system complete with UI. 
    • I improved the player inventory UI interaction to allow for swapping things around between your main hand, pockets, and backpack inventory slots.
  • Created item spawners and a spawn manager.
    • The item spawners spawn four of the same item and a spawn manager selects random spawners to spawn each item type and a certain amount of each type as desired.
  • Created a multi-player-ready puzzle for the main goal of this level. 
    • The puzzle is a fuse box with some fuses missing. The fuses can be found scattered around the level and once all the fuses are returned the door to the next level can be opened. 
  • Weeping-Angel-inspired enemy. 
    • This mannequin enemy blends in with the non-NPC mannequins around the level. Once you look away, however, you might be surprised what's behind you when you turn back around! 

Here's a short video of the progress I've made:


The main challenge has been getting everything not only working but then also replicated to work in multi-player. It's starting to make more sense, especially as we work on different systems and understand how the architecture works for servers and clients. 

I'm most proud of creating the puzzle, as that was the most challenging thing so far to get working for multi-player. I don't want to share all of my secrets, but here's some of the functionality. We had to do a lot of back-and-forth and iterating before we finally got this all working properly with multi-player interactions. 

Fuse Box Event Graph

This is an overview of the events needed to replicate the fuse box. 

- On interaction, we check who is interacting and what they are holding. If they are holding a fuse, we then continue to set the fuse added (if it's needed).

- When the player adds fuses, we run the "Add Fuses" function which iterates over the fuses in the "parent fuses" which are objects pre-set in the Fuse Box blueprint. These have an associated color tag which we check in the "check fuse color tags" macro to find which fuse "slot" or parent belongs to the color the player has. When we find the parent color matches a player's fuse, we set that fuse "parent" as the matching fuse and break the loop, then, we move on to check if the color is still missing. If so, we set the fuse of that color unhidden in the fuse box, else we let the player know they already have that color.

- Based on if the fuse was needed or not, we either clear the hand of the player or open a widget to tell them the fuse of that color has already been found. 

Blueprint Link


Fuse Box "Add Fuses" Function



Item Spawning

The other blueprint I chose to include is my item spawner. This was cool to make and enabled me to spawn a few of the same items in one spot, such as flashlights or fuses. I also have a manager who will randomly select the spawners in the map to use to spawn items, so they will always spawn in different locations!




Overall I'm proud of the progress and excited to continue! Here are my goals for the next two weeks:

  1. Work out bugs in existing mechanics and systems, such as the inventory UI and enemies. 
  2. Add more abilities to the player along with mechanics like fear level. 
  3. Clean up the UI and continue to improve the player experience. 

Thanks for reading, and as always thanks to Game Gen and Vives for all the support and mentorship!






Friday, November 15, 2024

Game Gen - Week 37

Multiplayer Games!

This week I have been continuing to improve my knowledge of systems in Unreal Engine by starting on a blueprint-based multiplayer game. I took a "paws" on Star Paws because I encountered so many bugs that I decided to continue in C++ a bit later. For now, I want to focus on blueprinting and expanding my knowledge there as it translates well for me into C++ when I learn new functionality in code. 

Current Project: Multiplayer Horror

I want to put all of the skills I have acquired thus far into the challenging but achievable goal of creating a multiplayer game that I can release on Steam. This puts a lot of my skills to the test and pushes me toward a goal that really motivates me and is more achievable at my current skill level. Here are some of the things I've done so far for this project: 

Video Overview: 



Multiplayer Replicated Blueprints

Player Interaction with Blueprint Interface

This blueprint is the functionality that was implemented to allow the player to pick up objects in front of them. It uses a line trace to find the object in front of the player and then handles whether the player has authority or not as either the Host of the game or a joining Client. 

If the player is a client and thus does not have authority, we have to provide authority by passing the actions through custom events which set the replication for the events. Once we have the proper authority, we call the Interact blueprint interface function which is implemented on any interactable item. 



Multiplayer Flashlight Functionality

For the flashlight, we need to ensure that the players can all equip the flashlight, that it is visibly equipped to other players, and that they can turn the light on and off. For this, we mainly focused on providing authority for calling of the blueprint functions within the Flashlight itself, like turning it on or off. To allow other players to see the flashlight in their friend's hands, we enabled replication on the components that we wanted to show, such as the flashlight's mesh and light. 



Replicated Sprinting

Sprinting was the first replication we started with and is a great way to understand what is going on. Simply put, when hosting a multiplayer game, only the host of the game who started the server automatically has the authority to do anything that is not directly on the player's own computer. For example, without replicating sprinting, first, the client players who joined the host's game couldn't sprint at all, then other players wouldn't see them sprinting, so we must pass authority down the chain to allow everyone to sprint and see each other sprint as well. 



Interactable Pickup Parent BP

The parent of the interactable pickups is pretty simple. It holds the majority of replication for one, including ensuring the Static Mesh and other components are replicated in the children of this actor. It also sets up the main visible indications that it is an interactable object. Temporarily, this involves turning on a light and a Text component. 



Interaction Implementation in Child BP

Because we are using a Blueprint Interface, it makes it much easier to then just implementing interface functions inside the blueprints to prevent calling different functions from the player for every interactable item. Now, they all use this "Interact" event with custom functionality related to the specific object the player is interacting with. 




Blender Modeling

I've also made a couple of Blender Models for this game so far, which I'm excited to dive back into Blender a bit and make some of the models for different props and environment objects. So far, I've made a Flashlight, a Trashcan, and a Orbitz bottle (Anyone remember those drinks?) which in my game will be called "Zorbitz".

Here are the meshes I've made:


Simple Trash Can by zachmckinnon on Sketchfab


Overall I've been enjoying making the different mechanics, models, and hopefully some custom materials and other cool enhancements I can create for the game's immersive experience.\

Level Design for David: 

I have also continued to work with David on the level design for his game. While this has been a unique challenge, it has been a great learning experience so far! I worked more on sketches this time so we could iterate on the ideas before I started working on them in the Engine. 
The most valuable learning experiences working on this level of design have been working with people with differences in communication style from mine and working on crossing the bridge of communication to understand the requirements and ideas of the designer while still allowing for creative freedom and continual improvement on the design. 

Sketch of one area (Floor 2 in the below drawing) to better show the concept. 

Level Map Sketch to iterate on ideas for the way the player unlocks each skill in the tutorial level.


Next two-week goals:

  1. Implement the Inventory for Players. 
  2. Create a material to highlight interactable objects rather than a light. 
  3. Create Widgets for Interactions to show players. 
  4. Continue to work with David on Level Design



Most Recent Post

Game Gen - Week 68

  The Wisp Awakens! This week has been absolutely incredible for my horror game development! I'm thrilled to share some major breakthro...