Thursday, March 28, 2013

XBLIG playtest update 3/28

More changes now available on XBLIG playtest:
  • Craftable items can now be inspected prior to making them so you can learn more about what would be created beyond just the name.
  • Various UI sounds added to crafting page.
  • Aux items no longer use the Y button for second action. Aux items only have a primary action now.
  • Objects that support interaction can now use the Y button for context-specific features. 
  • Turrets use the Y button to "Recover turret" to inventory, allowing players to pick them back up after placing them for reuse.
  • The first cargo pod mission now has a turret placed by the pod for the player to grab for later.
  • The crafting mission after the first cargo pod now just requires the player to make a scanner.

Here's a screenshot of the craft inspection at work. The Pistol blueprint has been selected, and then it was inspected to see the details of the pistol object. The pistol details shows the item itself, the actions it can trigger (in this case, one) and two sockets for upgrades. Upgrades have the potential to add an additional triggered action or passive effect on the player. 

Thanks for any feedback!

Tuesday, March 26, 2013

XBLIG Playtest update 3/26

Continuing the push on Thunder Moon, this update includes the following:

  • Control scheme changed: RT/RB = held item, LT/LB = worn item, X/Y = aux item. B = interact/jump/detach. A = Sprint.
  • Player respawn bugs have been found/fixed. Previously, the player wouldn't always teleport back to the spawn location as intended.
  • Player respawns automatically after 5 seconds.
  • Mission item pickups don't expire/disappear.
  • The "explore north/south/east/west" missions have been removed. The original intention was to get people comfortable moving around before getting into the real missions, but nobody liked them.
  • Target indicator for pickups that don't expire (mission items) don't show a health bar.
  • Target indicator turned off when player is destroyed/respawning.
  • Voxel target indicator render bug fixed.
  • Tractor pack deactivates when the player is destroyed.
  • Tractor pack works correctly when a weapon is not equipped.
  • Pressing left-stick-(which is shown in the help list) will show all help, along with an overlay that shows what each visible icon is for, including weapon effects.
  • Help system now has the option to show a more/less help by default. Default is more. 
  • Detaching from vehicle (hoverbike) now reorients the character to a vertical posture. Previously the player would stand at whatever angle the vehicle was at when detached.
  • Vehicle equipment (== hoverbike flare) can now be used. 
  • Controller button icons have been scaled up a bit.
  • Help item for camera mode 1st/3rd person.
  • Player won't auto-repeat activation of non-repeatable items (health kits).
  • Cinematic camera improvements for worm attack cutscene.
  • Creature collision volumes used for shooting are larger and easier to hit.
  • Added help item for detaching from vehicle.

If you have an XBLIG account, you can download the game here. I'd appreciate any feedback you might have. Thanks!

Friday, March 22, 2013

XBLIG Playtest update 3/22

It's been a busy couple of days, and now there's a new version of Thunder Moon up on XBLIG for playtesting. 
  • Melee combat. Simple punch for now, but it can be used on NPCs and voxels to cause damage and collect blocks. This is a fallback behavior if there isn't an item currently equipped in the active "held" slot. 
  • Quick select no longer skips empty slots, allowing you to choose a melee slot.
  • Selecting a held item in the inventory also selects it now. No longer is there a separate selection for the held item, its automatic when you move the cursor in the inventory.
  • Target info in the HUD. Shows the NPC name and health bar, the type of pickup, that sort of thing.
  • Target voxel indicator. Still needs some tweaking; it is visible too often right now due to lack of range checking.
  • Character physics volume reduced; it is much easier to get into 1x2 voxel spaces now. This change, plus the previous auto-firstperson and first person camera improvements make underground cave digging much more fun to deal with. 
  • Character physics bug fixed- you can no longer push into walls and get popped to the terrain surface.
  • Voxel placement is now done by holding the voxel as your currently held item and pressing RB. RTrigger is now used for melee. The combo allows you to punch out terrain and place blocks without any inventory hassles.
  • Atomizer weapon animation spins up as you press the right trigger before it reaches the activation level, just for fun.
  • Mission goal reticles have been improved; the main reticle is not as thick edged and the pickup indicators are much smaller.
  • Getting destroyed when riding a vehicle now detaches the player as expected.
  • Can't attach/detach from vehicle while destroyed.
  • Disable autofirstperson when on a vehicle. 
  • Pickup items should no longer deactivate physics until they are on the ground. No more hovering pickups, unless the ground has been removed from beneath them (this will get fixed soon).
  • Projectiles can now only hit one object before expiring. 
  • InvPanel now supports dpad for cursor movement. 
  • PickupItems expire in 5 minutes. The world was getting saturated with them if a turret was around spawning bugs. 
  • Improvements to aiming logic, specifically around walls and obstacles. 
  • The missions in story mode are still incomplete, as is the camera behavior during the intro. 

If you have an XBLIG account, you can download the game here.

The most interesting thing about this update is the melee system. It's in it's most primitive form now, but it has the potential to support melee combat logic for equipped items such as swords and other items, along with loading animations and sounds for the player to use that are specific to that item and are unloaded when the item is unequipped. This is all hooked into the animation system so the melee animation can determine when exactly the strikes should occur, including support for multiple strikes per animation. 

Thanks for any feedback!

Tuesday, March 19, 2013

XBLIG playtest update 3/19

Late last night I posted another XBLIG playtest update. The latest version includes the following changes:

  • Camera will now automatically switch to first person when there isn't enough room for the 3rd person. It will switch back when there is room to see the character again. I am looking forward to feedback on this feature, I really hope it addresses the camera related complaints. 
  • You can toggle 1st person mode with rightstick click. 3rd person always has to have the option of entering 1st person mode in tight spaces, but when 1st person mode is activated this way it stays on.
  • There is now falling damage. It's pretty generous on how far you can fall without damage. Falling damage is disabled when using the tractor beam pack.
  • Trial mode will no longer allow the continuation of a saved game, it will prompt to send player to marketplace when they try.
  • Returning to main menu no longer sends you to the press start screen.
  • Choosing exit from the main menu actually exits instead of sending you to the press start screen.
  • The Adjust UI screen is no longer shown to new players.
  • Fixed character lighting problem where they would sometimes pop between lit/unlit.
  • Flaregun does a small amount of damage. It didn't do any damage before.
  • Weapon animation jitter when aiming down or near wall is fixed.

As you can see, some "boring" stuff which to be honest is why this sort of thing tends to get put off perhaps longer than it should. I am pretty stoked about the camera change though, 3rd person games always seem to struggle with confined spaces and I think this auto-first-person behavior is a pretty good solution. Hopefully the players will agree instead of sticking in first person mode all the time, because if they do they'd be missing out on the animation work that went into the main character.

Friday, March 15, 2013

Life & Death of a Robot

Just a quick clip showing new hit reactions and the death mechanic in Thunder Moon.

Thursday, March 14, 2013

Aim sweep & turn to aim animation work

This video shows improvements to the character's "aim sweep", which is a set of 9 animations that are blended according to character facing and aim direction. Also, the character no longer instantly turns to the aim direction, it will twist as much as it can to get to the aim direction and if that's not enough it will step in place until it is. With these changes and the other recent animation work the character is feeling much more fluid.

Wednesday, March 13, 2013

Just a nice screenshot

I was testing the XBox version of Thunder Moon and this scene caught my eye.
There are still some subtle lighting bugs here and there but it's looking much better these days.

Ore Veins!

Today I added ore veins to Thunder Moon which is where players can mine the resources necessary for the crafting of many items.
I created both the tech design and the textures a while back, but only today did the code get the last bits needed for this feature to show up in game. I was shooting the ground and picking up carbon, rubies, gold, copper and other resources that many items require to make them. Until today, there was no way outside of debug commands to build most of the items in the blueprint list but that should not be an issue any more. Just go find what you need down in the caves!

The ore veins are placed with a fairly straightforward fractal, which means the resources will generally appear in clusters underground in groups. Soon, I'll be tweaking the numbers for design control of what depths the various resources will be most commonly found, some of them of course being deep, deep underground.

Speaking of which, and I don't recall if I've mentioned this, but Thunder Moon's terrain is not depth or height limited. There are some precision issues if you go terribly deep, but it's unlikely that will really be a concern.

Tuesday, March 12, 2013

New character animations

I hooked up some new character animations and tweaked the animation tree to support more blends and partial animations. Finally, the character has something animating when strafing or running backwards while shooting!
The new animations went in surprisingly quickly. It was over a year ago now when I first designed the animation system, and since then it has come a long ways with a slew of animation node types, blending features, performance improvements and most importantly actual game code that hammers it every day. The thing I am happiest about is that it continues to do the job and I have every reason to believe it will continue to do so for this game and beyond.

Thunder Moon XBLIG playtest update

I just updated the playtest version of Thunder Moon on XBLIG. There are quite a few fixes and improvements since last week's version. If you have an XBLIG account you can download it here.

  • Filesystem error detection AKA USB-yank-detection. There should be no more code-4's from MU pulling; it will instead show a message indicating the game cannot continue and has to exit due to a filesystem error. While a graceful recovery would be nice and I'd like to add support for that in the future, it is not required by the evil checklist. 
  • Shadows are now enabled by default.
  • Many terrain lighting artifacts have been fixed. There are still a few however, but they are much less common than before.
  • Terrain generation and lighting logic has been optimized quite a bit.
  • The crash landing intro sequence has been reworked, but is not final. Instead of a long landing phase, there is about 20 seconds of loading followed by a camera view from the ground of the lander crashing. I'd like the loading to be faster, but there is only so much that can be done there given how much is going on.
  • Ambient lighting has been turned up a bit; it should be possible to see around adequately in the darkest of caves.
  • Title safe zone has been reviewed and all known issues corrected. The default is to have everything in the title safe zone.
  • Walk speed has been bumped up to 1.5x what it was. 
  • Default camera aim sensitivity has been reduced to 60% of its original speed. It can still be cranked up for people who prefer it higher.
  • A half-second freeze related to music streaming has been fixed.
  • The input system had a bug that was messing up the behavior in the settings menu.
  • All sounds pause when the pause menu is up now. Previously they only paused for the Guide.
  • Credits now scroll 3X as fast. They can also be controlled with the left thumbstick, but there is no help for it.
  • An exception related to approaching a cargo pod mission goal before the area has streamed has been fixed.
  • Loading a game that had all missions completed will no longer hang on loading.
  • Blueprint collection has been trimmed a bit to remove unusable items. Note that the resource gathering required to make all the items is still incomplete and will be coming soon.
  • Some new inventory icons.
  • Max number of terrain triangles has been increased.
  • Cloud rendering has been optimized and has much less impact on framerate.

Thursday, March 7, 2013

Performance work: High-Speed, Off-Screen Particles

The clouds in Thunder Moon are the nicest clouds I've ever made, but they do unfortunately take a pretty big toll on performance. There are many layers of textures and drawing all of them takes a lot of the GPU's fill rate. Yesterday, I finally got around to implementing the concepts described in this article: High-Speed, Off-Screen Particles which helped to increase the frame rate by a good amount.

The basic idea is you render objects like the clouds into a smaller texture, and then later composite that texture into the full scene render, using linear filtering in the process to smooth out the slightly lower resolution clouds as they are drawn. This is a big performance saver because the number of pixels drawn by the the cloud system is much less than when drawing at the full screen resolution. There is a catch though; a smaller texture rendered over the scene like this will have artifacts where the texture meets another part of the scene even with the linear filtering. Unfortunately I didn't capture a screenshot of that for this post, and I shouldn't take the time to go set this up again but if you check out the linked article they have good examples of the artifacts I'm talking about. They are most noticeable when the camera is moving around.

So fixing the artifacts requires detecting the edges in the low res buffer and drawing the full resolution clouds into those places the edges are detected.

The thumbnails below all link to the 1080p versions.

So, here is the original scene:
The original scene with clouds rendered at full resolution.
The first part of the algorithm is the clouds are rendered into an off-screen blend buffer and then processed to detect the edges as shown below the edge buffer.
The edge detection mask rendered over the scene.
Then the blend buffer is drawn over the game scene during another part of the rendering, using the edge buffer to limit where it is drawn. This avoids the edges and prevents the creation of artifacts. While it is drawing, it writes stencil values so the next stage can detect where the low res clouds were and weren't drawn.
The low res buffer without drawing the full resolution edges.
Finally, the full resolution clouds are drawn again, but this time reading the stencil values so it only drawn in the detected edge areas. The end result is something that looks very similar to the original full resolution with a worthy performance boost.
The low res buffer composited the full resolution clouds drawn only where edges were detected.
Fun stuff, and the game is faster now as a result.

Monday, March 4, 2013

Thunder Moon Playtest

Thunder Moon is now on XBLIG Playtest! If you have an XBLIG account and want to check it out, here is the forum thread and here is the download page.

This build includes various fixes and improvements.

  • Inventory stackable items displayed stack count now updated correctly during stack splitting & moves.
  • Crafting now shows a big message telling you what was (or wasn't) made.
  • Inventory sounds now play for stacked items when placed.
  • You can now quick-select held items from within the inventory.
  • Quick select shows name of currently selected item.
  • The story mode landing sequence is much shorter. I will be tweaking this more.
  • Player character doesn't glide without walking animation at low speed.
  • When starting a game, gameplay is paused and rendering disabled until a decent amount of nearby terrain is ready. Starting up a game looks much cleaner now.
  • A problem with the main menu processing input when it shouldn't have has been fixed.
  • Item icons are color coded according to if they can be activated, if they are activated and if they can be deactivated.
Hope to get some feedback soon!

Saturday, March 2, 2013

Thunder Moon Alpha #3

XBLIG Alpha testers, Alpha build #3 is up. If you would like to check it out, please grab from the same URL.

  • Added the crafting/inventory header display.
  • Crafting and inventory help is now available as described in the previous blog post.
  • Item details panel shows stack info for stackable items.
  • Splitting item stacks now shows the correct count in the stack of items not picked up.
  • HUD icon colors show activation status, colors not final.
  • Voxels now tagged as Held Items for placement.

Inventory & Crafting in Thunder Moon

When designing the item system for Thunder Moon, some of the goals included having support for crafting, nested items, upgradable items, item slots and various other features common to RPGs, with an interaction model suited to the console. Often times, console games with inventory systems of any complexity feel like they are designed with a mouse in mind and the controller is used like a virtual mouse stick with little if any effort made to optimize the experience for the console. I wanted to avoid that here, so I took some time to make a system that I think is well suited for the game controller. I originally created the system about 4 months ago based on UI tech that has been evolving since Atomic Sound (BBG's first released product), and with a few minor tweaks here and there it has been working pretty well. Lately, with the feedback from the Alpha testers (thanks!) I've been tuning up the inventory and crafting panels, doing my best to wrap them up and make them easier to use. Thunder Moon's design sits somewhere between a shooter and a light item-based RPG, and the item system is one of the things that leans towards the RPG side of things.

Here is the main inventory screen, with a number of items in there. Not all the icons are final. There are two panels - the bottom shows the main inventory, and the top shows details for the currently selected item. The currently selected item is an upgradable pistol, which has had two powerups inserted into its sockets. You can see a few other weapons, a stack of deployable turrets and a few deployable vehicles. There are also some repair kits, and a variety of blocks that can be placed in the world. Some of the items (they happen to be powerups) have a horizontal bar which indicates the item wear.

The icon system itself was an interesting bit of code because the icons aren't just a static texture sheet with all the icons, the system dynamically generates the texture sheet using individual icons that are streamed in as needed. This means the game has no practical limit to the number of icons the game can use, and the icons don't have to be low resolution either.

There are four types of item slots in Thunder Moon: Held, Worn, Aux, and Generic. Items can be tagged to work in specific equipped slots, such as weapons in the held slot, jetpacks in the worn slot, and grenades in the aux slot. Items in these slots are hooked into the UI and will respond to the appropriate button presses when they are equipped. The most powerful feature that items in the equipped slots have is that each one of them can have its own unique 3d model attached to the character, along with any number of unique animations and sound effects that are applied to the item, the character, or both. For instance, the pistol firing will animate the pistol itself while playing a synchronized body recoil animation on the character. These resources and the icons are streamed in as needed, which allows us to make any number of items going forward without any serious impact to memory (which is a major concern on the XBox 360). I haven't had a chance to utilize this system much yet, but it's there, it works, and I am excited to hook up new backpacks, hats, gizmos and fun weaponry into the game the next chance I get.

The inventory system allows you to drill down into items when they can contain other items, such as socketed items that can take powerups. Right now, sockets & powerups are all this is being used for but it could also support generic containers like backpacks if there was a design need for it.

Feedback suggested that the item system was not explained well enough, which in retrospect is pretty easy to see why. There's a lot there! In recognition of the fact that not all players are able to read my mind to figure this out, I added some help which can be shown while in the inventory that I think gives a pretty good explanation of how it works. I prefer context sensitive help that appears when & where you need it, and I'm pretty happy with how this turned out. While it might seem like a lot of text there, I think it covers most of what players need to know. What isn't spelled out is pretty easy to pick up, I think.

Crafting is a pretty important part of this game. There are currently somewhere around a hundred item blueprints. Blueprints can have any number of inputs and outputs, and there can be any number of plans that make a given item. Designing a UI for this that I felt worked well on the XBox was a bit of a challenge as you can imagine but I think it turned out pretty well. Icons are color coded based on usability, and there is a filter to allow you to limit the view to the items you can make right now which helps keep it a bit simpler.

The crafting panel also has a detailed help display.

Designing and organizing all the blueprints organized was something I knew right away had to be handled carefully because there is just too much data there to "wing it". On the pipeline side, the blueprints are configured using a tool I created that works with an SQL database and the content pipeline prepares all the data and icons for the game itself. It's a fairly plain but functional tool that nobody else will probably ever need to use, but here's a screenshot in case it might be interesting to some of you to see behind the scenes a bit:

That's all for now, thanks for reading!