I like science, especially Physics.
I like games, especially videogames.
I like programming, especially game programming.
Read more about me and what I do on my blog if you're interested!
Lifish was born in 2015 as a free software clone of an old Mac game called BOOM, a "Bomberman meets Doom" arcade game. The source code is available here.
The project later evolved into an original game, preserving most original BOOM mechanics while adding on bosses, enemies and powerups.
As a programmer, I basically wrote the entire thing. Lifish uses a custom C++ engine leveraging the SFML multimedia library for multi-platform deployment (the game runs on Linux, Mac, Windows and FreeBSD).
Lifish development is in hiatus, but I created a fork named BOOM: Remake which is a faithful recreation of the original BOOM available for free for Linux, Windows and Mac.
A rendering engine I'm writing in my free time, written in C++ and working on Linux and Windows.
Uses GLFW for windowing and OpenGL 4.6 as a graphics backend.
It's still early in development, but it currently features: (partial) GLTF models loading, multiple viewports and cameras, PBR, HDR, frustum culling using spheres, AABB and OBB, shadow mapping, custom memory allocators, ImGui-based user interface and various profiling views.
Haru currently uses a deferred G-Buffer-based rendering pipeline, supporting an intederminate amount of lights through additive blending. My intention is to eventually switch to a visibility buffer approach.
My Master Thesis project, written in C++14 using the Vulkan API. Runs on Linux and Windows.
This project explores the concept of a “distributed rendering engine” for videogames with the aim to split the graphics pipeline between a server and a client. My goal is to create a hybrid model between the "classic heavyweight client" model (where the client makes all the processing needed for rendering) and the more recent "streaming" model (where the server does all the processing and sends the stream of rendered frames to the client).
In my project, models, textures and shaders live on the server, which does most of the application-stage work. Then, rather than rendering models and sending frames to the client, it sends preprocessed geometry data to it, which in turn runs all the following pipeline stages.
The rendering pipeline is a classic G-Buffer-based deferred pipeline.
My first toy rendering engine, written (in a couple of months) as a way to get a solid grasp on OpenGL and graphics programming.
Gadget is written in D and uses OpenGL + SFML for windowing. It's only been tested on Linux.
Its source code is available here.
Features basic primitive drawing, instanced drawing, texturing, diffuse/specular/normal maps, ambient/directional/multiple point lights, Blinn-Phong shading, shadow mapping and skybox drawing.
I wrote a couple of posts about Gadget on my blog.
GIVE was my first commissioned game and also my first one made with Unreal Engine.
The final product is the result of one year of work from a team of 2 people. My main role in the team was gameplay programming, but I also contributed some 3D models, animations and most materials.
GIVE is a sidescrolling shoot-em-up for PC where you control white blood cells with the goal to safely escort the erythrocytes inside a blood vessel, defending them from bacteria. The game uses most of the classic mechanics of the genre, plus some extra elements such as "blood transfusion".
The game features local multiplayer up to 4 people, allowing joining in mid-game in a perfect arcade fashion. There are 4 playable characters, each with its own basic attack and "bomb", 3 levels, each with its unique boss, and a bunch of enemies with different patterns.
Hacknid is a game made in 48 hours for Global Game Jam 2018 by a team of 4 people, available for download here. You can also play it in your browser (you'll need mouse+keyboard or a joystick).
It's a 2D puzzle/stealth game for PC where you must get to the end of the level by controlling not only your character, but enemies as well.
As the game received positive feedback, we kept on developing Hacknid to expand it into a full game. Like during the jam, I'm the main programmer both for gameplay and shading.
We're using GameMaker Studio, but as our game needs lots of levels we developed our own external level editor in C# / WPF to ease the work of designers.
A 2D puzzle game for mobile, developed in a team of 3 people as a project for the university course of Mobile Computing. We used the Unity game engine.
The game is available on Play Store, App Store and Windows Store.
Save as many "qU" as possible by tapping the matching color before the blades close on them.
Features 10 levels and a collectible card achievement system.
qU was designed as a way to collect anonymous data for an academy research on color perception. Therefore, the game has a builtin data collection system which records the player's results and sends them to an external database.
I wrote the whole data collection system, as well as a significant part of the gameplay code.
Wavescape is a game made in 48 hours for Global Game Jam 2017 by a team of 6 people, available for download here (source available here).
It's a 2D puzzle game for Windows and Linux where you control the wave function of an ion trapped in a quantum computer. The ion follows its wave: change its shape to make it avoid the obstacles!
I was mainly a gameplay programmer, but I also contributed to the game concept and helped design a level.
A project made for a course in Realtime Graphics Programming by a team of 2 people.
It's a toon-shaded "tech demo" viewable in browser where you make a small turtle swim in the ocean among floating barrels.
Uses THREE.js as a WebGL helper and Ammo.js as Bullet Physics binding to Javascript.
Both the barrels and the turtle are dynamic rigidbodies which collide and float through physics simulation.
In this project, I wrote the physics simulation system (including the player's movement and the floating of objects) as well as most of the assets loading and initialization, which is mostly asynchronous.
I used Iced Coffeescript to ease the writing of the numerous asynchronous parts of the code. The code is available here.
Blockster is a game made in 48 hours for Global Game Jam 2019 by a team of 4 people, available for download here.
It's a frenetic 1v1 arena brawler for Windows and Linux where your goal is to reach your opponent's house while preventing him/her to do the same. There's also a kill counter for fun and profit!
I was mainly a gameplay programmer, but I also contributed to the game concept.
Automaton is a game made in 48 hours for Global Game Jam 2020 by a team of 4 people, whose source is available here.
It's a text-based, Oregon Trail-like adventure settled in the far future. Play as a roaming automaton, tredding the land and attempting to mend itself, the humans it comes across and the planet.
The game is event-based and all events are written in text files with a simple format, so the game can be easily modded without the need of recompiling the game.
I was the main programmer on the game, wrote the events parser and contributed some ideas to the game concept.
Inle is a 2D toy game engine based on ECS and written in Rust.
It features an OpenGL-based renderer, MSDF font rendering, simple 2D collisions based on impulse resolution, data and code hot-reloading and various debugging facilities, including a built-in tracing profiler and a console with autocompletion and better user input handling than Unreal's :-)
It was built with as few dependencies as possible, the biggest dependency being SFML for windowing. It runs on Linux and Windows.
The engine is still in development, with the goal of using it in an actual game at some point.