Recent Changes

October 2009
Updated publication page and added Comp-361 course notes.


Although the exact topic of my thesis has yet to be determined, I am interested in technologies relating to the distribution and replication of large numbers of objects in a dynamic environment. In other words, I am working on back-end technologies in Massively Multiplayer Online Game (MMOG) environments.

Most of my work is currently centered around the Mammoth project. I also have some interest in how modeling langages can be used to simplify certain game development tasks. I also have some interest in teaching tools for the undergraduate population.

Current Projects


Mammoth is a massively multiplayer game research framework. It's goal is to provide an environment for experimentation in areas such as distributed systems, fault tolerance, databases, modeling and simulation, artificial intelligence and aspect-orientation. The Mammoth Project was launched in the summer of 2005 as a collaborative project among several McGill professors and a number of graduate students.

I am currently working on Mammoth's backend, trying to distribute the typical MMO server workload in a reliable and scalable fashion.

Mammoth Website :


Minueto is a multi-platform 2D Graphic API which is easy to learn and use. It allows you to develop 2D games (such as strategy games, platformers, cards games), without requiring game-programming knowledge (such as double-buffering or image blitting) . With Minueto, you can focus on the game logic. Minueto does not solve all programming concerns, but it will make that first game programming project a lot easier.

Minueto was create as part of my master's thesis, in 2004. The idea was to create a game development environment designed for undergraduate students. Thus Minueto sacrifices some flexibility and extensibility to achieve a simple interface. Thus far, Minueto has been used by the students every year since 2004 in the system development course. The results have been very impressive.

Minueto Website :

Modeling Character AI

The complexity of modern video games has greatly increase during the past decade. As such, the development of complex NPC (non-player character) AI (artificial intelligence) for these modern games is a very difficult task. This task could be greatly simplified if the AI could first be modelled using an appropriate formalism such as StateCharts. Once the behavior of the AI has been modelled, code can then be generated and integrated in the game engine.

Most of my work in this field is related to the code generation tool. The tool I developped will take a Atom3 StateChart and generate the appropriate Java, C++ or Python code. This work has also been extended to support C#.

Course Projects

These are some of the course projects I've completed during my Master's degree. More information on these projects are available on request.

Fault Tolerance in Railway Signalling System

An interlocking system is defined as “an arrangement of signals and signal appliances so interconnected that their movements must succeed each other in proper sequence and for which interlocking rules are in effect”. For railways, interlocking systems control the switches that transfers trains from one railway track to another. The coordination of these switches is considered a safety critical task since failure to properly coordinate the change in switch positions can result into a train crash and/or loss of life. Nowadays, all railway-signaling systems are required to meet strict safety guidelines. To meet these requirements, engineers include a number of fault tolerance mechanisms, both in hardware and in software.

This paper takes a close look at the safety features used in the Elektra railway interlocking system. Elektra uses a combination of specification diversity and active replication to achieve its impressive safety record. It also uses a Fault Tolerant communication layer named Votrics, which will also be looked at in detail. Finally, to better understand the differences between Elektra and other popular railway signaling systems, we will take a quick look at the Shinkansen and Sacem electronic train control system. Files

Image processing of game for non-photorealistic rendering

(In collaboration with Olivier Giroux)

The objective of this project is to explore programmable pixel shading technology to arbitrarily apply non-photorealistic rendering to modern games and depth-buffered video streams. Our project will also determine what kind of overhead these non-photorealistic shaders add to the display process. Finally, we will try to implement a toon pixel shader and apply it to at least one video game or stream.

Source and Kuwahara screens from Call of Duty

Profiling JVM and their Class Libs on Linux

Applications written using the Java language rely on one important component for their execution, a Java Virtual Machine (JVM). Since Java compiles into an intermediary representation named bytecode, the JVM is needed to interpret this bytecode and run it on the target platform. While this allows program written in Java to run on any platform for which a JVM is available, it results in tremendous impact in performance if compared to programs compiled to machine code.

Many of these JVM are currently available. Each of these Virtual Machines has been developed by different groups and uses proprietary class libraries (collection of libraries needed to run Java program and simplify the development process). This results in different performances under various conditions. In this project, we try to quantify the performance of each VM with different library intensive benchmark. By profiling the interaction between the operating system and the JVMs, we can get a better understanding of the inner workings of the class libraries.