send_o 註釋

(請注意:中文(臺灣)內容設於下方) Target version: 4.1.5 Square

Game Introduction

send_o is a sandbox puzzle game composed of texts. Players place various elements (conveyor, spring, piston, etc.) to guide particles from spawner(s) to collector(s), reaching a target count to clear each level.
The game also features a sandbox level, allowing players to freely design, export, and import custom levels.

Basic Controls

Mouse

• Left click: Place element / Select element
• Left click + drag: Continuous placement / Move element ("SELECT" tool)
• Right / Middle click + drag: Pan the view
• Right click: Open context menu (copy, paste, rotate, delete, etc.)
• Drag the "send_o" title: Move the sidebar

Keyboard Shortcuts

• Space: Start / Pause
• S: Switch to "SELECT" tool
• C: Switch to "CONVEYOR" tool
• P: Switch to "SPRING" tool
• W: Switch to "WALL" tool
• T: Switch to "PISTON" tool
• E: Switch to "TELEPORTER" tool
• G: Switch to "SPAWNER" tool
• O: Switch to "COLLECTOR" tool
• R (with selection): Rotate
• D / Delete (with selection): Delete
• CTRL (or command) + Z: Undo
• CTRL (or command) + Y: Redo
• CTRL (or command) + C / X / V: Copy / Cut / Paste
• Escape: Deselect / Cancel paste mode

Others

The game can show a debug overlay in the bottom-right corner: ?debug=1 compact summary; ?debug=2 detailed summary; ?debug=3 even more detailed summary.

Game Modes

• Level Mode: Play built-in levels (1. GRAVITY, 2. WALLs, 3. PORTALS, etc.). Players can place elements in empty cells to guide particles. Upon clearing, the level automatically switches to Movable Mode.
• Movable Mode: Entered after clearing a level, or when importing a level with the "MOVABLE" checkbox checked. All elements (including preset level elements) can be freely moved and deleted. Spawner, Collector, and Teleporter tools are fully unlocked.
• Sandbox (0. SANDBOX): Always in Movable Mode. Comes with a randomly generated maze for player to kill time. Supports importing and exporting custom levels.

Element Reference

Wall #

A static obstacle. Particles bounce off according to their angle of incidence.
Valid rotations: 0°, 90°, 180°, 270°.

Horizontal walls (90° or 270°) are immovable by pistons — boundary walls default to this orientation. In Movable Mode, boundary walls can be rotated to allow piston interaction.

Conveyor >

Continuously applies a directional force to any particle touching it.
Valid rotations: 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°.

Spring U

When a particle touches it, launches the particle at high speed in the spring's facing direction, then enters a cooldown (symbol changes to ░). Resets when cooldown finishes.
Valid rotations: 0°, 90°, 180°, 270°.

Piston [T]

When a particle approaches, the piston head extends in its facing direction, pushing elements ahead and applying velocity to particles. On retraction, it pulls elements behind the head back.
Valid rotations: 0°, 90°, 180°, 270°.
Stops its push chain upon encountering a horizontal wall, but can still push elements that have free space before the wall.

Teleporter P

Consists of a start (purple) and an end (blue). Particles that touch the start are instantly teleported to the end position with a brief cooldown to prevent re-triggering.
Place the start first, then click to place the end and pair them.
Cannot be rotated.

Spawner [G]

Periodically spawns particles below itself (default: every 90 ticks). Pauses when the on-field particle count reaches the level's maxParticles.
Cannot be rotated. Particle types (spawnType): o (white), * (yellow), = (red), # (cyan), + (green), $ (magenta). (actually built-in levels never use other particles than "o")

Collector [@]

Automatically collects any particle that enters its cell, incrementing the count and playing a sound. While meeting the level's targetCount, the HUD counter turns green.
Cannot be rotated.

Level JSON Format

Top-level Fields

id (required): level identifier, lowercase letters and digits only, max 50 chars. E.g. itsmygo11111
name (required): Display name shown in the level selector, max 100 chars.
description: Level description, max 500 chars
width / height: Playfield dimensions in pixels, default 800 × 600. Should be multiples of 32.
maxParticles: Maximum on-field particle count (positive integer). Spawners pause when this limit is reached.
targetCount: Pass condition — total particles collected across all collectors. Set to 0 for infinite (level can never be cleared).
speed: Simulation speed multiplier. Values > 1 speed up; values < 1 slow down. Default 1.
spawnNum: Total particles each Spawner produces per active session. 0 = unlimited.
gravity: Gravity scale. 0 = zero-g, negative = upward gravity, 1 = normal downward gravity.
buildBoundary: Whether to generate boundary walls around the playfield edges. true (default) or false. Player-placed elements will not be replaced while building boundary.

Elements Array

Each element object contains:

x / y (required): Grid position in cartesian coordinates (origin at bottom-left, x increases right, y increases up).
tool (required): Element type. One of: wall, conveyor, spring, piston, spawner, collector, teleporter.
rotation: Integer rotation angle in degrees.
  — Conveyor only: 0, 45, 90, 135, 180, 225, 270, 315
  — All others: 0, 90, 180, 270
  — Spawner, Collector, Teleporter: field not needed (rotation has no effect)
  — Any other value (e.g. 123, -1, 114.514, "x x xxx") causes a validation error
serialId: Unique integer within the level, used for teleporter pairing.
spawnType (spawner only): Particle type — o, *, =, #, +, $.
interval (spawner only): Spawn interval in ticks. Default 90 (≈ 1.5 s at 60 Hz).
targetCount (collector only): Per-collector collection target.
role (teleporter only): start or end.
pairedSerialId (teleporter only): The serialId of the paired teleporter.

Rotation Reference

Angles are in clockwise degrees. The default facing direction varies by element type:
• Wall: 0° = vertical #
• Conveyor: 0° = pointing right
• Spring: 0° = launches upward
• Piston: 0° = pushes upward

JSON Format Example

{
  "id": "itsmygo11111",
  "name": "MY BEST LEVEL",
  "description": "This the best level you have ever seeeeeem.",
  "width": 800,
  "height": 600,
  "maxParticles": 2304,
  "targetCount": 0,
  "speed": 1,
  "spawnNum": 0,
  "gravity": 1,
  "buildBoundary": true,
  "elements": []
}

Report An Issue

Go to about page for links.

Source

FoleySounds Finger Snap 1 - Collected sound
Share Tech - Game main font

適用版本:4.1.5 Square

遊戲介紹

send_o 是一款以文字組成的沙盒遊戲。玩家需要透過放置各種元素(conveyor、spring、piston 等),引導從 spawner(s) 產生的粒子抵達 collector(s),達到目標數量即可通關。
遊戲同時提供沙盒模式與關卡創作功能,允許玩家自由設計並匯出、匯入自訂關卡。

基本操作

滑鼠

• 左鍵點擊:放置元素 / 選取元素
• 左鍵拖曳:連續放置 / 移動元素("SELECT" 工具)
• 右鍵 / 中鍵拖曳:平移視野
• 右鍵單點:開啟右鍵選單(複製、貼上、旋轉、刪除等)
• 拖曳側欄上的「send_o」標題:移動側欄

鍵盤快捷鍵

• Space:開始 / 暫停
• S:切換至 SELECT 工具
• C:切換至 CONVEYOR 工具
• P:切換至 SPRING 工具
• W:切換至 WALL 工具
• T:切換至 PISTON 工具
• E:切換至 TELEPORTER 工具
• G:切換至 SPAWNER 工具
• O:切換至 COLLECTOR 工具
• R(選取時):旋轉
• D / Delete(選取時):刪除
• CTRL(或 command)+ Z:復原
• CTRL(或 command)+ Y:重做
• CTRL(或 command)+ C / X / V:複製 / 剪下 / 貼上
• Escape:取消選取 / 取消貼上模式

其它

遊戲可在右下角顯示除錯資訊:?debug=1 精簡面板;?debug=2 詳細面板;?debug=3 超級無敵詳細的面板。

遊戲模式

• 關卡模式:遊玩內建關卡(1. GRAVITY、2. WALLS、3 PORTALS 等),玩家可在空格放置元素協助引導粒子,通關後自動切換為 movable 模式讓玩家繼續遊玩。
• Movable 模式:通關後進入此模式,或匯入時勾選 MOVABLE。在此模式下,所有元素(包含關卡預設配置)均可自由移動與刪除,spawner、collector、teleporter 等強到飛起的工具也全部開放。
• 沙盒(0. SANDBOX):預設為 movable 模式,附帶隨機迷宮供玩家耍廢,可隨意改動場地、匯入、匯出自訂關卡。

Elements 說明

Wall #

靜態障礙物,粒子碰到後會被彈開(根據入射角度反射)。
可用角度:0°、90°、180°、270°。
橫向牆壁(90° 或 270°)具有特殊特性:活塞無法推動或拉回它們,邊界牆預設即為橫向。在 movable 模式下可旋轉邊界牆使活塞能正常互動。

Conveyor >

對接觸的粒子施加持續推力,使粒子朝指定方向移動。
可用角度:0°、45°、90°、135°、180°、225°、270°、315°。

Spring U

感測到粒子時,將粒子以較高速度向彈簧朝向的方向彈射出去,之後進入冷卻(符號變為 ░),冷卻結束後恢復可用。
可用角度:0°、90°、180°、270°。

Piston [T]

感測到粒子靠近時,活塞頭向指定方向伸出,推動前方的元素並對粒子施加速度;縮回時拉回後方的元素。
旋轉角度:0°、90°、180°、270°。
遇到橫向牆壁時停止推進鏈,但仍可推送橫向牆前方有空間的元素。

Teleporter P

分為起點(紫色)和終點(藍色)。粒子接觸起點後瞬間傳送到終點位置,有短暫冷卻防止重複觸發。
放置時先點擊起點,再點擊終點以配對。不可旋轉。

Spawner [G]

定時在其下方生成粒子(預設每 90 個 tick 一顆)。當場上粒子數達到關卡的 maxParticles 時暫停生成。
不可旋轉。粒子類型支援:o(白)、*(黃)、=(紅)、#(青)、+(綠)、$(洋紅)。(其實內建關卡只會用 o)

Collector [@]

粒子碰到此元素時會收集,計數加一並播放音效提醒。達到各 collectors 的 targetCount 時 HUD 上的 "COLLECTED" 數字會轉為綠色。
不可旋轉。

關卡 JSON 格式

全域欄位

id(必填):關卡識別碼,只接受小寫英文字母與數字,最多 50 個字元。例如:itsmygo11111
name(必填):顯示於選單的關卡名稱,最多 100 個字元。例如:67. MY BEST LEVEL
description:關卡描述,最多 500 個字元。
width / height:遊戲場地寬高(像素),預設 800 × 600。必須是 32 的倍數以確保格子對齊。
maxParticles:場上粒子上限,接受大於 0 的整數。超過此數量後 spawner 暫停生成。
targetCount:通關目標(所有 collector 收集總量),接受正整數。填 0 表示無限,永遠不會通關。
speed:遊戲速度倍率,接受大於 0 的數值(0.5 = 半速,2 = 雙倍速)。預設 1。
spawnNum:Spawner 單次 active 狀態產生的粒子總數,0 = 無限制持續生成。
gravity:重力大小,0 = 現在處於無重力,-1 = 粒子向上飄,1 = 正常重力。
buildBoundary:是否在場地四周生成邊界牆,true(預設)或 false。玩家如果在邊界牆生成區域上放置其它元素遊戲會略過它並在其它有效區域生成邊界牆。

Elements 陣列

每個 element 包含以下欄位:

x / y(必填):元素在直角座標系的格子座標(左下角為原點 (0,0),向右 x 增加,向上 y 增加)。
tool(必填):元素類型,可選值:wall、conveyor、spring、piston、spawner、collector、teleporter。
rotation:元素旋轉角度(整數度數)。
  — Conveyor 僅接受:0, 45, 90, 135, 180, 225, 270, 315
  — 其餘元素僅接受:0, 90, 180, 270
  — Spawner、Collector、Teleporter 不需要此欄位(旋轉無效)
  — 填入其他數值(如 123、-1、114.514、"x x xxx")會直接報錯
serialId:元素的序列號,用於 teleporter 配對,同一關卡內不可重複。
spawnType(spawner 專用):粒子類型,可選:o、*、=、#、+、$。
interval(spawner 專用):生成間隔(tick 數),預設 90(約 1.5 秒)。
targetCount(collector 專用):此 collector 的收集目標數。
role(teleporter 專用):start(起點)或 end(終點)。
pairedSerialId(teleporter 專用):配對另一端的 serialId

JSON 格式範例

{
  "id": "itsmygo11111",
  "name": "為什麼飯不能咬太久",
  "description": "因為會飯太碎",
  "width": 800,
  "height": 600,
  "maxParticles": 2304,
  "targetCount": 0,
  "speed": 1,
  "spawnNum": 0,
  "gravity": 1,
  "buildBoundary": true,
  "elements": []
}

回報問題

前往關於我頁面取得聯繫方式。

素材來源

FoleySounds Finger Snap 1 - 收集音效
Share Tech - 遊戲主要字體