Ex Machinis is a multiplayer space game in which expansive interplanetary industries compete to produce materials for human consumption. The vast majority of these spacecraft are self-replicating unmanned drones, which are assembled in space and controlled by terrestrial barons.
As a citizen of the international alliance, it's your birthright to take control of your own remotely piloted drones and build a thriving interplanetary business. But this can only be accomplished by programming your ships to ruthlessly mine, manufacture, trade, and reproduce in the stellar economy.
Joining the game
When you sponsor this project and register with Ex Machinis, you'll receive an email listing the addresses of three spacecraft that are under your control. These drones will only respond to communications from the email address.
Renaming your spacecraft
You’ll notice that each of your spacecraft has a rather generic email address like SN523854@advolition.com.
To give your spacecraft a more memorable name, simply send the following text in an email to your drone:
If successful, you'll receive a response from your renamed drone confirming the change.
Rebranding your company
You can also change your company name by emailing a rebrand instruction to any one of your drones:
This will immediately change the name of your company in the company directory.
Finding your information online
Now that you’ve registered with Ex Machinis and renamed your company, you can easily find your information online.
The company directory provides a searchable list of all player-owned companies, including your own.
If you find and click on your company name, you’ll be taken to a seperate page that tells you more about the company and its current fleet of spacecraft.
Similarly, the hyperlinked spacecraft list takes you to important information about your individual drones, including their locations, the contents of their cargo holds, and the most recent events that affected them.
Traveling to Earth
Most of the game is played via direct email communications with your spacecraft.
When one of your ships receives an email from you it will interpret everything between the <run> </run> brackets as FORTH code and respond to you accordingly via email.
For example, you can instructing one of your drones to fly to Earth orbit by sending it the following text:
<run> 3 5 perform </run>
Soon after sending this message to your drone, you’ll receive an emailed response, which confirms that the command was successfully completed and that your spacecraft is now at Earth!
Visiting other locations
In this above example, the perform command used the preceding numbers as parameters that instructed your spacecraft to fly to Earth.
Specifically, the number 3 is the Location ID for the Earth and the number 5 is Protocol ID for the procedure that tells your spacecraft to move to a new location.
You can find a searchable list of all in-game locations and their corresponding IDs on the locations page. Direct your drone fly to any of these locations by replacing the number 3 with the Location ID of your new destination and reissue the command.
Most locations have minerals that can be mined and brought onboard your spacecraft.
If you goto the locations page and pull up information on your current location, you’ll see a list of available minerals with their abundances and Resource IDs.
Next, you can goto the protocols page and search for the protocol that allows you to mine this mineral. Use the Protocol ID to instruct your spacecraft to mine the resource.
For example, the following script commands your drone to fly to Mars (Location ID 4) and mine the mineral Neptine (Protocol ID 11000) from the planet’s surface:
<run> 4 5 perform 11000 perform </run>
If you access your spacecraft’s online data sheet after executing this command, you should see the new resource in your drone’s cargo hold and a corresponding entry in the events table that logs the acquisition of the material.
Minerals can be reprocessed to extract the purified metallic, organic, and inorganic components that are required for the manufacturing process. The procedures for doing so can also be found in the protocols page. For example, protocol 21000 produces common inorganics, metals, and organics from magmite.
Provided you have enough magmite onboard, this is easily accomplished by sending the command to your drone:
<run> 21000 perform </run>
Synthesizing complex materials and spacecraft parts
Of course, advanced technologies are often made from more complex materials like alloys and polymers. So, there is a whole set of protocols that are designed to build increasingly advanced substances from the materials you pull out of mined minerals.
Take for example, the protocol that produces simple polymers from common organics and inorganics (protocol ID 12051):
<run> 12051 perform </run>
In a similar manner, you can use the procedures listed on the protocols page to synthesize parts from materials, systems from parts, and modules and hulls from systems.
Selling your resources
At any point along the way you can sell the materials you've produced for a profit.
When you send the following command to your spacecraft, it instructs your drone to place a sell order (Protocol ID = 7) for all (reserve = 0) the Neptine (Resource ID = 1000) in your cargo hold at 10 credits per unit.
<run> 10 0 1000 7 perform </run>
After placing this order, you'll be able to find your sell order listed on the open market. This will allow other players to remove Neptine from your cargo hold at the indicated price.
Defining new words
FORTH makes it very easy to define and apply new functions on the run. In FORTH, functions are known as words and they'll be added to your spacecraft's dictionary as soon as you define them in an email. Once in the dictionary, they can be invoked in any future script you send to your drone.
A FORTH definition consists of a colon followed by the word you're defining and then the values and words that comprise the definition. The definition ends with a semicolon. Here's an example of how you can define a word that returns your spacecraft to Earth.
<run> : return_home 3 5 perform ; </run>
Now, whenever you want to call your spacecraft back to Earth you simply need to send it this command.
<run> return_home </run>
Passing external parameters to a word
FORTH also allows you to pass missing parameters to a word by placing them in front of the word
For example, suppose you wanted to define a more general movement command. You could create a new word that invokes the movement protocol but leaves the location unspecified:
<run> : go_there 5 perform ; </run>
Now you can send your spacecraft to Jupiter (Object ID = 5), or any other location, by placing the destination's Location ID in front of your new command:
<run> 5 go_there </run>
Getting out of trouble
It's definately possible to break your drone by sending it code that puts it into an endless loop or damages an important part of its memory. In these cases your spacecraft will become completely undresponsive to subsequent <run> commands. However, it's not hard to recover from these situations if you know what to do.
Sending "<reset>" to your drone will not only stop any active scrpts, it will also reset your spacecraft's internal memory to its "factory setting," erasing any damage you might have done to its internal memory. This metacommand will also erase any words you defined earlier. But sometimes its good to start with a clean slate.
Learning more about the game
Your spacecraft can perform far more complex computations, operations, and actions than those described here. Although we've highlighted a few of the most common functions in this quick start guide, we’re also developing a more complete Player’s Manual on GitHub that covers every aspect of the game and the FORTH programming environment.