Advertisement

AI Framework for .NET?

Started by June 10, 2011 03:32 PM
6 comments, last by psyfreak 13 years, 5 months ago
Hello,

this weekend I'll plan to start to develop my Indie submarine (modern) naval sim with XNA 4. Since the core of such a sim/game is not grahpics but heavily AI (I consider this as the most important part, apart from the simulation engine), I'll relatively soon reach the point where I need to start writing AI code.

I've already read some standard books about AI/GameAI, so I'd say I have a big picture about the topic.

So, can you guys recommend me any .NET framework concerning AI...especially for the more advanced algorithms? FSM and similar 'easy stuff' will not help me much...the environment of such a setting is too dynamic (strategic/tactical A, also ownship crew AI).

The .NET AI frameworks which I've found, seem to be pretty outdated, so I am unsure if it is not better to write the stuff by my own - by leveraging coding snippets of various forum threads and blogs.

Thx.
Most of the code you will find for game development in books and on websites will be in C++. Not a lot of .NET stuff floating around for a variety of reasons.

Dave Mark - President and Lead Designer of Intrinsic Algorithm LLC
Professional consultant on game AI, mathematical modeling, simulation modeling
Co-founder and 10 year advisor of the GDC AI Summit
Author of the book, Behavioral Mathematics for Game AI
Blogs I write:
IA News - What's happening at IA | IA on AI - AI news and notes | Post-Play'em - Observations on AI of games I play

"Reducing the world to mathematical equations!"

Advertisement

Most of the code you will find for game development in books and on websites will be in C++. Not a lot of .NET stuff floating around for a variety of reasons.


Have the same impression...I assume you mean with 'variety of reasons' that c++ is still the major language concerning game development?

[quote name='IADaveMark' timestamp='1307721267' post='4821744']
Most of the code you will find for game development in books and on websites will be in C++. Not a lot of .NET stuff floating around for a variety of reasons.


Have the same impression...I assume you mean with 'variety of reasons' that c++ is still the major language concerning game development?
[/quote]
Even deeper than that... there is a reason that C++ is the major language for game development -- and only part of it is institutional momentum. For example, many games need the fine control of memory management that .NET languages remove in the name of "helping make things simpler".

Dave Mark - President and Lead Designer of Intrinsic Algorithm LLC
Professional consultant on game AI, mathematical modeling, simulation modeling
Co-founder and 10 year advisor of the GDC AI Summit
Author of the book, Behavioral Mathematics for Game AI
Blogs I write:
IA News - What's happening at IA | IA on AI - AI news and notes | Post-Play'em - Observations on AI of games I play

"Reducing the world to mathematical equations!"

Depends what you want to do....

http://www.aforgenet.com/

may have something you are after (eg NN and GAs)
I don't know of any AI Frameworks for .NET (or many in general). You'll probably have to implement your own version of A* and the like.

Behavior Trees are a good place to start. They're discussed extensively on aigamedev.com. Read this article first if you aren't familiar with them. You can implement one like this:

enum TaskResult {
Running,
Success,
Failure,
Error
}

// this could be a Func<float, TaskResult> instead of an interface
// if you prefer a functional style over object-oriented
interface IBehavior {
TaskResult Run(float dt);
}

// example behavior: sequence
class SequenceBehavior : IBehavior {
public TaskResult Run(float dt) {
if (Behaviors != null && current < Behaviors.Count) {
IBehavior b = Behaviors[current];
TaskResult r = b.Run(dt);
switch (r) {
case TaskResult.Success:
++current;
if (IsLooping) {
current = current % Behaviors.Count;
}
break;
}
return r;
}
return TaskResult.Success;
}

public IList<IBehavior> Behaviors { get; set; }

public bool IsLooping { get; set; }

int current;
}


You can see how you'd implement the other core behaviors (Parallel, Priority Selector, Probability Selector) and go from there.
Anthony Umfer
Advertisement

Depends what you want to do....

http://www.aforgenet.com/

may have something you are after (eg NN and GAs)


That looks very interesting^^. Thx!


Perhaps you have a look here:
http://www.youtube.com/user/ArtificialTechnology
http://www.ekione.com

We just release our new version EKI One v2.6 incl. .NET client and Unity Workflow SDK.
You can also download a trial version on shop.ekione.com




Hello,

this weekend I'll plan to start to develop my Indie submarine (modern) naval sim with XNA 4. Since the core of such a sim/game is not grahpics but heavily AI (I consider this as the most important part, apart from the simulation engine), I'll relatively soon reach the point where I need to start writing AI code.

I've already read some standard books about AI/GameAI, so I'd say I have a big picture about the topic.

So, can you guys recommend me any .NET framework concerning AI...especially for the more advanced algorithms? FSM and similar 'easy stuff' will not help me much...the environment of such a setting is too dynamic (strategic/tactical A, also ownship crew AI).

The .NET AI frameworks which I've found, seem to be pretty outdated, so I am unsure if it is not better to write the stuff by my own - by leveraging coding snippets of various forum threads and blogs.

Thx.

This topic is closed to new replies.

Advertisement