{"id":16095,"date":"2020-02-28T16:43:45","date_gmt":"2020-02-28T15:43:45","guid":{"rendered":"http:\/\/abylight.com\/?p=8496"},"modified":"2022-02-16T09:20:59","modified_gmt":"2022-02-16T08:20:59","slug":"ricardo-fernandez-lead-programmer","status":"publish","type":"post","link":"https:\/\/abylight.com\/es\/ricardo-fernandez-lead-programmer\/","title":{"rendered":"Optimize everything! Team Spotlight: Ricardo Fernandez, Lead Programmer"},"content":{"rendered":"<p><span class=\"tve_image_frame\" style=\"width: 100%;\"><img class=\"tve_image wp-image-8490\" alt=\"\u25b7\" width=\"626\" height=\"355\" title=\"WhenYouMeetRicardo\" data-id=\"8490\" src=\"\/\/abylight.com\/wp-content\/uploads\/2020\/02\/WhenYouMeetRicardo.jpg\" style=\"width: 100%;\" srcset=\"https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/WhenYouMeetRicardo.jpg 626w, https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/WhenYouMeetRicardo-300x170.jpg 300w\" sizes=\"(max-width: 626px) 100vw, 626px\"><\/span><\/p>\n<p><strong>Previously on Abylight Team Spotlight: <\/strong><\/p>\n<p><em>Co-founder Alberto Gonzalez recognizes a familiar game dev company name on a door he knocks on,&nbsp; and asks if they need an artist. They happen to need one, so he joins the team, where he meets programmer Ricardo Fernandez &#8211; now our lead developer at Abylight<\/em>. &nbsp;<em>Read episode <a href=\"http:\/\/abylight.com\/es\/do-computers-kill-art-team-spotlight-alberto-jose-gonzalez-co-founder-developer-composer\/\" target=\"_blank\" rel=\"noopener\">here<\/a>! <\/em><\/p>\n<p data-css=\"tve-u-1708c120fc6\">Ricardo is no newcomer to all this computer stuff: he\u2019s been into it since childhood, and then &#8211; you\u2019re guessing it right &#8211; got a degree in electronics.<em> \u201cI\u2019ve 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.\u201d<\/em>&nbsp;<\/p>\n<h2 class=\"\" data-css=\"tve-u-1708c5f924e\"><strong>The Opportunity and Windowless Office<\/strong><\/h2>\n<p data-css=\"tve-u-1708c12288e\">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. \u201c<em>He knew a team in Barcelona making games for the French company of Infogrames,<\/em>\u201d, the developer recalls. <em>\u201cAnd 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.\u201d<\/em> This company was New Frontier, that same one Alberto was already at.&nbsp;<\/p>\n<p><span class=\"tve_image_frame\" style=\"width: 100%;\"><img class=\"tve_image wp-image-8477\" alt=\"\u25b7\" width=\"800\" height=\"533\" title=\"RicardoAlberto\" data-id=\"8477\" src=\"\/\/abylight.com\/wp-content\/uploads\/2020\/02\/RicardoAlberto.jpg\" style=\"width: 100%;\" srcset=\"https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/RicardoAlberto.jpg 800w, https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/RicardoAlberto-300x200.jpg 300w, https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/RicardoAlberto-768x512.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\"><\/span><\/p>\n<p class=\"wp-caption-text thrv-inline-text\">Ricardo and Alberto, showing the game &#8216;Bomb Jack&#8217; for Nintendo Game Boy<\/p>\n<p><span class=\"fr-placeholder\" style=\"font-size: 14px; line-height: 22.4px; margin-top: 0px; padding-top: 0px; padding-left: 0px; margin-left: 0px; padding-right: 0px; margin-right: 0px; text-align: center;\"><\/span><\/p>\n<p data-css=\"tve-u-1708c1246b7\"><em>\u201cI 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 &#8216;office\u2019.\u201d&nbsp;<\/em><\/p>\n<p data-css=\"tve-u-1708c1246b7\"><em>\u200b<\/em>So, why games and not electronics? Ricardo explains he didn\u2019t think too much at that time, and simply grabbed the opportunity that turned up: games seemed cool enough, and he hadn\u2019t 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.&nbsp;<\/p>\n<p data-css=\"tve-u-1708c1246b9\"><em>\u201cWhen we left this last company, we decided to try again with other partners\u201d<\/em>, Ricardo recalls. <\/p>\n<p data-css=\"tve-u-1708c1246b9\">This was already 2004 and Abylight.&nbsp;<\/p>\n<h2 class=\"\" data-css=\"tve-u-1708c5fbb5a\"><strong>Custom OpenGL driver for 3DS: fast to program and run<\/strong><\/h2>\n<p><span style=\"color: rgb(0, 0, 0);\" data-css=\"tve-u-1708c126416\">It seems like there\u2019s no programming task Ricardo can\u2019t 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\u2019s Ricardo\u2019s: <em>\u201cI like code optimizations, making things more efficient.\u201d&nbsp;<\/em><\/span><\/p>\n<p><span style=\"color: rgb(0, 0, 0);\" data-css=\"tve-u-1708c126418\">You know that kind of challenge, that puzzles even those who\u2019ve seen it all? And later takes its place on the developer\u2019s proudest moments. The OpenGL driver for Nintendo 3DS made in VEGA engine has been this kind of task for Ricardo. <em>\u201cIt cost me the most, and in the end I am very proud of how it looked\u201d<\/em>, the developer recalls.&nbsp;<\/span><\/p>\n<p><span class=\"tve_image_frame\" style=\"width: 100%;\"><img class=\"tve_image wp-image-8479\" alt=\"\u25b7\" width=\"800\" height=\"533\" title=\"ricardoAtWork\" data-id=\"8479\" src=\"\/\/abylight.com\/wp-content\/uploads\/2020\/02\/ricardoAtWork.jpg\" style=\"width: 100%;\" srcset=\"https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/ricardoAtWork.jpg 800w, https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/ricardoAtWork-300x200.jpg 300w, https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/ricardoAtWork-768x512.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\"><\/span><\/p>\n<p><span data-css=\"tve-u-1708c12641c\" style=\"color: rgb(0, 0, 0);\"><em>\u201cVEGA 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\u2019ve 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&#8217;s why we designed a new driver\u201d.<\/em>&nbsp; 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.&nbsp;<\/span><\/p>\n<p><span data-css=\"tve-u-1708c126420\" style=\"color: rgb(0, 0, 0);\">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 &#8211; but for a final game it\u2019s too slow.&nbsp;<\/span><\/p>\n<p><span data-css=\"tve-u-1708c126423\" style=\"color: rgb(0, 0, 0);\"><em>\u201cA 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\u201d. <\/em><\/span><\/p>\n<p><span data-css=\"tve-u-1708c126427\" style=\"color: rgb(0, 0, 0);\">The most complicated thing was to keep the CPU and GPU running in parallel for optimum performance. <em>\u201cWhen making our engine, we decided to create another version of this API, which would maintain the program&#8217;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\u201d.<\/em><\/span><\/p>\n<h2 class=\"\" data-css=\"tve-u-1708c5ff278\">&#8230;but does he ever google? <\/h2>\n<p data-css=\"tve-u-1708c127e11\">Everyone googles! Ricardo confirms he does as well. <em>\u201cI look up&nbsp; almost everything, I have a bad memory and usually make sure before doing it. :P\u201d<\/em><\/p>\n<p data-css=\"tve-u-1708c127e13\">When it comes to <em>learning<\/em> programming, Ricardo suggests considering optimization from the get-go.<em>\u201dMake 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.\u201d<\/em><\/p>\n<p data-css=\"tve-u-1708c127e18\">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. &nbsp;<em>\u201cSometimes I listen to some ABBA tunes.\u00bb<\/em><\/p>\n<h2 class=\"\" data-css=\"tve-u-1708c601d0a\">Final Fantasy (Game Boy), Don\u2019t Starve, and Elite Forces: Unit 77<\/h2>\n<\/p>\n<p data-css=\"tve-u-1708c1297c2\">Nothing shows a passionate gamer more than the confusion when asked to pick just <em>one<\/em> fave game.&nbsp; Ricardo also says he doesn\u2019t really have a single&nbsp; favorite &#8211; but if he absolutely has to choose, the favorite game of all times would be <em>Final Fantasy<\/em>, the first version for Game Boy. <em>\u201cRecently I like Don&#8217;t Starve, although it is not that new. It has very interesting graphics, but I die too much&#8230; :)\u201d<\/em><\/p>\n<p data-css=\"tve-u-1708c1297c4\">And every gamer working in gamedev has another aspect to the \u201cfave game\u201d definition: a title they\u2019ve worked on. <a href=\"http:\/\/abylight.com\/es\/game\/elite-forces-unit-77\/\" target=\"_blank\" rel=\"noopener\"><em>Elite Forces: Unit 77<\/em> <\/a>for DSi is among Ricardo\u2019s faves: he programmed most of the drawing and physics engine for this game.&nbsp;<\/p>\n<p><span class=\"tve_image_frame\" style=\"width: 100%;\"><img class=\"tve_image wp-image-8481\" alt=\"\u25b7\" width=\"256\" height=\"384\" title=\"elite-forces-unit-77_23\" data-id=\"8481\" src=\"\/\/abylight.com\/wp-content\/uploads\/2020\/02\/elite-forces-unit-77_23.png\" style=\"width: 100%;\" srcset=\"https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/elite-forces-unit-77_23.png 256w, https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/elite-forces-unit-77_23-200x300.png 200w\" sizes=\"(max-width: 256px) 100vw, 256px\"><\/span><\/p>\n<p data-css=\"tve-u-1708c1297c4\">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. <em>\u201cThe 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\u201d.<\/em>&nbsp; This part was the most fun for Ricardo, who enjoyed its mathematical complexity.<\/p>\n<p><span class=\"tve_image_frame\" style=\"width: 100%;\"><img class=\"tve_image wp-image-8484\" alt=\"\u25b7\" width=\"800\" height=\"450\" title=\"Mindkeeper_Promotional_03_alt\" data-id=\"8484\" src=\"\/\/abylight.com\/wp-content\/uploads\/2020\/02\/Mindkeeper_Promotional_03_alt.jpg\" style=\"width: 100%;\" srcset=\"https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/Mindkeeper_Promotional_03_alt.jpg 800w, https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/Mindkeeper_Promotional_03_alt-300x169.jpg 300w, https:\/\/abylight.com\/es\/wp-content\/uploads\/2020\/02\/Mindkeeper_Promotional_03_alt-768x432.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\"><\/span><\/p>\n<p data-css=\"tve-u-1708c1297c4\">You\u2019re on the second episode of our Team Spotlights series, so we assume you\u2019ve been with us for some time, and likely heard of <em>Mindkeeper: The Lurking Fear, <\/em>that Apple Watch 3D adventure game &#8211; which is Ricardo\u2019s most recent favorite project. Here he programmed part of the sound system. Ever been genuinely creeped out by in-game sounds? <a href=\"https:\/\/apps.apple.com\/us\/app\/mindkeeper-the-lurking-fear\/id1473252201\" target=\"_blank\" rel=\"noopener\"><u>Get Mindkeeper here<\/u><\/a>!&nbsp;<\/p>\n<p data-css=\"tve-u-1708c1297c8\">One would assume there\u2019s 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.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Previously on Abylight Team Spotlight: Co-founder Alberto Gonzalez recognizes a familiar game dev company name on a door he knocks<\/p>\n","protected":false},"author":1777,"featured_media":16096,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":[],"categories":[75,77,529,161,163,169,559],"tags":[637,553,125,127,259,111,555,149,181,557,561],"_links":{"self":[{"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/posts\/16095"}],"collection":[{"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/users\/1777"}],"replies":[{"embeddable":true,"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/comments?post=16095"}],"version-history":[{"count":0,"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/posts\/16095\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/media\/16096"}],"wp:attachment":[{"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/media?parent=16095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/categories?post=16095"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abylight.com\/es\/wp-json\/wp\/v2\/tags?post=16095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}