আমি একটি জেনেরিক গেম সার্ভারে কাজ করছি যা একটি গেম খেলছে এমন টিসিপি সকেট-নেটওয়ার্কযুক্ত ক্লায়েন্টদের একটি স্বেচ্ছাসেবী সংখ্যার জন্য গেম পরিচালনা করে। আমার সাথে একটি 'ডিজাইন' হ্যাক হয়েছে যা নালী-টেপ সহ কাজ করছে তবে এটি ভঙ্গুর এবং জটিল নয় lex শক্তিশালী এবং নমনীয় যে ক্লায়েন্ট / সার্ভার যোগাযোগ লিখতে হয় তার জন্য কি একটি প্রতিষ্ঠিত প্যাটার্ন রয়েছে? (যদি তা না হয় তবে আমার নীচের জিনিসগুলি কীভাবে উন্নতি করবেন?)
মোটামুটি আমার কাছে এটি রয়েছে:
- গেমটি সেট আপ করার সময় সার্ভারের প্রতিটি প্লেয়ারের সকেটের জন্য একটি ক্লায়েন্টের সিঙ্ক্রোনাস অনুরোধ পরিচালনা করে এবং সার্ভারের প্রতিক্রিয়া জানানো হয়।
- গেমটি একবার চলতে থাকলে, একটি ঘুম বাদে সমস্ত থ্রেড এবং সমস্ত প্লেয়ারের মাধ্যমে এই থ্রেড চক্রগুলি একবারে তাদের পদক্ষেপের বিষয়ে যোগাযোগ করে (বিপরীত অনুরোধ-প্রতিক্রিয়াতে)।
আমার কাছে বর্তমানে যা আছে তা এখানে একটি চিত্র রয়েছে; বৃহত্তর / পঠনযোগ্য সংস্করণ, বা 66 কেবি পিডিএফ জন্য ক্লিক করুন ।
সমস্যা:
- খেলোয়াড়দের ঠিক সঠিক বার্তাটি দিয়ে ঠিক পাল্টে দেওয়া উচিত। (আমি মনে করি যে আমি প্রতিটি খেলোয়াড়কে এলোমেলো বাজেভাবে প্রতিক্রিয়া জানাতে পারলাম এবং তারা যখন আমাকে একটি বৈধ পদক্ষেপ দেবে কেবল তখনই আমি এগিয়ে যেতে পারি))
- এটি প্লেয়ারদের পালা না দেওয়া হলে সার্ভারের সাথে কথা বলার অনুমতি দেয় না। (আমি অন্য খেলোয়াড়দের সম্পর্কে সার্ভার তাদের আপডেট পাঠাতে পারি, তবে অ্যাসিঙ্ক্রোনাস অনুরোধটি প্রক্রিয়া করি না))
চূড়ান্ত প্রয়োজনীয়তা:
পারফরম্যান্স সর্বজনীন নয়। এটি বেশিরভাগ অ-রিয়েলটাইম গেমগুলির জন্য ব্যবহৃত হবে এবং বেশিরভাগ ক্ষেত্রে একে অপরের বিরুদ্ধে এআই পিট করার জন্য ব্যবহৃত হবে, দুশ্চরিত্রা মানুষের নয়।
গেমের প্লে সর্বদা টার্ন-বেসড থাকবে (এমনকি খুব উচ্চ রেজোলিউশনে হলেও)। অন্যান্য খেলোয়াড়দের টার্ন পাওয়ার আগে প্রতিটি প্লেয়ার সর্বদা একটি পদক্ষেপ প্রক্রিয়াজাত করে।
সার্ভারের বাস্তবায়নটি রুবিতে হয়, যদি এটি কোনও পার্থক্য করে।