What next for Square Off?

Now that DBP is done and dusted, we have to start deciding what features will make it into the final game. Obviously there’s a rather large wish list but at the same time we’re all really keen to have our first game released. We’re hoping to get it out by November and we want to have at least 9 levels (currently we have 4). I’ll leave that decision up to Adam and Scott as they’re the ones who’ll have to build them, and I believe quite a bit of blood, sweat and tears goes into each one!.

Level 1 with collision diagnostics

Level 1 with collision diagnostics

Other wanted/needed features that require coding efforts include:

  • High Score table
  • Progress saving and loading
  • Totally awesome boss fights (at least 3)
  • Survival Mode with ever increasing waves of aliens
  • The ability to revive your fallen comrades in coop mode
  • Some RPG style elements where you progressively build your character’s weapons and abilities

Back to Square One

Don’t worry, we’re not dead. The blog posts dried up because our current project took a major detour. We decided to put Throng on hold because we couldn’t possibly do it justice in the time remaining for Dream Build Play. So, two months before submission deadline we made the radical decision to change tack completely. Enter project Square One.

Part of the reason for this change was that we read an excellent article called Subtractive Game Design in Game Developer Magazine by David Sirlin. Scott suggested that we don’t really need gravity, and in fact it makes so many things easier to accomplish. We also decided to strip out all graphics to force us to concentrate on gameplay and game design first. It turned out to be a good decision because we now have a fun multiplayer game that is more realistic for us to achieve in the tight timeframe.

Square One

Square One

Level Editor

Throng Level Editor

Throng Level Editor

Well it’s actually the Character Animation editor, but it will soon be the Animation-and-Level editor. Lets just call it ThrongEdit for now. Oh yeah, welcome aboard Adam.

New Kid on the Block

Hi all, Aranda and Scott were kind enough to let me help out on their cool XNA game! Just wanted to introduce myself as part of the team on the blog. Ill be mainly helping out with the environment assets, and anything else Scott doesnt want to do :). Have a few props and another character done for the game, thought Id share.

Bombs and a Pile-o-Cash, what more do you need?

Bombs and a Pile-o-Cash, what more do you need?

Floating Platforms

I love it when code can be reused in ways you didn’t think of when writing it. These platforms are moving up and down controlled by an animation. I knew I’d need that ping pong looping mode for something!

damn those necromancers

damn those necromancers

For good measure, here’s a sample of the XML that defines the moving platform:

<XnaContent xmlns:Generic="System.Collections.Generic">
  <Asset Type="Generic:List[Throng.MovingPlatformSettings]">
    <Item>
      <Name>platform1</Name>
      <ModelName>platform1</ModelName>
      <Speed>1.5</Speed>
      <PathOffset>0</PathOffset>
      <Moving>true</Moving>
      <PingPong>true</PingPong>
      <Vertices>-1 -0.25 -1 0.25 1 0.25 1 -0.25</Vertices>
      <Path>-2 10 -2 2</Path>
    </Item>
  </Asset>
</XnaContent>

Old Stuff: Part 3/3

The following concept pictures were done earlier in the year. The aim was to come up with a quick way of making different backgrounds and still look good. While none of this will be used, I learnt that simple colours and shapes can be very effective if used in the right way.

Yellow Halloween

Yellow Halloween

Blue Snow

Blue Snow

Red Hell

Red Hell

Green Swamp

Green Swamp

Throng tech info

Language

Throng is written in C# with XNA Game Studio. This was the only choice as we intend to release the game for XBox Live Community Games. Whilst this may seem limiting, C# and XNA truly enable rapid game development. Sometimes progress on the game seems to be rather slow, but it’s rapid considering the amount of time I can put into it as a hobby.

Physics

Currently, the only confirmed external library is the Farseer physics engine and I’m extremely happy with it. I initially tried writing my own 2D physics system which was used in Balls Unleashed. It worked reasonably well and I learned a lot, but eventually I realised that I was reinventing the wheel and wasting precious time that could be better spent on gameplay features. Farseer has opened up the possibilities of the game with support for polygons, joints and springs. I can’t say enough good things about the Farseer team.

Graphics

At the moment, I’m using the stock standard XNA BasicEffect to draw the 2.5D models and the 3D sprites. This may well change if we get time and deem it worth the effort. Thanks to Scott’s cool 2D and 3D art, I think we may be able to get away without a lot of special effects. They are always a Nice To Have, but I think I’ll concentrate my coding time on the essential gameplay features before worrying about the polish.

Pipeline – X2Model

One piece of in-house code I’m quite proud of is the way we load models. Some of you might be surprised to hear that XNA doesn’t include any API for directly loading models at runtime. If you have Game Studio installed, you can compile X and FBX files at runtime to be loaded and rendered with the Model class. If you don’t want to install Visual Studio and Game Studio, currently the only option is write your own model loading and drawing code. I managed to craftily avoid this problem by using SlimDX to parse and load the X files. That’s the simple bit. Wanting to reuse the built in XNA Model class, I used reflection to create and populate it with the vertex, index and material information. The benefit is that the artist(s) on the project won’t need to install VS and GS and even if they had installed them, they wouldn’t need to recompile the models each time they altered them. The drawback is that any custom content pipeline features are not available. I’m intending to release X2Model on codeplex once I get the time.

AI

This is my current task and the path finding is based on the A* algorithm. Once it’s closer to complete, I’ll post more info about it.

Before I sign off, here’s a quick screeny. The Necromancer on the top right is fleeing along an AI path.

watch out for the butcher

watch out for the butcher