Archive

Monthly Archives: December 2014

Candle

I still feel like I’ve wasted a lot of time.

It’s easy to tell yourself that your future is still ahead of you while you consume it bit by bit, bite by bite. It’s easy to just keep chewing on the future until you don’t have any left, all the while telling yourself that there’s plenty where that came from, an infinite sea of days, each a bit better, on average, than the one before. Well, it’s easy at first, and then it gets harder and harder the further you go, and it’s time to understand that, no, you aren’t preparing, you aren’t training for the day your time arrives, you are just killing time, and the dead days are starting to stack up, starting to stink up the joint.

I see a lot of brilliant young people creating and writing about games. I try not to resent them. The lies I told myself, about how each day I was preparing for next year or next year where I would be the amazing new kid who made the amazing new thing, and kept thinking that until I wasn’t a kid, until I wasn’t new, until my ideas weren’t new either, if they ever were.

They didn’t prepare. They just worked, and made things. There’s no reason, ever, not to be actually doing the work. Training is not a replacement for doing the work, it’s just another time and place and situation to do the work in, hopefully in a setting where failure is more edifying and less devastating than elsewhere. Never trust an education that doesn’t consist primarily of doing the actual thing you want to be doing.

It’s not a disaster. There are people older than me with the same struggles, and people younger than me with different struggles that seem distantly related. It’s a regret, but not an unbearable one. It’s an imperfection, but it doesn’t shatter me. It’s a mistake, but one I hope I’ve learned from.

Maybe everyone needs to waste some time. Maybe it’s part of the process.

Probably not.


 

This year, I want to be less afraid of my own voice. I never talk into microphones: I hate calling people: I feel uncomfortable speaking to anyone unless specifically addressed. I’m not entirely certain why. I’m not sure if I have anything worthwhile to contribute. I think that most communication is a smoke screen for ideas and intents rather than an explication of them. I don’t want to bother anyone. Those are reasons. I don’t know if any of them are the actual reason.

But, this year, I’d like to speak, at least a little bit. Maybe I can make a video and put it up online. Maybe I can actually write a song with lyrics. Maybe I can at least play a game with voice chat. There’s a reason I express myself here through a pseudonym, a name stripped of identifiers, humanity, name, gender, black and white. It’s a kind of ventriloquism. It’s my voice, but it’s not my voice. I can pretend it’s coming from anywhere. I can pretend it’s coming from something distant, only somewhat human. I can speak through it.

Maybe, this year, I can speak for myself.


 

I feel okay about where I’m at now. I’m confident that I could be getting more done, but I have hard proof that I could be getting less done – That’s a scene I don’t need to revisit. And, as slowly as I progress now, each day I feel like I’m understanding how I operate a little bit better, like my brain and my motivation are a puzzle that I’m collecting the components to, here and there, and slowly piecing together. I hope that, even as I have good days and bad days, the average day will become a bit better, the bad days a bit more manageable, and the work I get done on each a bit more useful.


 

I know all of this will end eventually. It’s a slow, slow race against time. It’s so slow it’s easy to forget that the race is still going, but it never stops. Well, it does, but you won’t notice, because You stops with it. There’s a lot of other races going on, each one leg of the greater human race, and as each one that runs parallel to ours stops it becomes harder not to stop with them. One day we’ll all stop together. The music will cut, and we all sit down, or we all fall down. Hopefully not soon. We’ll see.


 

I think I’d like to write more music this year. Perhaps write a new piece every month, until by the end of the year, twelve months from now, I have a full-length album. That would be nice.

I would also like to write more and better words. I feel like many of the things I’ve written for this site have been redundant or inconsequential, either said better by someone else or by myself or ultimately of no real insight or use. The more important the words I set out to say are, the more trite and self-indulgent and ignorant they come out. I have no idea which of the things I contain within myself are of value to others, nor any idea how to express those things in a way that is easily digestible. But I’d like to keep trying. I think some of the things I’ve said have been good and interesting and useful. It could happen again. It’s worth a shot.

I will also continue to survive. I will keep doing work that earns me enough money to pay rent and buy groceries. It’s good for me, anyway, to worry about other people’s problems and satisfaction sometimes, instead of my own.

I would like to experience more art. Play more small, interesting games, read more books, see more movies and lauded television series. If they aren’t stretched out once in a while our dreams grow small and come to constrict us.

And I will keep making my game, EverEnding, step by step, piece by piece, byte by byte into the future. Someday it will be complete. It may be good, it may be bad, but at least it will be.

So long 2014. You were a rotten year, but precious nonetheless. You will be missed.

EveHeader

Controller input works perfectly as far as I can tell, and melee attack registration, health, and enemy destruction all work. The most major problem remaining is that of making entities affect the game state in a way that I can use: Flagging events that have happened, enemies that have been destroyed, rooms that have been found, etcetera. The difficult bit isn’t so much making it so that they can affect an object that stores that kind of info, but in structuring that object both so that it can affect the game in a way that I can easily interpret and build upon and be affected by the game such that entities can work with it in a consistent manner and I can easily save or load it. This is mostly going to be a challenge to think through and figure out the general shape of – once I get in there, once I know that shape, it should be pretty easy to actually implement. Either way, I’m pretty confident that I can have it up and running by the end of the year, even though obviously the coming week will have some festive distractions.

Since we’re getting towards the end of the year, I think it’s time to take a step back and look through what I’ve accomplished – and, inevitably, what I’ve failed to accomplish – over the past year.

The Entity Editor: I have mixed feelings about this. I think that this aspect of the project took way too long and I wasn’t too thrilled with the result – and, with the perspective of time, I’ve come to understand why. In designing this editor I tried to solve two problems while only acknowledging one: Frankly, if I were just making the game, creating a full-fledged editor for all of the entity behaviors and behavior settings and prototypes and templates is overkill. Until the point where I make that editor really good, it’s going to be faster, easier, and more reliable for me to just construct those entities in code. I know this because that is how I’m doing it now, even with the editor in place. It was silly of me to fuse the tool for editing entities and the tool for placing them together in the first place, and having realized that I’ll probably spend a couple of days stripping the entity template editing components out of the level entity placement tool and setting them aside.

I made this mistake for two reasons: First, my original approach to entities, before I created the template system (previously called the prototype system) had each entity unique, with its own suite of behaviors. It didn’t make sense then to be able to place them without editing them, because an unedited entity was completely meaningless. The other problem is that, even as I try to develop this as a game, there’s a part of me that wants to develop it as a flexible and reusable tool for many games. I don’t think this is a bad impulse, but it’s certainly one I should be aware of, since it often drags me off-course.

I worked on it for 3 or 4 months out of the year and I’m going to end up trashing, or at least tabling, a lot of that work. It’s sad, but it’s not a disaster: Most of the work I’ve done on it will find use, if in some different shape, some different day.

Sound and Music Playback: These facilities remain largely untested due to lack of content to work with, though as far as I’ve tested them they work okay so far. Flash has a certain number of issues with sound latency, however – I’ve not yet tested these to see if this is a problem I’ll have to address, but there is the possibility that in the future I’ll have to work with the sound buffer more directly in order to fix latency issues. I don’t know if this will be a problem or not, but it’s something I’ve been worrying about. We’ll see.

Image Browser: It’s ugly as sin, but it works and it didn’t actually take me that long. It’s also generally useful enough that I’ve reused it and repurposed it several times, so as a tool I’d say it’s a success.

Particle System: The particle system existed before, but I overhauled it so extensively it’s worth mentioning again. Particles support a number of different rendering styles, can be affected by individual type of particle, can have temporary particles added to the system, and support blurring and scaling based on distance from the camera.

Jack Shit: This seems to be pretty much what I accomplished from May through June.

Detail Editor: I am, so far, completely satisfied with my work on the detail editor. This may change as I need to use it day-to-day to build levels, but so far it seems like it will do everything I need it to do. It handles both simple details and moderately complex particle effects easily and intuitively. I think I might have done A Good Job.

Side Project (Turncoat): Let us never speak of it again.

Inter-Entity Collision: Went very well once I focused on it. The biggest problems were not in determining collisions, but in making sure they happened in the right order and to the right entities.

Controller Support: Implemented!

So that’s this year. Looking over it now, I can clearly see two or three slumps that lasted a month or two each and slowed productivity to a crawl during each instance. I would like to say that all I need to do is just avoid these slumps, but it’s hard to know how to approach that particular problem of emotional management. Hopefully, now that I’m past most of the thickest thickets of programming, I can move a bit more freely between challenges and feel less weighed down by feeling the need to address one onerous task after another.

That being said, a few things still need to be addressed in the core programming, and those are what I’ll be working on as the new year rolls in:

  • Collision detection improvements (fixing glitches)
  • Modifying/saving/loading central game state
  • Dialogue management
    • Interaction w/ Game-State
    • Text captions
  • Animation registration points and derived effects
    • Sling attack
  • Improvements to Tile Editor:
    • Add ability to invert collision mesh within selected area
  • Manage loaded level assets (particles etc) better – figure out when the best time to pre-load is
  • Main menu
    • Load game
    • Multiple profiles
  • Improvements to Particle System
    • Can be spawned by entity events
    • Can play sound
    • Collision with defined shapes
    • Spawn masking
  • Dynamic zoom
  • Graphics post-processing? (offload to C++ sub-program?)
  • Special effects
    • Triggers for effects
    • Reflective floors
    • Water reflections/rippling
    • Screen shake
    • Basic lighting
      • Lighting editor?
      • Light occlusion

Those are the programming tasks I can think of now. More may occur to me over the coming weeks, and I’ll add them to this list as they do. It seems a reasonably manageable list, though… and I’d like to tackle it with renewed vigor, try to hammer down the last of these outstanding programming tasks, in particular those that are keeping me from building levels for the game.

I want to be able to create the first chapter for EverEnding over the course of next year, and hopefully have that chapter complete and playable by October or before. It’s taken too long already, and will continue to take too long, but I feel okay continuing to struggle to make this happen until someday it finally does.

It’s time to work. It’s time to create.

 

 

EveHeader

It’s been a pretty okay week. I fixed a bunch of bugs in the entity system, particularly in saving/loading data, and I decided after much deliberation that ‘EntityPrototype’ wasn’t actually a very accurate class name so I refactored everything to rename that to ‘EntityTemplate’, which is a much more apt analogy I think. I made it so entity animations can be manipulated in terms of coloration, size, and rotation, I made it so player attack entities properly sync up to the player’s movement, cleaned up animation files for easier reading and editing – some changes and improvements, but largely a lot of housekeeping.

One big open question I’m still kind of sitting on is how I want to handle enemy death animations and other things that happen after they are reduced to 0 health. Do I want them to create another entity which plays the animation? Do I want them to go into a state of hibernation while the animation plays? What about for the player’s reaction to damage/failure? I’ll need to figure all this stuff out before I can make enemies suitable for the release version of the game, which is still obviously a long ways off but which I definitely need to start thinking about seriously when working on the code base.

Anyway, I decided to set all of that aside to work on a controller input system. This is one feature I definitely want to have working, and it will make it feel a lot more like a game just having this system up and running. The main issue is that there’s just no unified input system, and it’s barely worth it to get it running for just the controllers I happen to have, so I’ve been putting a lot of work in the last few days trying to devise some sort of way to unify all of my game inputs. Towards this end, I’ve created a VirtualController system: These are abstracted virtual inputs, which may have an actual physical controller behind them but can also be used for keyboard or mouse inputs. They should be able to handle any controller layout, with the caveat that that layout will need to be hand-coded into a file beforehand. I may make a small tool to do this for different controllers and send that out as a survey if necessary, since I don’t know of any kind of centralized database of different controller layouts and how they map to the logical inputs. Regardless, I should have it up and running for at least my own personal use within the next day or two, and I can expand it from there.

This last point doesn’t have anything to do with EverEnding’s progress exactly, but over the last few days I’ve started watching Handmade Hero and it’s done wonders for my motivation. Handmade Hero is an ongoing livestream and series of videos where a veteran game programmer builds a complete video game, running from low level C code, and streams its development. Though I’m familiar with a lot of the principles, I still feel like I’m learning a lot about where the metal meets the rubber, and it helps me get my energy and focus up to work on my own project. I highly recommend checking it out if you have any interest in games programming, though I’d recommend at least an entry-level programming background.

I’m hoping to have controller support and attack registration completed by next week, and a good handle on the aforementioned problem of entity death/animation/respawning/et cetera. Not sure what I’ll tackle after that, but I have a few days to figure it out.

There are probably some spoilers here if you care about such things.

Isaac

It’s incredible the symbolic weight we can lay upon the simplest of stories. Each such story extends beyond itself like tree roots and tangles into matted carpets of narrative and meta-narrative, confused ideas about what it means to exist and to be a person, Each story is not only its own story, but also part of this grand tangle that comprises our symbolic understanding of the universe, and the simplest stories we hear the earliest grow the deepest roots, come to underlie all other stories, come to bind and be bound into an intractable metaphorical labyrinth.

When we encounter stories like this as children it’s finding what looks like a little mushroom, but is actually one nodule of a mass of fungus that comprises the ground on which we stand. It is the forest masquerading as a tree. it is the tip of the iceberg, the horn of the bull, the grit of the planet of the star of the galaxy, and we are not prepared to comprehend. Our parents’ lives seem otherworldly – it doesn’t even occur to us that they have lives beyond us – and everything past our tiny fingertips seems so vast that we touch only fragments at a time.

Instead of being a story that ties into a world-view, parable and art merges into our reality. When you’re not that far past figuring out that objects don’t actually go away when you stop seeing them, metaphor is a big ask.

The Binding of Isaac is a confused overlay of heavy Abrahamic symbolism laid onto a procedural pastiche of the Legend of Zelda. I don’t mean ‘confused’ in a pejorative sense: It evokes the feeling I was just discussing, that of being a child, surrounded by parables and adult interactions that both exceed our understanding of the world and thereby begin to fuse with one another.

It’s easy to forget that feeling of not really knowing what’s real and what isn’t. That isn’t to say that we necessarily ever really learn what is real, but we at least become more certain of our divisions. We at least become more confident that there is, that there must be some objective reality underlying all of the interpretations.

The fact is, the history of objective reality is as distant from our perception as it is from explicit fiction. The truth is something that only existed in the moment, and for us can only be inferred partially from available evidence, a tiny light in the distance sinking inexorably into the black.


Isaac00

There are a lot of different ways to create art, by way of impulse and instinct, by way of calculated engineering and symbolic interweaving, through characters or through places, through eras or circumstances. Games generally tend to favor deeply analytical and structured processes because these kinds of structures line up most readily with the technical work required to make a game manifest. Making a fully-featured game with its own unique gameplay tropes in a stream-of-consciousness, impulsive and expressive fashion is quite difficult, and the rare realization of this approach to creation is what gives The Binding of Isaac such a distinct and unique aesthetic.

Because ideas are siphoned directly from the most surface-level impulses, they carry all of the biases and preconceptions of the artist, often unfiltered. This kind of stream-of-consciousness and improvisational creation is common methodology in standup comedy, which lends itself readily to intuitive  and off-the-cuff approaches. The process of a lot of comedians seemingly involves scraping their psyche for the grossest, weirdest thoughts, throwing them out there and, with a wry grin, saying “isn’t that some fucked up shit?” And it works, because all of us have some of that shit in our brains, and acknowledging that it’s there and it’s gross but it’s still ours makes us feel human, feel worthwhile even at our most flawed.

There are drawbacks to this approach. No mind can exist in our world without picking up some really toxic concepts, and sometimes that toxicity is so potent that even within the context of saying “aren’t I hilariously fucked up?” it’s hard to allow these ideas space in discourse. Between portraying toxic ideas that have burrowed into our minds, and encouraging and normalizing those ideas, there’s a line so razor thin that it can be difficult to see, and bitter and ongoing disagreements vie over where that line lies. This is a frequent point of contention between social justice activists and stand-up comics, whether a joke is mocking oppression or normalizing it, whether a joke deconstructs racism and sexism by showing how the stereotypes they are built on are absurd or whether it merely parrots those stereotypes without meaningful commentary. In cases where a comedian has a strong social consciousness it can be a troubling and conflicting open question, leading comedians like Dave Chappelle into painful crises of conscience.

I don’t think there’s really a ‘solution’ to this conflict between normalization and description. This is one of many conflicts that we must resign ourselves to in our art, and navigate in the only way true ethical conflicts can be navigated: Day by day, case by case, rough-hewn principles abandoned far back on the road as too heavy and onerous to be borne out into the real world.


 

Isaac02

The Binding of Isaac is uniquely structured in games, and even though it’s kicked off a wave of imitators it still remains distinct from them in several ways. Isaac is designed to be played through multiple times: Each time the game is completed, some new facet will be revealed. New areas will open up, new enemies will appear, new upgrades will be added to the pool of items that can be found. Though at first the game appears simple, there’s more and more to discover as you go.

While many games have been released since Isaac using a similar multiple-playthrough incentive, in all cases the new aspects unlocked are about rewarding the player by making them stronger or giving them more options. In Isaac, each playthrough expands the scope and difficulty of the game while the player character remains more or less consistently powerful: conversely, with most other games using a similar structure, the game stays more or less the same while the player gets more powerful, something much closer to the traditional RPG leveling system.

Though these games are overtly inspired by the structure of The Binding of Isaac, when it comes to the intent behind the structure Isaac is far more similar to something like Frog Fractions, an experience of discovery, than it is to Rogue Legacy, an experience of empowerment.


Isaac01

The Binding of Isaac: Rebirth is a remake of the original, undertaken primarily because that original game grew too large to be a manageable project in the confines of the antiquated version of Flash it was built in. it was built quickly, in a matter of months, and architected in ways which were more expedient than they were expandable: This, more than any limitation of design or vision, is the flaw that Rebirth was released to rectify.

For all that Rebirth adds, there’s something missing. For all the technical woes born from creating the original game quickly and haphazardly, it captured a spontaneity and energy that’s distinctly different from that of a long-term project. For a game like Isaac, that is so inspired by the muted and confused impressions of childhood, so shaped by intuition and free association and reckless expression, taking a large team and long time to express it in its most refined form gives the whole experience a different impression than when it was expressed as quickly and intuitively as possible. Not only does this make the vulgarity of the game appear more calculated, and therefore less justifiable than before, it makes the entire experience less coherent. It is the difference between the quick sketch and the painstaking portrait: The latter may take more time and technical execution, but the former sometimes captures a spirit, a moment of movement, that’s lost if you try to polish it, to ‘fix’ it.

This slight conflict is echoed and amplified throughout Rebirth: The game employs a ’16-bit aesthetic’, presumably intended to hearken back to the Zelda games which inspired it – but, as with most modern games employing ‘retro’ styles, it doesn’t really commit. The resolution is higher and wide-screen, the frame-rate is targeted at 60 frames per second, the color range is essentially unlimited and operates via RGB tinting rather than palette manipulation, objects are translated and rotated and scaled with sub-pixel accuracy… It’s an inversion of the kind of up-res filters that are popular in emulators for old games, which draw interpolated pixels between the jagged edges created by the limited resolution: Rebirth appears to use high-res pixel images, perform operations on them, and then filter them down to lower resolution to hide the ugly artifacts that result from these kinds of operations. This is a peculiar choice in particular because the vector art the original game uses was resolution independent, and it was designed to take advantage of that capability, freely scaling and tinting objects. Translating a design made with these decisions in mind directly into a technical situation where it’s much more expensive, challenging, and aesthetically inconsistent to perform these operations seems a bizarre choice. The end result of these decisions isn’t ugly or unappealing – the underlying art is well-executed and it runs well – but it does seem somewhat inconsistent and ill-considered.

The music carries the action well, and layers fade in and out based on gameplay situations which adds an element of excitement and discovery that wasn’t there in the original, but it feels less consistent in tone and intent. The original soundtrack had a balance between excitement and melancholy which evoked the difference between the game’s action gameplay and its dark and strange story framework, and though the new soundtrack never detracts from the experience it trades away this complexity of emotion for a colder and more technical complexity. It’s a worthy soundtrack, but along with the new graphical style seems slightly at odds with the intuitive and personal stream-of-consciousness of the game’s expression.

Where these technical improvements don’t conflict with the fundamental soul of the game, they shine. Almost every item in the game has been carefully developed such that it interacts with other items in an appropriate and interesting way, in many cases obviously requiring custom code to handle a specific interaction. It would be hard to argue that this isn’t an improvement over the original, where many items didn’t work with each other at all, in some extreme cases making it impossible to progress. The game runs stably and reliably on most systems, and enemies and items have been added which add so many projectiles the old version would have slowed to a crawl. Room layouts are more varied and interesting compared to overwhelmingly symmetrical layouts of the original, and native controller support and game-saving make enjoying the experience much easier than the occasionally convoluted issues of control and time-investment required to play the original.

Nevertheless, some aspect of the joy and horror of the original Binding of Isaac has been lost. As someone who tends to overthink and overwork every creative endeavor, I have to wonder: Is this my fate as well? Am I destined to have my creativity confined by a box of my own craftsmanship? Or is there a light shining through, a way to capture that spirit and spontaneity, a way to express myself through the meticulous constraints of game technology, supported without being constrained?


Isaac04

One of the most interesting and nuanced changes from the original game involves the health system. In the original, there were two kinds of health: Hearts and Blue Hearts. Hearts are what you would consider your standard health: You start with 3 of them and can upgrade your maximum with a number of different health upgrade items which allow you to collect more. Blue hearts completely ignore your maximum health capacity and just get added to the end of your health meter with no limit: They can keep on going beyond what the health meter can display. They are more useful in every way than standard health pickups, but generally less useful than health upgrades, and collecting a huge number of them is frequently a certain path to victory. Rebirth completely changes this dynamic by making it so that your maximum health and blue hearts together cannot exceed the maximum displayable health value, making blue hearts useless once you’ve accumulated enough maximum health.

This results in a very strange dynamic: If you have a high maximum health but are running low on current health, you can end up dying surrounded by blue hearts you can’t pick up because you have no room for them. Health upgrades are no longer objectively positive: Some of the most powerful runs have no health upgrades at all and run entirely on blue hearts. In practical terms, the optimal strategy is usually to choose either health upgrades or blue hearts and structure your approach around that choice: Items which provide blue hearts get more powerful the lower your max health is, and items which restore health get more powerful the higher it is, so depending on which you have you may want to collect or avoid health upgrades. Though it’s sometimes difficult to find health upgrades, depending on how you’re playing it can be nearly impossible to get rid of them, so the choice of whether or not to take them is far more loaded than it may, at first, appear.

While this system is likely not intended to convey anything in particular, or even necessarily intended to be an interesting gameplay decision so much as to hem in overpowered blue heart maximization strategies, it does have a weird kind of symbolic meaning. Generally, in Isaac, hearts symbolize life and vitality, with red heart upgrades being provided by items like food and drink, where blue hearts symbolize faith, the supernatural, and the life of the mind, being provided by religious symbols like the rosary or the miter. Being asked to choose between one or the other in order to maximize a run conveys a message about temperance and faith and the difficult decisions that go into how a life should be best lead.

This is particularly interesting in light of the running theme through Edmund McMillen’s games of balancing, or failing to balance, between the creative life of the mind and the real world. This suggests that the ideal balance isn’t some simplistic 50/50 time split, but a situational equilibrium that changes with each moment – sometimes, to survive, you must dedicate yourself to your spirit, towards improving and healing your mind through focus and faith – sometimes, to survive, you must rest and replenish, eat and drink and become physically whole. Trying to do both at once just makes you less capable of pursuing either.

Is this implication intentional? Probably not. We ascribe meaning to the patterns of stars in the sky, though, even though the lights above neither know nor care about our petty problems. Some messages are important not because of why they were sent, but because of why they were received.


Isaac05

The intro and the first ending are the only segments shown in Isaac’s hand-drawn style, and also are together the only instances of spoken dialogue within the game. This suggests some striking divide between the narratives provided in those segments versus those provided in the brief ending cutscenes, which are rendered in a more traditional animated style. In many stories, these shifts would suggest a divide between the ‘real world’ of the fiction and something just happening in the character’s mind, but given the contradictory and fragmented nature of the rest of the narrative I doubt that there’s any such underlying ‘reality’ in The Binding of Isaac. Rather, I would suggest that these strike the divide between the conscious world, the world that Isaac constructs out of drawings and stories to make sense of what he’s feeling and cannot understand, and the unconscious world, his world of dreams and symbols which feed into his thoughts but is wild and incomprehensible.

This evokes to my mind the first Silent Hill game – two worlds, one seemingly ‘real’ but cut off from the reality we know, grey and muted, the other a purely nightmarish world of decay and rust, a purgatory where sinners and lost souls wander. There’s also a parallel between Isaac’s last ending, showing Isaac hyperventilating, locked in a chest, in his presumably final moments, flickering back and forth between a scared child and a vicious demon, and the ‘bad’ ending of Silent Hill, showing Harry dead in the wreck of his car, the preceding story perhaps just a dying hallucination.


Isaac06

The D6 is an item you get once you defeat Isaac playing as ??? – who is essentially Isaac’s corpse. The D6 allows you to change any item you find into a random different item. There’s a couple of interesting points to note here: First, a notable effect of ‘random’ items like this that they essentially end up decreasing the overall randomness of a game’s outcome through means of increased, rather than decreased, randomization. There’s a certain naive approach to randomness in game mechanics that intuits that the more randomly selected numbers there are, the more random and unpredictable the experience is. In fact, the practical result is frequently the opposite: If just a few numbers are left to chance, the outcome of those numbers gives a huge impact to a single individual random chance – but, if the game is built on large amounts of randomly selected numbers, then over the mass of them they’re almost certain to balance out. This principle is neatly illustrated by the D6, which allows you to introduce more randomization in order to increase your average odds of success.

The D6 is also interesting because it provides your only means of escaping bad luck. This, along with the item’s description, ‘reroll your fate’, suggests gaming in general as an escape from the punishing vagaries of real life – though, in the end, it won’t help Isaac escape the doom ascribed to him by the confines of the game, it will give him a moment of ease, a moment of escape, a tiny bright spot shining through a keyhole


Isaac03

Isaac suggests a number of interpretations through its several endings, none of them pleasant and few of them suggesting the actual gameplay moments are anything more than a hallucination or creative construct of Isaac’s mind. However, no matter what happens in this crazy scenario with hundreds of interacting elements, no matter what comes before, at the end, every single time, he has to climb into the chest. Each play of the game is just one of a million feverish escape fantasies, each suggestion of an escape from death an attractive lie. The only prize that can be won, the only ending that doesn’t require you to climb back into the chest, is when you collect the key to the lock, fight the greatest of all imaginable evils – and find yourself already in the chest anyway, in a brief moment of lucidity, a shining light through a keyhole.

Then you play again, as a different Isaac with different adventures, but the chest is always waiting. The chest contains the game, contains every experience you might have within it, the fate you constructed for yourself by playing.

 

Next time: The Swapper

EveHeader

Syncing turned out to be fairly easy to implement once I decided how to approach it. I had a bit of trouble getting the character to move with the platform she was standing on, but that was mostly just because my approach was flawed, and once I changed everything to just use velocity values instead of some of the weird direct modifications I’d been trying it all worked just fine.

After that, I wanted to come up with a system for moving these kinds of special platforms, so I made two: One is a very simple behavior for moving smoothly in a sine-wave shaped motion on either or both axes over a period of time, suitable for any kind of repeating smooth up-and-down, side-to-side, circular, or figure-eight movement pattern. The other is based on providing a set of movement vectors and the amount of time to move each distance in (rather than a rate of movement), along with easing values between 0 and 1 to handle how much acceleration/deceleration each step should have.

Now that those behaviors are complete, I’m working on getting attacks working using the collision and interaction methods I’ve established over the last couple weeks. The attack part should be fairly easy, though probably a bit tedious since I’ll need to create a separate entity prototype for each style of attack, but before I can test it I’ll have to construct a test enemy to work with, which may take a bit of effort. Maybe I can temporarily steal some sprites from another game to get that up and running.

Oh, the other major thing that will need to be figured out is how to handle entity destruction. That is, right now an entity can be deleted, but they just blink out of existence, which is pretty unsatisfying. I need to figure out how I’ll be handling dying animations and other such effects.

It’s a bit discouraging to think that this time last year I was releasing the very first rough footage of the game and how little it’s changed visually since then, but I think a lot has changed under the hood. For the next update I’ll probably go back and look over what I’ve accomplished during the past year, which will either make me really depressed or slightly mollified. We’ll see!

Also, I know I’ve been super bad about updating with non-devblog content for the past month or so. I’m hoping to get back in the habit soon. It’s just really easy to get sidetracked. Sorry!