For the complete documentation index, see llms.txt. This page is also available as Markdown.

Social Features

All out provides text and optional voice chat for you to use in your games

Reading Chat

Use core_globals.server_on_chat_message_received when game code needs to react to normal chat messages on the server:

ao_before_scene_load :: proc() {
    core_globals.server_on_chat_message_received = on_chat_message;
}

on_chat_message :: proc(player: Player, message: string) {
    log_info("% said %", {player.get_username(), message});
}

Chat API reference

Chat :: struct {
    Mode :: enum {
        DEFAULT;
        BUBBLE_ONLY;
    }

    set_mode :: proc(mode: Mode);
    server_send_message :: proc(message: string, player: Player = null);
    is_open :: proc() -> bool;
}

Chat.server_send_message is for server-side code such as chat command handlers. Pass player to target one player, or leave it null to send broadly. Use Chat.set_mode(.BUBBLE_ONLY) on the local client for games that want bubble chat without the standard chat panel.

Chat Commands

Chat commands are mostly a developer/admin tool for testing and live-ops:

  • Start rounds early / skip waves

  • Grant test item sets or currency

  • Trigger game events for debugging

To create a command, write a proc and annotate it with @chat_command.

Players can type commands into chat with a leading /:

  • /start_round

  • /grant_test_loadout

  • /trigger_event meteor_shower

Chat commands run on the server. Use Notifier.notify(player, "...") to send feedback back to a single player.

Common dev/admin commands

Permissions

Use permission annotations to control who can run a command:

Annotation
Who can use

@any

All players

@vip

VIP players and admins

@youtuber

Youtuber players and admins

@owner

Game owner and admins

@owner_or_editor

Game owner, editors, and admins

(none)

Admins only

When launching from the editor, chat commands are allowed for faster iteration/testing.

Arguments & optional parameters

The first parameter must always be Player. After that you can add arguments (and give them default values to make them optional).

By default, commands are admin-only.

Supported argument types are string, integer types, floating-point types, bool, and Player.

Admins can call:

  • /give_currency → gives 100 coins

  • /give_currency 500 → gives 500 coins

Strings with spaces

Wrap strings in quotes if they contain spaces:

Example:

Getting command usage

Players can append ? to a command to see parameter info:

Enabling Voice Chat

Players control voice chat through their account and device settings. Games cannot force it on or bypass microphone permission, parental controls, or moderation restrictions.

Voice is positional. The default audible range is 10 world units:

Set a positive range during scene startup:

Voice.set_range changes the scene-wide range. Non-positive values are ignored.

Communication channels

Each player has speaking and listening masks that apply to both voice and text chat. Two players can communicate when the sender's speaking mask overlaps the receiver's listening mask.

Players listen and speak on all channels by default.

Moderation

All Out automatically monitors text and voice chat for behavior that violates our community guidelines and will disable social features for first offenses or apply suspensions for repeat offenders.

If you see repeat bad behavior or behavior that makes it past our automated detection, please report the player to us using the in-game report system or from their profile.

If a player has been suspended accidentally, please direct them to contact us to reverse the action.

Last updated