Friday, March 29, 2024

Game Gen - Week 6

 First Playtest!

This week, I got to experience my first official playtest of my game. I've play-tested other games before in development, but it's really different when it's YOUR game! It was really awesome to get feedback and see how the game performed or didn't perform, on other PCs. It was also great to get some thoughts on how to make the game more fun and some neat things I can implement, some of which I have started to already!

A lot of this week was spent optimizing, adding the new enemy types, and applying some of the feedback I received in the playtest. 

Here's a short video comparing last week to this week:



This week's Main Focuses:

Lighting Overhaul for Performance and Atmosphere

First up, I've updated the game's lighting. This was a careful balance to strike; my goal was to enhance performance without sacrificing the unique atmosphere of the game. After some experimentation, I'm happy with the results but I think there's still room for improvement. The game still retains its distinct feel, but now hopefully runs smoother.


Introducing New Enemy Types: The Brute and The Ranger

I've added two new enemy types to enrich the game's challenge and diversity. Meet the Brute and the Ranger. The Brute is a formidable foe, stronger but slower, adding a new level of strategic combat. On the flip side, the Ranger is quicker, weaker, and capable of attacking from a distance, forcing players to rethink their approach. These were fun to create albeit still challenging to get the behaviors just how I'd like them. Still a work in progress, but I think the new enemy types definitely add more fun to the game. 


Weapon Durability Mechanics

Based on some feedback in the playtest, I'm also in the process of creating and fine-tuning the mechanics for weapon durability. This feature will add an extra layer of realism and require players to think quickly if their weapon breaks while they are using it. 


From Sprint to Dash: A New Movement Mechanic

Another significant change is the transformation of the sprint mechanic into a dash mechanic. This also was based on feedback in the playtest and I couldn't be happier with the change. Not only does it fit better with the game's overall pacing, but it also uses mana, adding an additional strategic element to its use. I'm still adding some visual flair to it, but I'm happy with how it enhances mobility while still costing something.


User Interface and Interaction Updates

On the interface side, I've made some slight edits to the UI to improve usability and aesthetics. Additionally, I've changed the magic use from the R key to right-click, which feels more intuitive and aligns better with player expectations. I also added a pop-up text notification when you get close to the weapon racks so you know to pick up a weapon. 


Removing the Ability to Jump

After some thoughtful talk in the playtest, I decided to remove the ability to jump. It's definitely more useful to use the sprint and pushback now that you can not jump, and helps prevent the player from breaking the game as easily. 


Implementing Object Pooling for AI

Lastly, I've started implementing object pooling for the AI. This is a technical improvement to enhance performance by reducing the overhead of creating and destroying objects. It's a behind-the-scenes change, but it's crucial for maintaining a smooth gameplay experience, and it's been a cool challenge to get into more intermediate/advanced areas of Unreal Programming.


There's still much to do, but seeing the game evolve with each update is incredibly rewarding. Your feedback has been instrumental in this journey, so please keep it coming. I'm committed to making this game the best it can be, and I can't do it without your support. Thank you for being part of this adventure. Until next time, happy gaming!


Friday, March 22, 2024

Game Gen - Week 5

This Week's Dev Dive: Major Strides & Cool Vibes!

Alright, this week has been nothing short of a rollercoaster, and I'm here to share the ride with you! I've taken some giant leaps forward in making this game not just playable but something you'd want to keep coming back to. 

Here's a Video to Demo the differences from last week to this week:


Gameplay Loop: Rounds & Waves Are Here to Stay

I've finally cracked the code on the whole rounds and waves issue, making the main gameplay loop a lot more engaging and fully functional! It was a bit like trying to solve a puzzle in the dark at first, but I  did it! Now, I can start to tweak the curves and feelings of different elements in the gameplay loop.


Sounds Effects and Music: Bringing the Game to Life

This week, I also turned the volume up (literally) by adding some free sound effects and a music track I made. It's amazing how much life a bit of background music and well-timed sound effects can add to a game. This really made the game start feeling more immersive. 


Lighting & Looks: A Visual Feast

I decided the game needed a bit more pizzazz visually, so I dove into lighting effects and gave the game's aesthetic a major makeover. I tried to add a feeling of intensity and stress while still being fun to look at. The game now has this vibe that just pulls you in, making every moment on screen a treat for the eyes.


New Moves: Pushback Ability Unlocked

Ever felt like you just need some space? Well, now your character does too! I introduced a new pushback ability that adds a whole new layer to combat. I included sound and Niagra particle effects to add to the feeling of the pushback mechanic. It still could use tweaking, but it's already become one of my favorite features, and I'm having a blast testing it out.


UI Upgrades: Knowledge is Power

Last but definitely not least, I've spruced up the UI, including a pause menu that's less sleek than it is functional, but does the job. Plus, I've added more info on-screen to keep you in the loop about your stats and the game state. This is mainly for debugging, but some of these UI elements will stay in the full gameplay. 


Looking back at the week, it's pretty wild to see how much I've accomplished. It's moments like these that remind me why I love game development - it's challenging, it's rewarding, and most of all, it's a lot of fun. I've got more cool stuff in the pipeline, so stay tuned for more updates. Keep the feedback coming, and let's make this game something truly special! Cheers to more coding, more breakthroughs, and more gaming! 

Thursday, March 14, 2024

Game Gen - Week 4


This week, we really dove into many more of the deeper mechanics of Unreal Engine blueprinting and gameplay. We focused mainly on further developing the player character before moving on to start the actual gameplay loop mechanics. This involved delving into the math for curves, with which I'm not super familiar. However, Vives did an awesome job helping me understand, as did my girlfriend, who is way better at math than I am! Ha!

This week I had a lot I accomplished, but here are the highlights:

Improved character mechanics:
    • We added a cooldown on the attack to prevent the character from freezing. This involved the mechanics of a cooldown paired with connecting it to the UI.
Improved the map layout:
Improved the AI's path-finding ability:
    • I added the use of an Environment Query System using Pathing Grids and looking for the Distance to the Flag or Player based on the behavior path.



Created functionality for rounds, waves per round of enemies, and the number of enemies to spawn per spawner per wave per round. 
    • This is where the math came into play. I spent time creating functions to use for the way I wanted different aspects of the game to curve over time, making the game practically uncapped as far as rounds the player can play. 
    • Vives taught me how to utilize the Master Spawner to control the rounds, waves, and amount and types of enemies to spawn. This then communicates with the Enemy Spawners in the level and distributes the number of enemies to spawn for each round. 
    • Further math is done inside the enemy spawners to keep track of each wave and the number of enemies to spawn per wave. 
    • I'm still working on the functionality here, but I think it seems to be working correctly from what I can tell so far.





I also spent a lot of time learning more about the mathematics of level and difficulty curves. Here's some of the math I worked out for my game curves to start testing in the gameplay mechanics:
    Health and Damage Progression Function:
  • This function calculates the progression of health or damage over rounds based on an initial value, a rate of increase, and the number of rounds. 
  • The formula used is:
  • f(r) = x + (x * y)
  • Where:
    • f(r) is the damage per hit at round r,
    • x is the initial damage value,
    • y is the rate of damage increase per round.
    Waves Per Round Function:
  • Determines the number of waves per round, which increases every 5 rounds. 
  • The formula is: w(r) = 2 * (r / 5) + 1
    • Where w(r) is the number of waves in round r.
    Enemies Per Wave Function:
  • Calculates the number of enemies per wave based on the round number and wave number. 
  • The formula is: e(w) = 5 + r + w
    • Where e(w) is the number of enemies in wave w, r is the round number, and w is the wave number.
    DPS (Damage Per Second) Calculations:
  • For the player:
    player_dps=player_damage/hit_time
  • For enemies (considering all enemies across all waves in a round):
    enemy_dps=(enemy_damage×total_enemies_per_round)/hit_time

    Total Enemy Health Per Round Function:
  • Calculates the total health of all enemies in a round. The formula is:
    total_enemy_health_per_round=enemies_per_round×enemy_healthtotal_enemy_health_per_round=enemies_per_round×enemy_health

    Potential Health Regain Calculation:
  • Calculates the potential health a player can regain through potion drops. 
  • The formula is:
    potential_health_regain=potion_drop_rate×health_per_potion×total_enemies_per_round

    Composite Difficulty Calculation:
  • A formula combining various factors to calculate a "composite difficulty" metric for each round. It considers the total enemy health, enemy DPS, and the number of enemies per wave relative to the number of waves. 
    From these I was able to create some Graphs to visualize what the progression curves might look like, for this I used Python.




Thursday, March 7, 2024

Game Gen - Week 3

Wow, I am actually feeling like I am playing a game when I play test! 

This week it feels like my game really became almost an actual game! The mechanics are coming along nicely, and the feel is very close to what I'm hoping to achieve in the final product. Vives and I did a LOT this week with animations and getting further into some cool technical options to use in blueprints. I had fun breaking stuff and trying to fix it as I challenged myself, and Vives challenged me, to try to use the newly gained knowledge in different applications. 
  • Enemy Development:
    • Completed the basic Enemy parent using Blueprinting.
    • Implemented Sphere traces to check if the player is within a certain radius to change the behavior tree state accordingly.
    • Utilized Box traces for calculating weapon attack hits.
    • Incorporated blend spaces in the animation and worked on the animation blueprint to change enemy states during an attack.
  • Player Development:
    • Updated the player character to a more cohesive style, complete with animations.
    • Attempted to synchronize the player's input, weapon trace, and attack mechanisms with the player, weapon, and animation blueprints.
    • Encountered a small bug in the player's trace and attack functionality that needs resolving but the attach mechanic is mostly working.
Rather than show a bunch of blueprints, here's a short one-minute video of my updated progress:



See you next week!

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...