One of the problems can be -- will the decision be outdated by the time it is made (if its finalization is delayed too much). Depending on the game/mechanics the situation may change too much, invalidating much of the planning computation. Usually you would need an event processor that would evaluate them to gauge if the situation change is past a threshold. (Ive before used an object tracking mechanism with conditionals and event priorities and accumulated/cached object data/evaluations and the AI gets filtered alerts when the tracker determines a significant change).
The changes then can be applied to the planner to redo only certain branches of the options being evaluated (or if major priority shift happens to dump everything and restart with the new reality).
If your game macro decisions move slowly and generalizations can be made to be able to calculate strategy, more specific tactics code can then take over which
computes the narrower/simpler problem space.
But then, real AI (planner level in environment with many options or even temporal requirements or the bigger buggaboo of uncertainty) will cost alot of CPU, to where moron level intelligence will be taking more CPU resources than the glitzy graphics do (probably by magnitudes). Its just the cost of having to compute/evaluate so many options and constantly throwing out the results and redo it all.
AI equal cpu usage
--------------------------------------------[size="1"]Ratings are Opinion, not Fact
One of the reasons I'm trying to do this the seemingly difficult way is because software has always been losing in the arms race with hardware. Software is written in a certain way because it is limited by hardware speeds. When hardware speeds increase, software is then written to take full advantage of those speeds. I don't believe that artificial intelligence fits that model yet, not with current hardware speeds. If it does fit the model with current hardware, then it isn't artificial intelligence, it's behavior that simulates intelligence.
It may sound like I've just defined AI, but I've defined the spin-off definition people have been using so far. I am not looking to simulate intelligence. Simulated intelligence is not intelligence. It is trickery to fool the person behind the controller. I am looking to create actual intelligence (within a small scope). And by that I mean an NPC should be able to solve problems within its domain. If programming intelligence the way we problem solve can be done with an NPC that can still only solve complex problems 1000 times slower than a person could, that would be great. That would be actual intelligence and soon enough hardware will come along to speed that up to real time performance.
Going back to my original post I better reiterate the word "simulation". I'm not looking to create a fun massively multi-player game. I'm looking to practice programming real intelligence. Not cheating intelligence (shared state, enemies always know where you are, opponent cars behind you get a speed boost to make it a competitive race, etc.)
Real time parallel execution of real, not simulated, intelligence is the goal here. The more I think about this and read new responses the more it looks like I've set the bar way too high. In that case, I still would like to shoot for real intelligence that performs at a slower speed for this simulation. And the original problem mentioned in my first post is still the main problem.
It may sound like I've just defined AI, but I've defined the spin-off definition people have been using so far. I am not looking to simulate intelligence. Simulated intelligence is not intelligence. It is trickery to fool the person behind the controller. I am looking to create actual intelligence (within a small scope). And by that I mean an NPC should be able to solve problems within its domain. If programming intelligence the way we problem solve can be done with an NPC that can still only solve complex problems 1000 times slower than a person could, that would be great. That would be actual intelligence and soon enough hardware will come along to speed that up to real time performance.
Going back to my original post I better reiterate the word "simulation". I'm not looking to create a fun massively multi-player game. I'm looking to practice programming real intelligence. Not cheating intelligence (shared state, enemies always know where you are, opponent cars behind you get a speed boost to make it a competitive race, etc.)
Real time parallel execution of real, not simulated, intelligence is the goal here. The more I think about this and read new responses the more it looks like I've set the bar way too high. In that case, I still would like to shoot for real intelligence that performs at a slower speed for this simulation. And the original problem mentioned in my first post is still the main problem.
Quote: Original post by chuck22
I'm looking to practice programming real intelligence. Not cheating intelligence (shared state, enemies always know where you are, opponent cars behind you get a speed boost to make it a competitive race, etc.)
"Real" intelligence, eh? Good luck :)
It used to be that AI got to cheat by knowing the whole state of the board, but today in many games the inputs an AI gets from its environment are limited to pretty much the same as what the player gets. Both sound and sight can already be satisfactorily simulated in real-time, for instance (think Thief, Metal Gear Solid, Uncharted, Assassin's Creed).
I'm not convinced that you can make your NPCs think no matter how advanced the hardware gets. At the end of the day they are still going to follow the programming you wrote. What I think you are (or maybe ought to be) looking for is what is known as emergent behavior, which appears in systems that are sufficiently complex and looks like "thinking" AI doing clever things.
Innovative programming does not happen by admitting defeat at the beginning. I do appreciate you keeping my self-expectations in check. One thing I'm certain of is if this idea is unsuccessful, it's something I will find out the hard way.
I'd still like to keep this on topic for any of those who have read responses down to this point. I am still up for suggestions on fair, parallel processing of multiple NPCs.
I'd still like to keep this on topic for any of those who have read responses down to this point. I am still up for suggestions on fair, parallel processing of multiple NPCs.
Actually we have alot of hardware power these days (and memory too) for much smarter AI.
The real limimitation is building the AI logic (problem specific logic rather than the AI engine which is trivial by comparison -- even much more capable ones).
'Teaching' the AI the proplem logic is the chokepoint and mostly involves 'teaching time' done by real people to form the 'good/correct' thinking and correct or cull out the 'bad/wrong' thinking. Automatic learning systems can help alot but even with them doing the grunt work, a human has to shape the AI
and organize the 'lessons' used as examples in the problem space. Complex systems (simulation/game complexity) has horrendous numbers of endcases which an automatic system has to be exposed to and the 'correctness' of tried solutions cant always be determined/discovered automaticly.
It really doesnt do much good running the same simplistic AI logic faster...
--------------------------------------------[size="1"]Ratings are Opinion, not Fact
Quote: Original post by wodinoneeye
It really doesnt do much good running the same simplistic AI logic faster...
Well that depends on what the AI logic is doing. If the AI logic is solving a problem, the problem is solved faster. If the AI logic is learning and gaining knowledge, similar to how you mention a human has to teach the AI 'lessons', then that is done faster too.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement