Anyone here a self-taught graphics programmer?

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

Entering my 5th year of development. I would say Im a mix. I was taught basic principles of programming by several mentors at the company I am at and then I was on my own when it came to DirectX so between tutorials on the web and trial and error I would say I am self taught in D3D11.....That said I am still very wet behind the ears. My graphics work is entry level at best.

Advertisement

I am - when I was young I think seven or eight my dad got me an IBM ATX/PC an old old monochrome pc which was remarkably slow. I have a uncle that was a programmer for McDonalds who got me hooked into programming. I started out with qBasic then moved onto Visual Basic 6.0 and some QuickC. There was a old graphics header file backthen and my dad got me some Windows Game Programming Books and 3D Game Programming Books - one was I believe The Black Arts of 3D Game Programming. I learnt how 3D rasterization works as in Wolfenstein style game. From the period from 18-28 years old there's a huge void in my life. Got out of that void and up til recently been fascinated more about how today games look realistic (almost).

I tested out UDK for a bit few years ago before I started to decide to work on my own game engine. At first learning C++ and DirectX it threw me for a loop. My brain was eager to learn as much as possible so fast that I would get overwhelmed and have outbursts. I believe Hodgeman told me to take a break for a while and just do more research. After a while of researching and going by my pace of speed - I would say I've learnt a bit but need to learn more. I think that from going from asking too much help and trying to figure out myself helped a lot.

I don't work for any IT job - I took one year at university online division for game level design - I didn't like it so I quit the education. I wasn't getting any fun out of it or anything. I wasn't being challenged enough should I say. I did see how schools work financially lol - get it---students loans!

So to finalize this whole post - recently, I've been taking my time - not bull rushing everything - just chilling. If I go head first into something - I usually get bent out of shape - so it's better to take your speed of pace like L. Spiro said. What I like to do is break it down in chunks to get a better understanding of things.

Game Engine's WIP Videos - http://www.youtube.com/sicgames88
SIC Games @ GitHub - https://github.com/SICGames?tab=repositories
Simple D2D1 Font Wrapper for D3D11 - https://github.com/SICGames/D2DFontX

I am a self-taught graphics programmer.

We had C++ as part of our course in high school (2005-2006). After getting bored of coding calculators, I coded some text based games and then tried a basic 3D renderer using high school maths, geometry and turbo c++ graphics (lines).

I bought my first PC in 2006 a P4 because I needed it to complete my TicTacToe game and cyber cafe were not cheap in those days. And It was hard to find good PCs with USB drives in cyber cafes in those days to install Turbo C++. After I bought my PC a devil (friend of mine) introduced me to PC games like Doom95, Doom 2 & Halflife 1 and I was transformed from a sportsman to a nerd within a month. I finally knew what I must become tongue.png As if distracting me over the whole year wasn't enough for him he gave me Doom 3 & HL2 just before final exams. Yes, he was a Monster.

2007 - After school, I took Computer Engineering course. During the first year I made some basic 2d games using allegro. Then I discovered a wonderful website called http://www.gamedev.net/, which helped me a lot in learning different aspects of game development including graphics. I always liked the graphics more than other parts of game development.

Since the 3rd year of college I started developing my own hobby engine (JustAnotherGameEngine) and still working on it. Current version 4 is based on Direct3D 11 and that's where all fun stuff happens.

So I passed out of college in 2010. Since then I am hopping jobs and working on small to medium sized games from over 5 yrs now. I have worked on almost all aspects of game development in the past including gameplay, graphics, ai, multiplayer etc.We don't have any hardcore game development in my country India so I never got the chance to work on any game that I can be proud of.

But I scratch that itch by working on my own game engine.

I made a tech demo 2 yrs back. It was a demo of all the different features of ver 3 of my engine excluding high-quality graphics or fancy shaders -

I am planning to make another Demo with the latest version of my engine whose main focus will be on graphics this time.

I don't want all of my hard work to go to waste, so I am still trying for an opportunity to get into AAA as a Graphics Developer.smile.png

P S - Once upon a time I ran Crysis on Pentium4, 1 GB DDR1 Ram & Nvidia 6400 on ultra settings and left it for an hour. Except few graphics glitches and slideshow gaming, everything was fine. After 60 minutes, my PC was still alive.

My Game Development Blog : chetanjags.wordpress.com


I coded some text based games and then tried a basic 3D renderer using high school maths.

I'm born and raised in the US. Say what you want about our "low test scores" (I'm a believer), but I can't stress this enough: much of the math skills you need are covered in the high school. I also went to public school, so I got the standard curriculum. We did all kinds of vector and matrix operations. We even covered basic concepts such as how to tell if vectors were orthogonal to each other. This brought me to the conclusion that much of the basics of 3D linear algebra is covered in high school. We didn't cover matrix transforms, or how to get the angle between vectors, but we knew how to multiply matrices, find their determinants, do vector addition, subtract, dot/cross vectors.

The big problem is that we didn't cover much of the concept, let alone the application, of these operations. So, we know how to calculate the dot product, yes, but did you know that value is the product of the magnitude of both vectors and cos of the angle between them?

NOPE!

We also learned very basic boolean algebra. You wouldn't know it from just school though, because George Boole, nor the term "boolean" was ever mentioned. We learned all of these seemingly useless skills. It's not like this stuff was relevant in anyone else's lives outside of my own, who already knew this stuff... Regardless of how well kids did on the test (many did quite well, IIRC), they'll forget about it later. Even I forget how quaternions work if I haven't needed to know the math behind them in months. All I need to do is get a refresher from Wolfram, and I'm all set. It's really not that difficult.

All of my friends who aren't programmers say that it's interesting, but the math turns them off. The thing is, they're just talking about programming in general. Just the act of "programming" itself is mathematically elementary. It's really what you want to do that determines the math complexity of your project. On top of that, they think 3D graphics are difficult to wrap their heads around. Ironically, just about all they need to know to get a jump on the math-side of graphics was already taught to them way back in high school.

I'd also like to point out that we also covered Bezier curves. This became relevant for me the year before I "learned" them.

I'm born and raised in the US. Say what you want about our "low test scores" (I'm a believer), but I can't stress this enough: much of the math skills you need are covered in the high school. I also went to public school, so I got the standard curriculum. We did all kinds of vector and matrix operations. We even covered basic concepts such as how to tell if vectors were orthogonal to each other. This brought me to the conclusion that much of the basics of 3D linear algebra is covered in high school. We didn't cover matrix transforms, or how to get the angle between vectors, but we knew how to multiply matrices, find their determinants, do vector addition, subtract, dot/cross vectors.

The big problem is that we didn't cover much of the concept, let alone the application, of these operations. So, we know how to calculate the dot product, yes, but did you know that value is the product of the magnitude of both vectors and cos of the angle between them?

NOPE!

I think I shouldn't have used the word "3D renderer" there. Basically, I created a sort of 3d looking scene based on my observation while playing games like F1 race, 3d scooter racing etc. It did it using turbo C++ gfx functions like line & circle and some crazy equations based on 2d geometry maths. Here's an example image (created in paint.net not actual screenshot) -

[attachment=28149:3Dsrc.png]

  • That 'T' was player object & we could move it right / left based on the input.
  • Roads had scrolling animation and I could increase/decrease width for simulating downhill/uphill.
  • Circular objects used to get bigger as they come closer.

I don't really know what to call it? Maybe "Hacky 3D wannabe simulation ?" tongue.png

Whatever it was, the joy of creating a 3d looking scene for the first time was beyond words.

This was done even before I studied matrices so yes there's no way I had the knowledge of transforms let alone 3d pipeline. I implemented a proper software renderer later in 2nd yr of college after learning about gfx pipeline n all. It was a wireframe renderer tested only with some simple objects like cubes, planes, etc.

Regarding Maths in School -

Yes, we were taught only basic operations on matrices like add/ multiple, inverse etc. No transformation and not even any hints on why matrices were important.

But we understood the vectors, dot & cross product and their uses. They were necessary even for physics problems.

I don't remember covering Bezier curves either in school or college, but I remember solving problems like given an arbitrary function graph and we have to solve for function equation using some basic trig functions (sinQ, cosQ, etc) but that's something more similar to SH I guess.

My Game Development Blog : chetanjags.wordpress.com

Whilst I do have a formal education in computing, all the graphics programming one has learned is self-taught from books by Andre Lamothe and Mike McShaffrey, and by following John Carmack after reading Masters Of Doom.

If its one thing I would recommend it is start small and experiment with 2D graphics before even thinking about 3D. Reason being is that your math skill can grow at a comfortable pace with your programming skill. You are also more likely to finish what you start.

Languages; C, Java. Platforms: Android, Oculus Go, ZX Spectrum, Megadrive.

Website: Mega-Gen Garage

well, i am more a generic programmer, than a graphics programmer. and also, i am a programmer, not specifically a game developer. i sometimes touching the game industry with my works, but nowdays i would not classify myself as a game developer.

talking from graphics - i used third party engines at first, but they was too buggy (just as nowdays), so i self-learned graphics programming with opengl 1.0 using tutorials on the internet. i was not a good programmer in C at that time, but i was still able to put together my stuffs relatively easily. at first, i not actually learned anything beyond my needs (~10 necessary opengl function to paint textured geometry), i just wanted to display the graphics i needed, but not cared about the features of opengl beyond that.

later i enhacned my knowledge a bit more, to cover newer technologies as my hardware (and as the market demand) become more modern (voodoo3->geforce4->radeon9800). my middle-scool math skills was more than enough, and if i need a formula, its easy to find it on the internet. later i started to design software renderers, becouse i was not satisfyed with the conception and compatibility of opengl, gpgpu and shaders.

I'm also pretty much all self-taught. I started toying with QBasic just about when it was on its way out, but then arbitrarily picked up this book and started feeling my way around the first IDE (the Borland one) and started learning more serious stuff. I remember arrays and the order of logic operators being strangely elusive when I just started out :).

Eventually I created my first window in WinAPI and thought "now that I have a window, the rest is easy-peasy". Boy, was I wrong :P .

Like many, I took up OpenGL with the help of NeHe's tutorials and continued reading books, all in my spare time, without really giving up a social life.

Eventually I found myself facing the same choice all people face when they graduate from high school. With no clear idea of what I wanted to do, I rolled in IT, with emphasis on software development. But then two strange things happened: as I took more and more courses, it turned out I knew too much for the school I went to, but too little to actually spearhead a sizeable project on my own; what was far more concerning was the feeling that I didn't want to labor away for someone else's dreams. So I graduated and rerolled in a completely different field, all while I started structuring my code into something a bit more cogent, which eventually turned into a something that started to smell like and feel like an engine. As a hobbyist, I find it surprisingly difficult to keep myself focused on a single objective, so pretty much all parts of my game engine are in very active development. Although, after years and years of rewriting and trying out different things, many of them are really starting to fall into place. Which feels awesome. :)

As time goes on, I do feel the sting of a lack of further formal education and the absence of the discipline of a professional work place in the back of my head. But I'm still not old enough to give up my dreams :).

So yeah - I don't have anything like L. Spiro's video to show for it, but what I can say with confidence is that I've studied and built a lot of stuff that I'm personally really really proud of. And again, that feels awesome! :cool:

I started programming on Extended Color Basic for Tandy COCO II when I was ~7 after browsing the computer's manual (They put programming information in manuals back then). Switched to QBasic on DOS and eventually Turbo C++ on DOS. Everyone pretty much used BIOS and OS interrupts to do anything useful in DOS.

It took me awhile to move to windows because nothing could produce fast graphics until DirectX came out, and DirectX 3.0 was a completely different beast in early windows 95. I'm highly amused APIs like Vulkan are coming around because I remember DirectX 3.0 having an immediate mode where you created command ques and similar ideas but they decided to move away from them in 5.0 (Never had a 4.0 DX).

I do programming for a living now on AntiVirus software and as a hobby. I guess I've been programming 28 years in general and probably about 22 in C++. I had no schooling, just picked it up on my own.

My short story:

In the late 90s I was introduced to the demoscene by my friend and instantly became interested in graphics and low-level programming. I made a couple of software rasterizers and ray/path tracers and finally moved on to 3D acceleration, first using OpenGL but later every major API. I learned (and always learning more) from tutorials, sample code, GDC and SIGGRAPH papers. I mostly make my own renderers but also use Unity and Unreal. My major personal project is my engine that I generally rewrite every two years or so and the current iteration is not very far yet as I'm learning Vulkan and D3D12 while developing it. At work I have developed graphics code both for mobile and AAA games/engines.

Aether3D Game Engine: https://github.com/bioglaze/aether3d

Blog: http://twiren.kapsi.fi/blog.html

Control

This topic is closed to new replies.

Advertisement