Free and Open Source real time strategy game with a new take on micro-management

Current Issues with Game Behavior

From Globulation2

Revision as of 12:48, 27 April 2007 by Jbw (talk | contribs) (first version of this page, content extracted from other too-long page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This wiki page is a part of a listing of Current Issues with Using Globulation 2. It has been placed on its own page due to problems with wiki pages beyond a certain size. See that page for an explanation of the status of the listing.

Autonomous Unit Behavior

Explorers

  • BUG: Explorers summoned to distant exploration flags tend to not have enough smarts to know when to go back for food, and thus frequently die when this is done. (This is bug 19603 (“explorers starve to death near distant exploration flags”).)

  • It would be nice to be able to request that explorers follow coastlines. Or they should do this on their own, simply finding coastlines interesting. Right now to do this I have to keep moving an exploration flag to coax an explorer along a coast. This is quite tedious and prevents me from doing anything else. If I am guiding two explorers, then I have to ignore everything else. Plus, the explorers typically die in the end because they are not smart enough to go back for food.
  • Even if you have 100s of explorers, they will leave large chunks of the world unknown even though they can get there and back without starving. If explorers find unknown territory, they will (sometimes, sometimes not!) explore the edge, but if they are in the middle of known territory, they generally wander aimlessly. Explorers can be relied upon to explore a 64 by 64 map fairly well, and eventually (if you wait long enough) they will probably explore a 128 by 128 map. But you will wait forever for them to explore a 256 by 256 map, and they will certainly never explore a 512 by 512 map.

Miscellaneous Issues with Autonomous Unit Behavior

  • Globules carrying the same kind of resource (for constructing/supplying a building) or seeking the same service (food/healing/training) or seeking to do the same kind of work (clearing or war/exploration flags with level requirements satisfied by both globules) that are closer to each others' destinations should swap destinations. For example, I often see this kind of situation, where each X marks a worker carrying wheat and the arrows indicate where the workers are going:

               X ----------------------------------------->
     <------------------------------------------X
    

    In addition to the obvious direct benefit of getting the globules to their destinations more quickly, this would also reduce traffic jams (which can get quite bad).

    I don't know how to calculate this both efficiently and optimally. The simplest way to calculate it is to compare every pair of globules carrying the same kind of resources. For each such pair of globules, call them X and Y, look up X's current location in Y's destination's gradient, and look up Y's current location in X's destination's gradient. If X is closer to Y's destination, and vice versa, then they should swap destinations. Unfortunately, comparing all pairs is inefficient because there will be too many pairs because the number of pairs grows extremely fast. To make it efficient would need some heuristic for deciding on which pairs to actually compare. Perhaps this heuristic could focus on regions with bad traffic jams. Even picking some pairs randomly to compare (and swap destinations if appropriate) might make a big improvement in globule performance. (By the way, a fully optimal solution to rearranging destinations might in theory have to consider also triples, quadruples, etc. That's probably way too difficult to even consider implementing.)

    Bug 16242 (“improvement-idea for pathfinding concerning idle units”) comment #1 is related. Bug 19488 (“unit allocation seams to ignore distance (22-rc)”) seems to be describing the same problem but has a different idea about the solution.

  • Before moving toward a building to feed/heal/train, a globule books a place in the building. However, for extreme long distance trips, this sometimes is wasteful, because it can leave the slot in the building unused for a long period of time. It might perhaps be better if globules sometimes moved toward (one or more) buildings they wanted to use and did not try to book a place until they were sufficiently close. Perhaps this distance could be derived from the estimated time to arrive and the estimated time for a globule (i.e., some other globule) to get served by the building?
  • Globules know where resources are in unexplored areas that are not yet visible. It is inconsistent that workers can see things that the player can't.

    Warning: Any solution to this would have to take into account that glob2 currently depends in a number of ways on globules knowing where resources are without having seen them:

      The current approach simplifies the implementation by sharing part of the computation of resource gradients among all players. (It is not clear to me how big of an advantage this is, because the actual gradients can not be shared because different players have different forbidden regions.) The fix would involve sharing even less of the computation, because the different players have explored different parts of the world.

      The current approach allows computing gradients using the resources that are actually there, instead of each player's memory of what resources have been seen most recently, which might differ because of the actions of other players. Solving this would involve implementing some notion of memory.

      With the current approach, only explorers need code for exploring. This is significant because glob2 does not (yet) have a good gradient-based method for exploring. (There are some untested and unimplemented proposals.)

      The current approach simplifies map design, because the map designer can assume workers will know where to find resources. (This might be solved by starting each player with 1 explorer, which many designed maps already do.)

      The current AI opponents depend on their warriors being able to automatically find a path to attack you, because the AI opponents do not actually explore the world and instead cheat to find out where your base is and simply place war flags on your locations despite never having actually seen the locations.

  • Workers that have picked up a resource that ends up unneeded often seem to end up discarding it for another type that is needed. In many cases, it might be better for them to hang on to the resource for a while, because it will likely be needed. (Or maybe there should be some way to stockpile unused resources?)
  • It would be nice to be able to force individual globules to abandon their current activity and try picking a new one. Even better would be to allow ordering a globule to go to a particular place or work on a particular task. This might actually allow reducing micromanagement, because right now one often must take many actions with building and flag settings and areas to get the same effect as a direct order to a globule.

Bugs in Individual Globule Behavior

  • BUG: I have seen workers bringing some resource for construction almost reach their destination, then abruptly completely forget about being assigned to construction. You can see the moment when they forget about their assignment because they lose the white circle (I keep pressing and releasing the mouse button on the construction site so I can watch them). They will then do something else like harvesting wheat (throwing away the wood or stone they were carrying) to deliver to an inn. This does not happen because the building they were working for has all its resources. There is no obvious sensible reason for this to happen. (This is one item in bug 19592.)
  • BUG: I have seen workers carrying wood wander around just next to a construction site that needs wood, but do nothing and instead wander aimlessly. (This is one item in bug 19592.)
  • BUG: I have seen 10 workers assigned to bring wheat to an inn. I watch what the assigned workers are doing and I see them wandering around aimlessly, despite plenty of wheat nearby. If “draw unit paths” is on, I sometimes see a line going from a worker to some empty cell (near but not in the wheat field) and the worker moves from cell to cell near this target cell. This seems to happen most in situations of high congestion. (This is one item in bug 19592.)
  • BUG: I have seen workers right next to an inn that needs construction and does not have all workers assigned yet, and next to wood that can be used for it, and with nothing to do, and not hungry yet, and yet just doing nothing. (This is one item in bug 19592.)
  • BUG: I have repeatedly seen hungry warriors within direct sight of an inn (with an unblocked path to the inn) that has both food and places just sit there spinning (not moving by even one cell) and starving to death. This happens most frequently after the warriors were summoned into battle with a war flag, although I have seen it at other times. If “draw unit paths” is on, sometimes one can periodically see a line flash out from each warrior to some sensible destination, but the line immediately disappears. The warriors stay in place until they run out of hit points due to starvation. Note that when the warriors initially get into this stuck state, they still have plenty of food and are unwounded. I have recently discovered that manually placing a forbidden area on the warriors generally helps to get them unstuck. (This is one item in bug 19592.)
  • BUG: Workers sometimes harvest wheat even when the only offered jobs are from inns that are full of food and have no guests, and there are no clearing areas or clearing flags. There are no building sites or hives needing wheat. The workers that harvest wheat are shown as carrying wheat after it happens, as though they were harvesting the wheat to carry it to a building. When this happens, the indicators of small dots above the inns show only black dots meaning that the inns have not accepted any workers.

AIs (Computer Players)

  • To help understand the AIs, it would be nice if there were an easy way to watch AIs play against each other as a spectator. It would also be nice if it were possible for such a spectator to see the world from the point of view of each AI. (Actually, there is! It is just undocumented and not straightforward to discover. Also, it only allows you to see the game from the point of view of one of the AIs. You can't switch around or watch the entire map.)
  • What does “Numbi” mean in the name “AINumbi”? Similarly, what does “Castor” mean? What does “Nico” mean? Etc.
  • Can “AINumbi” please be renamed to “AIPathetic”? ☺ In my brief experience, “AINumbi” often dies before it even encounters an enemy. An AI this pathetic deserves a name that will properly explain to the player just how weak and hopeless it is.
  • AINumbi has an annoying tendency to die all on its own if started in a location that is not close to resources. It would be better if this just slowed it down, rather than causing it to die.

Flags, Areas, and Work Assignments

  • It would be helpful if there were a flag that summons workers even if there is nothing to clear. I have wanted to try to force a worker migration to another island to have a local surplus of workers there, and there seems to be no easy way to do this. I think it might be better to rename clearing flags to “work flag” and change things so that if you turn off all of the kinds of resources to clear, workers will come regardless. (It would be good of course to keep the current behavior that if clearing is requested and all resources are cleared then workers do not get assigned.)
  • It would be nice to have a kind of area that allowed harvesting of the resources in a cell provided the last resource was not taken. So harvesting would be allowed if the resource was 2/5, 3/5, 4/5, or 5/5. An AI can do this easily by creating/removing forbidden areas depending on the amount remaining of a resource, but it is too micromanage-y for a human to be able to do. (Or maybe the amount of resource on a location should affect the probability of it spreading to the next location, so that there would be benefits from allowing a resource to be higher than 1/5?)
  • It would be helpful to have an area that means “clear this if it is forest, protect this if it is wheat”. Otherwise I spend too much time micromanaging the areas. (It is not clear what the user interface would look like. (Are there enough colors/patterns for another kind of area?) I basically want all of the settings I can make with clearing flags, but combined with the ability of areas to specify the precise region easily.)
  • It would be nice to have areas that are forbidden only for harvesting and that if empty can be moved through. (Yes, I know that this might prevent a new resource from growing there if a globule is on the location at the wrong time.)
  • Clearing areas appear to override forbidden areas. This has the result that a worker will clear the cell, but not move into the cell. (This should be documented.) This causes user interface difficulties because I often find myself in a race with the mouse to both remove a clearing area and place a forbidden area before a worker clears it. Unfortunately I often end up losing the race. (Generally, I placed the clearing area trying to get rid of wood, and the wood is now gone and some wheat has just grown, and I desperately want to keep the wheat to help expand a farm or guard the farm's border against wood.)

    (Kai thinks the current behavior is not right, and Leo thinks it is correct.)

  • It would be nice to have clearing areas that will attract workers like clearing flags do. The circular areas of clearing flags are very tedious to use.
  • It would be nice to have a kind of clearing area/flag which makes its resources preferred for building purposes rather than causes the resources to be chopped down and thrown away. The idea is that when a worker needs wood, they would be willing to go a bit further to chop down wood from this area, and when a worker chops down wood in this area, the worker would try to find a building that needs wood before discarding it. What I am imagining is a kind of clearing area where the speed of clearing is not as important as using the resources well. (Perhaps this idea is not so important because it seems relatively rare for resources to be so tight that one can't afford to simply slash and burn in Brazilian-rain-forest style. Not an ecologically good message, but when you're out for world domination these things are less important.)
  • W

Misc