Jadex AgentKeeper – Dungeon Keeper alike Game – [Update: Code is now Public]

Hey Guys,

thanks to you, I can make cool Games. Want to show you what i reached until now. :slight_smile:
Made it by my own with some Open Assets (mostly from OpenDungeons).

EDIT: now the game is fully Open Source! And we Made the SVN connected with our Jenkins Server. So every Night you got a new Playable-Nightly-Builded Version of the Game!!
I case you forget where the Project is: here: ^^ https://code.google.com/p/jadex-agentkeeper/ click on the ZIP and enjoy it after extracting ^^

Right now you can see a new Dungeonheart and Portal made by someone from Hamburg too, I just added some cool Fog-Effect.
Ah and the chickens, (you can find them in the Hatchery) but they don´t have animations jet…have to do that…

PS: We searching for Contributors!


  • Flipflop
    EDIT: *new Light Setup Video:

[video]http://www.youtube.com/watch?v=beY3NGaYG44[/video]

In this Video you can see small Demonstration about some Creature-Behavior and User-Input

Just a short Demonstration. Game is realized in Java with your fantastic Game Engine. The AI is made with BDI SoftwareAgents from my University in Hamburg. activecomponents.org

[video]http://www.youtube.com/watch?v=jCESnFuyTn4[/video]

10 Likes

Hey, thats looking great! Seems theres a lot of functionality going and working :slight_smile: Good job! If you don’t mind we’ll feature some of this footage in our next video.

Of course I dont mind, thats an honer for me. But I think there will be even better Gameplay Videos in the Future :slight_smile:

https://github.com/lordd/Mudwar
GPLv2 / CC-BY

if you like to pull some code. I dont know how far you really are and what the principles of your game design are. We were focused on making it a multiplayer game which is a bit frustrating because you have to think about a lot of things before you get something playable. On the other hand, the main reason why there are currently no commits is, that I am working on my PhD thesis and the other commiter told me he is too buzy doing his cs courses.

For me this is a bit frustrating, because I finally understood how I want the network code to look like and how the UI should work in order to be easy and fast to use.

EDIT: I have seen like 5 projects trying to reimplement DK in some way in the last year; most of then were run by a single person and most of them got a working demo of some quality. I guess its about time that someone succeeds;)

Beautiful. Absolutely frigging great. You better go the whole way or we’ll bring the pitch forks and hunt you down. Lots of people want to play DK.

@Kardinal What is your game about besides Network? The Platform I use also supports lots of Network features. Maybe I can add Multiplayer…someday, that is really far away atm :slight_smile:

@loopies ohoh…Ok, dont want to be hunted down…^^ so I better hurry up…coding

This Jadex library looks interesting.
How did it work for you, as opposed to coding the behaviour manually?
Manually, I’d probably code up a set of tasks (or goals), plus some code like “selectTask (); if (! atTaskLocation) { moveTowardsTaskLocation (tpf); } else { accumulateTimeWorkingOnTask(tpf); }” Looks simple, but I bet there’s a whole horde of devils in the details, and I’d like to know how Jadex helps with these.

@toolforger said: This Jadex library looks interesting. How did it work for you, as opposed to coding the behaviour manually? Manually, I'd probably code up a set of tasks (or goals), plus some code like "selectTask (); if (! atTaskLocation) { moveTowardsTaskLocation (tpf); } else { accumulateTimeWorkingOnTask(tpf); }" Looks simple, but I bet there's a whole horde of devils in the details, and I'd like to know how Jadex helps with these.
Jadex is a hole Platform. For active components. So also Agents. I implemented the Agents as BDI Agents.

Agents can have different GOALS. For every Goal you can have one or many PLANS where we implement behavior.
There are differnt goal-types.
List of Goal Types
The easiest Goaltype ist just a PerformGoal so the Agent just has to do some stuff. AchieveGoals are also easy to understand. The Agent hast do reach some Status. A MaintainGoal means the Agent has to keep an status, like health or if its a robot battery status and so on.

In the case of AgentKeeper i can show you that as an example on the Creatures (there are less complicated then the Workers ^^):

The creatures have a PerformIdleGOAL at startup.
For this Goal two Plans exist: IdlePlan and PatrolPlan. Because I set [java]randomselection=true[/java] for the GOAL one of the Plans is always random selected. If the IdlePlan is selected, its easy: In the Plan the Agent primary Wait for a random selected amout of time an sets a random status. This is implemted inside the Plan.

If the PatrolPlan is selected, the Plan fist select a Random Point at the Map and then CREATE a new AchieveGoal -> AchieveMoveToSector For this GOAL only one Plan exists: MoveToGridSectorPlan. Here is the walking behavior implemented. Like take use of my A* Algorithm and the movement itself.

Lots of bla bla I hope I could help you understand… ^^

1 Like

Btw: Funny fact: I Implemented the 3d Support for Jadex simulations as Topic for my BachelorThesis in 2011. Pretty cool. You can find it if you want, but its written in German ^^

I have no problems with reading German :slight_smile:

However, my question wasn’t so much what Jadex does; rather, it is:
I could whip up my own AI code; what would I be missing if I did?

Dont get me wrong: Using Jadex doesent mean you dont have to implement the AI by yourself anymore. :slight_smile:

Using our Open Source Jadex is just extremly time saving. You dont need to implement everything from the scratch. I dont even see one reason why you should (If you want to use an Agent-Orientated AI System).

Jadex brings the BDI Agent Model, which seperates the AI-Logic in Goals, Beliefs (Agent state, like Position and so on) and Plans (concrete Actions). The good think is there is an Practical Reasoning Interpreter. That means you can select reasoning Strategies if you have several concurcency Goals for means end reasoning and Goal deliberation.

You can totally Focus on what is important: The Behavior itself.

@PhilipWilluweit said: @Kardinal What is your game about besides Network? The Platform I use also supports lots of Network features. Maybe I can add Multiplayer.....someday, that is really far away atm :)
Honestly, it is not about network, but about a state transition system, as in an abstract state machine. The funny thing about this is, that you can write all your network messages to disk and get a replay mechanism for free. And as far as I remember I stopped working on the game after I got it right. There was also some discussion on game mechanics related issues, mostly because the old DK titles do not scale well in multiplayer; we had different opinions on wheter or not to use mana. There is an initial approach to the UI, but I guess the next thing I'm going to do is to redo the UI. There also was a map editor, but afaik it is currently defunct.

@Jadex: How long did it take you to get into the project? (I already have a very clear idea of how to do the AI, so I dont know if it would help to use a library.) How flexible is it? And how much xml do you have to use? (Honestly, I consider xml as a very bad choice for a lot of things. It is a good way to write configs though)

1 Like
@kardinal said: Honestly, it is not about network, but about a state transition system, as in an abstract state machine. The funny thing about this is, that you can write all your network messages to disk and get a replay mechanism for free. And as far as I remember I stopped working on the game after I got it right. There was also some discussion on game mechanics related issues, mostly because the old DK titles do not scale well in multiplayer; we had different opinions on wheter or not to use mana. There is an initial approach to the UI, but I guess the next thing I'm going to do is to redo the UI. There also was a map editor, but afaik it is currently defunct.

@Jadex: How long did it take you to get into the project? (I already have a very clear idea of how to do the AI, so I dont know if it would help to use a library.) How flexible is it? And how much xml do you have to use? (Honestly, I consider xml as a very bad choice for a lot of things. It is a good way to write configs though)

I Work with the Jadex Core Developer in the same Office. As Job to earn some Money besides my Master-Studium. Luckely they give me the possibility to Work on what i Like Most: to develop a Game. The Goal is then also to show a very cool Example of using Agents.

About XML: We just finished BDIv3 Agents. There is no XML for the Agents anymore. With bytecode engineering we have a unique-annotation based Solution. Finished this week and my Agents you can see in this Video are already implemented as BDIv3. I mention “finished this week” because there is no Documentation yet, we are Working on a Tutorial and the Documentation. So maybe in 1-3 Weeks there is full Documentation by that. Until that you have to dig into the examples.

Awesome! I loved DK. OpenSource is a nice thing, You should definitely do that.

@PhilipWilluweit said: I Work with the Jadex Core Developer in the same Office. As Job to earn some Money besides my Master-Studium. Luckely they give me the possibility to Work on what i Like Most: to develop a Game. The Goal is then also to show a very cool Example of using Agents.

About XML: We just finished BDIv3 Agents. There is no XML for the Agents anymore. With bytecode engineering we have a unique-annotation based Solution. Finished this week and my Agents you can see in this Video are already implemented as BDIv3. I mention “finished this week” because there is no Documentation yet, we are Working on a Tutorial and the Documentation. So maybe in 1-3 Weeks there is full Documentation by that. Until that you have to dig into the examples.


Mostly as I expected;)
I guess I will give it a try as soon as I come to a point where we have to implement some sort of AI. Fortunately atm we can still implement a lot of interesting other features:)

One note: Please don’t understand my queries as trying to punch holes into Jadex.
I’m just trying to find out what use cases Jadex is built for. The Jadex docs sort-of explain that, but they use terminology I’m not too familiar with (yet) and assume that their audiences already knows the use cases and issues (which I don’t).

@PhilipWilluweit said: Dont get me wrong: Using Jadex doesent mean you dont have to implement the AI by yourself anymore. :)

Heh. Actually, I insist on coding the AI rules :slight_smile:

Using our Open Source Jadex is just extremly time saving. You dont need to implement everything from the scratch. I dont even see one reason why you should (If you want to use an Agent-Orientated AI System).

What’s that “everything” that I don’t need to implement myself?

Jadex brings the BDI Agent Model, which seperates the AI-Logic in Goals, Beliefs (Agent state, like Position and so on) and Plans (concrete Actions).

I could do that myself in a minute. Just place the three aspects into different member variables. Or interfaces, if that works better.
Of course, that’s a trivial implementation of that model, and probably misses a whole lot of points. But what are these points? (A link would be fine, I don’t expect you to write a whitepaper here :slight_smile: )

The good think is there is an Practical Reasoning Interpreter. That means you can select reasoning Strategies if you have several concurcency Goals for means end reasoning and Goal deliberation.

Can you elaborate? (Or provide a link?)

Did you mean “concurrent” or “competing” goals?

1 Like
@toolforger said:

Did you mean “concurrent” or “competing” goals?


You can have both the same time: Concurrent and Competing Goals.

Jadex gives you great Support to implement intelligent Behavior. You dont need to implement the hole Systems that it makes Work. I would recommend you to just try it one or two days.

If you make everything ourself you will spend days on a good system that supports good Goal Deliberation. (Which Goal is when to choose, which one supress an other one, what if there are two or more Goals the same Time activated, which one to choose…)

You see my result there in the Video. I made that up myself in just two Month until now. If Iwill make everything myself it would take 8-12 Month I think.

I also juse Jadex Enviroment Support for my World Model. There you can have you World Model in 2d or 3d Spaces. In continius Worlds, Gridworlds and so on with or without torus Logic if you want (if an object is at the border, for example left you spawn at right). And great usefull stuff like clock or roundbased turns, or stuff like Delta Time Executors.

Features:
-Declarative specification of the environment as application space
-Model definition consisting mainly of space objects, tasks and environment processes in a 2d or 3d grid or continuous world
-Agent-environment interaction via customizable percepts and actions
-2d and 3d visualization of the environment, its objects and agents, including possibilities for animation etc.
-Customizable space execution with built-in support for continuous and round-based execution semantics
-Highly extensible with a lot of ready-to-use components for frequent use cases

Thanks, I’ll give it a try.
I’ll give reports as I progress, and post questions here as I hit them.

I Played a little bit with the Light Effects, made the Light Flat and set the Ambient Color 2x Higher for the Ground-Plates.

Now it really looks more like in a Dungeon because everything else besides the Area are is Darker.

Please give me Feedback if it looks better or not :slight_smile:

2 Likes

Yeah, that looks good.