Archive

Development

EveHeader

I’m doing a terrible job of sticking to the schedule I came up with. I keep getting sidetracked by new tasks, improvements or things I forgot to put on the schedule. This last month, I finally got around to looking up what sorts of multi-threading solutions are available in Haxe/AIR. It turns out that Adobe AIR has supported multi-threading for a while now, with an implementation that is both very straightforward and kind of frustrating. AIR’s version of multi-threading is: Load another AIR program into your running program, and pass values back and forth. Simple enough in concept, but it still has all the traditional concerns of multi-threading with sharing resources and managing access.

So, much of this past month has been taken up with trying to get my particle system, the most demanding discrete subsystem of EverEnding, running in a separate thread. It took a lot of thought and experimentation to figure out a way to restructure a system which had presumed open access to a shared memory pool and make it run remotely with operations mediated by a single point of communication. After a week or two I got it running, but… not especially well. The benefit of the new system is a bump from 45fps to 50fps, which is not as dramatic or life-changing as I’d hoped — plus, for some reason, there are spikes of 30-50ms, which make the overall effect still somewhat disjointed and unpleasant. Still, I think these problems will be fixable, though it may be tricky to figure out exactly how they’re manifesting.

Aside from that I’ve mostly been working on building out the last section of the first area, the caves. I think I’m finally starting to nail down a paradigm of tile design for this game, based around the idea of areas which are lit, areas which are dark, and areas which are somewhere in between. Lit areas are mostly on the upper right and dark areas mostly on the lower left, with various transitional tiles to make them flow smoothly from one to the next. The cave tileset is starting to come together, though certain tiles still need some work. The background could use some improvement as well.

caves00

Also, looking back through my daily devblog notes, apparently I worked on collision in February as well. Strange, it feels like much more than a ago now. Well, most of the collision improvements are in place and working, but in the process some things broke, so those will need to be re-fixed. It’s basically guaranteed that any time I work on collision code I’ll end up frustrated.

So what’s next? I’ll probably focus on developing the level architecture and tilesets until I’m completely done with the caves, then go back and focus on populating this first area with enemies and details. Along the way somewhere I’ll spend a few days fixing all the things I broke getting the new particle system implemented and see if I can fix weird glitches there, as well as maybe a bit more collision work (sigh).

EveHeader

It’s been kind of a strange month for the project. I’ve made next to no progress on the task list I’ve created for the game, but I’m still largely satisfied with the work I’ve done. That is to say, I’ve been putting a lot of time in on things that it hadn’t previously occurred to me I would need, so I can’t really cross anything off a list when I get it done, but nevertheless the tasks I’ve done needed doing.

So, what are these tasks?

  • Created a system to modify hue/saturation/brightness of animations, and implemented controls for this into existing particle systems and associated editors, as well as creating a similar system for modifying tileset colors
  • Fixed up the detail editor to make it more flexible and easy to use, including the ability to modify multiple details at once
  • Created a seeded random number generator so particle systems that use random numbers will generate consistently from one play to the next
  • Created a simple collision system for particles, which can be used to make them only spawn on top of tiles or perform special behaviors when they collide with tiles
  • Added the ability to have particle behaviors that only trigger once on spawn rather than updating continuously
  • Collision improvements and implementation of water tiles and combination platform/slope tiles
  • Fixed the way perspective is calculated on details to center the vanishing point rather than have it locked to the upper left
  • Stripped out a non-functional zoom in/out system in favor of a much simpler one that actually works
colorchange

With all these color controls I have a lot more ability to customize areas without creating all-new assets

On top of that I’ve been building levels out, which is on the list but also takes a long time to make progress on. It’s really difficult to say much about the process of building levels, because 90% of it is just spent on making sure tile boundaries line up and making tiny aesthetic tweaks. In that way it’s a lot like working on the animations after I created prototype animations: All of the concept is mostly there, I just need to elevate it to finished quality.

I’m getting close to the end of my ad-hoc list of unexpected and unscheduled problems/improvements, so I ought to be getting back to the game schedule soon. Worst case scenario is I’m a month behind of where I wanted to be: Best case scenario is that I end up making up the time I lost by leveraging some of the improvements I’ve made. We’ll see. In any case, I’m probably going to be spending the coming month or two getting early-game enemies fully animated and operational. The first couple of enemies will be the most difficult by far, I believe – after those are complete I should be able to copy and paste from them for almost everything I’ll ever need an enemy to do.

 

EveHeader

It’s been a bit of a slow month for work on the EverEnding project for reasons which are largely obvious. About 10 days of the last 30 were taken up with a big holiday trip, under which circumstances I wasn’t really able to find the time and energy to work on the project – and, what’s more, left me tired and inert enough that I didn’t get much done for a while after either. That being said, progress is starting to be made, and certain foundational parts of the game are coming together.

So, to start with: The main character animations for chapter 1 are pretty much all done. I say ‘pretty much’ because I’m confident that as time passes I will notice improvements that need to be made, possibly even new animations that need to be created. However, for the time being that all-important part of the project is complete.

Once I achieved that, I turned my attention towards various outstanding programming tasks that have been on my to-do list for some time. I finally found and fixed a very annoying bug that was causing entities to self-replicate when I saved a level I was editing, which was causing massive slowdown since the entire lighting system was getting duplicated several times over. I found and fixed another bug which was causing the background layer of levels to not match the size of the foreground layer, and also created a player profile system, which should be able to handle saving and loading all the necessary information for game progression alongside all of the player’s controller/keyboard binding information. Somewhere in the midst of all this, I built a bunch of assets for the early areas of the game – mostly pretty simple ones, which makes them excellent test cases for the kinds of improvements I’ll need to make to the details system to get levels looking the way I want them to.

01-05-2017-standing-stones

I’m noticing something strange now that I’ve finished the main character animations: Even though I frequently found the work tedious, having something straightforward, relatively brain-dead, and indisputably important to the core of the game to work on was actually incredibly useful. When I was feeling tired or dull or confused it was still totally feasible to get good work done just by focusing on creating animations. That is not to say that animating is easy or stupid work, but I’d already planned out all the animations such that easy and stupid work was mostly the only kind left to do on them to complete them. Now that I don’t have these animation tasks to rely upon, I feel a bit cast adrift on the gigantic task list that is this project.

Oh well, I’m sure I’ll hit a new rhythm soon enough. I think building out the levels may be similarly straightforward and rewarding, though the level editing tools may need a bit of improvement before I can dedicate myself fully to that work. Perhaps those improvements should be my first priority, then, after I get the core game systems I’m currently focused on up and running.

paintedworldbridge

The scariest thing about art to me now is not the tyranny of the blank page, but the certainty when I begin that I have no real idea where I’m going.

I have meticulously planned out every moment of my game, and right now the version of it in my head is good but I don’t think it’s great. This is scary to me, because this is a huge chunk of my life to spend on something if I’m not going to be satisfied with the result – I suppose that’s true for a lot of game development, but since I’m not sharing the development with a team all that weight falls squarely on my head. However, what I know about art and what I know about game development is that the magic isn’t in the plan, it’s in the moment of creation, in the poignant details and pivotal moments.

Nevertheless, as Eisenhower said, plans are worthless, but planning is indispensable. Every decision I make now is still going to be important, just not important in the ways I expect. There’s a butterfly’s lifetime worth of hurricanes between here and there, and my control over how this plays out is simultaneously absolute and negligible.

Right now, I have the blueprints for a bridge, but I don’t know where I’m going to be building it or what I’m going to be building it out of. With what I have now, I know that – depending on what comes next – it could either collapse or it could create a pathway to someplace no one has ever been before, and which of those happens depends partially on me, my expertise and artistic instinct, but just as much on chance and happenstance.

And I have to build it. This is how the job is done. This is how art is made.

We walk by falling forwards into each new step, over and over again*. To expect to be ready for the fall, to be certain of the recovery, is too much to ask, so each step we take forward is a tiny leap of faith. We keep doing it because to do otherwise is to stand in place, and any room can be purgatory if you stand there long enough, and with each moment you wait to take a step your legs will just get heavier.

So what I’m saying is that this is scary, and I think my game could be bad, but it’s also necessary, and I think my game could be great – and that I expect to always feel this way, forever, even after EverEnding, and that if I ever lose this feeling then something has gone wrong, and I will find that all of a sudden I am standing in place – and, even if the scenery looks like it’s moving, it’s just the flickering of a screen that someone forgot to turn off. Then it’s time to walk, or fall, again.

*Thanks Laurie Anderson

EveHeader

This post is a few days late, and there’s several reasons for that. I mean, first, I just forgot for a couple of days, but there’s actually a good reason too. Over the past couple of weeks I’ve been participating in the Idle Thumbs Wizard Jam, a 2-week game creation event. For the early days I was just working on my project concurrently with all of the stuff I normally work on, but near the end I was really hammering on the project. Anyway, it’s a small project but I’m quite pleased with how it turned out. You can check it out here. New versions may be forthcoming once I recover from the last few days, but in the meanwhile I need to take a break and catch up on other work.

I may actually start doing these a bit later in the month as actual policy rather than accident. Ends of months tend to be rather congested – I may start just scheduling these updates for the 5th of each month instead of the 1st.

Anyway, I still got plenty of work done before the Jam and during its early days. While I’m not as ahead of schedule as I’d hoped to be, I think I’m still comfortably within the parameters I’ve set, with 34/51 tasks done for this three-month block and 8 preemptively done for the next three-month block. At this point, all of the right-facing animations are complete, and I’m well on my way to finishing the left-facing animations, with just the hit stun, defeat, and harvest animations left to complete. Also, a few new animations were created when I noticed the motion seemed less than fluid, such as an animation for landing from a jump or completing a rising attack. I foresee no difficulties finishing the player character animations this month, though I do expect to have to spend a few days polishing up the animations and fixing minor continuity errors once I have them mostly done. Aside from that animation work, most of what needs to be done to keep on schedule is creating a couple more simple tilesets and building out some of the early levels at finished quality.

standing-harvest-loop-right

froggy

A couple of weeks ago, I wrote about how finding an audience is tied to finding a community, and generally being more open as a way to access more energy and creativity. Since then, I’ve been trying to be more active in game dev communities, posting about my work, seeing what people are talking about, et cetera. It doesn’t come naturally or easily to me, but I’ve made some progress at least.

Here’s something I learned very quickly: There are reasons I’ve shut myself off. They aren’t all good reasons, but it wasn’t an accident. When I talked about making myself a conduit to allow energy to flow rather than a dam to conserve it, I failed to consider that it’s not always necessarily fun being filled with energy. I didn’t get much sleep the first week. I’ve shut myself off a bit more since then to recover, but I have ambitions to push myself further again so I can probably anticipate more acute anxiety and sleeplessness and productivity and – all of a sudden it makes a lot of sense why so many indie devs get so much done and seem so frazzled all the time. I just opened that door a crack, I can barely imagine living directly in that stream of human idea and energy.

We all find ways to close off a bit, even if some of us are more overt about it than others. Many people who are exposed to the public stop listening because the voices are too numerous and the need too acute. Others shy away from the public completely and publish work from a distance. Some listen at certain times and then lock themselves away to work at others. It’s a negotiation that happens per person, trying to find a way to live close enough to the stream of human consciousness that they can fish in it without drowning in it.

Of course, I’m nowhere near drowning in it, it’s a two-mile hike to get to the stream to get idea water but I used to have drowning nightmares so even a light misting can freak me out and this metaphor has gotten out of hand.

Everyone is exposed, everyone is hungry, everyone wants to be heard and is struggling to listen. Just paying attention to the salivating throb of the creative economy can be difficult because it’s an open question how many of these people will have their needs met, and whether I can be helpful at all in doing so – even before considering whether my own hunger to be heard will ever be fed. There are so many people creating art and music, making games and writing stories, and all of these have value but how many of them will find an audience? How much audience is there, out there, to find?

In a world where success is defined as a financial self-sufficiency that demands thousands of sales, if more than 0.01% of people are creators and each creator has limited time to consume the work of others… when are we so saturated with creation that trying to share an audience becomes impossible?

EveHeader

I worked on two major things this month. First was the rolling animations, which are the two most complex animations in the main character’s animation set, with the possible exception of the running animations. I’ve gotten better at doing animations so the work moved faster, but these two just have an awful lot of frames and each frame is different enough from the last that there aren’t a lot of shortcuts one can take.

crouching-roll-left crouching-roll-right
You can also see that these are two of the most different animations of the left/right flip versions, so again they defy shortcutting for that reason as well. These animations, with their high rate of contact with the ground, raise an interesting issue: Right now, all of the main character animations have a cyan outline to make sure she pops against dark backgrounds – perhaps unnecessary, but it seemed like a good idea at the time. However, the outline disappears where she contacts the ground, which is usually fine because she only contacts at a relatively narrow point. However, with the roll animation she makes contact all along the ground, especially while her hair drags across it. It looks fine on flat terrain, but on slopes or coming off of a ledge it’s obvious where the outline ends. Of course the animation looks a bit off in other ways at those moments since it kind of assumes a flat ground surface, but that’s by far the most noticeable. I still haven’t decided what to do about that. Maybe I should remove the outline and create a programmatic solution, see if I can bang out some code to make her pop out the way the outline does. Or maybe that’s all unnecessary, maybe the white cloth will make her show even on backgrounds where her darker tones would otherwise fade in. Or maybe I should bump all the animations up a pixel, extend the outline underneath them, and then make it so in-game they all draw one pixel lower. Not sure yet. I guess the smartest thing would be to start experimenting with just removing the outlines and then go from there.

The other part of the game I’ve been working on is a stone tileset. You may recall me working on stone before, and though I decided that weird wet-looking tileset worked fairly well in the cave area, it looks pretty terrible outdoors amidst the grass. It took several days of experimentation to find a stone tileset that looked good outside, and it turned out that restraint was key. Most stone, it turns out, is basically the same color as itself: Adding a lot of details and cracks made it look like ruined bricks or stone blasted apart by some catastrophic event. However, creating blocks with just a bit of patterning, either something kind of rough and scaley for uncut/broken stone or something almost flat but with slight patterning for that more man-made look, really seemed to do the trick. I also took the technique I used before of creating different lighting levels and using them to sort of draw a three-dimensional looking chunk of rock out of sets of simple tiles. There’s still flaws in the result, but I am quite pleased enough with it to table it for now until the rest of the game progresses to the point where its flaws are more noticeable.

stonetiles005

For the next month I’ll probably be focusing on a) creating attack animations, b) creating transitional tiles so the stone tiles actually fit into their environment, and c) developing some of the early levels to actually use all the tiles I’ve been making and look decent. I’ll also need to start seriously considering how to go about enacting the ideals espoused in the Problem Machine blog post earlier today, but that’s going to be a long road and I’m not sure what shape it will take yet. Still, lots to look forward to!