for the past few months I’ve been working on my bachelors thesis, which is simply speaking an MMORPG world editor.
I’ve integrated many libraries including JME, Hibernate, jGraphs, jops and many others.
The editor is currently in a beta version, feturing he following main modes:
-scene composer, basically editing the scenes, where main scene currently uses about 200kmx200km heightmap, which is created from satellite data for Glacier National Park in Montana
scene can contain the following primitives:
>portals (links between scenes)
-particle system editor
is just a gui version for jops library, which I managed to to integrate with JME, based on old plugin for JME2
The AI architecture works in the following way:
Top level are finite state machines, where each tranistion is a script
Each state represents one logical behavior, which is implemented by a behavior tree. Now there’s a support for all the types of nodes, like sequence, parallel, etc
Then the acutal leafs of the tree again contain executable groovy scripts. Note that all scripts are provided a common base class at runtime to simplify some calls
There’s even a source code editor, with some limited capabilities. (RSyntaxTextArea)
There isn’t much to say, scripts are simple groovy snippets of code, which return a value depending on the script type.
There’s a support for predefined script types: Video, Audio, Chat, Conditon, Dialog, and the General type which handles all the remaining cases.
The editor utilities sql database to store item, npc and resource templates, which are used to instance individual entities.
The templates include names, icons, models and other fields. Of course there’s a possiblity to add script to each template, for example a script set to an item means the default action to execute when the item is “used” - drink a potion, equip something
The tricky part was to create a dynamic scheme, as each game might require different set of stats for it’s entities. There’s one special table, which is updated on the fly by editor, where columns represents all the user defined stats. So there’s also a stat editor, which allows you to define custom stats, provide a minimum and maximum values, and also the generated column name, etc.
There may be a slower version ( probably with a commentary too) uploaded later, for now, consider this video a trailer:
Also please note, that this has been all designed for online RPG worlds, aka MMMORPGs,
I’m currently finishing an implementation of a server and very basic client utlitising the world exported from this edtior.