No Time To Play

Weekly Links #21

by on Jun.03, 2014, under Gamedev, News, Opinion

It doesn’t happen often that I have one overarching theme for this newsletter; usually it’s just that I discuss a single link at length. This time it’s different. Get ready for yet another big rant about 3D graphics. But not just yet.

I want to start with a little video. Via Shamus Young, here’s a fascinating viewpoint on what the mechanics of Civilization (the game) betray about the developers’ view on the actual human civilization. Too long, didn’t watch version: remember Fry’s reaction to the theme park version of history in the pilot episode of Futurama?

Incidentally, the point they make in the video is very similar to Aaron Reed’s critique of the Star Wars prequels from a few months ago: somehow, along the way, we’ve grown used to the idea that history is a preordained series of events, rather than being shaped naturally by the actions and interactions of many individuals. To the degree that we acknowledge people at all, it’s a handful of historical figures seen as demigods who did everything by themselves…

Troubling, isn’t it?

In unrelated news, the same Shamus Young continues to rant against OpenGL, sadly without saying much that’s useful. Yes, it’s a quaint, inconsistent and overly complex API. But remember, they did try to simplify it with OpenGL ES, which forms the basis of WebGL. The result was mandating the use of shaders, which not only mean a lot more boilerplate you need to get started, but open a whole can of worms when it comes to compatibility and security.

What, then, are we supposed to do? Sticking to a single, proprietary platform is obviously out of the question in 2014. And there’s no open alternative out there.

Unless, of course, you consider the obvious solution of software rendering.

I’ve written about it many times before, and every time it elicited strong reactions. My readers keep complaining about how they absolutely do need hardware acceleration to do fancy stuff, and I keep telling them they don’t need to get fancy. And I could start again with my usual litany of examples from the 1990es, countless games that looked gorgeous while being incredibly low-tech. Or even ugly games from the 1990es that people are still fond of anyway. Final Fantasy VII, anyone? Yep, you could trivially run it in software these days. (Also, redo the sets in the same cartoonish style as the characters and nobody’s even going to notice the ugliness anymore.)

But then I stumbled upon this article about the making of Starglider, and I remembered that (wireframe) 3D was already doable on 8-bit microcomputers that were unimaginably slow by modern standards. How much could we do nowadays without ever touching a GPU?

(Technically, you could also do flat-shaded 3D on those, just not quite in real time; for that you needed a beefier 16-bit CPU.)

We’re unlikely to learn the answer, as even 2D games have started relying on 3D acceleration in recent times. See, people want to do fancy stuff in 2D as well… and video card manufacturers have been so obsessed with 3D that 2D acceleration functions are likely still limited to the basic blitting needed for graphical desktops. (I mean, before they tried to go 3D with those as well; luckily, users quickly got bored of wobbly windows, and now we’re past that horrid fad.)

You’re going to say it doesn’t matter, that nowadays even smartphones have GPUs. But then why do we keep hearing all these horror stories about bugs, incompatibilities and proprietary platforms being left unsupported mid-project? With software rendering, all you need is a general-purpose CPU and a drawing surface. You don’t depend on anyone.

And if that’s just not relevant, then why do engines such as JPCT and three.js still include software renderers?

To end on a cheerful note, I’ll point out that not one but two game bundles last week were focused on game-making tools; the latter even appears to specialize in them. And as the runaway popularity of Twine demonstrates, the democratization of game development is important to many people.

Have fun making games.

Creative Commons License
Weekly Links #21 by Felix Pleșoianu is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

:,

2 Comments for this entry

  • fluffy

    Funny, the reason I like OpenGL ES so much is precisely because it’s just like doing a software renderer – it’s just that the software is being written for graphics-specific hardware.

    The “boilerplate” necessary to get a basic renderer going in GLES is much less than the boilerplate necessary to get a basic renderer going in software. It also takes less battery power and gives you a lot more stuff for free (blend modes, pixel format conversion, basic interpolation), some of which is still devastatingly slow on CPUs, especially mobile.

    • Felix
      Felix

      it’s just that the software is being written for graphics-specific hardware.

      Yes, graphics-specific hardware which is subtly incompatible with the next manufacturer’s product, relies on up-to-date drivers which are seldom available, has unpredictable performance issues…

      The “boilerplate” necessary to get a basic renderer going in GLES is much less than the boilerplate necessary to get a basic renderer going in software.

      But much more than was required for OpenGL 1.x, which was my point. Of course the code for an entire software renderer is going to be bigger than the boilerplate for an OpenGL application. Should I bring the size of Mesa or the like into the comparison? OpenGL drivers? Shader compilers? The hardware description of a minimal GPU?

      Oh, and I was unable to locate a WebGL demo that would run on my tablet at all. It doesn’t look like 3D acceleration is the main bottleneck…

Leave a Reply

Turn on pictures to see the captcha *

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Posts by month

Posts by date

June 2014
M T W T F S S
« May   Jul »
 1
2345678
9101112131415
16171819202122
23242526272829
30