I'm Giacomo Parolini.
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 on Github.
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.
An ongoing "toy" rendering engine I'm doing in my free time as a way to get a solid grasp on OpenGL and graphics programming. My plan is to also integrate it with a physics engine in the future.
Gadget is written in D and uses OpenGL + SFML for windowing. It's currently only being tested on Linux.
Its source code is available on Github.
Currently, after a couple of months of work, Gadget features: basic primitive drawing, instanced drawing, texturing, diffuse/specular/normal maps, ambient/directional/multiple point lights, Blinn-Phong shading, shadow mapping and skybox drawing.
Work on Gadget is currently on hiatus due to me working on a similar project for my Master thesis, but you can read a couple of articles about it 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.
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.
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.
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.
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.
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.
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.
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, available for download 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.