Advertisement

Anyone here a self-taught graphics programmer?

Started by February 01, 2013 03:29 AM
127 comments, last by ritzmax72 7 years ago

I am a self taught programmer.. i used to go to internet cafe's to learn about D3D (DX7-8) cause i had no internet at home. I got my first computer when I was 16 and coded up a car racing game using the Turb C++ and VGA drivers. My interest on computer games has been on and off, until I started working full time on CAD and a 3D rendering engine for a reputed french company.

Having said that, and trying my own bit to build my own graphics engine, I still find the total amount of work for a single developer extremely overwhelming. Although not impossible.

What if everyone had a restart button behind their head ;P

I started working with graphics back in 07 working on the Nvidia SDKs and Maya 5. Moved up to programming a decent graphics engine that i'm pround of. No formal training, outside of highschool programming classes.

Airlight is looking for game developers
Advertisement

I started teaching myself C++ when I was 14 (poorly!), and then learned QBASIC, where I made my first game.

I went back to C++ with a vengeance, and "got" it.

Then I moved on to modding HL2 and experimenting with DirectX 9.0c. I bought a book by Frank D. Luna called "Introduction to 3D Game Programming With DirectX 9.0c A Shader Approach", and I convinced my high school to let me do my own thing for two hours a day ^_^

So, I spent the next year going through graphics books and doing small projects. I came to college, and found myself burnt to a crisp. I took a year off of graphics because I simply couldn't focus on any of it anymore.
As soon as I was able to stare at graphics code and not get a foggy head I dove back into it, and now I'm a second year majoring in CS (learning about things that aren't graphics grrrr) doing my own personal projects.

Overall the experience feels so rewarding. I can't imagine not having the nights of staring at a book trying to understand how to make things appear on my monitor.

I'm a self-taught C# and C++ programmer. I've been using computers since age of 8 and I started learning programming at the age of 13. At the moment, I'm 15 and I'm very much comfortable with C++ and I plan to stick with it. Of course I've not covered every aspect of the language and I'm still learning it.

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

I've followed about the same path, except for using a C-64 instead of the Spectrum. I used to copy pirated games to check out the demos I don't think I played most of them.

I also developed a few demos of my own, I loved raster (and later copper) effects. I also created a nearly complete BBS program that was similar to C-Net.

Later I moved onto the Amiga and developed a few demos, but was never able to put everything together into a game. The jump from the C-64 to the Amiga was a huge jump in understanding software and hardware.

I moved onto dos and 16 bit consoles, and created more elaborate demos. After reading a few books (Gardens of Imagination and some of the Andre Lamothe stuff) I started to grasp the big picture items needed to put a game together.

After getting a game development job, and moving to C++ as my primary language (everything before was assembly, and some initial basic stuff), I started focusing more on the form and function.

I also finally put together my own engine, and now I'm enjoying the experience of getting it to run on different platforms. Surprisingly enough, I don't hate the layout of the code. But, I've taken the time to refactor, when needed, or scrap something if it didn't work.

Check out Super Play, the SNES inspired Game Engine: http://www.superplay.info

My dad brought home an Apple ][+ ( 48k of ram! ) christmas 1982. He knew COBOL, and taught himself BASIC, and taught my sister and I when I we were 13 & 12. He made a program with 'for loops' that cleared the screen horizontally. Then I changed it to make it vertical, then diagonal. Then I made a sort of tron-light-cycle game. The next year I met another kid at my school who knew basic. I had started learning assembly, so we hooked up and made some very innovative half-finished games. We even did digital audio recording through the cassette port & playback through the speaker.

We each made flood-fill routines, and also fast 14x14 sprite renderers, and a complete Ultima 3/4 type RPG engine.

I got an austin computers 286 16mhz pc in 1988, and taught myself x86 assembly & EGA/VGA low level rendering. I made a 3d voxel engine in 1992 all in assembly. All assembly was really hurting my productivity but MS Quick C was confusing as hell to me. When a friend taught me Turbo Pascal, I was in heaven, and I shipped my first complete game, Hubie in 1996 using Borland pascal & inline assembly. That same year I saw a 3dfx voodoo prototype, and started to learn more 3d. Soon after, I learned Direct Draw, Direct 3D 1 & 3, then started at nvidia, learning direct3d 5/6 and gpu programming in general. Over the next few years I was in the right place, time & role to innovate in a number of graphics areas, such as per-pixel lighting, attenuation maps, shadows anti-aliasing, etc.

One thing that I did a lot was to lurk in game & graphics programming forums. I've found need a long gestation period to really grok something, so that helps me by seeing something repeatedly over a long time period. Then I can connect new ideas with old things I've read about or done. Another thing I'm learning about myself is that my most innovative periods are tied to meeting and working with new people, so I recommend meeting with like-minded folks.

Advertisement

I am also trying to learn directx myself . The path is not smooth. I am doing it as a passion and would love to do it for a living. I have been at it for three months. With no mentor it is really tough. I am a cse student. But don't get the wrong idea. In our country graphics programming is discouraged. And I am really starting to think that I am the only directx coder in my country. I am bothering a lot of people in gamedev.net . But I can't help it . To learn it fast I took up a term project that needs to be completed within 3 months. It involves creating a moving character . None of my teacher can help me and have no idea about it . But I am not ready to give up. In spite of all the discouragements and rude behaviours I am carrying on. Everyone is so fixated on opengl. I would love to get some help on DirectX and other theories of graphics. Currently I am trying to import a skeleton rigged in maya . I imported it but when I apply it in an hlsl file the model just disappears. Anyway trying to debug it with visual studio 2013. If any one is willing to give me some pointers on this , I will be forever in debt.

Hi,

I'm self taught!

Started when I was 13, went to College, and then University, got bored (AKA dropped out), then worked as an accountant..

Then decided to start my own software business, which has been fairly successful over the last two years.

I think the best moment of the last two years was when I managed to poach a client from a company who I had interviewed for about 2 and a bit years ago. It was only a small support contract, I think about £150 a month, but if felt pretty good smile.png

After leaving university, it was insane how hard it is to get any kind of software work without the degree. I would literally have worked for nothing, and yet larger companies are taking on Univeristy leavers at £15,000 - £22,000 per year.

At any rate, I've decided to use a mix of people. We have one experienced developer, my self (half sales, half server programming), and a 17 year old apprentice.

I tell you what though, the apprentice works twice as hard. I don't think any medium to large companies in the UK are taking on younger kids to program, and I think it's the best way. Their cheaper, they work harder and they respond positively the more responsibility they get.

If you can harness that drive at 16/17/18, I think my company can make some amazing software engineers.

They say it take 10 years to master something, and fairly often you see amazing 17 year old dancers/pianists etc. but programming isn't seen in the same light. Most of the people who applied for the apprenticeship had no experience on the CV, but were 5/6 years into programming.

I'd encourage any other software houses on here to have a think about it!

To get back to the question:

I think when you first start learning computer programming, it's very difficult to extrapolate into other languages. It takes a while before you can spend half a day with a new framework/language and just start writing code. That's one challenge.

The second, and most important is the Business side. It's so much more important. You can be the greatest programmer alive, but without any business sense, or knowledge your doomed to stay on the lowest levels. If you can't speak to a client and know business jargon, make business suggestions etc. you really can't progress beyond being intelligent labor.

I know many computer programmers, those that are successful, are good communicators. As much as we spend a lot of time translating our thoughts into programming language, that code has to be translated again to English/French/German to explain the concept to customers/players/users or else it's pointless.

It's like anything, if you can't communicate your ideas, there's little point having them.

Hopefully my story is strange enough to be interesting.

My first computer was a ZX81, but I didn't really get into programming until I got an Acorn Electron in my teens, which had a better version of BASIC than any of its rivals and an inline assembler, which was a huge help. I wrote a few games in a mixture of BASIC and assembly that were published in Electron User magazine and helped reduce my student overdraft. What I liked about those days was that you could learn everything you needed to know about the computer in just 3 books, and one of those came with it. And I miss looking forward to the magazine through the door every month instead of reading all the computer news online.

I made the mistake of studying Electronic Engineering at university, instead of Computer Science or Mathematics. It did give me my first experience of C though. I remember reading C For Programmers by Leendert Ammeraal in one evening, and being one of the only people to come up with something approaching working code for that course project. At the end of my course I fell ill with ME/CFS, anxiety and depression, and I've never recovered enough to get a proper job.

I managed to scrape enough money together for a used Acorn Archimedes a year later and eagerly learnt ARM code, but I knew C was the way to go and eventually managed to afford a hard drive and the official C compiler - the RISC OS port of gcc was considered inferior in those days. The first complete C program I wrote was Bombz, a free Sokoban-style puzzle game. I also wrote some PD non-game software and tried to earn money by writing some educational software etc, but the platform was dying and that avenue was a big failure commercially.

I had to upgrade to a PC in 1998, but I hated Windows, and still personally use it as nothing more than a glorified games console, so I became a die-hard Linux user. I didn't do much game programming for a long time, except to rewrite my Bombz game in python with a graphics makeover. Then mobile gaming sprang up and now great things are happening in Linux gaming (Steam) so there might be an opportunity for me after all. I did yet another rewrite of Bombz for Android (Java with OpenGL ES 1.0 for rendering).

Now I'm writing a game loosely based on a very addictive old Archimedes game, but with 3D rendering. I've chosen to use OpenGL (ES) directly instead of a ready-made engine so that I can do all my development on Linux with familiar tools and also support Raspberry Pi as well as PC Linux, Windows and Android. Hopefully iOS and Mac too one day, and if Mac OS X isn't too awful I might consider using Unity3D :-). I've had a quick look at jMonkeyEngine and three.js, and although I discounted them on portability grounds, they helped give me an idea of the typical architecture of a 3D engine.

so many different approaches... i am a beginner but i want to drop my two cents, esp. considering university.

i had a couple of pascal classes in high school... but our teacher mostly showed us toy story and took smoke breaks. there was one student teaching himself graphics programming but it was greek to me. this was around the time of doom ii, so it must have been mode 13h awesomeness.

in college i chose to study computer science partly because i wanted to be in a band (i know, right) and figured that science-ing computers was something i could do on the side to support my music... kind of like waiting tables and acting. of course, that was infinite dimensional nonsense.

the other part of it was a picture of a programmer i saw in next generation magazine... it was the issue about working in the industry. if i remember correctly, the programmer section showed two guys from sega and a bunch of big crts and cigarettes. i didn't know anything about money so i asked my mom if they listed pay was any good and she said yes. so, the only magazines i read in high school were guitar world and next generation and i guess i combined them into a psuedo-realistic plan and moved 600 miles away to see what would happen. now that i am thinking about it, i wonder whose sega office that was... would be funny to meet them.

college was a disaster. i was so unprepared for the rigor of an engineering program it wasn't even funny. i was, however, prepared to live in a big city and really squeeze the juice out of (non-academic) life. i took one computer graphics class and spent so much time dealing with memory access errors that i didn't really learn anything about the topics at hand, bicubic patches and subdivision being the only two i really remember. i also had a game programming class where i did approximately nothing (found sound effects) though my group's game got chosen for the IGF. my name got removed from the credits because i was such a horrible slacker. i failed out of college twice, the second time because i got a 'D' in game programming because i slept through the final.

while i was bumbling my way to a 1.9 gpa i often thought about switching majors to psychology or joining the army but i was stubborn and didn't make any changes. i liked my non-academic life, playing a lot of guitar and watching a lot of milkdrop. i didn't know

after i failed out the second time (five years in, one class short of graduating), i worked at a mexican restaurant and then a pizza restaurant. out of nowhere, a friend of a friend was looking for somebody to help with a mobile game startup. basically, they were making an excitebike clone for motorola flip phones (J2ME). we had no idea what we were doing, but i did make a little bit of sprite art and use mappy. i also blatantly copied a scrolling tile engine from some fly-by-night J2ME book. the highlight of that experience was calling up cingular and going into what felt like the lion's den to show their head of game acquisition our masterwork, JET SKI CHALLENGE. in addition to crashing in the middle of the meeting, the game was also pretty bad.

after about two months of that, we ran out of money and gave up. unbelievably, that experience, that big ball of mistakes, was enough to land me an entry job at a television company working on retro game emulation. i knew approximately nothing about emulation, except late nights spent with nesticle, but they were willing to teach. i started out doing rote plumbing work to get other people's emulator code hooked up to other people's gamepad code. things really blossomed when they hired the author of the main N64 emulator... he wasn't a graphics specialist but knew all about the processor memory internals and i thought that was the bee's knees. meanwhile, working on other people's games had given me the bug to get my own graphics on-screen. at the time, gba homebrew was really popular so i read the great TONC tutorials, bought a multiboot cable, and got the celestial seasonings bear flying around the screen on the real hardware. the real hardware! i can still remember how that felt. i tried and failed to learn graphics from NeHe and drifted back towards playing music. i was still doing neat things at work, learning about cps2 video hardware and how the music code picks songs in frogger (seriously) but the emulator company folded, and i was back at square one again.

i spend the next six months learning about idleness (literally, there are books on the subject, the situationists in particular were great) and trying to do the most impractical things i could think of. i went to coffee shops and practiced topcoder problems, i took long walks nowhere, i spent a lot of time wandering around libraries.

another emulator company popped up by by that point i realized that i want to make movies, not fix vcrs. at the urging of my roommate, myself and two others started a game crew... one was an artist and one was a programmer who liked the tools/infrastructure side of things so i mostly did gameplay and physics code, powerup deisgn and level design. that was a ton of fun, and i started to use LOVE2D to make little demos. sometimes arcade games, but more often what i called "mind portals" and my girlfriend called "screensavers"... silly approximations of the two-dimensional vfx i loved, just a grab bag of trig functions and color motion. i eventually tried to make a plasma, but got advice (from eddie lee / illogic tree, whose work i had just discovered) that maybe it would be faster if i didn't use lua (i was drawing a 1x1 rect for each pixel). so i was goofing around with graphics on the side while we worked on our ios action games.

anyways we fell apart, one to art school and one to salary jobs, and i was at the beginning again again again.

but, that's where i am now... i am striking out on my own. on one hand, the thought of working on not my own ideas makes me want to vomit... on the other hand, i am envious of all the stories of great mentors and growing (and typing this out made me realize the boost of working with the emulator authors).

i love art and motion and these crazy light-machines... i think ryan geiss hooked me for life... i'm so far away from expressing what is in my head but i am going to keep on keeping on.

going forward, i am going to try to learn the hardest thing in my purview. because there is likely something hard beyond that that i don't know about and i think that people rise to the challenge, no matter what. personally, i think i'll always be in the bottom ten percent of the pool but if i keep moving from one pool to the next it will sort of work out. i guess practically, i want to avoid internet tutorials and blog posts... introductory books... anything that seems accessible. i am too old late to the game to be learning with kid gloves.

anyways, long story short, i didn't start programming young and i didn't do well at college and my projects are sort of hit-or-miss so far but i feel like i am living in a magical dream world, even (especially) when nothing is making sense and the screen is black and why isn't this thing...

p.s. i loved the talk about clicking every file in windows... that feeling, so similar, used to stay up at night and dial random 1-800 numbers to see what was on the other end...

This topic is closed to new replies.

Advertisement