THRUST//DOLL
- Platform
- Linux and Windows native, maybe browser
- Genre
- Third-person speedrunning game
- Target
- ESRB M; genre enthusiasts for movement shooters and shmups.
- Release date
- April 2023 (est.)
The player is a disposable transhuman ‘doll’ navigating zero-G 3D environments to evade obstacles and attack target point.
Their principal means of movement is a thruster, which rapidly pushes them towards a surface targeted by the mouse, combined with a grappling hook which lets them anchor themselves on a surface and ‘orbit’ that point. This is a full six-degrees-of-freedom movement system.
While the player is soaring about, they must avoid being destroyed by obstacles. Over the course of the game these obstacles increase in difficulty from static bombs and walls to seeking missiles and enormous arms.
Their target is located in a dangerous biomechanical space. To successfully navigate it, the player character’s body must be upgraded with augmentations which improve their capacity for movement and grant cooldown abilities like slowing down time or an iframe dash.
A distant future where the line between technology and biology has blurred to nonexistence. The player controls a disposable THRUST//DOLL, injected into the heart of a vast machine intelligence to destroy its core. Only their modified, superhuman body can move and react fast enough penetrate the machine’s defences. As the missions get more dangerous, it must evolve to match. But the more time it spends in this alien world, the less clear the THRUST//DOLL’s cause becomes…
Avoid dying, hit the machine core at high speed. Attempt to complete levels as quickly as possible.
The player appears at one end of a level filled with obstacles. A minimap shows the layout of the whole level. Time is frozen until the player starts moving.
The player navigates through the level, avoiding obstacles until they hit the core. Depending on the speed they hit it, they do more or less damage.
If the player dies, they instantly return to the starting point. Dying is very quick and has no penalty, but the player’s deceased bodies (or just bloodstains) remain floating in the level.
When the core is destroyed, the level ends. The player is awarded a score based on speed of completion (potentially other secondary objectives). It does not matter how many times they died, only the final run counts. The player has the choice to replay the level for a better time, or continue.
After completing a level, the player sees a brief visual novel-style story segment. They then get a preview of the shape and types of obstacle in the next level, or the option to return to a previous level and try for a better time.
The player then has the option to access an upgrade screen, where they have the option to add new abilities or improve the handling of their DOLL. Once they are satisfied with their build, the player may begin the next level, or replay a previous level. In the first pass, the story will be linear and the levels handcrafted, but future upgrades may add branching choices or a procedural generation system.
Cyborgs in biomechanical environments. Levels are a hazy amniotic space filled with floating particles. Masamune Shirow cyborgs and ball-jointed dolls. Low poly models with elaborate shader effects. Frequent body horror.
The game’s mechanics are tightly coupled with the control scheme, so they’re presented together here.
The game can be played using a mouse or a standard XBox/Playstation-style controller with two analogue sticks. What follows is the default control scheme, but it can be modified by the player.
The control scheme is designed on the assumption that the player has one hand on the mouse and the other hand over the WASD keys in the mouse and keyboard setup, or that they keep their thumbs on the control sticks with a controller.
Mouse or right analogue stick movement controls the camera, which can orbit to view the doll from any angle. If there is level geometry between the camera and the DOLL, it becomes transparent. The ‘up’ direction for the camera is always dorsal to the doll. The player can roll or pitch the doll to change this angle (see below).
The doll’s model is slightly off-centre, so that the player has a clear view along the targeting reticule. Usually the doll will be below and to the right of the centre of the screen, but if the camera would intersect with a wall, it may shift so that the doll is instead on the left or above.
After a few seconds with no camera adjustment (configurable by the player), the camera will start to move back to point in the direction of travel.
The left mouse button or L2 trigger creates a powerful thrust towards the mouse cursor. The thrust will automatically stop after a brief period, and has a short cooldown, creating a rhythm of alternating thrusts and inertial movement. If the player releases the button early, thrust ends immediately. After thrusting, player continues moving with their current velocity. While thrusting, the camera is aligned to the direction of thrust, and does not respond to mouse movement.
There is a drag force that imposes an effective terminal velocity on the player, and causes them to gradually slow to a halt if they don’t thrust. I’ll need to experiment a bit to figure out the right feeling—realistic drag is proportional to \(v^2\) but we don’t want the drag to feel too strong, since the emphasis is on intense speed.
The right mouse button or R2 trigger launches the grappling hook. This attaches to a wall within range, and limits the distance the player can move from the point of attachment to the distance when they launched the grappling hook. This allows the player to make circular orbits using the thruster. Depending on preference, this can be set to a toggle system, or a hold and release system. The origin of the orbit is slightly raised from the target surface in the normal direction. The grappling hook is automatically released if the line collides with other level geometry.
The WASD keys or left analogue stick may be used to make small course adjustments. The faster the player is moving, the more control they have. The direction of these adjustments is based on the orientation of the doll, so W and A always control pitch (which affects the camera’s ‘up’ vector), and A and S always control yaw.
The Q and E keys or R1 and L1 buttons allow the player to roll the doll, changing the camera’s ‘up’ vector and the orientation of the previous controls.
The R key and the Start button immediately kill the current doll and restart the level.
If the player enters a small sphere around the core, the camera pulls back to a brief slow-motion cinematic shot in which they slice through it, creating a cascade of fragments.
If this is the end of the level, this animation lasts longer; the camera then flies to frame both the player and the destroyed core as the level lighting fades, while a results screen displays statistics such as total time, number of grapples, total thruster time, hits taken, etc.
If the player collides with a wall, the behaviour depends on upgrades. At first, the player simply stops and attaches to the wall—this allows players to get used to the control scheme. With an upgrade, the player will instead bounce off a wall in the surface normal direction, maintaining their momentum.
These upgrades are permanent and do not compete with other abilities. They are added over the first few tutorial missions. They can still be disabled if the player prefers.
The DOLL has limited energy for upgrades, so they have to choose which upgrades to assign. The amount of energy grows over the course of the game. Initially all options will cost the same, but if necessary for balance reasons, it may be necessary to adjust.
More will be added if I think of them.
Obstacle types include:
The player’s hitbox is a sphere, regardless of the pose of the doll. Similar to many ‘bullet hell’ shooters, it is smaller than the player’s visible model. We can potentially use an IK rig to make it look more natural when the player dodges an attack.
At the start, when the player’s DOLL is hit by an enemy, they die and restart the level. Previous DOLLs appear floating in the level as static objects that do not interact with the grappling hook. If the player collides with one, it will be destroyed, turning into a bloodstain, without affecting the momentum of the player.
The ABLATIVE MUCOSA upgrade adds a shield which can absorb a hit. In this case, when the player is hit, any grappling hooks disengage and a strong force is applied in the direction of the attack. The player is briefly invulnerable, indicated by the shield growing brightly, and then it disappears. Once all ABLATIVE MUCOSA are stripped, the player will die on the next hit.
The player’s DOLL floats gently up and down, slightly offset from the centre of the screen to make room for the menu. Circular nodes indicate where upgrades can be applied. These may be selected using either the mouse (left click opens up a submenu, right clicking or clicking outside the submenu area closes it) or using the left analogue stick (A or X selects a node, B exits).
When selected, the camera adjusts to better frame the upgrade slot. Possible upgrades appear in a radial menu, along with their costs if not yet unlocked. Hovering over an upgrade shows a preview on the character model.
The player may also modify cosmetic aspects of their DOLL, such as skin colour and bioluminescence, which just involves changing material parameters. Additional purely cosmetic options may be added but this is a lower priority.
The UI is minimal and embedded in the 3D world. The player should be able to keep their eyes close to the centre of the screen when moving and use their peripheral vision to detect threats.
The doll’s body is divided into ‘soft’ and ‘hard’ components. ‘Soft’ components are deformed by the skeleton. ‘Hard’ components are rigidly parented to a single bone.
All animation is procedural, using inverse kinematics. Each limb will have an IK target. Specifics will be determined during implementation, but some initial concepts:
The doll’s arms will float aimlessly when the doll is not moving for a long period.
The amniotic fluid is thick enough to create a mist effect. Walls have a glowing effect when viewed tangentially, but they’re dark when viewed face on.
Inside the fluid there are small floating particles or bubbles, which are visible when near the camera. They are repelled by the player’s collision sphere and by mobile enemies, but their motion is highly damped. So everything leaves trails as it moves.
The player’s model will have many coloured lights which shine on both the player and the nearby environment. These may or may not cast shadows depending on performance.
Missiles and other dangers will also glow brightly to separate them from the backdrop. Missiles will leave motion trails which will gradually fade.
Bombs create a spherical ‘void’ effect with a blueish glow around the fringes.
The Core glows very brightly, casting shadows on the nearby environment.
Post-processing effects such as lens flares will add to the look.
When the player is closer to their grappling hook than the maximum radius, it will be distorted using multiple frequences of sinusoid to ensure the total rope length remains correct. (Realistic rope simulation is not necessary.)
When the player is moving very fast, the camera will pull back and the FOV will get wider.
Powerful ‘boost’ effect when thrusting. Increases in pitch before shutting off. Engine hum when idling, and ‘spinning up’ sound when the next boost is ready.
Grappling-hook launch effect and grappling-hook contact effect.
Beeping sound based on missile proximity?
Sharp ‘shattering’ sound when impacting the core.
Music: something sinister and industrial, but with a strong beat that matches the rhythm of thrusting. (Alternative idea: procedural music with a note associated with each player action?)
Comments