samedi 27 août 2011

Sharing research code

I started to set my research code public. This will allow the interested people to understand how I progress on the prototype implementation and how it relates to the ideas exposed in this blog.

The code (under the GNU GPL v3 license) can be found on: http://code.google.com/p/dramaticgames/

Prototype screenshot

The current prototype is extremely simple and primitive; it’s just a text based key/door puzzles JIT synthesizer. You can just click on buttons to do three possible actions: move to room, pickup keys and open doors. The implicit goal is to visit each room of the house. At each program execution, the doors will be locked differently. The keys’ locations also change at each run. The goal of this prototype was to grasp the first Quantum Physics inspired paradigm to create a JIT synthesizer for the game “opposition”.  I also played a bit with rules (in DramaManager) to increase the interest of the generated puzzles.

This prototype is implemented in Lua and use wxLua as a GUI. If you want to try the prototype, you will have to first install wxLua.  Then launch MainDev.lua from wxlua.exe.  To have it running, you will also have to change the gRootPath in MainDev.lua

Unfortunately, most of the sources are in a flat directory structure. This is done to be able to later use the code on Android devices with, for instance, the Corona SDK.  Actualy, Android constraints directories structure (dixit Corona documentation).  However, it’s possible to see the sources in a directory tree by using the .projet file with the Eclipse IDE.  I recommend Subversive as a way to get the project in Eclipse because other SVN integrations break the virtual folders. There are also plugins for Eclipse to get Lua support. Install Eclispe and the plugins then do an "File->Import->SVN->Project from SVN". You can also use TortoiseSVN to just checkout the sources outside of Eclipse.

In the docs directory, there is a yEd file named Classes.graphml that describes the interesting classes of the system.  The prototype being currently evolving toward most advanced concepts, some “Mind” related classes already exist but are not yet used.

Here is a list of the interesting packages of the project:


  • DevViews implement the wxLua views
  • Reality implements the base classes that use the Quantum Physics metaphor
  • Matter implements classes derived from the ones present in the Reality package to specialize them as physical objects
  • Spirit implements classes derived from the ones present in the Reality package to specialize them as spiritual objects such as Mind…
  • Drama implements the rules to bias the entity collapsing to get a more interesting experience. This is mostly about pace management.
  • Test implements the unit tests

Don’t hesitate to comment this post to ask questions and discuss about ideas.

Aucun commentaire:

Enregistrer un commentaire