Archive

Monthly Archives: December 2018

Over the last few years, I’ve been trying to get better at art – in the specific sense of visual art, that is – drawing and painting and, most frequently, digital art. I think I’ve succeeded at the goal of getting better, though I still fall short of what I want to be able to achieve. Over the past few weeks, I’ve been trying to understand 3d art – in this case trying to construct an environment that’s visually interesting and feels reasonably natural to exist in. Most of my abortive forays into 3d work haven’t really concerned themselves at all with scale or natural placement or trying to set a scene – at best I’ve learned the basics, and now that I’m learning the basics again I suspect I didn’t actually learn them very well the first time.

It’s a strange sensation, sometimes, trying to extrapolate the things I’ve learned from 2d art into 3d art. When I’m doing a painting, I compose the view and then decide where the light is and, as I flesh the piece out, I try to remain true to those decisions. When I’m working in 3d, I have to position the entrance to the room and position the lighting to create the ‘composition’ the player actually encounters in the world, and the specifics of how that light gets rendered are handled by the 3d program. I’m still far short of where I want to be in this field, as well, but because it’s a newer skill to me I at least feel like I’m quickly improving.

The more I work at it, though, the more I notice there’s something missing. If I were to sit down in a drawing workshop and draw a model, then move my chair and draw them again, and do that several times, those drawings together would comprise something like a 3d interpretation of the model. Even if I did a very good job of those drawings, though, there would be discontinuities – part of the process of drawing would be to make decisions, exaggerations, corrections… there’s no such thing as perfect representation, because the lines we use to draw are largely conceptual, whereas the model is a person with a physical presence. Each drawing goes through its own artistic process, interpreting what I am able to see through my flawed eyes and converting it into a linear and shaded approximation. In 3d art, though, I just create the environment and leave that visual interpretation, what would be my drawing in this analogy, entirely up to the renderer. The gap, the thing that’s missing, is the 2d artist whose place is being taken by the computer – or, to be more precise, in this case the artist’s place is taken by Unity’s default rendering pipeline.

This isn’t to decry 3d art as in some way being less ‘real’ art, but to bring up the idea of the many kinds of art that it could be but currently is not. In our quest for consistency, for realism, we’ve left behind much of the power of 2d art – the ability to exaggerate, to portray the impossible and cartoonish. A good example of this would be the video game adaptations of cartoons like The Simpsons: In these shows, characters rarely face towards the camera because the style of the show usually only holds when they’re in 3/4 profile view. The particular cartoon squiggles that comprise the mouths and eyes only really make sense in that perspective, so whenever the script calls for a character to be seen from a different angle it looks off, weird and confusing and sometimes downright unrecognizable. The 3d game adaptations, however, require the characters to be viewable from every angle – so the style is collapsed into 3d models that makes approximate sense from every angle but also never really look like the cartoon original. Even the most elegant and well-executed cel-shaded outline shader can’t fix the issue that 3d rendering will, at the end of the day, be a faithful and uncreative depiction of the model data.

I know that you could affect the geometry of the model with a shader as well, but I haven’t seen it applied towards this problem – unsurprising since I expect I’m the only person who considers it a problem. Whether because of the constraints of technology or because of our worship of ‘realism’, the idea of making models that don’t appear the same from every angle doesn’t seem to have ever really taken hold. Every game establishes its own language, so in the end objects in a game can look like basically anything and the game continues to work. Just like playing make-believe as a child, a stick can be a sword if we agree it is a sword, a bush can be a dragon, the floor can be lava. If we can push things this far, why don’t we? I mean, we sometimes do, but usually only in the context of relatively low-tech ‘retro’ experiences, either using simple pixel art or low-poly 3d styles. We have yet to unleash most of the power on our disposal on the challenges of surrealism, impressionism, cubism – and, on the rare occasions when we begin to push in these directions, it’s usually only to try to emulate the most well-known 2d visual aspects of that style, rather than making any attempt to interpret how these might translate into a 3d space.

In general, the aesthetics of games fall into two R’s: Realistic and Retro. Recently there’s been a bit of leeway around ‘realism’, but it’s still the broad category AAA games fall into. While games like Dishonored and Breath of the Wild may not be attempting to appear real, they still try to emulate a version of reality, a world that is consistent in its rules and its appearance, a world where even if the particular appearance of a thing is stylized it still has the essential properties expected of a real object. Retro games, conversely, are willing to be weird, to be inconsistent, to be arbitrary and unreal – if they emulate the exact forms of inconsistency and arbitrary unreality that were the hallmarks of the nostalgic history of video games.

Any one of those quirks that are typical of retro games, though, could be harnessed now, and recontextualized into a modern space. The tendency for sprites to receive erroneous memory addresses and replace parts of an important game character with text or another character was caused by the specific implementation of pixel graphics used in old games, and has been used narratively in interesting ways by games like Undertale, but there’s no reason that must be married to a retro style – we could just as easily have a scene where parts of a 3d model flicker and are replaced with parts of another 3d model. It wouldn’t have the same contextual meaning as it does with sprites, where it comes to stand in for the concepts of corruption and elemental chaos – but that wouldn’t keep it from being visually interesting! Or, another artifact of retro games is pixelation – pixelation is still called back to in 3d contexts, sometimes, but only by creating low-resolution textures or occasionally creating 3d equivalents, voxels. However, that’s an interpretation rooted in a visual rather than a systemic understanding of what pixels were – what about an art style where all vertices of a 3d object snapped to a grid? What about an art style where models are rendered to a texture and then crunched down into a sprite and projected back into the world?

I bring up retro art, though, just because it’s the most understandable entry point into non-representation (or at least less-representation). Retro is the only area in game design where looking anything besides beautiful, anything besides representational, gets much allowance from potential players. We are prepared to accept retro because we know what it’s trying to be. We must be prepared to accept more, to accept the weird and ugly and inexplicable.

I understand why it has been necessary to attempt ‘realism’ for so long. Picasso drew a lot of normal very pretty paintings before he started painting blue shit and weird cube people. Eventually, we need to accept that we’ve got this reality thing down pretty well, and be willing to push outwards. We have the power to make worlds – why do we keep trying to just make this one, over and over and over again, with just slight thematic variations?

The first of what will hopefully be many monthly projects is complete! This ended up being a little bit more along the lines of a prototype than a complete game, but I expect that most of them will – and it’s still quite playable for what it is, I think. Click this text or the above picture to download the game.

I learned a lot about how Unity works doing this. Starting from the incredibly basic Roll-A-Ball tutorial provided by the Unity team, I added a jump (which didn’t make it into the release version, but which I am quite pleased with nevertheless – if I end up creating a more complete and sellable version of the game it may find its way back in), then added an advanced camera and gravity beam. Most of the development time went into implementing and tweaking these effects, and I’m very pleased with the overall feel of it now, though certain aspects, such as the simple “X” beam cursor and the occasionally clumsy camera, could use improvement. The game is unfortunately still rather unoptimized – I’m unused to 3d optimization in general, and also more specifically unused to optimization in Unity, and also most of the few things I do know about optimization have to do with ensuring that the game doesn’t render things the player doesn’t need to see – which, in this game, is honestly not very many things, since movement speed can be so fast and can change very quickly the player really needs to be aware of where all the platforms are at all times. That’s one reason I wanted to make the player character reflective, so that you have some idea what’s around you even if you’re not looking in that direction. Unfortunately, because the character is reflective that means even the parts of the level you’re not looking at need to be rendered, so it really does affect the performance.

So, what did I learn from this project? What went right and what went wrong? About halfway through, I was imagining a game with approximately the same gameplay but set inside a giant office or other mundane room. This would have been difficult to do, because I have very little experience creating a realistic 3d space, so eventually I decided to make a more abstract “cyberspace” world. This helped me create a simple level quickly, since I could really just throw together whatever geometry seemed interesting without any concern as to creating textures or ensuring everything was to scale, and also allowed me to create a very open space where the player could do almost anything with the gravity beams. I knew early on that I wanted the player to be a glass sphere which shattered on hard impacts, partially inspired by Marble Madness. It took me quite a while to figure out how to create the shattering effect – I eventually found code to create something along the lines of what I needed, but had to modify it slightly but significantly to suit my purposes. I’m pleased with the final shattering effect, though it sometimes renders in ways I don’t expect.

I tend to think of music creation as coming fairly quickly and easily to me, but it was actually difficult under the time pressure of the last few days of the project. While I like the track I came up with well enough, it’s shorter and simpler and has less production work than I usually like to put into my musical work. I think it’s well suited to the game though, and I haven’t gotten tired of listening to it yet which is a good sign. The sound effects were mostly pulled from freesound.org, though I modified many of them quite significantly, mostly to make the glass sound a bit more musical when it struck or rolled.

All in all, I’m quite satisfied. It might not be the most ambitious project, it might not have a ton of content, but I do feel it offers something unique and that I have executed it to a reasonable level of quality. I may revisit this project sometime next year and try to develop it into a complete game, which would involve adding a bunch of new levels, leaderboards, and ideally some sort of head-to-head racing mode.

For December, I’d like to try to patch up a weakness of mine: The same way as P1aySpace ZER0 was an opportunity to learn Unity, I would like to take this opportunity to learn to create the kind of realistic 3d space I opted out of making for this project. I’m not sure yet what kind of game I would be setting in that environment, though I have a few ideas — first I want to plan out and construct this space, then I can see how much time I have left, during this very busy month, to build a game into it. Hopefully I will be as pleased with that project as I was with this one.

Oh, before I forget, since this game turned out quite a bit more difficult than I had initially expected it to, here are a few tips:

  1. Use the repulsor beam. Though going fast is fun and satisfying, you will almost certainly destroy yourself if you don’t use the repulsor to slow yourself down sometimes.
  2. Don’t worry if you miss a gate. Until you get down to the last couple of gates, missing one usually sets you on a trajectory to hit another. Every missed platform is an opportunity to swing around and fly in a different direction.
  3. Rapidfire the beam to climb. Once you’re holding yourself close to an edge with the beam it’s usually possible to climb or swing up, but getting there in the first place requires you to pull yourself up with the beam.

Happy rolling!