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.
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.
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 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.
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:
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.
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:
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" 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.
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.
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.