Saturday, December 6, 2014

Technical Design - Document

This my preliminary break down of the technical features of the game. I'm new to using Unity, and my game programming experience is limited to a little bit of AS3, so I will need to research all of these features and workflows to see if they're going to work for me. There might already be simple ways of doing what I want to do, or I might find major roadblocks; totally beyond my ability. I'll adjust this document as necessary, right now it seems do-able given time.

I'll also document all of the sources I use for my research. Comment if you know any good ones!

Slow Blade – Preliminary Technical Design

Basic Game Systems

2D Game 

Art created in Photoshop and animated with the Spriter animation tool (a bone animation tool similar to Spine).

Physics-based Platforming

Use Unity's built in physics system for movement. I've done a little bit of research into examples of how to do this, and it's pretty straight forward.

Needs:
  • Basic walking, running and jumping.
  • Figure out how to do wall jumping.
  • Figure out how to control fall speed. 
  • Figure out how to throw and catch the Blade,
  • Figure out how to make the Blade bounce indefinitely of of walls with correct rebounding.
  • I may not be able to use  the built in physics for the blade itself, since it needs to by unaffected by gravity and bounce at consistent angles. 
  • Right now I'm planing to restrict the throw angles to Horizontal, Vertical, and 45ยบ, because I'm assuming it will make things easier, but that may not prove to be the case.

Dynamic Camera 

 Camera will automatically pull out/zoom in to keep the player and the Blade on screen at the same time. Hopefully there's good examples out there of how to do this. I only have a vague notion of how I would try to do it.
Plan B: Just have the camera automatically zoom out to a particular level whenever the Slow Blade is thrown.

Plan C: Just be fully zoomed out all the time.

Level Designs


Each level designs will be a specially designed puzzle. I'll start with simple proof of concept levels to demonstrate core mechanics. 
I'll use a tile based system to build the levels. This will have the added benefit of making measuring easier, to get the timing of the Slow Blade.

Needs:

  • Create a set of appropriate prefab tiles. 
  • Investigate ways of easily working with tile-based systems in Unity. Might benefit from external tools like TuDee: http://www.diorgo.com/v1/?p=366
  • Animated prefabs of all the hazards.

I need to find out how to make prefabs with the correct properties already assigned to the appropriate surfaces and triggers. Once I figure out what those properties and triggers should be of course.

Character Animation

I want to make a fairly elaborate animation system so that I can challenge my self using Unity's Mecanim.

Needs:

-I've identified the the following animations that I want so far:
  • Idle
  • Walk
  • Run
  • Jump
  • Throw - Horizontal, Up, Down, 45° up and down, (Could be complicated if player is able to throw while jumping)
  • Catch -probably just one will work
  • Fall
  • Fast Fall
  • Wall slide
  • Wall Jump
  • Land
  • Die
-I need to study the workflow for importing animation from Spriter to Unity.

-I need to investigate how to incorporate the Slow Blade itself into these animations dynamically. I'm hoping there's an easy way to hide or swap the asset in the animation, if I import it with the Spriter2Unity package.

-I also want to try using ray casting to give the player an animation that anticipates landing on the ground. This is totally unnecessary but I think it would be cool, and hopefully it won't be hard to figure out.

Time Slowing Mechanic

No idea how I'm going to do this. I'm hoping there some fairly simple built in. I'm sure this mechanic had been done a lot.

Plan B: Make slowed down versions of all the moving elements and fake it.

Replay Mode

Ideally after each level, there would be a feature that replays what you did, but at full speed so you can see how cool you looked to an outsider. Whether this can be done is dependent on how I do the time-slowing in the first place.

No comments:

Post a Comment