Problem Machine

[DevLog] EverEnding

Recommended Posts

Hi.

 

I've been working on a game called EverEnding for like five years now, give or take. Most of this time has been taken by developing the base code for the game alongside the editors necessary for developing its content -- the room editor (tile data), map editor (arrangements of rooms), entity editor (all interactive data in a room), and detail editor (all non-interactive data in a room). This may have been a bit of an ass-backwards way to work -- I am still a while away from having a vertical slice -- but I did things the best way I could figure by myself.

 

I've realized that's a problem though. Doing things by myself is an extremely inefficient way of doing things. And I'm not talking about getting other people to work on the game, which I couldn't afford to hire for and wouldn't feel comfortable asking people to volunteer for, but being willing to open up my process in a way that lets me give and receive advice and generally participate in a development community outside of my own brain.

 

But I digress.

 

Let's talk about the game. EverEnding is a story-focused 2d platformer, somewhat in the vein of Cave Story. I don't want to give everything away, since a big part of the game will be discovering what's going on as you go, but it takes place in a surreal post-apocalyptic setting. The player controls some sort of angelic character named Eve (the original title of the game, which I changed for reasons both numerous and obvious), tasked with collecting all of the stray souls left behind after the end of the world. Many of these are just lost, but as the game progresses those who remain become increasingly warped and malignant.

 

The project is being developed in Haxe and compiled to AIR. This is subject to change, as one of the reasons I chose to switch to Haxe from AS3 was the flexibility in compile target, but for now AIR is suitable to my needs and from my brief experimentation with OpenFL (an open-source project that mimics the behavior of Flash's built-in classes) I would have to completely rewrite the rendering code to match or improve upon the current AIR performance. I'm targeting a 960x540 resolution with the intent that it will look nicely crunchily pixely at standard 1920x1080 resolution, and though I have no particular restrictions in the art pipeline I am attempting to minimalize the color palette within each asset. The hope is to capture the restrained abstraction of pixel art without hewing too closely to any particular era of retro gaming. As will become obvious, I'm not shying away from using certain non-retro effects, such as transparencies and blending layers, but want to maintain the tooth and style of the pixel while I do so.

 

This is Eve, and one of the few pieces of concept art I've made and which I made four years ago:

post-26188-0-46939500-1475401595_thumb.jpg

 

And here's a little look at what the project looks like right now:

adl-2016-08-31-23-24-23-25.gif

 

Here's a little bit of music that is probably going to be in the game:

Falling Angel

 

The current state of the project is that most of the basic programming is done and I'm working on getting some good art assets made for the game: Final character animations, final tile sets, and soon extra details and particle effects. Once this stuff gets a bit further along I'll be making the enemy entities, which all the groundwork is laid for (including pathfinding, a notably tricky challenge) but which still need a lot of work to be finalized. Once the character animations, tilesets, details, and enemies are done, I'll have everything I need to construct the first chapter of the game -- well, everything except for some special effects programming and the first boss, which I expect to be a task beyond the scope of the enemy entities, who will hopefully be old-hat by then. I'd say realistically that's probably a goal I can aim to achieve by the end of next year, if everything goes very smoothly.

 

I've been posting regular progress DevBlogs on my blog for the last four years or so, and am now going to start mirror-posting them in this thread as well. Thanks for taking the time to check my project out!

 

Share this post


Link to post
Share on other sites

The crouch and crouch-turn animation is simply exquisite. I don't have any word that doesn't sound pretentious for it, haha. The movement seems like it's a bit "floaty" right now but I think you've absolutely nailed the crouching bit.

Loving the concept art, too. Is the weapon meant to be based on a khopesh or more of a sickle?

Share this post


Link to post
Share on other sites

I want the movement to feel a BIT floaty/ethereal, so I'm fine with that. The weapon is a sickle -- the overall design is kind of a take on the grim reaper, which is a super trite design archetype but I feel like I've got a fairly fresh approach to it here

Share this post


Link to post
Share on other sites

(This is the first crossposted devlog entry from my personal blog. I'll be posting these updates monthly from now on)

 

EverEnding DevBlog, October 2016: Schedule

This was an eventful month! Following my devblog post last month, I started sharing the project on a couple of game dev forums, and through a logical process which eludes me now 30 days later determined that a: I wanted to have the first chapter of the game complete by the end of 2017 and b: that in order to do this I should create a complete task-list and schedule for the project up to that point. This ended up taking me a few days, but I really feel like it was worth it. I now have, printed across 12 pages, a fairly comprehensive list of work that needs to be done in order to complete the first chapter of the game. There's going to be four chapters total, so a lot of work will remain to complete the game even after all this, but the scope of the work will be determined and I'll know how much time and effort it takes to create finished content for the game. All major gameplay bugs should get eliminated through this process, and all fundamental design code will be firmly in place.

 

I broke the schedule up into a total of five three-month blocks, one for the rest of this year and four others for next year. Currently, for this year's block, I have 24/53 tasks completed or otherwise resolved. I also have a few tasks which I had to add to the list which aren't accounted for there, as well as a few that are partially complete, but it's still good progress and I'm proud of how quickly I'm getting the work done. Now, I expect some future tasks to be quite a bit trickier, and I also expect many unforeseen tasks to crop up, but that's why I'm trying to get ahead of schedule now – as well as acknowledging that December is likely to be so busy with other stuff that I'll probably only be able to work for half of it.

 

The biggest task accomplished over this month is the attack animations. All right-facing attack animations are complete – well, except for the occasional mistake or two still to be fixed, a few of which I'm noticing as I watch the attack montage play below. About half of the left-facing attacks are complete as well, and they should progress more quickly on average now that I have the right-facing attacks to use as template and I've got so much sprite creation practice. There were a few big sticking points: I realized after mostly completing them that the original standing attack animation was a) boring and B) functionally redundant with the running attack animation. I've since replaced the former with the latter, but fortunately not all was lost: I was able to use the standing attack frames to resolve another issue that had cropped up. When I changed the crouching position of the right arm some time ago, I invalidated the entire swing arc of the primary crouching attack animation prototype. However, the new arm position made perfect sense for the motion of the unused standing attack animation, so I just pulled the torso from those frames into the crouch animation. I still had to redo the leg positions from scratch, but it was a nice shortcut into creating a good expressive attack.

attackmontage

I've also been working on the music for the game. The first few areas largely have completed music tracks already, since I created music concurrent with them to figure out the tone I was going for, but as I made that music like five years ago there's a lot of rough edges in those old tracks and they're not necessarily well set up to work with the systems I want to have in place for the game. That is to say, I'm not planning on just creating a loop for each area, but having some degree of adaptive music based on where specifically the player is in an area and what the game state of that area is. Thus, I've been remastering the old tracks, making small composition tweaks, and rearranging the parts to make jumping between them work better. Fortunately, I found that by setting timers and jump points, I could very elegantly skip between segments of an adaptive track to switch playback to a new section. Less fortunately, I discovered that a track with tempo changes and heavy use of delay effects is probably the least optimal type of track to feed into such a system. Still, it's functional for now, even if some of the track transitions sound a bit odd. I've at least proven out the basic concept and built the architecture: If I need to change things up a bit later to resolve these issues, it should be quite feasible.

hills

I've also been working on tilesets and backgrounds here and there. I made this background very desaturated to create a clear delineation between background areas and gameplay areas, and also to reinforce the misty feel I was going for, but I worry a bit about how well it will work with the extremely vivid and saturated caves background I made before. I really love playing with color in unexpected ways, like I did with making the distance in the caves background a dark vivid red, but consistency is important as well. In the end, that's something I can only figure out by getting the assets into the game and playing around with them and seeing what works. Really, though, changing palettes is incredibly easy compared to creating new assets, so it probably won't be a big deal at any rate.

 

In addition to the backgrounds, I've created a number of the transitional tilesets necessary to blend different tilesets together. Now I can have grass tiles next to stone tiles next to dirt tiles without them looking like artificial grid-based garbage. There's still some gaps in there, tiles that I'll need to create that I haven't noticed I'll need to create, but I can build out most of the environments I want to now, at least at a degree of rough detail.

 

Over November I plan to finish out all of the character animations and start creating detail assets for the first section of the first chapter – Mostly just different kinds of grass and stone to start with but, again, in many of these cases I won't know what I've forgotten until I get there and find I don't have it. Still, finishing this game, as distant a goal as it remains, feels more concrete and feasible now than it has in a long time.

Share this post


Link to post
Share on other sites

Everything is looking really nice! I like the character design and the way she moves. It all looks very graceful.

Share this post


Link to post
Share on other sites

Thanks!

So, I've been super remiss about keeping this thread up-to-date, so here are the last two months DevBlog posts. I'll try to be a bit more on-the-ball in the future.

-----------------------------------

 

Everending DevBlog, November 2016: Octopus

(posted December 5th)

 

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

 

--------------------------------------

 

EverEnding DevBlog, December 2016: Animated

(posted January 5th)

 

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.

Share this post


Link to post
Share on other sites

EverEnding Devblog, January 2017

(posted February 8th)

 

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now