Post by Kilarin on Aug 3, 2005 11:49:46 GMT -5
Xaa:
Absolutely! That was assumed. Suggestions are fine, but people should understand that suggestions are JUST suggestions, not orders.
Since you are playing with "training" an AI, I have a dream!
Something I mentioned a long time ago on Siege Network that was simply too difficult to do under the DS engine:
------------------------(begin old siegenetwork post)
I would like to be able to script some of my characters behavior without having to modify the game. A very simple scripting language would be fantastic. Something where I could say:
if ((HEALTH<100%) and (MANA>50%) and (NOT-IN-COMBAT)) cast HEALING-SPELL;
if ((NO-FAMILIAR) and (MANA>50%) and (NOT-IN-COMBAT)) cast FAMILIAR-SPELL;
if ((NOT-ACTIVE("ACCURACY")) and (MANA>50%) and (NOT-IN-COMBAT)) cast ACCURACY;
if ((NO-AMMO("DRAGON-MINI-GUN")) ready "HEART BOW";
You get the idea. The important point would be that I could setup or modify a script in-game. If I get a new spell or develop a new strategy I could easily pop up a characters AI script and make a simple modification on the fly. Unfortunately, having played with writing compilers, I know that this "simple" scripting language would probably be VERY complicated to implement. If possible at all. Not to mention the fact that unless you develop a very simple gui interface, even at "simple" it will be too complicated for most of the game playing public. Alas, it's probably just a dream.
--------------------------(end old siegnetwork post)
Being a programmer, I LOVE the idea of being able to write programs to run the AI of my character. BUT, I realize that this is NOT something that would interest the VAST majority of players. ALSO, it has the distinct disadvantage of being easily transferable. That means once some generous person generates a really top notch AI script, and then puts it online for download, EVERYONE will have the same advantages.
SO, your "training" for fencing idea inspired me on another possibile implementation of this idea.
Assuming you are turning the AI into a primitive "Neural Net" learning system, why not let the character learn MORE than just fencing styles? (which was probably already something you were thinking of) What if the character was "trained" in virtually every behavior.
For example, instead of a predetermined autodrink number. The AI will start out never using autodrink. But every time the player clicks "drink", the AI remembers the circumstances. Specifically, was he in combat or not, and what was his health or mana level at the time. You could, of course, expand that with lots of other variables, (how many enemies left, etc) but those two would be adequate. The characters "Neural Net" starts building up a habit. The next time those conditions are met, the chance of the character autodrinking, all by themselves, goes up. Keep repeating the same instructions, and soon the character will be autodrinking all by themselves.
If the player cast "summon killer gremel" whenever the character is at full mana, not in combat, and doesn't have a summon, then the AI will start building up a habit based on that, and will eventually start doing it all by themselves. If later the player wants the character to start summoning a green drake instead, they will have to start overriding the character and building up a NEW habit. At first the character will try to summon a gremel every time. After a while, the character will summon a gremel sometimes, and a drake sometimes. Eventually they learn to always summon the drake.
To REALLY make this work, you would need some equivalent of a "reward" and "punish" button. Preferably tied to a "Actions in the last 10 seconds" list. The character stops in the middle of combat and cast "sense heading". NOT GOOD! It's too late for the player to override the behavior, so they pull up the "actions in the last 10 seconds" list and let the character know that THAT action was BAD. NAUGHTY NAUGHTY!!! The "Neural Net" reduces the chance that it will repeat that behavior by a little bit.
An alternative to the "actions in the last 10 seconds" list that may or may not work would be to have the character pop up a small warning that they are about to do something, (cast a spell or drink a potion or switch weapons, etc). The player has a second or two to CANCEL and override the action then, which accomplishes the same thing as the above, but would be more intuitive for most players to use. That short delay might cause problems though, you sometimes need the character to do drink RIGHT THEN, not two seconds AFTER they reach the proper conditions. And, of course, you couldn't use it for direct combat behaviors at all.
The cool thing about this "learning system" would be that, after working and working on training your character, you wouldn't JUST have a character that was more powerful, you would have a character with trained responses that were better than most human reaction times (depending on how you implement it). The characters wisdom, intelligence, and skill would be a reflection of the time, effort, and wisdom that went into training it.
The downside? This would be a NIGHTMARE project. HUGE, COMPLICATED, NASTY to program. But OH! It would be fun to play...
someone could start an "Idea" thread, if they want. However, please don't be suprised if I completely and utterly ignore it and just do whatever the hell I want, instead.
Absolutely! That was assumed. Suggestions are fine, but people should understand that suggestions are JUST suggestions, not orders.
Since you are playing with "training" an AI, I have a dream!
Something I mentioned a long time ago on Siege Network that was simply too difficult to do under the DS engine:
------------------------(begin old siegenetwork post)
I would like to be able to script some of my characters behavior without having to modify the game. A very simple scripting language would be fantastic. Something where I could say:
if ((HEALTH<100%) and (MANA>50%) and (NOT-IN-COMBAT)) cast HEALING-SPELL;
if ((NO-FAMILIAR) and (MANA>50%) and (NOT-IN-COMBAT)) cast FAMILIAR-SPELL;
if ((NOT-ACTIVE("ACCURACY")) and (MANA>50%) and (NOT-IN-COMBAT)) cast ACCURACY;
if ((NO-AMMO("DRAGON-MINI-GUN")) ready "HEART BOW";
You get the idea. The important point would be that I could setup or modify a script in-game. If I get a new spell or develop a new strategy I could easily pop up a characters AI script and make a simple modification on the fly. Unfortunately, having played with writing compilers, I know that this "simple" scripting language would probably be VERY complicated to implement. If possible at all. Not to mention the fact that unless you develop a very simple gui interface, even at "simple" it will be too complicated for most of the game playing public. Alas, it's probably just a dream.
--------------------------(end old siegnetwork post)
Being a programmer, I LOVE the idea of being able to write programs to run the AI of my character. BUT, I realize that this is NOT something that would interest the VAST majority of players. ALSO, it has the distinct disadvantage of being easily transferable. That means once some generous person generates a really top notch AI script, and then puts it online for download, EVERYONE will have the same advantages.
SO, your "training" for fencing idea inspired me on another possibile implementation of this idea.
Assuming you are turning the AI into a primitive "Neural Net" learning system, why not let the character learn MORE than just fencing styles? (which was probably already something you were thinking of) What if the character was "trained" in virtually every behavior.
For example, instead of a predetermined autodrink number. The AI will start out never using autodrink. But every time the player clicks "drink", the AI remembers the circumstances. Specifically, was he in combat or not, and what was his health or mana level at the time. You could, of course, expand that with lots of other variables, (how many enemies left, etc) but those two would be adequate. The characters "Neural Net" starts building up a habit. The next time those conditions are met, the chance of the character autodrinking, all by themselves, goes up. Keep repeating the same instructions, and soon the character will be autodrinking all by themselves.
If the player cast "summon killer gremel" whenever the character is at full mana, not in combat, and doesn't have a summon, then the AI will start building up a habit based on that, and will eventually start doing it all by themselves. If later the player wants the character to start summoning a green drake instead, they will have to start overriding the character and building up a NEW habit. At first the character will try to summon a gremel every time. After a while, the character will summon a gremel sometimes, and a drake sometimes. Eventually they learn to always summon the drake.
To REALLY make this work, you would need some equivalent of a "reward" and "punish" button. Preferably tied to a "Actions in the last 10 seconds" list. The character stops in the middle of combat and cast "sense heading". NOT GOOD! It's too late for the player to override the behavior, so they pull up the "actions in the last 10 seconds" list and let the character know that THAT action was BAD. NAUGHTY NAUGHTY!!! The "Neural Net" reduces the chance that it will repeat that behavior by a little bit.
An alternative to the "actions in the last 10 seconds" list that may or may not work would be to have the character pop up a small warning that they are about to do something, (cast a spell or drink a potion or switch weapons, etc). The player has a second or two to CANCEL and override the action then, which accomplishes the same thing as the above, but would be more intuitive for most players to use. That short delay might cause problems though, you sometimes need the character to do drink RIGHT THEN, not two seconds AFTER they reach the proper conditions. And, of course, you couldn't use it for direct combat behaviors at all.
The cool thing about this "learning system" would be that, after working and working on training your character, you wouldn't JUST have a character that was more powerful, you would have a character with trained responses that were better than most human reaction times (depending on how you implement it). The characters wisdom, intelligence, and skill would be a reflection of the time, effort, and wisdom that went into training it.
The downside? This would be a NIGHTMARE project. HUGE, COMPLICATED, NASTY to program. But OH! It would be fun to play...