The Old World: Empire AI: Goal-based AI

As of recently I haven’t added much AI content in, mostly just support for upcoming features as well as some basic internal code. Currently I’m designing a decently dynamic and flexible way for the AI to handle decisions on its own, or in short I’m implementing a Goal-based AI.

Which is going to be featured in the War System and Production System.
The only hard part at this very moment is coming up with decent useable variables and parameters to use for determining its goals.

Basically I’m looking at things at an abstract layer so that adding new content won’t be a big hassle and will be used by the AI seamlessly.
For example: Ordering Building Goals:
- Is Empire under high Threat?
- Resource Cost of Building?
- Resources Present in Empire?
etc.

But as always here is a small log of what I’ve been doing recently:
- Added Support for a Trade System.
- Added Internal functions and code for the basics of the War System.
- Added Support for adding Soldiers to War System.
- Added Functions: For War System
- Set-(Attack/Defend/Patrol)-Point()
- CalculateThreat()
- CheckReputation()
- OnUnit-(Enter/Exit/Attack)()
- Added Internal code for Threat System.
- Added Internal code for Reputation System.
- Added Internal values for Reputation Statuses. (Honored, Friendly, Neutral, Hostile)
- Fixed Culling with Doodads, Rendering of Doodads is faster.

The Old World: Empire AI: Basic Resource Gathering.

I feel like the basics for the Empire AI is starting to turn out pretty nicely.
There are no manual inputs to the Empire AI which means that everything is handled by the AI (Resource Gathering, Building Requests, Building Placements, etc.). Which I feel is a great start!

- Added Functions for accessing Storage coordinates.
- Added NPCDropOffResource State.
- Edited NPCHarvest State – To Transition into DropOffResource State.
- Edited NPCIdle State – Now NPCs wander about aimlessly when Idle.
- Fixed a few bugs concerning Resource Gathering.
- Fixed a few bugs in my Pathfinding System.

The Old World: Empire AI: Resources.

What I’ve managed to accomplish this far into my lovely dev. weekend.

- Added Resource System to the Empire System.
- Added NPCs have to gather resources (Wood so far.) in order to construct buildings.
- Added Support for Item Stacks (1 Stack = 16 items.).
- Added Storage Structure for Empire System.
- Fixed Now the Empire System correctly gives the Production & War Systems resources.
- Fixed Now the Empire System doesn’t need any manual input, everything is run by the AI.

The Old World: Linux/More Empire AI.

I’m happy to officially announce that The Old World now has Native support for Windows, Mac and Linux!

- Added Native Support for Linux.
- Added function AnalyzeGround()
- Added process to Structure system that Evens out the ground before construction.
- Added NPCEvenGround() State.
- Added NPCs now move at half speed on Water.

The Old World: Empire AI: Bug Fixes

Sadly spent most of my development today on fixing a few bugs.

- Fixed a bug with FindSuitableSpot() that made the Empire only build houses diagonally
- Added so that the previous function would check more X,Y Coordinates.

 

 

 

 

 

 

Also if you think it’s fun to see 4 NPCs build houses, you should see this… Just imagine it. Yes, it is hilarious to see.

 

The Old World: Empire System AI: Constructing Housing.

Started working on the Empire AI today. This is what I’ve managed to accomplish so far.

- Added Support for Structures to be Owned by NPCs.
- Added Basic AI to Production System to handle construction of housing.
- Added Search for Homeless function to check if a house needs to be constructed.
- Added function to find a suitable place for a structure.
- Fixed a few tiny bugs in the Structure System.

The Old World: Empire System Teaser

I’ve recently released a new YouTube video. It shows off the basic operations of building a structure using the Empire System. To explain in short what happens:

The War/Production System sends a BuildStructureRequest to the Structure System that creates a new Project. Every cycle the Project system checks if the structure has been completed or if new tiles have to be built.

If the latter occurs a SpawnJob request is sent to the JobManager which in turns checks for an Idle Citizen and gives it the Job of constructing said tile.

If the JobManager does not find an Idle Citizen it return false and the Project system will send a request until a Citizen becomes Idle.

Laters!
– Joxno

The Old World – The Start of a Dev. Blog

Alright, so it seems that I have actually started a Development blog for my upcoming title The Old World. Hopefully I’ll be able to fill a couple or more posts every week or so. Since I post both here and on my Twitter, these posts will have shorter bursts of information than my YouTube videos.

Hopefully you will all enjoy the adventure of developing The Old World with me!

 

Cheers!

– Joxno