[FINISHED] DOT Fuzzy Logic AI Engine Pre-Alpha (Open Source)

So quite a while ago, I did promise that I was going to release full source code to DOT. I plan to hold up this statement for future reference. As for now, I’m releasing an older version of DOT + an open source editor.

None of the architecture present in the version I’m releasing here is present in the version that my studio uses. (We’ve moved to a cluster based system, and integrated various LOD management solutions). If you have any questions, let me know. I didn’t have enough time to create proper documentation, so I’m sure tons of people won’t have the first clue how to navigate through this.

This version does not include a UE4 port; however, future open source releases will. Everything here is in native C++ and C.
The license is of course GNU General Public. Therefore, any modifications to this code base that you make (Including ports, integrations, etc) must be open source as well. However, the code may be treated as BSD in the event that the editor is not being distributed. (ie: Distributing a game to consumers)

A lot of the SDK functionality (In this version) is covered in AI_Sample.cpp.
I have also included 4 example XML files. Future versions of DOT output different results for the same input, so try to not become too keen on a particular set up.

While this is not required by my software license, if you plan to use DOT in your game, please let me know :slight_smile: I can provide extra support for you and your team.

This version has few optimizations, however still runs at a considerable 90k Entities/second. Future versions are well above the 500k Entities / second mark.

http://matrixcompsci.github.io/DOT/

Our original post: [WIP] Story Generation Templates - Community & Industry Discussion - Epic Developer Community Forums (Note this was when we were trying to fit everything under one engine. As mentioned below, DOT has split into 4 SDKs)

PROJECT GOING CLOSED SOURCE. SEE POST #36

As I should point out, few features are included here from the original scope of DOT. DOT split into 4 different engines (DIAG, LiNK, DOT, and ZETA), and currently DOT only encapsulates the Utility and Inference components. DIAG, which may (Do not quote me on this) be released, is a full natural language generation and processing library. It works only with DOT, but can use a few well known NLP and NLG libraries as its framework.

ZETA does group management, and provides an LOD system.

LiNK is for compression and networking of DOT’s data.

LiNK and ZETA won’t be released anytime soon

I for one, have been giving a good shot at this. If you want to build a Sims like game or very open ended RPG. This is what you are looking for

Expect the first DOT tech demo by January, and the first playable tech demo shortly after :slight_smile:

UE4 and GPL are not compatible, so nobody can use your code legally.
GPL infects the whole code, so users of this would be forced to release the game source code and the UE4 source to any customer. This is not possible for UE4 code since only people with a subscription have access.

Maybe you can add an exception, so you say “licensed with GPL with the following exception”.

But it would be easier to use LGPL with static linking exception. Then people can use it, also statically link it, and do not have to opensource their game and engine code, but still have to release changes to your code. This sounds exactly like what you want. E.g. wxwidgets uses something like that: Licence - wxWidgets or zeromq: ØMQ Licensing - zeromq

Edit: I just saw on the linked zeromq page they say MPL v2 (Mozilla Public License v2) is basically like LGPL with static linking exception, so you can use that then you can use a standard license without exceptions.

That’s quite useful to know… I need to keep part of my code GPL though, since I’m using some other GPL projects within it it for the editor. Yeah, I think I should add that

If it’s just your editor that relies on GPL code then you can license your editor under the GPL, and license the library people will need to link into UE4 under a more permissive license. I would strongly recommend licensing the library under a BSD, MIT, or Apache v2 license, as these are well known, mentioned in the UE4 FAQ as being compatible, and are likely the quickest to get approval for (in cases where people have to deal with a legal department before integrating third-party libraries into their products).

I fixed the license here. I’ll update it on github in a bit.

Fixed all the license stuff. There shouldn’t be an issue anymore :smiley:

If anyone is on an AMD bulldog era CPU, please debug DOT and let me know where exactly you’re crashing. This bug has been tormenting me for a month now :frowning:

But what is DOT? What does D O T stand for?

I’m not sure what we originally said it stood for, but now for most of my team, it’s
Destination
Oriented
Templates.

Just because, at least in the final version, how it will work is by specifying plot points that the ais need to hit. These plot points will be reached by the ais that are based off of the templates of main characters that the programmer has specified.

These (instances of) templates wish to a) stay alive b) acquire more of a particular attributes. So maybe the plot point is that the orcs need to take over a certain island. The orc templates will be compiled with that objective in mind, and it will be ingrained into their attributes and general goals. They may have an attribute for Islands that has a higher desire rate (A stronger gradient in the SDK). After they take over the island, the template changes since the goal has been met. They then move onto the next plot point as specified within the tree of various plot devices that the designer had specified.

I had a very nice discussion about this on reddit:
http://www.reddit.com/r/gamedev/comments/2mpfhc/recently_made_my_ai_engine_open_source_have_a_look/

Does that clear things up?

All that sounds awesome.
Sadly I have other stuff to finish before I have time to play with it :frowning:

Well thats good news for you :stuck_out_tongue:
We’ll be releasing the DOT Alpha sometime in January or February with an onslaught of new features. I can’t mention most of them here since I’m under NDA :frowning:
Sorry

As I’m mentioning in most places, if anyone is willing to A) Go under NDA and B) Actively contribute to DOT, then giving access to the newest version before its release can be arranged :smiley:

The UE4 plugin for DOT is almost ready. I’ll be releasing it shortly :smiley: (Its the plugin for the prealpha version. We don’t have it for anything besides that yet)

Since this was taking a bit longer than expected to get the DOT plugin out the door, I’m releasing a semi functioning version now. There are really only 3 things that need to be modified for it to function properly within games, and that is making its update loop Async, making more functions in AdvertisementInterface BlueprintsImplementable and porting the XML loading code.

Also since this is the Prealpha, PLEASE realize that the next version has a plethora of more features. A lot of the major story generation features that are being promised like Machine Learning based narratives and concept mapping for overarching conflicts won’t be released until Alpha at best (January - Febuary) and then stuff like NLP to allow designers to directly write their story as a novel won’t be available in the slightest until our Beta release in June (It will probably be fleshed out by next October).

So without further digressions, heres the link to download the plugin: https://github.com/MatrixCompSci/DOT/tree/master/UE4Plugin/DOTPlugin

Do you mean Bulldozer?

I have one of these CPUs however I am no programmer. What do you need me to do?

Also Kudos to making this open source :slight_smile: