portfolio

Feel free to check out my GitHub account for an overview of my public programming work. For a detailed view of my professional experience, please refer to my LinkedIn profile.

Graphics & Tech Art

  • PJRP. [Source Code]
    PBR render pipeline built from scratch in C# for Unity, fully working in PC, Nintendo Switch, Xbox Series X/S PlayStation 4 and PlayStation 5.
Screenshot of sample scene rendered in Unity with PJRP.
  • Deck RX. [Steam]
    Developed the game as Graphics Programmer and Tech Artist. Work in this project includes:
    • Modification and extension of Unity’s URP forward renderer to add deferred features,
    • Toon-like illumination and fullscreen outline effect,
    • Environment fog and lighting for every world,
    • In-game special effects and particles
Screenshot of a race in Deck RX.
  • Ignited Steel. [Steam]
    Designed and implemented a “Sprite Stack” based render pipeline, which achieves a pixelated 3D graphic effect using animated layers of 2D sprites.

  • Path Tracer. [Source Code]
    Simple renderer following Peter Shirley’s book “Ray Tracing in One Weekend”.

  • Vulkan Renderer. [Source Code]
    Small project used to learn Vulkan.

  • Project Attrah.
    Procedural world generation module, relying on compute shader programs and multi-threaded processes. Transforming a flat world to give it a round planet look via vertex manipulation. Vertices displaced with a HLSL shader, running in real-time at 60 Hz.

Engine Programming

  • Xaloc. [Source Code]
    A 2D game engine written in C++. It’s an engine with an ECS approach, that supports OpenGL rendering and allows C# scripting through mono.

Tools Programming

  • TexWriter. [Source Code]
    A shader-based image genrator, built using C++, OpenGL and ImGui.
  • Rosetta.
    Localization tool written in C++, using XML, OpenGL and ImGui. Used for the game localization process in Meteorbyte Studios releases. Provides basic functionality, such as basic project statistics, text search and filtering, content preview with different fonts and character sets, and string comparison among different languages.

  • Buildbot Fork.
    Used Python and Buildbot to develop an internal Continuous Integration tool, which automates PC and PS4 builds.

  • Deck RX Toolset.
    Tile-based level editor for in-game circuits. Programmed as a standalone C# Unity application and outputting level data in both JSON and binary file formats.

  • Ignited Steel Toolset.
    Multiple Unity extensions and custom tools for the development of the console versions of the game, including:
    • A “sprite stack” mesh generator, which allows the preview and generation of sliced mesh assets from a given set of sprites,
    • A Localization Scanner, with the ability of checking the whole asset database looking for unlocalised UI elements or miss-configured font asset references.
  • Songs of Steel: Hispania Toolset.
    Designed and implemented multiple key tools in asset creation pipeline for Songs of Steel, a narrative strategy game. Among them:
    • Node-based editor for Narrative Designers to structure both quests and dialogue assets in Unity,
    • In-engine hexagonal tilemap editor, allowing the modification of navmeshes, level terrain conditions, trigger areas and enemy spawn zones.
  • Unity extensions.
    Vast work in custom Unity tools and extensions for the Unity Editor, to deliver the best-fitting toolset for artists and designers’ needs in each project.

Bachelor Thesis

A Narrative Engine for video games with parallel and open storytelling.

Built as a core module in Project Attrah, its initial design and achitecture proposal was awarded Most Innovative Cultural Project of the year by the Ministry of Culture and Sports.

It has been used in the narrative strategy game Songs of Steel: Hispania, as the core system to handle the story events of the campaign.

Abstract

We have developed a multi-platform Narrative Engine which can help a video game build a story with different levels of developer and player authorship. We have accomplished this by abstracting all narrative occurrences that make the plot advance to different kind of Events, which can be triggered after internal changes of the game state. In addition, our system presents other sort of narrative utilities, such as Characters with different sets of skills and attributes, and multiple approaches to the way the previous-mentioned events are triggered, like Affairs that bind our internal system state to the game’s state or Event Pools, which will trigger events over time based on arbitrarily set priorities. Our system is currently being used by multiple in-development commercial projects.

Appearence

I have experience talking to broader audiences, both as a University guest lecturer and as a speaker in game conferences. Some of them list as:

  • won’t somebody please think of the tools
    at Guadalindie • May 2024.

  • game postmortem: alexandria
    at BCN Game Creators • Feb. 2024.

  • PANEL DISCUSSION: Challenges and Triumphs: A Deep Dive into AAA Game Development
    at DevGamm Lisbon • Nov. 2023.

  • Hey, mira, una charla de programación [ES]
    at IndieDevDay • Oct. 2022.

  • Technical Art in Video Games
    at EII Tech Fest, University of Oviedo • Feb. 2022.

  • Intro to Indie Game Development - Meteorbyte Studios’ case [ES]
    at EII Tech Fest, University of Oviedo • Feb. 2021.

  • Game Feel 101 [interactive presentation]
    at University of Oviedo • Fall 2019.

Picture taken during the Panel Discussion in DevGamm Lisbon 2023.

Other Work

  • steam2xml. [Source Code]
    Small command line program to transform Steam achievement files from VDF to XML.

  • ChromeTracing.NET. [Source Code]
    A C# visual profiling library using Google Chrome’s tracing tool.

  • Seagull. [Source Code]
    Toy programming language, compiling to intermediate language. Targeting MAPL Virtual Machine, an academic virtual machine built at University of Oviedo. The compiler is developed in C#, with the help of ANTLR for lexical and syntax analysis.

  • DeChat. [Source Code]
    A decentralized chat web application using Solid. Developed as a team project with other students from the Software Engineering Degree at Universidad de Oviedo.