Devlog #2


Josh – Enemy AI 🧠 & Modular Melee Combat ⚔️

This week, Josh implemented a basic but functional enemy AI and laid the groundwork for a modular melee combat system. The focus was on getting enemies to detect, chase, and attempt to attack the player, as well as building weapons with adjustable stats.

Enemies make use of Unity’s NavMesh system to move toward the player when within a detection radius. If the player exits that range, the enemies return to idle after a short timeout. Debug lines and gizmo spheres were added to visualise both the navmesh path and detection/alert ranges, making it easier to understand what each enemy is “seeing” during play.

Nav-Mesh-Pathfinding-Example.gif

It was Josh’s first time using the NavMesh system, and it proved to be a powerful tool for pathfinding. It offers the benefits of A* navigation without needing to manually define a grid, and it makes it really easy to accommodate level changes — just rebake the mesh after adding obstacles or geometry, and the pathfinding updates automatically.

Group aggro was also explored — the idea being that if one enemy spots the player, nearby enemies would also become aggressive. However, the feature ran into problems. Once an enemy had been alerted and returned to idle, it could no longer be re-alerted by others. Several attempts were made to fix this (tracking alert states, timers, re-alerting logic), but it never worked quite right and often resulted in enemies staying permanently aggressive. The feature was shelved for now but may be revisited later.


An early version of the melee combat system was also implemented this week, with flexibility as a core goal. The MeleeWeapon script defines all the key stats for a weapon (damage, range, cooldown, swing speed, and durability) and uses an enum to let the designer easily choose from preset weapon types in the Inspector. These presets automatically populate the fields, but everything remains editable for quick balance tweaks.

Melee-Weapon-Script-Inspector.png

This setup makes it simple to create a wide variety of weapons without needing separate scripts — just swap the enum and tweak a few values. It’s quick to prototype new weapon types and easy to iterate on balance.

Attacks are triggered via a WeaponHandler script on the player or enemy, which simply calls the weapon’s TryAttack() method. This separation of concerns — where the weapon knows how it works, and the character just knows when to use it — makes the system modular and scalable. It allows both players and enemies to use the same weapons and opens the door to easily adding special effects like knockback, stun, or burning damage later.

Durability is also built-in and only decreases when a successful hit lands. When it reaches zero, the weapon breaks and can be destroyed or swapped out. This encourages careful use and supports future ideas like weapon pickups, loot rarity, or breakable stick types.

Melee-Attack-Example.gif


Will – Meat Man UV Mapping 🌐 & Mesh Cleanup 🧹

This week, Will worked on UV unwrapping the Meat Man (player & enemy) mesh, as well as cleaning up some issues that it had. The main goal of the UV map was to create a solid base for easily creating and rapidly prototyping textures, while keeping the islands and layout relatively clean.

While unwrapping, Will found some vertices that had been accidentally duplicated while retaining face data, leading to some… bizarre issues.

The mesh required a cleanup from all areas below the selected edge loops. All of the vertices had been duplicated (probably Will’s doing), with some being disconnected and others still connected to the rest of the mesh. After cleanup, the UV map came out rather clean and minimal. There may be some stretching around the arms and legs, though this shouldn’t be much of an issue given that most of the texture will be a single colour.

Meat Man UV unwrapped 🥳

Now that this is done, the Meat Man can be exported from Blender and added into the Unity project, as textures can be worked on externally and imported using the new UV mapping.


Hakki – Player Animations 🎞️, Main Menu 🗂️ & Health Bar 🩸

Hakki completed animations for the player model “Meat Puppet,” which turned out better than expected. There are six core animations: idle, running, left attack, right attack, damaged, and death.

Hakki also added functionality to the game’s main menu:

  • Play takes you to the main level of this prototype.
  • Level Select takes you to a screen with multiple level options, including the Test Stage and Pirate Level.
  • Settings takes you to an empty screen for now, with more options planned for future versions.
  • Quit exits the application.

A health bar system was added for the player. It decreases with each hit and changes colour from green (full/near full health), to yellow (moderate health), to red (near death). The health bar appears above the player model, leaving the screen overlay free for score and time.


Currently, Hakki is working on integrating the Meat Puppet into the project with his animations functioning properly and as intended.


Eve – Greybox Level Design 🏗️🚢

This week, Eve managed to get a handle on Unity’s ProBuilder and completed the greybox for the pirate ship level. Using a variety of shapes, she built out the hull, masts, deck, and crew quarters. The ship is broken into multiple modular sections — front, front-mid, back-mid, back, masts, stairs, and more — allowing for quick changes and iterative design.

Eve also began creating modular level props, including planks and the ship’s wheel. More are planned for the coming week, such as windows, lanterns, doors, and rails, to flesh out the space with detail and variety.

It was Eve’s first time (outside of self-study) using ProBuilder. The ship hull, in particular, proved to be a complex and challenging shape to model. While it doesn’t perfectly match the proportions of the rest of the ship, it fits into the overall layout well enough to serve as a solid foundation.

Below you can see both a progression gif and the final greybox result:


Summary

The team implemented a working enemy AI using Unity’s NavMesh system, allowing enemies to detect, chase, and attempt to attack the player. Combat systems also started to take shape, with a melee framework that supports adjustable weapon stats, durability, and reusable attack logic for both players and enemies. This system lays the foundation for more dynamic weapon behaviours.

On the visual side, the team completed UV mapping and mesh cleanup for the Meat Man character, resolving geometry issues and creating a clean layout for texturing. Animations for the player were created and implemented, covering movement, attacks, damage, and death. Meanwhile, the main menu was made functional, and a health bar system was added to show player status in-game.

With these elements added, the project is starting to come together — it now has the first glimpse of real gameplay: a player that can move, fight, and be attacked within an interactive environment.


Next Steps

(Planned Over the Next 2 Weeks)

  • Refine the melee attack system
  • Improve enemy movement and AI
  • Implement and texture the greybox level layout
  • Add enemy and item spawns
  • Place props and obstacles in the environment
  • Configure lighting and tone for the level
  • Implement attack and hit animations
  • Add a weapon generation system
  • Introduce a stick discovery mechanic
  • Enable weapon switching
  • Create and add weapon models
  • (Optional) Add basic swing/impact sound effects

Leave a comment

Log in with itch.io to leave a comment.