It’s been a while — I finally had some time over the past couple of months to work on T5C, mainly focusing on combat and abilities. Here’s a quick (non-exhaustive) recap:
Infrastructure
Migrated from Webpack to Vite
Upgraded Babylon.js to v9
Upgraded Colyseus from 0.15 → 0.17
Switched server to ESM
Migrated from Yuka to NavCat for navigation
Added an admin screen to generate VAT textures for each “race”
Performance
Implemented a spatial grid on both client and server for distance-based entity filtering
Added StateView filtering (entities sync only to nearby players)
Introduced dirty-flag DB saves and reduced per-entity network state size
Tested with up to 100 simulated players — server still holds up well
Combat system (biggest chunk of work)
Full auto-attack rework: T4C-style click targeting, weapon-driven swings, and per-weapon abilities driving animation/VFX
Unified damage resolver with hit/crit/miss outcomes
Repeating cast loop for spells, including cast bar and spell-target cursor
Buff system, AoE abilities (e.g. Meteor Strike), and per-ability cooldowns
Ranged attacks (bow) with projectile VFX
Fire Dart / Fireball overhaul
UI & polish
Registry-based tooltip system with buff support
Dedicated cursor assets (spell targeting, hostile hover) and bow icon
Notification controller for centralized client alerts
I don’t really like the coding part too much (Claude has been helping a fair amount to do things i’m lacking skills in), but I do like the world building, and putting things together if that make sense.
So yes, current goal is to get the combat part to a decent state, then to work on improving the visuals, world building, npcs, ennemies, player feedback loop, quests and generally making it more playable.
Yesterday, I started working on implementing a decent terrain. Using Unity as my level editor, and using terrain to mesh plugin, the results looks reasonably good. It did bump up my GLB for that level from 2.4mo to 20mo (using a 4096 splatmap). It can then be compressed to 13mo using the babylonpress optimiser. I could probably use babylon.js terrain using a heightmap generated from my unity terrain but at this stage I’m overall happy with the result. About collisions, I can generate a navmesh using unity, but using terrain forces me to tweak it in blender for it to be usable by the server/client (I probably need to see if NavCat can generate the navmnesh on the fly, but minor issue at this stage).
One thing, that would dratiscally improve the overal feel is using lightmaps, and bake them using blender (I dont think I can do using Unity). I will try that this weekend.
Anyway, no more rambling, see the early result as follows:
It was getting quite hard to manage all the game data, so of course, I made a terrible decision and started making a small level editor scene where I can manage all this data/tools:
VAT baking (already existed, just centralizing here)
Navmesh Pre-baked (already existed, just centralizing here)
Spawns/Interactive elements
Abilities / Items / Drops
It’s taking shape, and even if i only use vat and the navmesh baking, it will still be useful
@oriongu Yes, I agree. Creating tools is essential to develop a game. Secondly, it is not a waste of time, as you save time by using these tools.
Also, it simplifies the creation of the game to have small tools dedicated to your game. Later, when you want to evolve your game, these tools will come in handy.
So it’s not useless, it’s essential.
Thanks for the suggestion, I did not know that library. I’m already using navcat.js from him, and it’s working great for generating and interacting with navmeshes.
To be honest, I’m a bit scared of how hard it will be to implement physics within my project, but I will check it out for sure.
About the project, I’ve been working on alot of things but nothing that I can really showcase yet:
added a green hover outline on all entities (vat instances) (a simple shader did the trick)
refactored all current data into a tidy bunch of json files (so it can be read/write to the editor).
did a few different versions of the editor, I’m pretty happy with the current version, it’s minimalistic and not too complex at this stage.
reworking all game data to be tailored for a level 1 - 10 experience
working on creating all the missing assets not included yet (images, meshes, animations)
reworked login screen, character selection,
reworked character creator screen, now includes stats selection and four presets
massive re-work on the combat and improving the overall flow
– started to narrow down exactly how the combats works.
– made the choice for every skill/ability to be instant cast, but with cooldowns.
– depending on the weapon equipped, clicking on a hostile entities will trigger the right animation + auto attack.
– abilities have they own behaviour (some will start auto attack like “Fireball” and some like “Bless” will just trigger once)
– added some debug tools so I can test different max levels characters with a different set of skills/abilities/items
– still lots of work here, but the combat flow feels definitely better.