Archive

Development

Another weird month! They’re all weird months, now. I suppose that makes them normal, in a way. In an actual for real way, though, they remain weird.

Last month I mentioned that I was going to be working less on the game and more on building a portfolio – and so I am, but it turns out these goals aren’t quite as much in conflict as I was thinking they would be last month. EverEnding still requires a ton of design work, concept work for enemies and areas that have yet to be added to the game. Now, if I was solely focused on the game I’d probably just design all of these as I built the actual assets for the game, and I’ll probably still be doing that a fair bit, but this will allow me to iron out some of the trickier areas in my head while also making art that will be useful both for promoting myself and the game.

So let’s start with the EverEnding stuff and then I’ll move on to some of the other stuff I’ve been working on. The big thing I’ve been trying to do is develop a concept painting of one of the late game areas, but I’ve hit a snag – or maybe a lot of snags. I’m not used to environmental art so I’m having to figure out a lot of things as I go along, and I’m not really sure what the scope or precision of one of these paintings should be. As things stand, I’ve started a HUGE painting which is taking me a long time to finish, and which I’m unsure of the quality of since I’m having to learn so much as I go. The good news is that if I can execute I think this could be really something, and perhaps even be a cover painting or other very front-facing promotional material. It’s a bit discouraging having to spend this much time on something, but I hope to have this painting done for the next monthly update.

In terms of stuff that’s actually finished, I did a concept drawing of one of the early game enemies, the Feral:

I’ve started in on the sprite work as well, but haven’t gotten very far yet (this is something else that will probably be ready for next month’s update). I was going for something a bit in between a rat and a chimpanzee with some human-like aspects, and I think I hit that mark pretty well.

I came up with another enemy design for the game, but it turned out to be rather boring so I’m not going to bother to include it – it’s just a gray silhouette of a man, which isn’t interesting to look at but drawing out the design helped me figure out some specifics of pose and outline which will probably make the character a lot more interesting when i add it to the game. Additionally, there’s a character design for an important character in the second chapter, but I think that design as well is a couple of revisions away from being ready to show. I’ve also finished some minor sprite work for the project, making all of the mask enemies in the first two parts of chapter 1 pretty much animation-complete.

Aside from EverEnding stuff I’m working on learning Unity and building a prototype in there. I won’t go too much into that until I have something I have confidence in, but I came up with this ‘character’ design today for use in the project:

So I guess if the prototype turns out well I’ll have to actually model that, which will be an interesting challenge as well.

I’ve also been practicing 3d sculpting a bit, and… I don’t know, miscellaneous other things. My main goal is to try to take this wide reach of things that I’m trying to do all at once and try to bake some discipline into my approach, because I’m getting a bit overwhelmed just trying now to remember all the things I’m working on. I’ll probably try to work out a somewhat more regimented schedule than I’m generally used to tonight so that I can more effectively avoid driving myself insane over the coming weeks.

 

Advertisements

This month was a completely different kind of weird month than the last weird month – but weird nonetheless.

I ended up taking around two weeks of vacation, between a planned family visit, a memorial service, and associated travel times. When I got back the entire city was blanketed in toxic smoke particles, so I had to lock myself indoors – even more so than I do habitually, and with less ventilation. And, between these trips and certain extremely stressful interpersonal conflicts, I’ve been thinking about things – about where I’m going with my life, how I want to get there, and what that will look like.

First, I should probably address the lack of posts on the blog. I could have probably kept things going, but I’ve been feeling like it’s harder and harder to come up with topics that I feel are worth writing about, to the extent that I don’t feel some of my posts are to the level of insight or quality I want them to be. If all else were equal I’d just shake it off as a bad streak, but I think it’s also just been hard to focus with all of this strife and uncertainty in my life, so I’ve put things on hiatus for a bit. I wanted to make some sort of official announcement about that, but I kept putting it off until now, when I needed to write a devblog post anyway. I intend to resume posting on the previous schedule starting in November.

Regarding my plans for the future: The game is still being made, but I also feel like I need to put a bit more into existing as a professional in the here and now rather than just in a nebulous future. Towards this end, I’ve decided to start seeking freelance work –  and, tangentially, if you would like to hire me to do any of the sorts of work you have seen/read/heard here at Problem Machine, please feel free to email me with inquiries at problem.machine@gmail.com. However, as soon as I began looking for contract work, I realized that I feel a crushing lack of confidence in what I have to show as portfolio work right now. I don’t feel like what I have done shows in any way what I am truly capable of doing – and, since I happen to have come into a bit of money recently, enough to relieve my most immediate financial pressures, for a while I will be shifting my focus from just surviving while I make my game to making my game, learning and practicing, and building my portfolio. I have a list of what I want to create over the next few months, a list I don’t really care to get into the specifics of at the moment, but which involves a number of art, programming, music, and game development tasks. Once this list is complete, I expect to have a body of work that I can be really proud of, something which, even if it isn’t outstanding in every respect, can at least be regarded as roundly workmanlike and occasionally exceptional.

Now I’m 500 words in and I haven’t really talked about the game much at all. Despite everything, I have gotten some work in on the project – mostly, at this point, developing the attack animations for the sub-types of mask enemy.

And when I say mostly, I mean entirely, since I really haven’t had more than a week or two free to actually work this month. As I’m working on building my portfolio I’ll probably have a bit less time to work on the game, but will continue to plug doggedly away at it, if for no other reason than my skull starts feeling too small for my brain if I stop for any significant length of time. It should be fairly easy to finish developing these enemies animation-wise, and then I can revisit the behavior code to fix the remaining issues with their in-game behavior, which shouldn’t be too hard. Once these guys are done, there’s only a couple more enemies to develop for the opening sections of the game, one of which is pretty simple, and I can probably refocus my attention on building up the aesthetic of the early stages. In the meanwhile, future devblog updates will probably contain samples of the work I do in building up my portfolio, which hopefully will be of interest to those of you who have been interested in the game in the first place.

It’s been a bit of a weird month. I haven’t worked deeply on much, but made a lot of slight progress on different things, and have also made some substantial revisions to the game design.

Well, first things first, I made this piece of background art:

I like how this one turned out, but I also need to make an alternate version of it for a special effect I have planned and that one is proving to be a bit difficult. A lot of these background images are almost technical problems, where I need to figure out a way to depict the idea I have in my head without getting bogged down for hours and hours, and also to depict an area that makes some sense relative to the actual navigable portion of terrain the game takes place in. This background already has taken far more time than any of the others, and the potential for an even more detailed and time-consuming version has me a bit concerned, so I’m trying to figure out a clever way to approach it..

With these concerns in mind, I decided to drop the background work for a bit and work on some animations. I began creating animations for one of the other early-game enemies, the Crawler:

This is one of very few enemies in the game what does damage on contact rather than having to do a particular attack, and is more or less completely unaggressive and minds its own business – an obstacle as much as an enemy, really. The animations aren’t quite complete yet, with the turn animation in particular being a bit of a troublesome obstacle, but it’s coming along. Once this and the mask enemy are complete, there’s only one more enemy type planned for the first couple areas of the game, so I’ll have pretty much everything I need in place to finish building out the early areas. I also spent some time building out some of the animations I’ll need for the other variations on the mask enemy, such as the stone throwing and spear throwing types, but nothing finished as of yet.

There were some other minor side-lines – a system for making it possible to modify a value from multiple locations without overwriting each other’s modifications, building a special ‘alternate reality’ effect for the second area, roughing out some of the level designs… near the end of the month, though, I realized, or perhaps merely acknowledged, a number of substantial design flaws that were threatening to undermine the game. These had to do with the upgrades I had planned, when you were likely to find them in the game, and how useful and interesting they would be. The biggest problem that emerged was that I had come up with the idea of this attack using the sling and, when I thought about how it would feel in action, I realized it was completely unsatisfactory. Essentially I was planning this whole ability which didn’t really have any role in what the player was doing – it would be the only ranged attack available, sure, but in a game where ranged attacks weren’t really necessary to succeed, and it would totally clutter up the control system.

I spent a few days thinking about this, and eventually came up with a whole new system, with a set of 4 elemental attacks and alternate forms of each attack, along with a system of special attack ‘charges’ that get restored whenever the player gets hit. I think this is a pretty good idea! But it also presents a lot of issues with, again, when the player finds upgrades and what role those upgrades play in the overall flow of the game. I’m still not 100% there with this design, but the missing pieces will probably be small things that I can fit into place as I go rather than massive gaping holes that I need to invent whole new game systems to fill.

Since then, I’ve just been reworking the way attacks are programmed to make room for this system. The new attack system is far more flexible than before, though there are probably still some ways I could improve it that I may have to consider.

This month will probably have more work on creating enemy animations, a little bit more design work figuring out what the flow of upgrades and specific properties of special attacks will be (along with whether I want to have, say, special objects that the player can interact with using said special attacks), and perhaps laying the groundwork for creating the special attacks themselves – though they are mostly a low priority for a moment, since most of them are planned to be found later in the game than the first chapter, which is where I am currently focusing my development effort. If I don’t feel like that stuff then creating assets and level details for the first couple areas, finishing the mentioned background image, or building improving tilesets are also strong possibilities for productive work to do next.

 

I’ve been self-employed for a while now, which is a way of saying that I don’t have a job but I still scrape by and I hold out hope that one day my hobbies will make me money. It’s taken a lot of practice – not only practicing the skills and hobbies that will, as I mentioned, hopefully one day bear fruit of one sort or another, but also practicing the art of scheduling those skills and hobbies.

When I first tried to make it as an independent developer, I figured I would work 8 hours a day. That’s what you do for a job, right? I managed approximately one day on that schedule before I imploded, and got extremely depressed at my inability to manage the schedule I had created for myself. It was a bad scene, and for about a year I got basically nothing done. I knew that, at my best, 8 hours is nothing – and sure, that’s fine for one day, but two? Three? A week? A month? How many good days can I have in a row? What do I do when I have a bad one, and start falling behind where I want to be?

A key difference between self-employment and your average job is for a job you mostly just have to show up and do what’s expected of you. When you have your own goals, your own standards, there’s no end to what you can expect of yourself, and it becomes hard to tell what counts as work and what doesn’t. 8 hours at a desk doing a job isn’t the same thing as 8 hours of work: There’s a lot of job-time that isn’t exactly work, that’s time spent organizing the mind and figuring out what task to do next and, frankly, just fucking off, waiting for the moment where one feels up to the next task. Perhaps not everyone works that way, but I mostly did and in so doing had no problem keeping up with the tasks assigned to me or keeping pace with my peers, so I assume it’s basically the same for most people – or, at least, most people working on creative or technical tasks which require focus and concentration.

Trying to schedule this kind of work is kind of like panning for gold – you can control how much time you spend doing the job, but not how much of that effort generates results. Putting in more effort can have counterproductive effects, as your vision gets bleary and you start to miss things, or as you get frustrated with a run of bad luck and get impatient.

Most of all I’ve had to learn to take things slow and to be patient with myself. I’ve had to accept that most days I can only make an hour or two of real work, most days progress will be slow and painful, and that I have to accept that things will take a while. An hour or two a day is good, as long as it’s consistent, as long as it’s real work. However, I also need to leave that a bit open-ended, to enable myself to work more when I’m enthusiastic and able – or to forgive myself for working less, when I just can’t do it.

It’s difficult. It requires listening to yourself and being honest about what you can do and how much and when. It requires being willing to demand things of yourself and also being willing to forgive yourself when you fail to live up to those expectations.

At least, that’s the way I’ve learned to do it. I’m sure there are better ways, and I’m sure there are people who do it better. I constantly fear I’m not doing enough, I constantly worry I’m doing too much, I constantly feel I should be expanding my horizons, I constantly feel I’m spreading myself too thin. I don’t know a better way, though, not yet. Bit by bit, I explore the boundaries of what I’m capable of, and I try to push them out just a little more – and if, perhaps, my work won’t be done for another five years, ten years… then that’s upsetting, but far better than the alternative, just out of sight behind me, that my work might never be done at all.

It’s been a rough month for the project. I’ve been feeling the least motivation to work seriously on it that I have in a long time, and there’s probably a number of reasons for this, ranging from stressing out about volatile political conditions to worrying about money to being distracted by very good video games. However, I think the biggest thing undermining my motivation is lack of confidence in the technical side of the project, and I’m still figuring out what to do about that.

See, I’m building this project in Adobe AIR, which is essentially the same thing as Flash but repackaged for local installation instead of streaming. There’s a lot good to be said about AIR, and a number of good games have been made in it, but over time it’s felt like I’m struggling more and more against it, being limited by its weaknesses while not taking advantage of its strengths. I’m starting to question (again) whether I should be working in this environment at all. The past month has been a struggle to get the framerate up over 60fps. Originally I had believed that once I got my multi-threaded solution working it would just happen. Then I thought that once I got my multi-threaded solution optimized it would happen. Then I thought that once I went through and optimized everything else it would happen.

Now I’m thinking it might just not happen – at least, not with the amount of individual animated details I want to have in each level, and/or not with the lighting system blending in on top. There may be another way to handle the lighting issue, so I’ll look into that. I also can probably improve performance somewhat by more carefully culling draw operations that would take place outside of the screen space. I can try those things, but it’s time to start carefully considering what I do if they don’t work. I’m slightly tempted to try to port the engine into some new architecture/environment, though I probably won’t. I may experiment with getting it running in OpenFL again, since that gives me a lot more opportunities for optimization, but I probably won’t remake the entire thing running in C and SDL…

Probably.

So, what do I have to show for this last month? (A bit more than a month, actually, since this devblog is a week late). I did all of the animations left to get the basic mask enemy working (though the enemy itself still needs some work since the behavior doesn’t work quite right), fixed a number of bugs, finished getting the multi-threaded particle system running and fixed performance problems therein, and made some performance improvements. It’s not a very productive month, but they can’t all be I guess.

But what’s next? What’s my plan to get out of this funk?

Most immediately, I’m going to go in and see if some judicious culling of draw operations can improve the framerate. Then I’m going to see if I can figure out how to do some decent looking water. Then I start building out the early levels, adding details, fixing up the mask entity so it feels good, and perhaps starting work on getting another enemy working.

There’s still so much to do, and I don’t feel like I have any momentum. But who ever starts with momentum? It’s something you pick up along the way.

In a bit of a weird spot right now. I’ve been working on doing the animations for the first and likely most complex non-boss enemy of the game, and I’m starting to feel a bit depressed about it. Working on a bunch of very simple very similar pictures for a few weeks tends to get old, even if you feel proud of the result. I ran into this same issue working on the main character animations, and now as with then I’m going to have to figure out more kinds of work to mix in because this is starting to undermine my motivation to work on the project. I need to remember never to leave myself on the same animation task for more than a week or so, since it tends to do terrible things to my morale after a little while.

Because these guys aren’t quite symmetrical, but I didn’t want to create left and right facing versions, some interesting properties emerged. The most noticeable of these is where they actually momentarily drop their knife and then catch it in their other hand in the running turn animation, which nicely adds to the frantic and panicked feel of the animation and swaps hands so that when they run the other direction it looks natural. The strap holding up their clothing also quietly changes shoulder, and the light shifts to the other side of them, during the turn. I think these weird fudgings of reality will largely be invisible in action, but it was an interesting problem to figure out as I went, since I hadn’t really considered it before.

I had originally planned to make several different shapes of mask for these guys, but I think that’s something I’m unlikely to do now. To create each mask I’d have to do a bunch of drawings of the mask facing in different directions for the turn, add code to make it draw in front of or behind the head based on where they are in the current animation, and make sure the movement perfectly syncs up. That’s possible, but seems like a lot of work for something that might not look very good. Alternately I could just make a bunch of different animations for different masks, which, again, I don’t think will be worth the effort. That said, there are alternate versions of this enemy with different capabilities, so when I make them I can make their masks look different, which will be more communicative and less labor intensive than what I was planning on doing.

That’s mostly it for the last month, though I also did some miscellaneous work fixing bugs in path-finding, improving the cave tileset and building out the caves. The particle system is basically functional but is still not really an improvement on what I had before I started in any way, remaining extremely buggy when run in multi-threaded mode while still not quite performing as well as I’d hoped – for reasons which, as yet, remain mysterious.

I think for the next week or so I should focus on getting all of the editors working  so that I can spend some time detailing the levels, adding foreground and background elements, generally making them feel finished – or as finished as they’re going to get until I finish making enemies for them.

I like these animations, but they’re not much to show for the better part of a month or work. I don’t know what to think about that: It doesn’t feel like I’ve been slacking. Maybe these guys were just difficult to animate.

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).