My name is Francis Joseph Serina and I’m a Software Engineer by day and Indie Video Game Developer by night.
I graduated with a bachelor’s degree in Computer Engineering from the University of the Philippines Diliman, class of 2008. I started venturing into video game development in 2009 starting with Adobe Flex. After building Tetris and Pong, I moved to C++, which I found ridiculously hard. My games then were built in Windows Command Prompt using system(“clear”); for redrawing the elements. Though inefficient, I was able to create the classic game Snake. I studied OpenGL through books bought from Amazon. Again, coding everything from scratch is tremendously difficult and one would cry tears of joy to get a black window open after coding for 2 days. Later on, I found Unity3D and everything suddenly became faster. At that time, it was still version 2.6. I followed the Lerpz 3D Platformer tutorial in the website which was enough for me to understand how the system works.
I started teaching in the middle of the school year of 2009 at Philippine Science High School – Main Campus. I taught Program Logic Formulation using C++. Later on, I showed my students what can be done in C++ by demonstrating Serpiente (Spanish for Snake). In the following school year, I opened a Video Game Development elective teaching C++, OpenGL and Unity3D. Unfortunately, the C++ game development and OpenGL is simply not fun at the high school level. At the end of this school year, we had the first Interscholastic Integrated Science Olympiad where the challenge of the Computer Science and Technology Unit is a programming puzzle game called EED which was inspired by a childhood game called The Lost Mind of Dr Brain.
In 2011, I joined the Manila Game Jam (MGJ) hosted by IGDA Manila. The MGJ, part of the Global Game Jam (GGJ), is a networking event where the objective is to create a video game in 48 hours. The theme then was Extinction and that game jam gave birth to Lasers & Bugs. A couple of months later I was hired by Gameloft Manila to work on a couple of projects. During my stay at Gameloft, I realized that teaching was my passion aside from making video games. After 6 months, I left and taught at the, formerly called, University of the Philippines Information Technology Training Center (UP ITTC), which was renamed later to UP IT Development Center (UP ITDC). My application was timely since the last and only game development teacher just left for China and there are students currently enrolled. When I applied to teach video game development, they immediately accepted my application and I started teaching the week after.
Initially we built the games without a framework in C++, making us OS-dependent. We had a simple Game Loop just to understand the different modules of redrawing elements, updating the logic, and getting user input. The first projects were Snake and Dodge the Asteroid. The next step would be to add multimedia and have a more robust and platform-independent framework. We used Simple DirectMedia Layer (SDL) for all multimedia handling. At that time, SDL 1.2 was the latest stable build available for all platforms. We redid snake and dodge the asteroid as a class activity and built a C++ framework around SDL called GD4N, which stood for Game Development for Noobs. The project then was Tetris. Afterwards, we went to 3D and had case studies for OpenGL and SDL such as FPS-like movement and height maps. Before leaving UP ITDC, I created lecture materials to be followed by the succeeding game developer teachers. From time to time, I am requested to handle a short course on video game development on Saturdays.
Eventually, I returned to Philippine Science High School – Main Campus to teach Computer Science and reopen the Video Game Development Elective. In Feb of 2013, I joined the MGJ again where the theme is an audio file of a heart beating. From this, I created my first endless runner set in a blood vessel called cholesteRUN. This game garnered the People’s Choice Award. A couple of months later, I joined the board of IGDA Manila and became the Chairperson. Around this time as well, I was contracted by the Game Developers Association of the Philippines (GDAP) to help propagate video game development by teaching future TESDA trainers.
As chairperson of IGDA Manila, we held various monthly meet ups where people can freely attend. The meet ups were mostly 1-2 hour seminars discussing topics ranging from design patterns, 2D art, monetization, cross-promotion, etc. On Feb 2014, I participated in the MGJ as an organizer rather than a developer. Personally, I was sad for not participating but happy to see that we’re getting more and more participants each year. Not to mention that 3 of my current students actually joined and presented their games to everyone.
At this moment, I noticed that the programming that I’ve been teaching for the past 2 years have barely evolved. As for game programming, I’m still using the same materials I created 3 years ago. I had to admit to myself that I’m getting outdated and I will soon be obsolete. I find it a great disservice to the community for teaching the same things in similar methods for the past years. I simply have to upgrade. Therefore, I decided to resign from my teaching position, as of May 2014, to become a student once again.
I pursued a Masters in Computer Science in DigiPen Institute of Technology in Redmond, WA. There were 4 major tracks for MS CS students: Graphics, Physics, AI, and Computer Vision (CV). The first 3 were directly used in video games while CV is used for a variety of fields such as photo editing, facial recognition, edge detection, and a lot more. In my opinion, there’s a lot more opportunities in emerging technologies than just video games. This means that Computer Vision is a more viable track if the objective is to work in a technology company than in an entertainment one. Well, that’s just me.
After DigiPen, I was employed by Autodesk and lived in Pittsburgh, PA to work on Autodesk ReCap – an amazing tool to merge, annotate, and share point clouds from laser scanners. My tasks included migrating the desktop app from Qt 4 to Qt 5, desktop-side of project transfer workflow of the ReCap for mobile to Recap for Desktop, aside from the usual code base maintenance. I worked for Autodesk from May 2016 to Feb 2018.
While working for Autodesk, I was developing my simple indie game for mobile – Glow with the Flow. Though financially unsuccessful, I am proud to claim that I have shipped a game on my own.
After Autodesk, I moved to Plantation, FL to work for MagicLeap. I am part of the Unity SDK team which creates the Unity3D API plugin for unity developers to create apps that work with LuminOS. Our team is also responsible for creating examples and preliminary documentation.
While working at MagicLeap, I developed a couple of personal experiments. I was experimenting with Compute Shaders in Unity3D and implemented my own 2D Realtime Fast Fourier Transform. The code is public and available here. I was also experimenting with C# Interoperability with C++, aka C# Marshaling. I have a work-in-progress project here.
And I welcome you to my nerdy blog!