誌 開發日誌 做了什麼 · 試過什麼 · 否決了什麼 · 留下了什麼
進行中 super-reversi2 G17 2026-W35

房主跑了,剩下的人接手

37 commits 15659ef^..8154e68 ↗

連線亂鬥做出來了。沒有中央伺服器,所以房主掉線這件事得自己解,最後的做法是讓剩下的人繼位。

AbstractOnline melee shipped. With no central server, a host dropping out is a problem you have to solve yourself, and the answer turned out to be letting a remaining player take over the room.

那時候在想什麼

連線對戰本來就排到了,而且是時候做了。

七週前我拿掉單機雙人對戰的時候寫過,與其做兩個人擠一支手機,不如以後做連線。那個以後就是這一週。

實際做了什麼

一天做完 M1 到 M3。

先是亂鬥的淘汰制,接著是連線的骨架:棄戰的動詞、信封的協定、由房主當權威中繼的連線層。再來是槽位房,一個房間開多個槽,二到四個真人星型撮合,有開桌模板跟候客名單。

然後是最麻煩的那一塊。

沒有中央伺服器的話,房主掉線整局就散了。我的解法是繼位:房主一走,凍結窗先撐住,剩下的人裡選一個接手,重建連線、遲到的歸隊。為了讓繼位當下不會斷在半路,客人跟客人之間還要預先掛一條備援線。

如果房主是在對局中途走的,他的位子不會空著,剩下的人接管他的 AI 繼續打完。那是初期真人亂鬥的設計,我想用最簡單的方式解決房主斷線,最後也做到了。

另外進客棧之前現在會擋一張卡,第一次進來必須先取俠名,想不到的話有代擬。要有身分才能連線,那樣比較有沉浸感。

試過但沒留下

mesh。

我原本想的是所有人互相連成一張網。實際做下來,星型組織加上繼位比 mesh 更好。

結論

繼位這一整層是沒有伺服器的代價。有中央伺服器的話,這些全部不用做。

我沒有動搖過。原則還是那個:除非是積分排行榜那種具有半永久身分性的東西,才會用到伺服器,而目前還不需要。

那一週我的工作方式也變了。我開始用雲端開發,程式碼已經不在我自己的電腦上。完成一個階段之後開 PR,我來審核。

所以這一天有七個 PR。這個專案前面六百多個 commit,總共才七個。

至於 Discord,還是沒有人。玩的還是我朋友跟我老婆。