EveHeader

Man I don’t know what to say. I mean, the collision is pretty much done, but it’s been pretty much done for like three weeks now! I mean, this is definitely more done than it’s ever been before: Collision resolution seems to work consistently, ground tracking seems to work very well indeed, and only the slightest one-frame animation glitches and weirdest outliers of tile placement still seem to be causing issues. It’s… so close.

Well okay, whatever! Hopefully these last little problems will get fixed in pretty short order, and then I can return to a forgotten time where I wasn’t working on the same goddamn block of code day after day for weeks on end. That will be swell.

The other good news is that since this is all pretty much (PRETTY MUCH) done, I can start making a few changes to the movement code I had in mind. In particular I wanted to make it so that when you’re standing on a steep slope you gradually slide down – you can press towards the slope to slow that down or away from it to speed it up, but you can’t make steady headway against it since the slide is faster than your movement speed against the slope. I did that today, and it feels pretty good. I also made it so that if you jump off of a slope like that you end up jumping away from it instead of straight up like you normally would, so it’s not possible to climb hills that are too steep but it is possible to use them as stepping stones to reach otherwise difficult places. I’d post a video but there’s still some animation glitches on steep hills and I want to get those fixed first.

Let’s see… so I need to finish off the last few issues with collision, then I’m probably going to spend a bit more time tweaking movement and animations to make the character motion generally a bit smoother. Then, finally, I get back to the thing which sent me down this tangent in the first place, making test enemies. Once I have a few of those, I create character animation and programming for getting hit, and then I think I’m going to create a DANGER ROOM. Well, basically just a few small levels with enemies and platforming challenges that I can use to test out the gameplay, and even send to some friends for feedback as to what feels good or doesn’t. Basically I just want to make sure the character parameters, run speed, jump height, attack speed, etcetera, all feel nice before I start building levels on bad assumptions.

So that’s the plan! Hopefully not another one destined to be dashed to bits by another week of frustrating and tangential collision coding.

 

Battleblock

It’s strange how many games have announcers and narrators now. Though Bastion was noteworthy for the extent and character of its narration, the seeds were sown earlier – somewhere in the gap between the expected announcers of sports games and the nebulously allied voice in your ear of the System Shock 2 and its later successors, games started to have voices. The first game to really kick this trend off was, I think, Portal: GLaDOS became something in between an announcer, a narrator, and a character, switching between each mode as the needs of the game changed, a disembodied voice in a particularly literal sense. GLaDOS became the voice of her game, defining it and giving it personality and making its character inseparable from her own.

The unnamed and unexplained announcer of Battleblock Theater does the same, making the game enjoyable even at its most frustrating – perhaps especially then, since it’s hard not to laugh at your absurd deaths, and it’s nice to have someone else who thinks they’re as absurd as you do. It’s hard not to wonder who this narrator is supposed to be within the story of the game, even though there’s no real reason we should expect him to be anyone in particular except for games like Portal and Bastion have led us to expect some kind of reveal.

The entire framing story is interesting in several ways. Watching people play video games has only recently become big business – given that Battleblock Theater was officially titled in 2010, when youtube Let’s Plays were still fairly sparse and well before the massive success of twitch.tv, it seems uncannily prescient to premise a game on the player being watched as entertainment with commentary to spice things up. It’s a fairly unusual take on a game premise – perhaps because of the demeaning desperation of being a plaything to greater beings, no games have really gone with this type of scenario before, even as suitable as it is to the series of arbitrary challenges most platformers end up inevitably being.

Well, except it’s not entirely unprecedented: Sure, the explicit plotline is unusual, but showing everything as stage dressing, flimsy props and backdrops? Strangely old-fashioned kind of jazzy, ragtimey music?

super_mario_bros3_title_us

If we look at the presentation, rather than the explicit theming, few games are more reminiscent of the theater than Super Mario Bros. 3. And this choice of presentation wasn’t a coincidence either: In a game where you, the designer, are forced to break every interactive element down into blocks, into tools, into props and costumes, what could feel more appropriate, more natural, than a stage?

So: Was it the influence of the Mario games, clear predecessors, that lead to this choice of presentation? Or was it a matter of two designers taking the same obvious path? Or was it something in-between? I don’t know, okay, I just thought it was something interesting to think about.

next time: Eidolon

EveHeader

Collision detection mostly works and each day it gets mostly-workier. All that’s left, seemingly, is some special case collisions that don’t work well, mostly colliding the left and bottom sides against sloped ceiling tiles, which only comes up when making pointy ledges. I could pretty much just make the game without using ledges like that, since they’re never really necessary, but I’ve come this far and I’d really like to just get this one last thing working so I can just call this done done done.

I replaced the old version of ground tracking with something a lot simpler, which is mostly good except I carelessly made an assumption or two which leads to it working incorrectly on steep slopes, so that will need to be addressed as well. Once I tackle those two things, I’m done with collision, hopefully for good this time.

I also spent several hours tweaking the player movement parameters, trying to tune her in a way that would work well for gameplay. The original movement speed and jump power meant that a vertical jump would be 9 tiles high and the longest jump possible would land on an equal-height platform about 32 tiles away. The screen width is 48 tiles, so that means with the camera centered on the player a ledge 32 tiles away would be well out of sight, which seemed pretty sub-optimal. After a lot of tweaking of maximum movement speed, jump height, and acceleration, I finally settled on a set of values that seemed pretty satisfying, leading to a vertical jump that’s just barely 8 tiles high and a horizontal jump of 24 tiles, leading to a ledge that’s just barely off-screen. I dunno if that’s perfect, but I experimented with making the player sprite smaller and didn’t really like the effect, and reducing the values any further would, I think, start to feel unsatisfying with the player at her current size. I’ll likely end up playing with this a bit further once I have more test enemies and can focus on really optimizing moment-to-moment gameplay for a little while, but I think I learned a lot and have started to zero in on something satisfying. I’d like to add some visual guides to the tile editor, either once these values are finalized or generated by code based on current parameters, to help me place jumps in a way that’s challenging in a satisfying way.

Aside from that, I’ve been having a bit of difficulty adjusting to my current more-demanding schedule. These difficulties have been a bit exacerbated by circumstances making my days generally a bit crowded and busier than they would be otherwise, but regardless I find myself struggling to keep up with my four assigned tasks at once: EverEnding, art commissions, music composition, and writing. I don’t think it’s too much, but it is a lot, and at this point I need to be sure to take breaks as-needed and maintain focus so I can keep up. I think it will be fine, and I’ll get used to it, but I don’t think I can really add anything on top of what I’m already doing, so hopefully nothing big comes up.

So: Over next week, finish collision detection/ground tracking, add guides to tile editor (and maybe some other improvements), create test enemy class. Seems feasible.

tom-sawyer-whitewashing-the-fence

The discussion of what’s fun and interesting in games is necessarily also a discussion of what’s boring and tedious. Finding the points where a design begins to work against itself, begins to push the player down paths of rote task and mind-numbing chore, and understanding what exactly leads to these problems, is fundamental to designing an experience that is interesting and exciting.

One of the most important decisions to make as a designer is: What is the best way to play the game? Or, perhaps, to be more precise, what is the most successful strategy for doing well at the game? If you don’t know what it is, then that may be a serious problem, since someone will find out – and, if you don’t know what it is, you have no control over whether it’s actually an interesting way to play the game or not. Once a player identifies an optimal strategy, they will probably keep using it even if it’s tedious and frustrating – simply because, as we generally understand games, the correct way to play is the way that makes you win.

I call this the Tyranny of Optimal Play. Once I have identified the most successful strategy, if I don’t use it I am hampering my chance to succeed – and, in many cases, if I do then I have to perform the tedious tasks the optimal strategy requires. Either way, I’m doomed to frustration, and otherwise enjoyable elements of the game start to ring hollow.

You don’t have to look far to see examples of this. For instance, almost every game with a regenerating health or energy system has this problem to some degree, since it gives the player incentive to hide or wait instead of pushing ahead or strategizing. In games like Call of Duty, the player finds themselves alternating between shooting and hiding with their screen smeared with raspberry jam, instead of either tactically avoiding taking fire or aggressively maneuvering, as they would in many games designed around non-regenerating health. ‘Streamlining’ the game systems, in terms of removing interactive objects like medkits and armor, in this case has the exact opposite effect on the action of playing the game, adding weird and counter-intuitive friction to the experience. In practice, to mitigate this effect, they make health regenerate rapidly once the player stops taking damage, but it still serves little purpose within the flow of the game except to have an intuitive system for punishing the player should they overextend themselves, but not too harshly. Damage is the warning sign before the player fails: Rather than something to be avoiding because of its own dangers, it’s merely an indication that the current path could lead to failure.

t-1000

You’ll be fine, just smear this jam over your eyes and hide behind this knee-high brick wall for a few seconds

Another, perhaps more interesting, example is in Diablo 2. One of the early quest rewards in the game is being allowed to choose one item to receive a randomized enchantment — however, because this enchantment scales with your character level and can be applied to any standard item, the most optimal use of it is to wait until your character is very high level and use it on a powerful base item. This means that you’ll probably end up playing through the entire game several times before even considering enchanting an item if you’re trying to maximize value. In much the same manner, if you want to optimize the power of your character you almost certainly want to save skill points for the first 10-20 levels until you unlock the skills you really want your character to use, rather than wasting points on useless low level skills, and until that point play the game using the few weak level 1 skills that you can use without being wasteful. Neither of these are really a fun way to approach the game, but most experienced players find themselves warping their playstyle to accommodate these awkward optimizations.

In The Binding of Isaac, you occasionally encounter an ‘Arcade’ room, which has a few different ‘games’ which are really just a way to exchange resources for a random chance at other resources. However, because the machines there produce items which can be used on the other machines, it means that the optimal approach is frequently to bounce back and forth between them, either until you manage to run out of all of your spare resources or until the machines pay out with something valuable. This can take as much as a half hour or so spread between a few arcades over the course of the game, sometimes doubling the total amount of time it takes to complete the game but increasing the player’s chances of success substantially. It’s also incredibly boring, bouncing between a couple of machines and playing them for minutes on end.

Rebirth, the remake/expansion of The Binding of Isaac, addresses this problem in a few subtle ways. First, if you complete the first few areas of the game quickly enough you are rewarded with a special challenge room, which can be difficult but is quite rewarding. This reduces the incentive to exploit the arcade, since you often can’t spare the time if you want a chance at the challenge. Rebirth’s limit on how much health the player can have also helps to balance arcades, since the most consistent reward of gaming the system, aside from money, is extra health. This makes it nearly pointless in many circumstances to try to exploit arcades after the first three areas, where money becomes drastically less useful and the health rewards become inconsistent or inconsequential. These changes resolve Isaac’s original tyrannical system in a very subtle and clever way, since they also add other interesting choices and balances for the player to deal with.

Marge Slots

What do we talk about when we talk about engaging gameplay?

RPGs in general are an interesting case: In any game with experience points and leveling, optimal play would, if we disregard time investment completely, involve grinding the early monsters until the player reaches maximum level, and then breezing through the rest of the game. Almost no one actually plays this way, preferring to instead grind in each area until they’ve satisfied themselves that they’ve experienced the area fully or until the next area’s challenge becomes manageable, but the specter of this implicit optimal play hovers over the gameplay experience. Many people avoid the genre completely because of this understanding that the game could easily be turned into a pure rote exercise of number-increasing, even if, pragmatically, few people actually play that way.

There’s a common thread between the last few examples: Time. Time pressure is one of the fundamental changes that fixed Isaac’s broken arcades, and the lack of time pressure is what presents the idea that indefinite grinding is the best way to play RPGs. Often, the difference is entirely perceptual. At one point I was engrossed in an early MMORPG, and would go out and kill enemies until my health got low, sit and wait to regenerate hp, and grind out a few more. I kept doing this because potions were extremely expensive, and would cut my profit margin on each excursion to almost nothing. And yet, as I eventually realized, making that investment would mean that I could perform each excursion more quickly, against more powerful enemies, so that even though my profits per-expedition were slimmer I was overall making money (and, more importantly, experience) a lot faster. Nothing changed in the underlying system, but my understanding – that my time was a resource to be managed, and that if I factored that in that potions easily paid for themselves – shifted, and thereby made the game a lot more interesting.

What’s odd about this realization, that time pressure is an easy way to relieve a fundamental conflict with a lot of game designs, is that it used to be the case that time pressure was omnipresent. Super Mario Brothers always had a time limit, likely to solve this very problem and prevent players from trying to scour every level, block by block, for coins and secrets. Spelunky’s design took this and ran with it, justifying the pressure by way of a in-game ghost which will hunt you down and instantly kill you if you take too long. Now, they then made the decision to make the ghost convert gems into ultra-valuable diamonds by floating over them, which makes a top-scoring run take ~8 hours and runs face-first into the problem I’m describing, but I guess no one’s perfect.

SexyGhost

We’re all just trying our best

Wasting the player’s time is the most tedious and common tyranny of optimal play, but it is by no means the only sort. Any form of dominant strategy, no matter the initial trickiness, will quickly become onerous, as the player masters the necessary inputs and then finds all challenges trivial. The only way for them to make a game enjoyable once the dominant strategy is discovered is to hamstring themselves by refusing to use it – but it’s never quite as satisfying to pull one’s punches as it is to truly invest oneself, to try as hard as possible to succeed. Once that intensity of personal investment is lost, it can’t be recovered, and the game becomes lesser, more of a toy and less of an experience.

Of course, it must be mentioned that there are some companies who don’t care whether an experience is fun or rewarding or even interesting, only that it be engrossing. Mobile and Facebook games are frequently tyrannical by design, rather than accident, asking you for your time and giving you nothing, asking you for your attention and giving you nothing, but ensuring that you keep coming back by telling you over and over again, in so many little ways, that this is the right way to play, that by going slow and steady you’re winning – though, of course, you could be winning faster if you were willing to spend a bit of money. After all, isn’t your time valuable?

This is the terror of artistry. Art is, fundamentally, the ability to manipulate the emotions and thoughts of others. Perhaps there is an intrinsic value to truth or beauty that elevates Capital-A ‘Art’ above advertising or propaganda, or perhaps it’s merely a matter of technique and of what the audience is primed to receive. Thus, in many cases, avoiding tyrannical design becomes an exercise and good and bad design – not in terms of engineering, but of morality. Respect your players’ time and intelligence, and follow the line through your design to each moment of play to understand the ways which, intentionally or not, you might carelessly abuse their trust.

wargames

EveHeader

I got a decent little effect working for the hair and such, though I ended up putting off the registration point chore for now since there was some other stuff I really should get working lest I risk putting in a bunch of time putting in metadata that later ends up changing. After that, I started thinking about creating a basic enemy, and in fairly short order realized that in order to get something decent to test with I’d need to go back and develop my collision detection so that enemies could use it to perform basic terrain navigation.

As things stood, up until a few days ago, my collision detection was basically performing two tasks at once: First, placing the entity against the terrain, finding all places where they overlap, and resolving those overlaps in a reasonably consistent and predictable way. This is the main collision detection, and pretty much what one thinks of when the words ‘collision detection’ are mentioned. The second system tracked the surface of the ground the character was standing on and made sure that all movement was adjacent to this ground surface, so that the character didn’t pop off of the tops of hills when she ran quickly or otherwise behave inconsistently with the terrain. It occurred to me that this latter could, and probably should, be expanded significantly, so that an enemy could, for instance, use it to crawl along all of the edges of the wall, or detect when the tile it’s about to step on is a gap and turn around. So I’ve split them into two separate behaviors, and the last few days have been spent making that split, fixing each behavior so that they work again, and finding any final inconsistencies that make them perform poorly before I do any requisite expansions.

This is definitely the nicest the basic collision has ever looked, both in terms of reading and performance. Collisions seems pretty much 100% consistent, with slope collisions getting resolved smoothly and pretty much exactly how I, as a player, would expect them to be. Ground tracking has still got a ways left to go, unfortunately, and I’m still seeing a number of weird and inconsistent results. It’s likely I’ve completely missed some important aspect of this system in developing its code – still, overall these systems are working as well as they’ve ever worked, and promise to improve significantly with a bit more work. I’m hoping to have these done within a few days, develop a new PatrolBehavior based on the changes I’ve made, and implement a new basic enemy type using that behavior within the week.

 

ct_00000

I’ve been thinking. Not on purpose, it just happens. I’ve been thinking about where I’m going, with my work, with this blog, as a person, as an artist, as a symbol representing an artist or person in the mind of someone else. I’ve been thinking about self-promotion, and how it doesn’t come naturally to me but also I’ve been avoiding doing it because before I promote myself I have to understand what part of myself I want to promote and find worth promoting, about how maybe a lot of my “just do your own thing” beliefs stem from a fear of looking too closely at who I am and what I actually have to offer– or, perhaps, want to offer.

I have a tendency to follow the path of least resistance. Most people do, I think, it’s just that people encounter many kinds of resistance so even when water always flows downhill the direction of the hill changes for everyone. I’ve been confused in a bunch of slight ways about what this site is and what it’s about. First and foremost, I consider myself a game designer. Actually, I consider myself a wannabe game designer, and perhaps I always will no matter how much game designing I actually do, but as best as I can observe I have a relatively strong understanding of what works and doesn’t work in game design and why. Discussing these aspects of game creation, especially in the context of a specific game or set of games, is very similar to what critics and reviewers do, but I don’t consider myself a critic or reviewer. While I deeply admire the work that a lot of critics put into dissecting and understanding the medium, I think what they pursue with their writing and what I pursue with mine is slightly different: Understanding vs improvement, the generalities of mechanics and specifics of narrative vs the specifics of mechanics and generalities of narrative. I don’t mean to speak too broadly here, and depending on how each subject is approached they can become very similar explorations, but thinking about design of an experience is, in general, a bit different than critiquing that experience as a whole.

Though, it ought be noted, not as different as many people believe either. The design of the game encompasses the whole experience. Narrative vs design is a made-up conflict. But let’s table that for now.

Here’s what I’m getting at: I want to refocus my work here. I want to go back to having regular writing deadlines, even though that can be very difficult, and I want to stick primarily to thoughts on design and the experience associated with it, both as creator and as audience. I will probably still dip occasionally into other realms of systemic thinking or whatever else catches my fancy, but I will regard these as auxiliary to my writing’s intent. Assigning myself games to write about will probably continue, but I’ll just write about them when I’m done with them and write other pieces in between, rather than waiting weeks to complete them and posting when I’m finished. New posts should go up at noon on Saturday, new devblogs will go up noon Sunday. There. Simple.

Another thing I want to do is give this its own dedicated site. WordPress.com has been good to me, and made it incredibly easy to get started doing something which I felt a lot of initial resistance towards and has been a tremendous positive in my life, but I can’t keep doing things the easy way and the very url I pass around makes it look like I don’t take this seriously – and that’s made me feel like I’m not taking it seriously, and thereby end up, in fact, taking it less seriously. Over the next few weeks I’ll see about getting Problem Machine hosted somewhere, and then consider what to expand the site with. If nothing else, this will give me someplace to put a full webpage for EverEnding when it’s ready for it.

I’ve also been wanting to create some sort of video content for a while. I’ve been very hesitant because I’m, frankly, uncomfortable with the sound of my own voice, and the thought of speaking into a microphone fills me with subtle but potent dread. This is something I’m just going to have to fucking get over, because if there’s one thing I can’t afford to be as a developer in a personality-driven subsection of the game industry it’s shy. I’m not quite ready to set a deadline on this (need to get the new site up and everything first), but I’ve said it here so at least now it’s out there as a thing I said I wanted to do.

Finally, expanding out from the previous point, I’d like to speak at some events. I don’t really know how to get started on this, though I’m sure there are resources out there to find out, but before I start applying to speak anywhere I need to figure out what to talk about. I’ll be looking through my old posts to try to find some of the more interesting ones and see if I can turn one or more of those into a 30-60 minute long lecture.

It’s strange the way that just saying words about what you intend to do shapes your future. Just by saying what I want, I chart a course. I may get lost along the way, but at least, no matter what comes next, I made that decision. I spoke a future.

EveHeader

I got the template editor mostly working and then dropped it because it was boring and obnoxious to work on. If I need it to be nicer then I’ll make it nicer later, in the meanwhile it’s just a nuisance.

So with that being, uh, done enough, I’ve moved on to laying the groundwork for the secondary attack. The secondary attack will require a bit of procedural animation, and I realized that that procedural animation would require some changes to the way entity drawing works, so I’ve been figuring out those two things. I now have it set up so that entity drawing is handled by queuing a bunch of commands, which means that regardless of where a behavior is in the order of operations it can draw behind the main animation, in front of it, or both. I’ve also added the capability for animations to store registration points, so I can track where, say, the player character’s left hand is, or the back of her head.

Finally, I’ve constructed a rudimentary ‘tendrils’ behavior, which creates an arbitrary number of small physics ropes. This serves a dual purpose of simultaneously being a test-ground for the kind of procedural animation I need for the secondary attack, and also potentially being a nice little special effect I can add to parts of the character, like hair or clothing. The current effect is a bit lightweight and springy, but I think with a bit of playing around I should be able to give it the right kind of heft, and I think a subtle touch of procedural animation on top of the work I do hand-drawing frames could add a nice bit of character.

Unfortunately, in order to finish implementing this effect, I’ll need to manually go through every frame of animation adding registration points for where a specific part of the character’s head is in each frame. That’s not so bad, if somewhat tedious, but If where I want to put that registration point ends up changing then that will be reflected in every frame… so I don’t want to finish doing that until I’m pretty darn certain that’s what I want. Probably, the next couple days are going to be adding a bit more flexibility and interest to the tendrils behavior, making it so it can draw differently based on whether the character’s facing left or right, making it so it can add impulse to the tendrils as necessary (such as for animations of a character turning suddenly). Dunno, this is an exploration as much as it is a construction, so I’ll see how it goes. After I finish this behavior, I’ll probably table the specific problem of the second attack for a little bit so I can spend some time constructing a full-fledged test enemy so I can get systems like receiving damage, damage reactions, and other combat behavior figured out. Once that’s working, I can add the last remaining prototype animations and start considering drawing the final frames.

 

Follow

Get every new post delivered to your Inbox.

Join 5,207 other followers