Hello Giorgio. How did you become a developer? Could you share your story with us?

My name is Giorgio Pomettini and my career path as a developer is unusual. As a child I was always fascinated by computers and their functioning. In fact, my first childhood memory is from when I was just three years old and my father put our first PC on a desk: it was a wonderful Pentium with 16 MB of RAM. This was back in 1995. I spent most of the day playing on the PC, but the only game I had was Doom and I got bored really quickly. One day, my father brought me a CD with a pirated version of Macromedia Flash 3 on it, along with a video course in Italian. I was ten years old and, finally, I was able to fully express my creativity. I was allowed to use the Internet for one hour a day, in the evening after 6pm, because the long distance calls cost less.

Through Altavista I discovered this website called html.it, with the tutorials in Italian and projects in Flash that I could open and modify. I began studying them, finding out how they worked and by copying and pasting pieces of code and graphical assets I managed to develop my first game: Basket. I exported it in SWF format, put it on a handful of floppy disks and sold it for 3,000 lire for a copy at my school’s market.

I decided that I wanted to turn this passion into a profession, but I was an impatient child and I refused to study the theory. I was only interested in doing whatever I got into my head and getting it to work, I didn’t care how. In the middle school I was bad at maths, so my parents advised me to go to an IT-focused secondary school and I opted for an arts-focused one instead. I wanted to continue developing video games, but developing more complex ones was beyond my abilities, so I started learning HTML, CSS, and JavaScript. I created some websites about my passions (video games, wrestling and computer science), and I started writing about what I discovered every day on a blog. I turned these hobbies into a profession. I started designing and creating websites for the groups I collaborated with. After a year, I’d put aside enough money to buy a Macbook Pro. I was more or less 18 and it was a huge milestone for me.

My passion for video games was getting stronger, but I also knew that programming them was complex, so after graduation I decided to enroll myself on the 3D graphics course at the Italian Academy of Video Games in Rome. I attended this course for two years, and in the meantime, I continued to work as a front-end developer for some Rome startups such as Gamepix and Canvace. I also attended the InnovAction Lab, an experience that completely changed my way of thinking. Once I’d got my diploma, I prepared my portfolio as a graphic designer and sent it to various Italian and foreign software companies. Nobody responded, except for a few people that were only looking for mid-level or senior figures. I was depressed and didn’t know what to do, so in August 2013 I got a book on the game engine Unity3D and started studying it. I hadn’t worked on any video game for years and I was surprised: it wasn’t as complicated as I’d thought!

I started making one prototype after another, got a license as an iOS developer and started compiling them on my iPhone. I attended the Startup Weekend in October that year and met one of the partners of a small software company in Rome called redBit Games. They were looking for game developers, so they interviewed me and in the end they hired me. This is how my first work experience as a developer began. I’ve developed two applications with them, both in Unity: Advent Calendar 2013, Easter Calendar 2014 and Caxi & Roll. The first one, to my amazement, managed to get over a million downloads during the Christmas season. I remember that I had the Google Analytics page open on the second monitor, and the number of active users kept going up, until it hit 30,000. I was delighted.

Later, I started working as a freelancer for clients such as Ticonblu and Interactive Project. I developed a video game for the blind – or audio game – called Audio Rally Racing, which has been quite successful in the United States.

Lastly, I worked in the digital agency 101% as a Lead Programmer on Fury Roads Survivor, a post-apocalyptic video game for iOS and Android inspired by the film Mad Max, which has been downloaded more than five million times worldwide.

In 2017 I chose to re-enroll to the Italian Academy of Video Games to attend the third year of the programming course. The course topics were related to C, C++, OpenGL, Unreal Engine 4 and many low-level libraries. It was probably the best decision I have taken in my professional career, from many points of view. It gave me all the theoretical knowledge and allowed me to complete my training as a programmer. I’m currently awaiting confirmation about a new job. In the meantime, I’m writing a lot of code in Rust and C, which are respectively my favourite languages after C#.

Which topic did you present at the #Aperitech meetups? What can you tell us about it?

My talk was about PICO-8, a “fantasy console”, so to speak, software designed to run on a mid-80s console that never existed. Its creator, Joseph White, was inspired by home consoles – such as the Commodore 64 and the ZX Spectrum – and all their limitations and strengths. In fact, this “console” has a screen resolution of 128×128 pixels, a palette of 16 colours, can create sprites with dimensions of 8×8 pixels, and is programmed in Lua. All this in a unified development environment where you can write code, create sprites, make maps and write music with 4-channel trackers.

Once PICO-8 starts up, you find yourself in front of a text terminal similar to that of the Commodore 64, where you can type commands similar to the ones in the Windows shell: dir to see the contents of a directory, cd to change folder and so on. With load and save we can load our “cartridges”, or the lists of our games, which can have a maximum size of 32 KB. Pressing the ESC button switches from the shell to the development environment, where with CTRL + left/right arrows you can switch from the code to the sprite editor, to the one for maps, sound effects and music tracker.

In order to better explain these concepts, I developed a little game the night before the presentation. It’s a sort of Snake where you have to eat the inside of a pizza without touching the edges. I especially enjoyed designing the icons for ingredients, as it had been a long time since I did pixel art. The source code is on Github with an MIT license, while the presentation is on Slideshare.

Once the development is done, from the shell you can run the command export nomegioco.html and it’ll generate an HTML page containing a PICO-8 interpreter with your game on. You can embed it on your site, on social networks and even have virtual keys in case the page is loaded on a smartphone PICO-8 is closed source, you can buy it at www.lexaloffle.com for $15 and it runs on Windows, Mac and Linux. I want to underline it that I don’t get a penny from its sales. If you’re looking for a free alternative, there are dozens of them: TIC-80, PX8, etc. One that I personally recommend – which is also free software – is LIKO-12.

Everything you said in your talk is super interesting, but how did you decide to talk about this specific topic? Do you have any other advice or tips that you would like to share with us?

As I said at the beginning of the interview, my background is unusual: I studied as a 3D artist and graphic designer, worked as a web designer and later as a programmer. I often jump from one discipline to the other and I have many interests besides computer science, like cooking and behavioural psychology. I like thinking of myself as an all-rounder while remaining first and foremost a Unity developer.

I’ve tried many libraries and game engines in recent years, from Spritekit to Unreal Engine, but PICO-8 is the one that remains closest to my heart. The community is wonderful, and there are many projects that you can open, take, modify and understand how they were made with all the platform’s limitations. In a way, it reminds me of when, as a child, I spent the afternoons fiddling around with Macromedia Flash. I also find that PICO-8 is a great platform for approaching game development if you’ve never done it before.

Lua is a simple language to write, that features-wise reminds me a bit of JavaScript and Python. Thanks to its limitations, drawing a character in an 8×8 grid is just the work of a few minutes, and moving it across into the game world is even quicker. Also, on Github there are already several functions for collision management or systems. On Medium and Youtube, on the other hand, there are excellent tutorials on how to get started.

Finally, what has been your experience of Codemotion?

I’ll end up this interview by thanking you and sharing a brief thought on how formative Codemotion was for me both personally and professionally. In January 2013 I attended the first Global Game Jam, a 48-hour marathon where they make video games, and I was lucky enough to meet many people who are passionate about this sector. Today many of them are not only my great friends but also colleagues, we have attended many events together, collaborated on several projects, and chatted for hours. The Global Game Jam was organised by you, Codemotion, and I really don’t know what my life would be like today without that experience. Thanks from the bottom of my heart, Andrea, Ciro, Chiara and Mara!

Three years later, with the AperiTech project, I had my first experience as a speaker. I’m an introvert, and it’s very difficult for me to speak in front of so many people. The first time was a disaster, but I feel I’ve improved over time. Again, I would never have had the possibility to deliver a talk without your amazing initiative.

Not to mention that thanks to the communities I’m the member of, namely SPVR, Rust Rome, Facebook Developer Circle Rome, ML & Data Science Meetup and Game Dev Roma, I’ve met so many smart people! Huge thanks to you too, Enzo and Beatrice!

And to all of you who are reading this interview and want to make video game programming your job, my advice is: experiment, play around, make prototypes, but above all make mistakes! Use the technologies you prefer and use the language you like the most.

If there’s one thing I’ve learned in the last few years, it’s that – in this sector – being able to finish developing a game, even a small one, counts more than anything else.