Work continues on v r 3, my exhibition of water. Yesterday I started actually messing around in Unity itself putting water all over the place and attempting to have it behave itself.
I’ve written about this sort of thing before, but I’m always really interested in the strange parallels that come up when you’re trying to do some sort of “job” in a game creation context. Whether it’s setting up the staging of a Eurovision show (Epic Sax Game) or doing the interior design for a non-existent institute (Digital Marina Abramovic Institute), there are always these situations where you’re trying to accomplish a task in digital space that is most often done in physical space. Setting up an exhibition of water is another example of this experience.
The most interesting thing here, of course, is the ways in which the digital impinges on the task, making some things much easier, some things harder, and some things just strange. So you can organise a gallery space by just cutting and pasting a file from a previous project, but in the same breath you might find out that light somehow shines through one of its walls which you need to fix. There have been various oddities like this that have cropped up so far in a single day of working on v r 3. Here are two.
You can’t lean over. In designing the plinth to hold the water I wanted it to be as similar as possible to the cubes in v r 2 as a kind of continuation and consistency. But in thinking about labelling and the ability to actually look at the water itself, it occurs to me that a really typical movement people perform in galleries is leaning over something that is lower down in space. The typical avatar always stands completely upright, just swivelling their neck around or, at best, doing a really weird crouch in which they lower themselves straight down in some kind of creepily smooth squat before scooting around the landscape like that. There’s no really naturalistic way to look at something from other postures. And this kind of rigid body (physics joke for you fans out there) has implications for the kind of display technology you then end up using. Maybe the plinth has to be higher so that the weirdo viewing the show is able to look clearly. Maybe the audience member has to be fitted with terrifying telescoping eyes so they can “zoom in” on things they can’t lean toward. Maybe the didact with the information about the particular piece they’re looking at has to be angled at 45 degrees to be legible, or has to be in extra large type. Etc. Consequences.
Water isn’t water. The water I’m displaying in v r 3 is obviously not “really” water, right? It’s not just a physical substance that behaves according to the laws of physics. Now, if I were having this show in reality, there would be all kinds of problems around displaying water, like the risk of it spilling or evaporating, of somebody trying to drink it or splash it, or of it leaking through the materials of the plinth, say. None of those issues are issues in a digital space, though – in those ways digital water is very neat and tidy and resistant to interaction. However, it doesn’t play nice in other ways. You can’t, for instance, take for granted that the world will be reflected correctly from the surface of the water (should you choose to enable reflections, which is a decision you can make). Instead, I fought for a couple of hours with the phenomenon of looking down into a pool of water only to see various bits of the reflective world pop in and out of existence. This does not happen, as far as I know, with real physical water. There’s lots of stuff like this. At one point I had multiple pools of water and realised they were all co-dependent – when I changed the colour of one (again, easy to do, no dye required) they all sympathetically changed colour. Not what I wanted. And on and on it goes. Currently I’m dealing with an issue where if you stand a really specific distance from the water and look into it, it refracts the world around it in a kind of scary infinite-looking regression of swirling shapes. A bit like a demon is about to swim up out of it and claim your soul. Not what I want.
So, once again I’m brushing up against all of these oddities of virtual spaces and virtual objects and virtual liquids. On the one hand they’re often very clean and simple to deal with or move around or remove or add, but on another hand they sometimes all too much like what they are, assemblages of code and assets that may or may not reflect reality.
So, physics. What’s up with that? Gravity. Ha ha, no, gravity’s not specifically ‘up’. I don’t think? Or is it? No I don’t think so.
Anyway, I have never gotten on with physics in games, it’s just not a relationship that ever seems to work out. The typical way it goes is that I spend inordinate amounts of time on things that should be easy because of physics engines, and they don’t work. We’re talking weeks or months sometimes, people. And then, admittedly, towards the end of that horrorshow I do end up with something that ‘works’, but it’s ridiculously too much effort. I’m not sure if it’s one of those things where I should just sit down and actually learn how physics (programming) works, or whether it’s someone else’s fault.
I spent some time the last couple of days trying to do the stupidly simplest thing with a BREAKSOUT game, and I never got it. And I mean simple, like getting a ball to bounce off something simple. But no. It didn’t work and it still doesn’t work and I’m mad as hell and I’m not going to take this anymore.
So I cut that game. Amazing how easy things can be. Having a hard time with your programming? You probably didn’t need that feature/game/universe anyway. Screw it. Off it goes, flapping like a rag into the abyss. That felt better, didn’t it.
Today I found myself lying on the couch feeling maudlin about sprite collision detection and resolution. It was not unlike speaking to my silent (and admittedly non-existent) therapist when I gave a small speech about how I wished I was smarter and knew how to things like collision. I fervently wished at that moment I was a mathematician or physicist or, damnit, just a better programmer! But no, I’m none of these things and so have been battling away with some collision stuff for PONGS for a good chunk of today.
So anyway, I spent the last couple of days doing battle yet more with physics and, yet again, physics won after kind of pretending it had a slight limp and that I might catch up with it. No, no. I actually came up with what I thought was a pretty elegant solution to the problem I was working on, but got all tangled up in flixel’s update code for velocities and so on and could never quite make it happen properly. Then I had a small but important realisation that I was totally missing the point of why I started this game…
Today I had the great pleasure of transitioning from little drawings in my notebook of level ideas to actually drawing them in DAME and then exporting them over to flixel and my “game engine”. Each time I clicked on the little “run” button in FlashBuilder I had the distinctly odd sensation of watching a drawing come to life and be playable. Coins settled with gravity, the avatar could jump and dash around or impale itself on spikes. In short, it was the truly magical meaning of having a system implemented, which is then responsive to input, both those defining the world and those defining actions.