Tribe of Pok: Balancing the Human AI

Balancing the human artificial intelligence has been one of the harder parts of development. The difficulty stems from trying to make the AI do things that seem “logical” to the player. For example, consider the two possible desirable actions “harvest food” and “eat food”. We need to determine which action takes priority. If someone is hungry, the logical action would be to see if there’s any food around and eat it. OK, simple. We set the desire to eat to be higher than the desire to harvest food.

20150215 FoodDisplay

What if there isn’t anything to eat lying around? Since the desire to eat is higher, they will continually try to eat and never try to harvest food first. The player thinks, “What a stupid AI”. The logical action would be to harvest food first, and then eat the food. OK, then let’s switch it around so we set the person’s desire to harvest food to be higher than the desire to eat food.

20150215 TreeDisplay

Now what if the player creates 50 “harvest food” tasks on 50 different plants? Remember, the tribe member’s desire to harvest food is set higher than their desire to eat food. The AI thought process will be: hungry -> harvest food -> harvest food -> … -> harvest food -> STARVING -> harvest food -> harvest food -> starved to death. They will continue harvesting until they either finish all the harvest tasks or starve to death, despite being surrounded by plenty of recently harvested food. Once again the player thinks, “What a stupid AI”.

One way to work around this is having a variable desire to eat that fluctuates depending on current conditions. Firstly, add a check for food’s existence before trying to eat food. If there is nothing to eat, then set the desire to eat to be zero, no matter how hungry the person. That way the person will carry out any harvest tasks first. Secondly, if something to eat exists, make the person’s desire to eat higher the hungrier they become. With these extra rules, let’s see how the AI behaves in the above scenario with 50 harvest tasks.

20150215 FoodEverywhere

The AI thought process will be: hungry -> look for food -> find no food -> harvest food -> harvest food -> … -> harvest food -> STARVING -> look for food -> find food -> eat food. This thought process requires more calculations, but it makes the tribe member appear smarter to the player.

Now add in desires for drinking, sleeping, staying warm, fighting, fleeing, finding missing equipment, crafting and building to this equation. It’s pretty easy to end up with an AI that doesn’t always do the “logical” thing if the desires aren’t carefully balanced. Even worse is an AI whose desire fluctuates every few milliseconds, causing it to flip-flop between two different actions but not making any progress on either one. If you’ve ever seen an AI in a game move their units backward and forward over and over again, you’ll know what I mean.

20150123Bug

I’m constantly testing and tweaking the human AI in Tribe Of Pok to balance desires (and stop them burning themselves, like in the above gif). It can be time-consuming, but I think it’s worth the effort. It’s great to see your Pokians on screen running around acting the way you would expect.

By |February 15th, 2015|GameDev|2 Comments

Tribe Of Pok: New Combat Mode and Prosperity Mechanics

Firstly, there are some new ways I’ll be communicating to the community. You can now follow me on Twitter via @ParsleyPWG for more regular updates on what I’m working on. I’ll also be posting a weekly work log on the website blog. Remember, you can also sign up to be notified when new Early Access versions are available.

Combat mode

Combat Mode was something I put in a while ago, and took out when it became too confusing. When entering Combat Mode, the tribe members stop what they are doing and wait for the player to give orders. Several improvements have been made to the point where I’m happy to put it back in the game.

It works much like in an RTS game now, left-click drag to select and right-click to give move or attack orders. If someone is under attack, you can enter Combat Mode and send other tribe members to help them fight. Much more intuitive than in the previous iteration.

DevUpdate 20150110Animate1

Prosperity

Once a tribe’s food and water needs were met, I didn’t feel there was a strong enough force driving the gameplay forward. While testing the game, I got to a point where everyone was happy and thought to myself, “ok… now what?” Something was needed to tie everything together. There had to be a goal the player could aim for in addition to survival. So I did some thinking and came up with a single measure to handle all this – prosperity.

20150110Image2

Prosperity is a measure of how well your tribe is doing. Currently it is affected by factors such as the size of your tribe, amount of food available, the value of items and severity of diseases. In general, the value of items will only count if they’re located within your “circle of influence”. The circle of influence is an area around the tribe that can grow or shrink. I implemented it a while ago as a way to prevent roaming animals from constantly wandering into the player’s campsite and starting fights. I wasn’t sure whether to display this influence area or leave it as a bit of a mystery, but with the introduction of prosperity, the effect needs to be made clear. The influence area can be expanded by building additional fire poles, which need to be occasionally maintained by adding animal fat to them.

20150110Image3

The intention is to have prosperity fluctuate as the fortunes of your tribe change. I have some ideas to build on this mechanic in terms of progression and unlocking advanced crafts. It needs a bit more work though before I say any more.

By |January 10th, 2015|GameDev|0 Comments

Tribe Of Pok: Using the UI to improve feedback

This update will be about ways I’ve been improving the UI for a better player experience. Below you can see the new look for the UI.

DevUpdate20141211

Alerts system – to give a bit more direction to the player, I have added an alerts system. It’s similar to the one used in the Europa Universalis series, and a great way to inform the player about issues that need attention. When a certain trigger is activated, a little popup will appear at the top of the screen with some information. Examples of issues that will trigger an alert include lack of available food and water, being under attack and lack of a camp fire. Once these needs are taken care of, the alert should disappear. Hovering over the image also gives a description of the problem.

DevUpdate20141211ga

More immediate feedback – the player will receive immediate feedback when trying to perform an illegal action. I noticed players tended to start clicking random buttons and hexes when nothing in the game was reacting to them, so now a tool tip immediately pops up informing the player what went wrong. This should lead to less frustration.

DevUpdate20141211gb

Minimap – The minimap is more useful after some improvements. It now shows buildings, people and animals wandering around. You can also click on it to zoom the view to that location.

DevUpdate20141211gc

By |December 12th, 2014|GameDev|0 Comments

Tribe Of Pok: Harvesting system update

Food gathering works slightly differently now. Before it was too obvious which trees were fruit producing (like apple trees) and which trees weren’t. This led to a situation where the player is encouraged to cut down only the non-productive trees and leave the fruit producers. Eventually the trees would grow back, and the player could repeat the process until the entire forest was full of fruit producers.

DevUpdate20141124

This solution was too well-engineered for a game set in the Paleolithic era, and it wasn’t very fun to constantly be cutting down trees but trying to avoid/remember the fruit producers. So now, food harvesting has changed. When the harvest button is clicked in the menu, all the potential hexes that can be harvested are marked on the map.

DevUpdate20141126g

Almost every tree and bush has a chance to produce fruit or seeds when it is harvested, and the type of produce varies depending on the species of plant. Some plants will produce nothing, and others will produce a random amount of food. The player won’t know what they’ll find until the harvest action is complete. They also won’t be able to tell which hexes will be fruit-bearing, so cutting down a whole forest will mean the loss of potential harvest locations.

DevUpdate20141126gb

After a certain amount of time you can harvest the plant again, unless it’s been cut down or died of old age.

By |November 25th, 2014|GameDev|0 Comments

Tribe Of Pok: Development of tool tips

I’m going to try a new approach to news updates. Instead of a big update every month, there will be smaller updates explaining one or two changes at a time. Although I liked the consistency of updating at the same time each month, I think it was a bit all over the place and harder for new readers to understand. So to start us on these more focused updates, I’m going to talk about… tool tips!

DevUpdate20141105ga

DevUpdate20141105gb

As in most games, when you hover over a button for long enough a tool tip appears that gives information on what the button does. I’ve improved the Tribe Of Pok tool tip so it hovers near the mouse and can be used in a variety of situations. For example, in the crafting screen it will tell you what ability and materials are required to make an item, as well as give statistics on that item.

DevUpdate20141105gc

You can also set in the options menu the mouse idle time before they show up, or turn them off completely if you want to play without knowing things for some reason.

So that’s it on tool tips! Hope you all found it interesting, even though it’s not about the actual gameplay. Since this is a strategy game, having the required information available is important, and I think improving the tool tips are a step in the right direction.

By |November 5th, 2014|GameDev|0 Comments

Tribe Of Pok: Diseases and Temperature Expanded

Much time has been spent on admin lately, so not as many changes as usual for this update. The good news is I’m now working with an artist, so all the bad programmer art should disappear soon! Here are some of the new tiles:
DevUpdate20141017b

  • Object status effects – Last time I talked about items having abilities, which affected the item’s capabilities. I thought this was such a great paradigm, why not expand on it? Now all objects can have status effects such as [Wet], [Humid], [Warm] and so on. Different objects react to these effects in different ways. For example, food that is [Warm] will decay faster to simulate optimal conditions for bacterial growth. On the other hand, [Frozen] food will hardly decay at all.
  • Expanded disease system – It didn’t make much sense for Stone Age dwellers to know what disease they had and announce “I have Malaria!” to you. To cure it, you just needed the right plant lying around and it wasn’t very fun. So I’ve changed the way sicknesses work. Now a sickness is made up of a set of potential symptoms (e.g Hypothermia is made up of the symptoms Confused and Shivering). When someone catches a sickness, there will initially be no effects. Over time, the symptoms will start to show up one by one and affect the person’s ability to function. The player may never be told what the underlying illness is, and have to find a way to handle the symptoms (this part I haven’t worked out yet – maybe the treatments can be randomised each game, discovered by a shaman, we’ll see what fits).
  • Humidity and rain dynamics – I found a bug where the humidity would rise to 100% during Winter, did some more research and realised my simple model for humidity was way too simple. With my new, realistic calculations, the weather should be more balances and behave better. It should rain more often during the afternoon/night and hot, humid days are possible, depending on the amount of water vapour in the air.DevUpdate20141017c
  • Humans feel “apparent” temperature – In real life, the temperature you feel isn’t always equal to the air temperature due to the effects of humidity. High humidity can make you sweat, even when the air is only mildly warm. To reflect this, I’ve implemented “apparent” temperature, which is a calculation based on air temperature and humidity. On hot and humid days, people are much more likely to suffer heatstroke. For example, 35°C (95°F) with 80% humidity will actually feel like 57°C (134°F). For the curious, here is a taste of the calculations involved:DevUpdate20141017
  • Did a bit of work on enemy raids, if other tribes don’t like you enough, they will appear on the map and rampage through your camp
  • Graphical back-end improvements, now supports 64×64 pixel tiles and allows overlapping tiles
  • Fixed UI scaling issues when zooming in and out
  • Improved Query Panel for humansDevUpdate20141017d
By |October 16th, 2014|GameDev|0 Comments

Tribe Of Pok: Tools with abilities and other improvements

Changes

  • Tools and weapons with abilities – I’ve previously mentioned the possible actions a human can perform are based on the tools they have available, e.g. anyone with an axe can cut down a tree. I’ve expanded on this. Tools now have abilities tied to them with varying levels of effectiveness. For example, an axe has a high [chop] ability and can cut down trees quickly. A knife also has the [chop] ability, but is much less effective and takes a longer time.

    Tools and weapons can have multiple abilities attached to them, e.g a knife can [chop] as well as [slash] when used in a fight. It’s easily moddable, so you could give spears the ability to [puncture] holes for clothes-making if you wanted.

  • Improved task delegation – To complement tools with abilities, I’ve improved the way tasks are delegated to the humans. The best person for a given task is now calculated based on the abilities of their tools and distance to the task. A person further away with a better tool should be preferred over a closer person with a worse tool.

  • Lighting shaders – Fires now emit light. It’s pretty simple, no fancy shadows here. The lighting is mainly to make to nights brighter.

    DevUpdate20140913g2

  • Improved Combat Mode – I’ve re-enabled and fixed up Combat Mode, which I took out for a while since it was confusing and buggy. Now all individuals can be ordered to position/attack manually and the orders will stick even when you exit Combat Mode. It’s still a work in progress though.

  • Overhaul mineral resources – Rocks and minerals contain a set amount of resources and disappear once they are mined out.

  • Improved AI – Added desire to seek warmth when freezing, and other various improvements to AI

  • Walls – Can construct walls now, making a cell impassable and using up all the cell’s volume

    DevUpdate20140913

On a final note, I think it’s time the graphics got some attention. I’ll be looking for an artist to replace all my programmer art with proper art before doing a big promotional push. Stay tuned!

By |September 13th, 2014|GameDev|0 Comments

Tribe Of Pok: Stockpiles, piling objects, diplomacy and rivers

Since last update I’ve been working on aspects that allow the player to organise a larger tribe more easily, as well as give more choice in how to manage the tribe.

Major Changes

  • Open stockpiles – There are pits for food and racks for tools, and this worked well at the beginning. However as you your tribe progresses, raw materials such as tendons and bones tend to accumulate around the meeting point in a big mess. Open stockpiles are introduced to handle this. You can create an open stockpile from the Stockpile Panel and set what is allowed/forbidden to be stored in each pile. Then designate the hexes associated with that stockpile in any shape. This system allows for more strategic opportunities. For example, you could create a wood-only stockpile as a barrier and set it on fire to scare away predators, or suddenly melt a frozen lake to drown any animals standing on the ice.

    DevUpdate20140813

  • Hex maximum capacity – Hexes now have a volume limit, meaning you cannot store infinite objects on one hex. If too many objects are in the same position and their total volume exceeds the hex’s volume capacity, then some objects will “slide” to an adjacent hex. This effect is most obvious when butchering a large carcass with lots of parts, such as a mammoth, but you will also see the effect when piling too many objects in one cell.

    DevUpdate20140813g

  • Diplomacy – Relations can change with other tribes depending on your actions. Right now I’ve only set up the foundations for this mechanic, you can either taunt or trade with the enemy. I hope to expand it with more interesting options in future that fit well into the game.
  • Trade – To go with the new diplomacy system, I have introduced trading into the game. Trading involves bringing offered goods to a trading post, deciding what you want to receive in return, and then sending someone off the map with your goods.
  • Rivers – Rivers are working! It took a while but they’re in now. Water flows in endlessly from the river entrance and flows out from the river exit points. I’m anticipating problems with the pathfinding since locations on one side of the map can’t be reached from the other, and will deal with them as they occur.

    DevUpdate20140811

Other changes

  • Melee damage and weight of object updates each day based on age
  • Progress bars for actions such as cutting trees, constructing buildings, etc
  • Wearables such as boots merged into Clothing class
  • Food decay rate now affected by temperature / humidity
By |August 12th, 2014|GameDev|0 Comments

Tribe Of Pok: New designation system and Alpha 4

Alpha 4 is now available! This will be the last free alpha release, the basic gameplay loop/functionality is established and it’s time to move on to the next stage. Thank you to everyone who has given feedback so far, you’ve been a great help in shaping the game. There’s much more to do of course, and I will keep posting regular news updates.

Major changes:

  • New designation system – Lots of experimenting went on with the designation system. I was finding the current system for marking trees to cut, water sources to use, etc inadequate. It required too much clicking and didn’t suit the nature of the game. After a few failed attempts I went with a left-click-and-drag system, where the player can designate areas and tasks in any shape they want. To accommodate this, I had to change the previous left-click-and-drag to scroll the map to right-click-and-drag to scroll. A small annoyance, but I think it was worth it. DevUpdate20140711g
  • First step towards shaders – The day/night cycle lighting changes were previously “faked”, meaning I just drew a completely black sprite over the screen and adjusted the transparency depending on time of day. This was a problem because I couldn’t make the areas where fires were burning brighter. I’ve switched to using shaders for lighting changes now, which should allow for more flexibility in the future.
  • Pierce and slash damage – Animals now have individual pierce and slash damage values (e.g mammoths deal massive pierce damage while lions deal moderate pierce and slash damage). Clothing protection for each type of damage works properly now as well. It’s based on the body part hit so a helmet will only reduce damage if the head is struck.
  • Doubled length of 24-hour cycle – What a difference this makes! It feels like a better pacing and now when I reach winter, I am actually worried where the next meal will come from.

DevUpdate20140711i

Other changes:

  • First step towards animation – fires now flicker
  • Options menu changes now saved on game exit
  • Autosave function added to help with bug reporting (can be set to autosave every minute)
  • Fixed zooming in/out causing most UI elements to zoom as well
  • More tweaks to aggression system
  • Snare traps working – immobilises animals
  • Fixed music not looping
  • Bug fixes

I want to call the player’s tribe members something else besides “tribe members”, but not sure what… Pokkians? Pokkers? That sounds a bit rude. Open for suggestions.

By |July 11th, 2014|GameDev|4 Comments

Tribe Of Pok: Crafting overhaul and aggression mechanics

New crafting system – Using the workshop to build things was getting too clunky and confusing, so I decided to overhaul it. Now there is a crafting screen instead of a workshop menu. From the crafting screen, you can see all available materials near the meeting point, all build-able items and a list of current crafting tasks. It’s much easier to see whether you have enough materials to make something. To go with the new crafting system there are also Work Areas you can assign. These are just patches of ground where you want your people to actually do the crafting. If you don’t assign any Work Areas, they will just choose a random spot on the ground. Also you can build a tool rack where people will store unused tools, although I haven’t done the sprite for it yet and it looks just like the food pit.

DevUpdate20140607b

New aggression system – I forgot to mention this in the last update, all animals now run on a new aggression system. Previously animals would either run away or fight when faced with a threat, and would do the same thing every time. Now their decision can be influenced by different factors such as distance to threat and current health. This leads to more dynamic interactions between animals. For example a lion can start off ignoring a nearby mammoth. If the mammoth wanders close enough to be considered a threat, the lion charges at the mammoth. The mammoth might try run away at first, but if the lion gets too close, the mammoth decides to also charge at the lion. If the lion gets severely injured in the fight, it then changes its mind and starts running away. There are probably going to be weird edge cases with this new system that I’ll have to fix up as they appear.

Timeline – Surviving is nice and all, but I felt like there was no sense of progression in the game. To help keep track of the efforts of your people, I created a timeline that records any notable actions or events that happened each day. The timeline can be accessed under the “Tribe” management screen.

DevUpdate20140607c

Brains remember after saving – This one took a while to implement, I’ve been putting it off hoping it wouldn’t become an issue. Basically every time you loaded a game in the Alpha 2 version, none of the animals/humanoids would remember what they were doing and would recalculate their motives from scratch. Well the AI got too complicated for that, so now everyone remembers everything they were doing before the game was loaded.

Annual migration – On top of the usual animals wandering on and off the map, there is now also an annual migration that occurs during Autumn. Large numbers of certain animals will travel from one side of the map to the opposite side during this period (currently using Buffalo but that can easily be changed).

Snow and Ice – Snow and ice are able to form/melt based on temperature and weather rather than based on season. If your people get thirsty during Winter but all the water has frozen over, set a tree on fire and watch what happens to the nearby ice.

DevUpdate20140607g
Other minor changes – Animals produce more materials when butchered, UI tweaks, tutorial changes, camera zooming and lots of bug fixes

By |June 17th, 2014|GameDev|0 Comments