Jump to content

Recommended Posts

  • Replies 84
  • Created
  • Last Reply

Top Posters In This Topic

I hope there will be "AI characters", for skirmish play, to make it more interesting than just AI easy, moderate and hard. (f.e. Command and Conquer Generals: Rush Hour)

Possible options:

A- A hero is the "commander", (using the heroes already included in the game ofcourse). Each AI player uses 1 hero only ( which you can appoint before playing) and every hero has a different play style/ other tactics. Example: When you fight against the Carthaginians with Hannibal as general, the AI will be (from the beginning) aggressive, rushing and trying to tackle your economy (raiding farms etc.) instead of going for the kill immediately (like what they did with Rome in reality)... etc. you get my point.

B- instead of using AOE2 terminology like: big boomer, rusher, balanced, etc. you can use (old) professions as AI opponent. For example for Rome: Quaestor ( healthy economy) , Pontifex Maximus ( focus on religious units, balanced), Consul etc.

Any comments?

Link to comment
Share on other sites

A- A hero is the "commander", (using the heroes already included in the game ofcourse). Each AI player uses 1 hero only ( which you can appoint before playing) and every hero has a different play style/ other tactics. Example: When you fight against the Carthaginians with Hannibal as general, the AI will be (from the beginning) aggressive, rushing and trying to tackle your economy (raiding farms etc.) instead of going for the kill immediately (like what they did with Rome in reality)... etc. you get my point.

B- instead of using AOE2 terminology like: big boomer, rusher, balanced, etc. you can use (old) professions as AI opponent. For example for Rome: Quaestor ( healthy economy) , Pontifex Maximus ( focus on religious units, balanced), Consul etc.

Any comments?

I like the first idea, but we also need a clear indication of each commander's behavior in the UI. The second option actually detracts from what benefit AoE2's terminology provided - not all of our players are going to be history experts (or even enthusiasts, for that matter). We need to simplify the descriptions so that even the most naive of downloaders understand how each AI will behave at a glance.

Link to comment
Share on other sites

If i look at the current heroes in the Design Document, it shouldnt be too hard to give every hero/AI computer a distinctive and relatively unique AI, according to their life/biography/known facts...

Pre-Imperial Romans:

Cunctator: Defensive AI, only in the late game potentially dangerous attacker.

Sulla: Aggressive AI. Focus on land units/legions.

Scipio: Balanced AI.

etc.

Link to comment
Share on other sites

Shouldn't he also focus a good bit on religion compared to the other two? (Look at his bio on Wikipedia.)

I didnt read his bio now, i only remembered some facts about the Punic wars. This was just an example to illustrate my proposed method. Of course other details (= research) are required.

If the developers want to include this, I volunteer to make a design document for the AI of every hero. Although i'm not a real historian (yet) , i'm studying History at University. If i can help...

Link to comment
Share on other sites

It's probably a bit early to worry about the details of AI personalities now - need to focus on getting a single one basically working first, which'll take long enough :D. But the engine supports multiple independent AI scripts and lets players select them, and it should also be possible to tweak parameters within a single AI script (e.g. to make it more aggressive or more defensive, if the script was designed to support that), so it'd be good to add some variety like that eventually :)

Currently I'm working on making it not incredibly slow - the previously-committed code can take ~100ms to transfer entity data to the AI scripts every turn, which isn't good, so I'm improving that by only transferring the properties that have changed since the last turn, and adding more code on the AI side to decompress it back into the full entity state, and then exposing the state through some wrapper classes so you can say "this.entities.filter(function(ent) { return ent.isOwn; }).destroy();" etc.

Link to comment
Share on other sites

On a vaguely relevant note: http://arstechnica.com/gaming/news/2011/01...competition.ars is interesting as a non-technical discussion of RTS AI design. (But it does seem kind of cheating to focus on a single strategy of using flying mutalisk units (which don't get stuck on obstacles and which benefit from micromanagement speed that humans can't match), and not a good approach in situations like ours where the goal of AI is to help human players have fun.)

Link to comment
Share on other sites

Rhino is written in Java, so that's not too useful for us since we're not going to port the whole game from C++ to Java :). But we don't need continuations anyway - that's about the current state of execution (e.g. the function call stack and local variables), so you could serialise a program while it's half-way through running a function and then restore it and continue where you left off. We'll never need to serialise the AI while it's still running (since it'll stop running at the end of each turn), so it's a simpler problem (but still not a simple problem because of closures).

(Incidentally, I mentioned SpiderMonkey's XDR earlier, but I've been told it can't actually serialise arbitrary data - it apparently just serialises compiled scripts, so it's used as an optimisation for parsing and can't really do any more than that.)

Link to comment
Share on other sites

  • 3 weeks later...

Been working slowly on various stuff. Currently I've got a (rubbish, poorly-designed) AI that can build buildings, which is nice. E.g.:

ai-tiles0-00.pngai-tiles1-00.png (Oasis)

ai-tiles0-01.pngai-tiles1-01.png (Belgian Bog)

(The left images show which tiles can be built on (i.e. aren't off the map, underwater, on steep slopes, or blocked by trees or rocks or buildings). The right images indicate each tile's distance to the nearest non-buildable tile, so brighter tiles have plenty of space for large buildings. The AI computes that to discover which tiles have enough room, then combines it with some other data so it prefers tiles close to its existing buildings, to discover the best valid location for building.)

Link to comment
Share on other sites

Committed some code now - the AI should try to train some female citizens, collect some resources, build some houses and a barracks and some farms, and train some soldiers and send them to the enemy civ center. In terms of strategy it's terrible - this is mostly just a proof-of-concept for the low-level systems, and someone probably needs to redesign it to work decently as a player, but that can come later (y)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...