This is the second part of a series of articles on my thoughts on creative process. This time I’ll be talking about my personal experience learning computer programming and electronics. You can read the first part here.
Atari 800XL
In 1983 Atari released the 800XL computer. Some years later, it became the first computer I ever used. Atari BASIC was very simple to learn. It was the best way to tinker with computers as a kid, messing with programs listings and trying to make interesting graphics.
Enlarge / My resident Atari kit sitting on my desk in my home workshop
8 Bit processors are very interesting. They are very simple in design by today’s standards. The limitations at the time made programming a lot easier in some aspect, even though you would program on a much lower level than with programming languages most used today. Peeking and poking memory locations directly. This was my introduction to computers and programming. For me using a computer already meant programming and creating, not using it passively to consume data the way computers are most used for today.
Enlarge / Analog Computing. We used to type those program listings by hand.
Programming, production pipeline and workflow
I studied programming for about a year, dropped out and went on to study 3D animation, putting code behind me. Funny thing is, while working in 3D animation, I realized how programming, or more precisely scripting could make my life so much easier. There is a lot of repetitive work in production and I would always script something to make my work go faster. I got obsessed with optimizing my work, to the point that years later, making CGI was not even on my mind anymore. The ultimate goal was to make the production of CGI more efficient.
I ended up working on 3 different assets managers and tracking softwares in my technical director career since 2006. Assets managers and trackers are interesting pieces of software. They are used to track your assets, schedules, communications, versioning, etc... during production. When you build a software like this, you really need to find the best way to optimize not only your own work, but also the work of anyone else working on a project. It require a lot of design on paper before doing anything at all, which is something I am not used to. One thing I do get obsessed with is finding the best workflow to work; it’s very meta in nature since the tool I’m designing can also help me work on the tool itself better. Eating your own dog food in software development is always interesting. I think for non devs to understand what software development means there is many book that touch the subject, but one that I enjoyed a lot is “Dreaming in Code”.
After working in 3D animation for a decade you realise that some people think they can choose not to be technical for some reasons. I heard so many “artists” say that they “don’t want to be technical”. If you are working on a computer all day long... it’s your tool. You need to know some basic things about the inner working of your tool. Painters know how their brushes work, they know how to clean them and keep them in good working order. Know your tools. My quest for a perfect asset manager and tracker was really to make the perfect tool to work, finding a way to work as fast as possible.
Putting it all together, Midi to Atari
I think that sometimes you need to have a clear idea of what you want to build and design. Sometime you might not have the exact skills needed for a particular task, but you can learn those skills. In 2013 I build a Midi to Atari Controller. I wanted to make music with the real, pure sound of an atari computer and I came up with a solution that was pretty neat using and Arduino controller. Arduinos are easy to learn, and you can do pretty much anything you want with it.
Enlarge / Totally staged picture of electronic stuff in my home workshop
Here is how I came up with the idea and my thought process. I wanted to make chiptunes for a game project on my Atari 800XL. When you have a goal with a lot of unanswered questions it’s good to look at it from afar and break it down to solve all the possible problems one by one. A midi controller for the Atari 800XL means the following:
- A way to send Midi signal to an Arduino board (electronics)
- Process that signal on the Arduino (software)
- Send that signal to the Atari somehow (electronics)
- Process that signal on the Atari (software)
Programming with the 1980s Atari Basic was just not practical, so I started working with OSS “Action!”. It’s a programming language that looks and work a lot like C. It’s much easier to work with.
The way the whole thing work is simple. The Midi controller send a Midi signal that the Arduino read in serial. It’s a command, a note and a velocity. The Arduino then send a signal to the Atari using the two controller port. Using 8 inputs at the same time I could send 8 bit simultaneously. First the command byte, wait, then the note byte. Probably not the best way to do this but it worked! The Atari would then use the command and note to play back a tone. I wanted the synthesizer to be polyphonic and used all four channel of the Atari to play the same tone but with different pitch. This made for some interesting interference noise.
Midi to Atari in action, and the badly writen sofware I made in Action! being compiled and run.
When I learned electronics by myself I didn't know what to do with that knowledge, but I was so glad that I knew some basic stuff when I started working on the Midi to Arduino board. Also I can fix a bunch of electronic stuff at home now, turns out soldering skills is actually pretty useful.
Game development
I apply the same process when working on my game. The same kind of situation happened when I was trying to figure out how to make the game work with shadows and real-time lighting in 3D. If I have a problem, what can I use in my current skills set to solve it? It might not be the best solution, but if it works, it works. I can always go back to it and fix it later, but at least I got things done and had a result really fast. You should just do something, get something done, it doesn’t have to be perfect, but by working on it you might get new ideas and make it better later. Find the best way to do something really fast, because the faster you can make it, the faster you get a result, even if it's not perfect, at least you made something. It’s always better than doing nothing.
Working in 3D animation for such a long time then working on ways to optimize my work made me realise how much I loved programming, but I also missed making visual. I worked on a short film for a while, but ultimatly making a video game was always on the back of my mind. Making games seamed a lot harder back then, at least it was not as easily accessible as it is today. Now most people who play games know about engines and Unity or Unreal, the fact that there is tons of indie devs is common knowledge now. So I just took a chance, working on my small project, but did I? I knew how to make it before I started working on it really, I tried to figure out the best way to build my game, the fastest way. It still took 2 years at this point, and it's not done yet!
In the next article I will talk about my creative process more in detail, how to be a one man team, being multidisciplinary and what I think it mean to be creative in my opinion.