digitalmars.empire - The computer has no special advantages - yeah right!
- Stewart Gordon (45/45) Jul 25 2006 From the help file:
- Sean Kelly (9/29) Jul 25 2006 But this is a turn-based game. How can the computer opponents (of which...
- Stewart Gordon (26/43) Jul 26 2006 Read the code and the documentation. It's a cross between a turn-based
- Sean Kelly (7/26) Jul 27 2006 I'm not actually certain how Civ works at a code level, but the player
- Stewart Gordon (17/27) Jul 27 2006 Indeed. I'd never had any impression that in Civ the computer thinks
- Walter Bright (4/6) Jul 27 2006 Empire was designed to run on a PDP-10, which ran like molasses relative...
- Sean Kelly (5/12) Jul 27 2006 Makes sense. I'll admit I do remember people playing Empire on Sun or
- Stewart Gordon (17/17) Jul 27 2006 While debugging, I stumbled upon another bug that might give the
- Walter Bright (3/16) Jul 27 2006 The fact that the computer is smarter than you is a perfectly fair
- Sean Kelly (8/25) Jul 27 2006 The most difficult aspect of AI programming isn't making one that can
- Walter Bright (6/32) Jul 27 2006 A lot of game AIs make up for their general suckiness by cheating.
- Stewart Gordon (16/21) Jul 28 2006 Of course, with the speed of today's machines, this pseudo-realtime
- Walter Bright (3/17) Jul 28 2006 The PC game does - you can connect other players with the serial port.
- Stewart Gordon (24/41) Jul 28 2006 Smartness is one thing. Speed is another. And if the speed is such
- Walter Bright (3/32) Jul 28 2006 You shouldn't have any trouble beating the Empire AI. 10 moves isn't
From the help file: "The computer operated players play by the same rules and under the same conditions that you do. It has no special advantages, though it may appear otherwise at times." This doesn't seem right. Firstly, because computers are much faster than humans at processing information, the computer can often complete several turns in the time it takes the human player to make one move. This can be seen by observing that human player is almost constantly ten or eleven turns behind the computer-controlled players. (One improvement in my current working version is to bring the turn counters properly into view, as they were presumably meant to be.) Secondly, to add to this effect, it appears that a computer player's timeslice corresponds to the time it takes the computer to think of a move to make. On the other hand, the human's timeslices consist merely of looking to see if the player has pressed a key and then processing it, and are therefore much smaller than the computer's timeslices. Moreover, am I imagining it, or does the same computer opponent sometimes attack two of my units before my move is accepted? I can't see why this would be happening - it would appear on looking at the code that in one timeslice, the program receives no more than one move, be it from human or computer. There ought to be a way of making the game fairer from this point of view. MFH claims to have made the improvement "avoiding 100% CPU load". It would be interesting to see how this is implemented, and whether it is any step towards this. I guess a possible approach is to use threads to implement the AI, and thereby do away with timeslices. Of course, it would be necessary to design the mechanism for processing the moves to avoid collisions between players' moves. One possibility, on Windows at least, is to use a custom message to post the computer's moves to the message queue along with the keystrokes that constitute the human's moves. And so that it plays at a more humanistic speed, the AI threads could pause briefly before making each move. Of course, it would take some thinking to decide how long the delay should be.... This isn't something I plan to implement right now. I suppose it would be worth seeing MFH's work before coming to any decision on what to do. Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- C++ a->--- UB P+ L E W++ N+++ o K- w++ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.
Jul 25 2006
Stewart Gordon wrote:From the help file: "The computer operated players play by the same rules and under the same conditions that you do. It has no special advantages, though it may appear otherwise at times." This doesn't seem right. Firstly, because computers are much faster than humans at processing information, the computer can often complete several turns in the time it takes the human player to make one move. This can be seen by observing that human player is almost constantly ten or eleven turns behind the computer-controlled players. (One improvement in my current working version is to bring the turn counters properly into view, as they were presumably meant to be.)But this is a turn-based game. How can the computer opponents (of which there are several) possibly get more turns than the player?Secondly, to add to this effect, it appears that a computer player's timeslice corresponds to the time it takes the computer to think of a move to make. On the other hand, the human's timeslices consist merely of looking to see if the player has pressed a key and then processing it, and are therefore much smaller than the computer's timeslices.I'm not sure I understand. Do turns automatically expire if you take too long to press a button? I've never seen this happen.I guess a possible approach is to use threads to implement the AI, and thereby do away with timeslices.I suppose if you want the computer to constantly 'think' in the background this might make sense. Though it's worth mentioning that modern versions of this game such as Civilization still use timeslices. Sean
Jul 25 2006
Sean Kelly wrote: <snip>But this is a turn-based game. How can the computer opponents (of which there are several) possibly get more turns than the player?Read the code and the documentation. It's a cross between a turn-based game and a real-time strategy game. It took me a while to make sense of it too.No. Look at the unusual message loop and the functions it calls. You'll see that it polls each player in turn to see if a move has been entered. Each player has his/her/its own turn counter. When any player is 11 turns ahead of any other, it simply stops giving the ahead player timeslices for the time being. When I bring out my latest version, you will be able to see this for yourself more clearly. And you will see that, because the computer can play much faster, your turn number will usually be 10 or 11 behind that of your opponents.Secondly, to add to this effect, it appears that a computer player's timeslice corresponds to the time it takes the computer to think of a move to make. On the other hand, the human's timeslices consist merely of looking to see if the player has pressed a key and then processing it, and are therefore much smaller than the computer's timeslices.I'm not sure I understand. Do turns automatically expire if you take too long to press a button? I've never seen this happen.You mean think while waiting for the opponent to move? I'm surprised if even the newer Civ incarnations implement this by timeslices. Is this why even turn-based games often stipulate a minimum processor speed - so that the AI can keep up with the human brain? Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- C++ a->--- UB P+ L E W++ N+++ o K- w++ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.I guess a possible approach is to use threads to implement the AI, and thereby do away with timeslices.I suppose if you want the computer to constantly 'think' in the background this might make sense. Though it's worth mentioning that modern versions of this game such as Civilization still use timeslices.
Jul 26 2006
Stewart Gordon wrote:Sean Kelly wrote: <snip>Crazy.But this is a turn-based game. How can the computer opponents (of which there are several) possibly get more turns than the player?Read the code and the documentation. It's a cross between a turn-based game and a real-time strategy game. It took me a while to make sense of it too.I'm not actually certain how Civ works at a code level, but the player and all computer opponents are given an actual turn in which to do whatever. Late in the game the computer turns tend to take at least a few seconds to complete so I suspect much of the work occurs then. SeanYou mean think while waiting for the opponent to move? I'm surprised if even the newer Civ incarnations implement this by timeslices. Is this why even turn-based games often stipulate a minimum processor speed - so that the AI can keep up with the human brain?I guess a possible approach is to use threads to implement the AI, and thereby do away with timeslices.I suppose if you want the computer to constantly 'think' in the background this might make sense. Though it's worth mentioning that modern versions of this game such as Civilization still use timeslices.
Jul 27 2006
Sean Kelly wrote:Stewart Gordon wrote:<snip>Indeed. I'd never had any impression that in Civ the computer thinks ahead, but I suppose it's easily possible. I imagine that most modern games would use threads to implement it. Indeed, most modern strategy games probably have the computer's thinking always in a thread separate from the main execution thread, so that the program doesn't go into a "not responding" state for seconds or minutes at a time. Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- C++ a->--- UB P+ L E W++ N+++ o K- w++ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.You mean think while waiting for the opponent to move? I'm surprised if even the newer Civ incarnations implement this by timeslices. Is this why even turn-based games often stipulate a minimum processor speed - so that the AI can keep up with the human brain?I'm not actually certain how Civ works at a code level, but the player and all computer opponents are given an actual turn in which to do whatever. Late in the game the computer turns tend to take at least a few seconds to complete so I suspect much of the work occurs then.
Jul 27 2006
Sean Kelly wrote:But this is a turn-based game. How can the computer opponents (of which there are several) possibly get more turns than the player?Empire was designed to run on a PDP-10, which ran like molasses relative to today's PC. Allowing some "hysteresis" on the turns made for a smoother playing experience.
Jul 27 2006
Walter Bright wrote:Sean Kelly wrote:Makes sense. I'll admit I do remember people playing Empire on Sun or perhaps DEC machines ages ago, but I somehow dodged the addiction until only recently ;-) SeanBut this is a turn-based game. How can the computer opponents (of which there are several) possibly get more turns than the player?Empire was designed to run on a PDP-10, which ran like molasses relative to today's PC. Allowing some "hysteresis" on the turns made for a smoother playing experience.
Jul 27 2006
While debugging, I stumbled upon another bug that might give the computer an unfair advantage. At the beginning of the game, before the first unit has been built, computer players advance one turn per timeslice, and the human player advances one turn every two timeslices. This could be just what I can see at the moment of yet another cause of the computer's turns advancing more quickly. OK, so the significance of this will lessen as the game progresses and there are more units to manoeuvre, but it's still there. Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- C++ a->--- UB P+ L E W++ N+++ o K- w++ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.
Jul 27 2006
Stewart Gordon wrote:From the help file: "The computer operated players play by the same rules and under the same conditions that you do. It has no special advantages, though it may appear otherwise at times." This doesn't seem right. Firstly, because computers are much faster than humans at processing information, the computer can often complete several turns in the time it takes the human player to make one move. This can be seen by observing that human player is almost constantly ten or eleven turns behind the computer-controlled players. (One improvement in my current working version is to bring the turn counters properly into view, as they were presumably meant to be.)The fact that the computer is smarter than you is a perfectly fair advantage!
Jul 27 2006
Walter Bright wrote:Stewart Gordon wrote:The most difficult aspect of AI programming isn't making one that can soundly beat a human opponent, but making one that will be engaging and challenging and make "realistic" mistakes. But this rule is just one more that the player must adapt to, and I suspect a seasoned player could play quickly enough to keep up with the computer, given realistic timeslices. SeanFrom the help file: "The computer operated players play by the same rules and under the same conditions that you do. It has no special advantages, though it may appear otherwise at times." This doesn't seem right. Firstly, because computers are much faster than humans at processing information, the computer can often complete several turns in the time it takes the human player to make one move. This can be seen by observing that human player is almost constantly ten or eleven turns behind the computer-controlled players. (One improvement in my current working version is to bring the turn counters properly into view, as they were presumably meant to be.)The fact that the computer is smarter than you is a perfectly fair advantage!
Jul 27 2006
Sean Kelly wrote:Walter Bright wrote:A lot of game AIs make up for their general suckiness by cheating. Empire's AI doesn't cheat. The 10 turn hysteresis makes things a little more interesting by giving a pseudo-realtime effect, but it doesn't confer any significant or lasting advantage to any player. The hysteresis also applies when you have multiple humans playing.Stewart Gordon wrote:The most difficult aspect of AI programming isn't making one that can soundly beat a human opponent, but making one that will be engaging and challenging and make "realistic" mistakes. But this rule is just one more that the player must adapt to, and I suspect a seasoned player could play quickly enough to keep up with the computer, given realistic timeslices.From the help file: "The computer operated players play by the same rules and under the same conditions that you do. It has no special advantages, though it may appear otherwise at times." This doesn't seem right. Firstly, because computers are much faster than humans at processing information, the computer can often complete several turns in the time it takes the human player to make one move. This can be seen by observing that human player is almost constantly ten or eleven turns behind the computer-controlled players. (One improvement in my current working version is to bring the turn counters properly into view, as they were presumably meant to be.)The fact that the computer is smarter than you is a perfectly fair advantage!
Jul 27 2006
Walter Bright wrote: <snip>A lot of game AIs make up for their general suckiness by cheating. Empire's AI doesn't cheat. The 10 turn hysteresis makes things a little more interesting by giving a pseudo-realtime effect, but it doesn't confer any significant or lasting advantage to any player.Of course, with the speed of today's machines, this pseudo-realtime effect ain't what it used to be. And it may not be a _significant_ advantage, but to claim it's _no_ advantage is silly.The hysteresis also applies when you have multiple humans playing.How does one do this? Or should I ask: Which platform versions have or have ever had such a facility? Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- C++ a->--- UB P+ L E W++ N+++ o K- w++ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.
Jul 28 2006
Stewart Gordon wrote:Walter Bright wrote: <snip>It really is no advantage.A lot of game AIs make up for their general suckiness by cheating. Empire's AI doesn't cheat. The 10 turn hysteresis makes things a little more interesting by giving a pseudo-realtime effect, but it doesn't confer any significant or lasting advantage to any player.Of course, with the speed of today's machines, this pseudo-realtime effect ain't what it used to be. And it may not be a _significant_ advantage, but to claim it's _no_ advantage is silly.The PC game does - you can connect other players with the serial port.The hysteresis also applies when you have multiple humans playing.How does one do this? Or should I ask: Which platform versions have or have ever had such a facility?
Jul 28 2006
Walter Bright wrote:Stewart Gordon wrote:Smartness is one thing. Speed is another. And if the speed is such that keeping up is well and truly beyond human capability, such as being able to make a million moves within the fastest human's reaction time, you can hardly call it fair except in a _purely_ turn-based game or an implementation designed purely to test computers to the limit. OTOH most games that are released to the public are designed to give us mere mortals a fair challenge. This is also why a lot have multiple skill levels. That said, it gets worse. If you've ever played Duke Nukem 3D in DukeMatch mode, you may have noticed the computer-controlled opponents striking with such speed and accuracy that most human players would never dream of. Sometimes they'd even launch an RPG such that it kills you when they've barely even had time to see that you're there. And no, they're not just firing continuously. Stewart. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/M d- s:- C++ a->--- UB P+ L E W++ N+++ o K- w++ O? M V? PS- PE- Y? PGP- t- 5? X? R b DI? D G e++++ h-- r-- !y ------END GEEK CODE BLOCK------ My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.From the help file: "The computer operated players play by the same rules and under the same conditions that you do. It has no special advantages, though it may appear otherwise at times." This doesn't seem right. Firstly, because computers are much faster than humans at processing information, the computer can often complete several turns in the time it takes the human player to make one move. This can be seen by observing that human player is almost constantly ten or eleven turns behind the computer-controlled players. (One improvement in my current working version is to bring the turn counters properly into view, as they were presumably meant to be.)The fact that the computer is smarter than you is a perfectly fair advantage!
Jul 28 2006
Stewart Gordon wrote:Walter Bright wrote:You shouldn't have any trouble beating the Empire AI. 10 moves isn't going to make any difference.Stewart Gordon wrote:Smartness is one thing. Speed is another. And if the speed is such that keeping up is well and truly beyond human capability, such as being able to make a million moves within the fastest human's reaction time, you can hardly call it fair except in a _purely_ turn-based game or an implementation designed purely to test computers to the limit. OTOH most games that are released to the public are designed to give us mere mortals a fair challenge. This is also why a lot have multiple skill levels.From the help file: "The computer operated players play by the same rules and under the same conditions that you do. It has no special advantages, though it may appear otherwise at times." This doesn't seem right. Firstly, because computers are much faster than humans at processing information, the computer can often complete several turns in the time it takes the human player to make one move. This can be seen by observing that human player is almost constantly ten or eleven turns behind the computer-controlled players. (One improvement in my current working version is to bring the turn counters properly into view, as they were presumably meant to be.)The fact that the computer is smarter than you is a perfectly fair advantage!
Jul 28 2006