Actually, our group (MediaLab and GEMS) are working on two projects: Dominoes, specifically for allowing software relationship exploration and ProvGBalancing, for allowing automatic game balancing using data provenance.

Under Development


Dominoes is a tool that can support automated exploration of relationships amongst project elements, where users have the flexibility to explore on the fly the numerous types of project relationships. Dominoes organizes data extracted from software repositories into multiple matrices that can be treated as domino pieces. It allows connecting such pieces based on a set of matrix operations to derive additional domino pieces. These derived domino pieces represent semantics on project entity relationships (e.g., number of commits in which two methods co-occurred) and can be used for further explorations. This matrix representation and operations allow for fast and efficient processing of a large volume of data by using a highly parallel architecture, such as GPUs.

Dominoes is hospeded at GitHub, where both source code and instructions on how to load it through Java Web Start can be found. Besides that, a video of the tool in action is available.



  • J. R. da Silva, E. Clua, L. Murta, and A. Sarma. Niche vs. breadth: Calculating exper- tise over time through a fine-grained analysis. In Software Analysis, Evolution and Reengi- neering (SANER), 2015 IEEE 22nd International Conference on, pages 409–418, Mar. 2015.
  • J. R. da Silva, E. Clua, L. Murta, and A. Sarma. Multi-Perspective Exploratory Analysis of Software Development Data. International Journal of Software Engineering and Knowledge Engineering, 25(01):51–68, 2015 .
  • J. R. da Silva Junior, E. Clua, L. Murta, and A. Sarma. Exploratory Data Analysis of Software Repositories via GPU Processing. 26th SEKE, 2014.




Fluid Simulation

Fluid simulation using the SPH (Smoothed Particle Hydrodynamics) method for my thesis master degree. For this project, I archived two way coupling between fluids and rigid bodies using a heterogeneous ambiente of CPU and GPU (CUDA) at the same time. The main challenge of this project was distribute tasks among CPU and GPU and each of these processors have its own architecture. Also, in order to minimize the data communication between GPU and CPU, which tends to reduce the overall speed, a new data structure was created.Interaction between fluid and rigid body is done by covering the 3D model surface with a collection of spheres using a technique called Depth Peeling.


GPU Wars

Nowadays, multithread architectures are pointed as a trend for both PCs (multi-core CPUs and GPUs) and game consoles (as Microsoft Xbox 360 and Sony Playstation 3). Another fact motivating recent trends is that the current GPUs (Graphics Processing Units) have evolved into extremely powerful and flexible processors, allowing its usage for processing different data. This advantage can be used in game development to optimize the game loop. Several works published in GPU Computing literature deals only with some steps of the game loop, requesting CPU work to process most of the game logic. This game differs from the traditional approach, by presenting an architecture designed to process practically the entire game loop inside the GPU.


  • M. Joselli, J. R. Silva, E. Clua, and E. Soluri. MobileWars: A Mobile GPGPU Game. Entertainment Computing – ICEC 2013, 8215:75–86, 2013.
  • M. Joselli, J. Ricardo da Silva, M. Zamith, E. Clua, M. Pelegrino, and E. Mendonca. Techniques for designing GPGPU games. In 2012 IEEE International Games Innovation Conference, pages 1–5. IEEE, Sept. 2012.
  • E. W. G. Joselli, Mark ; SOLURI, E. ; Marcelo Zamith ; SILVA JUNIOR, J. R. ; CLUA. GpuWars: Design and Implementation of a GPGPU Game. In GPU Computing Developer Forum, pages 61–65, Curitiba, 2012. Sociedade Brasileira da Computação.


Version control applied to image artifacts is a high time consuming and storage intensive process and, in many times, does not give a good awareness to the user. It is due the fact that performing version control in image artifacts requires the analysis of all channels of each pixel for performing operations such as diff, patch and merge. As an example, a common 1024 width by 1024 height image requires processing of 1,048,576 pixels during an operations. Each pixel requires the processing of its individual channel, performing a total of 3,145,728 operations for RGB images and 4,194,304 for RGBA images. Even worst, version control operations are performed using two images, except for merge operation, which requires three images.
IMUFF is the submodule capable of performing the three most important operations typically found in many existing commercial and non-commercial VCS for image artifacts, but using GPU to accelerate its processing. IMUFF is hospeded at GitHub.


3D Game Engine

A 3D game engine built over OpenGL for the educational game Caça-Palavras. It allows the usage of particle system, a Scene Manager, uses of transparent objects, physics system, allows 3d model loading and has a module for LUA script integration.

Direção Defensiva

Game developed using Unity3d for helping people driving better. It’s a car simulation where the player needs to make some delivery in a given time. The difference in Direção Defensiva is that the player needs to obey the traffic rules like stop at traffic lights, do not stop at crosswalk pedestrian and so much more.
In Direção Defensiva, I was responsible for developing the game play of the game. As a game that differs so much from traditional racing games, much of the game play was developed without any code base. As an example, there’s a level in the game where the player suffer from drunk effect. During this, all the input from the player needs to be dalayed and executed some time later.
During the game, I was also responsible for shader development, like the ones that simulate blurry vision. Some others shaders was also developed, one of them being responsible for simulating night effects.
Car’s AI that appears in the game was implemented by myself. This took a lot of time because instead of just applying rotational and translational matrix to make the car run, I used the built in physics of Unity.
As a serius game, Direção Defensiva needs to use steering wheel gamepad with force feedback, which was archived using an external DLL.
Some of the features included are night vision, drunk effect, cars and pedestrians AI, and Gamepad force feedback.

Vehicle Cleaner

Game developed in XNA to Imagine Cup competition in 2009 for Xbox 360. The competition requested the development of a game with the theme about challenges of the most importants problems in the world.
In the game, which is passed in the year of 2040, a new kind of fuel that uses Energy Cell instead petroleum derived was developed avoiding the pollution caused by them.
The purpose of the game is to transform the vehicles that go on the road to use this new fuel type selecting the right transformation. When a wrong transformation is made, the vehicle blows up, increasing the amount of pollution. It’s worth to say that Vehicle Cleaner was a semifinalist game.
The main challenge of developing Vehicle Cleaner is to deal with so many different types of monitor and TV used in Xbox 360. To deal with this, we developed a module in the game that allows for the most used types of devices to be used without causing problems in the game.
Another problem we faced at the time was the lack of video support in XNA. For this, I developed a content import that transforms videos in a collection of images, which gave us the possibility to display videos in the game.
Also, basic physics developed to deal with the cars in the street. A particle system was implemented to be used during the car’s transformation.
To help finishing this game, I invited Diego Barboza, who helped me in finishing in time the game programming, and David Siqueira, an artisit who makes all the models and textures for the game.