Michael L. Farrell

Who I am

I got my first computer at age 14, I didn’t have an Internet connection until about two years later. Internet forums and communities at that time were not that advanced especially for game development. I basically learned from the CDs that came with the playstation underground magazines, that if you wanted to make PlayStation games needed to know C.

I made it my personal goal/quest at that time to learn how to program in C. I saved $300 and purchased codewarrior with a student discount, the same compiler that professional developers used to compile PlayStation code. What nobody told me was that CodeWarrior for Windows was very different than the PlayStation SDK, and that trying to run a compiler that required 64 MB of ram on a 16 MB machine was a disaster.

I tried reading the “learn c++” PDF book that came with CodeWarrior, got about one chapter in and then decided to skip to the end to find all of the “cool game programming” stuff, but instead was presented with extremely boring examples on printing out tables using “cout”. Frustrated, I quit reading it. Then, I created some blank win32 projects within CodeWarrior, and hit build. After the 15 minutes it took to compile (16 mb of ram, remember), I was presented with a blank white window and the words “hello world”. When I read the 100 plus lines of complicated win32 C code, and realized all of that code was necessary just to create a blank window, I became very discouraged.

Over the next year, similar experiences trying to learn DirectX/Direct3D led to the same disappointment, as the CodeWarrior compiler would take 30-60 minutes to compile directx code, and then the examples would usually crash my hard drive losing all my files.

About one year later, I got on the Internet and discovered that there were C compilers available for free to download that ran on the simpler DOS instead of windows. I downloaded the GNU DJGPP compiler and a number of add-on libraries, one of which was called Allegro (a game library). The simplicity of the Allegro library (and its wealth of tutorials and learning material), finally made it possible for me to learn simple C programming with graphics. I could write and learn programs that were under 30 lines of code, that would create, draw and animate 2D sprites, lines, polygons, text, etc. Programs that were far more advanced and simple than the directx stuff I attempted to learn earlier. I learned how to draw a Sprite on the screen, before I learned how to use a for loop or put &&’s in if statements.
Just about everything I learned about C and game programming stemmed from this resourcehttp://www.glost.eclipse.co.uk/gfoot/vivace/vivace.txt

Over the next few years, I wrote a number of simple games, and started branching out. I made the jump from C to C++, allegro to SDL, SDL to SDL+OpenGL, Visual studio, Xcode, iOS, and so on.

Looking back, I’m not sure if I ever would’ve gotten started without the Internet. However, I will say with stark conviction that programming is a self-taught trade. While other people can get you started, there is no way you will ever be able to spoonfeed or lead someone entirely through the process. The best you can do is give them a pat on the back, and point them in the direction of the materials to get them started. The only difference between a good and a bad programmer, is that the first one is an extremely persistent stubborn learner, and won’t give up for anything. He will “make it work”, and you can’t teach that.

Who I’m Not

I’m definitely not a game artist, at least not a very good one.  I recognize looking back that many of the games I’ve developed have been eyesores at best.  If you are an independent game artist and are reading this blog and would like to consider a collaboration, please feel free to contact me.

One thought on “Michael L. Farrell

  1. roshan

    Sir I learned a lot from your videos about both C/C++ language and programming. Please write a book . I am from India, and in many developing countries your book/e-book will be a big hit. Please also make make espresso-C with SDL and OPENGL and DIRECTX, for WIndows platform.

    I specially liked your approach of skipping too intricate things for later. Thats very good way of teaching. and also making some topics only and only when context arises is a wonderful way to learn in casual manner.

    Please do consider the suggestions. Many dedicated beginners are waiting for this kind of PRACTICAL PROGRAMMING BY MAKING GAMES.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>