Optimize everything! Team Spotlight: Ricardo Fernandez, Lead Programmer


Previously on Abylight Team Spotlight:

Co-founder Alberto Gonzalez recognizes a familiar game dev company name on a door he knocks on,  and asks if they need an artist. They happen to need one, so he joins the team, where he meets programmer Ricardo Fernandez - now our lead developer at Abylight.  Read episode here!

Ricardo is no newcomer to all this computer stuff: he’s been into it since childhood, and then - you’re guessing it right - got a degree in electronics. “I’ve always liked technology. At the end of school, I was choosing between a university degree and professional training courses. And professional training in electronics was exactly what I felt like.” 

The Opportunity and Windowless Office

Game development popped up in front of Ricardo while he was still studying electronics. At the courses, he met a guy involved in the videogames scene. “He knew a team in Barcelona making games for the French company of Infogrames,”, the developer recalls. “And that team was looking for programmers. I coded something, nothing too complicated or complete, but they seemed to have liked it and I was able to start with them.” This company was New Frontier, that same one Alberto was already at. 

Ricardo and Alberto, showing the game 'Bomb Jack' for Nintendo Game Boy

“I was one of the last teammates to join New Frontier. The place where we worked was quite peculiar, a loft without windows. And although the rest of the team seemed a bit strange, I think I was more surprised by the 'office’.” 

So, why games and not electronics? Ricardo explains he didn’t think too much at that time, and simply grabbed the opportunity that turned up: games seemed cool enough, and he hadn’t heard about jobs in electronics available. At New Frontier, Ricardo gained the initial experience, that was useful when they founded Bit Managers, where he was officially hired. 

“When we left this last company, we decided to try again with other partners”, Ricardo recalls.

This was already 2004 and Abylight. 

Custom OpenGL driver for 3DS: fast to program and run

It seems like there’s no programming task Ricardo can’t figure out. Natural talent and years of practice are surely the reason why, but every cool programmer has a trick up his sleeve, and here’s Ricardo’s: “I like code optimizations, making things more efficient.” 

You know that kind of challenge, that puzzles even those who’ve seen it all? And later takes its place on the developer’s proudest moments. The OpenGL driver for Nintendo 3DS made in VEGA engine has been this kind of task for Ricardo. “It cost me the most, and in the end I am very proud of how it looked”, the developer recalls. 

“VEGA is a complete engine, with control of scene, resources, sound and drawing, and is designed in a modular and extensible way. It has not reached the final stage, and we’ve used it for a few games, mainly for 3DS. On this platform, in order to be able to draw in 3D and 2D on both screens at the same time, a very optimized drawing system is necessary, and that's why we designed a new driver”.  The OpenGL system Ricardo has programmed allows to code shaders, and includes dynamic textures, fragment or vertex type lights, stereoscopic 3D drawing in a single step, model animation (skinning) by GPU, as well as post-processing capabilities. 

He explains that the OpenGL version for 3DS that Nintendo provides is good for quick prototypes, and you can program the drawing part in a simple way - but for a final game it’s too slow. 

“A complete OpenGL driver is a large and complex program. The goal was to replace the original Nintendo API, with another one with the same versatility but much more speed. We needed a drawing system optimal in speed, but versatile and powerful from the programming side. What we had was not enough, we needed something new”.

The most complicated thing was to keep the CPU and GPU running in parallel for optimum performance. “When making our engine, we decided to create another version of this API, which would maintain the program's compatibility so that it would be easy to use, but without the speed limitations of the original. In our version, the GPU could be used completely parallel to the CPU, and the resource control was optimized in order not to block the execution of drawing commands”.

...but does he ever google?

Everyone googles! Ricardo confirms he does as well. “I look up  almost everything, I have a bad memory and usually make sure before doing it. :P”

When it comes to learning programming, Ricardo suggests considering optimization from the get-go.”Make the least amount of program possible and use libraries or engines that do most of the work. Normally, the good use of the tools makes you advance much better and faster.”

Focus is key: when asked about music to code to, Ricardo says he prefers to work in silence, as music would distract too much. But every rule has an exception.  “Sometimes I listen to some ABBA tunes."

Final Fantasy (Game Boy), Don’t Starve, and Elite Forces: Unit 77

Nothing shows a passionate gamer more than the confusion when asked to pick just one fave game.  Ricardo also says he doesn’t really have a single  favorite - but if he absolutely has to choose, the favorite game of all times would be Final Fantasy, the first version for Game Boy. “Recently I like Don't Starve, although it is not that new. It has very interesting graphics, but I die too much... :)”

And every gamer working in gamedev has another aspect to the “fave game” definition: a title they’ve worked on. Elite Forces: Unit 77 for DSi is among Ricardo’s faves: he programmed most of the drawing and physics engine for this game. 

On the team of 10 or 12 people, Ricardo was in charge of making part of the character control, the system of drawing models and particles, the collision system and movement dynamics. “The part of the lowest level in which I participated was the collision system with moving objects. A simple machine like the Nintendo DS has no assistance for mathematical systems, and everything has to be done step by step within the code”.  This part was the most fun for Ricardo, who enjoyed its mathematical complexity.

You’re on the second episode of our Team Spotlights series, so we assume you’ve been with us for some time, and likely heard of Mindkeeper: The Lurking Fear, that Apple Watch 3D adventure game - which is Ricardo’s most recent favorite project. Here he programmed part of the sound system. Ever been genuinely creeped out by in-game sounds? Get Mindkeeper here

One would assume there’s no time when Ricardo is *not* programming at least in his mind: but those moments exist, and then he enjoys watching documentaries on history or animals.