पृष्ठभूमि: मैं एक मल्टीप्लेयर गेम विकसित करने में मदद करता हूं, जो ज्यादातर सी ++ में लिखा जाता है, जो मानक क्लाइंट-सर्वर आर्किटेक्चर का उपयोग करता है। सर्वर को स्वयं संकलित किया जा सकता है, और क्लाइंट को सर्वर से संकलित किया जाता है ताकि आप गेम होस्ट कर सकें।क्लाइंट-सर्वर गेम में कोड रखना
समस्या
खेल एक ही वर्गों में दोनों क्लाइंट और सर्वर कोड को जोड़ती है, और यह बहुत बोझिल हो रहा है।
// 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