Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!

1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


Member Since 13 Oct 2004
Offline Last Active Yesterday, 04:56 PM

#5214553 Concept for an input library - thoughts?

Posted by cozzie on 04 March 2015 - 04:08 PM

Here's an article that can give you some more background and possible approach:


#5214283 Should the mesh class render or the shader class render?

Posted by cozzie on 03 March 2015 - 01:48 PM

Here's what I do in my engine (high over):

- scene manager has one or more scene class objects
- scene manager has one shadermanager class object
- scene manager knows which scene is active
- scene class has x mesh instance class objects and y instance point light class objects
- mesh instance class has pointer to unique mesh
- mesh instance has x objects of renderable class
- renderable class objects have a int vector keeping track of which positional lighs currently affect the renderable (this is used by the scene manager/ during updating to set the shader constants/ parameters for the positional lights)
- renderable has its own orientation (matrix) related to it's parent (= mesh instance)
- renderable has an id of the scene material it uses

- scene manager class updates all shader constants/ parameters based on the current state of the scene (culling, lights visible, lights affecting objects etc,)

- renderqeue get it's data from the scene manager (pointing to the current scene)
- d3d renderer class takes the renderqueue data (basically indices and pointers)

So basically the renderer in my case takes renderqueue indices and a data source containing the actual vertex/ index data, materials etc.

Hope this helps.

Note; this is/ there's no right way to do it, I believe it's best to see other options and find the hybrid that suits best for your own needs

#5214278 My plans and where I started

Posted by cozzie on 03 March 2015 - 01:36 PM

Here's my input;

- language: c++ is the way if you're going deeper then "top" level
(most aaa titles use c++ code underneath the hood)?
Note: depending on the engine you choose, you might start with c#, also here it depends on where you want to be in a few years
- On the hardware side there are a few approaches, lower specs/ minimum required hardware for the used engine will challenge you more on optimizing, higher specs will give you ability to do more related stuff on the same machine (modelling, textures, audio etc). It all depends on what you want to do.

For sure, go for at least something dual core, a SSD for booting/ applications and a separated (not integrated) graphics card/GPU.

#5213214 Render Queue Design

Posted by cozzie on 26 February 2015 - 04:45 PM

I think you're in the right direction.
To make this really beneficial you can make a "key" (bitkey) for each renderable, so you can use bitwise sorting to sort anyway you like. For example on depth (far to near for non-opaque objects). In the end I think the definition of an object in this case is a renderable/subobject (set of vertices/polys which share a transformation and material), because these properties you need for sorting. For any "higher level" with more transforms, materials etc., the sorting would be less useful.

Here's a nice topic on the bitkeys and sorting:

Reading your question I'd say you got the basics to start off and see how it goes along the way

#5213057 New Coder Struggles - What To Do Next?

Posted by cozzie on 26 February 2015 - 04:25 AM

I read 2 questions :)
On "what to do next", I would:

- define your game with a (limited) set of features
- finish the game completely

- define a new game with other/ more features that beed stuff you want to learn more about
- finish fully and start again

That way you both keep learning and get games under your belt/ build up a portfolio

#5213047 Order of matrix multiplication

Posted by cozzie on 26 February 2015 - 02:00 AM

When you do it manually I believe it was scale, rotate, translate. Make sure you rotate before you translate, so the origin you rotate around is not changed.

You might also wanna check this out: http://www.gamedev.net/topic/655668-understanding-a-d3dx-model-matrixs-content/

Also I suggest to do this on the CPU Side and not in a shader, because it's model related and doesn't differ per vertex or pixel.

#5212555 Is it time to upgrade to Dx11?

Posted by cozzie on 23 February 2015 - 04:59 PM

I find this both a good and difficult question. To illustrate, I'm in a similar position, having the dx11 book from frank luna lying around for half a year. Personally I can do what I want with dx9 for now, making simple games, improving my engine. On the other hand, there are features that will be "easier" with dx11. Everything that you learn new, can be a potential waste if you have to learn it all over again.

My advice would be to play around with dx11, learn the basics in a separate/ standalone application, and then decide. That's probably what I'm gonna try myself.

#5212303 Succesful titles from non AAA studios (recent)

Posted by cozzie on 22 February 2015 - 12:49 PM

Thanks, that makes 3.
Any more?

#5212270 Is buying assets cheating?

Posted by cozzie on 22 February 2015 - 09:05 AM

I also believe one cannot be talented in every aspect of game development.
Games mostly come from teams,, be it 3, 10 or hundreds of persons.

#5212268 Deferred Shading

Posted by cozzie on 22 February 2015 - 09:03 AM

I also read about tile based rendering, not sure if that counts as a 3rd option, but you might look it up

#5212096 Succesful titles from non AAA studios (recent)

Posted by cozzie on 21 February 2015 - 07:03 AM

Just out of curiosity, what succesfull recent titles can we think of, from non AAA studios?
(let's say from studios or groups of less then 20 people)

#5211878 Is it a good idea to make game mods to practice game design?

Posted by cozzie on 20 February 2015 - 07:35 AM

I fully agree. If you want to join a studio eventually, Mods in your portfolio can be equally important as DIY work from ground up (ofcourse depending on the role you're aiming at).

Another benefit is that you might find out what really drives you/ you like most (and can do best).

#5211396 What do you use for handling sounds?

Posted by cozzie on 18 February 2015 - 04:53 AM

FMOD works great for me. I don't expect a new audio API from Oculus will beat FMOD (on flexibility, functionality and platform coverage).

#5208021 Light-weight render queues?

Posted by cozzie on 01 February 2015 - 05:54 AM

Just some pointers/ what I do.

- a scene has mesh instances and meshes
- a mesh instance points to a mesh
- a mesh instance has a transform matrix and a flag "dynamic"
- a mesh instance consists of renderables
- a renderable has a transform matrix, material id and also a flag "dynamic"

- loop through ALL mesh instances and update transforms if dynamic is set (true)
- loop through renderables within instances and update only if dynamic
- if parent is dynamic and it's renderables aren't then I dont update transforms of renderables, because it's a transform relative to parent (mesh instance)
- a renderable has a vector of ints with point light id's that affect the renderable (updated if objects and or lights are dynamic)

- I defined a renderable struct, keeping track for each renderable of: mesh id, instance id, renderable id, material id, dist to camera
- this is stored as a bitkey (uint64) for easy sorting as you want

- cull all parents and if intersect also cull children (renderables)
- cull lights and update everything
- loop through all renderables and if visible add their id to a simple int vector
- simply render all renderables pointed to in thenint (index) vector

This gives great flexibility for sorting, for example I have 2 int indices, one for blended to, where I sort the bit keys based on distance to camera (back to front).

Hope this helps.

#5207137 Confused about XMFLOAT2 and D3DXVECTOR2

Posted by cozzie on 28 January 2015 - 04:46 AM

Arka is right. You can use XMFLOAT types for example as class members, then in your (member) functions with local scope you load them into XMVECTOR type, apply stuff with the XM functions and then store them back into the XMFLOAT. That was using the instructions/ advantages Nightcreature mentioned. Same goes for XMFLOAT3, 4, 4x4 (matrix) etc