SlimTune: UI Improvements

I’ve been doing some work on SlimTune quietly, and now it’s to the point that I have to decide what the next phase of things should be. There are essentially three major groups of work to tackle: UI improvements, memory profiling, and instrumentation. I’ll spend this post explaining what I’m looking at with the UI.

One of the ideas I had with SlimTune was to make the front-end pluggable, so that you or I could develop various views of the data that are neatly customized to focused goals, or provide cool new features. That has worked out fairly well, with the caveat that no one except me is writing visualizers. (That’s fine, the database format isn’t that stable yet.) However, there turned out to be a number of problems with how the views are actually managed.

Each visualizer is attached to a particular connection, which represents an underlying database and potentially a running application being profiled. That’s fine, except that all of the connections and visualizers are jammed into the same window. That’s fairly confusing. So step one is going to be to separate each connection into a separate window, and let them all function separately. The transition to a single document, multi-window user interface should be a lot easier to organize and keep track of what’s being profiled and where the data is available.

I’m also looking to make the visualizer organization within each window more cohesive. Right now the approach is tab based, and the only way to tell tabs apart is whatever text fits into the caption area. My inspiration for this change comes from an Apple tool called Instruments. The basic idea is to assign a section of the window to be an overview of all the visualizers that are active, possibly with some type of very simple summary graph. The goal is to improve how much information you can see at-a-glance, and to enable you to get to the information you want more quickly.

I’m also going to be trying to clean up the individual visualizers a little bit, since it seems like they have some rough edges. I’m hoping to integrate at least very basic snapshot support, for example, and repair some general interface problems. The “dotTrace” style will probably get more work done, because honestly I just like that one more. I know some people prefer the NProf view, and I think you’re maybe a bit crazy — but this is exactly why the whole visualization system is pluggable. Everybody doesn’t have to work with the exact same UI.

Honestly, how many profilers have you guys worked with where the interface was better than “workable”? My experience has been that the best of the bunch are merely alright, and it goes downhill from there. I don’t think SlimTune is great right now, but I feel like the core ideas are there and it’s just an organizational problem right now. I’m hoping that with the next release branch, 0.2.x, users will enjoy a much better overall experience.

Advisory: You Should Probably Use FpuPreserve

One of the create flags for D3D 9 devices is FpuPreserve. It tells the Direct3D runtime that you don’t want it to mess with the FPU flags, which it does to improve performance. And you should probably be using it.

FPU computations are a really hideously messy area, one that makes my head spin when you get into the details. One of the cool things .NET does is to take away most of the complexity and make very simple, straightforward guarantees about how floating point code must behave. Operations are done at specifically defined precision, in a certain way, and the runtime must enforce these requirements during code generation. (Which creates some weird x86 code.)

When DirectX goes in and messes with FPU state, it apparently throws off what .NET expects, leading to weird bugs of various sorts. So unless you’ve got some problem with FPU performance that can be solved by switching to the faster FPU states (hint: you don’t), it’s probably a good idea to simply set FpuPreserve all the time.

[EDIT] I forgot to mention as an addendum that as part of the SlimDX 2.0 transition, it’s very likely this flag will become the default.

Secondary Effects of iTunes Game Pricing

Every so often, someone complains about the overall price depression on the iTunes App Store to rock bottom. It’s a theme that recurs fairly often, and I’m generally a little dubious about the people who are upset about it. It seems mostly to be a product of an actual free market — you may think your game is worth five dollars, but if someone is producing similar quality for one, well tough shit. Remember, consoles games are basically price fixed and that has a substantial effect on the PC market as well. Now iTunes is a more nuanced discussion than that, exacerbated by the ranking system by which apps rise above the crowd in the store. I’m dubious of the complaints, but I don’t mean to suggest they’re without merit. Instead, I want to highlight some of the secondary effects I’ve noticed.

One of the problems created by the 99 cent push is that the entire pricing scale has been shoved downwards. Even though many of the dollar games are mindless junk, they make it difficult to sell a game for ten dollars, let alone twenty or thirty — even if the quality is comparable to a thirty dollar PSP game. I can’t think of many industries where a 10x or more price difference between the bottom and top tiers is sustainable. (Cars and housing come to mind; both are status symbols.) The value proposition on the low end is just too damaging to the top. The result is depressed game budgets and timelines. You can’t make money with quality on the iPhone. It’s all about quantity. For it, game development is about producing mediocrity quickly and efficiently. That’s unfortunate.

That effect chains to middleware, it turns out. Middleware should be insanely valuable as an efficiency proposition for developers, but it too falls victim to the same bottom-line analysis, and that has crushed prices on everything. FMOD, Unity, EmotionFX and more have all collapsed to bargain per title rates that are simply unheard of anywhere else. I have to admit this caught me off guard, but basically selling middleware to iPhone game developers is identical to selling iPhone games to users. The vast majority simply will not pay anything higher than absurdly low prices, so producing a high quality, detailed SDK is a difficult value proposition. It’s more valuable to set impulse-buy prices and rely on marketing and sheer numbers to fill the gap.

The upside of all this is that, like everything else, the Ghost SDK will be stupid cheap. I’m hopeful that it will be available shortly after GDC, which is not long at all. I’m estimating that 400 title licenses of Ghost will be sufficient to sustain AR Labs another year (end of 2011) without any other revenue or investment, which sounds like a rather large target but who knows.

Action = Reaction Labs LLC

I’d like to introduce you all to our new company, Action = Reaction Labs LLC. Our goal is to bring a pair of new technologies to the games market, starting with the iPhone, that I think could really change things. I know that’s a pretty ballsy statement, but stay tuned over the course of the next year at least, and a lot of interesting things should be happening. We’re still working on a corporate site but I’ll let you all know when that’s ready.

AR Labs has two completely separate pieces of technology, both of which are hopefully going to make a big difference to gamers. Both technologies are shown off in a very early prototype form in our first iPhone game, Aves. There will be a second game later this year that will showcase far more advanced versions of both.

The first is our Ghost Dynamic Binaural Audio system. It’s been known for a very long time that traditional 3D sound techniques are fairly flat and ineffective. There is something known as binaural recording which produces a much, much more realistic and convincing soundstage for listeners using headphones. Check out Jeff’s Five Favorite Things for a demonstration. Until now, binaural audio has been restricted to statically positioned recordings, not suitable for games where things move dynamically. We’ve overcome this limitation, and can to produce sound that is dynamically positioned in true 3D, just like in Jeff’s video. Best of all, the Ghost SDK is currently under development, and should be available to all iPod/iPhone developers within a few short months!

The second technology is the BioReplicants physical animation system. We’re not the first to do physically based animation, by any stretch. Unlike a certain well known company however, our system is true middleware and will drop into existing games without requiring engineers on site to tune. Not only that, but our characters are truly capable of walking, running, jumping, flying, flipping, and so much more without an animator ever getting involved. They’re also truly interactive — shove one and it will readjust as necessary to restore its balance and desired animation in a convincing way. This isn’t just some clever ragdoll based trick, and it’s not just to watch “a different tackle every time”. That’s no better than pre-rendered cutscenes. You’ll see what I mean over the coming months as we start to demo the current generation of our technology.

There’s my sales pitch. This is quite literally MY company — I am CTO and part owner. I’m hoping to talk a lot more about what we’ve got in the pipeline. Tech details are of course going to be scarce, but please don’t hesitate to ask and I’ll provide what information I can. I’m especially interested in speaking to iPod/iPhone developers, since that’s going to be our first focus with the Ghost SDK. Nearly everybody playing those games is using headphones, making it the perfect platform for what we’ve got. And candidly, I’m planning to make it must-have technology for any serious iPod game.

Screw Degrees! Right?

A few months ago, I pushed for GameDev.Net to add a new forum, Breaking into the Games Industry. Overall, this has been a great place and some excellent discussion has happened there. I’ve noticed one particular trend though, and I wanted to discuss it a little bit. Basically, there’s a surprisingly large number of people who are either dubious of a degree (computer science or otherwise), or actively believe it’s not needed. This particularly eloquent fellow may have summed it up best:

sure stay in school for your deplomas, in my apionon unless you wanting to work for others its a complete wast of valuable time.

I’d like to provide some commentary, as someone who actually got a game industry job without a degree, and who just finished his degree.

Number one:
Why do you deserve the job over someone who has a degree? Typically people explain how passionate they are about games, and frequently how they’ve been working on some game X. All of this entirely misses the point, and presupposes that college students aren’t doing the same exact thing. College students aren’t (necessarily) dispassionate robots. Unlike the younger kids, a lot of them have had plenty of opportunities to develop much more complete games, usually as part of a group and working with tight time constraints — all while juggling quite a lot of other work. These are critical abilities for someone who does this stuff professionally, and also indicates a base level of maturity. The non-degree people almost without fail have nothing to show but half-baked solo efforts, built slowly and poorly over the course of many months. And yes, this is partly because spite for a degree usually shows a general lack of maturity, and therefore ability on the job. Given completely equivalent scale demo projects from a high school graduate and a recent college graduate, the latter is actually vastly more impressive.

Number two: Why are you so convinced that the degree is pointless in its own right? Are you annoyed because no game could possibly have a use for database implementation theory, or natural language processing, or operating systems techniques? This is also a problem with the game school crowd. Some people seem to think that what they need is to learn how to do numerical integration and handle a graphics pipeline, and make those things run crazy fast. While those things are generally pretty useful to know, they’re nothing you wouldn’t get from a standard college education anyway. You know why? It’s because games are exactly the same as most other software. Where’s the undergraduate degree in high performance computing? In massively scalable servers and cloud computing? Those also require a variety of highly specialized skills. They simply don’t carry the pop mystique that games have. It’s actually fairly pretentious to think that a normal education isn’t good enough for game development. Ironically, it’s usually the game-development education that isn’t good enough. Josh Petrie’s On Game Schools is required reading.

And on a related note, a lot of the posts written by these people are illiterate trash. Notice how most of GameDev is not like that? English is a required skill for game development (and programming in general), so learn to write like a professional. Computer science and linguistics are quite closely related. If you’re terrible at writing, you’re probably terrible at coding too. And nobody wants to work with a person who vomits out words into an email with arbitrary spelling and grammar, either.

Number three: Game development is not a game. One disturbingly common excuse for poor grades etc is that the person hates doing irrelevant things they don’t like, but is totally into working long hours on the thing they love, game development! How many games have you finished, kiddo? (Finished = could plausibly sell it on Impulse/Steam/iTunes without being laughed at, in my book.) How many hours have you worked in the industry, on a real project? There’s a lot of pain involved in getting a twenty million dollar project out the door, to millions of people. If you couldn’t hold your own through a handful of college (or worse, high school) classes because they weren’t fun and interesting enough, you’re probably not cut out to work in game development — or almost any other skilled job in existence. Finish a game project, for real, and maybe we can talk. Oh, and you WILL be asked in your interview about why you don’t have a degree. If this excuse is the best you can come up with, you’ll be politely shown the door.

Number four: We’re in a terrible recession with high job loss rates, people! Don’t forget the practical problems, like the vast number of out of work developers with a real degree and real world experience, who badly need a job and can do much better work than you. Companies aren’t in the mood to hire someone just to try them out, and passion was never a marketable skill. The companies that didn’t already auto reject degree-less candidates before almost certainly do now. You’re trying to stand your “years of DirectX experience” as a hobbyist against people who have likely published one or more cross platform big budget titles. They probably have a friend who already works at the company who can vouch for them. Oh, and that guy is probably passionate about games too, don’t you think?

Number five: You’re just not old enough. I wasn’t, and my job performance suffered for it. So did my grades. I learned along the way, but at considerable cost to myself. An 18 year old high school graduate and a 23 year old college graduate are very different people, and it’s rare these days that a high school graduate has the kind of baseline ability and maturity to handle a corporate environment. And it turns out that the ones who almost universally consider college to be a critical part of their education. The very fact that you’ve considered otherwise tends to suggest that you probably aren’t cut out for what you are trying to do.

Are there exceptions? Of course. A few in a million DO have what it takes, without a degree. Those are lottery odds, though, and I’m not exaggerating. And from those select few who made it, it turns out that (anecdotally, mind you) they don’t recommend following the path they took. And that was before the job outlook in the US went belly-up. The bar was high when I did it, and it’s been raised much higher since. If you do manage it, more power to you. People do win the lottery. And for those of you who did it, let me know if it was worth it. As for me, I decided to get the degree after all.

Douchebag Defined

Recently, a developer (hereafter referred to as “Moron”) posted a tirade about how much better OpenGL is than DirectX. This moron of course got himself linked by another group of morons known as “Slashdot”, and probably some adjunct groups of particularly stupid (but not quite moronic) people such as “Digg”. You’ll note that I am unlikely to be honored by either community. I’m also not going to link this post, because there’s no point generating the trackback or sending any more traffic.

By the way, I wrote about this subject many years back, and very little has changed since.

Now, the problem with Moron is multi-faceted.
* Moron’s post is deliberately inflammatory and attention-whoring. (And as one reader points out, so is mine!) It’s kind of like what Cheney does, in that the post is specifically designed to piss off a bunch of people, while on the surface seeming reasonable.
* Moron’s site happens to have a floating banner in your face, asking you to preorder his game. Isn’t that oddly convenient to have, the same day you get slashdotted?
* Moron’s post does not explain what he does. In fact, it TELLS ME what to do. Fuck you too.
* Moron has clearly bothered to do zero actual research on his subject, claiming that the PS3 and Wii support OpenGL. This is patently false.
* Moron quotes Carmack, out of context, knowing full well that nobody who cares about his bullshit will actually bother to understand the context.
* Moron tacitly implies that DirectX developers — ie, the vast majority of the game development world (on PC anyway) — are stupid and can’t figure out OpenGL is so much better. Coming from a two bit indie studio, that takes balls.
* It’s difficult to accuse someone of spreading FUD when you write this a couple paragraphs later:

Its use is being crushed by a monopolistic attack from a monolithic corporate giant trying to dominate an industry that is too young to protect itself. As Direct3D becomes the only gaming graphics API supported on Windows, Microsoft is gaining a stranglehold on PC gaming.

* And there’s this. I’ve added the bold.

If you’re a gamer who uses Windows XP, Mac, or Linux, I hope you can see that DirectX only exists in order to keep new games from reaching your platform, and the only way you can fight back is to support games that use OpenGL. LIKE MINE. CLICK THE PREORDER. BUY MY GAME.

Just say it, you fucking coward.