Glossary
This page provides a glossary of common terms and words along with short descriptions.
AUX
AUX commonly stands for Automatic User Experience but it can also stand for Ambient User Experience.
AUX (pronounced "awks") is a term that we use to talk about an computer system that provides access to an interactive model for multiple people across multiple devices and geographic locations. This means that AUXes are designed to work on a wide variety of devices (phones, laptops, VR headsets, etc.), and they remain synced regardless of where in the world you are.
With respect to CasualOS, every inst is an AUX because CasualOS does the hard work to ensure that everything is synced and works across all connected devices.
You may also come across the term "AUX File". AUX files are files that use the .aux
filename extension and contain JSON formatted data which represents a set of bots and their tags.
AUX Files come in two different versions:
- Version 1
- Version 1 AUX Files contain a snapshot of a set of bots as pure JSON. They are most useful for when you would like to save and reload the exact state of bots or when you would like to export bot data to an external system.
- Version 2
- Version 2 AUX Files contain a set of conflict-free updates to a set of bots as base64 encoded strings embedded in JSON. They are most useful for when you would like to ensure the initialization of a shared inst doesn't run into issues with duplicated data or when you want to manually share a set of changes offline.
Usually, AUX files are utilized as an easy way to save/load bots from an inst.
ab-1
ab-1 is a set of bots that augment the built-in CasualOS portals and behavior to make authoring experiences easier. When an instance is started, ab-1 is automatically loaded for convience.
See Also
Bot
Bots are containers of data and behavior. Bots live in instances and each bot has a unique identifier. Additionally, a bot contains one or more tags that define the properties and behavior of the bot.
CasualOS
CasualOS a website that makes it easy to author AUXes and share them with other people. Computers that run CasualOS are called servers and can host instances.
CasualOS is maintained by a non-profit company called Casual Simulation and is free for anyone to use. The source code for CasualOS is MIT Licensed and can be copied and reused for free by anyone.
Data Record
A Data Record is a piece of information that is stored in a record and is accessed by an address. Data records can be overwritten with new information and can only store up to 300KB of data.
Data records are most useful for storing relatively lightweight information that can change over time.
See Also
- Record
-
os.recordData(recordKey, address, data, optionsOrEndpoint?)
-
os.getData(recordKeyOrName, address, endpoint?)
Dimension
Dimensions are the names of tags that are used by bots in the instance. They are most commonly used by portals to show only some of the bots in the instance in the portal.
For example if you have three bots and two of them have the #home=true
tag,
you can use the home
dimension with a portal to show only the bots that have the #home=true
tag.
Event Record
A Event Record is a way to track how many times a particular action/event occurred and is stored in a record and is accessed by a name.
Every event record starts with a count of 0 and can be incremented by using os.recordEvent(recordKey, eventName)
and the current count can be accessed with
os.countEvents(recordNameOrKey, eventName)
.
Event records are most useful for basic analytics.
See Also
File Record
A File Record is a piece of information that is stored in a record and is accessed by a unique URL. Once uploaded, file records cannot be changed and are publicly available.
File records are most useful for storing heavy data (images, MP3s, etc.) that does not change.
See Also
gridPortal
The gridPortal
is a portal that draws bots as 3D cubes on an infinite grid of squares.
See Also
Pictures of gridPortal
Image Classification
Image Classification is a technique that tries to calculate how likely a given image is to fit into each of the given categories. For example, you may want to know if a particular image most looks like a Banana or an Orange. Image Classification can be used to help answer this problem.
Image classification in CasualOS utilizes Machine Learning via a tool called Teachable Machine. Additionally, CasualOS only supports image classification via the camera(s) on your device.
As a result, the technique is split into two parts:
- Manual data collection and model training.
- Automated categorization of images based on the trained model.
Data Collection and Training
In order to automatically classify images, we need to generate an efficient description of what our categories look like. This is called "model training". Ideally, we only need to train a model once and then we can re-use it forever.
In CasualOS, we do that by using Teachable Machine to create an image model.
We can gather a bunch of images and manually categorize them. Then we can "train" a model on those images to produce a model which is a description of what our categories look like. (i.e. a model could be trained to contain a description of what a banana looks like)
Using the trained model
Once we have a model, we can tell CasualOS to process the camera feed and classify each image with it.
It is possible to run an image model with the
os.openImageClassifier(options)
function.
Following the above description, we can do image classification in CasualOS:
- To create a model, go to https://teachablemachine.withgoogle.com/ and click "Get Started".
- Create an "Image Project" and choose "Standard Image Model".
- Add or record photos in each class.
- Click "Train".
- Once training is done you can get a model URL by clicking "Export Model".
- Under "Tensorflow.js", choose "Upload (shareable link)" and click "Upload". You can also optionally save the project to Google Drive.
- Once uploaded, copy the shareable link.
- Create a bot with an
@onClick
tag and put the following code in it (replacingMY_MODEL_URL
with the shareable link):await os.openImageClassifier({
modelUrl: "MY_MODEL_URL"
});
See Also
-
os.openImageClassifier(options)
-
os.closeImageClassifier()
-
@onImageClassified
-
@onImageClassifierOpened
-
@onImageClassifierClosed
Instance
An instance (also known as an inst) is a shared simulation of bots hosted on a CasualOS Server.
Manual Approval Data Record
A Manual Approval Data Record is a data record that is only accessible by manual user approval.
See Also
- Data Record
- Record
-
os.recordManualApprovalData(recordKey, address, data, optionsOrEndpoint?)
-
os.getManualApprovalData(recordKeyOrName, address, endpoint?)
mapPortal
The mapPortal
is a portal that draws bots as 3D cubes on an 3D map of the Earth.
See Also
Pictures of mapPortal
miniGridPortal
The miniGridPortal
is a portal that draws bots as 3D cubes on an infinite grid of squares.
Unlike the gridPortal, the miniGridPortal
only covers the lower portion of the screen.
See Also
Pictures of miniGridPortal
miniMapPortal
The miniMapPortal
is a portal that draws bots as 3D cubes on an 3D map of the Earth.
Unlike the mapPortal, the miniMapPortal
only covers the lower portion of the screen.
See Also
Pictures of miniMapPortal
Portal
Portals are places where humans can interface with bots. Portals utilize dimensions to allow interacting with and visualizing subsets of bots.
A list of built-in portals is available on the configBot
documentation.
See Also
Record
A Record is a named collection of publicly accessible permanent data. Records make it possible to store multiple distinct pieces of information in various forms and access them only when needed.
Record keys can be used to publish data to records, while any data that has been published to a record is publicly accessible.
There are currently two types of information that can be stored in records:
See Also
Record Key
Record Keys are password-like values that can be used to publish data or files to a record. Since record keys are used to authorize publishing information to a record, they can only be created by the user account that created the first record key for the record.
See Also
Server
A server is a computer or set of computers that are configured to make a website available over the internet. For CasualOS, the term "server" can be an easy way to refer to a particular deployment of CasualOS.
There are several different CasualOS servers, and they are configured for different use cases. For example common servers support synchronizing inst data across multiple devices, while static servers do not. You can find an incomplete list of servers below.
Common
Common servers support all the features CasualOS is known for: scripting, records, and multi-device collaboration. Each common CasualOS server can host many instances.
Additionally, common servers are updated immediately whenever a new release is published to the CasualOS GitHub repository by the development team.
Static
Static servers support all CasualOS features except multi-device collaboration. This makes them useful for canned experiences that would be too expensive to make on common servers.
Stable
Stable servers support all CasualOS features just like common servers. The only difference from common servers is that stable servers are updated one week after common servers. This can make it easier to catch bugs introduced by newer versions of CasualOS.
Alpha
Alpha servers support all CasualOS features just like common servers. The only difference from common servers is that they are updated to test features before they are released to the public. This makes it easier for the CasualOS development team to catch bugs and test features before the common servers are updated.
sheetPortal
The sheetPortal is a portal that makes it easy to view and edit bots which are in a dimension.
It can be opened by setting the #sheetPortal
tag on the configBot
to a dimension (such as "home"), or by clicking and selecting the "sheetPortal" button.
The sheetPortal organizes bots in columns where each bot is a column and each tag is represented along a row. Visually, this is similar to how a spreadsheet is displayed.
See Also
-
#sheetPortal
-
#sheetPortalShowButton
-
#sheetPortalButtonIcon
-
#sheetPortalButtonHint
-
#sheetPortalAllowedTags
-
#sheetPortalAddedTags
-
sheetPortalBot
systemPortal
The systemPortal is a portal that makes it easy to find and edit bots by their #system
tag.
It can be opened by setting the #systemPortal
tag on the configBot
to true
.
Additionally, it can also be opened by holding down the Shift key, clicking , and then selecting "systemPortal".
The systemPortal organizes bots by their #system
tag.
#system
tags that have multiple sections split by a period (.
) will be placed in different folders in the systemPortal.
Additionally, the "Search Bots" input box in the systemPortal can be used to filter bots by their #system
tag.
For example, the first section might be the name of the app bundle, the second section would be the area that the bot belongs in, and the third section would be the name of the bot.
e.g. myAppBundle.managers.timeline
would specify that a bot belongs in myAppBundle
and is one of the manager bots.
The systemPortal would then show each bot organized by #system
tag.
See Also
-
#system
-
#systemPortal
-
#systemTagName
-
#systemPortalBot
-
#systemPortalTag
-
#systemPortalTagSpace
-
systemPortalBot
Tag
Tags are pairs of names and their corresponding values. Each tag lives in a bot and represents an attribute of the bot.
For example if a bot has a tag named color
, and that tag has the value blue
, then we would say that bot has #color
set to blue
. ("the color tag is set to blue")
In CasualOS, tags are used to store data as well as a way to program automations that respond to user actions.
CasualOS has predefined automations for some tags. We call these tags "built-in tags" and they can be used to quickly decorate bots or control some of their behavior.
For example, the #color
tag can be used to change the color that a bot is displayed with while the #label
tag can be used to show a text label on a bot.
tagPortal
The tagPortal is a portal that is used to view and edit a single tag on a single bot.
The tagPortal can be opened by setting the #tagPortal
tag on the configBot
to a string matching the following format: {botID}.{tagName}
.
Where {botID}
is replaced with the ID of the and {tagName}
is replaced by the name of the tag that should be shown in the portal.
Portals are places where humans can interface with bots. Portals utilize dimensions to allow interacting with and visualizing subsets of bots.
A list of built-in portals is available on the configBot
documentation.