Archive

World Design

EveHeader

I’m doing a terrible job of sticking to the schedule I came up with. I keep getting sidetracked by new tasks, improvements or things I forgot to put on the schedule. This last month, I finally got around to looking up what sorts of multi-threading solutions are available in Haxe/AIR. It turns out that Adobe AIR has supported multi-threading for a while now, with an implementation that is both very straightforward and kind of frustrating. AIR’s version of multi-threading is: Load another AIR program into your running program, and pass values back and forth. Simple enough in concept, but it still has all the traditional concerns of multi-threading with sharing resources and managing access.

So, much of this past month has been taken up with trying to get my particle system, the most demanding discrete subsystem of EverEnding, running in a separate thread. It took a lot of thought and experimentation to figure out a way to restructure a system which had presumed open access to a shared memory pool and make it run remotely with operations mediated by a single point of communication. After a week or two I got it running, but… not especially well. The benefit of the new system is a bump from 45fps to 50fps, which is not as dramatic or life-changing as I’d hoped — plus, for some reason, there are spikes of 30-50ms, which make the overall effect still somewhat disjointed and unpleasant. Still, I think these problems will be fixable, though it may be tricky to figure out exactly how they’re manifesting.

Aside from that I’ve mostly been working on building out the last section of the first area, the caves. I think I’m finally starting to nail down a paradigm of tile design for this game, based around the idea of areas which are lit, areas which are dark, and areas which are somewhere in between. Lit areas are mostly on the upper right and dark areas mostly on the lower left, with various transitional tiles to make them flow smoothly from one to the next. The cave tileset is starting to come together, though certain tiles still need some work. The background could use some improvement as well.

caves00

Also, looking back through my daily devblog notes, apparently I worked on collision in February as well. Strange, it feels like much more than a ago now. Well, most of the collision improvements are in place and working, but in the process some things broke, so those will need to be re-fixed. It’s basically guaranteed that any time I work on collision code I’ll end up frustrated.

So what’s next? I’ll probably focus on developing the level architecture and tilesets until I’m completely done with the caves, then go back and focus on populating this first area with enemies and details. Along the way somewhere I’ll spend a few days fixing all the things I broke getting the new particle system implemented and see if I can fix weird glitches there, as well as maybe a bit more collision work (sigh).

EveHeader

It’s been kind of a strange month for the project. I’ve made next to no progress on the task list I’ve created for the game, but I’m still largely satisfied with the work I’ve done. That is to say, I’ve been putting a lot of time in on things that it hadn’t previously occurred to me I would need, so I can’t really cross anything off a list when I get it done, but nevertheless the tasks I’ve done needed doing.

So, what are these tasks?

  • Created a system to modify hue/saturation/brightness of animations, and implemented controls for this into existing particle systems and associated editors, as well as creating a similar system for modifying tileset colors
  • Fixed up the detail editor to make it more flexible and easy to use, including the ability to modify multiple details at once
  • Created a seeded random number generator so particle systems that use random numbers will generate consistently from one play to the next
  • Created a simple collision system for particles, which can be used to make them only spawn on top of tiles or perform special behaviors when they collide with tiles
  • Added the ability to have particle behaviors that only trigger once on spawn rather than updating continuously
  • Collision improvements and implementation of water tiles and combination platform/slope tiles
  • Fixed the way perspective is calculated on details to center the vanishing point rather than have it locked to the upper left
  • Stripped out a non-functional zoom in/out system in favor of a much simpler one that actually works
colorchange

With all these color controls I have a lot more ability to customize areas without creating all-new assets

On top of that I’ve been building levels out, which is on the list but also takes a long time to make progress on. It’s really difficult to say much about the process of building levels, because 90% of it is just spent on making sure tile boundaries line up and making tiny aesthetic tweaks. In that way it’s a lot like working on the animations after I created prototype animations: All of the concept is mostly there, I just need to elevate it to finished quality.

I’m getting close to the end of my ad-hoc list of unexpected and unscheduled problems/improvements, so I ought to be getting back to the game schedule soon. Worst case scenario is I’m a month behind of where I wanted to be: Best case scenario is that I end up making up the time I lost by leveraging some of the improvements I’ve made. We’ll see. In any case, I’m probably going to be spending the coming month or two getting early-game enemies fully animated and operational. The first couple of enemies will be the most difficult by far, I believe – after those are complete I should be able to copy and paste from them for almost everything I’ll ever need an enemy to do.

 

EveHeader

It’s been a bit of a slow month for work on the EverEnding project for reasons which are largely obvious. About 10 days of the last 30 were taken up with a big holiday trip, under which circumstances I wasn’t really able to find the time and energy to work on the project – and, what’s more, left me tired and inert enough that I didn’t get much done for a while after either. That being said, progress is starting to be made, and certain foundational parts of the game are coming together.

So, to start with: The main character animations for chapter 1 are pretty much all done. I say ‘pretty much’ because I’m confident that as time passes I will notice improvements that need to be made, possibly even new animations that need to be created. However, for the time being that all-important part of the project is complete.

Once I achieved that, I turned my attention towards various outstanding programming tasks that have been on my to-do list for some time. I finally found and fixed a very annoying bug that was causing entities to self-replicate when I saved a level I was editing, which was causing massive slowdown since the entire lighting system was getting duplicated several times over. I found and fixed another bug which was causing the background layer of levels to not match the size of the foreground layer, and also created a player profile system, which should be able to handle saving and loading all the necessary information for game progression alongside all of the player’s controller/keyboard binding information. Somewhere in the midst of all this, I built a bunch of assets for the early areas of the game – mostly pretty simple ones, which makes them excellent test cases for the kinds of improvements I’ll need to make to the details system to get levels looking the way I want them to.

01-05-2017-standing-stones

I’m noticing something strange now that I’ve finished the main character animations: Even though I frequently found the work tedious, having something straightforward, relatively brain-dead, and indisputably important to the core of the game to work on was actually incredibly useful. When I was feeling tired or dull or confused it was still totally feasible to get good work done just by focusing on creating animations. That is not to say that animating is easy or stupid work, but I’d already planned out all the animations such that easy and stupid work was mostly the only kind left to do on them to complete them. Now that I don’t have these animation tasks to rely upon, I feel a bit cast adrift on the gigantic task list that is this project.

Oh well, I’m sure I’ll hit a new rhythm soon enough. I think building out the levels may be similarly straightforward and rewarding, though the level editing tools may need a bit of improvement before I can dedicate myself fully to that work. Perhaps those improvements should be my first priority, then, after I get the core game systems I’m currently focused on up and running.

mario3bg

As games have become larger and more complicated, development teams have grown bigger – and, as development teams have grown bigger, we break down the work that needs to be performed on a game into smaller and more specific categories so that each person on this now-gigantic team knows precisely what they’re supposed to be doing. Pragmatically, this is a very effective way to make sure a game actually gets made. Unfortunately, it also creates a flawed mindset about what a game is and is made of. When we experience a game, we don’t experience it as its game design plus its art plus its music, we experience it as the totality of these things filtered through the particular lens of our input. That is to say, regarding the game’s design, its story, its art, as separate aspects is extremely limiting. All of these, even if they are manifested very differently, affect each other.

Yeah okay maybe this sounds like 101 baby bullshit, but it can be surprising how often this discrete-field attitude manifests. It used to be that even review scores were broken down in this nonsense way, scoring audio and graphics and ‘fun factor’ separately. It’s a prevalent attitude because it makes it easier to think about the game when you can think about little bits of it at a time. You can’t really separate the design from the art from the story from the audio, though. They all affect each other – often in surprising ways.

For instance, I have spent way too much time playing Team Fortress 2, and much of that playing Spy. As the spy, you need to be able to infiltrate the enemy team and get close to them without being noticed in order to do most of your work, whether that’s destroying equipment or assassinating vital team members. In order to infiltrate, you must rely on distractions and otherwise concealing your motion. Under these circumstances, a lot of the game’s art and audio design become incredibly important to you: How noisy a weapon is determines how easily you can sneak up on an enemy using that weapon, how long a gun is determines whether you can hide behind a corner while holding it, and if you happen to disguise yourself as the man wearing an elaborate hat that shoots sparks and cost him a hundred bucks he’ll probably notice you running by wearing it.

In other games, a particularly common example of aesthetics affecting gameplay arises as visual obfuscation. Tall grass and foliage often act as soft cover in action games, allowing players to conceal certain moves from each other, and the particular lighting of a room has separate concurrent effects on the gameplay, the narrative, and the aesthetic of the room. Trying to adapt the soundtrack to the current action has the interesting side-effect of informing the player of what the game believes the current action to be – that is, if there’s a combat music that plays when one or more living enemies are around, the player might know that an area that looks cleared out still harbors enemies, since the combat music hasn’t stopped yet.

The interplay of aesthetic and design becomes particularly relevant when regarding issues of accessibility. If a particular aesthetic aspect of the game becomes core to the design, and certain players of the game are unable to partake of that aspect due to disability, the design may just quietly break, leaving the game subtly unplayable. The most common example of this is probably the puzzle game with vital audio cues being played to an unhearing player – these cues, unaccompanied by any visual change, are not only possible to miss but are possible to miss without having any clue you missed them. This affects players not only on the basis of physical capability, but on the particular hardware they’re playing on as well – as a child, I got stuck on a particular dungeon in Final Fantasy 6 for months because, as it turned out, the television I was playing on was so dark that the switches I needed to press to progress were invisible to me.

The core design of the game is something which can only be expressed through the aesthetic choices that form the representative layer of the game. These cannot truly be separated, even if approaching them as separate disciplines makes it easier to develop the project.

Perhaps this is yet another reason that Dark Souls has resonated so much with people. In a world full of games where code and design drive the combat with animations and effects merely added afterwards to describe the action, the Souls approach of having each weapon’s animation directly influence its attack pattern, of having each swing be, not just a nice animation applied to a hit volume, but having the most important property of every attack be the motion which it attacks with, is refreshingly consistent. And it’s worth wondering, now, whether that kind of cohesion is possible when you have a designer and an artist and a musician each doing their own work, in separate rooms, in separate cities, hoping that in the end one and one and one will, after all, turn out to be four.

EveHeader

This was an eventful month! Following my devblog post last month, I started sharing the project on a couple of game dev forums, and through a logical process which eludes me now 30 days later determined that a) I wanted to have the first chapter of the game complete by the end of 2017 and b) that in order to do this I should create a complete task-list and schedule for the project up to that point. This ended up taking me a few days, but I really feel like it was worth it. I now have, printed across 12 pages, a fairly comprehensive list of work that needs to be done in order to complete the first chapter of the game. There’s going to be four chapters total, so a lot of work will remain to complete the game even after all this, but the scope of the work will be determined and I’ll know how much time and effort it takes to create finished content for the game. All major gameplay bugs should get eliminated through this process, and all fundamental design code will be firmly in place.

I broke the schedule up into a total of five three-month blocks, one for the rest of this year and four others for next year. Currently, for this year’s block, I have 24/53 tasks completed or otherwise resolved. I also have a few tasks which I had to add to the list which aren’t accounted for there, as well as a few that are partially complete, but it’s still good progress and I’m proud of how quickly I’m getting the work done. Now, I expect some future tasks to be quite a bit trickier, and I also expect many unforeseen tasks to crop up, but that’s why I’m trying to get ahead of schedule now – as well as acknowledging that December is likely to be so busy with other stuff that I’ll probably only be able to work for half of it.

The biggest task accomplished over this month is the attack animations. All right-facing attack animations are complete – well, except for the occasional mistake or two still to be fixed, a few of which I’m noticing as I watch the attack montage play below. About half of the left-facing attacks are complete as well, and they should progress more quickly on average now that I have the right-facing attacks to use as template and I’ve got so much sprite creation practice. There were a few big sticking points: I realized after mostly completing them that the original standing attack animation was a) boring and b) functionally redundant with the running attack animation. I’ve since replaced the former with the latter, but fortunately not all was lost: I was able to use the standing attack frames to resolve another issue that had cropped up. When I changed the crouching position of the right arm some time ago, I invalidated the entire swing arc of the primary crouching attack animation prototype. However, the new arm position made perfect sense for the motion of the unused standing attack animation, so I just pulled the torso from those frames into the crouch animation. I still had to redo the leg positions from scratch, but it was a nice shortcut into creating a good expressive attack.

attackmontage

I’ve also been working on the music for the game. The first few areas largely have completed music tracks already, since I created music concurrent with them to figure out the tone I was going for, but as I made that music like five years ago there’s a lot of rough edges in those old tracks and they’re not necessarily well set up to work with the systems I want to have in place for the game. That is to say, I’m not planning on just creating a loop for each area, but having some degree of adaptive music based on where specifically the player is in an area and what the game state of that area is. Thus, I’ve been remastering the old tracks, making small composition tweaks, and rearranging the parts to make jumping between them work better. Fortunately, I found that by setting timers and jump points, I could very elegantly skip between segments of an adaptive track to switch playback to a new section. Less fortunately, I discovered that a track with tempo changes and heavy use of delay effects is probably the least optimal type of track to feed into such a system. Still, it’s functional for now, even if some of the track transitions sound a bit odd. I’ve at least proven out the basic concept and built the architecture: If I need to change things up a bit later to resolve these issues, it should be quite feasible.

hills

I’ve also been working on tilesets and backgrounds here and there. I made this background very desaturated to create a clear delineation between background areas and gameplay areas, and also to reinforce the misty feel I was going for, but I worry a bit about how well it will work with the extremely vivid and saturated caves background I made before. I really love playing with color in unexpected ways, like I did with making the distance in the caves background a dark vivid red, but consistency is important as well. In the end, that’s something I can only figure out by getting the assets into the game and playing around with them and seeing what works. Really, though, changing palettes is incredibly easy compared to creating new assets, so it probably won’t be a big deal at any rate.

In addition to the backgrounds, I’ve created a number of the transitional tilesets necessary to blend different tilesets together. Now I can have grass tiles next to stone tiles next to dirt tiles without them looking like artificial grid-based garbage. There’s still some gaps in there, tiles that I’ll need to create that I haven’t noticed I’ll need to create, but I can build out most of the environments I want to now, at least at a degree of rough detail.

Over November I plan to finish out all of the character animations and start creating detail assets for the first section of the first chapter – Mostly just different kinds of grass and stone to start with but, again, in many of these cases I won’t know what I’ve forgotten until I get there and find I don’t have it. Still, finishing this game, as distant a goal as it remains, feels more concrete and feasible now than it has in a long time.

 

the_screaming_oak

There’s a narrow line that games have to walk when it comes to story. On one side, we have a story that seems not to acknowledge that it’s kind of stupid that you spend most of the time in it shooting everyone in the face and grabbing anything that’s the slightest bit valuable. On the other, we have a story about how stories don’t matter and you’re just here to shoot things and grab stuff. I find both of these deeply unsatisfying.

“Well,” you might say, “then why don’t we just make games that aren’t just mechanically motivated by shooting and looting?” Which is a real good question but let’s look past that for now because, you know, even if we make a lot of those, the ol’ rooty tooty shoot’n’looty is still an appealing formula and we’re probably going to want to keep on making them. Sometimes I want to shoot something in the head or buy a magic sword. However, I don’t need or want the game to pretend that this makes me the god among men who is the real cool hero no matter what the kids at school say; at the same time, I also don’t want the game to make stupid jokes about all of the EPIC LOOTZ I will find when I go into this HILARIOUSLY contrived situation because games r dum, right? I would like the game to provide a premise wherein I have a reason to want a sweet fucking magic sword, a situation where finding that sword is possible, and let me go. I don’t need to be told I’m the chosen one, I don’t need to save the world, I just need to be able to exist in a situation where I could plausibly want to defeat an opponent or find an interesting item for something beyond its own sake.

Even if my in-game motivation is solely greed, solely my character wanting to have a luxurious retirement in a nice castle somewhere, that still a reasonable and relatable motivation – one that makes a lot more sense than that of most game characters, at that. I would very much like to be rich right now myself. And yet even these flimsy justifications rarely get used, tossed aside either for grand stakes that are completely unrelatable (The end of the world at a minimum – usually the end of the universe) or for nudges and chuckles about how it’s all about the lootz and the sweet 360 no-scopes and jesus fucking christ just kill me already.

So many games give every impression that they hate games. They would either rather ignore everything game-like about themselves and try to be very important and serious (please ignore how absurd the actions you’re taking are whenever a cutscene isn’t playing), or present everything about themselves as a joke (haha you’re an idiot for caring about this world and therefore spending any time in it), than engage with what they are. I can’t help but feel that a big unspoken reason for the success of the Souls games is that they present what’s going on as significant without pandering to the player’s sense of self-importance. Sure, you’re the ‘chosen one’… but it turns out there’s been plenty of chosen ones before you and most of them just went crazy down in a hole.

Yeah, I know, it’s also annoying that every essay keeps turning into a rant about how Dark Souls gets everything right. Don’t think I’m not also frustrated. I’ve been frustrated for a long time.

I never really recovered from my disappointment with Left 4 Dead 2. Even its protagonists didn’t take it seriously, couldn’t treat the death of everything they’d ever known as anything but a fun zombie-themed vacation. It’s a Video Game Sequel: Everything becomes bigger and more explosive and more ‘awesome’, at the cost of complexity and nuance. Because, yeah, Left 4 Dead was an action-packed shoot-fest, but it also had tiny moments of genuine horror and sorrow. Apparently, judging by the fan reaction, I was one of the only ones to miss those when they were gone.

It’s just easier to make a game a caricature of games, make it all about shooting zombies and blowing things up. Because, hey, if everything is maximum stupidity, then it all fits together, right? So much for ludonarrative dissonance.

smbpit

I don’t know where the bottomless pit began. Maybe it’s always been there. How can something with no end have a beginning? But I think most of us first encountered the bottomless pit playing Super Mario Brothers, falling off the bottom of the screen, hearing the sad little jingle to notify us of our demise.

I remember now how strange it seemed to me the first time I encountered it. A convention almost as unintuitive as the inability to ever go back – and how curious it is that one of those died with that game while the other is still alive. We still have no end of endless voids awaiting our carelessness, four thousand holes leading nowhere.

But just like any other living language, the language of games shifts over time. Pits stopped being bottomless, and began to lead to new places, the mines that belonged to the mineshafts, the aquifers under the wells. The bottomless pits never went away, still dominating the many run-right platformers that followed in Mario’s footsteps, but along with them came Metroid and other games like it, now rather clumsily dubbed ‘Metroidvanias’.

Personally I prefer it when pits have a bottom. I like it when, if I fall, I fall into somewhere new. It’s a different way to look at the world: One way sees an obstacle, a fall, a chance to fail, where the other sees two diverging paths, one down and one forward. Even if you didn’t mean to fall in the pit, even if down there is definitely a place you don’t want to be, there’s at least something there – and, sometimes, maybe, something worthwhile. There are many dead ends, but you don’t know what will be what until you get there.

This philosophy permeates this style of game. Not all obstacles are deadly, not all side paths are dead ends, and paths which dead-end now might open up later. Playing a Metroidvania feels more real, more mappable to my general experience of existing in the world, than a simple dexterity challenge. Obstacles are never just obstacles, dead ends are never just dead ends, revisiting problems that stymied us before can yield new ways forward, and things that at first appear to be worthless can, in the end, change everything.

It’s a completely different way of relating to an environment; some games create a space for you to conquer, but Metroidvanias create a space for you to live in, to understand, to become a part of. The world is not your enemy, but a character for you to empathize with and interact with, an ongoing conversation. And, later on, we can play with that familiarity, can change areas based on your actions, can warp the world to create something new. The impact of finding the upside-down castle in Symphony of the Night would not have been nearly as impressive if we hadn’t just spent hours becoming painstakingly familiar with the normally-oriented original version.

This may, ultimately, be why Dark Souls 3 leaves me the least excited of the trilogy. Dark Souls truly lives up to this ideal, creates an intricately networked world that can be navigated in many ways. Dark Souls 2 fails to live up to this promise rather spectacularly, segmenting each area harshly and connecting them haphazardly, but encourages you to spend a lot of time in each area, to return to it for its unique covenants and merchants, encouraging real familiarity with and affection for every aspect of every area. Dark Souls 3, however, just gives you a series of levels to overcome: They are beautiful levels, detailed levels, and many advantages can be gained by being thorough in your approach to them, but in the end once you overcome them there is no reason to return. The NPCs all follow you home, the covenants are there as you need them, and the area sits, conquered, never to be rediscovered until a potential future play-through.

Here is where the meat meets the metal, the gear meets the bone; a video game is both an activity to engage in and a space to exist in. Some games embrace the former and some the latter, and there’s a distinct difference in the philosophical view of each, of what it means to interact with a world, of how problems can and should be approached. And, really, there’s nothing wrong with the obstacle model, the view of the game as primarily an activity, a skill to be polished, a challenge to be conquered.

I’d just rather stay in a hotel than run a gauntlet, myself, personally.