About Me

I'm a PhD student of computer graphics ( CV) who's about to graduate in 2015. I'm looking for a job as a game developer, be it in graphics, game logic, AI, or any other capacity. This is my portfolio of game development related content. Get in touch!

Flying Samurai

2009-2010, supervised by Otakar Nieder, with Oskár Elek, Marek Hanes, Jan Záhornadský, and others

A World War I aerial warfare simulator, Flying Samurai was made for a "Software Project" course, an obligatory part of our university's Master Degree curriculum.

Flying Samurai is written mostly in C++ and builds on, among others, Orge3D, OpenStreer, bullet, CEGUI, and irrKlang. It posed our team with a number of technical challenges. First, we wanted to be able to handle very large terrains — approximately 460 × 460 km, or 285 × 285 miles — which was meant to allow for very realistic missions and campaigns. Eventually, this was achieved using a heavily patched 3rd party Orge3D plug-in. Second, we wanted advanced physics and a non-cheating, stick-handling AI. To this end, the AI had to be able to not only string together actions and manoeuvres, but also estimate how much to move the "stick" to perform them. Finally, the whole game runs on four threads (logic, graphics, physics, AI) to leverage the available computational power.

Flying Samurai Screenshot Flying Samurai Screenshot Flying Samurai Screenshot Flying Samurai Screenshot

On this project, I had two roles. First, I was the primary team leader, and as such responsible for project coordination and team management, including recruiting and managing our "externs". My second role was implementing most of the GUI, game logic including configurable campaigns, and procedural generation of forests, fields, roads, and cities.

The project took 17 months to complete. Without 3rd part libraries, our code eventually comprised of about 70 kLOC, with an estimated 1000-1500 hours of work per person. It was defended with extra credit and presented on the university's recruitment website.

Download and take a look at:

The 4 GB game distributable is only available on request. It seems to occasionally crash on newer nVidia drivers and fails to load 3D models on newer ATI cards.

Footie / Soccer

2008, supervised by Bernard Lidický

Footie is a Soccer/Football game I wrote as my bachelor thesis. It allows the user to play a full football match against a competent AI.

One technical challenge was ball physics, which allows for putting rotation on the ball, realistic deflections off the goal posts, the field, and the players. A second challenge was the AI. The field players hold a semi-rigid formations that get deformed as the formations' bounding boxes gets closer to the playing field's boundaries. Additionally, players will step out of the formation to mark unmarked players when defending, cross the path of opposition players with the ball, when in possession of the ball, or when chasing the ball.

Footie Screenshot Footie Screenshot Footie Screenshot Footie Screenshot

Although the AI isn't as realistic as I would have liked, it is quite difficult to beat and, together with the physics, makes the game fun to play.

The game took over a year of on and off work to complete and was defended with a perfect grade. Try Footie out for yourself or take a look at the C++ source code:

Platformer

2008, with Tomáš Caithaml and Lukáš Kopenec, graphics by Evelína Gabašová, design by Jan Binder

A team project for a "Game Development" class, "Platformer" is a typical arcade game. We developed it in C++ over the course of a couple of months of on and off work. The relatively simple physics and AI were done in-house.

The game's main innovation is the ability (necessity) to aim with your mouse. While we were hoping this would allow for a faster overall pace, it instead lead to a game play that alternates between fast paced "evasion" sections and slower, "precision jumping" and "sniper" sections. The game, however, is still quite fun and challenging.

Platformer Screenshot Platformer Screenshot Platformer Screenshot Platformer Screenshot

On this project, I again acted as the team leader, coordinating work between team members. Additionally, I was also involved with programming, being responsible for the graphical part of the engine and parts of the game play.

"Platformer" is readily playable and available with source code:

Motordead

2012-2013, supervised by me, developed by Šimon Soták, Matej Marko, Jakub Kypeť, Jan Navrátil, and others

Motordead is a project I have supervised. As such, I was responsible for making sure the students (listed above) are going in the right direction and that the team lead is doing a good job of organizing the work. I also contributed with tips and advice at weekly meetings. However, I was not involved with the design or implementation.

The project is based on the Fibix engine, programmed in C#, and also makes use of OpenStreer and bullet. We also got help from Erik Veselý, the author of the Fibix Engine, and two artists/designers. The project was defended with extra credit. You can learn more or download and play the full game on the Motordead website

Cities

2011-2014, supervised by Alexander Wilkie and Jaroslav Křivánek

"Cities" is a simulation of the growth or road networks within and around cities. While previous methods usually grow disconnected cities from the center of a given map, my approach runs a trade simulation to simulate city growth over time. New major roads are built to support the growing trade over years and new minor roads are built around the newly created intersections.

This way, cities with a more realistic structure that includes suburbs, satellite cities, green gaps, and a realistic placement on the map can be grown.

Cities were my Master Thesis and spilled over into my PhD. C# and CUDA were used for the implementation. A more detailed and better illustrated treatment of "Cities" can be found in linked paper.

Birds

2013-ongoing, supervised by Richard O. Prum and Todd A. Harvey

Birds Screenshot Birds Visualization Screenshot
On the left, an acquired spectral image, converted into human RGB. On the right, visualization of avian RGB+UV/USML.

"Birds" is a research project aiming at better understanding the coloration of birds and other tetrachromats. To this end, spectral photographs of stuffed birds specimens are acquired, processed and the resulting avian colors visualized.

In this project, I was responsible for the majority of the implementational effort. Specifically, I extended a pre-existing C++ acquisition program to support a new camera, a filter-wheel, a mechanical shutter, a turn-table, and a 3D scanner (ASCOM/COM, and a proprietary APIs), providing means of white balancing and analyzing the resulting HDR images (the HDR merging was done by an external collaborator) and their conversion into avian color space (MATLAB). I also fixed and upgraded an existing tool to project photographs onto 3D models (C++, MFC), and implemented a prototype for visualizing avian colors as 3D vectors (Java, OpenGL/GLSL, OpenEXR).

The work-in-progress results have been published as a SIGGRAPH Asia poster, available below.

Miscellaneous

I have also worked on several smaller projects, mostly school assignments.

For the "Visualization" lecture at TU Vienna, Hrvoje Ribic and I implemented two algorithms: flow visualization with evenly spaced streamlines and volumetric rendering. The work was done in C++, OpenGL/Cg, and Qt. You can find the programming documentation and the binaries at the linked websites.

Flow Visualization Screenshot Flow Visualization Screenshot Volumetric Rendering Screenshot Volumetric Rendering Screenshot

For another TU Vienna lecture, "Real-Time Graphics", I created a short 3D demo called "Brasil". The course required us to use modern OpenGL, implement our own matrix operations, implement one shadow algorithm (I did shadow mapping) and one post-processing algorithm (bloom), and at least some camera and light animation. I also generated simple buildings and textures on the fly.

Taking a similar course at Charles University, I used a shader to ray-trace a fake 3D pool with a cell-automaton based rippling effect and a shader-based hexagonal tiling pattern (C#, OpenGL). For a second assignment, I implemented a flocking algorithm in CUDA.

Finally, I also do occasional work in Python. For a recent research project, I implemented a web based experiment using Flask, Celery, HTML/CSS, and Javascript.