Archive

Monthly Archives: May 2014

EveHeaderHuh, just noticed that last week’s devblog number and title were the exact same as the week before’s. I guess that’s what I get for trying to copy previous posts for convenience’s sake. Not that that stopped me from copying this one.

It’s been a weird week. Either taking a couple of days off has totally thrown my rhythm, or allergies are subtly sabotaging me, or I’m having a really hard time adjusting to a new schedule, or possible some combination of the above, but my motivation to get stuff done has been, well, not great. Since I haven’t had the precision of focus necessary to tackle any big changes, I’ve basically just been sorting through my code, rearranging it to make it more readable, and fixing things that cause problems where I find them. This actually feels pretty satisfying, like taking an editing pass on a novel you’ve been writing non-stop for a year and a half: It feels good to sort it out, take weird and overcomplicated schemes and bring them back into line with my current coding standards. Is it productive? Will it help the game? I honestly don’t know for sure, but it’s something I can focus on, and by bits and pieces shift everything towards where I need it to be before I begin work on the next major component.

The end goal of all of these changes, as well as general tidiness and readability of code, is to make it so everything is both centralized, using files to store re-used data so I can modify them in one place and have the changes represented throughout the game, and revertible, such that I can call one function and a room will revert to its initial state. The latter is fairly easy, though requires organizing data differently in many cases: The former, however, is a big change, a fundamental change, a change which I honestly should have thought of and prepared for months ago, so it’s not surprising that this is kind of a big deal.

So here’s what’s left to achieve on development of the engine, as I see it:

A) Centralize all re-used data to one file for each module (animation, entity)

B) Make it so game elements can both be reverted and have the revert-to state modified (found items, eliminated enemies, and scripted events don’t respawn)

C) Create a level detail editor

E) Entity interaction, particularly with regard to attack registration

Those should be all of the major engine components in place. From there it’s just debugging and creating behaviors for specific in-game entities. In some ways this is still a long way left to go, but in some ways it’s so close. I just need to keep working at it and, by bits and pieces, shift everything towards where I need it to be.

This isn’t a proper content update, which I guess means I’m basically taking the week off. However, that doesn’t mean that I’m not working on the blog, I’ve just decided to change my strategy. Over the last several months, I’ve drifted into an extremely extemporaneous and off-the-cuff style: Though this confers a number of advantages, allowing me to follow whatever idea excites me at the moment and access emotions very directly, it makes it difficult to form cogent and well-researched points that stand up to rigorous scrutiny. It also means I tend to repeat myself a lot, since there are only so many individual ideas which I find particularly interesting within a given span of time. I guess what I’m trying to say is that I think, for now, that this approach has run its course, and I’m not getting as much from it any more.

So it’s time to change things up again! Starting now, I’m going back to one content post a week, to be uploaded Monday at 10am. I’ll spend the entire preceding week, each week, writing out that post to go up on Monday, rather than trying to bang it out in the last few hours before I go to sleep the day before. Basically, I want to get to a place where I can spend a relatively restrained and disciplined hour or two each day and develop a piece that’s 1000-2000 words rather than spend 3 or 4 hours twice a week writing two pieces that are 500 words. More than anything else, this let’s me spend one entire day to come up with a topic and outline where I want to go with it, rather than pressure myself to scrape whatever I can find out of my brain and slap it onto the page as quickly as possible. Not only do I believe that the end product will be higher quality and more professional – though I think my recent work has many merits, being professional and well-researched are not among these – I also think this will help me to develop a schedule for writing which is healthier and more creatively sustainable than the half-assed approach I’ve embraced up until now.

I’ll be continuing to post devblog updates once a week, but I’m going to push them back to Saturday, since writing on the main piece should be done on Friday that means that there shouldn’t be much conflict between them. I’ll update the schedule page in a bit, but for now the thing to keep in mind is that Monday at 10am is when each week’s piece goes up, and Saturday at noon is the devblog.

That’s it for this week. Now I need to get to work writing the post to go up next Monday: I hope you’ll all enjoy the fruits of this new approach then!

I guess I should put something up. I took last weekend off, so no post today. I’m also thinking through some other changes for the blog, so Wednesday’s post will probably be about what those changes are rather than content per-se.

EveHeader

Well, I spent a big chunk of this week skirting the edge of a minor stress breakdown, but other than that it wasn’t bad. I think I got a lot done. There may actually be a connection there, I’m not sure. My memory of what exactly got accomplished is a bit hazy, but I’m pretty sure something did. Fortunately, I happen to keep a daily devblog handy for just such occasions.

Let’s see: According to this, I finished up my tools for converting Flash native graphics objects into xml and back, but I haven’t yet had an opportunity to test them to make sure they work. I added some convenient direct saving and loading functions as well, so that I wouldn’t have to duplicate that simple file I/O code elsewhere. I completely destroyed the old detail editor (goodbye, a couple of weeks of work) since it will have to be rebuilt from the ground up, and created a test particle system in the level data files so I could make sure everything works in terms of converting particle data to and from xml (it does – at least, the from does, I haven’t tested the to). Beyond that, I mostly just fixed any run-time errors that came up and made minor improvements and fixes here and there, as necessary.

Man, it has been so damn long since I did anything besides programming on this project. Not since the beginning of the year. That’s terrible. But… I’m getting so close to finishing the primary project engine. All of the major components are in place now, it’s just fixing up the editors, making a few improvements I’ve thought of, and nailing down a couple of specific processes (melee interaction, primarily). I’d set some sort of milestone deadline here, except for I honestly don’t have enough control over my life to be able to commit to that kind of timetable.

Still, it feels like the end is in sight. Maybe. In a month or two…

Well, either way, for my own health and sanity and continued productivity, I’m going to be taking this weekend off. As alluded to at the beginning of this post, accumulated stress was really catching up to me this week, and a couple of days were pretty dicey.

So, a couple of days off, then I wrap up the functional component of the particle engine and dive into the editor for it. I’ve been tossing some ideas around in the back of my head, and I think at least the basic place-and drag of different detail types should be reasonably straightforward. Going into the nitty-gritty of specific particle behaviors… will be less straightforward. Still, this feels feasible. Probably, in fact, no more difficult than the entity editor was. Hopefully, I’ll have at least a rough outline of the effects editor for next week’s dev blog post.

Well, that’s all for this week. It was a rough week, but not an unproductive one, and one which leaves me with high hopes for the future, however distant it may yet be. Until next time, then.

pawn

They’re all playing games. It’s the only explanation I can think of.

The way a game is framed, victory is the only thing that matters. Accumulate your resources, destroy your opponents, be the last one standing, survive at any cost. Any sacrifice necessary is worthwhile, if you can win. That’s how the game is played.

When you take that viewpoint, and translate it into the real world, it’s a massacre. Pointless sacrifices made for worthless gains. That’s the world we’re in right now.

Everyone’s playing for a high score, ignoring the fact that the plays they’re making reduce the value of the points they scrape up. Raising money, the abstraction and quantification of a country’s productivity, at the cost of the productivity it’s meant to represent – it’s hard not to smell the doom coming, if you’re paying attention. Capitalism is a kid in a net cafe, thrilled at winning a round of Counterstrike, ignoring the clot that is forming in his thigh, blinding himself to the slow creaking of each victory bringing him closer to a grander and more final defeat..

It’s all about what we’re willing to sacrifice. Our government has proven itself willing to sacrifice our privacy and freedom of press – supposedly to uphold our safety, though, in point of fact, their policy of freewheeling military invention for nebulous causes in distant countries tends to be the genesis of most terrorist activity. Not that it matters, since the police appear to be more than willing to cut out the middle-man and brutalize us directly, so I’m not sure where the safety they’re supposed to be providing even lies any more.

What’s sad isn’t that it’s evil. What’s sad is that it’s stupid. What’s sad is that, if the people who are ruining everything right now sat down and actually thought this shit through instead of playing the game, instead of constantly plotting each move and counter-move, instead of finding the optimal strategy, instead of finding a path to victory, if they thought for just a few minutes about what is actually in their best long-term interests, most of it would stop tomorrow.

I love games, but only when everyone knows that they’re playing. Right now, we’re all just NPCs in their elaborate game of Civilization, of Sim City, of Total War, and beholden to the whims of people trying to achieve victory, whether or not that victory happens to map to any real-world benefit. Some of them ignore this, some of them tell themselves it’s part of a greater good, a battle that must be won, and some of them just don’t care. Very few of them, though, I suspect, realize that they’re sacrificing their own future, along with everyone else’s, just for a slightly better chance of victory, just for a slightly higher score on the leaderboards.

There is no victory, but the players can’t leave. The grand game continues, day by day, and we are crushed under its rules.

attention

The harder I work, the more I feel the lack of impact that work produces. Pushing a boulder up a hill over and over may be pointless, but at least it’s a solid tactile sensation and at least you know basically where the rock is located. Right now it feels more like trying to blow a ping pong ball up a ramp while wearing a blindfold. Maybe I’m doing great. Maybe it rolled away a week ago. Who knows. Nothing to do but keep on blowing – a philosophy which, I gather, has served many people well in advancing in their career, but which nevertheless leaves a bitter taste.

Hard work is wonderful, but the harder you work on something the more disappointing it is when it fails to achieve the results desired. Work attains its own momentum, and the more weight put behind it the bigger the catastrophe when it crashes. Most artists start off with no one caring about their work, and that’s fine, because we all start out kind of sucking, and we aren’t trying as hard as we could be, and really, we’re not in our art, not yet. The more we improve, though, the more we try to express, the more it hurts when few people care what’s expressed (or when we perceive that to be the case, whether justly or not).

I probably sound upset right now, or bitter perhaps. That’s not really the case. I’m just wondering if there’s a kind of artistic saturation point being approached, when there’s just not enough people left to care. A point where, regardless of the merit of any work created, there just isn’t anyone left to give a shit, because all of their attention has been consumed by the work of other artists and by their own labors, hobbies, and artistic pursuits.

I guess this is similar to my post last week. We pretend our capacity for paying attention is an inexhaustible resource, when every single day I feel the exhaustion of it being tapped. Because I feel that way, I can’t blame it when people respond to my work with silence, because I can only assume many of them are as exhausted and overstimulated as I am.

Even if the ocean of audience is shrinking, we teach more artists to art, because love of art is beautiful, and because the love of art leads naturally, in many, to creation of the same. We’re comfortable in cannibalizing our own economy of attention to pass our passion forwards into the future. That which drives us to create strains the visibility of our creations by inspiring more creators to compete.

Maybe someday the world will run out of caring. Maybe someday the fabric will stretch too thin, and rip, and no one will have any time for that which you’ve poured yourself into.

Would it still be worth it? If, not just few people, but no one cared? Could you still create? Or would the difference between the stories you tell and the stories yet untold start to melt away, and you can lay content, each night, enjoying that which you never created, inside your mind, where it’s real enough for you, and good enough to entertain your audience of one?

I don’t know. Me, I might or I might not. It’s something I think about though.

EveHeader

It’s remarkable how much time one can spend on developing a game without getting into any goddamn content. I worry that maybe I’m doing this wrong, but I also kind of don’t think it matters. I’ll get better as I go, even if I end up losing lots of time to working on the wrong stuff. Patience… For now.

So, this week I tidied up the particle effect class to the point where I think it’s more or less done, but as yet remains untested. Before I can test it I need to rip out a bunch of old code for creating and displaying level details, which is a substantial undertaking in its own right, and before I tackle that I’m writing some utility functions to save and load Flash Vector Graphics drawing data to and from XML. As I work, I keep noticing other things in the code base that I should probably fix before beginning real content production…

As well as the state-reversion issue which I noted last week, and which is still outstanding as a task that needs addressing, I’ve realized that my method of saving and loading things like entity and animation data are rather backwards, in that it saves a separate copy for each entity or animation instead of reading them all from a common source. This is a bit inefficient in terms of storage space, but I don’t care about that — the real problem is that this means that if I later decide to update the animation, it will have to be updated for all the instances in which it is used. This is really shitty! This is another problem which I believe had occurred to me before, but I put it off and forgot about it until now, and is a fairly severe one.

Once I finish up the particle stuff and test it out, along with all of the supporting functions I’ve been developing, I’m going to have to go through my code base and revamp the whole thing to handle both the level-reversion issue and the shared-resource issue, now that I’ve identified them. I don’t think either of these are huge problems, in terms of the amount of work that it will take to fix them, but it will be a finicky process that could introduce errors elsewhere, so I definitely want to make sure everything else works before I get into it. Once all that is done, then I can get back into the particle/detail editor, the final outstanding major component to be developed in the game engine.

Starbucks

They say we’re getting better at multitasking, that being raised on modern technology teachers us to look in many directions at once, perform many tasks simultaneously. Is it really possible to do two things at once, or are we instead performing some hybrid task, some misshapen mutant that bears traits of its forebears but fails at becoming them?

They also say you can split an earthworm in half and it will become two separate living wriggling earthworms. This is a lie. It becomes a dead earthworm or, at best, a single, living, whole-if-somewhat-traumatized, earthworm.

We may be getting better at tasks that require multiple discrete input streams, but that isn’t the same as multiple tasks. We cannot be in two places at once. We cannot split ourselves in half and become two separate people. We also can’t help but try, again and again. Voldemort, splitting his soul apart into pieces so he could hide them for safekeeping, the king of modern multitasking.

The problem with telling yourself you’re good at something is that then you get frustrated when you fail at it. The problem with telling yourself you like something is that you’re confused when you can’t enjoy it. The problem with telling yourself who you are is that when you no longer want live that life, you won’t know who to be any more.

Even the most trivial tasks cost a terrible toll to our focus. Every additional thing we need to do makes it harder to get anything done, and that weight stacks up, accumulates by exponents, until we can do nothing for the weight of all the things we have to do afterwards. This is why they say to ‘live in the moment,’ advice of approximately the same usefulness as ‘have you tried not having cancer?’ This is why they also say you’re lazy, because you’re paralyzed by uncertainty when you look at one event that is a link in a chain, a thread in a sheet, a drop in an ocean, and trying in futility to understand how it connects to everything else.

Keep count. See how many things you can really do at once before you waver. It’s hard to keep track, there’s no brain space left over to analyze the meta-data, the metrics, the A/B end user experience test. The part of the brain that oversees and ensures you are doing a good job is busy. The part of the brain that mulls over difficult problems at leisure is also busy. The part of the brain that used to hold dreams and aspirations has been converted into a storage space for old McDonalds Star Wars toys and surplus copies of the ET video game retrieved from a landfill. One hand holding the beer, one hand holding the phone, one hand holding the steering wheel: We’re too busy for this shit. Move on.

Any time now, I’ll be done, and the silence will start, and I can hear myself think again. I just need to work a bit harder. I just need to do more.

I wish there were some alternative, but I can’t look up long enough to check.

lookingglassknight

People in dreams are perceived in reverse order. When we are awake, we see a face, a body, a set of mannerisms, a manner of dress, and we recognize the familiar, and we put a name to the person. In dreams, I always hear a name first and the person billows out around the name like smoke out of a fire. I see them only as I look at them, their individual body parts hastily and incorrectly constructed from my imagination, at first too skinny, then too fat, constantly inconstant, but still surrounding that essential core idea of the person that I recognize. it is the same for places. Houses gain and lose rooms for convenience, meals change course, bridges become tunnels become roads become tracks.

This is the structure of dreams. They are a playground of symbols directly interacting, and ascribing visual characteristics to those symbols is always an afterthought, always a bit delayed by processing through the higher latency systems of the brain, always inaccurate, ultimately unimportant.

Games are built a bit like dreams, and perceived a bit like waking moments, but never feel as though they belong entirely to either. Games are a playground of symbols, abstractions constructed of numbers and descriptive data, which interact by methods arcane and pure: However, for the purpose of interacting with us, the players, the games wrap themselves in textures and polygons that look like worlds, fantastic and mundane, peaceful and violent, and we interact with them based on the shape they represent themselves as – regardless of what’s really lying underneath.

We get dropped into these symbol-worlds for no clear reason. Where did we come from? How do I exist? The question is passed down as inheritance from us to the characters we play. We are in media res and fighting for our lives. We are in town resupplying for our next grand adventure. The why isn’t important. Even if I don’t know why, if I keep going forward eventually I will… I will… what?

Dreams don’t have narrative structure. There isn’t a grand discovery except that which hides another grand mystery. Everything is static but constantly moving, an ocean of variform landscape. Is the world around me changing, or am I wandering again, unstuck in space? Is that a terribly bright moon or a dying sun? Nothing ever changes. Everything is changing.

Do you ever wonder if your existence in this moment is just part of someone’s extended metaphor?

I’m going to go forwards because that’s the way to go, and this way is forwards because it’s the way I’m going. The why isn’t important, what’s important is that if I stop I become just another rock, just part of the landscape, become one with the sea, and that is the end. I cannot allow myself to be stopped. I have to see my way through to the end – not because I believe the end will grant happiness, or relief, but because it is the end. A slide in a lock, clicking into place, certain as death. That is my role. That is our role.

This is the end. This is the beginning.

EveHeader

I hate it when I go through these long periods where I can’t even compile the game because too much is in flux. I am at this point completely overhauling the particle system, expanding it to support multiple different types of drawing and increasing its efficiency. I think at this point it’s slowly coming together, but it will probably be a couple more days before I get it all fixed up, and then several more figuring out how saving/loading of effects will work and retrofitting those changes back into my test levels so that I can actually see the system in action. Maybe I’ll figure out a better system for testing out the changes, but it will be a substantial amount of work at any rate.

The other major thing that I’ve been thinking about in relation to the project is the general idea of reverting levels. For instance, right now I can quickly go into a level to test it from my editor, since the editor just runs in-game: However, any changes made to the entities in testing will be carried over to the level I’m editing, since it’s all just the one level, which isn’t really desirable behavior. It’s kind of sad that it took me this long to realize this would be a problem – though it may have occurred to me in the past, I’ve put it off and forgotten about it rather than actually sit down and address the issue. So, I’ve been thinking about how I want to change my code to make this easy to do…

This also, though, has implications for the game design itself: The enemies in the game, in the story, are creatures animated by ‘sparks’ of essence, and each is unique, and when an enemy is defeated you claim their spark – it doesn’t make any sense for enemies to respawn after that, but making it so they never do may leave the door open for lots of ‘gamey’ behaviors like sneaking into a room, eliminating one enemy, and then leaving to reset them, over and over again, until the room is cleared. I haven’t completely decided how to handle that problem (if it even is a problem), but it’s something I’ve been thinking a lot about.

Anyway, hopefully by next week all of the stuff I’m working on will be up and running, and I can start working on a proper editor for it.