"Nobody cares about performance in indie games any more"
Positech's Cliff Harris lit up GDC with a compelling - and occasionally profane - argument against the ubiquity of the Unity engine
Accessibility is one of the touchstones of the contemporary games business, and not just from the perspective of the consumer. It has never been simpler for anyone with the will to create and sell a game to do so, and, due to the ostensibly altruistic actions of three major companies, this year's GDC marked another milestone at in that process became easier than ever before.
Just as the world's most important developer conference kicked into high gear, Unity, Epic and Valve all announced versions of their engines that will remove yet more of the costs associated with licensing the tools of game development. Indeed, with one or two notable caveats, the Source, Unreal and Unity engines can be used for almost, or actually, nothing at all.
"We have to be edgy and cool because we're indies, but we never innovative on performance. We take Unity, and that's fine"
Anyone working in this industry for the last decade or so is likely to attribute this ongoing trend to one company: Unity Technologies, which was formed with the express purpose of 'democratising' game development. For a great many people working in the industry today that mission statement is the reason they are making games at all, and, taking a purely objective view, it has proved to be a powerful business model - both economically viable and germane to the times.
Generally speaking, Unity's rise to prominence has been one success story it's easy to feel good about. But there is another view, and as GDC's "Indie Soapbox" session drew to a close, Positech's Cliff Harris took the stage and expressed it with confidence and no small measure of biting wit.
At this point, a little context might be useful. The Indie Soapbox was composed of ten speakers from the indie development scene, the very community that Unity's iconoclastic mission has served so well. Each one had five minutes to detail a nagging concern, a driving obsession, a worrying thought, or pretty much anything else. The emphasis was on brevity rather than histrionics, and honesty most of all. There were talks about being a mother, dealing with failure, and drawing on life experience to make games more relevant. Cliff Harris, a British developer of 15 years standing, went with the following title: "Fuck Unity, and the horse it rode in on."
"You don't scare me," Harris said, smiling as the crowd responded with what can only be described as gleeful surprise. "I'm not really saying it's evil. Obviously, Unity's good in all kinds of wonderful ways." A loaded pause, a wider smile. "I hate it."
In his lifetime, Harris explained, Moore's Law has proved to be accurate. Computing power has rapidly increased while the cost of accessing that power has plummeted, to the point where the first games Harris played now seem rudimentary, even laughable. Bug-Byte's Manic Miner has many good qualities as a game, he said, but it "looked like shit" even in 1983. All games did, in fact, due to the limits on what was technically possible. "We can do incredible stuff these days," Harris reminded the audience, and yet the indie scene has become defined by a prevalent lack of interest in doing so.
"We don't care about how stuff works as much as we used to, and that makes me really sad. We just use what other people have written"
"My problem is that indie games still look like that. I mean, I get it: pixel art can be an aesthetic choice... But nobody cares about performance in indie games any more. We get a free pass. We have to be edgy and cool because we're indies, but we never innovative on performance. We take Unity, and that's fine. We never push it and write our own engines, or anything like that."
Harris, it should be noted, does write his own engines. Indeed, when he first became interested in game development that sort of technical understanding was a prerequisite. But in addition to being essential, it was also crucial to the appeal - to the mystique - of the job. Harris projected a slide depicting Q, a god-like entity from Star Trek who could manipulate the universe for his own ends and, often, amusement. He followed that with a photo of a young Bill Gates, nonchalantly tossing a floppy disc towards the camera. For Harris, there was something distinctly god-like about programming. You were the architect of a universe, the author of its rules and laws
"We used to be like that," he said. "There was hardware and there was us. We understood how it worked and nobody else did. It was this magic box that they didn't understand, but we understood everything.
"This is my problem with middleware, and I know not everybody feels this way, but suddenly we're not gods any more. We don't have control over the universe. We don't care about how stuff works as much as we used to, and that makes me really sad. We don't feel we need to master the bits and the bytes. We just use what other people have written.
"There are gods, and now we just license their engines."
Photograph taken by Dan Griliopoulos.
Sadly with cars, there's very little between them, and they too seem like they are all derived from the same class!
Edited 1 times. Last edit by Sandy Lobban on 4th March 2015 4:20pm
It's also brilliant that even people who don't have hard CS skills like programming can build their games and express their ideas - it's allowing gaming to grow.
Edited 1 times. Last edit by Sandy Lobban on 4th March 2015 3:30pm
The commodification of engine technology is awesome, and is a big win for everybody. But using your own engine can still be the correct decision under certain circumstances; it's not *always* the right decision to reach for the middleware, much as it has become a truism of game development in the last few years.
It almost always makes sense to use a professional-grade engine, but the one exception I would make would be if you have an engine of your own with which you are extraordinarily familiar; the productivity benefits you gain from having an engine which maps almost exactly to your mental model of how a game engine should work are enormous. This is particularly true when you're a solo programmer working on your own projects (which Cliff mostly is). His engine will also be very, very optimised for the narrow set of use cases he prefers to concentrate on, which, looking at his games, will be the fast and efficient rendering of thousands of sprites. In your own technology, assumptions can be made and the resulting simplifications can vastly improve productivity and performance. Speculative generality is the prime source of bloat and complexity.
For example, I know Unity well from using it professionally, and I have an engine (based on MonoGame) which I've written. If I were to go independent, I would very, very, likely pick my own engine to work with. Not because it's better than Unity (it most assuredly isn't!), but because it is heavily optimised for the kinds of games I like to make (procedurally generated, huge playing area etc), and it maps exactly to my preferred engine architecture. The cognitive load on me between mentally designing something, and achieving it, is tiny.
There's a lot to be said for that, and I think that's where Cliff is coming from. I think of it as just a wee counterpoint to the prevailing winds in the engine scene :)
Different strokes, I guess. :)
Our current game Exo Miner is developed in our game engine, but once this project is done we are probably going to move over to a 3rd party engine. Not really because we want to, but more because we can't compete in terms of time with teams that use 3rd party game engines.
Something we have learned along the way is the games industry isn't all survival of the fittest, but a lot of the time its survival of the quickest.
Edited 3 times. Last edit by Darren Adams on 4th March 2015 6:06pm
Whether this works, whether we finish, whether it turns out to be a "good" game ... and whether anyone buys it is another Q :)
I think what he wants is for the Demo scene to come back :)
There are limitations and drawbacks to working within the ecosystem given to you but the positives far outweigh the negatives for a lot of people.
We are always are welcome to make our own in-house engine if it makes sense, and often people do. For many, the cost and time savings of using an off the shelf engine, with years of dedicated resource, R&D and development can make more sense.
It could take a long time to reach the level of advancement seen in UE4 or CryEngine and then to target so many platforms so effectively is another matter altogether.
Yes people don't really need to to understand low level memory management when they use Unity, but what if we applied that the machine code? Now it's rare to find a programmer that understands machine code fully. That's not a bad thing, if we couldn't use higher level languages it would take far longer to get anything done. Does Harris lament the fact that people use C++ when they could be coding in pure binary?
If technology progresses we have to accept the fact that as it gains broader appeal we can't expect everyone to know every technological detail that goes into it. If Joe Bloggs needs to write a report for his boss on the latest financials he doesn't need to know whether his document will be encoded using ASCII or Unicode, and he certainly doesn't need to make the word processor himself.
The games industry is expanding, and to keep doing that it needs to have higher levels of working. The human mind can only really master so much. Once more, those lower levels haven't gone away, there will always be a need for those skills that he mentions, and last time I checked there was nothing stopping you from getting OpenGL libraries and start coding an engine yourself (or should we be writing graphics libraries ourselves too?).
I hope that's not true. Programmers opt not to code in assembly it for obvious reasons - time, maintainability and the simple fact they're not likely to outperform the optimizer. However if a programmer doesn't have a reasonable idea of what instructions their high level code is going to break down into they're going to write code that can't be saved.
Memory management is no different, yes hardware gets ever faster but that just means cache misses become ever more significant. The performance cost of having a programmer ignorant of the hardware and what their code will translate to is, if anything, increasing. Not to say they should be writing at a low level; but they certainly shouldn't be ignorant of it.
Unlike a high level compiler, you probably can quite easily outperform an engine like Unity. If that matters for your project, and if the scale of it makes that practical is another issue entirely entirely, but we're a long way off the point where everything is a nail for the unity hammer. If you're producing a simplistic title with high performance requirements, such as the next geometry wars or resogun it's probably time to take a look at alternatives.
If your requirements are in-line with the feature sets and performance offered by an existing engine, then obviously it's pointless to write something from the ground up.