Anyone here a self-taught graphics programmer?

Started by
127 comments, last by ritzmax72 6 years, 2 months ago
I wrote my first game on the ZX Spectrum some 29 years ago. My friends were busy swapping cassette games to try and beat each others' scores and I would borrow them to amaze myself at how they programmed it.

I then went on to write my first "3d game" on the Sinclair QL which was a copy of a golf game called Leaderboard - didn't get past the 1st hole but it taught me all about trigonometry, no graphics libraries in those days - sin/cos tables were better as lookup tables back then rather than calculated (if u had the spare memory),

I then wrote several games on the Amiga, even publishing one on licenseware which had great magazine write ups (still got the Amiga Format mag somewhere).

Then onto PCs with a very early version of DirectX, which was mind-blowing compared to what I'd used before. Always self-taught in the early days, but now I just seek the assistance of the friendly experts on here. I work in an investment bank for my day job and it's nowhere near as much fun.

41 now and still tinkering with my engine and enjoying it as much, if not more, than when I was burying my head in the Amiga Hardware Reference manual trying to get a sideways scroller working in DevPac assembly in the early nineties.

For those younguns among you who think it's just a phase you'll grow out of.... It ain't!
Advertisement

LONG time lurker, just figured I'd post here to say that I am/was. I actually learned quite a bit online, especially from people's forum responses and guides (Even from L. Spiro, really).

I started making a pretty neat engine that incorporated actual 2d and 3d technology (think a mix of raycaster that swapped out to a voxel-like engine), and then I was offered a job doing high load database transactions for a backend payment processing company (Services ADP, Wells fargo, Etrade, Bank of america to name a few), working on extremely high performance databases in the performance lab, and took that.

Now I'm a Chief technical lead for a multi-million dollar piece of software, and I'm only 24.

I guess what I'm saying is, don't try to just be a graphics programmer, try to get your feet wet with general programming concepts, because quite frankly, working as a non-game programmer is going to pay much more, and give you much better hours.

As for a degree, I got a BS in CS, which helps getting an entry level job a LOT. But if you're good at what you do, then it doesn't really matter. Also, as soon as you get 1/2 a year of experience under your belt, no one cares about your degree.

My boss (The CEO) has a Masters in business from Harvard, and he didn't care at all that I have a B.A in computer science from Devry. He cares that I can get the job done well, and direct the development team.

I am kinda both, since I am finishing my degree next year, but in "Computer systems and programming", and I am starting graphics programming courses in two weeks from now. But everything related to graphics programming I learned on my own. And it's fun, I don't do it for money, but I want to soon (i am worried about this idea since it's hard to find a job dealing with graphics programming in my region :< ).

About picking the material, first I decided what I want to do. After that I used google. I found simple tutorials (just to get the idea). Then I found about GameDev, whenever I am stuck or confused, people here always help me, they are very kind and understanding. Will even give you interesting pointers and new ideas :) Remember that with programing, arts or any other field you need patience, it's key to everything :)

Wow, Rob! That is an inspiring story! I, too, grew the most when I was thrown into an experienced team as a youngster. But let's start at the beginning:

It's 1985, East Germany is still strongly separated from West Germany, and it's still some sort of self-proclaimed democracy with nothing but the best in mind for its people. But some of its ideas were indeed genuinely well-minded - it mass-produced a little hardware board called the Z1013 - an 8bit processor with 16kb of RAM - with the intent to make its people comfortable with the technology and to grow a new generation of technic affine people for its economy. The state didn't last long enough to reap the fruits of this endeavour, but the idea was surprisingly smart and long-term. I was 6 years old at this time, my dad brought home one of these computers, and simply left his twin sons alone with it. We played on it, we watched our father code for it, and soon we picked up coding for ourselves. After all, getting new programs for that hardware was a matter of knowing the right people and copying their tapes, so we were stuck with the boxed software for a long time.

There came a BASIC with it, and we did put it to use. In school we just started learning the first letters, at home we wrote the first simple programs. Without knowing a word of english, that also came along with the years. When BASIC wasn't interesting enough anymore, I even picked up machine code, writing my programs by putting hex bytes directly into memory and then losing it all at the next crash. I knew the meaning of the Carry and Overflow flags in my sleep, without knowing what the words mean.

Then we switched to a 4Mhz IBM compatible PC that the GDR cloned from some west technology, only to be overtaken by the turning of seasons and the fall of the eastern countries, where this precious technology suddenly turned into outdated trash. And we manipulated its character set to get some crude version of per-pixel graphics :-) But the times were new, everyone was excited to live in a new bright feature, only to learn that the humans on the other side of the fence were just humans, too, and with a surprisingly large amount of condescending assholes. There seems to be a constant percentage of these in any human society, but at times of the Cold War both sides at least tried to hide those, to give a better image to the opponent :-) Sorry for the derail.

Then we got an Amiga. Or better: our family bought one, but soon the only two people using it were my twin brother and me. We sure played at lot, but we also started coding with the Amiga BASIC that came with it. Side note: Amiga Basic was developed by Microsoft. We soon hit the limits of this programming language, and via some strange channels found AMOS, a basic dialect specifically for games. What an enlightment it was! We coded a lot of crude games for it, one of it we even tried to sell as Shareware, only to upload it for free after a few months and <10 units sold. Does that make me indie?

At some point we visited an exhibition for which our hardware dealer organized a trip, only to come back with StormC for ~300$. An C++ compiler and an IDE, so incredibly simple when compared to even the most basic text editor today. But to us it again marked the beginning of a new era. No more Copper List hacking in asm code fragments because that new shiny C language thing was so incredibly fast! It's a good thing that we didn't knew any coder forum back in 1997, or else there would be public witnesses for our method of learning. E.g. randomly trying both . and -> until everything clicked into place over the years. Then we also coded a successor to our shareware game, sporting a single player campaign and local multiplayer coop and deathmatch, which took us 4 years and finally reached the light in 2002. We sold an incredible amount of ~800 units, which was indeed a success when taking into account the devastating state of the Amiga at that time. Even today I still earn ~50$ per year from it :-)

And gradually we faded over to the PC. For example, somewhere in 1999 I started assembling my helper classes into a cross platform game framework that works both on Amiga and PC/Windows, and it still serves me well in 2013. That Amiga game we published got me an internship in a professional game development studio, where I arrived feeling like a veteran and left feeling like a rookie, but yet I grew tenfold smarter than before. And even today, after two other jobs in software engineering and 10 years more, I'm still learning new things every day. I love my profession.

To stay at the thread topic: I wrote my first racing game using line shaped height maps in AMOS in 1995, I wrote a few software voxel renderers in 2001 or something, and I grew with the PC hardware from S3 Virge upto shader-based everything today. It's a beatiful place to be in today, as long as you have the time to bury yourself in front of your computer. Everything else comes freely and abundantly to you.

Yet I don't envy the young people today - the inspiration to take up coding of today comes in masses of shiny trailers with orchestral soundtrack made by dozens of highly qualified people. It must be hard to keep your faith against this. Back in my time I was excited by a few flat shaded polygons, and my only thought was "I can do that, too".

----------
Gonna try that "Indie" stuff I keep hearing about. Let's start with Splatter.

Another Rob with a very similar story to Rob....

I started out in the 80's with BASIC on the speccy, progressed to z80 asm, transitioned to C and the Amiga, then had a brief hiatus when I went a bit nuts for fine art, and then went to uni to train to become an animator. After graduation I moved into the games industry, and then quickly moved back to programming (mainly because the artists tools were crap, and I kinda needed what needed to be fixed and had enough programming knowledge to be able to do it). Spent 10 or so years in the games industry focussed mainly on animation and rendering engines, with a splattering of art tools here and there. These days I'm doing R&D on visual FX within the film industry....

Most of what I've learned has either been self taught, or just simply by picking up fellow co-workers tricks and tips. Read anything and everything. Talk to as many people as possible (including artists!). Try out as many techniques as you can, and don't forget to have fun whilst you're doing it!

We soon hit the limits of this programming language, and via some strange channels found AMOS, a basic dialect specifically for games. What an enlightment it was! We coded a lot of crude games for it, one of it we even tried to sell as Shareware, only to upload it for free after a few months and <10 units sold. Does that make me indie?


And if anyone wants to see what AMOS could do back then, here was my licenseware release (someone somewhere obviously liked it enough to post a video of it on youtube!):

http://m.youtube.com/#/watch?v=_uZVQmJaqeI&desktop_uri=%2Fwatch%3Fv%3D_uZVQmJaqeI

People have stated that I sampled the yelps and shrieks from IK+, cheeky gits, it was actually from a famous film, no prizes for guessing which one..... Am I allowed to divulge that now??
Warning: Life story coming up: smile.png

I am completely self taught. I come from a British working class background where university wasn't even mentioned to me when I was at school. I had a bad time at school thanks to bullying and undiagnosed dyspraxia, which makes me clumsy and gives me poor handwriting. Most of the time at school my teachers fixated on my writing and awkwardness rather than the contents of my work.

I was pretty depressed during all this, and developed a kind of prison mentality towards school, where my only goal was to get through the day without trouble. Learning became something I did for myself at home, according to my interests. So I developed the self-taught attitude early on.

After I left in 1993 ( I am 36), I ended up in horrible, soul destroying menial work while I struggled to teach myself to code. I always knew I was a creative, intelligent person despite everyone around me who seemed to think that working my way up at mcDonalds was my best hope.
I struggled massively with confidence issues surrounding maths in particular, but the hardest thing was getting hold of programming information and keeping my computer up to date. In the 90's most of my knowledge came from programming articles in magazines.
I still think that if I had better access to tools and books I could have got a game development job in the Amiga era, instead of struggling to learn how the blitter worked by reverse engineering the Blitz basic compiler using a demo version of a disassembler off a coverdisk!

Maths was always a problem for me. I have no native ability at all, but by just grinding away and finding the right books I have made enough progress to convince people around me that I am good at it!

I work in business web app development at the moment coding in Java on Linux servers. Before that I was a director and lead developer of an early mobile gaming company I started with two friends. We were ahead of our time really. Our games were good, but we didn't make any money.
In my spare time I am working on an iPhone game, and I am planning a 3d PC/Mac game after. I also have a lot of writing on game design that I am working on.

My goals are either to make it as an indy or for my work to get me a job making games. I want to work for a smaller studio ideally. My background isn't really compatible with the machinations of corporate HR.

So , some advice from a loser smile.png

If you can go to university, do it. I hugely regret that I was unable to do so. I really feel that I missed out by not being able to come of age in a university. Honestly, sometimes I feel like my whole youth was just worthless struggle. Its not just about knowledge which you can pick up anywhere. The opportunities are here too. You are unlikely to hook up with people with relevant interests or tech venture capital on a f*cking housing estate.

Try and find mentors, people who are better than you who are willing to teach you and help you out. This was something I really craved when I was younger.

Cultivate an entrepreneurial spirit regarding getting things done, learning etc. always keep what you want to do in mind and don't get sidetracked by bullshit beliefs regarding what kind of person is supposed to do a thing. Your desire is your permission! If you can't do the above two things, then this is essential!

Study the lives of cool people from different eras. I find its easier to relate to Leonardo or Plato than modern success stories since their backgrounds are so alien they never become an issue.

I studied a lot of philosophy over the years, western and eastern, and I practice meditation in a secular context. This has helped me by enabling me to really get to the root of confidence issues and all manner of harmful beliefs surrounding intelligence, social background etc.

If you are studying maths, get many books on the same subject. Maths books are often really really bad and make all kinds of poor assumptions about what you should already know.

If you get stuck, be analytical about it. Dont tell yourself "I am stupid, this is a sign I'm not meant to be doing this" etc. etc. Thats all crap and it will derail you. Slow down, break things up and try and pinpoint the moment difficulty and unknowingness appears in the train of thought.

Just finished work on Antigen for iPhone and iPod Touch - www.richardjdare.com

Yes and no.

I've got a formal mathematics education (and degree to prove it) but I've never had any formal programming/computer science training.

To be honest, the maths is the tricky part, you don't need to be able to do it, you just need to understand the concepts, once you've got that down the code itself (excluding optimisation) is relatively easy.

I started programming when I was a teen, but it's only when 3D accelerators (PowerVR, 3Dfx Voodoo, Rendition Verite, S3 Savage, nVidia TNT...) became widely available that I made my dive into 3D, and only because I wanted to make a breath-taking, living environment, and there was no freely available engine that could match what I wanted.

Took me years to learn by myself, today it's much better with the internet and a lot of literature available, but at first I was almost drowning in the middle of an incredible lot of things (algorithms, API, GPU, CPU, cache, memory allocation/management, BRDF, BSSRDF, photons...) to be learnt. At some point though a few things started to make sense and things went into forming a picture becoming clearer and clearer. [Although, in truth, the more you know the more you realize how little you do.]

I also got the chance to work in a very talented team at Funcom, and it was a blast, in the short time I spent there I tremendously improved. Working with great people has an amazing impact, it's like your brain is blooming ; It's an experience I sincerely wish to everyone. (There's a downside though, working in team of average people feels like suffocating to some extent. sad.png )

I'm currently working on algorithms for upcoming hardware in a GPU company.

I think it would be great to make a list of books we think are really good in our area of expertise including a note about why and which level of expertise is required to read them.

-* So many things to do, so little time to spend. *-

I am self taught as well when it comes to graphics. I started about 2 years ago learning OpenGL, just by reading books. Books and experience are really the best ways to get into graphics programming. I'd say the hardest part for me was the mathematics. I hadn't used linear algebra or calculus in years, and all of the sudden, it's taken for granted that I know how to solve a system of linear equations or integrate a function across a hemisphere. So it takes some time to get back into that mindset, but once you do, it all starts flowing back.

I am now in the process of creating a vector-based map application for my job using OpenGL ES on the iPhone, and I am developing a game and a level editor in my spare time using DirectX.

Some of my favorite books are:

http://www.amazon.com/OpenGL-Shading-Language-Cookbook-ebook/dp/B005GV32H6/ref=sr_1_2?ie=UTF8&qid=1359742043&sr=8-2&keywords=opengl+4.0+shading+language+cookbook

http://www.amazon.com/Introduction-3D-Game-Programming-DirectX/dp/1936420228/ref=sr_1_1?s=books&ie=UTF8&qid=1359742126&sr=1-1&keywords=frank+luna+directx+11

http://www.amazon.com/Real-Time-Rendering-Third-Edition-ebook/dp/B007COYODQ/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1359742054&sr=1-1&keywords=real+time+rendering

http://www.amazon.com/Mathematics-Programming-Computer-Graphics-ebook/dp/B0051GJIRO/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1359742092&sr=1-1&keywords=3d+mathematics+for+computer+game+programming

http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323/ref=sr_1_1?s=books&ie=UTF8&qid=1359742104&sr=1-1&keywords=real+time+collision+detection

These should more than get you started in the "3D world".

This topic is closed to new replies.

Advertisement