※ 本文為 dinos 轉寄自 ptt.cc 更新時間: 2016-10-18 15:28:23
看板 Soft_Job
作者 標題 Re: [請益] 碰到與主管在設計理念上不合該怎麼自保
時間 Sun Oct 16 20:11:55 2016
前面幾位大大已經很詳細的解釋何謂政治問題與解決方法,
所以我覺得有必要稍微來討論一下技術問題,
先自我介紹一下,我之前曾經跟幾位好夥伴一起搞過個雲端運算+遊戲的平台,
詳細可以參考 http://kami-gami.jp/
KamiGami カミガミ
Kamigami ゲーム開発フレームワークは、今の多機種多プラットフォーム環境の時代のために生まれてきた、完全なソリューションです。最短の時間で、優れたクオリティーの多プラットフォームゲームを開発できる上、「割れ」(海賊行為)から守れる他のエンジン、フレームワークの追随を許さない安全さを実現し、全プ ...
Kamigami ゲーム開発フレームワークは、今の多機種多プラットフォーム環境の時代のために生まれてきた、完全なソリューションです。最短の時間で、優れたクオリティーの多プラットフォームゲームを開発できる上、「割れ」(海賊行為)から守れる他のエンジン、フレームワークの追随を許さない安全さを実現し、全プ ...
正好我是負責製作遊戲引擎、遊戲腳本、運算實體跟協作負載平衡的人,
自認為有點資格稍微提供一些淺見(也只有一些淺見XD)
以下假設你們是用 C 或 JAVA 土炮一個遊戲伺服器出來。
※ 引述《tommady (tommady)》之銘言:
: 我是原po, 先感謝各位前輩的指教和建議,
: 小弟覺得還是畫圖來解釋可能比較清楚.
: 我主管的想法: thought1
: https://goo.gl/fz9ktO
這張圖有幾個問題
1. server 部分的緒配置不太合理。我不太懂為什麼要拆成三個緒來做,你可以參考傳統
伺服器的結構,理論上會有一個主緒+多個子緒。主緒負責管理整個process的事情,
子緒負責其他所有事務。通常每個子緒都完全相同沒有差別。
伺服器的結構,理論上會有一個主緒+多個子緒。主緒負責管理整個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
※ 文章代碼(AID): #1O0swFL0 (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1476619919.A.540.html
推 : 我們用Golang實做, 所以和client建立連線或者client傳來1F 10/16 20:20
→ : 命令的時候是單獨的一個goroutine
→ : 我的想法是game server收到命令, 就單純在該goroutine
→ : 解決, 而不是還得傳channel給game logic去解決.
→ : 命令的時候是單獨的一個goroutine
→ : 我的想法是game server收到命令, 就單純在該goroutine
→ : 解決, 而不是還得傳channel給game logic去解決.
→ : game server 跟 game script 是一對多的關係嗎?5F 10/16 20:25
推 : 理想是一對多, 但是主管明講, 要一對一6F 10/16 20:27
→ : 一對一的話就隨便,真的,就是個 shit 。7F 10/16 20:28
→ : 這也是令一個爭執點...唉...y8F 10/16 20:29
→ : 建議你可以稍微問一下公司內對這專案的評價9F 10/16 20:31
→ : 如果是 someone wanna buy some shit 就 OK
→ : 如果不是就快閃XD
→ : 哦忘了說,僅供參考XD
→ : 如果是 someone wanna buy some shit 就 OK
→ : 如果不是就快閃XD
→ : 哦忘了說,僅供參考XD
推 : 收到, 小弟已經開始準備投履歷了XD, 謝謝您.13F 10/16 20:32
推 : 是百臂!14F 10/16 20:44
→ : 是TKA!!!!!!15F 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
→ : 討論串原po應該不會投到文原po之所在吧。16F 10/16 21:42
→ : impossible 小弟我現在是養生狀態17F 10/16 21:51
→ : 知足是幸福,有錢是貴族,羨慕是純樸。18F 10/16 22:33
推 : 感謝您的建議, 5的建議我們有考慮, 2的建議正是爭議點.19F 10/17 07:27
→ : 所以我才堅持game logic不應該做"聽"的行為.
→ : 所以我才堅持game logic不應該做"聽"的行為.
→ : 所以是百臂倒了..囧?? 不然怎說失敗 = =??21F 10/17 13:15
→ : 倒很久了@@22F 10/17 14:33
推 : 根據我的經驗,花了多餘的時間做出了一對多,但最後在用23F 10/17 14:55
→ : 的時候都是在一對一
→ : 所以我很認真的建議,那個你們可以比較快做出來就用哪個
※ 編輯: TSW (123.193.10.222), 10/17/2016 16:29:04→ : 的時候都是在一對一
→ : 所以我很認真的建議,那個你們可以比較快做出來就用哪個
--
※ 看板: dinos 文章推薦值: 0 目前人氣: 0 累積人氣: 269
回列表(←)
分享