AI Engine

Btw, this is an excellent candidate for the new plugin wizard :slight_smile:

Also for all of you considering doing something AI related for GSoC, we are now accepting applications.

Hi, I also 'd like to contribute some ideas for the good of all:

In the research of writing my AI fw, what i think essential beside of the algorimths is the data structure and the software architecture:

  • doing magic by load and configs modules.
  • execution have to be flexible and balance -able, provide facilities to monitor and profile the workload.
  • one more innovative idea i want to share is the “incremental data” or the “delta data”…

The fundamental idea of this kind of data is it will be used in progressive operation… You may ask what kind of operation is not progressive??? I mean the kind operation interest more in the newly appear data but not the full view of the data its self. So, the operation is not quite often require the full view (which require an end) of the data but just ask for small portion of updated data and the nearby.

I’m not talking about an algorimth but here is java level. This kind of data its self is suitable for a lot of application include AI for real-time application. The AI in real-time application and games are not very “sotiphicated” compare to other application. Because they have to run in real-time and have to share resource and computation cost with render, physics and others…

Incremental data is like streaming into AI pipeline with a buffer. The different is, this buffer is “intelligent” and by sampling its internal data, the buffer also offer extra information. Incremental data does not promise an end of its progress, its always are continuing. One can find that the data unchanged for a while and lose interest in it and abandon it. That’s the time the GC come and clean it away. Here the implemented GC are also a helper for the low level java GC.

The philosophy of the buffer-all things are buffer (even beyond my imagination) :slight_smile: is : there’s also a lot of buffers and running operations exist out there. One fullfill another and then continue in the stream… If we can control dataflow and flows management (monitoring, profiling and optimizing…), this going to be a bright future. What Flow based programming recently try to do, (what they call remap the programming world) is based on this idea!

Also, incremental data is not suitable for every case. In case, the user don’t like the idea waiting for thousand of buffer, he can use different kind of data for his purpose.

That’s my short intro about the incremental data, plz tell me what you think about the idea.

“Doing magic” is usually a massive trade-off - the more involved the magic is, the harder it is to find out what’s going on.
In general, I’d simply be using Spring, or generally Dependency Injection.

“Monitoring” is generally a good idea. The salient point is generally what to monitor and how to present the data - that’s a huge amount of boring-but-required detail work. (Been there, done that, didn’t even get a lousy t-shirt. Not for games, but for systems that were doing interesting stuff and needed to be monitored. You keep tweaking the output and the queryable information until the last user is satisfied - and that’s gonna take a looong time and maaany iterations, spending hours discussing minuscule details - but it’s no use trying to avoid it, those details are the difference between a dashboard that’s showing what the users need and a dashboard that doesn’t really help at all.)

The data flow stuff sounds interesting. I’ve been wanting a useful way to configure data streams: transactional data (stuff that MUST eventually make it to its destination), real-time data (if it’s lost, just request another update, or simply wait for the next update).
There’s also some compute-on-demand issues involved here. No use trying to predict NPC movement if the data isn’t complete yet, for example. There are lots of degrade-if-data-is-incomplete patterns around in that area, and I’m only seeing ad-hockery being reported here.
Of course, any library that helps in this regard probably needs several iterations, and possibly more than one full rewrite. This basic structural stuff is really hard to do in a fashion that’s both general enough for widespread use and specific enough to be reasonable efficient and easy to configure.

Just my 2 cents for that :slight_smile:

Ok here is the code.

JME Agent fraework is here https://github.com/QuietOne/JMEAI
And some demo robot fighting game and evolution simulation is here GitHub - QuietOne/MonkeyBrainsDemoGames: Demo games made using MonkeyBrains (JMEAI)

Brief intro is available at
https://github.com/QuietOne/JMEAI/blob/master/User%20Guide%20for%20MonkeyBrains.md

This is first version, it will require some refactoring for sure, you feedback will be usefull. Have fun!

3 Likes

Sweet!

@sevarac said: Ok here is the code.

JME Agent fraework is here GitHub - QuietOne/MonkeyBrains: Agent framework for jMonkey Engine
And some demo robot fighting game and evolution simulation is here GitHub - QuietOne/MonkeyBrainsDemoGames: Demo games made using MonkeyBrains (JMEAI)

Brief intro is available at
https://github.com/QuietOne/JMEAI/blob/master/User%20Guide%20for%20MonkeyBrains.md

This is first version, it will require some refactoring for sure, you feedback will be usefull. Have fun!

Hello! Sorry for late responce.

I tested the game. But it’s difficult to say is the lib cool or not. I think we need to make better example with Bullet physics and walls. I have an idea for new testing game.

What do you think about like this:
http://i.imgur.com/se2v6ZT.png

Player - is a user which controls a robot
Hunter - looks a player to kill
Protecter - protects the place where he stands. If he sees the player on a distance -he shoot the player.

I can even try to make the demo without ai.

1 Like

Awesome Idea :slight_smile: Simple and revelatory.

Maybe put some AI controls in the UI so people can easily demo the difference with/without and with different settings?

Maybe give the PC/robot a weapon that turns off or limits the mob AI? Blind/freeze the hunters, confuse the protector?

Just keep it graphically simple and focused :slight_smile: (I’d already be itching to texture those walls and animate the blasted robot :stuck_out_tongue: )

That would be great @mifth! The more demos (and free assets) the better.

@foxhavendesigns said: Maybe put some AI controls in the UI so people can easily demo the difference with/without and with different settings?
As a low-tech user I always appreciate this kind of thing in demos, but wouldn't a simple console that accepts various inputs be a more flexible approach? Less work spent on the UI part (and deciding on GUI framework) that way.

Maybe a good time to use the console appstate plugin @icamefromspace made a little while back?

1 Like

Nice! I didn’t see that. Thanks.

Console would be simpler and faster (and more flexible). Agreed for my part. Certainly start with that :slight_smile:

But I am a visual guy and the more polished a demo (eventually) is, the more impact it makes, imo :wink:

And, as I have so far invested only my opinion, it’s quite easy for me to load the thing up with every bell and whistle I can find =)

I never take offense when someone puts on the brakes :slight_smile: I trust the people actually grunting and sweating to cull any inappropriate facets :stuck_out_tongue_winking_eye:

Well, i’m ready to make it only if @sevarac will help us with AI. :slight_smile:

1 Like
@foxhavendesigns said: But I am a visual guy and the more polished a demo (eventually) is, the more impact it makes, imo ;-)

And, as I have so far invested only my opinion, it’s quite easy for me to load the thing up with every bell and whistle I can find =)

I never take offense when someone puts on the brakes :slight_smile: I trust the people actually grunting and sweating to cull any inappropriate facets :stuck_out_tongue_winking_eye:

You already know what’s over the top here :slight_smile:

I think an unpolished demo will impress those who need to be impressed: The coders that would use an AI lib.
I think what’s needed is a demo where you can see the decisionmaking inputs and the resulting actions. That labyrinth looks fine to me, except I’d like to see all the zones that matter in decision-making: field of vision for each agent (make sure that obstructions cut out their part from field of vision), a thin line from each robot to each perceived entity with some indicator (color-coding, symbols, whatever) that tells the onlooker how that entity was classified. Bird’s-eye perspective so onlookers can see everything at a glance.

1 Like
@toolforger said: ... I think what's needed is a demo where you can see the decisionmaking inputs and the resulting actions. That labyrinth looks fine to me, except I'd like to see all the zones that matter in decision-making: field of vision for each agent (make sure that obstructions cut out their part from field of vision), a thin line from each robot to each perceived entity with some indicator (color-coding, symbols, whatever) that tells the onlooker how that entity was classified. Bird's-eye perspective so onlookers can see everything at a glance.

Indeed! Great ideas, I think :slight_smile: At least, I would like to see that, also.

/me mumbles something about that being just the kind of visual polish that impresses :wink:

@foxhavendesigns said: /me mumbles something about that being just the kind of visual polish that impresses ;-)

Heehee, I was thinking you meant something like wall textures etc.

Probably because I mentioned that… I get terribly distracted when I have a modeler open and see so many targets of opportunity :stuck_out_tongue:

But, no, I meant visual controls and feedback of the AI engine, specifically :stuck_out_tongue:

Perhaps even little thought-bubbles with what each agent is considering at the time… Color-coded for what percentage of the update loop is used by each bot…

Ok. Stopping now.

Really.

Back to the “screaming soul smoke”…

@mifth said: I tested the game. But it's difficult to say is the lib cool or not. I think we need to make better example with Bullet physics and walls. I have an idea for new testing game.

What do you think about like this:
http://i.imgur.com/se2v6ZT.png

Player - is a user which controls a robot
Hunter - looks a player to kill
Protecter - protects the place where he stands. If he sees the player on a distance -he shoot the player.

I can even try to make the demo without ai.

Hey that be awesome! I’ll help with the AI.
The end result could be somethinMaybe something like http://nerogame.org but in Java and JME based

1 Like
@mifth said: Well, i'm ready to make it only if @sevarac will help us with AI. :)

@mifth Just let me know what you need. Take a look at
https://github.com/QuietOne/JMEAI/blob/master/User%20Guide%20for%20MonkeyBrains.md for start.

@sevarac said: @mifth Just let me know what you need. Take a look at https://github.com/QuietOne/JMEAI/blob/master/User%20Guide%20for%20MonkeyBrains.md for start.

@sevarac This is great that you will help! We will do more compolex game. And we will test the AI. So my part is game and gameplay. Your part is AI.

I need access to this repository GitHub - QuietOne/MonkeyBrainsDemoGames: Demo games made using MonkeyBrains (JMEAI)
I’ll add there a new JME project.

@foxhavendesigns if you want - you could help in the demo development. :slight_smile:

Guys are you ok if we start 10 may? I have some busy days with my own game till 10 may.

1 Like

@mifth
@foxhavendesigns
@tihomir

Great guys, we’ll give you all the premisisonsyou need, and @tihomir will also be here to help you.
Nice UI to conroll the game/agents and ai settings would ge really great
Take a look at video at Neuro Evolving Robotic Operatives: Video

Its ok to start any time that suits you

1 Like
@sevarac said:

Great guys, we’ll give you all the premisisonsyou need, and @tihomir will also be here to help you.
Nice UI to conroll the game/agents and ai settings would ge really great
Take a look at video at Neuro Evolving Robotic Operatives: Video

Its ok to start any time that suits you

ok, cool. I saw these demos. We will make something simplier. We need something like Queke 3 arena bots.

2 Likes

@mifth I’m not sure what help I will be, but I want to play :wink:

If nothing else, I can always provide amusement =)

GUI …
And here I am itching to dig into @t0neg0d GUI…
… Those thought bubbles…

wanders off bumping into walls