Jump to content

Recommended Posts

Posted (edited)

I decided to share some knowledge regarding AI system on L2J, since someone asked me.

 

Hello Tryskell , I would like to learn about AIs? Are they important in L2J? Can you give me some info about them(about what exactly they are) because I see them a lot And i can't understand a lot. And then if you could tell me some .java files to read (from eclipse , l2 acis) to understand them better how they work? (with the proper row if possible)
thank you a lot, i wait for your answer !

 

 

Hello, you got different types of AIs and aspects, they all are melted together to form something called "AI".

 

You have to understand AI works differently on L2OFF compared to L2J. On L2OFF, each NPC got its particular script, while on L2J all is mutualized, then few scripts bypass basic behavior.

 

AI TYPES

 

To begin with, you got AI types. L2 got few : DEFAULT, MAGE, HEALER, ARCHER. Default launch skills under a 10 or 15% chance, and melee attack. Mage only launch skills, 2 types (far or near skills) depending about player position. They attack when oom. Healer only heal and flee under attack. Archers attack and got a % to flee when a player is near them.

 

GENERIC AI BEHAVIOR

 

On L2J, as stated higher, the behavior of any mob is mutualized under a unique AI script system. This system is localized into gameserver.ai. Then few scripts, located under data/scripts (notably the ai folder) bypass the regular behavior to handle special cases.

 

Generic AI system is kinda simple : an AI Object is linked to a L2Character, via the getAI() method (which creates this object if missing). The base of all AI is named AbstractAI, the behavior is shared amongst all AI types, or eventually overidden if it doesn't fit. Different AIs are linked to different types of instance : for example, L2PcInstance would be linked to a L2PlayerAI (which inherits behavior from L2PlayableAI, L2CharacterAI and AbstractAI).

 

The generic system works under an Intention system (Desire on L2OFF), you can find all (documented) cases on CtrlIntention.java. L2 is supposed to store the current and future intentions. Another layer used by the AI system in order to send the correct intention is CtrlEvent.java ; it lists all possible scenarii. AbstractAI got a follow task, L2AttackableAI got a general task (which allows the mob to interact every second with his environnement depending about the intention and event), while L2SummonAI got a avoid task (used when you hit a summon, he flees).

 

SCRIPTED AI BEHAVIOR

 

Another layer of AI system is called by scripts. Scripts handle specific scenarii, which would requiere to create a specific AI for a specific npcId. This system is heavily supported by quest system, notably Quest.java. QuestEventType lists all possible events. Basically said, listeners are written on specific point of code (aggro, cast a spell, move, etc). Once a listener is triggered, the content of script is used, which allow to bypass generic AI behavior. An important script is named L2AttackableAIScript.java. Those scripts are stored under data/scripts folder.

Edited by Tryskell
  • Upvote 2
Posted

Because it is important, i'll find time to sit in the evening to i learn what you say, reading. It is very important ...

Thank you for this share mate!

I want to know more about java, and it helps to i know a part of what i want..

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock