Hi, I'm Isaac Serrano Guasch
I'm a generalist 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.
Engine Programmer at Rare
Part of the Engine team at Rare.
Helping adapt Unreal Engine to our gameplay needs. Also a lot of support on whathever is needed.
Software Engineer at Blitworks
Porting of multiple games to multiple platforms.
Development of Unsharper, a tool to translate C# into C++.
- Kerbal Space Program
- Cannon Brawl
Teacher (UAB and ENTI-UB)
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
- Sound / Music
- Particle Systems
- Multiplatform Engine
Sea of Thieves
The freedom of a pirate paradise unfolds before you! Find a crew or go solo, exploring the world at your own pace. Follow the threads of tall tales, make deals with Trading Companies and take your pick of Voyages leading to Pirate Legend glory.
As I landed on Rare I started contributing to the ongoing game Sea of Thieves. As part of the engine team I am responsible for adapting Unreal Engine to the needs of our game, helping improve the performance of it, and fixing bugs that appear in the inner workings of the engine.
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.
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.
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.
Orcs in Space
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.
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.
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.
Geometric Algebra blogs
The plan is to make a series of posts around Geometric Algebra so I can have a place where I can find information if I want to. It also helps me grok it to write it.
Eventually the plan includes making different posts with different detail levels, so I can have a in depth explanation of it, a quick reference guide, etc...
I wanted to learn Ray Tracing (Turns out the "good algorithm" is called "Path Tracing") so I did one.
The current sample outputs the image (1024x768, 15000spp) in less than a day. The algorithm hasn't been optimized or paralelized in any way yet, as I'm more interested in getting it "right" than "fast" at this moment.
Bag of Tricks
The last iteration at the "I want to learn something so I have to play with that a bit".
This project is much more a bag of miscelaneous stuff I've been wanting to learn than anything structured. I has a path tracer I rewrote from the previous project and also has a Vulkan renderer. This project inner workings are inspired by this Naughty Dog presentation. It has fibers and custom allocators similar to theirs.
Another big influence on this project was Fabien Sanglard's book on Wolfenstein 3D were I got an "itch" to learn "the old ways". I wnt to several fan sites of Doom and I learned how that game worked so I could read WAD files and render it's levels.
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.
“His passion and dedication for game's technology makes Isaac one of the best resources a company can ever have. He can successfully tackle most of the hard problems in the industry. If not, just give him a couple of days.”Sergi Valls (2D Software Developer at Unity Technologies)
“I deeply respect Isaac as a professional. In the 3 years I worked with him he proved to be capable of tackling and solving a really wide range of problems. He has a keen eye for performance while producing practical and clean code. More importantly, though, he is an amazing person and an awesome friend and teammate.”Josep Camarasa (former Co-worker)
"I met Isaac as his teacher and he stood out above the rest, but it is as a professional where he really excels. He always finds efficient solutions to complex problems and an overwhelming passion for programming."Jordi Arnal (CEO/CTO at Kaneda Games)