看板 GameDesign 關於我們 聯絡資訊
※ 引述《sargent (心裡治療)》之銘言: : 另外,想問的小問題是: : 假如想做一個小遊戲,玩法大致如下 : 4到12人可以連線登入的打架遊戲, : 每個玩家都有個身體可以在裡面用來打架(分兩群人馬或是大逃殺) : (可能是第一人視角或者同時看到全場的畫面) : 隨便一個場地就可以了 : 大概製作流程... : (不好意思我有點模糊)大概是怎麼樣的呢?是不是要用伺服器之類的技術? 流程一開始當然是先寫出和畫出遊戲的畫面與遊玩的方法啦。 連詳細的遊戲方法都寫/畫不出來的, 就不用搞下一步了。 接著 "我" 會決定 server-client 架構 也就是 "哪些程式要放玩家 (client) 那,哪些程式要放伺服器 (server) 那" 為了簡化問題, 先假設只是個2D的戰車遊戲, 玩家只有前、左轉、右轉、發射四個指令。 分法一: client 只傳上面四個指令給 server, server 會回傳場上所有玩家位置、 場上所有砲彈位置、被擊中的玩家與擊中他的砲彈ID這三個數據。 這樣做的話,所有的計算都會保存在 server, 戰車的位置,戰車的角度, 砲彈的位置、砲彈的角動量, 每個 tick 更新上面所有資料,然後回傳給使用者。 (更猛的做法是,直接回傳每一 frame 的畫面給使用者,那就連 client 程式都不用寫了,不過那不是小資開發者做的到的) 這樣分的好處是不容易被人寫外掛、 壞處是要租 server 做大量運算很花錢。 分法二: client 移動時傳自己的座標, 發射砲彈的當下會傳 "一次" 砲彈的角動量, 擊中時會傳訊號給 server。 server 會將 client 的資訊分送給其他玩家。 擊中訊號同時出現時就當 double kill。 好處是資料傳輸少,server loading 小。 壞處是外掛超好寫,可以寫個外掛開場就秒殺所有玩家。 (就是直接送11個擊中的訊號給 server 就好) 以程式設計的流程來說, 思考哪些要放 client 哪些要放 server, 這關係到錢、駭客防範和開發要花多久時間的問題。 這算第二階段吧。 接下來就開始寫程式, 然後寫完就開賣收錢了。 就這麼簡單! (誤XD) ---- 不過剛剛重看了一下文章, 文章想問的好像只是要學什麼 "軟體" 或 "工具" 才寫得出來? 這問題真的太難回答了, 有簡單的路、有難的路、 有熱門的工具或語言、有冷門的工具或語言、 大家看法都不一樣,還有可能會吵起來... 去 google 一下吧? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.105.109 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1642420468.A.73B.html ※ 編輯: YoshiCasa (61.228.105.109 臺灣), 01/17/2022 20:13:49 ※ 編輯: YoshiCasa (61.228.105.109 臺灣), 01/17/2022 20:17:31
LayerZ: client-server傳遞延遲雖然只有20ms~200ms,但是對有些玩 01/18 09:55
LayerZ: 法會有影響了,不過這邊簡化的關係應該沒差 01/18 11:00
sargent: 噢,不是的,我不是問工具。如你所說,這樣就是代表資料 01/31 04:42
sargent: 互相蒐集傳送的方式...嗯,我也沒寫過伺服器所以不是很懂 01/31 04:44
sargent: 但基本上我想問的就是比較抽象層面的技術手法,就是這樣 01/31 04:44
LayerZ: 原則上是你自己的機器,除了你自己的行為之外都是模擬出 02/09 18:55
LayerZ: 來的,當5個人同時前進,每個人都會看到自己走在最前面 02/09 18:55