cxong / cdogs-sdl

Classic overhead run-and-gun game
https://cxong.github.io/cdogs-sdl/
GNU General Public License v2.0
901 stars 115 forks source link

Shields #31

Open cxong opened 11 years ago

cxong commented 11 years ago

Shield as a weapon. Could be paired with a weak weapon such as a pistol.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

cxong commented 10 years ago

This is an interesting question as the shield might be a different entity type.

Recall that the game has various entity types with respect to collision: mobile objects, objects, actors and tiles (walls, doors). Mobile objects and actors collide with everything else, but the collisions have different behaviour depending on type. Mobile objects do not collide with each other, but actors do.

For shields, they have to collide with mobile objects, but probably not anything else. There is no current entity type that satisfies this, so shields must be in its own type. It could be a special type of object too, but note that object has some restrictions such as inability to move.

This raises the question of whether there could be other weapons that could fall under this category - some deflector bullets perhaps?

Then there's the question of exactly how to implement the shield entity. If it were a forcefield then we can have a static entity that is constantly created and destroyed, giving the illusion of moving with the player. Will this work for traditional-looking shields, or will it have to be a custom entity type that moves with the player?

cxong commented 10 years ago

There's another option, for more of a "force field" feel. In Little Fighter, one of the characters has the ability to create a force field that reflects all energy shots. This is easier to implement, although it has custom collision logic - don't collide with teammates, collide (and hit) enemies, and reflect mobile objects (also changing its owner!)

cxong commented 6 years ago

Need to implement #472 first