Where I pontificate about Rob’s Teeny Tiny Bladder…
Posted in GDC on April 2nd, 2009 by Jeff HannaDude had to run out of his own TA panel to use the little boy’s room. What’s up with that?
Dude had to run out of his own TA panel to use the little boy’s room. What’s up with that?
I made it to the last Tech Artist Roundtable in the morning, and it was another good one. I should probably take better notes on what was discussed, so I have something better to report. But Ben Cloward was there and took better notes. Afterwards, all the panelists went out to lunch to prepare for our panel and edit some slides.
The panel went great. I think it was videotaped, so if videos come online I’ll be sure to say so. Chris Evans did a great job moderating, and all the panelists I thought did well with the right mix of conflict and tension (we were urged to bang the table and be entertaining). We got some good Autodesk bashing in there, too. When Chris puts the slides up I’ll link to them.
Afterwards a bunch of us went out for drinks and a subset went out for sushi.
Overall, GDC was an amazing experience. There was quite a bit I learned in the academic sense, but more important was the experience I had on the personal and human level. It was so fulfilling to hear everyone’s experiences and opinions on all sorts of topics, how they tackled the same challenges I have to tackle. It was doubly satisfying to hear how much people get out of tech-artists.org, even the ones that don’t post. Those that didn’t know about it are excited to start using it. I passed out almost 200 business cards that new registrants can redeem to enter a raffle- I didn’t think I’d get through them all, and didn’t even pass them out at the panel (that was dumb, I should have given them to the GDC door staff to pass out). Its given me new inspiration to keep pushing forward with some of my ideas for TAO that have stagnated some.
GDC cleared my mind of doubt and allowed me to focus. It made me see much clearer what I must do and where the community wants to go, and made me remember that all hands are on deck for the ride.
I woke up around 10 and went to lunch with Jeff Hanna and Ross Patel, to prepare for the panel on Friday. I went to the Tech Artists Roundtable- another good one. That was my only session; I walked around the expo afterwards and had a meeting with a vendor.
There was a Polycount meetup for dinner. There were 60 of us. That is remarkable. It was loads of fun meeting everyone, putting faces to names. The reservation started at 15 and just grew over the past week, up to forty-something, and 60 people showed up. Wow.
Afterwards I went to the Speakers party. There was good food, booze, and special drinks (Game Designer margarita was great, Game Tester shot not so much, but was interesting). Had some good conversations with Jeff, Seth Spaulding (Art Director at Faraxis), John Watsom (programmer at BioWare and trip roomate), and Hugh Malan from Realtime Worlds, who gave that great lecture on Wednesday. After that I spoke to Watson at the hotel bar about something Seth said to me, how he rotates his Leads every six months or so. I thought it was brilliant, and will be following up on it with Seth another time.
Went to dinner on Tuesdeay night in the Carnelian Room, which is a fine restaurant at the top of the tallest building in the city. It was, scenery aside, one of the best meals I’ve ever had, and the view made it even more awesome. Very expensive but very worth it.
The first day of the expo was great. My first session was about the Universal Character System in Saints Row 2, from one of the Volition char artists. They use a system pretty much like we are doing here but allow for more customization (we limit this for artistic, not technical, reasons). The main components are:
I wouldn’t say this gave me tons of good ideas for our character system, but it did give me confidence we had a good one and we made good, deliberate choices for the differences.
Second session was called “Next gen tech but last gen looks? Tips for making your game look better that don’t include bloom and motion blur,” from a graphics engineer from Realtime Worlds (Crackdown). It was an awesome presentation. He gets it. He reminded me of Mike D. Smith, a programmer from my last job- he really understands artists and art tools. I get giddy listening to programmers like him. He went over some methods for ambient occlusion (baked into diffuse, using a height term, and using a normal term where how far ‘up’ the normal points samples a different part of a ramp, which was a really good idea); adding surface detail at different scales, including the use of detail and detail normal maps; and finally, tools. He hit on two fundamental things. First, programmers should do the bare minimum required in their tools, use what the artist is familiar with in terms of UI and navigation, and work closely with the artist and get constant feedback. Second, it is absolutely vital to build a very strong export pipeline so artists can preview their work in-game immediately, as or more important than the tool itself- if artists can’t preview their work, the tool is useless. Artists will find a quicker way to do what they need to do than programmers often provide, and the tool will never adjust to artist needs if programmers aren’t working closely with them.
I was talking to my roomate for the trip, John Watson, a principal gameplay programmer here, about this. I said the best way to develop tools was for programmers to do the really math heavy or complex stuff as modularly as possible, such as just .NET classes or however. Then leave the workflow, UI, and usability to the technical artists. Programmers simply cannot be expected to iterate their tool workflow as much as artists require. So either we get a mediocre tool, or we have to replace the tool later because it was not built in such a way as it could be easily leveraged and added to later. Using .NET classes, for example, allow me to leverage the math mind of a programmer with my location amongst artists to refine (or completely reinvent) workflow.
My last session for the day was the Tech Artist Roundtable. It was good to finally meet some people I’ve only known online, and it was an interesting experience having all sorts of good ’street cred’ from TAO. I gave out cards for the raffle we are running and will give out a bunch more today. It made me glad we started TAO- it is like a year-round persistent roundtable.
Went out with some Blizzard guys for dinner at a Mexican place, was delicious. I went back to my hotel early to cut together some videos for the Panel on Friday, which inevitably turned into an all-night event as last-minute video editing from a non video person always does. But I got it done. And it made me realize we really need to release some SWTOR trailers, because I had almost nothing for it.
I woke up late and only saw three of the four sessions I wanted to see. I missed “Breaking the Cookie-Cutter: Modeling individual personality, mood, and emotion in characters.” So instead I headed over the Independent Games Summit again to catch the keynote from Rod Humble (head of EA Play label, which is responsible for the Sims and other casual divisions), called “The Indie Advantage: A View from Both Sides.” This. Presentation. SUCKED. It isn’t because I don’t like the guy or am so anti-EA. It just sucked. He ran out of time and was barely half way through the presentation. He was constantly rambling and telling irrelevant and unengaging stories and tangents (I hesitate to call them tangents as they were so irrelevant, tangents at least have one point of contact). The keynote had no message or clear form or purpose. He told us when discussing his presentation with Jon Blow of Braid, Jon said ‘Your presentation is useless.’ That was an understatement. It was honestly as bad or worse than any presentation I have ever gone to, including usergroup presentations which are like the ‘open mic nite’ of the 3d community. Shame on you, Rod Humble.
Fortunately, next up were Kyle Gabler (2D Boy) and Phil Fish (Polytron) with their lecture “The Art of Independent Game Promotion.” They came up with a list of 10 things indie devs should do to market their game. It was one of the best presentations I’ve ever been to (though in fairness, maybe it seemed more awesome because Mr. Humble’s presentation was so terribly awful). I am not going to go into detail here because I don’t think I can do it justice- if you are interested, you really should look at other blogs that will cover it more fully.
I hopped on over to West Hall to catch Jesse Rapczak’s (Exigent) talk at the Game Outsourcing Summit called “Unknown Soldiers: Technical Artists.” Jesse works as lead TA at Exigent, an Indian outsourcing company, and pitched technical artists in regards to both outsource clients and vendors. I still have to shake my head when I think about how we still need to convince people of the need for TA’s, so kudos to Jesse for fighting the good fight. It was a good, energetic presentation, and put forward some good cases and information. Jesse also mentioned TAO at the end of the presentation, along with Polycount. The man really knows the good places to be ;) The audience was smaller than the IGS or AIS audiences, and I felt awkward as Paul Steed (the summit host) didn’t have an applause after the presentation. So if you’re reading this Jesse, TAO is clapping for you.
Went for some good sushi with Ben Cloward, Chris Evans, Ross Patel, and Ross’ friend from Crystal Dynamics. Sushi was good but I was somewhat diisappointed with my ‘Chef’s Choice’ menu. Hope to hit up some sushi once or twice again this week since it is so vastly superior to what I can get in Austin. This afternoon I have some TAO and presentation stuff to do, and parties tonight. Expo and the real sessions start tomorrow, very excited for that.
Ah, to be in a real city again. Diversity, tall buildings, and fast walkers. Not as fast as me, but pretty fast.
I saw two sessions this morning. The first was from Ron Carmel, from 2-D Boy (World of Goo), called “Everything you always wanted to know about going indie but were too afraid to ask,” which was the first session of the Independent Games Summit. Ron was an excellent speaker and his presentation was frank and honest. He provided hard numbers on how much development cost ($116,000 for two people), working with publishers (his advice: don’t do it), promotion and marketing (huge spikes in sales during promotions), sales (WiiWare was over 50% of sales, website 25%, Steam 17% or so for 2008), and more. It really was everything I wanted to know about going indie but couldn’t ask. Seeing these sorts of numbers was great- the presentation was as fantastic and polished as World of Goo.
After that there was a rundown of the 22 IGF finalists. I can’t wait to check out the pavilion at the expo.
I walked over to West Hall to catch a lecture from Alex Champandard (aigamedev.com) and Christian Gyrling (Naughty Dog), called “Animating in a Complex World: Integrating AI and Animation,” part of the AI Summit. Alex presented about locomotion systems, and went through a number of prototypes/solutions used by the games of today and tomorrow. He had some very interesting ideas and his presentation was really fun to watch. He addressed common issues such as foot sliding, direction changes, and blends. This is something we’ve all had to deal with but don’t have the time to do the thorough sort of research Alex has done. Having so many solutions explained and illustrated gave a good high overview while still doing a good job illuminating the substructure and implementation considerations.
The second half of the presentation was about AI and animation, from Christian. For Uncharted, Naughty Dog ‘uncoupled’ AI from animation. The gist of it is, the AI gives orders to a Character (go here, take cover, follow), and the Character figures out how he will do it (in the pathfinding sense), which drives how he will animate. The AI is completely abstracted from the animation system, and the Characters behave with autonomy in carrying out their objectives. He calls this the ‘Drill Sergeant/Private’ relationship: the Private (Character) will always carry out what the Drill Sgt (AI) demands, but the Drill Sgt doesn’t need to tell the Private how to do it (‘Do a push up!’ instead of ‘Play get down animation, play pushup animation, play get up animation’). Then as the Character is finishing his order, he alerts the AI, who can issue a new order.
This session was quite a good one, but I still can’t believe how many very smart, very experienced people are still surprised when learning that abstraction, modularity, and autonomy can save loads of work. Maybe it is because I’m relatively young and fresh and never had to work at a very low level- having these higher level systems always available to me means I’ve never had to really implement low-level systems except to fix bugs or augment functionality. Where two things are not logically related- whether that is AI and animation, or art asset names and game display names, or any number of things- abstract them, decouple them, take care of them individually, A only needs to tell B what B needs to know to do his thing, and nothing more. I find it especially strange since these are really just lower-level programming concepts, and I mean the nuts and bolts of object-oriented programming, applied to a higher level. Thinking about good system design like we think about good code structure and design is a good start.
The sessions this afternoon are over my head or not relevant, so I’ll be finishing up some TAO GDC tasks and exploring the city. Having to lug my friend’s giant Toshiba a mile uphill to free WiFi isn’t much fun…
I just thought I’d comment on the perception, and reality, of TAO’s 3ds Max-centric focus. It will also point out where I’d like TAO to go in the near and not so near future.
No doubt about it, most people at TAO use Max. This is because I use Max, and the other Admins use Max, and thus most of our core members use Max. So whereas there is some crossover in the community, and we do have some fantastic Maya and XSI users, and we try to be a software-agnostic forum, there is a definite Max slant. On the other hand, we have some excellent Python users, and after Max the Python and Python/Mel components are very integral.
This in itself isn’t a bad thing, but unfortunately it means many of the innovations at TAO- and we strive to be one of the most innovative and evolving places for CG artists- are Max-centric. Our imminent Community Script Initiative, for example, is very MXS-centric. This is unfortunate, because I really think Maya and XSI’s futures are much stronger than Max’s. And I don’t want to be using Max at my next job either. What I’d really like is someone on the Maya or XSI side who was a strong coder, but more importantly, had a killer itch to innovate and improve the community.
Unfortunately, these people are few, and are much more likely to do it their own way than assimilate. And I don’t blame them, I’m probably one of them! I didn’t join TAO, I helped start it, and in that way I’m no different. But what I am really passionate about is innovating and improving the community. And that is why I did it. I needed to start somewhere to try to turn this trend around, if it is what I really wanted.
What this looks like on the outside, though, is a fancy agnostic website for my personal projects. I can’t underestimate how much I want that perception to be changed; no, how I want that reality to be changed. And this is what brings me to the future direction of TAO and where I’d like to see it and the community headed. And unfortunately, to tie in with the Max-centric points above, this will happen on the Max side of things. What I’d like is to find a soulmate to deal with the Maya/XSI sides; perhaps, if these dreams become a reality, it will happen.
I’d like to see the Max community become a series of nodes, of sorts. There is so much great material in so many places. It isn’t just enough to link to material nowadays. To stop there is like turning one’s back on the most important revolutions in interconnectedness in our history, or at least our generations. What is required is a transformation of these disparate materials into a single entity- and not a single entity in the sense of a Microsoft or Google. Identity is important, and with no ability to buy people out it is very hard to convince anyone to ‘become assimilated.’
What I envision is a community that behaves very similarily to the software design I have spoken about in the forums many times. It doesn’t have to do with a brand, or conforming to a standard- it has to do with standardizing and opening exchange of information. It has to do with loosening our often defensive postures on sharing of work and sharing of sites, something which I think people are already somewhat inclined to do. There need to be hubs of communication, of course, but even these hubs do not need to be centralized- TAO doesn’t have an MXS forum, for example. On the other hand, I’d like to see somewhere like Polycount.com try to reference some of its technical discussion with TAO. More formally, I’d like to see some sort of ‘layer’ added to web content on tech sites that allows other sites to hook into it- to reference it, document it, search it, add to it. Scriptspot can add in hooks that we can read, and vice-versa. It’d be awesome to get this sort of thing working for personal html pages or wordpress blogs as well, so for example someone’s blog page on a script could auto-update their scriptspot page, which would maybe change an index or fire an alert at CGTalk or TAO.
And we are full circle. The problem is, finding people to do this. Fortunately we have Aryeh for web-development right now, and we may add others in the future. And we have some determined people to see this sort of thing happen. What we need, then, are motivation- which means, people who like these ideas must actually embrace them and use them. Money is another motivator but in far less need right now. I’d trade 10,000 worth of donations for 100 dedicated users any day, for people who make use of what the community offers and are willing to work to make it better. It doesn’t take a huge sacrafice, it takes many people making small contributions to achieve a larger common goal. It takes supporters and enthusiasm that provides the drive to achieve great things.
I open a script I did not write
And sigh or scream when I often find
That dreaded keyword which gives me such fright,
Perhaps I should not be so kind?
Why do they stack them a dozen high,
And why don’t they just put them in a struct,
When they are just three letters long I sigh
And think that I am really fucked.
Just put them in local scope,
Oh my god who wrote this shit
The rest is better I sincerely hope
Or I will have to refactor it.
It is of globals I write this ode,
So please keep them out of your code.
I wrote that little ditty for this post, I thought it was funny so I put it here.
A really interesting article, benchmarking the three major 3D programs in a variety of activities.
http://www.3dspeedmachine.com/?idna=33
Overall, XSI had a very strong showing, with Maya second, and Max a distant third in most tests. Unfortunately, these tests were rigged, as spacefrog points out here:
Looping through a collection, such as lights, geometry, etc., will hang up Max into an infinite loop if you change the hierarchy of the member you are iterating on directly (for g in geometry do, for example). It only does this when you iterate directly on the collection.
Iterating through the collection with an index iterator (for i = 1 to geometry.count, for example), the behaviour is different- the object you parent moves to the end of the collection, so you process some members more than once and some not at all.
The workaround is simple- just cast the collection as an array and loop through that instead.