iT邦幫忙

鐵人檔案

第 11 屆 iThome 鐵人賽
回列表
Software Development

從讀遊戲原始碼學做連線遊戲 系列

在 2019 年 8 月初的時候剛好有一款停止營運的網頁遊戲公開了原始碼,因為是一款有著即時對戰機制的遊戲因此相對於線上遊戲來說比較不複雜,但是內容豐富程度也不會太過單調。因此就跟朋友開始架設跟營運這款遊戲,既然都要讀原始碼了解這款叫做 Unlight 的遊戲,不如就跟大家分享一下 Unlight 在「連線」機制上的設計,還有實際上要怎麼寫出自己的連線框架。

鐵人鍊成 | 共 33 篇文章 | 49 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21 - 實作練習 - Autoload 機制

正常情況下我們開發這類伺服器應用每當修改程式後都需要重新啟動,不過 Ruby on Rails 卻可以在不重新開啟的狀況下不斷修改跟測試,這極大的改善了開發速度...

2019-10-05 ‧ 由 蒼時弦也 分享
DAY 22

Day 22 - 實作練習 - 處理 WebSocket 連線

前面幾篇我們已經針對建構 WebSocket 做了一定程度的準備,接下來就要將 WebSocket 連線從預設的行為接手回來改為用我們自己的方式來進行管理。這樣...

2019-10-06 ‧ 由 蒼時弦也 分享
DAY 23

Day 23 - 實作練習 - 指令執行

現在我們的伺服器已經可以處理 WebSocket 連線並且透過我們自定義的物件來管理,不過當接收到指令的時候還是無法直接執行。因為已經採用 WebSocket...

2019-10-07 ‧ 由 蒼時弦也 分享
DAY 24

Day 24 - 實作練習 - 架構客戶端

伺服器的部分我們已經有一個大概的雛形可以使用,所以我們先切換到客戶端把遊戲的操作設計進去。雖然可以直接繼續把伺服器開發完畢,不過能看到專案動起來也是很重要的。...

2019-10-08 ‧ 由 蒼時弦也 分享
DAY 25

Day - 25. 實作練習 - 連線池

到目前為止我們已經能讓遊戲的操作跟伺服器連結起來,可以透過伺服器去管理一些行為的操作。不過要讓其他玩家能夠出現在地圖上,我們就必須調整現階段的程式碼讓伺服器能夠...

2019-10-09 ‧ 由 蒼時弦也 分享
DAY 26

Day 26 - 實作練習 - 加入地圖

當我們已經能夠管理所有線上的玩家後,需要再進一步做的處理就是將其他玩家都顯示出來。因此我們要先增一個叫做 join 的指令表示有一個玩家進入了地圖。 Playe...

2019-10-10 ‧ 由 蒼時弦也 分享
DAY 27

Day. 27 - 實作練習 - 顯示其他玩家

在我們將加入地圖的指令處理完畢後,我們就能夠收到來自其他玩家的「加入」資訊,也就能夠呈現其他玩家在地圖上並且做出反應。不過原本 RPG Maker 所支援的只有...

2019-10-11 ‧ 由 蒼時弦也 分享
DAY 28

Day. 28 - 實作練習 - Client 重構

在上一篇我們注意到客戶端的邏輯如果都放在同一個檔案(SimpleRPG_Map.js)裡面是相當混亂的,因此我們需要稍微區分不同的職責來處理。在前面提到的 Un...

2019-10-12 ‧ 由 蒼時弦也 分享
DAY 29

Day 29 - 實作練習 - 玩家列表

經過重構之後我們終於可以回到「後加入的玩家看不到之前玩家」的問題,這個問題源自於我們在玩家加入時並沒有發送任何資訊給新加入的玩家「線上有多少人」 處理的方式我們...

2019-10-13 ‧ 由 蒼時弦也 分享
DAY 30

Day. 30 - 實作練習 - 保存狀態(一)

現在我們已經可以完整的同步不同玩家的資訊,不過依舊無法將玩家的狀態保存在伺服器。因此我們需要改寫伺服器來保存狀態,受限於內容長度以及 RPG Maker MV...

2019-10-14 ‧ 由 蒼時弦也 分享