Wednesday, January 23, 2013

Day 23 - some progress!

I promised myself I would make some progress on my 1GAM a month tonight, so I did!

Nothing terribly exciting, however definitely important for productivity. I finished up my simple 'tagger' so I could tag a node in maya as an "asset root" (so everything under it gets lumped into one addressable asset), as well as being able to specify the material name for meshes in maya. Materials are completely separate from geometry, I just need to call out the name of the material resource. I also made an 'auto-export' button in Maya that just 'Does The Right Thing(tm)'

 If you're curious, here's an example of a material data file:
 

The parameter/texture names here get bound to parameters of the same (string) name called out in whatever shader is used to render the object. This was just some test blend shader I was working on a while ago.

The material calls out the default effect name as "testeffect_col_tex" - however that's not exactly the shader. Within that effect are different shaders for different engine supported features (skinned, lightmapped, skinned+lightmapped, ...). This lets me use the exact same material resource on several different meshes, and the engine can pick the correct actual shader. Some day the different shader variants will be auto-generated, but I'm not there yet.

At some point I'd like to make a blog post just covering my material/shader system. I've iterated on the concepts several times and think I have landed on a very clean and extremely flexible architecture.

The next thing I need to do for the game is implement simple trigger volumes, and make one that triggers level completion when you bump into it.

2 comments:

  1. I was going to post this:

    "Ahhhhh, LUA as data storage... brings back fond memories :-)"

    But then I was like, wait, that's a little different from LUA.... Oh, it's JSON! Nice.

    ReplyDelete
  2. Indeed, JSON all the way :)

    In fact, I don't have any data stored as binary yet (aside from textures)

    ReplyDelete