Saturday, March 28, 2009

GDC 2009 Friday

I had a great Friday at GDC, even though I had to duck out of my last session a little early to catch a flight home. My first session was called "Authoring for Real-Time Tesselation and Displacement Mapping." It was hosted by AMD/ATi and showed off a new tool they've developed called GPU MeshMapper. The tools allows artists to author a 16 bit displacement map, normal map, and ambient occlusion map from a high res mesh for use on a low res mesh. Using this tool, ATi created a nice demo for the release of their Radeon HD4870 graphics card. The demo contains about 3000 frog-like characters that use the tessellation/displacement technique when they're close to the camera. The technique allows the characters to appear perfectly smooth with no visible polygon edges. It's also relatively cheap since it's handled on the GPU - but currently their method of GPU tessellation only works on ATi graphics cards. This technique is definitely something I'm going to keep my eye on.

Next I attended the tech artists round table again. What I really love about these round table discussions and the tech-artists.org web site is that it feels like we're really pulling together as a tech artist community and forming a guild. It's great because I'm getting to know so many others that share my same interests and challenges! Topics covered at Friday's round table session included artist/programmer shader authoring, programmers training tech artists and tech artists training artists, a debate about whether or not intermediate file formats are helpful, several funny stories about horrible tools, and whether or not good tools actually make a difference to the quality of the final game. We ended the session by talking about the concept of "spear fishing" or "shoulder surfing" where the tech artists watch the artists at work and get ideas for ways to improve the pipeline based on observing the artist's work flow. Overall, we had a great time discussing the things we do every day.

My next session was entitled "Platform-Independent Shader Development with mental mill: the Making of DEAD RISING 2." It was basically a sales pitch by Mental Images for their Mental Mill software. Laura Scholl from Mental Images went over the basics of the work flow using Mental Mill in game production and did her best to make Mental Mill sound really useful. Then Izmeth Siddeek from Blue Castle Games talked about how they used Mental Mill to prototype the shaders in Dead Rising 2. While his work was pretty neat and they had developed some nice shaders, the whole thing was overshadowed by the fact that the session was paid for by Mental Images. I attended it mainly to see what other people thought of the session, and based on the questions asked at the end and on comments I overheard on the way out, it sounds like people weren't that impressed.

My final session of the show was "Technical Art Techniques Panel: Tools and Pipeline." The panel consisted of Ross Patel from Microsoft, Seth Gibson from Bungie, Jeff Hanna from Volition, Rob Galinakis from Bioware, and was moderated by Chris Evans from ILM (formerly of Crytek). The guys covered all kinds of technical artist related topics including ideas for building art pipelines, how to handled artists' wants vs needs, how tools testing is handled, what you use for the level editor, and how tech artists should handle creating frameworks and libraries of commonly used code. Unfortunately I had to leave this session early to catch my flight home, but it was really cool to hear from these guys about challenges they had tackled, and their ideas and opinions on many different tech art related topics.

Well - my head is all full of ideas for how to improve my own skills and things we can do to improve our current project. My creative batteries are all recharged and I'm ready to head back in and make great stuff for another year!

Friday, March 27, 2009

GDC 2009 Thursday

My first session today was on the artistic style of the most recent Prince of Persia game. The dev team chose a stylized direction for the visuals of the game. I really like the look they came up with. I was a little disappointed by the session though since they focused mainly on the progression of the visuals and talked a lot about what inspired them instead of focusing on technical details. I was hoping that they would give more details about how their shader system worked or discuss the collaboration between their tech artists and engine programmers to develop the look. They did show some really beautiful proof-of-concept footage though.

Next I attended Hideo Kojima's keynote address where he detailed his process for creating a game design and went over the whole history of developing the Metal Gear series of games. It was a very inspiring session - and the main take away point was that things are only impossible because we think they are. We can make the impossible possible by reframing the problem. A really interesting fact that Kojima San revealed is that the whole idea of hiding from enemies instead of shooting at them came about because the original hardware he designed his first game for didn't support enough sprites on screen at once to have a player, enemies, and bullets on screen all at the same time. Thus the stealth action game was born!

At lunch time I stopped by the Vicious Engine booth (I used to work there) and my good friend Luke showed me their latest engine demo. They're doing some pretty amazing things with their engine and I was impressed. Kudos to Doug, Luke, Amilcar and the other programmers and artists at Vicious Cycle for building a great engine and making a cool demo!

After enjoying lunch with my good friend Jesse Rapczak, I attended a session on the open level design of Far Cry 2. The speaker said that they designed the game as one giant 50 km square open level. It basically allows you to go anywhere without load times and shifts from day to night and from sunny to stormy. Pretty impressive. They accomplished the level building by dividing the world up into 1x1 km chunks and assigning each chunk to a team of one level designer and one level artist. This team sat together and worked very closely to create and detail their 1x1 km chunk. The speaker talked about their use of Google Earth images of African villages as references and several principles that guided their design and layout.

Next I attended a session my Neil Hazzard from Autodesk on the MetaSL shading language. Neil talked about how he has been working to integrate support for MetaSL into 3ds Max. He demonstrated the work-flow of creating a shader in Mental Mill, saving it, and then bringing it into 3ds Max for use as both a real-time viewport shader and a software shader for use with Mental Ray. Using the shader for software rendering required some special handling in Mental Mill and there seemed to be several gotchas is you wanted to use a shader for both real-time and software rendering. The idea of using one shader for both hardware and software rendering is a good one, and it gave a couple of interesting ideas for how Kees and I can improve ShaderFX.

I ended the day by attending the Polycount get-together. I had a great time getting to know many of the great guys from the Polycount community. Now I'm looking forward to tomorrow - the final day at GDC.

Wednesday, March 25, 2009

GDC 2009 Wednesday

Today was my first full day at GDC, and it was great!

I started off the morning at the keynote given by Satoru Iwata from Nintendo. After annoucing the obligatory numbers - DS has sold over 100 million units and Wii has sold 50 million units, and all market growth in the last 2 years has been driven by Nintendo - Iwata San moved on to discuss the idea of the Death Spiral vs. the Upward Spiral. The Death Spiral is a pattern that many developers get trapped in over the long run. Finacial pressures lead devs to put less time into developing their games. This causes the quality of there project to go down because they were more interested in shipping on a certain date than making a good game. Once the game is shipped, it sells poorly and so they start all over again with financial pressure. This cycle continues until the dev goes under. Instead of following this cycle, Iwata San says that Nintendo follows an upward spiral under the direction of Shigeru Miyamoto. This upward spiral begins with Miyamoto being on the constant look-out for fresh ideas, which often come from the hobbies he enjoys - gardening, spending time with the new puppy, etc. Miyamoto looks for experiences that make people happy and tries to figure out what it is about the experience that produces the enjoyment so that it can be reproduced in a game. When developing games, Miyamoto does a lot of very small prototypes that have nothing extra at all - just the core concept. The teams that create these prototypes consist of two or three memebers. They often work on these small prototypes for up to a year, searching for that small bit of fun. Once they've got something that's fun to play, the main production phase begins. It generally goes pretty smooth since the core mechanics have already been worked out and the game is already fun.

Iwata also showed off several new games that are being developed for Nintendo platforms including Rock and Roll Climber - a game that uses the Wii Fit balace board to control a rock climbing character, several Final Fantasy games, Moving Memo - a game that lets the player create an animation using flip-book style tools, and a couple of others. The keynote ended with a trailer for a new Zelda game for the DS that will be called "Zelda - Spirit Tracks."

My next session was on Morpheme - the node-based animation blend tree and state machine system. This session was great for me since I use Morpheme every day. Simon Mack, the CTO of NaturalMotion showed off the physics capabilities of the new version of Morpheme. I was especially impressed by the node that allows the tree to pick the animation that is closest to the characters current position and play that. This allows a rag doll character to get up from a random pose. Very cool idea! I also enjoyed the blending of hard and soft response to a character's collision with the environment.

My next session covered some really good methods for improving the overall look of next-gen games. The speaker covered three main points - lighting and ambient occlusion, surface detail, and graphics production tools. A lot of the talk was devoted to ambient occlusion. The speaker discussed baking the AO into the textures, generating it in the object shaders, and adding it to the scene as a post process effect. He showed that it can make a significant impact on the realism of the game. On the topic of surfaces, he talked about using detail textures or detail normal maps, and also using large scale textures. His main point here was that surfaces should look interesting when seen at all distances and all angles. For his final point, he discussed tools for generating graphics. To his credit, he said that technology has brought us to the point where the quality of the game art is now mainly determined by the talent of the artists - not the engine programmers. He said that programmers should always use their own tools to make sure that they're useful, and allow artists to do interation as fast as possible.

After a tasty lunch, I attended the Tech Artists Round Table hosted by Jeff Hanna from Volition. The tech artists discussed lots of topics ranging from what the role of the tech artist is, to what to teach students that want to become tech artists. We talked about when a tool should be scripted vs coded in C++. It was great to attend this session and meet up with several friends and make a few new ones.

My final session for the day was on AI pathfinding and the animation system. The goal was to get the two systems working together well so that the AI could make effective use of both the animation system and the path finding system to create great movement. The speakers first showed off a simple animation system that blends between walking, running, and turning. Then they discussed the process that they used to generate paths that the AI could use. When creating the paths, the system took into account the limitations of the animation system - so it was away of movement speeds, turn radius, etc. Knowing this information allowed the system to generate paths that worked well with the animation - producing quality arcs in the paths, etc.

Today has been great! I'm looking forward to dinner tonight was some old friends from Vicious Cycle and then another great day tomorrow.