背景:我幫助開發多人遊戲,在C++中,使用標準的客戶端 - 服務器架構編寫的居多。服務器可以自行編譯,並且客戶端與服務器一起編譯,因此您可以託管遊戲。飼養代碼組織
問題
遊戲結合客戶端和服務器代碼到相同的類,並且這被開始是非常麻煩的。
例如,以下是一些小樣品,你可以在一個共同的類看:
// Server + client
Point Ship::calcPosition()
{
// Do position calculations; actual (server) and predictive (client)
}
// Server only
void Ship::explode()
{
// Communicate to the client that this ship has died
}
// Client only
#ifndef SERVER_ONLY
void Ship::renderExplosion()
{
// Renders explosion graphics and sound effects
}
#endif
和標題:
class Ship
{
// Server + client
Point calcPosition();
// Server only
void explode();
// Client only
#ifndef SERVER_ONLY
void renderExplosion();
#endif
}
正如你所看到的,在編譯的時候只有預處理器定義用於排除圖形和聲音代碼(這看起來很醜陋)。
問:
是一些保持代碼組織和清潔客戶端 - 服務器架構的最佳實踐是什麼?
謝謝!
編輯:使用良好的組織開源項目的例子,也歡迎:)
你碰巧知道你的設計的一個例子嗎? – faffy 2012-08-23 20:45:10