Showing posts with label HazardPay. Show all posts
Showing posts with label HazardPay. Show all posts

Friday, February 15, 2013

Behind the Scenes :: Critter Exploration

Life's been...well...life, as is often the case, but I have managed to put in a little time recently for some concept development.  Thought it might be fun to share, so here we go.

I've had a running idea in my head of the various kinds of bugs that will assail the player(s) as they try and reap the rewards of the planet's mineralogy, but none of the concepts were very fine-tuned.  I'm sure of the behaviors I want them to express, but their actual appearance is in that "perfect in my head, undefined on paper" kind of state.

The following, therefore, is what my visual exploration and refinement process looks like for one of the first bug types the player will meet.
(click to enlarge)
 
I knew that I wanted a pack-critter, something that roamed in small-to-large groups and harassed the players due to their speed and melee preference.  I had initially thought to try and model the bug off a dog's anatomy, but those all channeled a little too much Skagg (of Borderlands fame) so I kept digging.  The end result was more of a rabbit-insect hybrid, and I've been happy with how that's coming out.

As these are all roughs, I'll put up a "final pass" of this fella in a more formal spotlighting post, much like our heroes and any supporting cast.  I'll make sure to save the bigger/rarer creatures' reveal for the game itself, but these guys will be roaming around on the intro level, so guilt-free: it's not much of a spoiler. :)

Thursday, January 24, 2013

Meet the Cast: Episode 1

Meet Nero:
Half of the two-person team that take us through the game's storyline, and one of the playable options.  I wanted to post both of the playable characters as a pair, but her cohort is still half-finished, and since I made mention of the fact that I'd have some art to show people, I'll just leave her solo for now.

What she's wearing is part of the standard-issue gear for all new employees of the RATE (Resource Acquisition & Territorial Expansion) program, the meal ticket that brings both of our heroes to the shores of the game's home planet.  If you're familiar with US history, it's similar to the deals handed out to homesteaders that pushed westward from the Mississippi, only...in space.

Stay tuned for Episode 2, where we meet her cavalier red-headed team mate, and learn more about what waits for players in this backwoods corner of the galaxy!

Tuesday, November 27, 2012

Once more unto the chopping block

So some great news for me, the SharpDX Toolkit was released at the end of October, providing a clean high-level interface with DirectX11 similar to the XNA model, only not reliant on XNA support.  I'm especially excited because it allows me to fall back on what is most assuredly a better-structured library than what I cobbled together while learning how to program a DirectX pipeline.

While this doesn't break my current code, it does give me a great foundation to make one final sweeping overhaul to the main engine/library to focus on a data-centric model.  My existing code wraps a lot of data objects with personality and functions that really should just belong to an authoritative "Renderer" object, so I've started moving towards a design that simplifies my camera classes, effect libraries, and other infrastructure entities and makes them components of a primary Renderer.  That renderer will work with a single source of world data and state data to render the entire scene (from world geometry to actors, UI, etc) appropriately for the gamestate.

The other impetus for cleaning up and officializing (is that a word?) my data components is interoperability with other sub-systems.  My physics and AI managers are going to need to access subsets of the world data to do things like calculate navigation meshes and collision hulls based on a dynamic worldspace, as the players will be creating (and destroying) walls, buildings, nests, resources, and so on.  Moving data management and world change responses into a singular "world manager" that can handle manipulation and access to a geometry and materials heirarchy will keep that organized and clean behind some simple interface calls.

So aside from the (I promised myself, final) design overhaul, I've been off in right-brain land honing my art chops before I start cranking out assets I actually want to use in the game.  I'm pleased with the practice and progress, and should have some character sheets of the main characters (in their designer-blessed officialdome) available shortly, with environment shots to follow.  Everybody loves some good concept art.

Monday, October 8, 2012

Running Silent

I wanted to throw something up here so the blog didn't look like it had gone dead, but there's nothing really new to show for the work that's gone into the project recently.

An interesting part of programming is how much you can do for no visible difference.  My focus has recently been on improving the resource infrastructure of the code, specifically creating a generic resource package class that can hold serializable data for the engine to convert at run-time into the actual 3d assets for the game (models, props, all that fun stuff).  This also required a quick thrown-together packaging tool to be built.

Initially, (as I've mentioned using Assimp.NET before) I was loading from the COLLADA model format because it had a handy exporter from Blender and is known for playing nice between most graphics tools and pipelines.  Part of this is because it's designed to store as much information as possible about the 3d scene.  My engine only needs a handful of data types from the .dae file (mostly vertex information, a material string, and skeleton/animation keyframes).  That meant everything else that Assimp loaded from the file (and the resulting Scene object in memory during the load process) was superfluous wasted effort during runtime.  The process (while the game was running, mind you) went

  • Load COLLADA file from disk
  • Parse COLLADA file into Assimp's Scene object
  • Hand completed Scene object to content manager
  • Have content manager pick apart Scene object and convert data types into SharpDX-specific formats
  • Build new Mesh object (specific to my library) from the few pieces content manager pulled out of the Scene
  • Delete Scene and Importer objects
  • Return the Mesh
Deciding this was all better done offline, I moved all that functionality into a new Resource Packager tool.  This is one reason I love C#: you can throw together a Windows tool in an afternoon with WinForms.  Yes, I know WPF is the new, Win8-friendly answer, but since this is just for in-house work, I'm fine with drag-n'-drop winforms for now.

Now the tool does all the conversion (of multiple COLLADA files, as many as I want really) to in-memory Mesh objects, and then packs those objects into a tight, serializable format that only stores specifically what I need to re-create the object at runtime.  That data (in memory) is then written out to a proprietary resource pack file format (on disk).  This all means smaller resource files, fewer files to manage on disk(since the resource pack tracks everything internally, I just have to know which resource file holds which models), and faster loading of resources on the fly.

The new resource flow?
  • At level load-time, read list of required resource packs from level file
  • Pass list to resource manager, loads any not currently ready from disk and closes handles to those no longer needed
  • Call "ResourceManager.Load(modelX)" for resource named modelX at any point I need to create a mesh object (again, mostly at initial level load).
This lets me group assets thematically (i.e. "props for desert level" vs "props for snowy level") and future plans include adding other asset types to the packaging process (audio, textures, scripts, etc).

As a bonus, I tasked the Resource Manager with smart object loading: it tracks which meshes have been deserialized into memory, and if a requested object is already built, it just copies the existing object instead of building a brand new one.

The funny part, appropriate to the post title, is that my metric for completion is that there is no visible difference in the game with the new resource system.  It makes my code simpler and more data-driven, but if someone were to run the previous build alongside the new enhanced-resource-manager version, it just looks like I sat on my hands for two weeks.

Other than that, I've been making tweaks to the level editor, camera system, and laying some groundwork for AI and Physics.  Thinking I'll need some kind of marshaller between data the physics library can play with, and data the AI routines can use for Navigational-Mesh generation.

Oh, and I've been exploring character designs and more bug concepts to nail down the look of the heroes and their new unfriendly neighbors.  Getting close, I like what I'm homing in on, so I should have more of that available to show soon.

Man, these video games are a lot of work.  Who knew? :)

Sunday, September 16, 2012

In search of an enemy

Having run into a couple code hiccups in a row with some of my final missing pieces of graphics rendering (I'll get you sooner or later, skybox!) I took a little break from left-brain land to try and nail down the visual style of my "bugs".

The player is going to control a character on a future distant planet in a sort of techno-gold-rush after the discovery of some very useful elements.  Almost immediately (as the central conflict of gameplay will rely on it) player(s) will discover that certain properties of this element make it very attractive to the insect-like species that already lives on this new frontier, especially when put through the stressful mining process that converts it into portable material.

Short version: mining this stuff will bring bugs down on the player.  The more precious the resource, the stronger the draw on local bug swarms.

At any rate, I want the species to have some cohesive style elements that help sell the fact they're all from the same origin species and can be controlled by a singular hive "overmind" (lets just step in as many sci-fi tropes and starcraft references as we can, I haven't come up with fun IP-unique names for this stuff yet).

I also want them to be fun to hate.  Hence, bugs.  Barring collections of entomologists and the odd monk, I think almost everyone can agree bugs are better off squished.  At least when they're human-sized and packing ranged chemical weaponry.

Finally hit on something I'm happy with (yay for lunch breaks): this is the first pass at the standard "soldier" bug.  (The head in my logo is an older concept for the same critter).  More specialized variants will round out the swarms, but there needed to be a grunt that could serve as a mirror unit to players: someone standing behind alien cover on the other side of a battle line aiming alien weapons back at the human element.

This'll definitely require normals maps, I'm not fielding dozens of 250k-poly grunts...
I'll have to clean him up and draw the full front/side/detail orthographic view before I model 'im.  Drawing concept art for yourself is kind of odd: there's still a few rounds of "nah, I like this part, but the rest needs to be better" but all 'parties' are already working from the same singular vision.  Jury's out on whether or not that's a good thing.

Just remember: if it has 6 eyes, you should probably shoot it.

Friday, September 7, 2012

New and Improved Editor

I've banged my XNA-based level editor into shape with the new SharpDX-based graphics engine, and now have prop manipulation implemented!

click to enlarge
On the bottom there are two differently scaled copies of the same rock prop, and the (incredibly low-detail) rock bridge is another stand-in prop.  (It will still be in later, I just exported it from Blender as soon as it had a basic shape and texture coordinates.  I'm continuing to refiine it and create a proper texture for the mesh)  You can see the debug views of the deferred rendering targets across the top.  A rough cut of my ink-style outline shader is in use as well, though it could use some blur passes and tweaks to really be more what I was intending.

I've wanted to get this functionality in place ever since I first watched someone demoing the Hero Engine level editor a few years ago and realized how varied you can make a scene just by rotating and scaling a handful of props.

Someday soon I'll get the rest of my editor buttons in place :)

Sunday, April 15, 2012

Heightmaps!

Just got heightmaps working, thought I'd post up the first-ever in-development screenshot of Hazard Pay:
And yes, that IS a photoshop brush artifact in the source bitmap.  That's how you know it's genuinely unfinished.  Totally on purpose.  Yup.

Saturday, April 14, 2012

Cameras, shaders, and input oh my?

Lots of work being done on the rendering portion of the game's engine (which is really just an engine insomuch as it sits in a separate project that is referenced by my actual game project, so it's content-unaware).  Almost done coding up the camera so that it swaps in before- and after-effects dynamically.  The framework for deferred rendering is already in place, which means lots of fun shader programming down the line.

I dove in to the graphics pretty early as the sooner I could get visual feedback, the more enjoyable the rest of the coding could be, and the better momentum I could keep on the project.

Elsewise the engine just has stubbed-out managers for other systems (AI, physics, world resource content) and an input handler so I could use controls to roam around the gamespace.

Currently working on: implementing a heightmap for level terrain with 4-texture blending.  Once I get that done, I'll be happy to start throwing in screenshots, but right now the entire project just renders a  spaceship from an open-source shader demo.

Monday, April 9, 2012

'ello world

Thought I should jot this down somewhere, my first post seems a good enough place.

Hazard Pay started life in March of 2012, with the vision of providing a fun first/third person combat game with base-building and resource-gathering mechanics thrown in amongst hostile alien bugs, pve/pvp multiplayer matches, and a single-player (or co-op) storyline campaign.

Inspirations reach as far back as Dune II and Battlezone, through Giants: Citizen Kabuto, Starship Troopers, Borderlands, and Natural Selection.

This blog will be a place to track development and for me to store thoughts, images, and other errata.

I'm Brandon, the designer, programmer, concept artist, modeler, and animator for Hazard Pay. I work on this in my spare time, when I'm not busy completing my CS degree or working as a SysAdmin. I look forward to sharing more with you as development continues.