Weekly Update - Combat Behaviors, Server Architecture Improvements

For the past few weeks I've been working on combat-related behaviors and improvements to the Simulation Server, and I'm now starting to polish things up a bit for a video update near the end of the year.

Hi everyone!

Work on Antilia's NPC behaviors and combat systems have continued progressing along for the past month. There have been some fairly frustrating days working on the new behaviors, but also some really awesome days where things went from doom to "whoa, it's working, look at them go!" It's really neat seeing the NPCs come to life and start to act out their roles. I have heard stories of other games in development where NPC behaviors were notoriously chaotic, and having gotten just my toes a little wet it's easy to see why.

Server Architecture Improvements

Something that surprised me this month was how quickly my server architecture bogged down by creatures and NPCs. Nests across the Isle of Kasau are regularly spawning eggs, which hatch into jidou and iichii. Those jidou and iichii grow old and eventually die, and the current rates result in a population of about 1500 iichii and 800 jidou. I think 25% or less of that amount would feel more natural. I intend to dial down the spawn rates for both creatures, but considering the goal is to eventually include Antilia in Antilia I really need to see the server successfully handling higher numbers, not lower numbers.

It really shouldn't have been a surprise, as many game engines have either a practical (or in some cases a hard upper) limit on the number of active NPCs. I will sometimes optimize a function, get it running at what I initially would consider "fast" when some complex function clocks in under 1/1000 of a second, and then be disappointed when having 2000 NPCs in the world runs at less than one update per second - but that's just the math.

Warning:Technical/programming stuff!

A solution that many games use is to have a "sleep" state that creatures and NPCs can go into when players aren't around. I knew when designing the server that I would eventually need such as system and had implemented a solution for this in "update priority pools". The piece I was missing was a means for a game object to change it's update priority dynamically. Up to this point game objects were in these pools, but had to be assigned to just one at load-time, with all creatures and npcs being in the same pool.

After adding some functionality so that objects could dynamically manage their update frequency there was a dramatic improvement in performance. I could keep the Isle of Kasau over-populated with 2300 creatures, and only the creatures in a range around the player(s) get constant updates. The other NPCs don't fully go to sleep either - they just receive their updates less frequently "as time permits" by the CPU.

Info:Updates-per-second on the Antilia server are not related to rendered frames-per-second on the client. It's common in testing right now to run the server at 15 or 30 UPS while the client runs at targets 30 or 60 FPS.

With the new changes in place, game objects like NPCs on the Antilia Server can request they be placed into one of several pools to receive updates. These pools include:

  • No Update Pool - Objects like rocks that don't actually change unless they are being mined can place themselves in the "no update" pool.
  • Low Priority Pools - Objects that slowly change over time like plants that grow can place themselves in the low priority pools. These pools might only receive one update every few minutes.
  • High Priority Pools - This pool is used mostly by NPCs that aren't being observed by a player. These pools might only see an update every few minutes up to every few seconds. In this pool NPCs can still walk around and perform tasks, but don't put much load on the server because they are only updated once minute or so.
  • Critical Pool - Objects in the critical pool receive an update every time the server thread cycles. Typically 15-30 times per second. This pool is for NPCs around players.

I've added some logic so that characters controlled by players automatically tell objects around them to "wake up" and those objects can move to a higher priority pool if warranted, and so far the result has been great. CPU load on the server is down, while the responsiveness of NPCs in combat is way up. And NPCs still go about their business fishing and cooking and such - just a little slower if nobody is actually watching (slackers).

Info:The total number of players a server can support will likely be closely tied to the number of NPCs that the player characters "wake up"


The server administration tool now displays detailed performance metrics for each simulation thread, including the number of active NPCs which have a large impact on performance. At the time of this shot I was standing in the middle of a jidou iichii "war" with about 100 creatures in active (critical pool) state.

The Current State of Combat

The current state of combat in Antilia is that of a partially complete first pass. We've gone from "nothing" to "something" with regards to the basic mechanics of enemies moving and attacking, skills and projectiles, weapons and damage types, aggro and factions, equipment, etc. I've built most of the bigger parts and figured out how to roughly fit them together. But there isn't really good use of any those things yet, and there isn't nearly enough content or polish for it to be any fun. As you can likely tell from the images combat still looks and feels very robotic. I will need to give combat more attention after the video update.

The Tangled Lands region is starting to feel quite different with Swamp Iichii and Swamp Jidou frequently at war with one another. With the damage they are currently capable of a group of iichii with medium to high levels are now a considerable threat - more than I really want in what will likely be the first hostile area players venture into.

Like other gameplay systems after this pass I'll take a break from it and start thinking about what I got right vs. wrong in this first pass and start planning the next round.



A short time-lapse of the current work-in-progress "Defender's Guild" behavior. Iichii in large groups are nearly impossible to deal with right now. I had to give the character "Hero" here 5000 HP to clear them out.


There are currently many of these chaotic wars where the Iichii and Swamp Jidou fight. The Isle of Kasau in my current save game has far too many creatures (800 jidou, 1500 iichii), but it's encouraging to see the server able to do this. There are still a lot of noticeable glitches, timing, and tuning issues.

Inventory and Equipment Behavior Nodes

Last week I spend a bit of time refactoring some of the older NPC behaviors that I had working last year but were broken when I changed the behavior system to use nodes. I'd like to have as much of what we've built so far in good working order for the update.

With those two behaviors plus the "Light Firepit" behavior I have our chef in Taipii Base Camp keeping the fire pit fueled and lit, and soon I hope to have the character grilling while other NPCs resume their fishing behaviors. Combat skills require a lot of energy, and our "defender" NPCs will need plenty of food available to fuel their service.



The updated "Take From Container" behavior node.


Before sending Hero into combat he needed to be able to equip a sword, and for that matter some clothes. This behavior test demonstrates the character detecting missing equipment, and running over to these crates to take the items they need.

That's all for this week, thanks for reading!

 Read Comments for “Latest News Posts”

More Recent News Posts

Weekly Update - Status Effects, Aggro and Faction Systems

Development of Antilia's combat systems continue to move along with new status effects, "aggro" and factions systems, projectile damage, and more!

Weekly Update - Archery, Game Over Screen, and IK

For the past few weeks I've continued work on combat focusing on archery and projectiles, and work on the Animation Editor continues with the addition of inverse kinematics.

Weekly Update - Animation Retargeting and Editor

For the past few weeks I've been trying to find a way to "retarget" motion capture animations onto the 3D skeleton the Taipii characters use. Unfortunately both approaches I tried hit a roadblock, and in my frustration I turned to solving my animation woes the only other way I know.

Weekly Update - Content Pipeline Work

For the past couple weeks I've been working on the Mesh Importer and making improvements to ToiEngine's Skeletal Animation System.

Weekly Update - Targeting, Animation Woes, Lore Writing

This week I implemented a targeting system for combat but then encountered a bit of a roadblock trying to make headway with Antilia's old combat animations. I have since been doing a bit of lore writing while pondering my path forward.

Weekly Update - Skills, Special FX, Projectiles

Over the past few weeks I've been working on the Skills, Client Special Effects, and Projectile systems - and those systems are finally starting to work well in concert together.

Weekly Update - Combat Decisions

Work on creature AI and the Behavior Editor continues to march along. Hostile creatures are attacking the player now, but I have some decision to make as to what style of player control is the best fit for Antilia and its server.

Weekly Update - Eggs are Hatching, Clothing

This week I finished up work on the creature nests with eggs now incubating, and hatching. Jidou and iichii now hatch, grow, and then die. I also spent a little time on the side working on clothing and equipment.

Weekly Update - Creature Nests, Eggs, and Spawning

Last week my attention shifted from the AI Behavior Editor to the creatures themselves. While my intent was to start building a nice behavior tree for the jidou and iichii, I first needed to get them spawning and de-spawning from the world in a well-tracked manner.

Weekly Update - AI Behavior Editor is Functioning!

For the past few weeks I've been working on the AI behavior editor, and this week I am happy to report that it is now functional!

Weekly Update - Character Switching, Behavior Editor

This week I started work on an editor for AI Behaviors, with as many questions rising from the work as solutions. I also spent some time working on the user interfaces and restored the switch characters function.

Weekly Update - Combat, Server Improvements

Last week I started planning and working on Antilia's combat system, including enemy detection, an AI behavior to follow/chase another creature, and made some server improvements.

Weekly Update - Teleporting, Floating Islands

With the video update having stalled, here are a few things I've been working on in the meantime and an update on what I'll be working on next.

Weekly Update - Plans for 2023

In this week's update I'd like to present my plans for 2023 and what's next for Antilia.

Weekly Update - NPC Conversations, Stylized Text Rendering, Bug Fixes

This week I continued work on the NPC conversation system, stylized text rendering, and fixed some bugs that were in the way of the next test build.

Weekly Update - NPC Conversations, More Fishing Poles

Last week I resumed working on Antilia, adding in some new fishing poles and starting on the NPC conversation system.

Weekly Update - AMD Radeon Support, Development Pause

Last week I solved a variety of bugs and glitches when running Antilia on an AMD Radeon card, but now need to place Antilia development on a temporary pause.

Weekly Update - Cave Improvements!

This week I took a little break from bug fixes and optimizations while waiting for a new GPU for testing to arrive. Instead I worked on improving the terrain engine when used to create caves so I can complete a rough pass across the entirety of the Isle of Kasau.

Weekly Update - Reducing FPS Drops, Optimizing, and Terrain Changes

Last week I focused primarily on reducing FPS drops when crossing terrain page boundaries and making a few optimizations. I also started on some improvements to the terrain system that'll finally allow for collisions with the cave walls and ceiling, and placing clutter on it.

Weekly Update - Detail Settings, NPC Conversations

This week I focused on issues that came out of last weeks test, a settings window, and a system for NPC conversations.

Weekly Update - Setting up a Test Server

Last week I wrapped up the remaining tasks and set up our initial test server!

Weekly Update - More Bug Fixes, Merchant Shops

My focus this week was to resolve the remaining issues that would prevent us from testing, and then I also added a system to buy things from merchants and worked on the Isle of Kasau some.

Weekly Update - Bug Fixes, Request Batches, Merchant NPCs

My priority continues to be preparing Antilia for initial multiplayer testing, but along the way I took the time to add merchants you can sell excess items to.

Weekly Update - Testing Preparations, Crossbows, and Blunderbusses

This week I've been debugging and preparing Antilia for initial testing, reworked the item selection code, and added decorative crossbows and blunderbusses!

Weekly Update - Testing Plans, Respawn Character, Polearms

This week's update includes some details about our first upcoming test phase, development work on character respawning, improvements to the scene object editor, and some new polearm weapons!

Weekly Update - Mushroom Forest, Caves, Hammers & Staves

This week I worked on the Mushroom Forest area (Moivalau Forest), the caves under Gajoi's Claw, and added decorative Hammers, Maces, and Staves

Weekly Update - The Columns, Maulei Beach, Decorative Daggers

Last week I was inspired to do quite a lot of world design, with a new design for Maulei Beach and new regions for the western side of the Isle of Kasau.

Weekly Update - Server Login Changes, Decorative Weapons

More work on the network code with a focus on the login system, and I've added some temporary decorative weapons to the game.

Weekly Update - More Networking, Character Creation, Taipii Guilds

This week I continued my work refactoring the network code, debugged tine character creation process, and spent some time working on the Taipii Guilds.

Weekly Update - Wei Garden, Interface Fixes, Networking

This week I (mostly) finished up Wei Garden, started some needed optimizations to the networking code, and fixed some user interface issues. I focused primarily on refactoring and UI fixes this week, so this update will be brief.

Weekly Update - Chat Window, Takadynns, The List

This week I tried to wrap up work on the Chat Window, made improvements to the games teleport/respawn points, and started on a list of everything that needs to be done to get back into alpha testing.

Weekly Update - More Chat, Scripting, Desert Ruins

This week I continued working on that chat system and added a new set of ruins to the Burning Sands

Weekly Update - Chat Window, Bug Fixes

This week I started work on the chat system, and continued general preparations for multiplayer testing.

Weekly Update - Multiplayer Progress, World Scale

This week I started work on Antilia v0.12, with a focus on multiplayer and preparations for alpha.

Weekly Update - More Web Content and Fixes

This was the second week of my c++ programming break, and as a change of pace I continued work on the lexicon and website!

Weekly Update - Website Fixes, Lexicon Content

This week I made improvements to the website, and roughed in more pages to the lexicon!

Video Update - 0.11.0 Pathfinding and AI Behaviors

I just posted a new update video with a look at Antilia's new pathfinding and AI behavior systems. Characters and creatures are moving around on the Isle of Kasau now, and the Taipii are starting to work together as a simulated community!

Weekly Update - Tree Fade, Bug Fixes

Last week I focused on testing and fixing bugs in preparation for the upcoming video, and managed to implement a few small improvements I've been wanting.

Weekly Update - AI Cooking and Deliveries

As the mid-year point closes in I spent time this week trying to wrap up the foundational NPC behaviors and get a few new behaviors in place. As I transition to working on a video update over the next few weeks these updates will likely look a little different - with tasks related more to debugging and video production and less world building.

Weekly Update - AI Tasks, Southern Kasau Design Pass

This week I worked on a new "Task" system to compliment AI Behaviors, gave the southern side of the Isle of Kasau some preliminary layout passes, and improved the sea rendering.

Weekly Update - Burning Sands, Treasure Chests, Topo Map

This week I added two new regions to the game and improved a third, added treasure chests to make exploration more fun, and experimented with a new topographic style map.

Weekly Update - Fell Trees Behavior, Logging Camp, Bamboo Ponds

This week I implemented a new AI Behavior for felling trees, improved the area around the logging camp, and added a new "Bamboo Ponds" area nearby.

New Antilia Website Now Live!

The new Antilia website is now (mostly) live!