旅人手冊 ・ Traveler's Handbook
妖師驛站怎麼玩
這裡的東西,都是之前經過的人留下來的。你不需要完成它,留下一點就好。
這一頁把整個驛站講清楚:三分鐘上手,也有給想深入的人看的細節。
1這裡是什麼
妖師驛站是一個陌生人接力創作的地方。每個世界都有一個未完成的作品:可能是一段會動的程式、一張塗鴉、一段故事。經過的旅人看一看,加上一點自己的東西,再把它留給下一位。
它不是留言板,也不是寫程式的工具。每個人只留下一棒:一筆、一句話、一行程式、一個任務。作品是大家輪流長出來的。
不用登入
第一次進來就拿到一個旅人的名字,可以直接開始。
不會弄壞別人的
每一棒都會留著。你提交的是「新的一棒」,不是改掉舊的。
程式在沙箱裡跑
作品的程式只在你的瀏覽器裡一個隔離的小房間執行,碰不到這個網站。
2三分鐘上手
- 進入一個世界。在驛站入口按 接下一棒,會隨機帶你到一個正在等人的世界。想自己挑,往下捲到「旅人地圖」,可以照最活躍、最新世界、等待下一棒排序。
- 看看上一位旅人留下的。左邊會告訴你這個世界正在做什麼、有哪些規則,還有上一位旅人留給你的話。中間的預覽就是現在的作品。
- 加上一點自己的。在 </> 程式 改一行、在 🎨 塗鴉 畫一筆,或在 📝 文字 留一句話。按 ▶ 執行(或 Ctrl / ⌘ + Enter)看結果。
- 提交這一棒。按右下角的 提交這一棒,寫一句你做了什麼,留一句話給下一位。可以順手留一個任務,例如「讓雨滴開始移動」。
- 繼續旅行,或看看自己的版本。提交後會看到「你留下了一道新的足跡」。下一位陌生人,就從你這裡開始。
用示範世界練一次:今晚,一起替小城點亮月亮
這個世界的第一棒把夜空和城鎮畫好了,但一顆星星都沒有。主線任務是「讓天空出現第一顆星星」。做法:打開 </> 程式 → 選 JavaScript → 在最下面加一行:
addStar(30, 20)
按 ▶ 執行,天空會出現一顆星星。再按 提交這一棒,在「你這一棒做了什麼」寫「加了第一顆星星」,在「完成了哪個任務」選那個主線任務,然後留一個新任務給下一位,例如「讓星星閃一閃」。這樣就完成了一棒。
3世界頁的畫面
桌機是三欄,手機用底部的四個分頁切換:創作、任務、留言、歷史。
| 區塊 | 裡面有什麼 |
|---|---|
| 左欄・任務 | 「這個世界正在做什麼」是世界的提示與規則。「上一位旅人留給你」是交棒筆記。下面是任務清單,主線任務會特別標出來。 |
| 中間・創作區 | 三個分頁(程式、塗鴉、文字)、▶ 執行、LIVE PREVIEW 預覽,以及預覽下方的小主控台:程式裡的 console.log 和錯誤訊息會顯示在這裡。 |
| 右欄・旅人筆記 | 現在同時在這個世界的旅人,和給下一位的留言。有人提交新的一棒時,這裡也會出現一則系統紀錄。 |
| 下方・世界足跡 | 這個世界所有的棒次畫成一條條世界線。點任何一棒可以預覽那時候的樣子、從那裡開一條新世界線,或回報。 |
| 右下角・動作列 | 建立新世界線 與 提交這一棒。左邊的小字會告訴你目前的狀態,例如「有還沒留下的改動」。 |
| 右上角・你的名字 | 點一下可以改名,最多 12 個字。 |
正在編輯時,別人先提交了怎麼辦?
畫面上方會出現一條橫幅告訴你有新的一棒。你可以先看看對方做了什麼(預覽會切換,你編輯器裡的東西不會動),也可以載入最新版;載入前,你目前的改動會先存成草稿。
4三種創作方式
</> 程式
分成 HTML、CSS、JavaScript 三個分頁。HTML 是畫面的內容,CSS 是樣式,JavaScript 在畫面載好之後執行。三個都可以留白;很多世界只需要你在 JavaScript 最下面多加一行。右上角的字數會告訴你還有多少空間(HTML 與 CSS 各 100KB、JavaScript 150KB,一般人用不到十分之一)。
改完按 ▶ 執行 才會重新跑;提交前預覽的就是別人之後會看到的。
🎨 塗鴉
直接在畫布上畫。上一位旅人畫的會留在底下當底圖,你只能復原自己的筆畫,不能擦掉別人的。塗鴉會鋪在作品的最上面,所以可以在程式做出來的畫面上加東西。一張圖最多 4000 筆,畫滿了會提醒你先提交。
📝 文字
留一句話、一段對白、一個角色的名字。不會被當成程式,也不會被當成 HTML,寫什麼就是什麼。
一棒可以同時用三種。畫一筆、改一行、再留一句話,都算同一棒。不需要每一種都用;只留一句話也是完整的一棒。
5任務與交棒筆記
任務
任務是上一位旅人留下來的小目標,例如「讓雨滴開始移動」。主線是這個世界的方向,其他是小支線。按 接任務 會把它標成你正在做,保留 30 分鐘;30 分鐘沒提交就會自動放開,讓別人可以接。
看到「某某正在嘗試」代表有人接了,但這不是鎖:你還是可以做同一件事,先提交的先算。你也可以不接任務,就只是留下一點東西。
提交時會問你四件事
- 你這一棒做了什麼?一句話,最多 300 字。必填,因為世界足跡上會顯示它。
- 留給下一位旅人的話。最多 500 字。這會出現在下一位旅人的「上一位旅人留給你」,是驛站最重要的東西:告訴他你卡在哪、想往哪走。
- 這一棒完成了哪個任務?可以不選。
- 留一個任務給下一位。最多 80 字,可以不留。留了,下一位就有方向。
好的交棒筆記長這樣:「我讓雨開始下了,但雨滴會穿過屋頂。下一位可以試著讓雨滴碰到屋頂就消失;屋頂在 .roof 這個元素。」具體、短、指出下一步。
6世界線與衝突
每個世界一開始只有一條「主線」。你可以從任何一棒開一條新的世界線:從那個時間點分岔出去,走自己的方向,主線不受影響。做法有兩種:動作列的 建立新世界線(從你目前站的那一棒開始,你的改動會跟著過去),或在世界足跡點某一棒,選 從這裡開世界線。
衝突是什麼
你在編輯的時候,另一位旅人先提交了一棒。這時你提交會看到「另一位旅人在你之前留下了一棒」。他的不會覆蓋你的,你的也不會覆蓋他的。你有兩個選擇:
- 看看新版本:先看對方做了什麼,你的改動還在編輯器裡,可以在他的基礎上再改一次、再提交。
- 把我的作品建立成新世界線:兩個版本各走各的,都留著。
這件事由伺服器判斷,不是畫面上猜的:只有「你出發的那一棒」還是這條線的最後一棒時,提交才會接上去。所以永遠不會有人的作品被默默蓋掉。
7沙箱:能做與不能做
作品的程式永遠在一個隔離的 iframe 裡執行,跟這個網站不同來源,碰不到頁面、cookie 或你的任何資料。這是為了讓陌生人的程式可以放心地在你的瀏覽器裡跑。代價是有些事做不到:
| 想做的事 | 可以嗎 | 怎麼辦 |
|---|---|---|
| 畫圖、動畫、CSS、Canvas、SVG | 可以 | 這是驛站的主場。 |
console.log、錯誤訊息 | 可以 | 顯示在預覽下方的主控台。 |
| 載入網路上的圖片、字型、影片 | 不行 | 外部網址載不進來。用 emoji、CSS 畫、SVG,或塗鴉分頁。 |
fetch、XMLHttpRequest、WebSocket | 不行 | 沙箱沒有網路。作品只能用自己帶著的資料。 |
| 存東西(localStorage、cookie) | 不行 | 每次執行都是乾淨的。要留下東西,就提交一棒。 |
| 無限迴圈、跑太久的程式 | 會被停下 | 畫面會出現「這段魔法跑太久,妖師已經把它停下來了」。改一下再按重新執行。 |
| 碰這個網站的頁面、跳轉、彈出視窗 | 不行 | 沙箱刻意擋掉,這是保護每一位旅人。 |
迴圈防護的原理:提交的程式在執行前,每個迴圈的條件式會被加上一個計數器,超過三百萬次就停下來。所以 while (true) 這種寫法會被攔住,但一般的動畫、requestAnimationFrame、setInterval 都正常。
8旅人、名字與隱私
- 不用登入。第一次進來,瀏覽器會拿到一個匿名的旅人編號和一個像「路人 F23」的名字,加上一個表情符號當頭像。重新整理不會換人。
- 可以改名。點右上角的名字,最多 12 個字。改名只影響之後的紀錄,以前留下的棒次還是顯示當時的名字。
- 名字跟著這個瀏覽器走。換一台裝置、換瀏覽器,或清掉 cookie,就會變成另一位旅人。目前沒有帳號可以把兩邊接起來。
- 驛站只存一個匿名編號。不收 email、不收電話、不追蹤你看了什麼。
- 你留下的東西是公開的。作品、留言、交棒筆記,任何人都看得到。請不要留下自己或別人的個人資料。
9規矩、留言與回報
每個世界自己的規則
世界頁左上角會列出來,例如示範世界的三條:不要刪掉別人的主要角色、每次只增加一點東西、留下一個提示給下一個人。這些是約定,不是程式擋的。請照著做,這是接力能一直走下去的原因。
留言
右欄的旅人筆記是純文字,最多 1000 字,不會解析任何標記。自己的留言可以刪,別人的可以回報。
每一棒都會留著
提交過的棒次不能改、不能刪,這樣世界足跡才是真的。留錯了,就再提交一棒把它修掉,或開一條新世界線。真的有問題的內容,請用回報。
回報
世界足跡的每一棒、每一則留言旁邊都有 回報。原因有垃圾內容、騷擾、成人內容、危險或違法、惡意程式碼、侵權、其他。站主會看過,違規的那一棒會被隱藏,世界退回前一棒;歷史不會被刪掉。
為了讓大家都好過的限制:每 10 分鐘最多提交 5 棒、留言 10 則、開 5 條世界線;每小時最多回報 10 次。超過會看到「太快了」,等一下就好。
10常見問題
我不會寫程式,也可以玩嗎?
可以。畫一筆、留一句話,都是完整的一棒。很多任務也不需要程式,例如「幫怪物取個名字」。想試程式的話,從示範世界的 addStar(30, 20) 開始,一行就好。
提交時說「另一位旅人在你之前留下了一棒」,我的東西不見了嗎?
沒有。你的改動還在編輯器裡。看看對方的版本後再提交一次,或把你的作品開成新世界線。詳見世界線與衝突。
畫面說「這段魔法跑太久」,是我寫壞了嗎?
通常是迴圈沒有出口,例如 while (true) 裡沒有 break。沙箱會把它停下來保護你的瀏覽器。改完按重新執行就好。
我放了圖片網址,為什麼載不出來?
沙箱沒有網路,外部圖片、字型、影片都載不進來。改用 emoji、CSS 或 SVG 畫,或直接用塗鴉分頁畫上去。
可以刪掉我提交的那一棒嗎?
不能,每一棒都會留著。可以再提交一棒把它改掉,或從前一棒開一條新世界線。如果內容有問題,用回報讓站主處理。
換手機還會是同一個旅人嗎?
不會,旅人跟著瀏覽器走。目前沒有帳號功能。
接了任務一定要做完嗎?
不用。30 分鐘沒提交會自動放開,別人可以接。接任務只是告訴大家「我在試」。
我想開一個新世界,怎麼做?
目前世界由站主建立。有想法的話,透過 LINE 小助理告訴曉晨藥師:世界的標題、一句話的提示、幾條規則,還有第一棒想長什麼樣子。
沒有東西可以接怎麼辦?
旅人地圖切到「等待下一棒」看看還有哪些世界在等人。都沒有的話,隨便進一個世界留一句話,也是一棒。
準備好了嗎?
留下一點就好。不需要完成它,幫下一位旅人多走一步。