July 16, 2012

Free Movement Update

One of my goals for my main title was to include a method for advanced movements you don't normally see in an fps. I'm finally finished with the major work and now only have tweaking left to do freeing me up for my next major overhaul of a key feature, really the selling point. First though I'll cover some detail of the movement.

The basic idea is to include natural feeling magnetism on edges of doors and objects of a height in which you might logically seek shelter behind in a firefight. This was accomplished fairly quickly for a basic result but getting it into a natural state that's easy to automatically get into and out of was the tricky part. Then there's manipulation of that state for using grenades or abilities, items, weapons, etc which was vaguely similar in nature. Then I built on it for grabbing hold of ledges and moving along them for example jumping up to a window and pulling yourself up or grabbing the edge of a building as you're falling then moving over to an escape ladder, as well as jumping between these ledges. Basically bringing a little free roaming to fps. Then I went from thinking free roaming to free running and started working on the system for running up walls to get to ledges, jumping off a wall while running up it bouncing between to close walls, etc. I also for little kicks threw in the ability to do standing and crouched running which wasn't a bad add on if I do say so myself. The difficult part of adding on to that though was sliding and kicks while sliding and rolling then making it easy instead of overly complicated. In the end most of it is automated and based on timing of button presses. For example, using an xbox controller, tapping A jumps while holding it runs vs holding it while moving sideways for a sideways roll. Once you begin a run you can stop holding A and you will continue to run as long as you hold the left stick in the direction you want to run. While running you can click the left thumb stick to go between standing and crouching or click and hold to go into a slide. While running you can also tap or hold A to jump or roll forward. While sliding if you come into contact with another player you'll just automatically kick seeing as it just works out better that way than leaving it up to the player. While hanging from a ledge you can pull yourself up slightly or completely to peek over the edge or climb into it, useful for surveying a room before infiltrating. If you run into a wall you'll automatically run up it if you tap A while running against a wall you'll jump off it or if you're already in air from another jump and you're near a wall you'll kick off it. If you run up a wall and come within arms reach of a ledge you'll automatically grab hold of it. All of these are conditional on the fact that you're not currently taking damage and if you are then you'll instead automatically take cover against the wall. Which you would also do if you walked into it. As you see there were a lot of details to work over, and you'll likely hardly ever notice any of them in the final game...

The next overhaul is to the destructible objects. Right now I've been relying heavily on instances of fractured mesh objects to create my buildings and make them destructible. However it's extremely resource intensive and generally not conducive to what I had in mind for the game. Thus I'm now working heavily on creating a dynamically fracturing rule based event system to destroy objects. More simply having a solid object break apart as it's supposed to based on how it's supposed to determined by what two things are impacting at a time instead of breaking them apart in advance and having them just sit together loosely until they're pushed apart which is basically what the current system is. The new system will be implemented probably as just code making it infinitely easier and faster to work with. That having been said I must get back to work these things don't just make themselves... or do they? More details on the destruction system plans in my next post.

1 comment: