Anyone here a self-taught graphics programmer?

Recommended Posts

i truly started graphics programming at 15 or 16, when i was doing homebrew for the psp, and learned the gu, thus began my journey on learning how to program a graphical game(although it was still pretty heavy fixed pipeline, so i knew nothing of shaders).  than i used xna with the 360 for a bit, learned a bit about shaders, but it didn't click for awhile on what i was truly doing.  then i decided to work with openGL and learned shaders far more in-depth.  i don't feel anywhere near finished, i've seen tons of people producing far better than I.  but i have learned plenty enough that i can get something up and running in openGL fairly quickly.

Share this post


Link to post
Share on other sites

My first hardware accelerated application was a MS Word document!  No kidding!  Before I get to that, let me tell the story of learning to use opengl in basic, assembly and then C, and yes in that order.  In early high school I played around a lot with qbasic and was writing simple wireframe 3d mazes with horrible performance.  I didn't have a C compiler, so I started playing around with debug.com, and started writing little assemly language routines to speed up certain slow things in basic.  Debug sucks, it can't even do labels, you have to specify the exact jump address. You literally have to write JMP 0x322 and hope you put some code at 0x322.  So I wrote a qbasic program that reads in assembly source with labels, strips them out, runs it through debug with dummy addresses (JMP 0x1234 or whatever).  It looks at the redirected output of debug to see what address the assembler said it was using for each line, figured out the labels, and then reassembled it a second time.  It was so cruddy.  While I was doing this, I also got involved in a high school robotics program called Botball, where you programed lego robots in a language called Interactive C.

 

Back to graphics.  I wanted to try using GL, but like I said, I didn't have any compilers.  MS Word 2000 had a built in version of VB, called VBA.  It turns out VBA can load and run functions from DLLs (scary), so I wrote a word VBA macro that loaded system32.dll, and called the function to get the application's window handle.  I played around with GDI, and got to draw dots and lines onto the word document window using only the win32 api.  So then I loaded opengl32.dll.  After crashing word several times, I managed to get a textured quad on the screen, put there by the video card!   I then shortly discovered that the Windows DDK for Window 98 came with a FREE COPY of MASM.  So I started writing programs in the psychotic mix of dll's written in MASM that were loaded into MS Word's Visual Basic.  A teacher at high school saw what I was doing, and gave me a copy of Borland C++.  I was able to apply what I learned about writing PC programs in MASM and Basic to what I learned in Botball's 'Interactive C' and from there everything took off.  After I finished highschool, I did EECS at UC Berkeley, and now I do software for a living.

 

I'm so glad visual studio has free editions.  I would have free loved visual studio as a kid.  Ubuntu would have also rocked.  Kids today can access this stuff so easily now.

That's the difference between you and me: I learned programming to let me make video games so I can put my ideas in an interactive media. You learned it simply for the joy of discovery and making software work. As a byproduct, I've learned that, too, but I don't know if I will ever get into as deep passionate as programmers like yourself. It's just funny that I'm learning the same stuff that others in the game industry take paths in learning, anyway, so I suppose I may be as passionate as people like yourself. I sometimes think I'm just a man using programming as a tool to get something done, and I believe that to be the case as it's a means to an end.

Share this post


Link to post
Share on other sites

just a hobby?

Thought I have a degree in CS and got in touch with OGL there, I really do only learn the basics of graphics programming at university. Never got the chance to learn it as teen (amiga wasn't the 3d work horse), but later on loved graphics programming and learn it by internet research and reading lot of articles.

 

I do it as a living for tri-Ace, where I work on this engine, primarily on graphics and optimizations.

blink.png Really great work !
 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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??

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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".

Share this post


Link to post
Share on other sites

My first computer was later than most, in 1997. My parents were too blue-collar to have ever needed a computer in the mid-80s to late 90s so mainly it's been PC-based architectures for me :)

 

I have self-taught myself C++ and C# programming in general, starting in 2005, and eventually gotten more fond of doing more graphics programming. Prior to that I was making web pages in HTML and PHP. I actually got my Bachelor's in Art, and specialized in electronic visualization (my current job title is website developer). That said, I did take some CS courses, but it wasn't enough for me to get a minor in it, and I had already spent almost 6 years in college by then. It did help me fully understand object-oriented programming.

 

The programming journey has been an on-and-off-thing for me. Six years ago I picked up OpenGL and found a lot of intermediate-advanced topics overwhelming. I made a simple 3D pong and abstract space shooter, and then went back to 2D graphics. Two years later I tried out DirectX and got farther ahead this time. My newfound knowledge in object-oriented programming made things easier. I finally built a small engine (or should I say, framework) with which to load models and textures with and it used my .obj parser. 

 

After that I decided to delve into a new language. For me the language of choice was C#, as it was supported by XNA and set out on a goal to get a game on Xbox (which is still ongoing). Things picked up a lot since then. Although XNA was higher-level than native DirectX, it let me focus on learning and applying more complex features, and currently working on an engine alongside a game that uses it.

 

It's still a tough road ahead of me. I didn't take any classes on multi-variable calculus, statistics, and whatever linear algebra I had to understand, I picked it up along the way. A lot of technical papers on rendering techniques sure sound interesting, but half the time the math goes over my head. I'm not sure exactly how I will enter the game industry, if at all. I would like to get a C# programming job, but breaking into a new language professionally feels a lot like getting your first programming job. They usually already expect you to have done it at a previous job. Closest I got was for a junior C# Unity programmer job, but I lacked enough experience for it.

 

Also, despite my web profession, I don't really do anything with Flash or the newer real-time web APIs like WebGL. Perhaps down the road I will try to marry the web programming and game programming realms in some way.

Share this post


Link to post
Share on other sites

My degree is math with a minor in computer science. I fell in love wiith graphics programming when I was doing simulation work for a defense contractor. I started off using DirectX and learned OpenGL on my own. I am completely self taught, with a lot of help from these forums. I never had a mentor so I am always wondering if what I did was really the correct way to do it. You will have to get used to doing a lot of online searches for tutorials/examples. The graphic APIs (DirectX and OpenGL) move at a fast pace. I am in awe of people who are able to keep up with it all. I was in gaming for 12.5+ years and now I am back to simulations.

Share this post


Link to post
Share on other sites

I became interested in programming from a lab manual on how to build and program a Z80 (spectrum) computer/embedded system on my engineering course. Later I took a course on graphics during my CS degree, however 90% of what I learned about games and graphics was self taught. I had to do a lot of trial and error to overcome problems and simple errors in code, I actually have a good mathematical foundation - although putting it into practice while learning C++ was a problem, because it was hard to tell at first whether the bugs were caused by my own math, a bug in the code, or a crappy driver. So I froze the real math out of my head until I had improved as a programmer, then later started to apply myself to solving math problems again (and the extra calculation work helps a lot). My current job as a gardener pays peanuts and is 10x as demanding 1/10x as well paid as working as a programmer was.

 

Share this post


Link to post
Share on other sites

No studies for this dumbass. At least nothing game programming related. Like many here, started screwing around with QBasic when I was 14 or 15, but quickly replaced that with Delphi after I felt in love when seeing Delphi on school. My dream was to be able to make a Final Fight like beat 'm up side scrolling game. Never managed to make that one unfortunately, but along the way I picked up a lot from OpenGL examples, and later on shaders.

 

Although not working in the games industry, I became a programmer for a living, mainly doing industrial and vehicle applications. Not exactly comparable with writing game engines, although those years of experience certainly add up in approaching things professionally. You'll never be able to learn "everything" and do things perfect, but the key to success is just practicing A LOT I guess, and following your heart. Currently making a horror game together with artists in my free time.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now