Archive

Monthly Archives: December 2015

EveHeader

There are two reasons I didn’t get a lot done this week. One is pretty predictable: There was a holiday, and I spent some time on holiday stuff. It was pretty good. The other reason is that I spent a lot of time on finicky interface issues, which I guess is to be expected when you’re doing tool creation.

AnxEdit03

I expanded the side bars and added some more controls, but mostly what I did was create a new labeled slider class since that combination of a static textfield with a name, a slider, and a dynamic input textfield seemed to be one I was using an awful lot. I got that done and it seems to work pretty well, and between that and the drop down menu class I already created that handles most of the basic controls I’m going to need for this tool. Most.

I’m not too sure about this interface. I don’t really like the redundancy of it, and the controls are getting awfully crowded. I may play around with using vertical sliders instead of at least some of these horizontal ones, and it may be worth considering whether it would be better to consolidate the animation and frame controls into a single panel with parallel sliders for parameters which are shared between them. This would communicate the frame/animation paradigm less clearly, but it would be tidier and more space efficient overall.

it’s worth considering, at least. I went with what was pretty much the first interface concept that occurred to me, and it can always be worthwhile to step back for a bit of perspective.

Anyway I’ll decide on that stuff tomorrow, or soon at any rate. I’ve also found a minor but extremely tricky and annoying glitch in the sliders that keeps me from accessing the very top of the slider’s range on some sliders. I think it may have something to do with Flash’s drag function not recognizing sub-pixel distances, but I haven’t experimented to be sure. It’s a nuisance, anyway, and one I’ll probably keep picking at until I either figure it out or go crazy trying since the slider code is so important, not just for this tool but for pretty much all of my tools. That’s my excuse, anyway: It probably has more to do with stubbornness.

Hopefully I can get that stuff nailed down in relatively short order anyway so I can work on the remaining tricky parts, most notably the offset and registration point editing components, which were much of the justification for me creating this tool in the first place. I’d like to get this at least nearing completion by the time I write my next devblog, since that will be the new years retrospective one and I’ll be sad if I find I haven’t made much significant progress in that time.

 

It’s Christmas now – well, it won’t be when this is uploaded, but it was Christmas when I wrote that it was Christmas. Usually, around this time of year, I travel. I get on whatever flight or train necessary and spend some time with family. This year it didn’t work out. My brother couldn’t make it and I kind of figured if he couldn’t make it there wasn’t a whole lot of point to me going and so it’s not happening. Not on the day and date, anyway.

I can distinctly imagine myself being sad and upset about this, but I’m not actually. Maybe I will be later. I do have a tendency to disperse my emotions vaguely over the next few months or years rather than experiencing them when I’m supposed to. I guess that, just generally, I’m used to waiting. I’m used to delaying, deferring, unspecific anticipation, muted expectation. It’s not exactly a strength, but it does let me be patient and diligent, and it’s not exactly a weakness but it does sometimes lull me into complacency and stagnation.

Christmas isn’t cancelled, it’s just delayed. Any cold day spent with family and a spirit of giving will suffice, and can be deputized into an honorary holiday. It makes me think about how comfortable I find waiting though, and wonder if my capacity for anticipation has been overindulged. It’s happened before. I waited to grow up, and before I noticed I’d become an adult I’d become an older adult. That’s not a disaster, but it is a disappointment. I discovered it was much easier to anticipate doing great things than to spend time doing things and trying to make them as great as I could. That was a hard habit to break, and ever since I managed to do so I’ve been terrified of falling into the same trap again.

So I have to keep working for long periods of time sometimes to make something of the scope and meaning that interests me as a creator, but I also worry that those long periods of time are just another sea of future promises, and I’ll wake up and be no closer to where I want to go. I guess that’s the risk. I guess when you set sail you don’t know if you’ll find land again. The only thing that’s certain is that you can’t go anywhere by standing still, right? But it’s so hard to tell when one is standing still. Everything is relative. Am I moving, or stalled in place while the world moves around me? We can’t feel speed, just acceleration or deceleration pushing us forward and backwards like gravity, and the threat of impact if I try to start or stop too suddenly is overwhelming. If I’m moving, am I moving in the right direction? Am I getting closer to what I want, or just heading for another dead end?

it worries me. Maybe it should worry me. I get pretty worried when I’m driving and I think I’m getting close to my exit but I’m not sure if maybe I missed it, or maybe I accidentally got on the wrong road a while back. It’s the worry that gets me to my destination. I suppose this anxiety is, to some degree, one I have to live with. It just means I’m paying attention.

Stuck at the wheel, I wonder when I’ll get to sleep, or if that’s a right I ceded the last time I woke up.

EveHeader

Making a lot of progress on AnxEdit, though I bogged down for a couple of days on the particulars of dragging and dropping frames on the timeline. It turns out things get a bit less intuitive when you add the ability to select multiple non-sequential objects to a drag and drop line like that – I don’t think there’s a 100% intuitive way to align the placement of the selected frames with where you’re dragging them, since room needs to be created to insert them which means that where you’re looking now is probably going to be offset somehow from where your primary selection ends up, but it doesn’t need to be completely intuitive as long as the user can clearly see what’s about to happen, which they can since the frame positions will update in real time as they move their selection around. There’s no tweening or anything so it’s a bit abrupt, but it still sends the message clearly. Worth the time I spent figuring it out, I think.

I also added a bunch of the simpler controls, though they’re not completely implemented yet. I got a bit sidetracked by creating a bunch of new improvements to my slider class, which makes creating new sliders of different sorts of custom styles a lot faster and easier, and which I probably should have done back when I was creating a gajillion sliders for the detail editor. These changes will probably break the detail editor when I get back to the main project, but once I get done updating it to use them it will be a heck of a lot tidier. That’s always a nice feeling.

Anyway here’s where it’s at now.

AnxEdit02

The left side controls the overall animation parameters and the right side controls the specific selected frame, though I haven’t thought about how that will work with multiple frame selection. Currently the controls aren’t labeled or fully implemented yet and the complementary text field inputs aren’t placed at all, so getting that set up is probably the next thing I’ll do. All pretty easy stuff, though it’s looking like I may need to expand both side bars to fit everything. There’s some more simple controls to go on the left side, all pretty straightforward, but there’s some tricky stuff that needs doing on the right bar: The frame delay controls, which are easy in principle but which I want to make sure I get right since they’re important, and the registration point and offset controls, which are similar but tricky to figure out a nice and intuitive interface for.

Once I get all that figured out I can look into getting undo/redo implemented and the export and recompile functions working. Two or three weeks probably, though with the holidays who knows.

 

Catch-22

I’ve been thinking about the role that humor plays in a narrative. We often regard humor as an end in and of itself, something that adds entertainment – who doesn’t like to laugh? This approach is natural and worthwhile, but is insufficient as the end-point of our understanding: As inherently desirable as laughter may be on its own merits, treating it as the end disregards what it can be used to achieve within the greater structure of a piece.

I hypothesized in an earlier essay that a large part of what humor does for us is reassures us that something that might seem scary or threatening is harmless. Someone fell down, but they’re okay; this person is strange, but they seem to be harmless; there was a weird sound, but it was just a fart. The unexpected is terrifying unless it’s funny, and that’s a thin division, but one that can, usually, easily be manipulated by a skilled artist.

So, then, when you create humor, you are telling your audience that everything is alright, that they are safe. You are lowering their guard, whether that’s your intent or not. Chuck Palahniuk’s short story, Guts, made audience members pass out at readings, which he attributes to its sudden shift from humorous to grotesque. Catch-22 captures the horror and absurdity of war better than a realistic portrayal by casting the silhouette of tragedy against the light of hilarity. Steven Universe alternates so rapidly between sharp physical and character comedy and brutal earnestness that it’s earned a reputation for bringing its audience to tears. It’s the one-two punch, the sneak attack. It’s not that it’s impossible to resist, but it’s extremely difficult to resist partially: Either you can completely shut out the work and refuse to interact with it in any way, or you can open the door to the laughter and, inevitably, to the tears that follow.

Thus, adding humor to a piece of art isn’t just about making something funnier: The humor is a flavor enhancer. It makes the tense bits tenser, the tragedies more tragic – it makes the case that this is a world that actual people can be in, that you could be in. If you make no room for humor, you’ve ceded your control over the intensity of the piece and made it monotonous. It also forces you to understand your world in ways that you might not otherwise: Physical humor demands you understand the physical behavior of your world, situational behavior forces you to consider the circumstances you create, character humor can only emerge when you really understand your characters, and even standard setup and punchline jokes require you to consider both the culture that would create this joke and the personality that would tell it.

We don’t describe humor this way though. We talk about adding a joke ‘to lighten the mood’, rather than it being part of the mood, the humor to pair with the gallows. The truth is that you can draw more tears with an impeccably timed joke than the longest and harshest string of tragedies. The truth is that making us laugh doesn’t distance us from the tragedy or lessen its impact, but by casting it in the stark relief of better times and places it forces us to confront it. The truth is that laughter is a defense, and the funniest and bitterest joke of all is how little it may ultimately protect us.

EveHeader

Worked on AnxEdit this week. It’s kind of remarkable how much more quickly I can work when the territory is familiar – this really shines a spotlight on how much of the work I was doing before was actually sitting around figuring things out, and how necessary that part of the process was. It also reveals the advantages of experience: it’s not that the more experienced programmer is smarter or even necessarily better at solving problems, it’s that they have solved more problems and thus come to many problems with a ready-prepared solution. Although, of course, that comes with its own drawbacks: If you have a functional solution, you’re less likely to try to figure out a new one, so it’s entirely possible you end up using the a familiar but inferior solution when a fresh approach could yield a new better one.

Anyway. I’ve got most of the basic interface in and working. Files can be saved and loaded, although there isn’t much point to saving them yet since none of the tools to edit them are in place. The timeline displays on the bottom and individual frames can be selected on that timeline, though they’re not set up to be dragged and dropped yet. I ran into some trouble with the animation files assuming a functioning root directory which was unknown by the main program, and solved that by adding a root directory selector tool – with a bit of work I can make it so, once the animation is loaded, its root can be moved so that the animation file saves its file path information relative to that directory. Basically I’ve just been getting everything more or less where it needs to be, building a basic interface that I can start adding tools to.

AnxEdit01

I’m not sure how long this is going to take. The more I drill down the more I think of tools which would be nice to have and necessary interface elements which I forgot. Still, as I mentioned before, the more problems I solve the more I’m prepared to solve in the future, and I believe this tool will save me time down the road, though we’ll see whether it ends up being as much time as I’m spending on it now. It’s also fun to work on, which is something I’m really coming to appreciate the importance of.

51-splash1

I’ve been playing and replaying old Fallout games – there may be some kind of tenuous connection between that and the release of Fallout 4, but mostly I just finally got around to playing through New Vegas and that whetted my appetite for more post-apocalyptic talk-and-shoot. I tend to expect, replaying games I enjoyed in my youth, that I will find them a combination of enjoyable and tedious, the bright and once-fresh ideas and aesthetics muted by interfaces designed before they knew what worked well and often tedious game mechanics. I was surprised to find that I actually just found Fallout super damn fun to play, aside from some technical issues and a combat system that’s a bit over-randomized.

I was also surprised by how much you have to fight. I think that, over time, the approach taken by Fallout had conflated itself in my mind with that taken by some other RPGs, where there were non-violent ways to resolve almost all situations, but no you’re pretty much not going to get through the game without killing a lot of dudes. You can sneak by some of them, and you can talk your way out of a number of fights, but most characters won’t be able to do both so eventually you’ll probably need to be able to take a rocket to the face and keep fighting. What made Fallout remarkable, though, and still does, is it really feels like the fighting and the talking are taking place in the same game. An awful lot of the dialogue choices will instantly start a fight, and when you win that fight people in the world often notice and comment on it. If you lose the first you just die and reload – and hopefully you saved recently because this was before quicksaves and autosaves were a thing. The combat and narrative are part of the same story in a way that just isn’t true of most games, making the entire adventure feel like a cohesive whole, rather than a bunch of fights strapped to a bunch of dialogue.

Going back, it’s also striking how the interpretation of the post-apocalyptic wasteland has shifted over time. In later games, anarchy generally reigns, with raiders everywhere, angry super-mutants everywhere, feral ghouls everywhere – there’s some logic to what goes where specifically, but in general the world is overwhelmingly and consistently dangerous. In the first game the world is plenty dangerous, sure, but the settlements all have walls and active police forces, sometimes even police forces powerful enough to become bloated and corrupt. They politely ask you not to start trouble, and when someone asks you to do something flagrantly illegal, which everyone does for some reason, you can tell them and they’ll do something about it. Considering this takes place like a hundred years before the newer Fallout games, society seems to have actually backslid somewhat – which, granted, seems to work nicely with the interpretation that the nuclear apocalypse wasn’t really the worst thing that happened to humanity, just an especially noisy episode in the unending chain of awful things humanity does to itself.

I noticed partway through that there were no children in this edition of the game. Apparently they’d been removed, since having them there meant the player could kill them which was I guess deemed to be a no-no, since for later entries, Fallout 3 and above, children are immortal. I gather from reading forum posts that this removal was achieved by making all of them invisible, which ruined a few players playthroughs when they only discovered later on that an earlier grenade or spray of full-automatic fire had killed some invisible kid and now everyone in the wasteland hated them for it. There’s also a quest which describes the grisly murder of a man’s son – but we never see him, either, so I guess generally it’s fine if children die as long as they’re considerate enough to do so out of sight.

It’s also noticeable just how much Bethesda, who took over the series starting with Fallout 3, ran with the whole 50’s futurism idea. In the first game, the future of the past is taken as a rough cue for some of the tech design and the licensed music, as well as a veiled critique of the mid-century ideology America tends to frequently fetishize, but later games interpret that aesthetic as the core concept of the series.  Unfortunately, in so doing, they often eschew the biting satirical angle that made it such an interesting twist on the post-apocalypse in the first game – turning an intriguingly piquant side-dish into the main course, as it were.

I don’t really have a conclusion to come to here, other than that Fallout is like real fucking good man. I don’t want this to turn into me complaining about the newer games, because I’m sure they’re perfectly fine as what they are, it’s just that what that is is definitely not the same thing Fallout was and is less interesting to me personally. It’s interesting, at any rate, to observe how the road of creativity runs through these different studios’ and artists’ interpretations, and emerges something recognizably similar but definitely not the same, different ideas emphasized and excised, a game of telephone played with multi-million dollar budgets.

 

EveHeader

After a few days spent fixing some really sneaky and insidious bugs in the animation system, I’ve started in on creating an animation editor. Since the save file format of my animation files is .anx (animation xml), I’m calling this tool AnxEdit. This is the sort of thing that I hope will be really useful for a long time, and maybe even be useful to other people if I do it right, but which also might just be a big time investment in a way of doing things I only ever end up using for this one project and end up discarding. A lot of the programming work I do occupies that state, I suppose. I try not to worry about it: Either it will be useful for the future or it won’t, and most probably bits of it will and bits of it won’t. Even if none of it is, the act of learning why none of that stuff will be useful should be, itself, valuable and edifying.

I’m not sure how long it will take this to coalesce. I tend to code from the outside in, starting by creating all the member variables I need, then the classes I need for those member variables, then the member variables of those classes, and so forth until I have all the members and classes laid out – then I pick one, probably near the top of the hierarchy, and write out all its functions, test it out and get it running, then the next, and so forth until it’s done. Usually that means I waste relatively little work, since the role of each class is made clear when I start by how it’s used elsewhere. Anyway, a lot of it is just boilerplate and UI stuff, much of which I can hopefully copy from elsewhere in my code base. I don’t think any of this will be very hard, but it might take a while just to get everything working – not difficult code, just lots of easy code.

Anyway once I get that done I’ll tidy up the animations, add the registration points to make the secondary attacks, procedural hair animation effects, and sprite attachments work, and that should lead naturally into a few more tasks, as well as still finishing up the spear throwing issues that originally sent me down this path. Once I feel reasonably settled with all that stuff, I’ll start in on building out the first level to more-or-less release quality, albeit still missing a couple of enemy types and some narrative elements – indeed, figuring out what all is missing when I try to build a finished area is much of the point of exercise, since that will point me towards exactly where I’ll need to put in work next.

Feeling torn between lots of commitments at the moment, but still making progress, even if slow, even if tangential. Going somewhere slow is better than going nowhere fast, I suppose.