Jump to content

Ultimate Action Game Controller ( UAGC ) - WorkLogs




Ultimate Action Game Controller ( UAGC ) - One game controller for all situations. 
Ranged, melee, hand to hand, thrown and magic combat game controller.

With UAGC, the developer can select from First-person, Third-Person, Top-Down and Point & Click game controller setups.
Each mode features it's own unique style of gameplay made just for that particular gaming situation.  The component is designed
with ease-of-use in mind,  just attach the component to your game player inside the editor and configure the options as you see fit.

Slated release version is 1.0 ( current state is alpha ).
I will keep a running log on updates and development notes within this blog.

  • Concept born
  • Started 3rd person mode
  • Added Always Run toggle
  • Added Numlock toggle run on/off
  • Added console log, for messages being sent from controller to the game screen.
  • Started State-Machine decision logic for later adaption. This will allow such things as fishing, climbing, swimming etc to be easily added to the controllers.
  • Added a generic Skeleton with all the animations the controller will use, thus allowing the developer to bring in a Mixamo rigged character and simply retarget the animations to their own custom character.
  • Added jump, double jump ( toggle ) and even triple Jump ( toggle, for action arcade style gaming ) .
  • Added animations for double jump ( mid air ) and triple jump ( extreme in-air jump animation ).
  • Added toggle for fall damage ( on or off )
  • Added animation for fall or jump - landing at high altitudes.

*This product is an addon and requires Ultra Engine*

Early adopter video.

Back in the saddle after a little delay with squaring away UltraEngine ( thanks Josh for the help ).

This update features a new Bolt-On component: ROPES !

Ropes are another means of climbing or gaining height on your play maps. The setup process could not be any easier.  
You simple create a Empty game object on your play map and Position it where you want a rope to hang. Then attach the uagc:Rope
component to it and define your height and segments!

The Controller builds the rope meshes on map load and the player controller interacts with any rope module it comes into contact
with. How's that for easy setup? :)


Features and Info on ropes:

  • Ropes can be of any size, length or thickness
  • Physics based rope segments
  • Player can enter ropes from any location 
  • Player can exit ropes from any location.
  • Player can exit rope and enter new ropes or other objects on the map.
  • Definable rope speed for climbing and descending.
  • New animation sequences added for rope climbing bringing the total to 63 animation seqs.
  • AI enemy modules mapped out for rope climbing, yes those pesky mobs will be able to traverse by rope. 
  • Rope strength and weakness settings, give the player something to worry about! weak rope!
  • Rope sounds for climbing and strength of Rope coming soon ( waiting on more Ultra fixes )
  • Event command can be sent to any rope to break it apart in mid or idle! Think of the possibilities. 

And a short demonstration with Ropes:

I'm thinking about starting weapons next, at least get the foundation started for Range weapons ( rifles, machineguns etc.. ) then move on to melee, magic and unarmed.


Still Alpha 2 - 

I'm back with a new addition to the UAGC,  Ladders!
This is the first bolt-on module created for UAGC so there was additional time needed to layout the system that will be used for many future bolt-on modules.

This module is a part of the UAGC baseline package.

Usage: The asset comes with 3 prefab ladders, they are very basic but dropping a prefab unto the map will allow you to change out the ladder mesh to your liking, just swap the prefab mesh with your desired mesh, or use the bolt-on ladders - it really don't matter.  The prefab's are preconfigured so placing one on the map the Controller will automatically interact with it. Nothing to code or do on your side but to design your play map.

Features :

  • 3 completely ready to use prefab ladders, small - med. - large. 
  • Ability to customize ladder mesh to your liking.
  • Customizable up and down ladder speed for simulations to arcade style play.
  • Unlimited amount if ladders can be on a single map, including overlaps and  360 directional angles.
  • Ladders aren't bound to a straight up down placement, rotate them anyway you see fit.
  • Ladders are automatic, run the player into the ladder and he will automatically adapt to it ( no pressing USE or anything like most controllers.)
  • Ladder climbing can be aborted but jumping off the ladder anytime you like.
  • Pressing a directional key while jumping off a ladder will result in a jump in that direction from the ladder ( great for platformers ) .
  • Ladders are automatically dismounted when reaching the top or climbing down to the bottom.
  • Ladders can be of any size ( height ).
  • Head tracking works on ladders! If there's nothing to track then the character will adjust his head to looking in an up or downward angle depending on the direction being traveled. 
  • Ladders support nav-mesh. ( later AI modules will be created to traverse enemies up and down ladders easily.
  • Ladders don't have to be entered from the top or bottom only, jumping on any portion of the ladder mesh will force the controller to react.
  • Numerous sync'd animations make up the motion needed to make ladder climbing seem more authentic. 
  • Configurable up and down climb speeds as well as animations speeds.
  • Configurable start climbing delay, for that fine touch. :)
  • Toggleable 'use run key' while on ladders ( for additional climb speeds ) 
  • Always RUN feature now works with ladder fast speed.

Other Bolt-On modules planned - Mounts, riding, swimming, underwater swimming, diving, hang gliding, rock climbing, rope climbing, ledge and cliff hanging and a few more I'm thinking about but not decided on just yet.

This past week saw a lot of mechanics added to the controller,  really making way for what's to come. I can now easily add scenario's ( Modules ) and better control the modes the player is in. For example, say the player has died,  a mode designated for death is triggered; inside this mode restrictions are applied; such as No Player Movement, Death Music.. etc..etc.  I should be able to make unlimited amounts of modes as they are needed, I have also designated 100 slots for user-defined modes as well so making a scenario in a custom game should be no problem at all with a bit of Lua coding experience. 

I started a module for Mounts in this update, it is no where near complete yet, but the controller will eventually handle riding mounts, as long as the mount contains a set of specified animations then any mount model could be used. I'll provide a few mounts on release but downloading a mount ( animal ) and retargeting one of the skeletons I will provide - will make it painless to add just about any type of riding mount you can dream up. More on this later as I work out some details.


  • Added master pivot, player meshes now follow the master pivot ( for better control and wider range of possibilities ( flying, underwater swimming etc.. ))
  • Player mesh can now be lowered passed the master pivot to prevent 'floating on surfaces' as seen in nearly all game controllers. ( feet are planted more firmly on the ground ).
  • Animations moved to the controllers new Animator Module ( handles all situations and picks the proper animation for whatever player mode is currently active)
  • Implemented the 'Modes' module, this module will handle ALL game situations tossed at the controller and allows for easy expansion or even adding your own customizable game situations.
  • Added a DebugCamera/Freeflight mode, hitting PageDown or a predefined key will exit the controller mode(s) and place the camera into free flight mode. You may toggle this feature off for distribution builds. You may define which key or key-combo invokes the free/debug mode. 
  • Added Footstep Sound controller , adjusts pitch per velocity of the players movement,  smart switch turns off during non-footstep situations.  Airborne etc.. etc..
  • Added ability to detect fall distance, so falling off a cliff is not the same as jumping and falling, fall distance is divided into soft landing, med landing and hard landing, each with their own animation and configurable sound effect as well as configurable damage to player.  Double and triple jumps will not invoke the damage system unless jumping from a mountain top or building etc.. etc. or unless you turn on [x] All Fall Damage.
  • Added more sound effects for jumping , soft landing and hard landing.
  • Added LUNGE feature ( on/off toggle ).  Controller can lunge forward with a tap of the forward KEY while initiating any jump. Lunges will not process if the player is simply falling off an object, a JUMP must be initiated in order to lunge forward. This feature can be toggled OFF if you so wish.
  • Added Backflip, Frontfilp and Freefalling animation sequences, triggered in certain situations.
  • Double jump must be initiated before 1000 millisecs() passes after the initial jump or else the controller will begin the free falling mode. ( this prevents cheating from jumping at HIGH altitudes then double jumping just before hitting the ground to save from a nasty landing.. )
  • Added 'Air Brakes' feature - If turned ON; during a jump;  if the player isn't pressing the forward or backward directional keys  then the decline in jump height is accelerated.  ( makes for more precise landings ( arcade style ) at the cost of slightly less realism, feature can be turned ON/OFF)
  • Jumps and fall heights are now measured in real-world feet ( ft. ).  Accurate adjustments to limits like damage from falls, water dives and distance to ground can be better calculated now.
  • Started implementing the Vitals Module, this module will handle predefined stats such as health, Stamina and mana points etc..
  • Added - Damage Module; damage adjusters for jump/landing and fall/landing can now be set to your liking. Damage adjusters work off precents%. Example:  Defining a damage modifier JumpLandingHard = 25 would cost the player 25% of their total health when a hard landing from a jump occurs. etc..  More Damage modifiers  for many other events coming soon.
  • Added player UI interface, Health, Stamina and Mana bars, these can be turned ON/OFF.  Player vitals can be accessed anywhere in your code via the class variables: player.curHealth, player.curStamina, player.curMana ( for those who wish to create their own UI ).  This module was added for quick development stage, you may wish to create a custom UI using this template when your game project is finished
  • Added configurable HOTKEY to Show UI / Hide UI.  Default F12 will toggle the UI interface On or OFF.
  • Added toggle for MALE / FEMALE player controller (  sounds the controller plays will base off gender, hurt, death, grunts etc.. )
  • Added toggle for sound play on TakingDamage event, 4 sounds can be defined and one will randomly play on 'taking damage'. ( start out sounds included in asset! )
  • Added RENEGENERATION Module.  This module will allow you to define such things as Health regeneration per game tick, Stamina, Mana etc..  You can turn this feature off if you so choose.  Each game tick ( measured in 3 second intervals ) the controller will regenerate 'x' amount of vitals as defined.
  • Added 'Controlless Falls' toggle, you can now turn ON/OFF controlless fails. If true, when the controller falls 'x' amount of feet ( set by variable controllesFallFT) an out of control fall begins..  If false, then all falls are controllable and not subject to freefall.
  • Controlless Fall distance can now be set in the settings; controllesFallFT = 30ft, when a fall proceeds this amount a 'freefall' event is fired. Also known as a ControllessFall. NOTE: ControllessFalls must be turned on before this value has any effect.
  • Added turn-animations for Idle rotation of mouse, camera and player mesh.
  • Added camera tilt left and tilt right on turning, also added camera head bobbing on running sequences. These can of course be toggled OFF if you so wish.
  • Added Crawl/Crouch mode - default hotkey is 'C' but it's configurable if you wish to change it.




 Added Poi head tracking: Point of Interest head-tracking.

Drop a Poi.componet on any object in your map (or multiple objects) and set a distance. The player controller will preform a head track on that POI location. I will add smoothing to this as soon as POINT/Rate is working.

This is a great feature for such things as grabbing the players attention towards powerups, ammo boxes, signs or anything else you would like. You can even attach the component to an animated enemy for immersive head tracking durning combat situations.

Pulling angle locations and limits on the headbone was more of a task than I originally thought it would be,. This was a tricky feature to get working and even more tricky to get looking right but it's in and working now!.


 Added Poi head tracking: Point of Interest head-tracking.

Drop a Poi.componet on any object in your map (or multiple objects) and set a distance. The player controller will preform a head track on that POI location. I will add smoothing to this as soon as POINT/Rate is working.

This is a great feature for such things as grabbing the players attention towards powerups, ammo boxes, signs or anything else you would like. You can even attach the component to an animated enemy for immersive head tracking during combat situations.

Pulling angle locations and limits on the headbone was more of a task than I originally thought it would be,. This was a tricky feature to get working and even more tricky to get looking right but it's in and working now!.

  • Added: Camera-Shake  feature.  Call [ player:ShakeCamera(duration, magnitude) ] anywhere within your code to shake the camera.
  • Added: Head-tracking, if turned on the player meshes head will track the direction the controller is turning, in addition the head will also track Y-up and Y-down angles.
  • Added: Bailout-Roll, if turned on - when player is falling or coming down from a high jump he/she will have a split second to hit <spacebar> ( or whatever the jump key is defined to ) to preform a bail-out - saving him/her from certain fall damage. This move must be performed inches from the ground.
  • Added: Point of Interest head-tracking (Poi).  Objects  on the map can be defined as Poi-trackable and the player will look their direction when within range.
  • Poi Object Tracking: Now detects the nearest Poi object to the player instead of the first matched condition in the table/list.
  • Poi Object Tracking: Added "Collision On/Off" toggle.
  • Bolt-On Module: Ladders completed.
  • Player model will no longer rotate when laying flat on the ground (  due to a hard or controlless fall or whatever may had caused him to fall flat ) .
  • Added smooth SLERP rotation to camera when entering a ladder.
  • Introducing 'TAGS' - some of the lesser interactive objects don't require Components attached, but rather simply placing a TAG on the object in the Ultra editor.
  • Added TAG: ( UAGC:Slider ) - this tag will induce the player controller into a slide while the player is within the bounding box of the specified item.
  • Added TAG: (UAGC:Sleep) - this tag defines a bed or place where the player controller can sleep.
  • Added TAG: (UAGC:Sit) - this tag defines a chair or a place where the player controller is allowed to sit.
  • Added TAG: (UAGC:Slide) - this tag defines a zone where the player controller can slide across the surface.
  • Added TAG: (UAGC:Lift) - this tag declares an object as an up/dn elevator. The object name field holds the Lift's ID and Lift Panel TAGS can be tied to the lift ID for operation. Unlimited amount of lifts supported.  Two empty game objects declare the up location and down location* detailed setup instructions inside the PDF *
  • Added 'Safe-Fall' toggle,  when on -  no fall damage or fall animation/effects will occur from any height. ( mainly used for ( rogue class ) arcade or platformer sims ).
  • Added a new Label system, turn this toggle on and labels will be displayed where ever a UAGC component or TAG is located on the play map.
  • Two types of sit and sleep have been added, 1) Auto : player walks into the tagged object and a sleep or sit will occur, 2) Use : Player walks near the tagged object and a label 'Press [F] to use' will pop up, the action will occur when the player hit's the use key or he/she can simply walk away.
  • Added Component: ROPE. Simply place a blank object onto the map, position it to your liking and place a Rope component on it, define the length of the rope you desire and the that's it. The controller will build a physics rope that the player controller can fully interact with.  ( unlimited amount of ropes possible ).
  • Added definable speeds for lifts and elevators
  • Lifts can set to AUTO-RETURN to the top of bottom base or none at all.  ( definable buy Millisecs() time in settings. )
  • Added vacuum view to tube surfing!
  • Started some code for Light AI components so enemies will also be able to use the sliders and tube pipes.
  • Started DOCUMENTION PDF file, the controller is starting to become more detailed so I thought best to begin the components API, installation and usage documentation.

Update highlights include: Sit, Stand, Sliders, Surfing and Lifts/Elevators!


  • Like 1


Recommended Comments


 I had a guy in the Ultra discord server ask me how to do parkour after I showed a video.. While it's really not a technique to explain over discord, I told him I would post a video and a short description on how I went about doing it. I'm certain there are other methods but I really wanted preformat over drop-dead accuracy. 

In the video, I attached 2 cubes to the parkour solvers as to better show what's happening behind closed doors. The light blue, or cyan cube is the 'collector' and the purple or magenta, cube is the 'feeler'. 

What happens here is the feeler tests the area around the player at different update frequencies, it then reports back data to the collector. The collector then decides which data is relevant based off the players location and angle.

Once the 'useable' data is determined, it is sent to the player controller where, based off user configurable settings, it is interpolated into an action (hurdling over a box for example).

You'll have to pay close attention to see the feeler and the collector in action, the cubes hardly show everything they are doing but at least you'll get an idea. 

Most geometry sensor systems use up to 14 feelers, while that makes for a very realistic simulation I find it not so practical for game use. I originally was going to use just 'a one pass sample' of the geometry around the player for speed purposes but I found I couldn't do everything I wanted to do with that system. So after reading up on the process I went with a 2 sensor system at little to NO cost on performance. Now that the system is in place I can do a lot more with it rather than just simple vaulting ( as this video demonstrates ), so over the next few months you'll probably see a lot more stuff in my videos based off this system and you won't even know it!  Wall runs is on the horizon !

One thing to keep in mind, the map is not staged in any way, this is straight csg brushes made with Ultra editor and dropped into the scene. The system is completely dynamic so there's no extra map configuring required (which is a major plus in my book). I cannot wait until I have time to build a real map with texturing and imported mesh, that's when this system will truly shine I believe, and yes. the system will work with imported geometry. 

Thanks to Ultra Engine for making this possible!  ( and Josh with his emergency bug fixes and API additions. :)).




Link to comment

UAGC now features Ledge hanging! A feature normally only found in game specific genres - is now available to you with a simple toggle on or off !

Introduction to the combat system.  The controller will consist of four combat styles, Hand to hand,  melee,  ranged and magic.  When no weapons or combat items are active in either primary or the off-hand, the system will fallback to the hand to hand combat mode.  This mode consists off punches, kicks and martial arts style combat. The mode is heavy configurable and offers enough options to customize for any type of game play, including simulations to arcade hack-n-slash styles. 

The system is based off user input, left mouse button = left hand usage while the right mouse button operates anything in the players right hand.  So for example, if the player has no items equipped in either hand than the system will assume martial arts style combat whenever the left or right mouse button is clicked. 

Combos -
Combos can be preformed by stringing along a certain pattern of left to right attacks within a predetermined amount of time.  You may configure as many or as little ( none ) combo attacks as you like.

I have made it easy to define combo attacks:
In the header of each attack style module you will find a section that looks like this:

--->> Combos
h2h_combos = {}
h2h_combos[1] = "111"
h2h_combos[2] = "1211"
h2h_combos[3] = "2211"

This is the combo table for that combat style ( in this case Hand to hand ).

1 represents the Left Mouse button, while 2 represents the Right Mouse button.
So for example, when the player clicks the LMB for a combo timer starts, if the player completes the combo by clicking the left mouse button 2 more times within the time frame - h2h_combos[1] will occur. 

Each combo move has a unique animation and attack move, as well as a sound. There are 10 distinctive animations for combo's. If you declare more than 10 combo attacks then the system will start the animation count back at 1. So combo 11 would actually be combo 1 animation and so forth.

Particles will be added once the game engine matures further. 

'Damage done' can be defined per combo attack as well.
Damage is calculated ( base damage + combo damage  + player level ) - ( contingent value ) * ( weapons defined critical hit determiner ).

  • Added combat Module Hand to Hand combat  ( PDF contains all options available).
  • Added configurable combo attack to H2H mode.
  • Added Parkour Module: ledge Hanging.
  • Added Parkour Module: ledge strafing.
  • Fixed and optimized Jump mode(s).
  • Finally found bug keeping player in Falling mode when not really falling.
  • Optimized several key areas of the controller.
  • Started adding sound effects to key areas ( eventually every action will have its own effect ).
  • Added physics punching bag prefab, a place to practice and try your hand to hand combo attacks.
  • Added floating label definitions for each attack move preformed ( can be turned on or off ).
  • Added Artificial Gravity routine, this is used for ledges but will also power the upcoming Jetpack and Wall run modes.

This update is shorter than others (but none the less potent), it took a solid week getting the Ledge hanging to work correctly.

Ledge Parkour needs no special map work, simply turn the feature on and it just works.
Compatible with any and all scene geometry.

Ledge Module ( final ). Nothing special to setup on the map. Just throw any ole geometry on the map and the controller handles the detection.. Map Makers dream! :slight_smile:

I got ledge to ledge jumping in the works.. thats gonna make for some fun possibilites on map design.


Link to comment


Ultimate Action Game Controller ( UAGC ) - WL 4

  • Added an Object Pooling Manager for upcoming modules that will spawn and de-spawn entities.
  • Added Teetering - if turned on, player with balance beam walk on narrow heightened areas.



  • Like 2
Link to comment

Small update,  UAGC now has eye tracking! Only requirement is the RIG must contain a standard set of facial bones.  If the bones are absent then the feature is automatically nulled out.  I use the Paul Neale facial bone rig as it seems to be the most commonly used.  But any rEye, lEye attached to head bone will do the trick.. it's not picky.  https://paulneale.com/tutorials/facial-rigging-method-which-is-best-for-you-and-your-production/

  • All known bugs have been squashed, including a pesky jump/landing bug I've been tracking since early development. 
  • Added eye tracking and mild/light facial expression abilities ( controllable via a self:express() routine ).
  • Added 3 new animation skeletons, short, normal and tall skeletons ( females ), males are on the way. 
  • Added ability to hot-swap the player mesh and stats in-game. No need to reload the entire map to load a new character! This should prove to be useful for games where the player controls more than one player type. ( self:playerswap(infos) ).
  • Added eco-system, object pooling now active, started 3d sound controller.
  • Laid out module blue prints for player pets, combat and cosmetic pets will be supported.
  • Added Items Database.  This database holds the following catagories for game items. 
    Weapons ( Ranged, hand to hand, melee and magic )
    Collectibles ( and items used by the upcoming quest system ).
    Useables ( includes powers, food/drink etc..  Anything that can be used then destroyed )
    Misc - the section you can toss anything into that does not specifically fit any other catagory.
  • Started the Ranged combat modules
  • Added our first gun!  The Splatter gun - used for testing out the combat module. 
  • Added 2 new playable female characters. ( Sasha and Jenna ).
  • Fixed: Players feet no longer go below elevators/lifts base while moving.

eyetracking.thumb.png.a15bb8333f8f4943efe935ba75105a9a.png sit.thumb.jpg.cbdb89b3170d4a93c28c36c56207c9b0.jpg

Lip moving ( npc talking ) and some moderate facial expressions are on the way.  No time for a video this week, I got to leave out early.. Until next time ! 


  • Like 3
Link to comment


 Update WL #5 -  Mounts

After a lot of changes to how I originally was going to implement mounts, I finally decided on a path and began working on it. To my surprise I did not run into many speed bumps other than animating in blender and getting formats to work as they should.  There's still some polishing to do overall with mounts but the framework is there and it's solid. 

In trying to follow the standard way of doing things in UAGC,  I made a prefab for mounts with as little options as possible to keep things simple.


That's really all there's needed to get a rideable mount into a game using UAGC, I will be including my horse mount as a starter mount but by using the same skeletal rigging - any mount mesh will work. I have later plans on adding exotic mounts like dragons and bears and such but for now I'm happy with just having this framework completed.  This component took a good 2 weeks to complete and contains over 2,000 lines of optimized code. 

The update:

  • Added: Mounts component 
  • Unlimited mounts allowed per map
  • Mounts are configurable with variables such as scale, speed and handling. 
  • Mount name label system
  • Mounts can go to sleep after x amount of time of no use. ( they wake back up when the player gets within range ) .
  • Mount component is now intertwined with the player controller routines to provide a submersive experience.
  • Sound effects added for all areas of mount riding.
  • Mounts interact with the environment allowing for collection of powers ups and loot boxes from within the saddle.
  • Added functions to easily allow me to install swimming and water interaction abilities when I get that far along.
  • Added expandable functions for flying mounts. ( wip ) 
  • Combat functions are in place, not working yet but they will as soon as I get enemy AI in place.
  • Combat from the saddle will be possible.
  • The animal itself will be configurable for combat. ( battle-mounts* ).
  • And much more !

The media:



  • Like 1
Link to comment
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...