[ Games I've Worked On ]

RedEye Logo

Qui és l'Esquerda?

Role: Programmer
Unity
C#

Gymkhana-type app that uses a mobile device's geolocation services to make players delve into Esquerda's Archaeological Site whilst facing a range of mini-games spread throughout assaying their acquired historical knowledge after having explored the museum's exhibits and artifacts.

Contributions

The game is based on a previous version for Ter's Museum; completly re-built to have no dependencies to any Assets from Unity's Asset Store and support both deployments simultaneously on a single project. Furthermore, the previous version ran without internet connection. I built its database and programmed playthough uploads allowing player rankings and set content to be database-backed easing future updates and changes without having to re-install the app on each device.

Challenges

I anticipated dealing with Unity's quirks to be the main source of my headackes. They ended up being more than expected, but by far the most tedious portion of the workload was testing. Behaviours changed from running on a computer to running on a mobile device constantly. Anything running steadily wilst testing on PC might unnexpectedly cause trouble when changing platform and some features would only run on a mobile device such as geolocation.

Solution: The previous version had little to no debugging functionalities. Testing the different parts of the game required restarting it constantly. Adding tools to navigate through the game had the most impact on saving time; plus, having parts be accessible through these hidden passages forced them to become more independent from the gameloop and therefore more robust.

RedEye Logo

Galàxia Manlleu

Role: Programmer
Unity
C#

Original gymkhana-type app that inspired "Qui és l'Esquerda?"; its second iteration. Players explore Manlleu's history through its emblematic architecture solving mini-games throughout. It complements Ter Museum's visit for students and large group visits.

Contributions

The original version had sporadic troubles gathering geolocation data which I was in charge of fixing. I'm currently developing its next version sharing features with its iteration together with new added ones such as:

  • Real-time score tracking with other group players.
  • Reduced-mobility routing for improved accessibility.
  • Upgraded graphics.
  • Audio & Sound FXs.
  • Challenges

    The game was live when I started working on it. It was made by a different programmer with a completely different coding style.

    Solution: In order to get bugs fixed I had to understand its inner workings before being able to modify anything. Researching assets used and understanding the gameloop was challenging but enabled me to get the fixes going swiftly. Plus it made it clear that it would require a mayor code re-design developing the next iteration.

    [ My Own Game Engine ]

    RedEye Logo

    RedEye Engine

    Role: Programmer
    Team size: 2
    C++

    Open source 3D Game Engine developed from scratch together with Julià Mauri. Envisioned as a sandbox to test and experiment with game engine programming paradigms. We keep coming back honing and building new features in our spare time. All my Saturdays are spent coding the engine.

    Contributions

    I’ve partaken in almost every aspect of the engine as we tend to work together on each feature; although, my most prominent work lies on coding:

  • Deferred shading rendering pipeline
  • Dynamic AABB trees for camera culling
  • Custom integrated profiler and automatic graphing setup
  • DOD particle physics system
  • Challenges

    After learning how other engines such as Unity and Unreal managed their scenes, we figured we had to build a solid Entity Component System (ECS) approach before having too many components to handle. Large scenes started to show a performance toll.

    Solution: Our use of pointers was convenient for allocations, but not for iterating the scene’s hierarchy. We rebuilt the scene manager and added gameobject and component managers. These store data continuously for top speed iterations every frame with hash maps. Highly nested scenes run exponentially faster; plus, their 64-bit unique keys allow multiple users to work on the same scene as objects can’t be identical. We are still working on our ECS implementation though as it's still not quite there yet. We are aiming at thread-safe systems before implementing a multi-threading module and running each system independently.

    [ Video Game Projects ]

    AUW Logo

    Alita: UW

    Role: UI Programmer
    Team size: 18
    C++
    C#

    Fast-paced action video game where you play as Alita, a female cyborg, as you explore Iron City's dangerous slums. The events in the game follow the story of Alita: Battle Angel as you upgrade her body parts and customise her combat style.

    Contributions

    I was part of the designers team but I ended up programming more than anything. I was in charge of building the HUD’s in-game panels and menus whilst supplying the combat and character progression mechanics these were to reflect.

    Challenges

    Our programming team developed the engine whilst the front-end team was actively developing the game. Every couple of weeks the engine would have a new version released with added functionalities and resources from older versions were prone to not loading; including the canvas prefab object that contained all the UI.

    Solution: At first I thought that this inconvenience was gonna only happen on the first stages of development because of the code’s crudeness and I happily remade the first drafts of the UI. But once this became a constant struggle, I turned to building the UI from scripts. This approach made it harder to edit elements, but I was able to pass it onto every other release and continue building.

    Square Up Logo

    Square Up

    Role: Lead, Programmer
    Team size: 5
    C++

    Inspired by Age of Empires, Square Up is a real-time strategy base defender where the player must fight-off a planet invasion by improving their base and scouting the map for materials and reinforcements.

    Contributions

    As team lead I planned the workload, assigned tasks, supervised, tested and gave feedback on development submissions. Whilst not organising the team, I worked on the engine supplying low level behaviours and the in-engine tools used by the designers and artists.

    Challenges

    Here I was faced with my hardest challenge to date. As team lead I planned the workload as best as I could; but, as tasks became overdue, time gained on us and the scope had to be cut down.

    Solution: We had a boss fight planned for the end of the game. As some members left the team, we were overflowing with their tasks and no level of crunch would have saved us. Deciding on cancelling the boss phase was the best and hardest decision in development. The game produced, although finished, still feels like it is missing something.

    Unthrone Logo

    Unthrone

    Role: Designer
    Team size: 32
    C++
    C#

    Game of Thrones tribute game developed by Njoy Games using Culverin Engine. Inspired by Legend of Grimrock's first person turn-based style and grid dynamics, it features a dungeon crawler gameplay style solving puzzles and defeating enemy guards along the way onto dethroning Cersei and fighting the Mountain.

    Contributions

    I partook in designing the different characters, their combat abilities and progression. We drafted ideas for major characters in the rooster and how they could balance each other out as the player moves forward based on their background in the lore.

    Challenges

    Integrating lore into gameplay constrains the designing process. Using the same characters from the show required coherency between them.

    Solution: Although Theon, Daeneris and Jamie are an unlikely team, their differences worked each other out in classic rpg style: ranger, mage and tank. Keeping to the project’s scope, player experience trumps storytelling accuracy.

    PANG Logo

    PANG

    Role: Programmer
    Team size: 4
    C++

    My first complete video game emulation project. The aim was to replicate PANG as closely as possible. Classic arcade games usually have their sprites out in the open and today’s computers can easily run them so development wasn’t as complex as the original developers' had it.

    Contributions

    I was in charge of UI and rendering and later on stepped into player control and mechanics. We decided on having balloons follow a physically-correct approach, but the original game had tile-based physics and its behaviour ended up being more predictable than ours.

    Challenges

    PANG has its own typography: very distinct yet pixelated. We had the tools to load and render text from a TTF file but there were no typographies available that were similar enough.

    Solution: The brute force solution was to crop game screenshots and produce an alphabet sprite sheet. Turns out you can make your own typography and there are available online free editors. Letters were very easy to replicate and even some weren’t used in the game and we could just skip them. In a couple hours we had the original font replicated and running on every scene.

    ALBA Logo

    Link BA

    Role: Programmer
    Team size: 6
    C++

    2D RPG tribute game based on Nintendo's 1991 The Legend of Zelda: A Link to the Past. Relive the GBA experience on a computer with an added twist.

    Diablo Logo

    Diablo II: RoD

    Role: Programmer
    Team size: 6
    C++

    A take on Blizzard’s Diablo scoped to just the first dungeon. The main goal was applying a new mechanic to the original game. The amount of layers the original game turned out having made development arise a new design decisions every other meeting.

    Menu Screenshot
    Bullet Logo

    Pinball ED

    Role: Programmer
    Team size: 2
    C++

    Single-level pinball physics simulation using Box2D.

    [ Other Projects ]

    Home Page
    HTML Logo

    Web Portfolio

    Role: Programmer
    C++

    After having building different projects I needed a place to showcase them and settled on making my own website from scratch to:

  • Explore, understand and practice web development with HTML, CSS and JavaScript.
  • Deal with cross-platforming and share it everywhere.
  • Have it be unique and customizable anyway I see fit.
  • Incur in no monetary cost past the domain acquisition.
  • Menu Screenshot
    Bullet Logo

    Ausias GP

    Role: Programmer
    C++

    Kart minigame circuit in a physics simulation using Bullet’s rigid body and vehicle mechanics.

    Bullet Logo

    Agent Distribution

    Role: Programmer
    C++

    Network support system based on searching multilateral exchanges through socketed agents. My take sets random positions for its users and when iterating, it prioritises trades where goods travel the least possible cumulative distance.

    Bullet Logo

    Model Viewer

    Role: Programmer
    C++

    Second iteration on Qt where we turned the 2D painter into a 3D renderer using no libraries other than Assimp to import the models. Once we could import models, we added advanced rendering paradigms with Qt’s OpenGL functions: skybox, deferred shading and material’s reflection and refraction.

    This remains my most starred repository on github as Qt has tools ready for Vertex Skinning, but the scenes must be parsed into QML code using Qt's Balsam Asset Import Tool. I prefer adding raw C++ functionality to the imported assimp scene rather than having to deal with QML.

    Menu Screenshot
    Bullet Logo

    2D Painter

    Role: Programmer
    C++

    My first completely cross-platform project made with Qt. It emulates a 2d engine where the user can create and customise shapes on a canvas and export the composition into a png file.