看板 Soft_Job 關於我們 聯絡資訊
前面幾位大大已經很詳細的解釋何謂政治問題與解決方法, 所以我覺得有必要稍微來討論一下技術問題, 先自我介紹一下,我之前曾經跟幾位好夥伴一起搞過個雲端運算+遊戲的平台, 詳細可以參考 http://kami-gami.jp/ (這個是2012年的成果,該專案已死) 正好我是負責製作遊戲引擎、遊戲腳本、運算實體跟協作負載平衡的人, 自認為有點資格稍微提供一些淺見(也只有一些淺見XD) 以下假設你們是用 C 或 JAVA 土炮一個遊戲伺服器出來。 ※ 引述《tommady (tommady)》之銘言: : 我是原po, 先感謝各位前輩的指教和建議, : 小弟覺得還是畫圖來解釋可能比較清楚. : 我主管的想法: thought1 : https://goo.gl/fz9ktO 這張圖有幾個問題 1. server 部分的緒配置不太合理。我不太懂為什麼要拆成三個緒來做,你可以參考傳統 伺服器的結構,理論上會有一個主緒+多個子緒。主緒負責管理整個process的事情, 子緒負責其他所有事務。通常每個子緒都完全相同沒有差別。 2. game logic 端的事情其實一個緒也辦的到,請參考 libev、select、epoll 3. 我看不到資料是如何回傳的,這其實很影響設計。 上面三個問題,可能表示你對整體架構還不夠了解,你應該多去了解一下。最起碼 game server 的部分要畫的完整些,不然也只能用猜的。 : 我的想法: thought2 : https://goo.gl/3dFlLi 前一張圖有的問題,這邊也有,另外還多了幾個缺點 4. 我看不到 game server 如何將 command 傳遞給 game script,這部分據你所說,應該 是你跟你主管最主要的歧異。這邊不畫清楚的話,有畫跟沒畫一樣喔XD 5. 假設 command 是 follow 在 start 之後一起傳遞,那等於說: 『你每次要處理 command 的時候都一定要先 wait start』 『你的 game script 的 process 沒有 sleep 的能力』 如果你 game script 的 process 啟動時要讀取各種資料,會額外多花很多時間。 (一般會從資料中心讀取一些使用者資料、購買資訊、遊玩紀錄等) : 其中, : thought1的game logic thread1 處理命令, : thought2的command handle, : 都是同一個function, : 只是由哪一個地方執行, 而有了爭議. : 小弟以為, 按照我的想法, 可以減少重複的"聽"這個動作, : 也減少不必要的IPC傳送, 還有一堆的Mutex. : 還請各位指教指點. : 感謝. 你應該再多去了解一下整體設計,很多時候不需要急,讓時間證明一切。 以上是一些個人淺見,完全沒有談論到 response time 、 memory usage 、 scalable 因為你們的專案離這些細節還差太遠,只是一個最基本的 game engine 而已, (而且還不支援使用者腳本) 先把東西弄出來再說吧,沒必要為它吵架。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.10.222 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1476619919.A.540.html
tommady: 我們用Golang實做, 所以和client建立連線或者client傳來 10/16 20:20
tommady: 命令的時候是單獨的一個goroutine 10/16 20:21
tommady: 我的想法是game server收到命令, 就單純在該goroutine 10/16 20:22
tommady: 解決, 而不是還得傳channel給game logic去解決. 10/16 20:22
TSW: game server 跟 game script 是一對多的關係嗎? 10/16 20:25
tommady: 理想是一對多, 但是主管明講, 要一對一 10/16 20:27
TSW: 一對一的話就隨便,真的,就是個 shit 。 10/16 20:28
tommady: 這也是令一個爭執點...唉...y 10/16 20:29
TSW: 建議你可以稍微問一下公司內對這專案的評價 10/16 20:31
TSW: 如果是 someone wanna buy some shit 就 OK 10/16 20:31
TSW: 如果不是就快閃XD 10/16 20:31
TSW: 哦忘了說,僅供參考XD 10/16 20:32
tommady: 收到, 小弟已經開始準備投履歷了XD, 謝謝您. 10/16 20:32
tka: 是百臂! 10/16 20:44
TSW: 是TKA!!!!!! 10/16 20:45
小弟我離開百臂之後跑到我印去了,有幸與TKA大大短暫的同時在同一間公司工作, 可惜因為地理因素無法面對面瞻仰,望他日有緣,可以向TKA大大學習一些叢集環境的 運維皮毛。(扯遠了XD) 在這邊補充些資訊給 tommady ,"如果是一對多的關係",那2跟5項就值得參考一下XD 可以減少一些 response time,部份情況下還能提升 scalable ※ 編輯: TSW (123.193.10.222), 10/16/2016 21:14:29
pttworld: 討論串原po應該不會投到文原po之所在吧。 10/16 21:42
TSW: impossible 小弟我現在是養生狀態 10/16 21:51
pttworld: 知足是幸福,有錢是貴族,羨慕是純樸。 10/16 22:33
tommady: 感謝您的建議, 5的建議我們有考慮, 2的建議正是爭議點. 10/17 07:27
tommady: 所以我才堅持game logic不應該做"聽"的行為. 10/17 07:27
bndan: 所以是百臂倒了..囧?? 不然怎說失敗 = =?? 10/17 13:15
TSW: 倒很久了@@ 10/17 14:33
genesic: 根據我的經驗,花了多餘的時間做出了一對多,但最後在用 10/17 14:55
genesic: 的時候都是在一對一 10/17 14:56
genesic: 所以我很認真的建議,那個你們可以比較快做出來就用哪個 10/17 14:56
※ 編輯: TSW (123.193.10.222), 10/17/2016 16:29:04