DS, Frames & iPhone

A DS and a good game is such a lovely little package. A modern game and nothing more, complete and contained within its little japanese clamshell. No downloads, no updates, no facebook status, no-in app purchase and no highscore achievement leaderboards.

I tend to think that to some extent the frame makes the art. It says, “this is it, this is a thing, here is the extent of it, consider it”. From that point of view a DS game is very well framed. The DS is modern, if limited, hardware featuring all sorts of input, good quality output and technical capability, but all of it balanced within a certain scope.

By contrast an iPhone makes for a large and very fuzzy frame. The hardware is technically very powerful, but capabilities varies between model. Even on a given device, resources are shared between many apps at once, always being available for cellphone calls, meanwhile checking your email in the background.

The internet encroaches, scores, open feint, game center, advertising or social media. Download an update, purchase the second episode. The game leaks into everything else and everything else into the game.

The incredible retina display is put to use displaying some bland 3D model, downloaded for free by a developer, sparsely animated if at all and clumping round a poorly thought out game. You can feel the game barely inhabiting the pixels, its hardly there. A strong breeze and it may just blow away, replaced with one of its 200,000 friends.

Finally and unavoidably, the only dedicated hardware button on an iPhone game is the one that says “go elsewhere”.

I’m currently playing “Might and Magic, Clash of Heroes” on the DS, and it feels like a very thoughtful gift. Given, once and wholly, from the developers to me (thanks Cabybara you guys are great). The sense of enjoyment, delight and investment in the game grows on the strongly given message, “this is the game, this is it, the whole thing is here, right now, in front of you, we worked the whole thing out and its all here waiting for you”.

However to make games and distribute them myself the DS is not really an option. Unfairly, but understandably, Its homebrew is closely associated with pirated games and there is only unofficial development tools available. By contrast the iPhone gives me easy access to an official SDK and a monetised distribution channel, both greatly appreciated gifts by me and a giant hoard of other developers.

So its seems like a challenge, how to cultivate the same sense of a packaged, complete and fully present game within a frame of such broad and fuzzy scope.

Fracture – An Audio Unit

I have an occasional interest in digital audio programming, and followed up an idea I had on the train the other day for an audio effect. I’d not written a plugin for a while but Xcode has a nice template project for an Audio Unit plugin and Apple has a good tutorial on the web so it didn’t take long to try out my idea.

Introducing Fracture

Fracture breaks the incoming sound into granules and then delays each granule relative to its volume. As you can imagine this sounds like quite a mess, the sound fractures in time and place like a skype call going through three separate satellites.

There are controls for wet/dry mix, granule size, the ratio of how volume effects the delay and the ability to add a fixed delay to the dry signal to help things line up. I’m not sure if there are many useful settings in there but it does create a wide variety of effects depending on the source material.

Its a little raw but please give it a go.

To use this audio unit, download the zip file at this link. Unzip it and place the component file in your home folder under Library/Audio/Plug-Ins/Components

download fracture

It works under Garageband or any Mac audio software that supports Audio Unit plugins.

Programs, Ideas, Decisions

If the ideas expressed here abuse otherwise well understood terms in vague and inconsistent ways or are just flat out wrong, please feel free to copy and paste this post into your word processor and change it to be more agreeable to you.

Actually that sounds too harsh like I don’t care what you think, which is not strictly true. What I mean is there are plenty of holes and vagaries here to warrant correction or disagreement and you shouldn’t let my wrongness get to you.

Programs are ideas not code.

Programming is arranging systems to express ideas. The quality of the result is determined by the clarity and understanding of the ideas that inform those decisions.

Sometimes a distinction is made between systems and application programming. The idea is that systems programming produces programs for use by programmers or other programs (such as operating systems, libraries and tools) and that applications are produced for users. I think this is a false distinction. All programs appear as abstract systems to their users, application is the act of using those systems. The work of a programmer is to take a set of more abstract systems, shaping and hiding the possibilities inherent in the base systems to produce a simpler, more concrete system closer to the users need.

Application of systems producing more systems. Its turtles all the way down.

Programming is irreducible, there is no silver bullet or tool that can remove the programming from programming. Good tools, libraries and languages only help to clarify the task of programming and remove obscurities. They may reduce the lines of code you write but do not reduce the act of programming.

Libraries and components that are completely configurable do not contribute to your program. Their use and configuration is an equivalent act of programming to working without them. Complete and perfect abstractions belong to mathematics, not programming.

Code can be a liability that stands in the way of our ideas as much as it is the only way to give them shape and life.