顯示廣告
隱藏 ✕
※ 本文為 dinos 轉寄自 ptt.cc 更新時間: 2016-10-18 15:28:23
看板 Soft_Job
作者 TSW (翹班帝國)
標題 Re: [請益] 碰到與主管在設計理念上不合該怎麼自保
時間 Sun Oct 16 20:11:55 2016


前面幾位大大已經很詳細的解釋何謂政治問題與解決方法,

所以我覺得有必要稍微來討論一下技術問題,

先自我介紹一下,我之前曾經跟幾位好夥伴一起搞過個雲端運算+遊戲的平台,

詳細可以參考 http://kami-gami.jp/
KamiGami カミガミ
Kamigami ゲーム開発フレームワークは、今の多機種多プラットフォーム環境の時代のために生まれてきた、完全なソリューションです。最短の時間で、優れたクオリティーの多プラットフォームゲームを開発できる上、「割れ」(海賊行為)から守れる他のエンジン、フレームワークの追随を許さない安全さを実現し、全プ ...

 
(這個是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
※ 文章代碼(AID): #1O0swFL0 (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1476619919.A.540.html
tommady: 我們用Golang實做, 所以和client建立連線或者client傳來1F 10/16 20:20
tommady: 命令的時候是單獨的一個goroutine
tommady: 我的想法是game server收到命令, 就單純在該goroutine
tommady: 解決, 而不是還得傳channel給game logic去解決.
TSW: game server 跟 game script 是一對多的關係嗎?5F 10/16 20:25
tommady: 理想是一對多, 但是主管明講, 要一對一6F 10/16 20:27
TSW: 一對一的話就隨便,真的,就是個 shit 。7F 10/16 20:28
tommady: 這也是令一個爭執點...唉...y8F 10/16 20:29
TSW: 建議你可以稍微問一下公司內對這專案的評價9F 10/16 20:31
TSW: 如果是 someone wanna buy some shit 就 OK
TSW: 如果不是就快閃XD
TSW: 哦忘了說,僅供參考XD
tommady: 收到, 小弟已經開始準備投履歷了XD, 謝謝您.13F 10/16 20:32
tka: 是百臂!14F 10/16 20:44
TSW: 是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
pttworld: 討論串原po應該不會投到文原po之所在吧。16F 10/16 21:42
TSW: impossible 小弟我現在是養生狀態17F 10/16 21:51
pttworld: 知足是幸福,有錢是貴族,羨慕是純樸。18F 10/16 22:33
tommady: 感謝您的建議, 5的建議我們有考慮, 2的建議正是爭議點.19F 10/17 07:27
tommady: 所以我才堅持game logic不應該做"聽"的行為.
bndan: 所以是百臂倒了..囧?? 不然怎說失敗 = =??21F 10/17 13:15
TSW: 倒很久了@@22F 10/17 14:33
genesic: 根據我的經驗,花了多餘的時間做出了一對多,但最後在用23F 10/17 14:55
genesic: 的時候都是在一對一
genesic: 所以我很認真的建議,那個你們可以比較快做出來就用哪個
※ 編輯: TSW (123.193.10.222), 10/17/2016 16:29:04

--
※ 看板: dinos 文章推薦值: 0 目前人氣: 0 累積人氣: 269 
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇