আমি সকেট.ইও ব্যবহার করে আমার প্রথম অনলাইন গেমটি তৈরি করছি এবং আমি এটিটি আগার.আইও বা ডাইপ.আইওয়ের মতো একটি রিয়েল-টাইম মাল্টিপ্লেয়ার গেম হতে চাই I'd
তবে আমি কীভাবে সমস্ত কম্পিউটারকে একই গতিতে কাজ করতে পারি তা নির্ধারণের চেষ্টা করার বিষয়টি নিয়ে আমি এড়িয়ে গেছি।
মডেলগুলির জন্য আমার কাছে তিনটি ধারণা রয়েছে তবে সেগুলির কোনওটিই সঠিক বলে মনে হচ্ছে না এবং আমি ভাবছি যে সাধারণ ভিডিওগেমগুলি এটি কীভাবে করে। (আপনি আমার ধারণাগুলি পড়া বাদ দিতে পারেন; আমার সমস্যাগুলি দেখার জন্য তারা আপনাকে কেবল একটি উপায় দেয়))
সার্ভার ক্লায়েন্টকে তাদের নিজেরাই চলতে দেয় এবং সার্ভারে আপডেটগুলি দেয়, যা পরে তাদেরকে ক্লায়েন্টের বাকী অংশে সম্প্রচার করে। এটিতে সমস্যা রয়েছে যে কিছু কম্পিউটার অন্যদের চেয়ে দ্রুত চালিত হয়, তাদের দ্রুত আপডেট হতে দেয় এবং দ্রুত স্ক্রিন জুড়ে দ্রুত সরাতে দেয়।
সার্ভারটি ক্লায়েন্টদের কখন আপডেট করতে হবে তা জানান। তারপরে আমি শেষ ক্লায়েন্ট প্রতিক্রিয়া না দেওয়া পর্যন্ত অপেক্ষা করতে পারি (একজন ব্যক্তির ধীর কম্পিউটারের ক্ষেত্রে একটি ভয়ানক ধারণা), প্রথম ক্লায়েন্ট প্রতিক্রিয়া না দেওয়া পর্যন্ত অপেক্ষা করুন (আবার প্রতিটি ফ্রেমের আগে যোগাযোগের অপেক্ষায়), বা কেবল তাদের যত তাড়াতাড়ি পাঠাতে হবে (যা কোনটি সংখ্যা 1 হিসাবে একই সমস্যা চালিত বলে মনে হচ্ছে)।
গেমের শুরুতে, সার্ভারটি ক্লায়েন্টদের কীভাবে আপডেট করতে হবে তা জানান। এর অর্থ হ'ল ক্লায়েন্ট সেই সময়ের মধ্যে চলন সীমাবদ্ধ করার জন্য দায়বদ্ধ responsible উদাহরণস্বরূপ, যদি কেউ সেই সময়ের মধ্যে কোনওভাবে দু'বার একটি বোতাম টিপতে সক্ষম হন তবে এটি কেবল একটি বোতাম টিপুন ইভেন্টটি প্রেরণ করবে। এটিতে এমন সমস্যা রয়েছে যে কিছু ক্রিয়া উপেক্ষা করা হবে (যেমন ডাবল বোতাম টিপুন), এবং ইন্টারঅ্যাকশনটি ক্লায়েন্টের ঘড়ির উপর নির্ভর করবে যা সার্ভারের ঘড়ির সাথে মেলে না। সার্ভারটি তখন প্রতিটি ক্লায়েন্টকে ট্র্যাক করে রাখতে হবে এবং তাদের আপডেটগুলি সঠিক সময়ে জমা দেওয়া হচ্ছে তা নিশ্চিত করতে হবে।
আমি কিছু গবেষণা করেছি , তবে আমি যে নিবন্ধগুলি পড়েছি সেগুলিতে বিশেষভাবে কোনও ক্লায়েন্ট অন্যান্য ক্লায়েন্টের তুলনায় দ্রুত আপডেটগুলি প্রেরণ করে তবে কী করবেন তা নির্দিষ্টভাবে মনে হচ্ছে না।
আমার বিশেষ ক্ষেত্রে, আমি দ্রুত কীবোর্ডের গতি আছে এমন লোকদের সাথে व्यवहार করছি (তাদের কম্পিউটার অন্যান্য কম্পিউটারগুলির তুলনায় আরও কীবোর্ড আপডেট পাঠাবে)।
প্রোগ্রামাররা সাধারণত কীভাবে এটি মোকাবেলা করে?