Complete.Org: Mailing Lists: Archives: freeciv-dev: August 2002:
[Freeciv-Dev] asynchronous unit moves
Home

[Freeciv-Dev] asynchronous unit moves

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] asynchronous unit moves
From: Tom Goulet <tomg@xxxxx>
Date: Fri, 16 Aug 2002 13:18:02 +0000

Greetings,

This mail is divided into three sections, Introduction, Improvements,
and Problems That Aren't So Bad.


Introduction:

This mail is to try and convince the Freeciv developers that
asynchronous unit moves are a good idea.  I will not code this, but let
me know if I can bribe someone to code this.

Asynchronous unit moves are when players may not move their units at the
same time.  It would work like a normal war game.  Non-unit move
activity would still be possible.  I expect this will solve several
problems and not introduce many.


Improvements:

Patrols:
At least in my style of play, it is better to not use patrols.  A patrol
typically moves before other placers advance their units.  Thus all
patrolling usually acomplishes is wasting a unit's movement points.
Patrolling should be done after all the enemy's unit moves and before
all of yours.

City Management Agent:
The city management agent uses a lot of CPU.  The C.M.A only needs to be
updated at the end of each turn.  If you know when your turn has
definitely ended it is easier to examine disorders caused due to
aggressive unit unhappiness.  (I think it should only update at the end
of the turn or on demand even without asynchronous unit moves.)

Vulnerable diplomant:
It is a common tactic to destroy a diplomat while the other player is
trying to select one of the diplomat options.  With separate unit moves
there is never this opportunity.

Double AI move:
Sometimes the AI will seem to move the unit twice in the same turn.  The
AI unit does move twice before the player can respond, though not in the
same turn.  With asynchronous moves this is solved.

"Arcade" nix:
Unfortunately, sometimes people can win Freeciv games because they were
able to fling their mouse around faster.  This is rather distressing in
a fine strategy game like Freeciv.  Asynchronous unit moves put an end
to that.

Frontier lookout time sink:
Players often have to keep an eye on enemy movements so they are not
caught by surprise.  With asynchronous unit moves players can do tax,
city, patrol, Go To, science, and other administration in the mean time
instead.

Shuffled players:
If I understand the shuffle players code correctly, it would not be
needed with asynchronous unit moves, a constant order serves everyone.


Problems That Aren't So Bad:

Slower play:
Play could be slower because players cannot move their units while other
players are moving their units.  There are a few ways to mitigate this.
I think with experienced players the play could actually be faster.
- Players could use the Go To command on all units they figure will not
  end up in trouble if the orders are carried out
- Players can more easily use patrols
- Players will never have to hesitate in "chariot situations"
- Players will never have to keep an eye on frontiers for enemy activity
  while they would rather be moving their units

Coding:
I attempted to implement my idea.  I didn't get very far because I know
not what the heck I am doing.  The AI wouldn't make cities.  I think the
main loop would look like this instead:
        while(game_is_still_going) {
                do_turn_beginning_stuff();
                for(player in all_players) {
                        player.do_patrols();
                        player.do_gotos();
                        if(player.ai_control)
                                player.ai_do_everything();
                        else
                                player.do_interactive_units();
                        player.do_autoexplore();
                        player.do_autoattacks();
                        player.do_autosettlers();
                }
                for(player in all_players) {
                        player.update_sold_buildings();
                        player.cma_update();
                }
                do_turn_ending_stuff();
        }

-- 
TomG
 
http://em.ca/~tomg/contact.html

Attachment: pgpceSUoQsL2S.pgp
Description: PGP signature


[Prev in Thread] Current Thread [Next in Thread]