Waystation

Building the World

I’ve been on another posting hiatus to focus on development, doing the rather unsexy work of revamping old systems, optimizing performance, and developing tools for myself. Over the past few months I feel I’ve accumulated enough of that stuff to make for a post though in the future I think I’ll stick to shorter updates.

Design Thoughts

Reflecting on the release of other games with the word “infinite” in their product description, I feel that I should again clarify what I mean by the game being set on an infinite wall. Yes, players can climb forever in any direction. However, the interesting areas of the game are hand crafted as a part of a narrative. I do this partly to avert procedural blandness, eschewing infinite but predictable “variety” in favor of structures that are placed with intention, everything naturally connected rather generated via algorithm.

The main story path will be a series of unique locations, usually centered on settlements made by the people of the wall. The path will be marked with bright flares that can be seen from afar, so players will know where to go next from the start.

Outside of the critical path are the satellite locations. They’re lower in profile than cities and towers, and are there for less casual players that want an additional challenging goals to reach. Climbing to and from them would not be easy, but they’re completely optional.

Beyond the satellite locations is the hinterland, a procedurally generated waste that stretches on and on, full of random biomes but not much else (I recently re-added the automatic biomes after an overhaul of the generation code, placing them with voronoi noise). The challenge in these outer areas lies in finding those extremely rare generated save points while staying alive. Also, I may sprinkle a few handmade secrets in this vastness, very far off-path. This expanse is for hardcore world-climbers only.

This seems like a natural way of spreading things out, letting players choose their own difficulty level. There are no invisible walls gating you, just a stark nothingness beyond. Hard constraints are usually a good thing in games, keeping players focused on specific goals and keeping the action moving along. In early years of the project, I struggled with the idea that players would stray off the path and unintentionally spoil their experience.  Now, I’m more inclined to trust players to forge their own paths.

My one constraint has been the introduction of save points, so that if players do indeed wander too far, they can easily undo their mistake and return to the beaten path by reloading. This also makes setting out from the safety of a settlement a more meaningful event. No more save-scumming after every jump! A misstep won’t take you back a few steps but back into the last visited town. Did I ever mention that I am a huge fan of the Dark Souls franchise?

New Wand Model

I’ve made so many iterations of the wand while developing the game. I’ve always wanted to make it feel more like a tool than a magic wand, and this version comes closest to that intention.

atw-wand

New Locations

I’ve created models for two new locations. The first is a structure inspired by ICO, a series of towers surrounding a monolithic fortress. Note that the texture is temporary, it shouldn’t be this grey in the end.

against-the-wall-citadel

The second location is an outpost/lighthouse/waystation. It features a large crystal that refracts sunlight in every direction, meant to be a sort of a guidepost for players.

Waystation

Region Builder

I’ve created a world-editor that will help me generate and set data. This will speed up my ability to create levels, place props/bricks, and override procedural biomes. I call this my “Region Builder.” A region is my internal term for a group of neighboring super chunks.

As an example, below is the brick editor. It gives me the ability to move, and re-type, and resize bricks. Beats directly manipulating data. I have similar tools for chunks, super chunks, props etc.

Region Builder Brick

Next Steps

Right now, I’m in the process of rebuilding my levels in the Region Builder. I’m trying out new image effects that will improve the overall look and feel of the game (hopefully without too much of a performance cost).

Nothing Trivial

It has been a while since my last post, sorry about that. Thanks to everyone for being patient and cool about the long dev cycle for this project. It’s been a huge undertaking, but this game is my baby, and I want to get it right before I release it into the world.

I’ve recently redone the game’s state system, weather, biomes, brick generation, props, saving system, settings, you name it. The task ahead is still huge, basically just the actual reconstruction of the game world (that is, level design). The tech side of things is close to where it should be, except for whatever bugs pop up.

Now it’s a matter of placing all the props and polishing the game until it’s release-ready, content and level design. Creating 3D art has always been my greatest weakness. It often feels like a futile exercise, taking me weeks to produce any given asset, and I’ve never been quite satisfied with what turns out. For now, I’ll just use placeholders for everything that I cannot do myself, and just focus on getting the levels playable.

In terms of overall artistic direction, I am making a world that needs to feel like a “beautiful void,” in the mold of Myst. The wall is a lonely, lifeless place where you are a small helpless speck clinging to its surface for survival. This world doesn’t know or care about you. it’s a monolith that will continue existing on forever, long after you abandon it. However, at the same time this strange world can be scaled, explored, studied, and eventually understood for what it is.

Actually executing on this vision has been nothing trivial. I constantly feel like the end is in sight, yet in execution it feels like it’s miles away.

Renovation

Right now I’m tackling my redo of the prop and saving systems, and will move onto biomes before getting back to the meat of the game’s content.

For biomes, removed them originally because they were distracting, and filled the wall with clutter. I really love how lonely, small, and isolated it feels on the bare face of the wall. But still, I want a bit of variety, so isolated zones of the game content will contain hand-placed biomes, and much further out will be procedural ones for the more adventurous player. I am considering having some random hideouts/save points in this procedural wilderness, but that is a low priority feature.

Props

I’ve redone the prop system of the game. Before, I had two scripts that defined how world objects called props behaved: Prop and DynamicProp. These scripts each had variables that further distinguished one prop from another in terms of functionality (e.g. a DynamicProp could also be called an Entity or Activator depending on how it was set up). Now, I have made a seperate script for each type of prop:

Static Prop – props that are saved and loaded with chunks, and never move from their position. E.g. buildings.
Dynamic Prop – props that are capable of moving and transitioning from one chunk to another. E.g. doors, elevators.
Entity Prop – dynamic props that can be interacted with, usually picked up and moved around. E.g. debris, small objects
Activator Prop – props that are stationary execute a state-changing function (open -> closed, off -> on) when activated. E.g. Switches, doors.
Trigger Prop – invisible objects that trigger events when the player touches them. E.g. checkpoints.
Container Prop – dynamic props that track and are responsible for other entity props. E.g. an elevator containing cargo.

Super Chunks

Also, I have created a script that defines “SuperChunks.” SuperChunks are an area of space occupied by groups of 64×64 regular chunks. The player’s current SuperChunk is always in a square that is at 0,0,0 in the lower left corner and 4096,4096,0 in the upper right. When the player walks from one SuperChunk to another, the entire world shifts so that the new SuperChunk fits into the square. That way, the player is never more than a few kilometers from the world origin. This cuts down on floating-point errors that arise when the player coordinate numbers get to high.

Some Improvements

Just another small update on my progress with the game.

Getting Up To Speed

My redo of the game project is proceeding as planned. One change is that now instead of a 1-camera setup, I have three cameras, to render equipment, the world, and the sky separately. A “camera” functions as the player’s eyes in a scene. Each camera has a near and far clipping distance, it’ll only draw objects within this specified range. When there is a wide range in these values, there are more rendering issues that you’ll encounter. Also, I can apply different effects and filters to each camera.

Unity 5

Recently I upgraded to Unity 5 for the new version of Against the Wall. I didn’t realize this at first, but my old custom shaders (code that tells your graphics card how to draw something) were no longer compatible with the new version of the game engine. Everything pretty much looked flat and washed-out, but I didn’t realize how bad it was until I looked at the two versions side-by-side. I spent last Monday after work updating my shaders to the new stricter guidelines and standards that the engine requires. Fun times.

DirectX 11

The final Windows version of the game will not utilize DX11 for graphics rendering. Why? for some reason, it does not play well with the “atmospheric scattering” shader that I use for my sky (that works perfectly well under the older DX9). I spent much of Sunday fixing it, but the result left much to be desired. The alternative skybox shaders and scripts that I’ve found either don’t render cloud planes, or are hard-wired to have a horizontal horizon. Crazy, right?

Also, not developing with DX11 in mind makes things simpler for me, since it is not compatible with Mac OS X or Linux. More differentiation between each release platform would have meant more dev time making sure the look and feel of the game is consistent. I’m already strapped for time as it is!

Also

I am going to the Boston Festival of Indie Games this weekend to show off my miniature fighting game called Nothing Good Can Come Of This. Stop by and say hi if you’re there!

Kickstarter Goal Reached! (also alpha 0.35)

Thank you to everyone who supported this project and contributed to the Kickstarter campaign! This has been an exciting few days for me, and I’m glad that my dream is finally in-motion.

Just a note, I’ve updated the game to version 0.35. It’s a minor bugfix update which should addresses a physics-related issue. Also, I’ve posted a Mac stand-alone version of the game. Let me know if you encounter any problems with this build.

November News

I’ve just launched a new forum for Against the Wall. I’ve also updated the game a few times to fix some bugs in version a0.34.
The game also has a post on Kotaku. This really made my week, and drove 16,000 people to my site! thanks to everyone for the overwhelmingly positive response!
I’m working on a trailer for the game with the help of my friend Jen. The Kickstarter video is just not polished enough for prime time. I’m going to be recording a new narration and sending in some clips on Saturday, and using some royalty-free music as a placeholder.
By the way, I’m fixing a bug where held objects such as the scarecrow fall through the elevator floor. Apparently some folks out there are treating this object as a sort of companion cube and dragging it up the wall as they go. I love this. I spent a bit of time yesterday fixing this issue, though there are still problems with the second moving platform. Transporting the scarecrow from the beginning to end of the game would be an interesting achievement…

Checkpoints

The next release of the game will now have a functional checkpointing system. This functionality was pretty much already implemented with the general save scripts, just a matter of saving under a new file name, time-stamping the file, and knowing when to access it.

When the player dies, they can load their last save, either the Quick Save or the Auto Save. I’ve considered removing the quick save as it may break immersion. It may be frustrating to fall off the side of the world without the option to save… then again, it would make the experience all the more harrowing with one less safety net. Anyway, the checkpoints will be placed in logical locations, or fire at the completion of certain events. For the latter type, it will only save when the player is standing still on a brick, and no bricks are moving. Wouldn’t want to save the player’s progress in midair, after all.

Also, I’ve enlisted some help in creating art assets. Hopefully this will speed progress for the game along.
There is also a bug with the… city-to-forest platform where the player can fall through it. Will fix that one up. I also need to concentrate on the bug where the player clips into moving bricks!

Will be in south Jersey for the next 24 hours, so obviously there will be no progress until I get back. Ah, and I still cannot start Kickstarter, Amazon has not made the micro deposits to my bank, so I do not have the necessary verification to go ahead. I must be patient!

Kickstarter Campaign Prep

I’m about to launch a campaign on Kickstarter.com to get some support for Against the Wall. I’ve invested a lot of time and effort into this project so far, but progress is slow when you’re not working on a team. I need to contract out the art production in particular. I’m a programmer, not an artist, and while the assets I’ve created so far have been passable for an alpha version, they won’t really cut it on a final product. Also, I’ll need a composer, a sound designer, and probably another programmer. I say probably because while I can handle the amount of work that is required to complete the game’s coding, I may want to speed things up by delegating some of the work to another person.

Also, I should mention some of the changes that I made for yesterday’s update. I’ve added trees to the mix (pictured below), a small forested area, and green bricks. Eventually these bricks will have a mossy organic looking texture to indicate, that either they are alive, or infused by some grass-like organism. The gimmick attached to these bricks is that they do not like being touched, and will retract back into the wall if you step on them or brush against them. This can make things very difficult if you need to move vertically through them, and tricky if you need to move horizontally over a group of them.

Against the Wall - Forest

I spent two days of this week on an… event, that will take place in the area of the settlement. This event serves as a transition between the settlement and the forest.

The new version of the game also includes the aforementioned optimization that allow me to freely modify the world in-game, or change the seed for the random generator, without much consequence.

Up next: Lava bricks, timed bricks, crumbling bricks, and either a castle setting or an airport. There are also dozens of tweaks, features, and bug fixes that I need to implement. Stay tuned!

Continue reading “Kickstarter Campaign Prep”