REVE is an abstract representation for virtual environments. It is a representation because it enables the translation of abstract concepts that the human mind can grasp (such as the world and the object, which are fundamentally related to the design and operation of virtual environments), into specific data that a computer can process. It is abstract because it does not define concrete data types. Instead, it only defines abstract templates for the derivation of such concrete data types. In object-oriented terminology, it defines abstract base classes that can be used to produce concrete, instantiable, implementation-oriented classes through specialization. This enables a great degree of flexibility as, given just a few preconditions, the representation can be applied to several current approaches and benefit from a wide range of existing technologies.

In addition, the representation's approach – at a design level – of fundamental concepts such as the world and the object, is such that allows for heterogeneous modelling solutions, where each individual part serves a specific task while cooperating with all others in a transparent and standardized fashion. For instance, a virtual object can be modelled at a physical-representation level using a scenegraph-based solution, while an approach based on symbolic knowledge representation can be employed to model its semantic features. Both parts of the complete model have access to each other, making it possible to express physical features of the virtual object through its semantics, as well as modify those semantics by means of the virtual object's physically-based functionality and interactivity. The result is a multi-faceted, yet constantly consistent model of the same entity, capable of concurrently and transparently serving different computing needs.

An important part of the REVE representation specification is VERL, a simple, XML-based language for the definition of REVE-based virtual worlds. By means of a simple and readable syntax, VERL enables users to describe virtual worlds of various sizes and complexities, in an intuitive and straightforward fashion. VERL-based definitions are portable across implementations and suitable for both manual and IDE-based manipulation. VERL also supports an implementation-independent extension mechanism thanks to which virtual world definitions can refer to user-supplied implementations of various extendible aspects of the representation, such as functions, symbol arguments and actions.

A sample Java-based implementation of the REVE representation is available in the form of the jREVE platform. It consists of (a) an object-oriented API that reflects the complete set of concepts and mechanisms specified by the representation, and (b) a collection of components, helper classes, utilities and other software development elements aiming to aid in the production of complete, functional applications. The jREVE platform employs X3D for the physical representation of virtual objects and depends on the Xj3D toolkit to that end. In addition, it offers a variety of concrete, general-purpose symbol argument, function and action implementations that are applicable in a range of scenarios, in an effort to facilitate the process of virtual world definition.

The REVE representation is currently an ongoing research project with numerous active branches. To learn more about it, please visit the dedicated REVEnet website.

REVE Worlds

REVE Worlds is a sample partial implementation of a REVE-based intelligent virtual environment. It is based on the jREVE platform and, thus, uses X3D for the physical representation of virtual objects. It manages virtual worlds, which it initializes by processing VERL world definitions, as well as virtual bodies. It supports a variety of means for their control, all wrapped around AIP, a protocol for coupling virtual bodies with behaviour-generation and cognition components. Those include a simple CLI-based interface suitable for direct experimentation, and TCP/IP-based virtual body control oriented towards distributed setups and actual applications. In addition, it provides several facilities for real-time monitoring and manipulation of the virtual world.

A simplified version of REVE Worlds, the REVE World viewer, is also available. Its capabilities are restricted to presenting virtual worlds and processing VERL world definitions. As a result, it is far lighter than its sibling and can significantly speed-up and simplify the process of virtual world design.

REVE Worlds and the REVE World Viewer are evolving software products with a clear focus on overall quality, robustness and achievement of production-line standards. To learn more about them, please visit the dedicated REVEnet website.

REVE Agents

We have developed a number of agent applications for REVE-compliant virtual environments. Our aim is to investigate the REVE representation's potential to power intelligent virtual environment applications. In particular, we focus on evaluating the representation's effectiveness in addressing common needs agents in virtual environments have, such pathfind in real-time, interact with virtual objects as well as with each other, perceive the virtual world and build mental models of it, generate behaviour, exhibit deliberation, perform spatial reasoning, etc. On a more technical level, we also aim to test how well the representation lives up to large number of coexisting agents, as well as assess the degree of portability of agent definitions and implementations across different virtual environment applications.

The agents presented below are part of a larger research project aiming at the development of intelligent agent applications for REVE-compliant virtual environments in general and REVE Worlds in particular. To learn more about them, please visit the dedicated REVEnet website.

REVE Explorer

The REVE Explorer is a tool for the demonstration of, and experimentation with, the REVE representation's mechanisms for interaction between an agent's control module and a virtual body. Apart from that, it is also a (rather unintelligent) agent, capable of performing elementary pathfinding in a user-driven or random fashion.


A persistent agent, based on the REVE representation, that likes to spend his time playing games. A key notion behind its design and implementation is that information about its actions, thoughts and gradual perception of its surroundings (maybe even a little emotion) is presented to users in an illustrative, fun, engaging way.





The Simple API for REVE Agents (SARA) is a Java-based toolkit that can significantly simplify the development of agent applications for REVE-based virtual environments. It provides several base agent implementations, each with different features ranging from simple, general-purpose functions such as sensing, acting and accessing a symbolic knowledge base, to advanced spatial-mapping facilities, pathfinding and event-based behaviour control.

SARA is currently under active development and at a pre-release stage. More information about it as well as downloads and documentation will soon be available through the REVEnet website.


The mVITAL multi-agent system is an early attempt to use intelligent agent and multi-agent system technologies for designing and building intelligent virtual environments. It consists of a set of interoperating components, each fulfilling a specific role: the world component manages virtual world state and handles connections to and from other components; the agent component generates intelligent behaviour on a goal-driven basis; the viewer component visualizes the virtual world in 3D. Virtual worlds in mVITAL are modelled as graphs, where each node represents a location and each edge the possibility to physically move between two connections. To enrich the representation with spatial features, each node has a (x, z) coordinate pair that specifies its location on the X-Z plane.

Even though somewhat outdated at the moment, the mVITAL system has several notable features. First, it is distributed by design. Components communicate over TCP/IP, which is ideal for large numbers of connected agent and viewer components, as well as for deployment over large networks. Second, it supports the use of VAL for the definition of agent personalities. Definitions can be loaded, edited and saved through the agent component's graphical user interface, something that makes it possible to interfere with an agent's behaviour-generation mechanisms on-the-fly. Third, it decouples the virtual world model from its presentation to users. Viewer components are completely optional and, thus, the system can function in a completely unattended fashion, without any user intervention or visual, auditory, etc., feedback to users. When desired, for instance, to carry-out monitoring and administration tasks, viewer components can be connected in real-time, without interrupting the system's normal flow of operation.

The mVITAL system is currently being revisited, as we feel that it represents a set of promising ideas and design approaches, and should not be burdened by an outdated, obsolete implementation. One of the most interesting possibilities we are investigating is using mVITAL agents with the REVE Worlds system, taking advantage of the flexibility behind the VAL language in order to specify agent personalities according to REVE's view of the concept of the virtual world. For the time being, information about the mVITAL system can be found in relevant publications.



The Virtual Agent Language (VAL) is a simple specification language for the definition of various aspects of a virtual agent's personality, such as its abilities, goals, initial knowledge, and reasoning rules. It combines a block-based syntax just like C/C++, Java and other popular programming languages, with a Prolog-like notation for symbolic data. As a result, it is compact, precise, readable and easy to use. In addition, it can address multiple domains and be employed in a variety of applications, as it is completely decoupled from implementation details, only focusing on the high-level, conceptual aspects of a virtual agent's personality definition.

We have already used VAL in a number of efforts, most notable of which is the integration with the mVITAL system's agent client. Thanks to it, we are able to modify an agent's personality at runtime without having to interrupt the agent's normal flow of operation. In addition, we have used VAL to program mVITAL agents so as to be able to perceive, reason about and act upon REVE-compliant worlds as part of an effort to integrate mVITAL agent clients with the REVE Worlds system.

We are currently revisiting VAL, investigating its potential to be used as an effective modelling tool in modern IVEs. For the time being, information about it can be found in relevant publications.

Perception and action

The REVE representation and the REVE Worlds system have been used in a number of research efforts and applications focusing on virtual agent perception and action. In all cases, the greatest benefits came from the representation's specific, yet extendible, model of agent-world interaction, and the fact that it addresses the virtual world and its contents at a conceptual level, something that leads to design transparency, encryption of implementation details and an increased potential for decoupled system design and development.

Autonomy in Virtual Agents: Integrating Perception and Action on Functionally Grounded Representations

An approach towards agent autonomy based on the interactivist model of representation combined with the concept of semiotic processes. The approach evolves around a theoretical framework that focuses on the fundamental properties and characteristics of an autonomous biological agent and a partial implementation in the form of an intelligent agent architecture. The approach has been presented in the SETN '08 conference.

The approach has been evaluated through a case study involving virtual agents gradually learning the outcome of their actions. Initially, the agents are unaware of the function of their abilities for action. Consequently, they can only observe, in an indirect fashion, the effects of actions they perform . In addition, they are capable of building action-effect signs and transform them into beliefs. Assessment of results has indicated that, as they gradually augment and refine their internal representation of their own abilities, the agents are eventually capable of predicting the outcome of their actions with enough accuracy to successfully plan their motion towards dynamically-defined goals.

Given its conceptual, symbolic-based approach to the concept of the virtual world, the REVE representation has provided the grounds upon which design-level issues were successfully addressed. In addition, enriched with per-frame behaviour and collision-detection features, the REVE Worlds system provided the required virtual world model and goal-assignment capabilities for the case study. The model for learning and action itself was implemented as part of a modified version of the REVE Explorer application.

Modeling Spatiotemporal Uncertainty in Dynamic Virtual Environments

A model for representing spatiotemporal uncertainty as an enhancement to current virtual agent control architectures aiming to increase agent autonomy and effectiveness in dynamic environments. The model has been designed as part of an abstract virtual agent control architecture, where virtual sensors seem to be a suitable choice of component offering functionality specific to spatiotemporal uncertainty and prediction since they directly relate to perception. It has been presented in the IVA '07 conference.

Thanks to the proposed model for spatiotemporal predictions about moving entities, virtual sensors are not only capable of providing information about the environment that is represented by sensory data that bas been explicitly sensed, but derived knowledge as well. Such knowledge may constitute an estimate of a moving, and potentially invisible, entity's location at a given point in time (either at the time of sensing or afterwards), or the time periods during which a moving entity is expected to occupy a given area in space.

A test case has been implemented using a modified version of the REVE Worlds system, where a specialized sensor class encapsulates functionality required to apply the prediction model on sensory data and derive the required estimates. Thanks to its approach to virtual world semantics at a symbolic, conceptual level, as well as its inherent extendibility and support for decoupled system design and operation, the REVE representation provided an ideal basis for the production of a concrete version of the model.




WebPL alpha

WebPL is a tool for online experimentation with the Prolog language. It started as an experiment with web-based programming but evolved into something fairly functional and with a lot of potential. It is meant to be fun and easy to use. It allows you to write Prolog code, issue queries and get results without the need to install anything first. It offers facilities to make your experience more intuitive and comfortable: a compact, self-arranging user interface accommodating both a code editor and a console for queries and results; automatic consulting; the ability to reset the Prolog engine; and more. Also, thanks to its clean, self-arranging user interface, it is ideal for mobile devices.

WebPL is currently in an alpha release state. It is written mainly in Java, Prolog and JavaScript and is backed by SWI Prolog.

Other projects


Various projects that are in one way or the other related to my work.


The one piece of software without which I would not have managed to complete my PhD (among other things). FileSynx is a very simple filesystem-synchronization utility I wrote that can only do one thing: update a target filesystem so that it is identical to a source one - which is exactly what I need when I have to synchronize between my desktop at home, my laptop, my computer at the lab, my flash-disk, my backup server, etc. Thanks to FileSynx, I was able to work on up-to-date snapshots of a filesystem of about 15 GBs and several hundreds of thousands of files, just by spending five minutes or so when leaving one work spot and before starting to work at another. Why I wrote it instead of using one of the many free or commercial products available? Because I needed it to be able to do just one specific thing and nothing more, because I wanted it to be as simple as possible, because of the extra control you have over your own source code, because it seemed interesting, and, to be honest, because I could.


PageBits is a very simple PHP script that builds HTML pages bit-by-bit, by dumping the contents of specific files to the HTTP response according to configuration. It only uses local files so it can be deployed very easily. Its output can be parameterized, which can be used to link from page to page and, eventually, come up with a complete website structure.


A collection of personal projects and resources related to X3D and the earlier VRML97. Read more...