[Bf-committers] BGE Proposal: "Character" physics object type
Denis Washington
denisw at online.de
Tue Aug 23 10:33:08 CEST 2011
Hello,
This is the first time I am trying to get in touch with the Blender
developer community, so please forgive me if this is the wrong
communication channel for the following proposal. Also, let me tell you
that I really love Blender, and would like to thank everyone who has
contributed to it and made it what it is! You're my heroes. :)
I recently investigated the Blender Game Engine for a hobby game project
- a 2.5D platformer - and as a first exercise, I tried to get basic
player character movement going. I expected this to be fairly easy to
do, but I found out that it is actually pretty difficult to get right.
The reason is that none of the currently available physics object types
in the game engine are really appropriate for this task. "Dynamic" is
the closest match, but leads to several weird problems due to doing more
sophisticated physics simulation than is actually needed - you see
effects such as the player character sliding a bit after releasing a
movement key, or bouncing when hitting the ground after jump or walking
into walls. Playing around with physics and material settings (mass,
friction etc.) reduce these issues, but don't completely remove them; it
all still feels unsatisfactory and not very professional.
The point is that for this use case, there are actually no "real"
physics needed at all; applying gravity and doing collision detection
would actually be enough, and much more desirable as it provides the
precision that the sophisticated physics types lack. In addition, such
an implementation would be much more efficient.
Unfortunately, such a solution would currently have to be implemented
manually by writing a Python script which applies gravity and handles
collisions manually. This is a shame, because I believe that the need
for such behavior is very, very common - almost every first-person
shooter and platform game uses such reduced physics for player
characters and enemies, for instance - and should not have to be
implemented by every game developer needing it individually. Also, the
current situation is frustrating for newcomers: about the first thing
almost any beginner will try to do is to make some kind of object move
like in an FPS / jump'n'run game, and being confronted with weird
bouncing and sliding behavior in these first steps is not exactly
encouraging.
Therefore, I propose the addition of a new physics object type named
"Character" which applies the described basic means of physics to the
object. This would provide BGE users with a simple way to get player
character movement working as expected. Its implementation could use
Bullet's "kinematic character controller" [1], which is exactly meant
for this use case and has useful parameters such as step height (so that
the character can walk over small steps, such as stairs, automatically).
What do you think?
Regards,
Denis
[1]
http://bulletphysics.com/Bullet/BulletFull/classbtKinematicCharacterController.html
More information about the Bf-committers
mailing list