EveHeader

Well I just spent a week getting something I had working before working again. I’m sure this is a common programmer experience but still: Goddammit.

The good news is, I guess, that the code is more elegant and straightforward, rescalable and debuggable. In fact just in the process of testing my changes to make sure they took I found a couple of little bugs I’d missed before. So that’s good! It’s all good, really: Sometimes you just gotta go back and fix some shit, even if it’s tedious.

Anyway. Now that that’s taken care of, finally, I can start doing some level building and I can go back to working on AnxEdit. This is going to be the first real test of my idea of working on parallel projects, and we’ll see how it goes. I’ve been working on being more consistently productive (a white board is involved) and I’m feeling the simultaneous stress and reward of doing so.

Something I’d like to look into more is getting the game starting faster. Right now it takes about 30 seconds to load up on start, which is a lot considering how bare bones it is. I think the main reason for that is that I’m currently loading up separate images for each frame of animation: Even though the amount of data being loaded isn’t massive – less than 30 megs, in fact – I think the fact it’s all individual files is incurring a lot of overhead. I’ll be testing to see what takes up the most resources in terms of load time, but it would really speed up my testing loop if I could get the game starting faster.

It’s a happy coincidence, then, that one of the things that AnxEdit is going to handle is recompiling animations from separate frames into sprite sheets! However, somewhat less happily, as I just realize, I haven’t been planning on any tools for sharing one sprite sheet among multiple animation files. I think this is something I can just take not of when it comes time to create the actual image recompiling tool for AnxEdit, and allow for group recompilation of animations to and from sprite sheets.

Over the next week, then, it’s back to AnxEdit and into level creation. I’d like to build out the terrain for the first area and create a list of image assets for placement in the foreground and background. And, realistically, I’m probably going to end up doing lots of little programming tasks on the main game as well, as I discover little bugs in need of fixing and maybe spend a bit of time figuring out the aforementioned startup woes. Sounds fun, anyway. At least it’s not getting something I programmed a year ago running again.

More than once I get an idea and start writing a post only to realize after one or two hundred words that I don’t really believe in what I’m writing. It’s a concept that sounds logical, and I can wrap it in nice analogies and metaphors, but it just doesn’t match my beliefs or my experience. Tonight I started thinking about the importance of having a good idea to orient oneself towards when doing creative work, wrote a hundred words on it, and only then realized that the idea isn’t important for the creativity, but as a sort of talisman against the demons of doubt. The topic finds itself when the words are put on paper: Not mysticism, just creativity.

How nice that I could just delete it. Those words I didn’t believe remain unsaid. But that’s the advantage of writing, isn’t it? What if I was speaking out loud? How long would it take me to realize I didn’t believe what I just said if everyone had been listening? What if it was a heated argument?

Would I ever admit I was wrong?

I like to think I would, but it would be hard in a way that just deleting a post that doesn’t work isn’t. Hard to recognize the untruth, hard to admit it.

How many people live in a nest of calcified semi-truth, unable to change positions at all amidst the wreckage of their diatribes?

Many people even regard this as a desirable trait. We elect people for failing to admit they misspoke! Being able to change one’s mind in the face of new evidence is paraded by ideological opponents as evidence of weakness – on examination an abstract sort of weakness with no corresponding form of strength.

We talk about burning bridges, about severing the connections we have between ourselves and others by saying hurtful or destructive things, but we don’t talk so much about the barriers we create within ourselves by saying them, blocking us off from being any other person than the one we have demonstrated ourselves to be through our language. Everyone knows that loose lips sink ships, few admit that they can also build them, can also carry us far from home, committed to a journey to nowhere in particular for no good reason.

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.

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.

Follow

Get every new post delivered to your Inbox.

Join 8,106 other followers