Advertisement

AI Engine

Started by February 28, 2003 01:00 AM
4 comments, last by CosmicKarma 21 years, 6 months ago
I have thought about creating an AI engine one that would be easily ported to millions of consoles programs and games. I may be dreaming but I think I could make it. However, I''m in a very big debate about many aspects which I could use some feedback on. These aspects are as follows: -language to use -component best to export( i.e. Active X, Lib, dll ) -whether to use scripting to control AIs or just functions and property settings. However, this engine has some features which I am pretty sure I can implement although they are very elaborate. I may be dreaming who knows but I would like if someone could help me out the more feedback I get, the better chance that I could create such an engine. nothing is impossible just improbable
nothing is impossible just improbable
It would help if you told us what features you think you can implement...

Very difficult to give feedback on a project we know nothing about



ai-junkie.com
Advertisement
Well, I''m sorry about the broadness of the message but as you can see the time I was kinda tired and didn''t have time to go into detail.

I will try to make this as detailed as possible about my endeavor.

Language:
First off the language is a very important part in determining which implemementation I finally use. I would like this engine to be non script. My goal is to allow programmers to select from a number of different interfaces for passing data to the main AI engine. If I use Java for example the interfaces I create will be in a separate package and also include abstract classes which can be used to directly implement in there programs. The AI''s created by the engine will reside in temporary files directly added either to the engines source directory or to a directory specified by the Controling Program. The Engine itself will most likely be a DLL( Dynamic Link Library ). The interfaces will be part of the DLL of course although you can create your own derived classes and interfaces.

The AI specific:
This is the hard part both to explain and to implement. The AI will be able to become a user and to do whatever the programmer allows. Being able to interface with the classes that the programmer had derived through a hiearchy of data. There will be a type of input output interfaces which the programmer gets to choose how indepth the AI can go into the program. Whether its just simply determining a users voice pattern to playing chess. An AI or Artificial Intelligence meaning an intelligent computer program. The AI engine I have in mind and I''m pretty sure I can implement with a lot of time and hard work and a lot of help will be able to ''think'' in a very simple meaning of the word. You may think I''m crazy but I am confident that I can create such an Engine. Anyways, besides my delusions of granduer I think that the prospect of being able to just derive a few classes and pass system data back and forth between an AI Engine and my program sounds pretty good.

What I need from You:
-Good criticism is always apreciated either reply or send an email. I will be happy to elaborate on any design aspect of the engine. And I hope to have a design doc up on my site as soon as I can create one.
-Any help in creating the design of the engine email me of reply to this post and I will get back to you asap.
-Any ideas or features you would like to add and please don''t be like me and be specific or we could go through five or six posts or emails before I have a clue what you want in an Engine.

Lastliy: Thank you for your opinions and feedback in advance. I hope to hear from you soon. I will be checking this posting often and probably make a few followups on other forums. But while I''m not doing that I will be working on the design documents for the Engine and probably be setting a lot of limitation.

One more thing this is a long term project no set dates when it progresses it progresses when it gets delayed hopefully not forever and finally the more help I have the faster and better the Engine will be.

nothing is impossible just improbable
nothing is impossible just improbable
I would be very surprised if a universal "AI engine" could be developed. It sounds an awful lot like "strong AI," which isn''t going to happen any time soon.

Basically, it''s because a good AI should be built around the problem it''s supposed to solve. And a chess player and a Quake player do two very different things.

The only possible approach that I could see is horribly farfetched, and would take many lifetimes to develop anything resembling decent "intelligence" at any given game: give the agent a dump of the game''s memory space and the ability to generate key and mouse inputs to the game; then use GP to develop a program using these inputs and output (also use previous gamestates as inputs so it has a memory). Then just give the developer functions to rate individual agents. Most of the inputs would be irrelevant, but hopefully evolution should realize this and find a workable solution. However, don''t expect a working solution. Ever.

You see, the less knowledge you program into your AI about the problem, the more it has to learn, and learning AI is typically not very impressive in real-world applications for anything except rather specific optimization problems. Still, the AI that impresses gamers most is usually scripted or hard-coded.

In other words, I wouldn''t even attempt a universal AI engine. It''s hard enough to solve just one problem in the field of artificial intelligence; don''t attempt to solve all of them all at once. Nobody''s gonna make HAL without some major and completely unexpected breakthrough.
There are a number of AI middleware solutions already out there, so i think its very possible. Take a look at:

http://www.ai-implant.com

Here are some ideas to help you with your engine.
To accomplish your first problem (none script based), use a directed network graph. At its base level, AI is a set of inputs (events etc) that translates into a set of outputs (actions, stored data etc) via a set of known operations. Each node would be your operation with a defined bit of ''code'' (perhaps a little VM). The node takes inputs, determines if its node can be activated, if so processes the information in the node. If a node is successfully activated, it follows its connections to try and activate other nodes. Then you just need to come up with a scheme for how to visually display the node contents.

This topic is closed to new replies.

Advertisement