Recreating Black and White Movement Mechanics


I wanted to recreate the movement mechanics of the classic game Black and White, seeing as it would be a great start into creating a pawn that doesn’t fit into any preset that comes with the engine.
Mind you, I got unreal engine just 2 days ago, but the blueprints system really got me all fired up.

So far, I’ve tried to recreate the dragging mechanics. In Black and white, you move through the world by clicking and dragging on points in the world. I’ve successfully recreated that mechanic with some vector and trace voodoo, and I must say I am really surprised how easily and quickly it was possible to create this!

Next up is the rotation, so stay tuned!

Im working on the same sort of system at the moment on a proof of concept, I’ll keep an eye on how your doing. Thanks for sharing

I’ve added rotation. It gave me a little headache due to some coordinates being global, and some being relative to the actor, but nothing a little more vector foo couldn’t solve.

And here it is:

What’s missing is an endstop at the top (resulting in very undesired behaviour) and ground collision check at the bottom. Afterall, we don’t want the camera to go underground, do we?

Wow, nice! I do visualizations of cities and buildings and I bet this would be a great navigation system. Are you doing this with blueprints or C++?

Thank you! I exclusively use blueprints so far. And indeed, I believe that this is a very intuitive and efficient was to navigate around a scene.

Also, I present to you: rotation, this time almost without any flaws! I noticed some weird behaviour with my old implementation. Most prominently, when pitching around a point that isn’t in the horizontal center of the screen, you’ll glide sideways. This effect becomes really extreme towards the edges of the screen. So I had to do some vector magic and I found the point that is parallel to the anchor, but on the centerline, and use it as the anchor for the pitch rotation.

Nice. The rotation seems a little strange still. Maybe keep the ball locked to the rotation point? It would be nice for the cursor to stay there too, but I don’t think that’s possible.

Well, the ball will be replaced with an actual hand, and the cursor will be completely invisible. At that point I will make it so that the hand remains on the anchor, where it will grab the ground.

Perfect! Then on to gestures! Then teaching your creature to **** in the enemies food supply! :stuck_out_tongue:

There we go, I’ve added zooming during rotation, and the “hand” staying on the rotation anchor.