Usenet.com

www.Usenet.com

Group Index

Comp Thread Archive from Usenet.com

<-- __Chronological__ --> <-- __Thread__ -->

Re: Is this the right place to ask for help about AI?



Well, i answer myself reading more on that group.
So i will explain what i'm doing, what i want, and where i'm stuck.
Please don't laught too loud: i'm a very newbie about "AI".. :)

I'm trying to do a remake and an improvement of the good ol' Commodore 64
"Barbarian".
It's a two charachter fight game, where the two fighters are equals in the
moves, and the CPU opponent come a bit more deadly each round you win.
My goals are:
1) Build a simplest game
2) Remake the game entirely (i've stolen the sprites with a C64 emulator)
3) Improve the game: i want to give at each player the way to creates its
own Charachter, drawing its sprites and defining the new moves.

For the moment, i stay at point 1) and i try to describe a "move":
Each move is a sort of "object" with some properties:
Frames: are the sprite sequence (like a movie)
Type of move: MOVEMENT, ATTACK, PARRY and DODGE
Each fighter have 3 distinct body parts: head, chest and legs.
So each move other than movement specify also one or more body parts.

Note:
Game runs at "Ticks". I mean that each frame have it's time lenght, so no
move advance to the next frame it's done until the current frame time is
expired.

Suppose i have that list of moves (names of the moves are the best i can do
with my poor english :(  )

1) Hi swing - Attack head
2) Mid swing - Attack chest
3) Crouch swing - Attack legs + Dodge Head and Chest
4) Hi Parry - Parry Head
5) Mid Parry - Parry Chest
6) Jump - Dodge Legs
7) Crouch - Dodge Head and Chest
8) Advance - Movement forward
9) Retreat - Movement backward

In my simple mind a simple thing is borning: AI knows exactly what the
opponent is doing, so i think that build the "Perfect CPU Opponent" is
possible. AI knows how much time (number of frames) it have to "react" to
the opponent current move, and where the opponent move will hits, so it can
choose the right move to
a) damage the opponent
b) avoid to be damage.
Then it can be easy to add some delay on the decisions or some random wrong
choice for the first "low" levels.

That sounds simple, but my first problem is "how to make AI thinking?"

I advance to point 2)
Some moves (not listed here) are "abortable". So you can change your move in
the middle of another... should the AI take care of this?
Some moves produces an "Instant kill" instead of the normal damage, but are
(in time) more long. What the AI have to do? Parry the attack, or dodge and
hit while the opponent is still in the middle of that long move?
Some moves don't cause damage, but make the "victim" falling to the ground,
giving a chance to begin long moves while the opponent is not still stand.
How the AI should judge these moves, and how to choose to use it or not (so
how to evaluate if is better doing damage, or gain some time)?

While advancing to point 3), i want to add more fighter properties like:
Damage inflicted (stronger charachters do more damage than "default"
Damage absorption (a modifier to the damage it takes)
Weight (and push effects: a 180kg troll can push away a 70kg elf when it
hits, after doing damage)
Speed (moves have different time duration).

A good AI (i think) will play different charachters in different modes, for
example making a fast and light charachter attacking more often than a slow
and stronger one, witch instead can wait, parry and then hit.
How to implement all these stuffs?

These questions can sounds trivial for you great AI programmer, but for me
are a big rock in the middel of my way.
I'm a self made programmer (my school was about other things), so i don't
know a bit about AI theory.

What's the best way to start with my project?


Sorry for this long post :)

Parduz





<-- __Chronological__ --> <-- __Thread__ -->


Usenet.com




Please check out one of the premium Usenet Newsgroup Service Providers below for access to Usenet.




Please check out one of the premium Usenet Newsgroup Service Providers below for access to Usenet.