During the development of Mechropolis, our level designer came to me requesting the ability to limit the area in which the Stationary Thrower robot could turn to keep it’s arms from clipping into walls and to give the level designer more control when creating challenges.
The robot in the image above is the Stationary Thrower. It turns toward the player and throws her into the air when she steps onto it’s plate, kind of like a robotic jump pad.
Limiting the angles allowed for the robot was not a problem, but smoothly turning toward it’s target angle while avoiding the restricted segment proved to be a bit more of a challenge than I had anticipated. I had previously used Unity’s built in
Quaternion.RotateTowards function for this, but that function always does the shortest rotation possible which would cause the robot to rotate through obstacles if that was the shortest route.
I decided to approach the problem by manually rotating the robot towards it target on a plane with support for my own angular limits. I’ve tried keeping things as general as possible and while my use for this is limited to the xz-plane, this approach should work on any plane. (more…)
We call this cute little thing the Grabber. It’s able to fire it’s claw at a distance and grab onto things. A clever player might lure it into pulling a lever that is out of reach, or fuse it with a Controller (a robot that enables a fusion to be controlled by the player) and hookshot over a chasm.
One thing about this robot that we knew would be a challenge when we designed it is it’s ability to fire the claw around corners by bouncing it off a Shield robot’s shield. This meant having the chain bend around corners in the environment. Mathias, another member of the team had already done some great work on creating a path for the chain that wraps around environment geometry and I took over where he left off, putting it to use in the game. (more…)
I’ve recently started working with the talented folks at Digital Tuna (creators of CoBots) on a new project for the course Big Game, the grand finale of our second year here at Campus Gotland. The game’s name is Mechropolis. It’s a first person action puzzle game in which the player is invited to explore a long lost underground civilization. The only remaining inhabitants in this derelict world are the robot servants still carrying out the orders of their vanished masters, blindly digging deeper into the planet.
Mechropolis’ core mechanic is something we’ve dubbed “Fusion”. The player is able to stun a robot, pick it up, and throw it into another robot, fusing them into a single entity that combines the characteristics of the other two. By exploiting these fused robots’ unique traits, the player is then able to progress through the environment.
My main task so far has been to implement the robot AI and fusion system. The AI system is a simple but flexible state machine with single purpose states (e.g. “chase”, “flee”, “attack”) that are tied together and transitioned between when certain conditions are met.
I’d like to tell you about one such state that proved to be an interesting little challenge: the “Flee” state. (more…)