Fog Creek Software
Discussion Board




3D software engineer position

I have an interview for this title.
What kind of technical questions can I expect?
In terms of geometry

Starto
Tuesday, November 18, 2003

If you have to ask that question, you probably aren't qualified for the position, at least right now. You can expect questions dealing with planes, vectors, and quaternions (for very simple questions) and probably harder questions on topics such as occlusion and collision detection. That's off the top of my head.

tim
Tuesday, November 18, 2003

I know the basic questions,
what difficult questions can I expect?

starto
Tuesday, November 18, 2003

Pro/Con's of various methods of collision detection, BSP vs Octrees, good/interesting uses of Pixel Shaders.  Basically, go to the last half of any graphics book and see what topics they cover. Advanced lighting, curves, anything that actually uses more than one aspect of the basics together.

If you read and understand (and can implement) some of the articles at gamasutra.com then you should be ok. If you can't, you should either join gamasutra or get a subscription to Game Developer (the gamasutra print mag). Maybe download Crystal Space, or the Quake source and try to implement new features, or create a not-so-simple 3d engine.

tim
Tuesday, November 18, 2003

What terrain rendering algorithm would you prefer for three different target platforms:

- a PC with Pentium II/400 MHz and Riva TNT
- a PC with Pentium 4/3GHz and a Radeon 9800
- a (hypothetical) next-generation console

If you had one wish for the IHVs, what would it be?

What is "shader LOD" and why do we need it?

What lighting solution is appropriate for a top-down RTS game? What is for an architectural walk-through application? What is for an offline renderer?

Phoenix
Tuesday, November 18, 2003

Much better specifics than I provided. Good job Phoenix. Out of curiousity, what do you do for a living?

tim
Tuesday, November 18, 2003

Derive the Hermite, Bezier, and general B-spline equations from first principles.  Derive the coordinate space and projection matrices from first principles.  Describe some important algorithms in computational geometry and explain why they have the complexity characteristics that they do (eg: computing convex hulls in 2D versus 3D).  Describe an algorithm for triangulating an arbitrary closed volume.  You'd probably be fine if you just know the material in "Computer Graphics : Principles and Practice" like the back of your hand.

Of course that ignores the other topics that a game programmer might be concerned with, like physics, machine learning methods, signal processing, as well as general topics that all programmers need (information theory, theory of computation, language theory (eg: regular languages), etc).  Oh you might also have to know something about literary history (if they're the sort who like some back-story and such).

Not_a_game_programmer
Tuesday, November 18, 2003

He said nothing about this being a game programmer position and all the answers so far assume it will be.  Not to mention that much of the stuff you guys are talking about is way too specific to be that useful on an interview, either for general 3D programming or game programming.  I've interviewed for and have been employed doing both (scientific 3D and gaming 3D) professionally and nobody really cares if you can explain what "shader LOD" is because it is such a simple concept that anyone with half a brain could easily understand it -- it is more jargon than knowledge.

The types of questions they will REALLY ask you are:

Basic 3D coordinate system stuff.

Geometry-related linear algebra : matrices, dot and cross product, describe the different types of transformation matrices (what does a scale matrix look like, what does a rotation matrix look like, etc).

Describe the significance of the "handedness" of a coordinate system, and know which convention the major APIs (OpenGL, D3D) use.

If you're going for a gaming job, knowing the basics of the different types of hidden surface removal algorithms and structures (including the aforementioned Octrees and BSP trees) will help, but they won't be the focus of the interview if the company has a clue -- anyone can learn this stuff very quickly if they understand the linear algebra theory and basic coordinate system theory.

Mister Fancypants
Tuesday, November 18, 2003

I disagree.

How a rotation/scaling/projection matrix looks is something you either look up, or derive with a pen, paper and a couple of minutes of thinking time.

An understanding of coordinate systems and transforms is a very basic prerequisite, not something you are content with if you expect the newly hired 3D programmer to be immediately useful.

And "shader LOD" is an extremely complex unsolved problem of great interest at the moment; it's a good starting point for a conversation with the candidate, like the Mount Fuji questions. It's not a "answer" question.

Phoenix
Tuesday, November 18, 2003

it's not a game programmer position

Starto
Tuesday, November 18, 2003


My maths level is extremly bad.

I still remember how to divide without using a calculator but dont ask me more than that ;-)

But I want to get into 3D

Can I pick up 3D through self studying :

Required Maths + 3D Algorithms/Technics

What book can you recommend me

As I said my maths level is almost equal to nill.

Is it an impossible mission ?

Not Einstein
Tuesday, November 18, 2003

The math behind vectors and planes isn't too hard, just takes some memorization and a calculator (to do by hand). One book I like is "Computer Graphics Using Open GL" by F.S. Hill Jr. by Prentice Hall. I think that the math in this book is understand able by anyone who has completed high school algebra and/or geometry. The OpenGL Red book (it's a book by the OpenGL ppl with a red cover, has a counterpart w/ a blue cover) has math that is understandable imo. The Red Book is more of a tutorial/cover of features of OpenGL and the Blue book is a reference (if I remember correctly). "3D Math Primer for Graphics and Game Development"
by Fletcher Dunn, Ian Parberry looks like it might be good for the math side, but you'd need some sort of help to get into graphics.

http://www.gamedev.net
is a nice website with some tutorials and book reviews. There's another opengl tutorial website that is well travelled that might help or provide some clues as to good books. It wasn't Nates, but I'm sure someone who reads this site knows what I'm talking about. It's a site that has tut's and src code for many architectures and languages.

If I remember anything else I'll post it here. Again, the math behind graphics isn't too hard on it's surface. When you delve into it deeper then it does get harder, but IMO with determination, information/references, and a working mind, it should be possible of anyone who can already program (or is capable of programming).

Tim
Tuesday, November 18, 2003

How about:

name a "standard form" equation for a plane in 3D
how to find the intersection of a plane and a line
intersection of two planes
equation for a sphere
multiply two matrices, show you know its associative but not commutative
what is a projection matrix

etc.

I work at a game company and seen a list of our internal interview questions.  Most aren't that hard.

Moosebumps
Wednesday, November 19, 2003

*  Recent Topics

*  Fog Creek Home