[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [glob2-devel] additional feedback on Globulation 2 (long, with many
From: |
donkyhotay |
Subject: |
Re: [glob2-devel] additional feedback on Globulation 2 (long, with many topics) |
Date: |
Sat, 07 Apr 2007 09:38:09 -0700 |
On Sat, 2007-04-07 at 08:15 +0100, Joe Wells wrote:
> Dear Globulation 2 gurus,
>
> I have played more games and have another batch of feedback and ideas
> for the wonderful game Globulation 2. I hope you will find my
> comments helpful. Please feel free to ask me questions because I
> probably haven't made some of my comments clear enough.
>
> Once again, I have organized my comments into sections because there
> are too many. My comments are below.
>
> Unfortunately, after this, I think I probably need to set Globulation
> 2 aside for a few months. The real world intrudes. :-( I probably
> won't be able to stop myself from doing a little bit of Globulation 2,
> but I hope I have some discipline.
>
> --
> Joe
>
> ======================================================================
> Flags, areas, and building work assignments:
>
> I think a big decrease in the amount of micromanagement could be
> achieved by replacing the maximum number of requested workers for each
> building/flag by a priority number. The idea would be that glob2
> would calculate the number of available and eligible globules for each
> kind of service and would divide them among the buildings/flags in
> proportions according to the priority. For example, if every building
> and clearing flag had priority 10, then this would be equivalent to
> giving them all the same number of assigned workers in the current
> system, except that the precise number would automatically be adjusted
> up and down as globules are born, killed, halt work to get fed/healed,
> etc. Based on my experience, I think this would dramatically reduce
> the number of adjustments the player needs to make during play and
> would give them more time to think about strategy. In battles, I
> think this would make an enormous improvement in the effectiveness of
> war flags, because it would allow more easily shifting warriors from
> one part of the battle to another and you wouldn't have to spend
> precious time trying to calculate how many warriors you have of each
> level in order to set the number of requested warriors correctly.
> This would automatically adapt to the changing number of available
> warriors as the battle rages and new warriors come and go to and from
> hospitals and inns and new warriors come out of the hive. Changing
> from maximum assigned workers to priorities would also make it
> possible to add some global controls over strategy. For example, if
> you noticed too many of your globules starving, you could adjust a
> control that gave more priority to supplying inns, and this would have
> the same effect as individually visiting each inn and increasing its
> priority. These global controls could work similarly to the way the
> priority controls on a hive currently determine the proportion of
> production devoted to each kind of globule.
>
> 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 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 an
> area 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?)
>
> ======================================================================
> Bugs and possible bugs:
>
> BUG: In 0.8.22, upgraded buildings will often (always?) get their
> assigned workers knocked back down to 1. If I remember correctly,
> this happens for the upgrading, and again when the upgrade is
> completed.
the game allows for preset worker values. Check within settings and make
certain that all your buildings are just set to 1
>
> BUG?: Some clearing flags don't seem to ever get assigned workers.
> If I delete them and recreate them, then suddenly they start getting
> workers. This might be happening to clearing flags once they pass a
> certain age. It is not really clear. This issue might be new in
> 0.8.22, but I'm not really sure about it, because I often had trouble
> getting workers to clearing flags in older versions.
>
> BUG?: If you upgrade a building that will become larger due to the
> upgrade, and while waiting for globules to exit the building and the
> larger area a resource grows on the larger area, then it seems that
> the upgrading is silently canceled! It seems to me that it would be
> much better if the upgrade were not canceled and the building status
> indicator showed that it was waiting for the area to be cleared.
>
> BUG?: The 0.8.22 .tar.gz file didn't have any maps or campaigns in
> it. I used symbolic links to the maps and campaigns from my installed
> .deb for 0.8.21. However, it would be better if users did not need to
> install 0.8.21 to use 0.8.22, and if users did not have to figure out
> on their own where to put the files. If not having the maps and
> campaigns in the .tar.gz file is desired, then it would be good if
> this were at least documented on the Wiki with pointers to a file
> containing the maps and campaigns and installation instructions.
>
> BUG?: 0.8.22 seems slower than 0.8.21. Maybe this is just the issue
> with using a lot more memory? It is not clear.
>
> BUG?: There are numerous abuse possibilities with building sites!
> The most impressive that has occurred to me so far is filling a region
> (perhaps the whole map?) with wall sites with the requested workers
> set to zero. You get 1 hit point per location for free! Nothing can
> grow on the location. You get told when enemy warriors attack your
> building sites. You can get rid of the building sites whenever you
> want to move through them (and then recreate them after you pass
> through). If any AI ever used this it would be unbeatable by a human
> because it could do it much more effectively than a human. A weak
> partial solution would be to forbid setting the requested workers of a
> building site to zero. Or allow it, but then delete the building site
> if the zero workers setting persists for more than a few seconds (in
> case the user makes a minor mistake while adjusting things). Of
> course, this is only a partial solution because you could still make
> the construction sites in some place inaccessible to your workers to
> prevent workers from spending time on them (possibly surrounding the
> building sites with forbidden areas to accomplish this). And it is
> still abusive to be able to get a hit point and fill a location at an
> arbitrary distance from your other units at no cost. The only fully
> correct solution that I can see is to make building sites that have
> not yet had any resources supplied have no real existence: zero hit
> points, workers/warriors can walk on them (and enemy units don't even
> see them), resources can grow on them, etc. This would be a larger
> change and would obviously take a lot more time to implement.
>
> ======================================================================
> Globule behavior and gradients:
>
> 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. 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 globs, 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.)
>
> Obviously, explorers should follow a gradient based on exploring
> unknown and/or not-recently-seen locations. The main difficulty with
> this is how to prevent all the explorers from going to the same
> destination. I suggest the following idea. Calculate some reasonable
> gradient for which locations would be good to explore. (I will
> suggest one below.) Then, for each explorer, make a copy of this
> gradient. Flip the copy (i.e., consider 0 to be high and 255 (or
> whatever the highest possible value is) to be low). Raise the
> location of each _other_ currently-exploring (i.e., not seeking
> food/healing or assigned to a exploration flag) explorer by some
> amount (e.g., 10). (It is important that we don't do this for the
> explorer the gradient is for, because that would be likely to destroy
> the information about the unexplored thing that the explorer is
> currently "seeking". The way I propose to do it will lower peaks that
> are in some sense "assigned" to _other_ explorers.) Apply the
> gradient algorithm to make the gradient valid again. Then flip the
> resulting gradient (undoing the first flip). (Flipping doesn't have
> to modify the numbers for each location; you just switch which
> direction you consider up or down.) I think this should do a good job
> of getting distinct explorers to explore distinct parts of the world.
> Comments? Is my idea any good or does it suck?
>
> A similar idea to what I suggest above for a gradient for explorers
> might also be used to avoid danger for any type of globules (including
> also explorers). The exact same idea might not produce the right
> results, because it would be important to ensure that destinations
> remain peaks, and some danger may be acceptable. But hopefully,
> something could be done that would create something resembling a
> proper gradient, which would therefore not have the problem of
> globules getting stuck in a loop like some earlier suggestions for
> handling danger by using multiple gradients.
>
> Anyway, here is my suggested gradient for explorers (which must be
> combined with the above idea to avoid sending all explorers to the
> same place). First, establish as top priority unknown locations that
> are distance 2 away from a pair of known adjacent locations which are
> of distinct travelabilities (i.e., some globules can travel on one of
> the known locations but not the other, for example, a boundary between
> sand and water, or a boundary between sand/grass and a resource).
> Next priority are any other unknown locations distance 2 away from any
> known location, with corners being preferred (i.e., an unknown
> location is preferred if it is 2 away from known locations in
> directions that are at 90 degree angles, and in opposite directions
> are more unknown locations). Next priority below that (probably _way_
> below) are not-recently-seen locations that are 2 away from recently
> seen locations. (In the information recorded about what is not
> recently seen, do we know how long it has been since the location has
> been seen?) Simply make a proper gradient after establishing these
> priorities.
>
> I think glob2 currently only uses 8-bit gradients. Some things might
> be improved by using gradients that allow more distinct values (e.g.,
> maybe the limit to 8 bits is part of the problem with explorers not
> being able to find food when far away from home?), but moving to
> 16-bit gradients would obviously be quite wasteful of space. I think
> that 9-bit gradients could be implemented fairly efficiently, as
> follows. Store the bottom 8 bits for every location the same way as
> it is currently done. Store the top bit for each location in a
> separate bit vector (i.e., 8 bits packed in each byte). I think the
> cost of retrieving the value for any location should not be too bad.
>
> Actually, I have no idea how gradients are internally stored in glob2.
> It is conceivable that one could take advantage of the fact that
> adjacent values in a fully calculated gradient differ by at most one
> to store it more efficiently. This would be mainly useful for
> gradients where the cell values are not frequently adjusted in place.
> In the most extreme case, one could store just one value at the upper
> left of the gradient. Then the leftmost position in each row other
> than the first could be determined by two bits that tell whether they
> are the same, higher, or lower than the value in the cell above them.
> And then for each cell other than the leftmost in a row there could be
> two bits to say how the cell differs from its left neighbor. This
> would take at most 2 bits per location regardless of how many distinct
> values the gradient could contain. To speed up random access to the
> gradient, one could store full values every 8 cells or so. Actually,
> when using a gradient to decide where a globule will move, you don't
> care what the value of a cell is, merely how it differs from its
> neighbors. This could be efficiently determined if each cell used
> four bits to say how it differed from its neighbor on the left and its
> neighbor above. I don't know whether the implementation complications
> of any of the ideas I have just mentioned would be worth the space
> savings.
>
> 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?
>
> ======================================================================
> Issues with visual indicators (or their lack):
>
> So I was getting lots of workers starving even though they are near to
> inns with lots of spaces and food. I then realized that this is
> because workers don't go to an inn unless it both has an empty place
> and (already!) a corresponding item of wheat. (By the way, it would
> be good if this fact were documented.) Unfortunately, it is hard to
> visually inspect the current GUI to see this problem. If you look at
> the white and black dots on the right of the inns, you will see black
> spots indicating there are spaces. If you look at the yellow dots on
> the left of inns, you will see wheat. Maybe the inns are not full of
> wheat, but you see wheat. So you think you are happy. But you are
> not! You have to _subtract_ the white spots on the right of the inns
> from the yellow spots on the left when inspecting the yellow spots,
> because what you want to know is how much _uncommitted_ wheat there is
> in inns. A possible solution would be to change the color of dots
> corresponding to _committed_ items of wheat, so that one can easily
> visually inspect how much uncommitted wheat there is in the inns.
>
> When holding the left mouse button on a building/flag to see what
> globules are serving it (does this work for flags? if not it should),
> I often can only find some (or even none) of the assigned globules
> (unless perhaps there is a bug in the indicated number of assigned
> globules). So I think that when doing this it would be helpful to
> move the viewport if that would show more of the assigned globules
> together with the building/flag. In addition, it would help if
> off-viewport globule locations were indicated somehow in the mini-map
> (maybe flashed?). Perhaps even everything else should be dimmed so
> that the assigned globules can be seen more easily.
>
> Related to the above point, it would be nice if the feature to show
> assigned globules were extended to allow also easily seeing which
> globules are going to a particular building to get fed/healed/trained.
> The distinction could be indicated by using a different color circle.
>
> Further related to the above two points, it would also be nice if one
> could ask for the globules assigned to a building/flag to always be
> indicated as long as the building/flag was selected. I'd rather not
> have to hold the left mouse button down for this.
>
> The current mini-map is very helpful in that it shows the whole world.
> However, it is very small and it is hard to see details, especially on
> a 512 by 512 map. It would be nice to be able to expand the mini-map
> (obviously only temporarily) to the whole screen to see more detail.
> This would also make it easier to drag the viewport indicator to a
> precise location, which is more difficult on larger maps.
>
> It would be better if the Control-Space command told you the kind of
> the event whose location it has just moved the viewport to. Also,
> Control-Space should be documented. (Documenting the behavior of
> Control-Space is a bit difficult because it is a bit weird.
> Basically, glob2 remembers the most recent location of each of 5 types
> of events: globule under attack, building under attack, building
> finished, own unit converted to enemy, and enemy unit converted. The
> Space key moves the viewport to the most recent event (regardless of
> the kind of event). Control-Space moves the viewport to the most
> recent event of the next kind than the kind of the event of the last
> location moved to by either Space or Control-Space. The "next kind"
> is determined in a way that cycles through all of the kinds of
> events.)
>
> ======================================================================
> AIs:
>
> 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.
>
> 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.
>
> ======================================================================
> Map editor interface (comments based on 0.8.22):
>
> It would be helpful to have a control that deletes anything (leaving
> only grass, sand, or water), not just things of a specific kind. A
> common need I have for a randomly generated map is to wipe out all
> growing things near a starting hive to prevent AI death by overgrowth.
>
> Related to the point just above, the map editor "delete" button only
> works on globules and buildings. It would be less confusing for it to
> work on anything that can sensibly be deleted, which includes
> resources.
>
> In the map editor, "d" should delete the selected item the same way it
> does in the game, for consistency of the interface. There should also
> be a corresponding delete button in the item's status display. (This
> is distinct from the current map editor "delete" button.)
>
> It is confusing that "deleting" sand or water means the same as
> "creating" grass. It seems to me that grass/sand/water shouldn't have
> "deletion" as an option, or if this option is allowed and it is
> selected then the GUI should switch the selection to "creation" of
> grass and flash the new selection to show that is how it is
> interpreting "deletion".
>
> "Creating" grass or water on an area that is already that type should
> not remove resources on that area. (I suppose for sand this issue is
> irrelevant as there will not already be any resources on sand.)
>
> "Creating" grass/sand/water should never remove globules. (I suppose
> for non-swimming/flying globules creating water under them should ask
> whether to delete them or give them basic swimming?)
>
> It would be helpful to be able to drag items around, the way you can
> drag flags around in the game. This feature could even reuse the same
> code. A common need I have for a randomly generated map is to move
> the starting hive and workers to a more suitable location (the right
> distance from resources to easily access them while avoiding being
> immediately swallowed by growth, which is especially important for
> not-so-smart AIs). Right now you have to delete and recreate, which
> is tedious (especially if many attributes of the object have been
> given non-default values).
>
> In the map editor, it would be nice if the ownership of an item
> already on the map could be changed using a radio control in the
> item's status display. Right now, you have to delete an item and
> create a new item that is identical except for belonging to a
> different player.
>
> ======================================================================
> Miscellaneous:
>
> The use of the scrollwheel to adjust assigned workers is extremely bad
> for people who have a touchpad configured like mine is. My touchpad
> (and the touchpads of many other people) is configured so that a strip
> along its right edge acts as the scrollwheel (i.e., like 4th and 5th
> mouse buttons). This means a mistake moving the mouse (really the
> touchpad, there is no mouse) can accidentally move the "scrollwheel"
> instead. Because Globulation 2 involves so much mouse movement while
> buildings/flags are selected, this means I often accidentally get the
> number of workers assigned to some unit completely messed up (often 0
> or above 15). In my case, this means I would really seriously benefit
> from being able to turn off the feature that the scrollwheel changes
> the number of assigned workers.
>
> What is the difference between "hard pause" (bound to the ScrollLock
> key and undocumented (to do: document it)) and "pause" (by default
> bound to the p key)?
>
>
> _______________________________________________
> glob2-devel mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/glob2-devel
--
Do not be afraid to joust a giant just because some people insist on
believing in windmills.