Manikin RPG - a graphically deprived gameplay project

Hi All,

This thread is for my personal side project, Manikin, an action-RPG. It is a very early WIP at the moment, but I’ll keep plugging away and we’ll see where it goes. I have no particular unique story, theme, or gameplay in mind for this, I’ve just always wanted to make an RPG and I like playing with Unreal!

My main plan is to forgo any serious graphics for the foreseeable future, and focus on blueprinting gameplay mechanics. It seems to me that without graphics, RPGs are just some numbers moving around, which shouldn’t be terribly difficult. (Ha ha.) My other, more vague main plan is to keep things more physics-based than they are in most RPGs that I’ve seen.

I’m very new to Unreal (about three weeks of fiddling at this date) so if you see me doing something stupid or have some critiques or ideas, don’t hesitate to let me know!

Manikin RPG Current Features:

Basic character movement:
– Mouse camera control and character rotation
– WASD movement relative to camera angle.
– Sprinting with modifier key (current jog speed about 6 mi/hr, sprint at 13 mi/hr.)
– Jump (very WIP at the moment)
– Sprinting and Jumping use stamina, but aren’t yet made to require it :slight_smile:
Basic HUD - stamina and health bars (both regenerate), and a reticle dot.
“Look-At” UI - shows name and stats of items under your reticle dot. Now also shows if either hand is in range to pick up the object.
A basic pause menu - just resume, quit, control list, and an empty options menu at the moment.
A basic notification UI - messages appear in a list and fade and disappear after a few seconds.
The beginning of an inventory system - [unused at the moment] a basic UI, picking up and dropping items, weight and value totals, item selection.
Physics impact damage
A simple upper body “skeleton” for your character, held together with physics constraints.
Physically-controlled arms and hands. - Each hand can be swung forward and backward independently along a spline path.
Picking up and dropping objects from either hand - I discovered by accident that you can also grab things with both hand at once, but it doesn’t do you much good (yet).
An assortment of different objects and weapons that you can pick up and throw around, and a few things that you can destroy.

Here’s the latest project files if anyone wants to check it out: https://www.dropbox.com/s/my6ij1qxyw02ewb/ManikinRPG%20Nov-9-15.zip?dl=0

Here’s the first screenshot:

Currently planned to do soon:

See the latest post.

Update! I got a fair amount done in the last day and a bit.

Recently Completed features:

Removed transparent cube from player and just locked X and Y Rotation (the cube was to stop you from falling over constantly).
Set your character override mass to 70kg and scaled movement forces to fit.
Added other “hand”.
Added a silly shield and spear to your hands.
Added a simple Notification UI (and a library function to make them). There’s still some issue with my fading, depending on the tick rate they may disappear before they’re fully faded.
Put physics damage stuff into a library function
Item parent class - got rid of component and set item attributes to a root variable.
Fixed sprint stamina so it only drains when you’re moving, factored by axis values.
Fixed look-at panel layout and durability binding.
Fixed a bug with character movement - I just set physics yaw velocity to zero in the camera yaw function. Before you kept spinning even though you rotated your character with the mouse.
Identified another issue with character movement - my current speed limiter doesn’t let you move if external forces cause you to move faster than your max speed. It also doesn’t take into account the direction of movement.
Fixed issue with UI not taking mouse input until clicked on. It turns out the “set input mode” nodes were what I needed, but when I tried thew before I didn’t set the player controller reference. I was calling them from the controller and assumed the pin would default to self, but it doesn’t.
Made a very basic pause menu setup. There’s still some conflict with the inventory menu, but I’ll fix that later.

Features To Do Next:

Grabbing objects with hands.
Rework the inventory system.
Fix movement limiter to take into account movement direction.
Make movement relative to floor plane.
Make pause menu and options menu toggle-able.
Fix conflict between pause menu and inventory - check if other menus are open before setting input mode back to game only.

Project link updated.

Whew, I can’t believe it’s been four days already. Some things I thought would be pretty easy turned out to be really annoying.

Recently Completed Features:

After much ado with vector math, fixed the character movement limiter so it works properly no matter what speed and direction you’re moving in. Dot products are cool, but only if the second vector is a unit vector! Sheesh. Also fixed the movement code so giving input on both axes doesn’t let you apply twice as much force, and so you actually do sprint at 13 mph, not 19 (oops).

I veered off my “no-graphics” plan a tiny bit. After checking out a few other WIP Unreal projects, I got annoyed that mine still had the default sky and lighting, so I messed around with some fog and stuff for a bit.

Some time after that I by mistake set the view mode to wireframe while I was testing it, and boy did it run smooth. The physics simulation runs so much nicer at 100 fps rather than 40-ish! So I set up hotkeys to switch between wireframe, unlit, and lit view modes. Also being able to see through your character in wireframe is pretty nice.

Added a little panel in the pause menu to show all the controls.
Made the pause menu toggle with the key press.
Fixed widget Z Order so the pause menu is on top.
Fixed some issues with the damage function, fixed damage to your character so it actually happens, and made the “punching cubes” weaker so you can actually damage them again.

After several hours of fighting with constraints (and the nonexistent documentation thereof) I got things working so you can pick up and drop things from your hand! Woo! The constraint force and pickup range are pretty ridiculous right now, and it only uses your right hand, but I will work on fixing that next. Also this means my inventory system is effectively disabled for now. Redoing that is a much bigger task that I’ll tackle after the hand/object manipulation stuff is worked out.

Features To Do Next:

Figure out a control system to pick up and drop things from either hand.
Rework the hand-body constraints and forces so they’re more powerful but don’t mess up your movement so much, and probably make them swing around your body rather than just thrusting forward and back (this will be fiddly).

One and a quarter steps forward, one step back! The game is at the same state as it was last update, only different, and a bit better. The last ten days were rather frustrating and I therefore worked on it a bit less. I spent a bunch of time fighting with physics constraints and playing with PhAT. PhAT is quite fun, but I decided not to use it since it’s not exposed to blueprints, it can’t do my current work-around of constraining the characters rotation to keep him upright, and it doesn’t show you the location and rotation vectors of each constraint, so if you want to duplicate settings or do things precisely you’re out of luck. Anyway, the progress breakdown:

Recently Completed Features:

Tweaked pause menu so the text is visible against light backgrounds.
Added camera zoom with scroll wheel.
Modeled new character mesh pieces.
Set up constraints to keep new body parts together and set rough joint limits.
Redid hand swinging with an angular drive constraint so it doesn’t push the whole character around and swings in an arc rather than straight forward and back.
Moved grabbing functions over to the character blueprint now that the hands aren’t separate blueprints.
Set up a distance limit on grabbing objects, and some notifications to test things.

Features To Do Next:

Set up grabbing and dropping for either hand.
Do some kind of better grab constraint that works on smaller objects and isn’t so springy.

I would love to see some gameplay videos ^^

Haha, thanks! But I have to have some actual gameplay to make videos of! It really can’t be called a game yet. You can move around, swing your arms, and pick up objects, that’s it. :slight_smile: Maybe in the next week or two, once I get the grabbing mechanics sorted out, I’ll add some weapons and simple enemies that you can hunt down.

If you’re really curious and have UE4 installed, the zipped project is only 4 MB (there’s a link in the first post).

Whew, three weeks! All that time I’ve been trying to find a better way to handle the arm swinging and grabbing. It seems like I’ve finally got something decent. Mostly, haha. I have the arm disconnected from the hand at the moment, since it tends to spaz out, but I don’t think that will be too hard to fix (famous last words), and it’s not terribly important anyway. Here’s a little gif of what I’ve accomplished in the last three weeks (sorry for the low quality). :stuck_out_tongue: It doesn’t look like much, but all my previous attempts at weapon swinging either dragged around dismally, sprung around like a yo-yo, or jittered and exploded.


For the swinging, I’m applying a spring force to the hand toward a point on a spline. The input axis value determines what distance along the spline to swing toward (start, end, or middle). Then I interpolate toward that distance and get the world position at that distance along the spline, giving me the target to push the hand towards (the green box in the gif). And of course add a bunch of damping so it doesn’t spring around too much.
To keep the hand upright even when long pointy things are attached to it I’m applying spring forces on it, offset a meter on it’s up and forward axes, (the red and black dots) toward their desired target points (the ends of the red and black lines, respectively). Those forces and their damping are scaled up with the weight of the carried object. (carefully tweaked to be between jittery and too weak) Then the clincher is to have a weapon that is realistically weighted and balanced. A heavy club that gets thicker toward the end will droop and drag around a lot, but a nice 3-pound sword balanced close to the guard swings around quite nicely (as shown in the gif).

Features To Do Next:

Set up the arm swinging for the left hand too.
Clamp the hand forces and somehow set things up so heavy items can be dragged around in a sensible way.
If I’m feeling energetic, try to get the arm set up so it doesn’t spaz out and interfere with the hand swinging.

  • this would also keep the hand from stretching away from the body and hopefully help solve some of the excessive swinging with less ideal weapons.
    Make something fun to hit! - maybe some destructible pillars or something.

I updated the first post with the project zip, but in case anyone looks at it, keep in mind it’s very messy at the moment, there’s chunks of extra nodes lying around and stuff. I’ll hopefully have a more clean update in a few days.

Recent Progress:

• Put hand swinging and rotation into functions with convenient inputs for most of the different factors, and adapted them to work for either hand.
• Hooked up movement functions for left hand.
• Set up grabbing and dropping for both hands. Whichever hand is closer to the object picks it up, unless it’s already holding something.
Dropping prioritizes to the right hand for now, only dropping from the left hand if the right is empty. I need to think of a convenient way to choose which hand to drop from.
• Added icons to the LookAt interface to show which hand(s) are within pickup range of the object.
• Some clean up of the character blueprint and some other old stuff still lying around.
• Added some destructible pillars to play with.
• Added a simple “shield” item and a heavier sword to experiment with.

Features To Do Next:

Hmm, I’m not sure. At this point, besides maybe adding more menu options, there’s nothing easy on my to-do list that doesn’t require other features. The bigger things that I have on my mind to tackle next, in no particular order, are:

• Build new full-body character mesh, rig it, and start making animations.
• (related to the above, but not necessarily requiring it) Redo movement system, add other movements: Crouching and proper jumping. Also think about: lying prone and supine, rolling, dashing, sliding.
• Item sheathing on character. Also start brainstorming about the UI for that.
• Improve weapon swing. Try making curve straighter? Try pitching it with the camera? Build a better system to change and make new splines.
• Improve grabbing. Add ability to grab any surface, and find a way to nicely snap items to correct grab position.
• Add some basic enemies — randomly scaled and probably destructible.
• (once enemies are added) Start adding RPG stuff: experience, strength and speed advancement, weapon degradation and variation.

I need to focus on my freelance work for a bit, so there won’t be any updates for the next week or two.

Hi all. I am officially setting aside this project for the indefinite future. At my current skill level it has too steep a frustration-to-reward curve. I will come back to it in some form when I have more experience with UE4 and game making in general.

In the mean time, I haven’t just been slacking off! I’ve gone back to work on a little space shooter that I started previously and it’s coming along pretty well. It’s already a playable prototype, though still visually sub-par and not without bugs. I’ve started a new thread for that here: https://forums.unrealengine.com/showthread.php?93529-As-yet-untitled-space-shooter