在 2019 年 8 月初的時候剛好有一款停止營運的網頁遊戲公開了原始碼,因為是一款有著即時對戰機制的遊戲因此相對於線上遊戲來說比較不複雜,但是內容豐富程度也不會太過單調。因此就跟朋友開始架設跟營運這款遊戲,既然都要讀原始碼了解這款叫做 Unlight 的遊戲,不如就跟大家分享一下 Unlight 在「連線」機制上的設計,還有實際上要怎麼寫出自己的連線框架。
正常情況下我們開發這類伺服器應用每當修改程式後都需要重新啟動,不過 Ruby on Rails 卻可以在不重新開啟的狀況下不斷修改跟測試,這極大的改善了開發速度...
前面幾篇我們已經針對建構 WebSocket 做了一定程度的準備,接下來就要將 WebSocket 連線從預設的行為接手回來改為用我們自己的方式來進行管理。這樣...
現在我們的伺服器已經可以處理 WebSocket 連線並且透過我們自定義的物件來管理,不過當接收到指令的時候還是無法直接執行。因為已經採用 WebSocket...
伺服器的部分我們已經有一個大概的雛形可以使用,所以我們先切換到客戶端把遊戲的操作設計進去。雖然可以直接繼續把伺服器開發完畢,不過能看到專案動起來也是很重要的。...
到目前為止我們已經能讓遊戲的操作跟伺服器連結起來,可以透過伺服器去管理一些行為的操作。不過要讓其他玩家能夠出現在地圖上,我們就必須調整現階段的程式碼讓伺服器能夠...
當我們已經能夠管理所有線上的玩家後,需要再進一步做的處理就是將其他玩家都顯示出來。因此我們要先增一個叫做 join 的指令表示有一個玩家進入了地圖。 Playe...
在我們將加入地圖的指令處理完畢後,我們就能夠收到來自其他玩家的「加入」資訊,也就能夠呈現其他玩家在地圖上並且做出反應。不過原本 RPG Maker 所支援的只有...
在上一篇我們注意到客戶端的邏輯如果都放在同一個檔案(SimpleRPG_Map.js)裡面是相當混亂的,因此我們需要稍微區分不同的職責來處理。在前面提到的 Un...
經過重構之後我們終於可以回到「後加入的玩家看不到之前玩家」的問題,這個問題源自於我們在玩家加入時並沒有發送任何資訊給新加入的玩家「線上有多少人」 處理的方式我們...
現在我們已經可以完整的同步不同玩家的資訊,不過依舊無法將玩家的狀態保存在伺服器。因此我們需要改寫伺服器來保存狀態,受限於內容長度以及 RPG Maker MV...