Steering Behaviours - Release

jMESoC has finished and after a lot of time coding the “Steer AI” is ready to be used. You can combine 22 different behaviours, set up how the forces will interact in the space (Including the possibility of creating 2D behaviours) and prioritize components. Furthermore, you can create your own behaviours as it’s explained in the documentation.

[video]https://www.youtube.com/watch?v=yyzTntsGV00[/video]

All the info about the project, Including the demos :smiley: !!, can be found here: jmesteer.bdevel.org

It would be awesome that you start to test all the features so you can provide me valuable feedback. If you find that the code can be improved in any way I will be glad to make the needed changes. If you find any bug or issue, I will be glad to fix/solve it.

The summer of code has finished but I will start making a game which is strongly based in steer behaviours. You will be able to see how powerful steer behaviours can be. Soon I start with the studies again but I think that the game can be ready in one month, I will keep you updated with more devblogs. Furthermore, developing that game will allow me to find new bugs/issues and solve them.

Cheers,
Jesús

12 Likes

In short note, I like it. I haven’t seen everything, but I can say this now: you didn’t have to put names of authors for the methods that you have overridden.

I have few questions:

  1. Was there need for these exception extensions?
  2. If needed, what do you think about separate package for these exceptions? I don’t have experience with this kind of exception programming, so I am asking to explain to me, why did you use structure like this.
  3. Was the class AbstractSteeringBehaviour useful or not?
  4. Is there possibility to merge AbstractSteeringBehaviour and AbstractStrengthSteeringBehaviour?

I’ll definitely continue with improving the MonkeyBrains, and when this is merged, I have new ideas how to make steering behaviours even more easier to use. If you want, you have my email. :slight_smile:

1 Like
@Tihomir said: 1. Was there need for these exception extensions?

From the documentation: “To ensure that the behaviour will work as you had planned it to work It’s recommended to create your own IllegalArgumentException class. To do this, extend from com.jme3.ai.agents.behaviours.IllegalBehaviour. Furthermore, It will help users to recognise better which is the origin of any problem.”

I wanted to ensure that everything works at it should, per example If you gives distanceToChangeFocus a negative value in the LeaderFollowing behaviour, this will produce strange things to happen and the user will not be able to see what’s wrong. However, If you include a run-time exception, that will tell the user that the parameters that has used for the behavior are illogical and he will fix it properly.

Furthermore, If the user creates a behavior with a null agent (example) instead of get a NullPointerException in the line 123912 he will receive a exception that he forgot to add the proper agent to the behavior that is more informative and appropriate.

@Tihomir said: 2. If needed, what do you think about separate package for these exceptions? I don’t have experience with this kind of exception programming, so I am asking to explain to me, why did you use structure like this.
I think that there is no need for that. IllegalBehaviour can only be instanced from extended classes: Nested extended exceptions that are only needed for a specific behavior. There is no need to use these exceptions in other classes.
@Tihomir said: 3. Was the class AbstractSteeringBehaviour useful or not?
Ofcourse, per example SlowBehaviour can extend from AbstractSteeringBehaviour because that behaviour does not need to generate any steer force. (I have found this recently and still does not appear in the release version 3.0.1)
@Tihomir said: 4. Is there possibility to merge AbstractSteeringBehaviour and AbstractStrengthSteeringBehaviour?
Of-course, you can do that. As is explained in the documentation: "CompoundSteeringBehaviour: Contains and merges several AbstractSteeringBehaviour instances". That means that can contain a AbstractSteeringBehaviour or any extended class.

I think it’s very easy to use but maybe it’s only because I’m the developer :facepalm: , Maybe someone can test it and give us more feedback.

Thank you for the feedback !

1 Like

Hi, great work, since the 3d evasion video I’m following this. (as I make a spacegame that kinda fits ^^)

Is there some sourcecode repository link where I can pull it down from or is the source viewer url already a repository?

1 Like

Congratulation great work

1 Like
@nehon said: Congratulation great work
Thanks :)
@Empire Phoenix said: Hi, great work, since the 3d evasion video I'm following this. (as I make a spacegame that kinda fits ^^)

Is there some sourcecode repository link where I can pull it down from or is the source viewer url already a repository?


You can get it from the developing and developing_1 branches in github from these repositories:
https://github.com/QuietOne/JMEAI/tree/developing
https://github.com/QuietOne/MonkeyBrainsDemoGames/tree/developing_1/MonkeyBrainsDemo_SteeringBehaviors (Demos)

Or if you prefer you can directly download both of these repositories here (downloads->Other Versions in the website):
http://jmesteer.bdevel.org/downloads/JMEAI-Jul13-2014_SteerBehaviours3-0-1.zip
http://jmesteer.bdevel.org/downloads/MonkeyBrainsDemo-Jul13-2014_SteeringBehaviors-3-0-1.zip (DEMOS)

1 Like

Wowza Wow!

This looks like some good stuff here.

That Queen’s English is gonna kill me though XD. Behaviour is going to be a tough one to get use to.

1 Like

this is definitely going to prove useful!

thanks for your work :slight_smile:

1 Like

congrats on finishing it, looking very good!!

1 Like

Well done and good job.
This will come in very handy for future projects.

1 Like

Thanks everyone for the feedback. I’m glad you liked it =D

It’s wonderful. Thank you for your hard work @jesusmb. :slight_smile:

1 Like