Anyone here a self-taught graphics programmer?

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

Your question brings back many memories.

When i turned 9, my parents bought me a Sinclair Spectrum computer. It was not much,

but it helped me to understand the basics of programming. It was then when i learned to

create and optimize algorithms.

I then started plotting points on the screen and then i learned how to draw circles and

squares. It was the start of my journey in the beautiful world of programming.

I just recently started studying IT, first year at the University of Computer Science, but as

expected i aced most of the classes.

There's still much to learn and a lot of experience to gain, but (0, 0, -1) is the only way i know!

Good luck!

Advertisement

I guess it's true for most graphics programmers, as in the undergraduate CS courses, it just teaches entry-level CG theory and programming, unless you do MSc/phD in CG, but I believe very few of us here actually did.

In fact, even you do MSc/phD papers in CG, it's virtually no difference from self-taught, either.

I'm self-taught too.

And here goes my story:

First time I saw 3d when I was 13, on PlayStation's (first gen) game "Armored Core: Master of Arena" in year 2000, then was Benchmark "3DMark 2000". Funny that I was so naive to think that by pushing buttons I can control that cool helicopter in the demo :D

But that was it, I tried to learn C++ but failed, couldn't even compile simple "for" loop example for some reason... I've done some programming stuff in the university but it wasn't even close to graphics.

I graduated in 2010 as an "Information Security specialist". By this time I realised that this profession is unacceptably boring for me. And I decided to become a programmer... in game industry... having almost no skills for it, and probably no talent. Damn, even simple arithmetic is challenging for me some times :D

But still I wanted to be a game dev. After 3 years of PHP, JavaScript, Objective-C, usage of several frameworks and countless numbers of failed and matched deadlines I finally got a position in mobile game project as a frontend developer in a small company. Game (and company) is called "Bombsquare". Idea was simple and ambitious: it was supposed to be a 2D MMO on the global world map and I was literally the only programmer of frontend team! I was so engaged, I was seeing the code while sleeping :)

I learnt much from the framework source code (Cocos2D-ObjC) and even tweak it to my needs (which hit me back later, of course). And all this knowing almost nothing about math or OpenGL or any shading language. Just poking things and finding out if I can do what I want with the framework. But more important: I did game dev and I got paid for it!

We've released couple of versions but it was already obvious that the game won't shoot because of mine lame code optimisation skills and lack of proper game design... Kind of depressing combination...

Our company took an outsource project, called "Bloom tunes", child game, based on drawing and sounds. It was another round for me and Cocos2D which this time end up pretty successful!

During this project I learned more about OpenGL, triangulation and... well... math :D I finally started to revise, revive and relearn my university linear algebra skills :)

Game itself strike in couple of countries which I was very happy about, even tho I got nothing from it except of self-esteem lvl up :)

Later there were several more 2D projects using Unity and C#. Again, I was the only developer for most of them. Again, roller coaster of fails and wins...

I also took a year course of Maya modelling, animation and VFX to get the bird fly high overview, so to speak :) And studied 3D animation in pretty famous animation studio in Russia. But when I found out they pay too low even to seasoned animators I quit :D

Now I'm learning foundation of 3D rendering technics (shaders, shadow rendering approaches, procedural content generation, ray tracing and so on) and looking for some projects to be useful to :)

All this stuff looks completely terrifying and overwhelming at first glance, but bit by bit the picture starts to make sense, so I'm not gonna give up on it! :)

Crap, I wanted it to be short, but then something went wrong.. Sorry :unsure:

I have no formal training AT ALL. I started in the mid 80's with my first computer, a Tandy1000, but NO GAMES. A friend of the family came by to help set it up and showed me a bouncing ball program in basic. I was mesmerized by its simplicity-- just a few commands and I could get this ball to bounce around the screen! So I got books and taught myself how to program in basic. I made a few simple games-- Take that Dad! I quickly realized my games were becoming too advanced for basic to handle, so I asked someone about other languages. He suggested assembly. So I got a book and started using debug to write programs. If you have never used debug to write programs, count yourself lucky; it's a NIGHTMARE! Finally someone introduced me to an .asm compiler and I wrote code from there. Somewhere in the 90's another friend suggested I start using C++ and DirectX. I tried it out and it stuck ever since.

I wish I could say I work for some game studio, but sadly no. I suppose it's a combination of bad timing and lack of education. I was born in an era before personal computers or the internet. So, without the vast amounts of free information on the internet and no formal training, I struggled to get the information I needed.

I joined the military after high school. Now I have kids, so following my dream kind of went to back burner. Now I work in the oilfield and don't really have time to sit down and do any serious programming.

I would like to know how some of you landed your game programming job........

I personally started many years ago on an Amstrad CPC when I was 12. Graphics there were very basic ;)

Then some years after, I moved to PC/Windows around 17 and quickly moved to Linux where I could easily do what I wanted without having to pay to have everything required (mainly a compiler) some graphics.

The first API I tried was glide (voodoo graphics) and moved quickly to OpenGL which was more affordable for me and more widely used.

I read many books (about C++, OpenGL, computer graphics, computer mathematics...), was to several forums (including opengl.org and gamedev.net), and learn by myself by trying code, doing some algorithmics, and so on.

Then I moved to make some studies, and finally got a master degree in CS.

I worked in several companies including research center, planetarium builder and in the optical industry. I was closed to join a game company in Paris but for personal reasons (got married) I moved to another way.

I remain focused on C++, OpenGL, portability, architecture, stable and robust code.

I personally develop an engine on my own since many years now, which is my main motivation to remain in the computer graphics area (people willing to know more about it can contact me;)).

Hope this helps.

Considering other folk's work, I am not sure if I can be called a graphics programmer or not. Anyway, here is my journey to the graphics programming.

Prologue:

I was doing my bachelor degree in civil engineering. I had a "c" language lab course already taken and was living among a geek circle, we used to talk about tech in our free time after study. I was doing some novice style web programming at that time, as a hobby, after I knew that I have to learn web programming to customize my hobbyist LAN web page in stead of relaying website builders. Interfacing VLC with web pages and streaming videos to my buddies over LAN, giving them rtsp links.... ah nostalgia! I was lurking emulator forums(pcsx2,jpcsp etc), console platform security portals(hack scenes) to know about the platforms and security. I made a SDL app for psp with hombrew sdk at that time, it was a simple image viewer! Anyway, about emulator, I was amazed to think what kind of blackbox they put in-between that, an image built for a certain platform can be run on another! Though I now have a rough glimpse of the process, at that time I had not. Basically I had a fetish on anything related to game(digital entertainment). This sheer interest on tech thing, affected my study and soon I had to stop this for a while during 3rd year.

How it started all:(roughly 2012)

Then it happened when I was doing the last semester, last year. I was a die-hard prince of persia series fan. Prince of persia 2008 had a DLC which was console exclusive, not available on PC. This enraged me much. I was thinking, "hey just like there are some website builders, is there any game builder too? That I can at least create a level of PoP for 10 minutes? Lets find'em and make'em and mail that level to ubisoft" <_< :blink: Study pressure was low and I had a lot of free time.

Game Engine hunting and Art:

I came up with torque3D's action adventure kit. I also looked up orge3d but then I realized that they need too much programming for me to continue on them, at that time. Then I got UDK and cryengine, they were better. I was lurking on their forums. Slowly I began to know what I need to know.

3D, 2D assets, music, animation, texturing etc. plus programming. They told me that I have to make assets in 3D software and get them into UDK. They warned me that it would take me years, I did not listen. So I picked maya getting inspired by god of war team that they also picked maya. Even though it was expensive and still it is, one elder bro in our university hall was working in 3D and had those packages. Polygonal, nurb modeling, then came uv mapping. I thought what it is? why do we uv map? how it put color to the model? I thought I would never understand this process. Then I beat it and now it is as easy as a pie. Then to put color, I knew that I have to do this on photoshop. So learning PS came along the way naturally. Then there comes the a thing called "normal mapping". I came to know that folks uses zbrush to give them high details and then converted it into map. There can be so many maps, I did not know at that time that a graphics programmer dictates what kind of maps will be needed, I just swallow that I would need maps. Maps like bumpmap, normal map, cavity map, convexity map, vector displacement maps etc. To do all these, I have to make a high detailed model. People do this on generally a sculpting software called zbrush. So journey towards zbrush started. My time was too less against the diversity of all these to cope with them all effectively. But I did as much I could. This art section alone would take pages, as it is related to graphics programming much less, lets put a stop sign on it now. I will also skip how I learned gameplay programming too. From now on, I will only focus on graphics programming specifically. This section is only given so that you would know the proper context and would know, what drove me in.

Graphics:(roughly in 2014)

I came to know the hypershade network of autodesk maya. Then I came to know a thing called "custom cg shader for maya". It was an eat3D tutorial of making custom shader for maya, before which I never knew anything about graphics programming. As I dived deeper into that tutorial, I knew that I would need an application side support for those shaders. Then as I already devs in a game engine called "unity3d", I tried to make those shader stated in nvidia's cg tutorial website, to work in unity3d. There were some tutorials but a book(https://en.wikibooks.org/wiki/Cg_Programming/Unity) helped me most in this process. This is the key start point of my graphics programming journey. Though none of them are raw c/c++ application, every graphics programming I did were implemented within unity game engine. I made my own deferred shading, many image effects, many custom shaders for the company where I currently work on. I also did some GPGPU works such as implementing A* pathfinding on GPU, gameplay codes on GPU. A water system for an unannounced game, much like ori and the blind forest's water. A wind system for 2D vegetation sprites, custom terrain splatting etc.

I will use existing game engines for professional works. I will be developing my own engine(and some other crazy things), but this will be purely academic, learning purposes. That is why I joined this forum. I hope I will learn exciting things from you guys.

CG bear.

Playstation Partner

Been working with 3d graphics for about 4 years since I was 15. I did a degree on gme programming, but living in Australia, you start to see that there aren't many opportunities to make a solid living just working with games. I'mm make games using stuff like unity or unreal for a hobby, but as a job I now work on shaders for a large VR company.

I guess you really have to love doing it to get anywhere in graphics. For example, during my commute on the train to the city I like to spend that time with a pen, notepad, calculator, and a textbook open as I work on a new algorithm for my lighting or something like that; it's actually nice to have a few little eureka moments as you work through it. Then getting to try out the new solution on some hardware and having it work is the most rewarding thing ever. This is why I love graphics. You can see all of your efforts put to work, in colour.

One thing that solidated my love for it was getting to create an entire graphics pipeline that runs in the windows console. With shaders and a rasteriser.

Seeing it work made me appreciate opengl and directx even more.

Another thing that built my knowledge was by reading papers by known software engineers like paul rosen.

At the moment I'm working his rtwsm approach in to my renderer.

I'm clearly by all means inexperienced, but I love what I do, and I'd just say that you have to try doing things that are out of your comfort zone in graphics; you learn best like that.

TL;DR: I learned graphics from GW Basic programming manuals, a book called Tricks of the Graphics Gurus, the Open GL Red Book, and web tutorials/references. The math I learned in college helped, as did studying some open source programs like Fractint. I put my graphics background to quite good use in my current Aerospace job.

I learned programming and graphics programming by reading through old GW Basic manuals. I wanted to write games like Commander Keen and Space Quest, but obviously Basic was not up to that task (you couldn't really animate without terrible flicker). With the help of a cousin, I eventually found out about C and assembly language, and learned about EGA/VGA programming, but the VGA was tricky to program in 16 colors (it used bit planes, so you couldn't write to a single pixel with one operation, you had to make four writes, one for each plane). I studied programs like Fractint to see how they did it. Also, I bought this book (which was prominently displayed at Radio Shack):

https://www.amazon.com/Tricks-Graphics-Gurus-Book-Disks/dp/0672303086

The book was a tad disappointing in that it didn't cover too much about the low-level VGA, but boy did it teach me a lot of graphics background and techniques, many of which are still useful today.

In college I lost some interest in game programming; I had other things to worry about. I majored in Aerospace Engineering (I figured that I already knew enough about coding and a CS degree would just waste my time). But the Aerospace degree did teach a lot of useful math. And it did help me to write one rather famous graphical program: a low-end wireframe flight simulator for X Windows.

As I was wrapping up grad school, I got back into game programming, this time in the 3D world. I'd had a bit of exposure to Iris GL in college, and took up its successor, Open GL. I just bought the Open GL Red Book, read it through, and have been slowly growing my skills ever since. I was, and am, really happy Open GL took care of writing to the pixel buffers for me. I hated that.

Now, as an aerospace engineer, I find that all that effort I spent learning graphics has paid off. A nice animation can really help to communicate ideas and results to other engineers and (especially) engineering managers. Since I have these skills, and most of my colleagues do not, I get a lot of good stuff to do.

I am self-taught as well when it comes to graphics.

In 2013, while planning my vacation, I decided to come to the USA, and visit GDC.
On one session I heard an idea, that while you are free (no wife, no children, no mortgage) you have a lot of freedom to take risks. You are responsible only for yourself.

That time I had a good job, with one exception: there was no drive, no “amazingness/magic” in projects I worked on.
Came to Moscow, we released a product, and I left company.
My idea was to find hobby, that can drive me for my entire life (and probably make the hobby a profession).
At that time, I had money to live at least 1.5 years without paycheck.
Moved to Ukraine, Dnipro.
Life was good and so relaxed! =)
Explored a lot of things.
On 11th month I came to conclusion, that I want to do computer graphics.
Took Lego digital designer, and decided to copy some functional of it + learn DX11.
The goal was quite ambitious.
Made first engine.
One day in Feb 2015 I sat down to assemble couple of models in LDD.
That day pipeline was born (model construction automatization).
In next 8 months I’ve assembled more than 1000 models (the biggest of them, 2400 bricks, took to build 12 hours), rewrote pipeline 2 times.
Also in 2015 I road on my bicycle 10.500 km in 6 months.

Went to Russia in the end of 2015, and started to build engine 2.0: deferred, many lights, SSAO, CSM, FXAA, …
In August 2016, it has been finished. Learned a lot.
Until Feb 7, 2017, had some research, local improvements: engine 3.0.
On Feb 8 started new platform: tech4, which is some move to game (previous were more MFC/WTL CAD-alike apps)
April 12 the last missing peace finally came to my mind: the vision of my game.

After 3 months, 70% of code was rewritten, so here is result:

Now it seems it’s good time for me to make my hobby a profession (join some gamedev company).

Special thanks to: MJP, Hodgman, and entire GameDev.net community! I learnt from you a lot!

This topic is closed to new replies.

Advertisement