FPS bot is a bipedal combat mech, remote piloted, mounting scripted weaponry which can destroy props.
Its design brief called for a mech which could be operated in the manner of a video game character.
Initially this would have been in first person, but playtesting showed that it was much more fun in Third person in an over-the-shoulder view.

This project is currently the pinnacle of my Mech technology. Something which I have been working on for over four years.
This project has made me one of the premier mech builders in gmod. certainly amongst the top ten, very probably in the top five.
Admittedly there are comparitively few people actually making their own mechs from scratch.
The vast majority I see are derivative (or direct duplicates) of the code used by a fellow mech builder who chose to release his work online.

Moving On.

FPSBot has a number of features:

* Bipedal Walk cycle, ray-tracing allows the mech to identify where to place its feet, a timing system updates those positions, the feet use velocity systems to move smoothly. This is the core of the mech, around which all other systems must be built.

* Three part body/torso/head movement, the head tracks the direction the player wishes, the Hip follows that when moving, the torso tracks a medium between them.
All designed to make the mech's movements look natural. The calculations include a series of functions I developed to translate numbers into angles in the 0->360 range.

* Weapons, the mech mounts multiple weapons, accessible via a HUD and scrollwheel system similar to most video-games. Weapons consist of: 100Cal explosive cannon, Flamethrower and Missile pods.
Note that the flamethrower is mounted as a secondary fire function of the 100Cal. intended for close-quarters anti-personel work., also the missile pods have a deployment animation as they move from the mech's back, up to a deployed position over its shoulders. very cool to watch.

* Weapon targeting, The mech's 100Cal cannon incorporates a ballistic calculator which can accurately adjust for differences in range and height for anywhere up to half a mile. this is to compensate for bullet drop. This is something of a breakthrough for me as previously I was unable to handle height differences. it was also new for being integrated directly into the mech rather than an artillery piece.

* Boot-sequence lights, the eyes light up in sequence when the pilot gets in the control chair. just a bit of fun, but friends have asked how its done for their own projects.

* Movement range includes: Omni-directional walking using WASD controls, Sprint (still a bit silly looking, but substantially faster), crouch, Kneel (chat commanded by the pilot) and auto-center when the pilot leaves the seat.
Additionally the mech reacts to different functions in various ways. the gun is held at a "at ease" stance when no weapon is selected, in this mode, the gun dips noticably when the pilot is using the game's chat. this is a visual indicator since the pilot is typically a long distance away and the usual indicators are not visible.

* Holographic shell, low-lag visual detail generated and positioned using Expression2. looks cool, if a little simplistic. note: the shell is not visible in the video below. similarly neither are the missile pods, those were all developed after the video footage was taken.

* HUD system, includes a targeting marker showing where the gun is aimed (partially visible in the youtube video, but quite faint), weapon-selector, graphical stuff like lines on the screen ( just me messing around with the look)

* Extra features: Hip-sway, for realism's sake. the mech looked very stiff and rigid until I added them. Other minor features.

Redacted Features:

* I was going to add a jump feature, but due to Ops requirements, was forced to remove it again. the E2 kept hitting its limits. Since I wasn't sure I even wanted a jump feature, I took this setback as a sign that I shouldn't bother.

Like many of my mechs, due to the way it's constructed, it's quite completely indestructible. many mechs can be easily crushed and knocked around and may be forced into a "spaz" state in which the parts are forced out of alignment and due to the physics engine, unable to actually return to normal without the assistance of a player. My mechs don't suffer from this at all because all the parts are set to ignore collisions with one another, as well as having much more resistant constraints involved where there are constraints at all. This mech is notable in that it has absolutely no Weld constraints. all its constraints are in the form of hinges and limiters of various types, and most of its parts are free-flying in what I term "cloud mechanisms". essentially, the head, torso and hip sections are all completely independant from one another, the mech can function perfectly well without its torso if necessary though the gun works in heirarchy with it and will follow it around. the head directs the body, but can similarly be dragged away from the rest of the mech without ill effect. simply releasing it will cause it to return to its appropriate location on the mech's shoulders.

This "cloud mechanism" has serious advantages in terms of robustness and ease of use, however it tends to be more Ops intensive on the E2 gates, this is vs the more physics intensive method of constraining the parts together and allowing them to work that way. My naturally slightly control-freak nature meant that I chose the E2 method.The more notable advantage of which is in setup for the mech, which consists of spawning the parts, removing their collisions from one another, and hooking them into the E2. the E2 handles all the actual positioning and the whole system is ready in moments.
This mech isn't quite as simple because the legs are all constrained together, but the entire upper body works this way.