• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
parallelpuffin

graphics specialization

6 posts in this topic

Hi,

 

So I'm about 3 years into a career doing businessy programming, and I'm considering jumping tracks into games. I've heard all the usual advice about better pay / more job security / less hours / etc in non-game fields, but so much of a good software engineer's job seems to be learning, understanding and adapting to domain-specific business requirements that I really want to work in a domain that's inherently interesting to me. What I'm doing now is rather uninspiring.

 

I was thinking about specializing in graphics programming, since low-level optimization and algorithm-heavy work gives me warm fuzzies. There seems to be a decent amount of resources out there for learning, so I'm reasonably confident I can learn whateve is needed given enough effort. But before I get going I wanted to get some insight into the overall industry so that I have a clearer idea of what specifically I should be learning.

 

My #1 question is, for anyone who's working in the industry, how much demand do you foresee for custom graphics work in the future? Given the budget busting nature of AAA games and the widespread availability of (from what I can tell) solid middleware, are studios likely to just use existing game engines instead of doing their own in-house rendering work? I guess I don't have a clear sense of what a graphics specialist would do in a studio that licenses an existing engine, or if one is needed at all. I imagine if everybody starts using 3 or 4 big game engines, there's not going to be enough work at the middleware companies for all the talented graphics guys out there, much less newcomers like me. (Please correct me if I'm wrong about that though!)

 

Assuming that there will still be need for graphics guys going forward, what do you guys think is the quickest path to becoming able to make useful contributions to a game? Should I try and see what I can contribute to an open source game engine? Make a software rasterizer from scratch to learn all the fundamentals? This field seems to move really quickly, so I don't want to spend a lot of time learning all kinds of overly specific stuff that's actually been obsolete in industry practice for several years. How do I avoid that?

 

Also, if there's a better place to ask this question, please let me know. Thanks in advance for your help smile.png

0

Share this post


Link to post
Share on other sites

If you just want to do it, you can do it now.  Download some open source project and start dabbling.

 

 

 

If you want to do it as a career, at least two career moves are in order.

 

In order to specialize in graphics, you need to be already inside an industry that uses them.  There is little need for high performance graphics in most business software.  This is your first move.  These industries obviously include the entertainment industry (games, movies) but it can also potentially mean fields like broadcast television, advertising, or medical and scientific rendering.

 

After you have broken in to the industry of choice, begin taking on tasks that involve rendering and graphics. Generally it is a chicken-and-egg problem where only experienced people can touch the code and you only get experience by touching the code.  Make it known that it is something you are interested in, and focus on that as side tasks to your main job.  That is your second transition.

2

Share this post


Link to post
Share on other sites

#1, what frob said. In particular, do as much and learn as much as you can about graphics programming before you try to make the jump. For junior roles and for people with no proven graphics or engine programming experience in the games industry, a good demo that shows you have a good understanding* of the core algorithms and techniques is the only way you can differentiate yourself from all the other people who want to transfer from other industries to games.

[* When I say understanding, I mean it - if I'm interviewing you for my team I'll want to discuss the details of the techniques you chose and what the alternatives might be - from the interviewer's side it's easy to spot the difference between "copied from a book but doesn't understand how it works" and "understands"].

 

 

#2, AAA teams and projects are big enough these days that graphics programming and renderer programming are increasingly two separate (but of course closely related) specialist areas. Many big games use graphics engine middleware or already have their own proprietary engines, so there will be more demand for graphics programmers in the future than there will be for graphics engine programmers. Entry level low-level engine programming jobs are also very very rare. I've worked on a few games now that have had people who spent the majority of their time writing shaders...

 

 

#3, what to learn? I think writing a game or graphics engine you'd spend as much time bogged down with software design issues and platform APIs as you would learning actual transferrable techniques. Use an off the shelf engine and skip the low-level stuff unless that's really really what you want to be doing.

 

Writing a software rasterizer is a good one for understanding a lot of underlying principles. Be careful not to get carried away with 1990's optimisation techniques and methods though, I'd advise Fabian Giesen's series of articles for an up to date look at the pipeline and rasterizers: http://fgiesen.wordpress.com/category/graphics-pipeline/

 

I'd learn the common basics such as lighting (the illumination/reflectance part and the implementation part), shadows (it's a start having an idea what a shadow map is, but do you know how to fix the aliasing issues?), skinning/animation, particle and other effects (a common entry level task), HDR (fake vs real).

 

Have a rough understanding of common visibility algorithms (PVS vs Portal, etc) can be useful.

 

A good book to read for ideas for topics to learn? Realtime Rendering.

 

Look at some of your favourite games - can you explain how everything is rendered? If not, start learning, start guessing, start experimenting.

 

Given the higher than average volume of data in graphics, good choice of data structures and algorithms can matter. Good choice means understanding some underlying CPU concepts (Big-O isn't everything!). 

 

Knowledge of how GPUs work and where the performance bottlenecks are in the pipeline is quite an engine-y thing but frame rate is the whole team's concern.

 

Maths, maths and more maths. It's useful for a graphics programmer. SIGGRAPH papers tend to be much easier to read when you understand at least some of the Greek bits ;)

1

Share this post


Link to post
Share on other sites

Thanks, this is very helpful.

 

S1CA, it sounds like you're saying that even as companies use middleware more or have existing engines from previous projects, they're not so simple to use that artists (or "technical artists") can do all the required graphics work without a lot of help from programmers. Sorry if this is a silly question, but why do shaders in particular need to be made fresh for each game? I had thought (admittedly without any particular basis) that shaders were fairly general-purpose and you wouldn't have to write new ones for every new model or environment you make? Are there any other tasks for graphics programmers besides writing shaders that are likely to be customized for each game rather than being included as part of the engine?

 

It sounds like it's not a bad idea to start working on a software rasterizer and see where that gets me. As far as making demos goes, do you think there's educational value in making them "from scratch" using OpenGL or DirectX? I can see how it might not be the best use of my time to try to make an entire engine, but would I be at a disadvantage trying to get an entry level job if I'd only ever used an off the shelf engine instead of the raw APIs?

0

Share this post


Link to post
Share on other sites

Thanks guys, this really helps a lot. I think I have a much better sense now of what's involved in graphics programming in practice... what actual roles are currently involved was pretty unclear to me and googling around turned up only vague explanations. It sounds like there's no harm in learning using an existing engine since I'd be unlikely to get a junior position that actually involved touching raw graphics API code anyway. I'll take a crack at a software rasterizer in any case because it just sounds like a really cool project. laugh.png

0

Share this post


Link to post
Share on other sites

Sorry if this is a silly question, but why do shaders in particular need to be made fresh for each game?

On current-gen consoles or mobile platforms, you don't really have enough performance to spare to use generic techniques and achieve "next gen" visuals. Everything is a constant trade-off between features, quality, execution time (performance) and effort (time to implement). The approximations or assumptions that are valid for one game might not hold for another game.

An excellent example of this has just been demonstrated in this article!
http://www.gamedev.net/page/resources/_/technical/game-programming/rendering-and-simulation-in-an-off-road-driving-game-r3216
By designing something that only works within their assumptions (driving a vehicle on a heightmap with forests), they end up with a rendering pipeline and shaders that are extremely efficient, but look great for their game.
If you tried to implement the next CoD or battlefield using their shaders, many of their assumptions wouldn't be valid, and it wouldn't look great any more ;)
0

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
Sign in to follow this  
Followers 0