Irregular Chunks

I feel like a rockstar! After 2.5 days of programming, I’ve finished rewriting the procedural generation code so that the seams between the chunks all but disappear! Before, chunks were perfect squares of 64×64 brick spaces. Technically they still are, but I’ve changed it so that the bricks on the top and right-hand side of the chunk can now extend beyond the edges. The left and bottom sides calculate this same overflow of bricks, but uses it to cut away at the existing brick spaces to make room for the bricks in the chunks that exist to that side. It’s kind of hard to explain, but now the entire world is essentially a giant jigsaw puzzle.

Visible seams would reduce immersion since you could clearly see where one chunk ended and another began. Also, by extending the bricks along the seam at the top of the chunks, the player could create a completely flat path that could stretch infinitely, breaking the challenge of horizontal movement.

The hardest part of this was getting the overlapping chunks to communicate to each other to decide which chunk a brick will extend from. Coding this was so incredibly frustrating, but this feeling of accomplishment was well worth it.

Also added:

  • Brick-freezing: the ability to mark a brick so that it cannot move any longer. Useful for constructing houses.
  • XBox 360 controller support.
  • New custom shaders that use detail maps and vertex colors.

Post-Competition Game

Now that voting for the Ludum Dare is over and the scores have been released, I’ve decided to put up a build of the newest version of Against the Wall. You’ll find the web player on the Play page. Since last week, I’ve added a windmill building that protrudes from the side of the wall and serves as the player’s objective, added some basic quick-save/quick-load functionality, tweaked the sound volume a bit, and created some minimal tutorial text. For this release, I’ve removed complex menus such as the inventory. There simply are no items for the player to pick up or use yet, besides the wand. Also, I have yet to implement an options screen that would allow players to tweak their game settings. I hope that the current sensitivity level/control scheme will work for most players. This will probably be my next task, before the MiniLD hits this weekend.

Against the Wall (Alpha 0.2)

Version Alpha 0.2 of Against the Wall, a first person platformer originally conceived for the Ludum Dare  competition #20. The Theme for that competition was “It’s Dangerous to Go Alone, Take This.” In this game, the player is on a world that consists of one infinite flat vertical surface called “The Wall.” The player finds a magic wand that allows them to advance upwards along The Wall by creating ledges in its side.

Continue reading “Against the Wall (Alpha 0.2)”

Sound and Tangents

Today was spent entirely on writing a sound manager that instantiates a small number of audio sources that are repeatedly used, for footsteps, the movement of bricks, etc. I’ve also given the world an ambient wind sound for good measure.

Against the Wall BricksHere is a screenshot. The lines on the bricks currently indicate the four levels that you can pull a brick out from the wall. The player will eventually be able to punch bricks into the wall, though this will take me a while to implement.

Save and Load

Ever spend hours fixing something that turned out to be simple oversight? I just spent two hours on a portion of the “load” script that was loading chunks with additional info from all the other chunks. Hard to explain, but the answer was so simple (resetting a variable) that it’s just crazy! Anyway, info on bricks is now saved in XML format, and it shouldn’t take long to expand this to static or physics-enabled objects.

I have the option of saving the game in binary files as opposed to XML, but I would like to encourage modding of saved games and the world by the community. XML is human-readable and less of an impediment than binary. As time goes on I’ll try to expose more variables in these files for people to mess around with.

The end of LD voting is a week away, I’ll be sure to put up my post-competition game before then!

Chunkin’

In the last few days, I implemented head-bobbing and “chunk overrides”, which basically preempts the procedural generation of certain chunks to insert author or player created bricks and other items. Took a big chunk of time to do so, but it serves as a basis for level design and a save system.

My goal for today is to create the save/load scripts. In addition, I need a new function that pushes players after a moving brick hits them. If I have time, I’ll begin working on the ability to vault up to and over ledges.

Brief Update

My grad school finals period ended last Monday and now I have some time to work on the project. Problem is that without time constraints, production has actually been slower. I can probably say that I’ve accomplished more in the 48 hours of the competition than in the last two weeks! School may have been a factor.

Anyway, I’ve finished the world generator and added an algorithm that gives a varied but set seed. This world should start out the same for everyone who plays it. This was done to facilitate story. The cities, towns, farms, etc.  of the world need to be fixed and within a short distance of each other (excluding mass transportation) for the game to be cohesive and lack needless trekking through the world.

I’ve also scrapped both the rigidbody and scripted character motors which I created in favor of heavily modified C# version of the motor that comes with Unity. It’s actually enjoyable to jump around now!  For added challenge, the player is now much smaller vs the bricks, meaning the two larger block sizes are insurmountable when jumping at them from the base. I eventually plan to add “vaulting”, that is, the ability to climb up and over the smaller bricks by walking or jumping into them.

Sounds have been added to the bricks as they move, and dust particles fall off of them as they move. The actual sound that I am using is pretty grating. My experience with sound design is limited, so this will be fairly tricky to pull off.

Here is a plot of features that I plan on implementing in the next week:

  • Chunk Overrides
  • City Generator
  • Death
  • Player Cache and Saving
  • City Assets
  • Parachuting

Also, I hope to have a new player up before the end of the month.

    The Infinite Wall

    Just a few updates since last week that will lead to my Alpha 1.0 release of the game. First, I implemented an inventory system in which the player can store and use items that they pick up. This is akin to an adventure game inventory, and is specifically modeled after the one found in Amnesia: The Dark Descent. This will eventually include a feature where you can combine two objects together. Nothing groundbreaking, just a functional place to keep your stuff. I am considering the removal of any inventory limit. However, this kind of exploration-focused game may benefit from restrictions on how much a player can carry, since players will be induced to craft homes for themselves to keep their things safe, ala Minecraft. A full menu system has also been written, but the other features, such as the “Options” page do not work at all yet.

    Second, speaking of Minecraft, I have completely rewritten the procedural generation scripts so now not only is it hundreds of times faster, but the world can stretch out infinitely! (Within the limits of floating point numbers, that is). I just have to work out a system for caching the world as it is produced, and saving changes to the world made by the player.

    Third, The first-person controller has been rewritten so that it handles a bit better. No more super-sensitivity or slow jumping! I need to work on the ledge interaction with the player a bit though, making sure that the player is pushed smoothly when hit by an extending brick. A skybox is also in the works… it isn’t nice enough looking though, I will have to rework it.

    These changes will be reflected in an update in the near future. Stay tuned! Check out the Play page to try the buggy Ludum Dare #20 prototype version.

    Introduction

    Against the Wall, Ludum Dare #20 Picture

    Against the Wall is a videogame in its prototype stage. It is set against the side of a wall that stretches infinitely in every direction. The player must travel up the wall by manipulating its bricks, pulling them partially out of the wall to create ledges and staircases using a magic wand.

    Against the Wall was developed during the Ludum Dare #20. The Ludum Dare is a competition that challenges participants to create entire games within a 48-hour time period. The designers must do this alone, single-handedly, using newly created art assets and code (aside from code built-in to certain game engines). Participants are also constrained by a theme that must be incorporated into the game. After a week of voting the theme for LD#20 was “It’s Dangerous to Go Alone, Take This.”

    The game that I released for this competition is fairly rough, the controls awkward, and the code buggy at points. In fact, the game could not be beaten due to one particularly serious oversight, in which the exit was blocked.

    Despite these initial problems, I believe that I may have something unique and interesting in the concept and setting alone. To my knowledge, there has never been a “Wall” world in fiction, and certainly not one where the wall is a mass of shifting bricks. The gameplay will need serious enhancement before I can really release it. Follow this blog for more information on the game’s progress!