Archive

Monthly Archives: January 2016

EveHeader

Something I’ve noticed: While I was working on the final mastering phases of my album, even though it was a lot of work of a sort, it was also a section of the day where I had nothing else to do with my eyes and hands, and I got a fair amount of programming done during that time. I think that, while I often do a better job of programming if I’m not listening to music, I undeniably have a much easier time starting programming if I’m listening to something when I do. My general tendency towards laziness and inactivity is most often a manifestation of anxiety about where to start, so any satin sheets I can put on that speedbump are helpful.

Despite these difficulties getting started, this week I have been, if not massively productive, at least dutiful. I finished up the frame image editor, though on closer inspection I appear to have missed something fundamental in the image loader/selector. That shouldn’t take long to fix anyway, and all the tricky bits should be done now at least.

AnxEdit08

I should probably tweak some of the drawing too since the way those text boxes clip over the edges is pretty ugly. The rectangle there is the clipping rectangle – doesn’t do a lot on an image like this, where it’s just the one picture, but if I’m using sprite sheets then that’s how I’ll define what chunk of the sheet I’m drawing from. Can either drag the rectangle around freehand or set its parameters manually with the text fields on the left side. That’s all tested and working.

Since this seemed like a decent stopping point, I bounced back over to the main EverEnding code base – well, sort of. I actually ended up working on common UI elements shared by both projects, stuff like a double slider and a specific number input field, which is actually the kind I used here for the rectangle parameters. Any time I find myself copying and pasting the same UI elements a lot I figure it’s time to extract them out into a utility class, and I’ve been doing a lot of numerical inputs using text fields, so it seemed like a good time. The other UI element I’ve been using a lot which is begging to be turned into its own class is the set of draggable tabs, but I haven’t settled on an elegant and flexible way to approach that yet so it’s safe from my attentions. For now.

I think I’m done with the sliders and input fields and whatnot, though, for the time being. The problem is, since I’ve been updating code that’s shared between both projects, I still need to update EverEnding to use the new slider code. Hopefully it will go quickly, since making shit go quickly is supposed to be the idea behind these utility classes in the first place. It’s a pain in the ass, even if a necessary one – all projects have growing pains like these. As I said to a friend, refactoring is tedious but has its moments, and UI programming is tedious but has its moments, but when you combine UI programming and refactoring you get a task with very few moments.

Anyway, hopefully it’ll just take a day or two to get things building again, and then realistically probably another day or two to deal with whatever bugs I’ve created. After that I go back to trying to work on these projects concurrently, programming additional elements into AnxEdit (probably starting with the stuff I missed in the frame image editor) and roughing out the first levels of the game itself.

Also I got a big-ass white board. I have manifested my destiny to become An Organized Person. It will happen.

Advertisements

DS2Ocean

Sometimes it’s embarrassing how simple our tastes really are. You know, we can write essays about why we love what we love, what works and doesn’t, about the delicate structure of ideas that play against each other in this particular fascinating way, but often as not what we really liked is that it was blue, or that it was cloudy, or that it had cats in it, that there was a cello. We have likes and dislikes that have nothing to do with quality, that are so distant from the ideals high art or guilty pleasure as to render the entire idea of good or bad art nonsensical.

It’s deeply embarrassing. We don’t like to admit it. That’s why we talk about the symbolism of the colors so much: It allows us to avoid admitting that we just like the colors.

This is not to demean the deeper structural meanings we find. This is not to say these appealing superficialities are that that’s all there is to the creation of art or are the only things we really enjoy. Structure, symbolism, deeper meaning, all that stuff is important: I’m just saying these incredibly obvious things are also important, and in a way we prefer to politely avoid talking about.

I grew up in San Francisco. I mean, that was one of several cities I lived in growing up, but now I like cities and fog and the ocean and Chinese food. I don’t know if the effect emerges directly from the cause but I like these things. I like Dark Souls 2 better because it takes place next to a lovingly rendered ocean. I like Vampire: The Masquerade – Bloodlines better because it takes place in a city. I like Silent Hill better because it’s foggy. And I just like Chinese food, period.

Inevitably, the artist starts including the things they like in their work for the same reasons that they’re drawn to works with that stuff in it. Sometimes this creates a kind of feedback loop: Game designers like a thing so they put it in their game, causing other game designers to like that thing so they put it in their games, and so on until it’s ubiquitous even in work by creators who don’t like it that much just because it’s part of what a game is, now. That may have been what happened with sexy women in fighting games, starting out as an attempt to create interesting and appealing characters and turning into a sort of rubber booby golem showdown.

That’s what happens when things get included just because they’re supposed to be there: They become empty, shoddy, pointless.

But when you put things in because you like them? Other people who like them will enjoy that, in an genuine way that has nothing to do with how clever or structurally sound your work is, and they will see a work within your work that serves only the natural appeal of its form. Several games have done well out of having dogs in them: Games that have nothing to do with dogs! People talk about the lore and weighty combat of Dark Souls, but a huge part of what makes it work is that it takes place in castles made by someone who likes castles. They aren’t rote castles, existing just to be a place to kill monsters in, but works of art in and of themselves. The Chinese Room kind of specializes in this work, taking unremarkable and mundane locations and through love and attention to detail bringing them to life, making them feel solid.

I guess this all boils down to the old chestnut about putting yourself into your art. I guess the difference is, I’m talking about the ways you put yourself into your art, through little matters of taste and aesthetic that aren’t right or wrong but are part of who you are. I guess what I’m saying, put stuff you like into your work just because you like it, and because you like it do everything you can to do it justice. Because then, all those other weirdos who just like oceans or punk music or mountains or victorian architecture or snakes or daisies? They’ll find something to love in your work, away from the complexities of high art and guilty pleasure, somewhere just for them.

EveHeader

Weird week, though I know I say that a lot. Took a first run at trying to work on AnxEdit concurrently with the game, which worked alright for the first couple of days, while I built out a general task list of beats to hit when I start building out the levels, but got weird once it became clear that the first thing I’d have to do was update the game to work with the new style of sliders I’d created for AnxEdit. I found myself in a position where I was just working on two separate UI programming tasks concurrently, which is pretty frustrating and unsatisfying. So, pragmatically, I’m probably going to work a bit more on AnxEdit until I find a nice stopping point, hop over to EverEnding to get the code base back up and running, and then work on coding AnxEdit and building EverEnding levels concurrently. I think this approach shows promise, as long as I make sure the two sets of tasks I’m working on are distinctly different kinds of work, because otherwise it feels like just working on the same thing with obnoxious and distracting breaks shoved in the middle.

So, that being said, progress has nevertheless been made. I finished up the registration point editor – though I still have some stuff on my wishlist for it – and I have created and am close to finishing up a frame image editor, used for loading images and setting their active draw areas for frames. It might, in retrospect, have been better to try to make this and the frame importer, a tool for taking an image and automatically splitting it into frames, the same tool – and, indeed, I may end up doing so. For now I’ll just settle on getting this working, which is probably another hour or two of work.

I also started in on creating a dedicated double slider class, since the double slider is something I use so extensively in EverEnding’s detail editor. This is kind of a pain, but the plus side is once it’s done the detail editor will probably get boiled down to like half as many lines of code as it currently uses, since so much of the special functionality I had to create for it is now getting backed into the slider classes.

It’s been a real busy week, what with all the work I’ve had to do to get the album finished (Listen! Buy! Tell yo friends!) so between that and the aforementioned difficulties with doubling up on similar tasks I feel like not as much progress has been made as could have been.  Nevertheless, I’m getting a feel for how this is going to work, and remain optimistic that once I get my tasks lined up a bit better this will be a good change. It will take a bit more effort to set up the right kind of work for myself, but I hope that by demanding a bit more of myself in these small but specific ways I can get a lot more done.

FromSparePartsCoverSmall

Over the last year, I wrote a piece of music each month with the intent of collating all of them into an album. Most of these I’ve put up on the blog as I went, generally as a sort of consolation prize whenever I felt too tired or uninspired to write a new article. Well, now it’s 2016, and having spent the last couple of weeks ordering these tracks, polishing them up, and mastering them, the time has come.

I actually decided that all 12 tracks together were a bit unwieldy as an album, though. 75 minutes is a long time to ask someone to sit still and listen to instrumental music, and some of the tracks didn’t really feel like they fit into the overall flow of the album. Thus, alongside the main album, I’m also releasing a free mini-album. These are, respectively, “From Spare Parts and Parts Unknown” and “Please Don’t Make Me Leave”. Of course, both are free to stream, but if you’d like to download the mini-album, for use in portable devices and whatnot, it’s free for those purposes as well.

if you enjoy either or both of these albums, please consider purchasing them and/or recommending them to your friends. I spent a lot of time trying to make these as good as I could, and I hope that there will be an audience who enjoys listening to them as much as I enjoyed making them!

EveHeader

I went to New York and back, which is why I didn’t have an update last week. I had a real nice time, but it was also super exhausting. I took the opportunity, however, to do some thinking. About how I work, about what I want to change in my daily routine, about how my current projects are going. And I came to a few realizations.

First, I think I need to both be more aggressive about scheduling work for myself and scheduling breaks. I want to have established days off of each of my projects as well as days on. For that reason, I’m going to be specifically avoiding working on commissions on weekends (days when I write Problem Machine and post the dev blog) and probably taking the day after that, Sunday or Monday, to take a break from EverEnding work. You might notice that the days kind of slide around a bit there and, yeah, that’s just kind of how my schedule seems to work out and it seems more feasible to work around that than to fix it.

I’m also going to start working on two parallel projects, with the goal of getting a bit done on both of them each day. One of these projects will be EverEnding, pretty much for the foreseeable future into perpetuity. The other I’ll refer to as my floating project and will be a bunch of different things, but for now it will be AnxEdit. That means I’ll be trying to get a bit done each day (except for break days) on AnxEdit and on the core EverEnding project. I haven’t quite gotten here yet, so I haven’t decided what part of EverEnding I’ll be working on concurrently – likely either building the levels out or doing some special effects programming. Actually, to start with I’ll probably do some production work, look at what needs to be done and build out a task list.

Since I achieved my goal of writing a music track each month last year (new album coming soon!) I’m going to be trying to build out from that this year, trying to do something a bit less ambitious in pure scope but a lot more ambitious in terms of pushing my comfort zone, and trying to create a new track with lyrics every other month. I have basically no experience with creating lyrics or with writing music to them, so this promises to be a whole new and incredible unnerving venture, given especially how uncomfortable I tend to be with my own voice. Still, that’s just another reason that’s an envelope worth pushing. I’ll probably be starting on that next month since I need to use the rest of this one to wrap up the album.

Anyway! Even though most of that stuff doesn’t strictly have to do with EverEnding, this seemed as good a place as any to talk about these plans. In regard to the specific activities of the last week, since I got back I’ve mostly been working on mastering the album (and coming up with a title for it) and doing more work on AnxEdit. AnxEdit is really coming along, though I realized today that I’d made some fairly massive oversights in the realm of tools necessary for adding new frames and mapping them to their graphics data. This will require a bit of rethinking the interface for sure. But I have the offset editor component pretty much 100% working now, and the registration point editor is very close to done as well, so overall the progress is encouraging.

AnxEdit07

It’s like real ugly, I know, but it doesn’t have to look nice. It just has to work.

Sierra_Madre_celebrities

It’s interesting how much goes into a game that the player never sees. Old versions, unused content, hidden details of construction, or simply paths the player never takes. As we play the game, this stuff is invisible – sometimes we find out about it after the fact, either by reading articles or special features or by using game tools to look at the source files, but in the course of playing the game all tucked away or cut out.

To those who create the game, though, this stuff is important – in many ways, just as important as the part of the game the player actually experiences. The act of creation is transformative. Every action has an equal and opposite reaction. As we shape our art we are, in turn, shaped by our art.

Sometimes, though, these external bits of meta-game poke their way into the game in interesting ways. The Beginner’s Guide, being a game about games, stripped away the bits of level that normally hide these hidden elements in order to tell a story about the person who made that world – and another story about what it means about us when we’re desperate to see under the surface in that way. It also explores what aspects of a creation that were never meant to be consumed can mean for a creator, and how unfathomable the act of creating solely for the sensation of creating can be for those who primarily engage with art through the act of consumption.

The Walking Dead and other Telltale games harness their limitations to hide the scope of their stories. Obviously there are only so many ways the story can go, since trying to create a true branching story becomes an exponentially complex problem as choices compound choices. However, the player can’t tell what the actual limitations of the story are: As long as something seemed like it was a possibility, that’s as good as it actually being a possibility. If all paths lead to the same end, this isn’t a problem as long as they do so in a way that feels natural and non-contrived, since most people will only ever see one path on their playthrough. Of course, people still complain about every path leading to the same result, but this is a complaint they can only make with knowledge gleaned from successive playthroughs or external research on the game: The first playthrough is convincing.

An odd example, and what first brought this topic to mind, is the character Dean Domino in the Dead Money expansion for Fallout: New Vegas. Dean is, put bluntly, an egotistical asshole. For most players, it’s almost impossible to get through a playthrough without him turning on you and forcing you to kill him. This is because the primary instinct the game up until this point has drilled into you is that if there’s a skill check in conversation you take it. You always say the clever thing, the perceptive thing, the thing with a number next to it that you get experience for. However, Dean Domino does not like it if you’re too smart. It scares him, and later on he will jump at the opportunity to betray you because of that. In this case, the most poignant bit of characterization in possibly the entire game is completely hidden from the player on any single playthrough. Only with advanced external knowledge of the game or enough playthroughs to make the connection can we actually see what makes Dean tick.

There’s so much we can’t see, standing from the inside and looking at the walls. That’s fine. All the more reason to create: Without creating, how can we ever have the experience of truly knowing anything for sure?