Hi, I'm Isaac Serrano Guasch

I'm an allaroung Game Programmer. I've been programming since I was a teenager, I've learned this craft both from great teachers and by myself. Even though I did some crypto-related research in my early days in the uni, I've spend most of my time programming games and learning everything I could get my hand over about games.

I consider myself a general programmer, but there's been areas where I did focus more than others. One of them is graphics programming. I love to learn and implement new techniques, and I also read some white papers about the subject. I'm also very focused on optimization due to the work I've done this last years. Finally I also love game design, despite now using it mostly as a hobby expect me releasing a game sometime in the future.

Experience

Mar 2012 - Present

Software Engineer at Blitworks

PS4
XB1
PSVita
OpenGL
gnm
Android
iOS
C++
C#
Unity
Unsharper
Android
iOS

Porting of multiple games to multiple platforms.

Development of Unsharper, a tool to translate C# into C++.

  • Kerbal Space Program
  • Starbound
  • Hammerwatch
  • Reus
  • Cannon Brawl
  • Bastion
Set 2015 - Present

Teacher (UAB and ENTI-UB)

PS4
OpenGL
Windows
Optimization
DirectX
PhysX
WWise
Dear IMGUI
Visual Studio
Math
C++

I've teached multiple subjects, ranging from introductory engine programing to focused optimization.

Some of the subjects I've teached are:

  • Tech 101
  • Engine 101
  • Physics
  • Sound / Music
  • GUI
  • Particle Systems
  • Multiplatform Engine
  • Performance

Ports

Bastion Screenshot

Bastion

C#
C++
Unsharper
Optimization
PS4
PSVita
Bastion is an action role-playing experience that redefines storytelling in games, with a reactive narrator who marks your every move. Explore more than 40 lush hand-painted environments as you discover the secrets of the Calamity, a surreal catastrophe that shattered the world to pieces. Wield a huge arsenal of upgradeable weapons and battle savage beasts adapted to their new habitat.

My first big project at BlitWorks. I worked on both PS4 and PSVita ports of this game. We used Mono in the PS4 version. I participated in making the game compile/run, adding PS4 features (Trophies, Cross-Save, etc...) and general optimization work.

The port to PSVita was more elaborated. The game didn't run fast enough on that hardware so we developed a tool (Unsharper) that converts C# code into C++ code, so we could have better tool support from the platform and we also got a great increase in performance. You can read an article on Gamasutra written by our CTO about the whole process.

View Project Post Mortem

Reus Screenshot

Reus

C#
C++
Unsharper
Optimization
In Reus, you control powerful giants that help you shape the planet to your will. You can create mountains and oceans, forests and more. Enrich your planet with plants, minerals and animal life. There is only one thing on the planet that you do not control: mankind, with all their virtues and and all their vices. You can shape their world, but not their will. Provide for them and they may thrive. Give them too much, and their greed may gain the upper hand.

For this game I worked on improving Unsharper and the runtime support so it could correctly handle the many C# features this game was using, such as "yield functions" and covariance. We overhauled the game controls for consoles and made a lot of optimizations to our code. Finally we sharpened the memory cycle detection tools to help find all memory leaks that where introduced due to changing a GC into a reference counting system.

View Project

Unsharper Logo

Unsharper

C#
C++
Roslyn
Compilers
Unsharper is a semi automatic tool for converting C# code into C++, mainly focused on porting C# games (MonoGame, OpenTK, SharpDX, etc) to game consoles.

The tool is designed to output code as similar to the original C# as possible to ease later debugging. It also manages memory with reference-counting in order to increace performance predectability in the resulting code.

View Project

Game Jams

Orcs in Space Screenshot

Orcs in Space

C++
Vulkan
OpenGL
OpenAL
Game Design
Gamplay Programming
This is a tribute to the old-school RTS genre. A game focused on your micromanagement skills. You have to control little robots to defend themselves while you charge your Nexus until you can flee and win the game.

This game was developed by Mario 'pnkthrepwood' and me during Ludum Dare 39. We used an Engine I had build to lean Vulkan so I could test it's readyness. During the debelopment I added a OpenGL renderer so people without the latest hardware would be able to play the game.

For this gmae I programmed the graphics and the sound and we splitted the gameplay programming and design between Mario and me. He did all the visuals.

View Project Source Code

Release Day Screenshot

Release Day

C#
Unity
Game Design
Gamplay Programming
On RELEASE DAY you'll be able to play as that single mob that spawns on a starter zone of a recently released MMO. Tie your shoes tight, because it's time to run from the thirsty low level players. Lucky for you, the map has some spike traps for you to use, and the GMs have left the friendly fire on ;)

This game was developed by Ada Ferran, Hector Mudarra and me during Ludum Dare 33. We used Unity and we developed the entire game in a weekend.

View Project Source Code

Battle Pixels Screenshot

Ludum Dare

C++
Java
Javascript
Unity
C#
OpenGL
Game Design

I've been very active doing game jams. I use jams for a variety of purposes. Some of them is to learn and apply new technologies, try some fancy game design ideas and collaborate with interesting people.

The event I've participated the most is Ludum Dare (now LDJam) where I collaborated with Ada Ferran, Héctor Mudarra and Mario González.

Ludum Dare LDJam

Pet Projects

Path Traced Screenshot

Path Tracer

C++
Path Tracing
Monte Carlo
Geometric Algebra

I wanted to learn Ray Tracing (Turns out the "good algorithm" is called "Path Tracing") so I did one.

I've been following samples and exmples from all over the internet. The main ones are smallpt and business card raytracer. I'm also reading a lot of theory from this site.

The current sample outputs the image (1024x768, 15000spp) in less than a day. The algorithm hasn't been optimized or paralelized in any way wet, as I'm more interested in getting it "right" than "fast" at this moment.

View Repository Dev Log

Education

EON-100 Screenshot

EON-100

C++
DirectX
Post-Process
MaxScript
Lua
PhysX
CAL3D
HDR

This is the project we did while doing a Master in Videogame programming in UAB, a Master I'll come back years later as a teacher. We were a team of 5 programmers, 2 Artists and a musician also helped us.

During the development of the project I was able to contribute to all areas, but I had great focus on the Graphics engine, including all visual effects and ilumination.

View Project