In what are hopefully the final stages of making v r 3 now. I have every Unity and third-party water working sufficiently well in the space that I think it’s ‘showable’ now. That is, I’ve either tweaked things enough or made peace with their appearance enough to move forward. This means I’ve been paying more attention to the idea of the game as something I need to put out into the world. And so:
WebGL. I’m not going to fight with WebGL in order to make a web-playable version of the game. I’m sure it’s possible, but at the moment the build crashes almost instantly with various script errors that don’t make sense to me immediately and I feel certain that if I engage with this I’ll spend another couple of weeks trying to get things in order. And even then I’m not convinced that all the waters will even work in the web context. Better to just restrict this to a desktop experience I think.
Title. Realised I need a title screen, so I’ll get onto that at some point. Can’t just crash land in a gallery of waters. It will be so much more helpful if a little screen comes up that says “v r 3” and then you crash land in a gallery of waters. Right? I know.
Compression. When I build the game right now it’s kind of bigger than I “want”. I’m not sure what I mean by that, but it is (or rather was) around 180MB uncompressed, which seems kind of excessive. It’s basically the fault of all the millions of textures (images) that the different waters use to create their effects, some of which are are almost incomprehensibly enormous. This gets me to one slightly interesting thing, which is the idea of compressing the textures. Obviously if I compress them they’ll get smaller and the overall game will get smaller as a result. On the other hand, if I compress them, am I somehow diluting the artistic intent of the creator of the water? Again, it’s that same question of parameters applied to texture compression – to what extent is it my prerogative/duty/right to alter the default composition of one of the artefacts that I’m treating as artworks here? It’s like, if the Warhol doesn’t quite fit on the wall you don’t cut some of it off, so…
Anyway I don’t have an answer to that one. I guess I’ll compress them because my hatred of large file sizes is greater than my desire for originalism in this particular scenario. Also, if I’m interpreting the documentation correctly, Unity can do a particular kind of compression that doesn’t actually affect the texture when you play, but only in terms of when it’s being stored, so perhaps that’s win-win. For what it’s worth, the two images above are of a compressed and uncompressed texture respectively… or it’s the other way around… I can’t tell the difference/
That’s what I’ve got. Some days are harder than other.
I wrote briefly about some experiences with water gone wrong in v r 3 a little while back, but since I’ve been rebuilding the game from scratch to eliminate some lighting problems, I’ve run into a couple of my old weird friends again, like “super sharp sticky-uppy water” (above) and so on.
The above image is what happens if I literally just take a specific water I bought and resize it to fit it into my plinth. In a sense, then, this is “just what the water looks like” when you apply that simple transformation to it. And it’s a transformation I don’t think is terribly unreasonable – I need the water to exist in a smaller area, so I resize it. The fact that the water ends up looking like this is, I guess, most of all a result of the sometimes extreme parameterisation of the various waters I’m installing in the gallery. There are generally quite a large number of factors to be controlled for any given water, and they tend to rely on one another for an overall coherence of appearance. Thus, if you resize the water above, you also need to make sure that you change other aspects like the frequency and amplitude of its waves so that they make sense in the new context.
On the other hand, the water above looks pretty amazing, I’m not going to lie. And there have been quite a few instances of “broken” water that has looked pretty spectacular. Some water, for instance, completely ignores its scaling and just renders to the horizon anyway, leading to the entire gallery being half submerged. Some water has little undulating pieces of itself sticking through the sides of the plinths.
So there’s certainly a beauty to these distortions of shaders and scripts. As I’ve heard a few times, there’s probably another gallery show just in that idea itself. There’s a challenge there I think, though, in terms of what the “rules” for such a show would be. I don’t think it’s necessarily fair to just work out a way fuck up a shader or other Unity asset so it looks ridiculous and then display that. It’s true that that appearance would be “within its parameters”, but it feels a little in bad faith perhaps? (As I write this I’m not so sure.) Instead I guess I’d want some sort of “reasonable” transformation (like the plinth scaling) that turns out to create strange effects. But of course lots of the problems I have with the scaling in v r 3 don’t end up being visually interesting like the jagged water – most of the time you just end up with a completely smooth plane or something along those lines, so that kind of wouldn’t work anyway.
In the end I always want some sort of underlying formal reason for things being the way they are, I suppose. I feel like that gives a player a framework for understanding what they’re seeing, rather than just what they’re seeing being kind of the end of it, like “look how crazy this is! ha ha!” I think in the past I’ve called this something like the “ground truth” of a project, I don’t know what a good name is, but it’s certainly a vital quality. Most importantly, I think, it really helps me make decisions and move forwards – you know whether a particular idea/technical process/visual meets the criteria of your core guiding framework. So for v r 3 I know that the underlying concept is that I’m wanting to provide a context for thinking about water as a technical/aesthetic object in the context of videogames. Everything I’m doing, from the positioning of the sun in the sky, to the shape of the plinth, to the parameterisations of the waters themselves is informed by the objective.
Without something so strict, I think I’d just constantly get lost or feel like I’m kind of deceiving the player – pretending there’s coherence and meaning where there isn’t any. Thus to do a project where I’m showing “messed up” waters, it’d need some guiding idea like “water when you scale it down” or “water with each parameter set to a maximum value” or something, and even then, with that “or something”, you can tell that I’m not yet a believer in that version of the project. Something more like “messed up visions of water I encountered while making a different project about water” might be acceptable too, I guess, but it’s less conceptually interesting to me.
Etc. etc. etc. Sorry.
Thankfully I’ve managed to find a way to find one more frustrating aspect of v r 3 kind of interesting again. With one of the more expensive waters I’m using I’ve struggled mightily to get the configuration of the water “right” – notably to scale it down to my little plinth-amount rather than a lake/sea/river’s worth of water. The water looks great at a large scale in the demo provided with the water itself, but when I scale it down and put it in my plinth it looks terrible.
Or does it?
See, the reason I’ve been frustrated and fighting with this particular water is that you kind of can’t quite see it when it’s in the plinth. You can kind of make out some rippling, and if you move around you can see the light reflecting off its surface now and again, but there isn’t that satisfying kind of blue “here is some water” effect that most of the other waters provide when I put them in the plinth.
Except that water isn’t actually blue, right?
Water is, in its pure form, clear/transparent/see-through. So when I put this water in the white, featureless plinth and I can’t see it, there’s a sense in which it’s behaving more like water than the other water’s I’ve been working with. If you really got one of these plinths (in physical reality) and poured water into it, and looked down into the water, you wouldn’t see much of anything either. Unless it was rippling and caught the light, say.
So in fact the problem with this new water illustrates yet another fun tension in this project, or rather a question. Or maybe two questions?
To what extent is it my job to make any given water look good in the plinth? A lot of the waters, as I’ve detailed in past posts, don’t necessarily play nice with being scaled down, for example. I’ve been working on things like rescaling textures and normal maps and so on to have the water appear more like water, but another way to approach this would be a more hardline attitude of saying “whatever the water looks like when scaled and placed in the plinth is what it looks like”. That would be easier, too, but doesn’t sit right. My compromise has been to roughly try to convince the water to look like it does when it’s big, just contained in a smaller space, which has almost always required me to tweak various parameters (ineptly and with many curse words thrown about).
What does it even mean for water to look good? This is perhaps a deeper (ha ha) question? As above, I’ve tended to answer it by saying that the water looks good (or ‘correct’ perhaps) when it approximates what the creator of the water made it look like in their demo or prefabricated version of the water. However, as in my discussion of the clear water further above, sometimes you can’t necessarily do that because the water itself is closer to a physical simulation of water. If the water is designed to essentially be clear and thus to only draw colour from the container, say, then if you put it in a plinth and it’s basically invisible then it’s “good” in the sense of looking like water would really look in a plinth. But it’s also not good in the sense of how we kind of want water in a videogame to look in a plinth. We want it to look “watery”, and without really thinking it through that means it should probably be bluish and highly visible. This also starts to link up to larger ideas about “good looking water” as a real technical benchmark for videogames more generally, I guess. And again, I’d venture that it’s not necessarily the case that the most perfectly simulated water would be considered the best, but rather the water that somehow feels the most real. Which is different.
The upshot of all this is that I’m almost at peace now, I think, with letting this water I’ve been fighting with just be transparent and that’s that. It’s water, that’s just what it does, right?
Somewhat deliciously the water in this case is called… Realistic Water. The clue’s in the name. Ha ha. Bye.
You probably haven’t noticed, but I’m trying to write something three times a week lately, ostensibly on Monday, Wednesday, and Friday. Some days it really doesn’t come easy though, like today. Or like almost every day, if we’re being honest. So for the moment just let me complain a little bit and be done with it.
An obvious metaphor for game development is that of being a god. You literally say things like “let there be (a directional) light”, click a couple of buttons, and light appears in the world. But almost immediately a difference appears: you don’t see that it is good. It may be bad. If you are me, it may quite often be bad. If you are me, this may mean you are quite often sad.
Light specifically is something I continue to have very little grasp of in Unity. It’s so fundamental, so important, and I should so probably read some kind of foundational text about it and just “get it”, but I never do, and so my light misbehaves. In the current project (v r 3) I’ve had my share of difficulties with light, only some of which I’ve solved. Some of it is akin to just being a bad carpenter, with light shining through apparent chinks in the walls where it shouldn’t. Sadly there’s no Grout Tool.
But there are other, more cosmic tricks of the light too. For a while a strange “reflection” of the world was appearing like a vision in the middle of the gallery, appearing to show the outside of the gallery space. It was a little bit blurry, not unlike something you might actually see in a game, I suppose, for some narrative effect – but I didn’t put it there, it just turned up. I still don’t know what I did to make it go away. I turned some lights on and off. Destroyed some lights, created others. Now it’s gone. It may be back.
Some water in my gallery seems intent on being very brightly lit, no matter what the light situation “actually” is. If I turn the lights off, the water goes black, but if there’s the slightest hint of light in the world, the merest creeping of dawn, it blares bright white. Why? I don’t know. If I make a brand new world (which I can do, sad god that I am), and put that same water in it, it behaves fine – it just looks like water. As far as I can tell all the light settings and entities across these two worlds are identical. The water just feels differently about them, I suppose. I’ll probably have to make my gallery world from scratch just to satisfy this particular water.
Despite being god, I’m at the mercy of these irregular ripples of nonsense physics; I hover over the waters like an anxious parent over a troubled child.
Today’s ventures with v r 3 have been largely met with deep, deep frustration trying to get various third-party waters working in my setup. There are just so many ways for things to go wrong it seems. Early in the day I was quite entertained by the bizarre shapes and contortions the water was getting itself into…
It sometimes even seemed to suggest whole new worlds of possibilities…
But by and large, as the day wore on and I was still struggling, it really did stop being particularly entertaining. I signed off at the end of the work day with roughly 10 third-party waters installed, and with about three of them barely functional. I suppose that’s not all that bad, but it felt like a tough day. Which, you know, is also interesting in its own special and beautiful way, probably, but I’ll be damned if I feel like writing about it.