Anyone here a self-taught graphics programmer?

Started by
127 comments, last by ritzmax72 6 years, 2 months ago

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.

New game in progress: Project SeedWorld

My development blog: Electronic Meteor

Advertisement

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.

I started with the ZX81 when it came out, initially BASIC and some minor modifications to game program listings before I accidentally started learning and using assembly, on Z80 then 6809 and 68K. Later on I got a part time job with a company doing programming whilst at University doing Physics (C along with a load of esoteric stuff like Relayed-ladder-logic), but I got hooked on experimental physics research and ended up doing that for the better part of a decade, continuing to program and do graphics rendering for visualization at work, and for fun at home.

It was a great experience to start with learning on my own how to render a line in 2D, then polygons with those lines in 3D and so on. As a physics researcher I was able to use SGI machines, and so learned Iris GL, then when the 3DFX appeared on scene played around with their API Glide. When the NVIDIA TNT came out, along with a great OpenGL implementation, I started moving much of our code over to PCs which saved us lots of money - and I saw the huge change which was coming to consumer graphics so jumped ship and made a shareware game (C++ with OpenGL and OpenAL).

That game landed me a job in the games industry, where I eventually took on graphics programming then lead programming roles before ending up as a head of a medium sized games studio, before moving to Germany to run Crytek's engine department. More recently I worked at Intel in their Game Developer Relations department, but I'm now back as an independent developer making my own game.

It's an exhilarating business to be part of. Those of us old enough are lucky to have started learning before the complexity and abstraction of graphics APIs appeared, which makes it hard to really learn rendering if you're not disciplined enough to keep to the basics until you master them. But on the other hand the internet is such a great research tool - I can remember having to get on trains to go into the nearest city or large town so as to search through libraries and bookstores for something with information, or by hand disassembling code to figure out how it worked. Nothing beats just learning by doing, though if you can go to University then do so as being around loads of intelligent people roughly your own age is just amazing.

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.

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.

Wow this is a cool topic! I joined up just to post this.

I learned graphics programming when I was in 10th grade or so. mostly because it seemed like everyone on IRC was programming games back then. So I started off with some OpenGL tutorials.. which led me to look into the OpenGL redbook, Windows API, X11 Libraries, etc. Sooner or later I was going through the Doom and Quake source code trying to understand everything line by line. After enough of that, it just started to click, and I put together a homegrown physics engine, rendering engine, and some basic multiplayer code. Resulted in some "tech demo"-like games back then. When I hit college, I went a completely different (and non-technical) route, only doing non-game programming on weekends as a hobby.

Then after about a decade, I began picking it all back up again... but the landscape is completely different now from back then. People are using C++ instead of C, forward rendering is out, immediate rendering is out, fixed function pipeline is out, so I had to relearn most of the stuff from scratch, again. On top of that, there are new priorities now: multicore, async, mobile, crossplatform. The only thing that has seemingly stayed the same for the most part was Win32 API (and even now, that seems like it's on its way out with Win9).

The beautiful thing about learning game programming these days is that resources are everywhere, from beginner to expert level, the modern internet has it all.

Now here's a bit of unconventional advice, but also the best advice I can give. To get good at graphics programming quickly, really throw yourself into the deep end; and the deepest information comes from looking at high-quality (professional and production-level) source code. So once you have your basic syntax principles down, just choose a good graphics library, choose an interesting section, and go through it line-by-line until you understand _everything_ about it. Then repeat. This approach is probably the most grueling, but it'll get you there the fastest. If you can't do that, the second fastest way is literally reading and memorizing documentation.

Like I said, it's unconventional wisdom, but it has worked really well for me and for everyone I know who has tried it. I only have a limited amount of time to work on this sort of thing, but I feel my grasp of these technologies is pretty deep. If those approaches don't work for you, then you'll have to settle for the conventional approaches: trying to code a bunch of projects, and (the slowest) reading and learning from tutorials. These last two approaches are probably the easiest to do as a beginner, but learning that way is generally really slow (there's a lot of boilerplate and overhead to learning those ways).

Oh and to answer your question: I do it (mostly) as a hobby. I'm working on a game engine built from the ground up with high-level bindings for easy prototyping and high mod-ability.. and also I'm incorporating a bunch of neat "cutting edge" tech from articles and papers I found interesting.

I like the stories here, keep em coming. I guess I ought to contribute mine at some point but for the time being I've pinned the topic :)

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.

although i have formal training (software engineering, OSU), almost everything i learned about game graphics i learned on my own. I stared a long time ago, 1988. no directx, no 3d vidcards. mode 13 was the hot ticket back then. it was all about party on the bitmap. everything home rolled. early skills invoved learing to blit, bressingham's line drawing algo, etc. skills were picked up online, usually from compuserv's gamedev forum. and from the bible: foley and van damm. if you got into 3d you became intimate with names like neumann, sproull, foley, van damm, and sutherland. Then came directx, 3d vidcards, and everybody and their brother thinking they know how to build games and writing a book on how to do it. the books are a good way to get up to speed quickly, but all it is someone explaining the poor docs to you.. and although the docs suck, there's no substitute for understanding directx, or open GL as the case may be. evrey time i restart my game company i always do the same 4 test programs: console app hello world, fullscreen d3d hello world, draw a triangle, and turn everything on (aniso, mips, lighting, etc). usually takes about a week or tow to get it working, depending on the available references on hand. the first time it took a month or two. nowadays, i use the directx docs, and online forums. I have over 50 gamedev books in my library but never use any of them. about the only books i wish i still had were my calculus book (for rotation about an axis formulas), and my physics book (for stuff like impulse and momentum formulas). and that info can also be found online.

yes i do this for a living. I'm probably the last of the lone wolf developers.

Norm Barrows

Rockland Software Productions - Building PC games since 1988

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

I started graphics dev towards the end of 1983. My Acorn Electron tapes had all stretched out from overuse, so all my games were broken. This encouraged me to read the basic and system programming manuals (at that age, I didn't really comprehend that writing software was different to playing a game -- I thought that everything done on a PC was a game :-) ). I wrote a few half baked games (the first one was a lunar lander type - partly pulled out of code samples written for the BBC Micro), and then a few ground up little games.

I got my first x86 PC in 1986 (4.77mhz FTW and a Hercules card, no HDD), and started with GW Basic, and then later on Pascal, C and Assembler. At some point in the late 80's to early 90's, I had an epiphany: I don't really like making games at all, I just like to play them -- what I really enjoyed was making cool graphics via code (for games or otherwise). Through a bunch of BBS's and friend's sharing coding "secrets", I got involved in the Demo Scene in the early 90's, which fitted my interests perfectly. I wrote some software 3D renderers (386 DX no-FPU era), a bunch of old Mode X type special effects, etc. I remember those days fondly: every year from 1986-2000, I would see a new effect, or feature that I had never seen before, or even imagined possible (my imagination was possibly, a bit limited :-) ).

Then I did a degree in Math and CS, which was pretty cool, because it helped a lot of the math I was doing fall into place. Then I did a PhD in CS (graphics/computational geometry), and worked in visualization and VR for a few years, and then I spent the better part of a decade at NVIDA.

Now I work for a hedge fund. Go figure. :-)

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.

hah, thats hilarious, I started my programming journey on the psp as well, though at first i didnt use the modified gl library up front, instead using wrapper libs like OSLib to make small games, But then i moved to the pc and started making more complex games, eventually learning shaders and picking up linear algebra when I could
-Jawshttp://uploading.com/files/eff2c24d/TGEpre.zip/

This topic is closed to new replies.

Advertisement