EveHeader

I’m starting to recover a bit of energy, though the unseasonal coolness I’ve been enjoying for the past week is supposed to end tomorrow so we’ll see how that lasts. I’ve cut a few distractions out from my daily routine at least temporarily so that I can focus on getting things done, and I’m feeling better for it. Sometimes even the things we enjoy can become traps, habits we get stuck in even when they’ve ceased to be beneficial. Sometimes it helps to take a break from the many stresses of procrastination and laziness so that I can spend some time relaxing with work.

Anyway, the detail editor is starting to come together!

EveDetailEditor05

Here you can see I have a test detail selected – the red dot there shows where the detail lies in world space, or where it interacts with the 0-distance axis the player character occupies, and the line sticking out shows how it projects into the foreground. I can select and drag around both simple and complex effects, though some of my test particles have stopped rendering for reasons which I have yet to uncover – I should probably go back and work on that soon, since it will be hard to be sure how well the editor works without being able to see the real-time results.

There are two panels up top. The top one is the main control panel, which is probably sized a little bit too small but will include all of the controls for modifying each detail’s distance, color, alpha, and other parameters. It’s going to require both a basic version, for simple details like the one I have selected here, and an advanced version for particle effects and other animated details. I don’t think either of those will be too difficult for the most part, with one exception which I’ll get back to in a moment. First I’d like to talk about the panel underneath the main control panel, which has the distance filter slider: This is already up and running, and allows me to filter out selectable details based on their distance. Right now there’s only a few in the scene, but this means that if I want to just work on background elements I can just slide the red arrow down to the center point and only background elements will be visible, which obviates the need for separate foreground/background editors.

Now, the tricky part I alluded to before is the particle behavior controls. Similar to the game entities I’ve been working on for the past few weeks, particles can have a set of assigned behaviors, though particle behaviors are far more primitive. Basically, each particle behavior is just a method of mapping one value to another value – an obvious and common example is mapping the lifetime value to the alpha value, saying that each particle lasts to a maximum lifetime of 10 seconds before respawning, we can then map the value 8 in lifetime to the value 1 in alpha and the value 10 in lifetime to the value 0 in alpha, so that over the last 2 seconds of its life it fades evenly from 1 to 0 before respawning. This is the most obvious example, but a whole lot of interesting effects should be possible in this framework – almost certainly anything I’m planning on doing in this game. Anyway, since an unlimited number of these behaviors are possible, and since the complexity of each behavior is itself variable (one source parameter can be linked to multiple targets), this could be a fairly complex undertaking. Hopefully my experience with solving a similar problem in the Entity Editor will be helpful.

I’m so pleased to finally feel like I’m making progress again, even if it’s not astounding progress, and even if it’s still, perhaps, just re-creating the detail editor I had to discard to accommodate my new level detail paradigm. I’m feeling excited about the project again – even if making it something other people will want to play is still distant, the path from here to there is coming into sight again, and it’s a huge relief.

I just realized at 10:20am that I’d been meaning to have something up at 10:00am. Oops!

I’ve been, for the last little while, in a state of slightly frantic energy with no particular direction to vent it in. My brain keeps on glancing off of the specter of the work I need to do, the design and programming and understanding and tricky decisions that might or might not matter in the future, and though it knows it needs to pit its strength against them it keeps sliding off and, as we do when we lose our footing, it keeps sliding. I giggle at nonsensical jokes and I wade stridently into arguments armed with feverish reason and articulation and it’s partially because I always laugh at dumb jokes and partially because I care about what I’m arguing but not entirely, it’s mostly because I’m scared and can’t look directly at the work-beast that breathes heavy in the corner of my mind.

I’m not sure that fear is my enemy here. It keeps me from working, but it leaves my subconscious free to tiptoe the parameter, to try to thought experiment its way through. I can’t ever tell if I’m being lazy or being patient. I can’t ever tell if I’m impassioned or histrionic.

The conception of my work as something that can be completed, rather than simply lived through, is starting to fade again. This happens sometimes. I feel so distant, still, from actually making anything, and I feel like I’ve caught myself in a maze of tasks that ultimately leads nowhere. I’m increasingly unsure if the beast in the corner is even the right one – maybe I’m in the wrong cave.

It’s not a matter of faith. I can’t just pick a direction and set out it in indefinitely, because at the point where all I see is sand and water is running low I really have to reevaluate my decisions.

So there are two fears that live in parallel in my mind. First, the fear that the work I am doing is complex and difficult and hard to understand, and second, the fear that that work might be empty, wasted, pointless. There’s no way to assuage these fears. The first I know to be true, and the second I cannot prove to be false. The only reason I persevere in the face of these fears is that I haven’t thought of a better plan, and because I know that standing still and becoming a statue is far worse than striving forwards and becoming lost – for me it is, anyway. Sometime soon, I’ll start putting the pieces together. I’ll start to understand the scope of what it is I fear, and in that understanding slowly circumscribe it, slowly incorporate it, slowly overcome it and embrace it.

Both of these fears are real, but neither of them is forever. I will outlast them.

EveHeader

Not a great week. I thought my energy would pick up as the weather cooled off a bit, but if anything it’s been the opposite, where I’ve been feeling weirder and more out of sorts as the temperature drops from melting to merely scorching. I’ve been feeling so consistently out of sorts in such a myriad of little different ways that I worry I might be fighting off a cold or something, but there’s not really a lot I can do about it either way. It’s made getting work done difficult, as I alternate daily from extremely sleepy to extremely uncomfortable and irritable.

Now: Though no big progress has been made, I’m starting to get back into a position where such progress is at least feasible again. I’ve starting sketching out the outline of the particle/detail editor, mostly writing the interface drawing code using functionality that isn’t actually there yet but should be quite easy to build in. The idea of what it’s going to be like when it’s done is starting to manifest, but there’s a lot to be done on that path: Hopefully, though, I’ll have something concrete to show for it by this time next week. Or, ideally, a day earlier, since these were supposed to go up on Saturdays.

Sometimes I go for a long time without getting much done, and I have to remind myself that it’s not always like this – that the me who finds it difficult to work now or, indeed, to countenance the thought of ever working again, that doesn’t define who I am. Of course, the flip side of that is true as well, and my workaholic self, dedicated to manifesting ideas, is a similarly narrow vertical slice of my personality – though it’s less necessary to forcibly remind myself of that, because it inevitably becomes obvious anyway.

All of that might sound negative, but it’s not, it’s just pragmatic. I’ve heard these phases often analogized with the weather (and, indeed, the two frequently correspond): You can’t stop the rain, just wait for it to pass or, perhaps, do your best to slog your way to work through it, knowing full well you’ll be late and only able to get a cursory amount of progress in before the office closes. It’s important to make that trek sometiems, though. If you stop going just because it’s cold and wet, sad and hard and overwhelming, if you wait for too long, you might forget how to get back.

Even if for no other reason, I put in at least a bit every day, just so I can find my way back.

Paperclip-01

It becomes necessary, after a certain point, to ask yourself: “What, exactly, am I getting from this?”

It isn’t necessary to have a good answer, but it’s necessary to ask. Sometimes it’s terrifyingly easy to spend an hour, a day, a week, playing a game, long after it’s become familiar, every experience expected, each encounter slightly trite. Is it just habit? Is it just the devil you know? Or are you still extracting something from the experience, gnawing away at a bone that may still have hints of flavor or may still be attached.

If you do something enough times it becomes a habit, by repetition, by definition. These habits grow wearing, scrape ruts and grooves we find it difficult to escape. It’s not a disaster, but it’s necessary to stop, and see, and try to remember: Is this actually what I want to be doing?

What did I want to achieve by doing this?

It’s not easy, when it comes to arts and entertainment. Why do we want games to make us cry, to shoot our old RGB Yellers and cane our citizens? Why, do we keep coming back to games that don’t do even that, that just provide arenas for taking lives and property, for practiced and efficacious inhumanity?

I keep wondering. Why do I keep coming back to the same games over and over, when there’s a world of amazing games I haven’t played yet – not to mention the many wonderful books and films and other media I have yet to experience! Or I could get one of those social life things that people keep talking about. Or maybe it would be possible to drop it all, redouble my efforts, pour myself even deeper into my own work, without reservation or fear.

I keep on thinking of all of these possibilities. And then I don’t do them. I take decisive action, where the decision in this case is to hit the snooze button. I can’t tell, day to day, whether I’m bound to the shadow of my life or it’s bound to me. It’s hard to tell, day to day, whether I live this life because I chose it or because I grew it around me like a shell or a robe or a habit.

I don’t know. I’ve given up on the theory that there’s just one thing that keeps pulling me back. The familiarity has its own pull, yes, and the habit, and the desire to become better, these all keep me riveted to the game, but I find myself attached in subtler ways, threads that keep pulling me back, facets that keep me glued. Sometimes it’s a friendly exchange with a player I see often, sometimes it’s mastering a trick I couldn’t do before, sometimes it’s finding a new technique to experiment with – and, just because the circumstances never quite line up to disillusion me with these all at the same time, I remain stuck, rapt, in place.

And I wonder, what is it I am actually getting from this?

And I don’t have a good answer – but I’m willing to forgive myself, for now at least. Who can say what time is wasted? As long as I can ask the question, and face it head-on, I’ll still have one hand on the wheel, ready to stop it spinning the moment I need to escape.

EveHeader

First off, apologies on the lateness of this update. The reasons for the delay stem from equal parts of being busy and being lazy, but mostly just from being annoyed at having so little to report. I’m not sure what to say. I’m doing the same stuff I did last week, and it’s not done yet. Another week, another update where I don’t know what to talk about because it’s been so long since a dramatic or interesting change in the project. Well, maybe I can talk a bit about what I’m doing and why.

I’ve learned something about programming: It’s very easy to become infatuated with one’s own cleverness. It’s very easy to clever oneself right into being stupid. It’s so tempting to, when you think of a clever solution to a problem, want to show it off, to use it whenever possible. The thing is, with programming it’s generally considered to be a bad idea to have code that does the exact same thing in more than one place, and wanting to show off your cleverness over and over works against that.

Exposed circuitry is very impressive, yes, but if the end user has to do a bunch of soldering just to change a setting you have failed at designing a usable machine.

This is not a new insight, and variants on this trap are mentioned frequently in most of the programming texts I’ve studied, but it’s been a stumbling point for me anyway. Why?

The big difference between what I thought then and what I know now, I think, is that back then I thought that code was something we write to tell a computer what to do, that it was a language for computers. Towards this end, I would try to make code that would operate quickly and efficiently and unambiguously — in other words, prematurely optimized code, one of the cardinal programming sins. The underlying logic behind why premature optimization is vilified implies the same conclusion I am reaching: programming languages are supposed to be readable by humans first, machines a distant second. The syntactic strictness of programming is necessitated by the need to translate unambiguously into machine code, but there are many forms that that unambiguity could take (most obviously machine code itself, or, at just one remove, assembler code). The specific form that syntax takes, though, is informed primarily so that us dumb apes can understand what it is we’re telling machines to do. It’s a pidgin, a halfway tongue.

It’s easy to believe we’re writing for the machines because the machines complain much more readily when we make a mistake. They are strenuous fact-checkers, they are a hallway of squeaky wheels crying out for grease. Of course, what the machine sees as an error and what a person sees as an error are often very different things. The machine doesn’t understand intent or subtext, so it will gladly go off and do whatever you tell it to do as long as you do so unambiguously. A human, conversely, is probably far more willing to overlook the occasional missing punctuation mark so long as the overall intent of your words is clear.

I feel like my improvement as a programmer is tied closely but subtly to my improvement as a writer. In both pursuits, clarity of thought and communication is of paramount importance — and one who fails to achieve them in their output will, inevitably, be caught out by the consequences.

HandsAtAPrice

I haven’t been writing.

At first it was just about writing this big piece I’ve been working on, and even then it was an issue. The experience of writing a 5000 word analytic piece is extraordinarily different from the experience of writing a 500-1000 word reflective piece. For one thing, it gets harder and harder to stuff down perfectionist tendencies that drag completion out the bigger something gets, and it gets harder to silence the anxiety that comes along with those for long enough to get good work in.

Something that’s hard to remember sometimes is that creativity isn’t just about the end product. We’re used to being consumers that only see the final product, used to believing that it’s all about what you show and sell, but it’s not – it’s about the act of creating, and how that fits into, emerges from, and expresses itself through the life you live every day. Changing what you produce doesn’t just change the end product, it changes who you are and how you live your life. And, for me, this attempted change, from musings and reflections into longer form analysis, with no lead-in or practice, was basically leading me through a brick wall. Well, that’s overdramatic, but leading me barefoot through a dark room full of lego pieces anyway.

I need to change the way I approach this.

I have no intention of abandoning the piece I’ve been working on – I’ve worked hard on it, and it’s super important to me. But I can’t keep on going assuming that’s going to be the next thing I put up, because I don’t know when it’s going to be done. Right now, even if it was my full-time job I’m not sure when I’d finish it. It’s something I’m exploring as I write – and, because I want to be complete, because I want to map out a territory rather than, as has been my wont, merely point to its soft torn-fabric shape on the horizon and yell that I see land, I can’t set deadlines. Who knows how big this island will turn out to be?

I’m going to resume uploading once a week. This recent set of ambitions hasn’t panned out well, but there’s no harm in a failed experiment here and there as long as one is willing to cede defeat. Only generals who are willing to lose battles win wars.

It’s training. It’s being a train, loading enough coal in to push myself forwards but not building too much pressure and exploding. It’s piecing a life together, piecing a self together, even after little bits of habit and memory and love drop off, Frankensteining myself piecemeal into my own ideal image. It’s trying to figure out how to walk when every day I seem to wake up with a different number of legs, four in the morning, two in the afternoon, three at night.

There’s no point in complaining about it. It’s just being human.

EveHeader

I think I’m going to start posting writing every Wednesday. It’s taking forever to finish the piece I’ve been working on, and to be honest I’ve slowed down a lot on it – even if I was working on it for four hours a day, though, I’m not sure when it would be done.

Anyway, that’s not what this post is about. This is a devblog.

Once more it’s been a week of tiny incremental progress in a whole lot of different areas, making it really difficult to actually describe what I’ve been doing. I’ve been polishing the entity prototype file IO interactions, I’ve been hiding some of the grisly and obtuse sections of code in their own classes so that I never have to deal directly with them again, I’ve been making it so it’s always easy to tell whether an object that can be saved has been saved.

When I’m doing a drawing, the hardest part is the beginning, when I’m finding the basic forms, figuring out the pose, trying to balance the composition, making sure the proportions are on, etcetera. After that, it’s mostly smooth sailing, I can go into a kind of trance and just start filling in the details, rendering out all of the little cracks and textures that I already know are there. That’s what this part of programming this project feels like. After an hour or two of programming like this, I’d be hard pressed to tell you exactly what I was just working on, but bit by bit it edges itself towards being more fully realized and, indeed, more beautiful.

And I’ve come to realize that that matters to me. It’s important to me that the code itself be, not just functional, but good, something I can be proud of. Making it good is deeply satisfying, the feeling of plastic toy parts snapping into place exactly as the instructions told you they would, the feeling of the destiny you sketched out with the rough outline of the project made manifest. Maybe it will also pay off, later on – maybe it will make future revisions faster and easier, maybe it will make a future porting job simpler, maybe it will make a bug easier to catch. It almost doesn’t matter. Even if this isn’t making the game better, it’s making me better – so it is worth the trouble.

 

Follow

Get every new post delivered to your Inbox.

Join 3,972 other followers