EveHeader

As alluded to yesterday, I’ve been feeling somewhat off of my game recently. The good news is that, while I thought there were two major bugs in the collision detection system, they may have had a common cause since fixing one appears to have fixed the other. I won’t quite commit to saying the collision detection is done, and I definitely won’t say it’s perfect, but it may be at a quality suitable for a finished game. I’ve seen worse in released games, for what that’s worth.

The bad news is that I haven’t gotten much more than that done this week. I spent a day tidying up and making minor improvements to my first simple enemy type, and since then I’ve been nibbling around the edges of creating a second far more sophisticated enemy type. This enemy needs to have some basic understanding of its environment to do some minor navigation, and that kind of generalized perception, as easily as it comes to us humans, is a real bitch to program. I’ve got a simple line of sight function which re-uses a bunch of collision code which I can now use to detect whether the enemy sees the player or not, but the hard part is trying to get this enemy to get close to the player so it can attack without getting stuck on terrain or falling into a section of map it shouldn’t be on.

Honestly, I don’t think many 2d platformers have enemies with this kind of behavior, which is something I’ve been thinking about. Is this kind of behavior rare because it’s difficult to implement, or because it’s unnecessary, or because it’s unfun? I feel like adding some basic navigation will make these enemies feel a lot more alive and interesting, but at the same time it’s sometimes important for enemy behavior to be simple and predictable in games so the player doesn’t feel like the carpet’s being pulled out from under them. Realistically, there’s probably no way to ensure that this will work aside from just implementing it, but that means that if it ends up being shitty I’m out a lot of work hours.

Oh well. We’ll see, I’m pretty sure it will work in some form; as with most such things, it depends on the execution of the idea more than the idea itself.

Wall-e

Eh, I’m tired. It’s hard to focus, hard to create. It’s hard to be the person that makes things.

I don’t know if it’s like this for everyone, but for me part of the process of creativity is the process of meta-creativity. In order to produce art, I first must shape myself into the kind of person who produces art. An artist, I suppose. At one point in my life, I thought of this, inasmuch as I thought of it at all, as a singular act of creation, or of becoming; that I would take the classes, get the practice in, and become That Guy Who Makes Games.

I was simultaneously overcomplicating and oversimplifying with that perspective. At the core of things, becoming That Guy Who Makes Games really only requires making games: Accumulating some preconceived set of skills was largely an excuse to defer the labor of making the games themselves, so in that sense I made things more complicated in an effort to avoid work that was difficult and confusing. I still find myself doing this. I still find myself preparing instead of working towards a goal in a more concrete way. Sometimes it is, in fact, necessary – so there’s no simple answer, there. All you can do is pay attention to when preparation works for you and when it doesn’t, observe when trying to learn how to do something is a step towards doing that thing or a cognitive obstacle to going right ahead and doing it now.

I was also oversimplifying things in my belief that That Guy Who Makes Games is a cogent and singular identity. In fact, there is a different guy who makes each and every game, and bits of who that person is fall away and grow back and that’s what makes each game different. Being and becoming is an endless task, and hard work. To cease that effort, though, is to succumb to decline and decay; if not necessarily literal death, then at least death as an artist.

So right now it feels like a little piece of me has fallen away. And in a little while maybe I’ll pick that piece up and continue on, or perhaps I’ll find another suitable piece to fit in its place. The line blurs again and again between he who creates and he who is created

As long as I keep my eyes open I’ll find what I need.

EveHeader

Most of this week was taken up with getting the detail editor up to snuff. I’ve got pretty much everything I wanted in there now, undo/redo functionality and bulk selection and easy copying and renaming of details. There may be one or two features left that would be nice, but I think compared to what I had a week ago it’s much more ready to handle the strain of building all of the game’s levels.

I’m also finally, after a lengthy hiatus, going back and fixing the last few problems with collision detection. This section of code is finicky enough that fixing one case often causes another to arise, but hopefully that problem won’t come up too much here. I just fixed the biggy, a huge problem with collisions against slopes that weren’t directly facing the player causing some big teleporting issues. All that’s left is fixing up collisions with the lower right corner specifically, and improving the consistency of collisions in corners generally, and it should be just about good to go. In the meanwhile, I’m finding other bugs in the control system and stuff that need fixing.

After I take care of these bugs and issues, I’m probably going to be trying to build some more robust enemies, as well as perhaps trying to construct the first few areas of the game in something approaching the level of quality and detail I expect the final product to have. Once the enemies are done I’ll probably start in on creating the final character animations as well, which should add a lot to the overall appearance of the game.

jammed

I’ve participated in a couple of game jams with moderate success, but ever since I started working daily on my own long-term game project I’ve found it impossible, Whenever I start to participate in a game jam, a few things happen: One, I am overwhelmed with ideas for whatever I decide to work on, ideas way beyond a scope achievable within the time span of most game jams. Two, I am completely at a loss for what aspect of the project to work on first, how to approach the project, and what needs to be done to make it a reality. Three, I immediately start wishing I was working on my normal game, a project which is important to me and is familiar.

I’m starting to realize, by way of these disastrous participations, just how much of my identity is currently wrapped up entirely in the process of creating my game. To some extent it has to be this way, but it’s worth thinking more than a bit about what’s going to happen to me when I complete this project. I get depressed after I finish creating almost anything: Each individual piece I write here, each piece of music or piece of art I create, I get sad afterwards both because, frequently, I don’t feel my work gets much recognition (a common problem for the struggling artist), and simply because I no longer have that project to work on. I’ve lost a chunk of my daily schedule, a piece of the routine that lets me be myself.

It gets worse the bigger the project was. For a piece I worked on for a day or two, I barely feel it. For a piece I worked on a week or two, it’s uncomfortable for a few days, I get sad and irritable, but I adjust after a bit. For a piece I worked on for a year or two… what will happen?

I’ve been working on EverEnding for more than two years already, and it will probably be another two years or so before I finish this ‘six-month project’ (ah, optimism). Finishing a piece like this, I can’t help but think, may ultimately feel like a friend or coworker dying, leaving a ragged hole in the life I’ve lived.

In some pragmatic ways my difficulties with game jams and other side projects, along with my difficulties with living a social and intellectual life external to my game, make a lot of sense: I only have so much attention to pay, and a game is a demanding thing. If I want it to ever be finished, then to some degree I have to cut myself off, to become something of a monk. But, in the long term, if I want to be someone who makes games, not just someone who once made a game, I need to expand myself beyond this, to ensure that my artistic capacity survives its first large creation.

I won’t give up on Game Jams, or on leading a life that has rewards beyond the distant artistic creation I’ve been dedicated to, but I can’t just hop from here to there. I need to build a bridge, to understand how I can take on side projects in a way that makes sense for my creation methods, learn how to be sociable without letting that interaction override my work hours, learn how to consume art for its own benefit without specifically using it as metaphorical nutrition for my game. I need to draw an outline between myself and my work, because as things stand even when I’m being lazy I am being defined by the work I’m not doing as surely as I’m defined by the work I am doing when I’m being virtuous. Being defined solely by work and not-work, by good work and bad work, will leave me in black and white, even if I dream in color.

EveHeader

Made bits of progress in lots of different areas this week. I started off working on the tilesets, but quickly realized that tiles by themselves would probably look pretty lousy for representing more natural looking environments, of which the starting area happens to be one. I’m still going to be using the tiles to establish hard edges and game elements, but it’s impressed upon me the need to make lots of details to add to the levels to keep things interesting, particularly for the more naturalistic sections. I started playing around with adding details to levels, and after a couple of initial problems with performance that turned out to stem from unrelated bugs the pieces started to fall into place.

Sort of.

One thing that became very quickly and abundantly clear is that the detail editor was pretty hard to use still, and missing several of the fundamental features one would expect. Another thing that became clear pretty quickly was that there were still a number of bugs floating around the code base which would make it difficult to make any sustained progress in developing the levels. So, for the last few days, I’ve been going back and forth between experimenting with adding aesthetic detail to a couple of test levels and debugging or improving the detail editor. Here’s what the intro area looks like now:

DetailTest01

It’s still a bit rough in a few places, but so far I’m really liking how everything is shaping up. I severely reduced the color depth of all assets before importing, and together with the low pixel resolution this creates a feeling very evocative of the old PC adventure games that I was referring to for aesthetic influence. As I improve the editor I should find it easier to improve the level itself, with more accurate placement of details. This has also given me some ideas for improvements I should make to the particle system, such as allowing them to ignore the camera position for an overlay effect or letting them respawn based on screen coordinates so I can have a higher density of particles without saturating the entire level with them.

It’s invigorating to see the game finally starting to look more like a game, rather than a bunch of sloppy half-finished tools. It feels like everything I need to complete at least the first chapter of the game is sliding into place now. Excellent.

 

Hexagon

The biggest difference between Super Hexagon and other similar games, fast paced reaction endurance challenges like Flappy Bird and Canabalt and Race the Sun, is that the presentation is inverted. You aren’t running away from or towards anything, but rolling along the inner rim of an endlessly collapsing geometric shape. Everything is caught up in a relentless inwards tide except for you, and all you can do as a player is avoid being swept up for as long as possible. You aren’t going anywhere, just surviving in place, dancing as the winds of chance dictate.

It’s not a rhythm game in the traditional sense. The obstacles don’t time themselves to the beat, and if you try to play to the music directly you’ll soon lose. And yet, the obstacles have their own rhythm and the music has its own rhythm, both stable, and each becomes a metric to measure the other. The music doesn’t tell you when to move, but by measuring it against the movement of the walls you gain a finer sense of the motion of time. There is a rhythm, it’s just your job to find it, rather than mimicking what you are given. Each time you start any level, and each time you die and restart it, the music will start in one of three selected starting points. This serves the obvious purpose of keeping the first few seconds of the track from becoming obnoxious and repetitious as you start a level over and over again, but because it’s only three pre-set points in a several minute long track, it means that there are parts of the music track you tend to hear a lot more often than the rest, three thirty-second chunks right after those selections that become intimately familiar while the rest goes largely unheard. The feeling when you first tread beyond that familiar ground of snippets you’ve heard hundreds of times and start to hear the less familiar parts of the track, that little fragment of exploratory achievement, is one of the most exciting things I have ever felt when playing a video game.

If you spend enough time in the game, things start to happen to you. Like learning to draw or getting a new pair of glasses, you start to be able to see things you couldn’t see before. When you first start playing Super Hexagon, you react to each obstacle in turn, and frantically try to react as it reaches you. When you’ve spent a while playing, you start memorizing the patterns, and see each set of obstacles as they come, navigating your way through half by memory and half by reaction. Sometimes, though, once you’ve spent many hours with the game, you can see everything, you can see all the walls collapsing in around you and understand exactly where you need to be right now to survive. I have close to 60 hours played now and I can see the game this way for maybe 5 seconds at a time in every 15 minutes of play.

It’s strange to feel your brain acted upon, developed, topiaried, in this manner.

Super Hexagon provides the slightly odd sensation of completely occupying part of the brain while leaving the rest free to do whatever it wants. I first played the game in between episodes of Telltale’s The Walking Dead, reaction and spatial understanding completely subsumed by the hexagon while I thought about the journey I’d been on, wondered if the tragedies were avoidable, wondered if I’d done the right thing. Afterwards, I played it while I was making big choices about where my life was going, wondering if I was doing the right thing then and there, wondering if there was something I was missing. Still, sometimes, today, I play it when I’m trying to think of a new idea for something to write about, and wonder what to create next. It so fully occupies part of the brain that the other parts are cut free and left to drift in a way that can either be liberating or distressing, depending on the state of the mind it is happening to. Some people have found that they can play the game better if they’re talking while they play, which is the same process in reverse.

I’ve never seen another game with this property.

It’s not a frustrating game. Or, at least, if you’re the kind of person who finds it frustrating you probably won’t play it for very long. I don’t find it frustrating usually. It doesn’t feel antagonistic. Existing in the Hexagon is by necessity a constant challenge of movement: It’s not an attack, it’s merely a property of the space. In many games, you find yourself suffering through frustrating challenges to get to some nebulously rewarding end-state: But Super Hexagon’s simplicity is a promise that there is no reward, there is only the challenge itself, the hexagon itself, and whether you find that rewarding or not is entirely up to you.

Each level has a personality, and the relationship between them has a clear philosophy. The first level, Hexagon, is a goddamned liar. It’s my least favorite level, shoring up its weakness in terms of speed and challenging patterns by changing its shape into pentagons and squares to mess with the player. In every other level in the game, once you are in a safe spot you are definitely safe until the next wall passes you: Hexagon breaks this contract by changing shape. I imagine it snickering and gloating after beating me this way, the smug cheater, and I dislike it.

Hexagoner, the next level of difficulty, has none of that: The slight implicit threat in the name, and the harshest visuals and music of any of the levels, shows a kind of brutal honesty. Hexagoner doesn’t need tricks, and doesn’t even move much faster than Hexagon, but offers much more challenging and sophisticated patterns to defeat the player. Hexagoner feels like a worthy opponent, if not an exceptionally strong one.

Hexagonest is the strongest of all worlds. It doesn’t engage in the outright trickery of Hexagon, but uses the most confusing colors and movement, spinning rapidly in one direction then the other, snow-blinding inexperienced players. At the same time, its patterns are nearly as complex and challenging as those of Hexagoner, and they move far more quickly. To compensate for this, the player is allowed here to move more quickly as well – which makes things harder, rather than easier, since it makes it very easy to overadjust and blunder out of a safe zone and back into danger.

There’s a through-line here, a message: Simpler is stronger, more focused, more minimal. As the challenge ramps up, so too does the purity of the challenge, discarding trickery and deceit in favor of simple, pure, overwhelming speed and complexity. Playing through each level, descending into the hexagon and finding the next level simpler and harder and more sublime, feels like a spiritual journey. It reminds me of descending through hole after hole in Silent Hill 2, crawling deeper into James’ nightmare world; it reminds me of going deeper in Inception; it reminds me of falling asleep.

In addition to the first three difficulty levels, there are the more challenging “hyper” versions of each level, Hyper Hexagon, Hyper Hexagoner, and Hyper Hexagonest, and once you beat each of these you progress to their final and most challenging versions. The first two of these don’t really merit much attention, being merely faster versions of the originals with few minor changes to the patterns, but Hyper Hexagonest is strange. Though it still spins and pulses, its colorful palette has shifted to a radiant white and grey, difficult to look at for its brightness. It no longer tries to deceive the eye with rapid spins and counter-spins, but more like Hexagoner relies purely on its own challenge. Even as the game moves faster than it ever has before, it seems at the same time to be approaching a kind of serenity, a kind of meditation. And when you defeat Hyper Hexagonest, everything goes still…

The world stops spinning, the music changes into something that sounds like fragments of the Hexagonest music filtered through ocean waves, and all that’s left is a black void and white hexagon and walls, still closing in relentlessly. it still pulses, but weakly, and still spins, occasionally, but at its most challenging, unforgiving, and rapid, the hexagon is also at its most serene, its most meditative.

It’s hard not to think of death, when everything is collapsing in on itself forever, when things grow darker and more still as the progress, when eventual failure is inevitable. The first time you defeat Hyper Hexagonest, when you read the black void and inevitably die, you see the ending sequence: The hexagon spins backwards, spitting out the walls it has consumed, music playing in reverse, back through each level you’ve mastered, a life recollected.

It seems trite, to see everything as a metaphor for death. The only reason we see so so readily is because everything is, in fact, a metaphor for death. Every question of whether something exists or not, comes into existence or leaves existence, every concept of the light or the dark or of remembering or forgetting, all ties back to the fundamental idea of no longer existing and the huge dark space it always occupies at the back of our minds.

These are the thoughts that go through my head when I stare into the hexagon.

EveHeader

Lighting system is basically completely implemented but I haven’t created the entities to test it out yet. I’ll get to it at some point here, but it’s kind of a low priority. I fixed all of the bugs that resulted from changing the resolution (well, all of the ones I’ve noticed so far I guess), and a few more that have been floating around that I made note of previously. This didn’t result in nearly the framerate improvement I’d expected, but it still feels smoother and I think has a more distinctive look to it now, plus it will be, as mentioned previously, a lot easier to create art for this resolution.

Speaking of which, that’s exactly what I’ve been doing. It took me a little while to find a program that worked for me, since I needed solid support for both transparency and animation, but I eventually settled on Aseprite, a pretty excellent little pixel art editor. The interface feels a bit glitchy, but no mistakes come out of that that I can’t immediately undo, and other than that it seems pretty stable so far. The last few days I’ve been working on building a very basic tileset for the first area of the game. It might not look like much right now, but this is basically just planning out what each tile type is going to be and generally is going to look like before I go in and add more detail. Here’s where it’s at now:

00

This covers a few different terrain types. Currently these are just basic grass/dirt/stone sets done with solid colors, along with a few ropes, but as I progress I’ll be adding more and more detail, and possibly splitting these out into different sets. Now that I’m thinking about it, it would be nice to separate the ground tiles into different tilesets based on the ground type, stone, metal, grass, etcetera, so that I can easily map the tile bank into, for example, different footstep sounds. So that’s something to think about as I go forward, but for the time being this is mostly a test of concept, figuring out what all tiles I need to construct a decent looking level and how to fit those tiles into a tile sheet. Another thing to consider is that currently the tiles are all drawn onto one layer, which is drawn in front of the character: Ideally I’d like to be able to place simple background elements using tiles, but as things stand even if it looks like a background it will draw in front of the character. I may need to create two separate draw layers, and make it so, as with footsteps, certain tile sets are mapped to draw in the background while others draw in the foreground – or, possibly, I could draw the background into a separate layer completely. Dunno, I’ll just have to feel this one out as I go.

Here’s a quick test of the tiles to make sure they work, though it’s mostly still debug tiles:

tiletest00

There’s a number of things that are pretty obvious just from looking at this. First, I need some decent top and side tiles, while my tile sheet mostly is just corner transitions between different terrain types. Second, I need more non-collision detail tiles to add on top of flat surfaces: you can see some of these on top of the ropes, and they really add a lot of texture and life to the tile. There are also some kind of weird draw issues when it comes to non-debug tiles, since sometimes it will just draw the debug tiles instead, but that’s probably an easy fix. Anyway, I’ll keep at it until I’m satisfied with the basic tiles, at which point I may wait to detail them until I have a few more environments constructed to make sure I don’t end up barking up the wrong tree. In the meanwhile, I may want to develop a few more enemies, and there’s still plenty of debugging left to do on the collision detection and whatnot

 

 

Follow

Get every new post delivered to your Inbox.

Join 5,461 other followers