Lucifer's Atoms is a physics-based construction game where players have to build and control objects to complete various challenges.
Everything in the game is made from cylinders, spheres, and flat sheets. Despite being simple elements, they can be combined to form more complex things.
Each level has its own rules for successful completion and can also specify restrictions on what is allowed to be built.
In addition to the single-player levels, there is a multiplayer mode, where players compete or co-operate with their creations. Players can also make and share their own levels.
The game starts on the choose level screen. Click on a level to show a preview of it, then you can either click on Play or Design level.
After you've chosen a level to play, the game switches to the edit screen. This shows four views of the level (front, right, top, and free) and a panel of buttons down the left side of the screen. All the building is done from this screen.
Clicking on the green arrow button (or pressing Space) switches to the play screen, which runs the physics simulation and allows you to control your creation, if it has any motors. Press Esc from here to go back to the edit screen.
|Click||Press and release the left mouse button.|
|Right click||Press and release the right mouse button. On MacOS with a single-button mouse, this can be emulated by holding down the Alt/Option key while pressing and releasing the (left) mouse button.|
|Click + drag||Press the left mouse button and hold it down while moving the mouse.|
|Shift + click||Hold down the Shift key while pressing and releasing the left mouse button.|
You will probably want to move and zoom the views on the edit screen while building your creations to get a better view of the bit you're working on. All four views keep looking at the same point and have the same zoom, so moving or zooming one updates them all. You can click and drag the view borders to resize them.
|Control + click + drag||Middle click + drag||Move views|
|Control + right click + drag up/down||Scroll wheel||Zoom views|
|Control + Shift + click + drag||Shift + middle click + drag||Rotate free view|
|Control + Shift + right click + drag up/down||Shift + scroll wheel||Move free view forwards/backwards|
The top group of buttons represent the editing modes – the one that's pressed is the current editing mode.
|Click||Shift + click||Right click||Shift + right click|
|Add link||(+ drag)
|Delete object||*||Links connect two nodes in a straight line. New links are created with the current material and radius.|
|Modify link(s)||Select link||Select multiple links||**||The selected links' material and radius can be changed by editing the values.|
|Add ball||(+ drag)
|Delete object||*||New balls are created with the current material.|
|Modify ball(s)||Select ball||Select multiple balls||**||The selected balls' material and radius can be changed by editing the values.|
|Add angle joint||(+ drag)
|Delete joint||See below for a description of joints.|
|Add hub joint|
|Add fixed joint|
|Add geared joint|
|Add geared angle joint|
|Add differential joint||(+ drag, then click again)
Create differential joint
|Add axle joint||(+ drag)
Create axle joint
|Add sheet||(+ drag)
|Delete sheet||Sheets connect between three links forming a triangle. Sheets have the same material as their first link.|
|Add cylinder curve||(+ drag)
Move curve control point
|Delete curve||*||See designing levels.|
|Add torus curve|
|Add flat curve|
|Align curve edge||(+ drag)
Align curve edge
|Drag between two control points on the same curve to create a string of links bordering the edge of the curve. Drag between two curves' end points to align the first one with the second one. See designing levels.|
|Add target||(+ drag)
|Delete target||*||See designing levels.|
|Add multiplayer start position||(+ drag)
Create/move multiplayer start position
|Delete multiplayer start position||*||See designing levels.|
|Add chase camera||(+ drag)
|Delete camera||*||Chase cameras move to follow the tracked objects.|
|Add direction camera||Direction cameras move to follow the tracked objects, but keep looking in the same direction.|
|Add static camera||Static cameras don't move, but rotate to follow the tracked objects.|
|Add attached camera||Attached cameras are fixed to the tracked objects.|
|Delete||Delete object||Select multiple objects||**|
|Select multiple objects||**|
|Select multiple objects||**||The centre of rotation is the position of the object clicked on. The rotation axis is the direction of the view.|
|Select multiple objects||**||The centre of scaling is the position of the object clicked on.|
|Select multiple objects||**||The axis of reflection is defined by the position of the object clicked on and the direction dragged.|
|Toggle tracked||Toggle objects tracked||Select multiple objects||**||When this mode is activated, the tracked objects are black and the untracked objects are white. The tracked objects are followed by the cameras.|
|Toggle anchored||Toggle objects anchored||Select multiple objects||**||Anchored objects are fixed in place and can't move. See designing levels.|
|Length motor||Select link||Select multiple links||**||See below for a description of motors.|
The add joint, add curve, add camera, and motor buttons are combined into a single button each – pressing it shows a popup menu with the other buttons.
Editing operations can be performed on multiple objects simultaneously, which can make things a lot quicker. You just need to select the objects you want to change, then do the operation as you would for a single object.
|Click + drag in an empty space||Select objects inside rectangle||**|
|Shift + click + drag in an empty space||Add objects inside rectangle to selection||*||**|
|Shift + right click + drag in an empty space||Remove objects inside rectangle from selection||*||**|
|Shift + click on an object||Toggle object selected||**|
|Shift + right click on an object||Remove object from selection||**|
|Right click||Clear selection||**|
|Undo||Undo the previous editing operation.|
|Redo||Redo the next editing operation in the undo history.|
|Snap position/length||If pressed, the positions and lengths of editing operations are snapped to the grid.|
|Snap angle/scale||If pressed, the angles and scales of editing operations are snapped. Angles are snapped to 11.25° increments and scales are snapped to integer values (…, ÷4, ÷3, ÷2, ×1, ×2, ×3, ×4, …).|
|Sheets transparent||If pressed, display all sheets as transparent when editing. Useful to stop sheets getting in the way of other things you want to see.|
|Hide large objects||If pressed, hide objects larger than the view. Useful to stop large objects from interfering with editing smaller objects.|
|Rules||Rules||Show the level rules, which can be edited when designing a level.|
|Input rules||Input rules||Edit the rules for the motor automated inputs.|
|Save||Save the current creation or level.|
|Start||Run the simulation.|
|Back||Go back to the previous screen.|
|Menu||Shows a popup menu that lets you start a network multiplayer game, change game options, and other useful things.|
There is a choice of materials to build things from, each with different properties.
|Material||Mass||Strength ÷ mass||Elasticity||Bounciness||Friction||Special|
|Damp||Links act as dampers, absorbing motion.|
|Rocket||Links can be propelled with thrust motors.|
|Helium||Objects are lighter than air, so they float.|
Joints can be created between adjacent links to restrict the movement between them in various ways.
|Joint||Description||Rotation motor connection|
|Angle joint||Angle joints keep a constant angle between the two links, but both the links are free to rotate.|
|Hub joint||Hub joints keep a constant angle between the two links and the first link is fixed to the second so it can't rotate, but the second is free to rotate. Hub joints can't be used between links with an angle close to 180°. Because hub joints are asymmetrical, the creation order is significant (A→B ≠ B→A).||Outer casing (first link)|
|Fixed joint||Fixed joints keep a constant angle between the two links and both links are fixed to each other so they can't rotate. Fixed joints can't be used between links with an angle close to 180°.||Outer casing|
|Geared joint||Geared joints connect the rotations of the two links together, but do not restrict the angle between them.||Inner shaft|
|Geared angle joint||Geared angle joints connect the rotations of the two links together and keep a constant angle between them.||Inner shaft|
|Differential joint||Differential joints connect the rotations of the three links together, but do not restrict the angles between them. The rotation of the first link is transferred to the second and third links, which are given equal force, but not directly fixed to each other, like a car differential. Because differential joints are asymmetrical, the creation order is significant ((A→B→C = C→B→A) ≠ (A→C→B = B→C→A) ≠ (B→A→C = C→A→B)).||Inner shaft|
|Axle joint||Axle joints fix a link and ball together.||Inner shaft|
Each pair of adjacent links can have at most one joint between them.
Motors exert a force on a link – use them whenever you want to make something move.
For each of the motor types, there are 16 motor slots available for each link, labelled A-P. So a maximum of 16 motors of each type can be assigned to each link. The motor slot buttons are highlighted in red if any links have a motor on that slot.
To create a motor, select the link(s) you want to assign it to and the slot you want to use and then pick a virtual input (an axis or button). These virtual inputs are bound to physical inputs (keys and game controllers).
|Half axes||Full axes||Buttons||Automated||Constant||None|
The full axes are defined like the half axis in the direction of the darker arrow, with the opposite side being implicitly mirrored. The automated inputs are controlled by rules, which allows more complex inputs to be defined. The constant virtual input is like a button that's always pressed. To delete a motor, set the virtual input to none.
A length motor acts like a hydraulic piston, creating a force that either pushes the links' nodes apart or pulls them together.
|Len 1||The length factor when the input is 0.|
|Len 2||The length factor when the input is at its maximum extent.|
|Speed||The maximum speed, as a factor of the link's breaking force.|
A rotation motor acts like an electric motor, creating a rotation force. When a link has a rotation motor assigned to it, it is split into an outer casing and an inner shaft. Hub and fixed joints connect other links to the outer casing, while geared, differential, and axle joints connect to the inner shaft. To be useful, a link with a rotation motor must have at least one of each of these two types of joint connecting it to another object, so the force generated by the motor moves something. Otherwise, either the inner shaft or the outer casing will spin freely and very little force will be transmitted to the other.
|Force 1||The force to apply when the input is 0, as a factor of the link's breaking force. Positive for clockwise rotation of the inner shaft, negative for anticlockwise rotation.|
|Force 2||The force to apply when the input is at its maximum extent, as a factor of the link's breaking force. Positive for clockwise rotation of the inner shaft, negative for anticlockwise rotation.|
|Speed||The maximum rotation speed, in revolutions per second. 0 to make the motor act as a brake and apply force in the direction opposite to the rotation.|
A thrust motor acts like a rocket, creating a force that pushes the link in the direction it's pointing. A link's direction is set when it's created – if a link is pointing the wrong way, you can delete and re-create it to point the other way. Thrust motors only work when assigned to links that are made from the rocket material.
|Force 1||The force to apply when the input is 0, as a factor of the link's breaking force.|
|Force 2||The force to apply when the input is at its maximum extent, as a factor of the link's breaking force.|
|Ease||A smoothing filter applied to a motor's input values. If an input instantaneously changes from 0 to its maximum extent, the ease value is the duration of this change, as seen by the motor, in seconds. 0 for no smoothing.|
As well as receiving inputs directly, motors can be set to operate cyclically.
|No cycle||The input is sent directly to the motor.|
|Sine||The input controls a sine wave, which is sent to the motor.|
|Ramp||The input controls a cyclical ramp function, which is sent to the motor.|
|Frequency||The input modulates the frequency of the cyclical function.|
|Amplitude||The input modulates the amplitude of the cyclical function.|
|Period||The time for one cycle, in seconds.|
|Offset||The initial cycle position, between 0 and 1. 0 represents the start of the cycle and 1 represents the end.|
|A||For the ramp cycle, the position of point A, between 0 and 1.|
|B||For the ramp cycle, the position of point B, between A and 1.|
|C||For the ramp cycle, the position of point C, between B and 1.|
Although you can use whichever virtual inputs you like when creating motors, it's a good idea to consider the default virtual-to-physical input bindings, which try to cover common configurations of keys and game controllers.
These input bindings allow axes 1 and 6 to be used for the standard controls found in many racing games.
|Previous camera||Next camera|
|Chat||Previous camera||Next camera||Previous camera||Next camera|
|Control + A||Select all|
|Control + X||Cut|
|Control + C||Copy|
|Control + V||Paste|
|Control + Z||Undo|
|Control + Shift + Z||Redo|
|Control + R||Edit input rules|
|Control + Shift + R||Show level rules|
|Control + S||Save|
|Print Screen||Take screenshot|