Controller input works perfectly as far as I can tell, and melee attack registration, health, and enemy destruction all work. The most major problem remaining is that of making entities affect the game state in a way that I can use: Flagging events that have happened, enemies that have been destroyed, rooms that have been found, etcetera. The difficult bit isn’t so much making it so that they can affect an object that stores that kind of info, but in structuring that object both so that it can affect the game in a way that I can easily interpret and build upon and be affected by the game such that entities can work with it in a consistent manner and I can easily save or load it. This is mostly going to be a challenge to think through and figure out the general shape of – once I get in there, once I know that shape, it should be pretty easy to actually implement. Either way, I’m pretty confident that I can have it up and running by the end of the year, even though obviously the coming week will have some festive distractions.
Since we’re getting towards the end of the year, I think it’s time to take a step back and look through what I’ve accomplished – and, inevitably, what I’ve failed to accomplish – over the past year.
The Entity Editor: I have mixed feelings about this. I think that this aspect of the project took way too long and I wasn’t too thrilled with the result – and, with the perspective of time, I’ve come to understand why. In designing this editor I tried to solve two problems while only acknowledging one: Frankly, if I were just making the game, creating a full-fledged editor for all of the entity behaviors and behavior settings and prototypes and templates is overkill. Until the point where I make that editor really good, it’s going to be faster, easier, and more reliable for me to just construct those entities in code. I know this because that is how I’m doing it now, even with the editor in place. It was silly of me to fuse the tool for editing entities and the tool for placing them together in the first place, and having realized that I’ll probably spend a couple of days stripping the entity template editing components out of the level entity placement tool and setting them aside.
I made this mistake for two reasons: First, my original approach to entities, before I created the template system (previously called the prototype system) had each entity unique, with its own suite of behaviors. It didn’t make sense then to be able to place them without editing them, because an unedited entity was completely meaningless. The other problem is that, even as I try to develop this as a game, there’s a part of me that wants to develop it as a flexible and reusable tool for many games. I don’t think this is a bad impulse, but it’s certainly one I should be aware of, since it often drags me off-course.
I worked on it for 3 or 4 months out of the year and I’m going to end up trashing, or at least tabling, a lot of that work. It’s sad, but it’s not a disaster: Most of the work I’ve done on it will find use, if in some different shape, some different day.
Sound and Music Playback: These facilities remain largely untested due to lack of content to work with, though as far as I’ve tested them they work okay so far. Flash has a certain number of issues with sound latency, however – I’ve not yet tested these to see if this is a problem I’ll have to address, but there is the possibility that in the future I’ll have to work with the sound buffer more directly in order to fix latency issues. I don’t know if this will be a problem or not, but it’s something I’ve been worrying about. We’ll see.
Image Browser: It’s ugly as sin, but it works and it didn’t actually take me that long. It’s also generally useful enough that I’ve reused it and repurposed it several times, so as a tool I’d say it’s a success.
Particle System: The particle system existed before, but I overhauled it so extensively it’s worth mentioning again. Particles support a number of different rendering styles, can be affected by individual type of particle, can have temporary particles added to the system, and support blurring and scaling based on distance from the camera.
Jack Shit: This seems to be pretty much what I accomplished from May through June.
Detail Editor: I am, so far, completely satisfied with my work on the detail editor. This may change as I need to use it day-to-day to build levels, but so far it seems like it will do everything I need it to do. It handles both simple details and moderately complex particle effects easily and intuitively. I think I might have done A Good Job.
Side Project (Turncoat): Let us never speak of it again.
Inter-Entity Collision: Went very well once I focused on it. The biggest problems were not in determining collisions, but in making sure they happened in the right order and to the right entities.
Controller Support: Implemented!
So that’s this year. Looking over it now, I can clearly see two or three slumps that lasted a month or two each and slowed productivity to a crawl during each instance. I would like to say that all I need to do is just avoid these slumps, but it’s hard to know how to approach that particular problem of emotional management. Hopefully, now that I’m past most of the thickest thickets of programming, I can move a bit more freely between challenges and feel less weighed down by feeling the need to address one onerous task after another.
That being said, a few things still need to be addressed in the core programming, and those are what I’ll be working on as the new year rolls in:
- Collision detection improvements (fixing glitches)
- Modifying/saving/loading central game state
- Dialogue management
- Interaction w/ Game-State
- Text captions
- Animation registration points and derived effects
- Sling attack
- Improvements to Tile Editor:
- Add ability to invert collision mesh within selected area
- Manage loaded level assets (particles etc) better – figure out when the best time to pre-load is
- Main menu
- Load game
- Multiple profiles
- Improvements to Particle System
- Can be spawned by entity events
- Can play sound
- Collision with defined shapes
- Spawn masking
- Dynamic zoom
- Graphics post-processing? (offload to C++ sub-program?)
- Special effects
- Triggers for effects
- Reflective floors
- Water reflections/rippling
- Screen shake
- Basic lighting
- Lighting editor?
- Light occlusion
Those are the programming tasks I can think of now. More may occur to me over the coming weeks, and I’ll add them to this list as they do. It seems a reasonably manageable list, though… and I’d like to tackle it with renewed vigor, try to hammer down the last of these outstanding programming tasks, in particular those that are keeping me from building levels for the game.
I want to be able to create the first chapter for EverEnding over the course of next year, and hopefully have that chapter complete and playable by October or before. It’s taken too long already, and will continue to take too long, but I feel okay continuing to struggle to make this happen until someday it finally does.
It’s time to work. It’s time to create.