ঠিক আছে, আপনি উত্তর পেয়েছেন তবে আপনার আসল উত্তরটি "নিজেকে চেষ্টা করুন" এ। খেলা গেম থেকে জিনিস আলাদা হয়।
আমি কয়েকটি বিতরিত নেটওয়ার্ক গেম ডিজাইন কোর্সের জন্য বেশ কয়েকটি মাল্টিপ্লেয়ার গেমস করেছি। সবচেয়ে চ্যালেঞ্জিং ছিল রিয়েলটাইম অ্যাকশন গেম করা যেখানে অনেক খেলোয়াড় জড়িত ছিল এবং জাহান্নামের মতো ইনপুট প্রেরণ করছিল। এটি যখন এ আসে, সবকিছু সমস্যা হয়ে ওঠে। আপনি যেমনটি ত্ররতকে প্রেরিত প্রথম লিঙ্কটি দেখেছেন, এমনকি কোনও জোটবদ্ধতা নির্ধারণ করাও সমস্যা হয়ে দাঁড়ায়। এবং আপনি পঠন-শোনার মত শর্তাদি পিছিয়ে পড়ুন, অন্তরঙ্গকরণ, এক্সট্রা পোপ্লেশন, পূর্বাভাস ... তবে আপনি যদি কখনও নিজেকে স্ক্র্যাচ থেকে কোডিংয়ের চেষ্টা না করেন তবে আপনি কেবল এই শব্দগুলি গ্রহণ করবেন এবং তাদের সত্যিকারের অর্থ কী তা আপনি জানতে পারবেন না।
আমার সুপারিশটি হ'ল:
পদক্ষেপ 1
এখনই পুরোপুরি অনুমোদিত সার্ভার ভিত্তিক নকশা দিয়ে শুরু করুন। যেমনটি আপনি বলেছেন, কেবল সার্ভারে ব্যবহারকারীর ইনপুটগুলি প্রেরণ করুন এবং সার্ভারকে সবকিছু করতে দিন এবং ক্লায়েন্টদের ফলাফল পেতে দিন। আপনার খেলা পুরোপুরি ধারাবাহিকভাবে কাজ করবে। তবে আপনি যখন আপনার ক্লায়েন্টদের দিকে নজর রাখবেন, আপনি কিছু ল্যাগ, কিছু টেলিপোর্ট সমস্যা, মসৃণ চলাচল নয় ... লক্ষ্য করবেন।
পদক্ষেপ 2
ক্লায়েন্ট পক্ষ থেকে সমস্যাগুলি ঠিক করা শুরু করুন। উদাহরণস্বরূপ টেলিপোর্টিং সমস্যা। আপনার চরিত্রটি (0,0) এ ছিল এবং সার্ভারটি জানিয়েছে যে আপনি এখন (100,100) এ আছেন। আপনার চরিত্রটি কেবলমাত্র (100,100) টেলিপোর্ট করবে যা দুর্দান্ত নয়। বিরক্তি আসে। আপনার ক্লায়েন্টের পাশের একটি কোড থাকা উচিত যা চরিত্রটি (0,0) থেকে (100, 100) সাবলীল উপায়ে স্লাইড করবে। হ্যাঁ, আপনি আপনার চরিত্রটি (0,0) থেকে (100,100) এ স্থানান্তর করবেন তবে কত দ্রুত? আপাতত আপনি প্রতিটি সার্ভার আপডেটের মধ্যে সময়ের পার্থক্যটি ব্যবহার করতে পারেন। যদি আপনার সার্ভারটি একটি সেকেন্ডে 10 প্যাকেট প্রেরণ করে যার অর্থ প্রতিটি প্যাকেটের মধ্যে 100 এমএস দেরি।
ধাপ 3
এখন আপনার গেমটি দ্রুত নেটওয়ার্কগুলির জন্য ইতিমধ্যে ভাল যেখানে সেখানে (1-50) এমএসের বিলম্ব হয়। তবে কোনও প্যাকেটের ক্ষতি হলে, উচ্চ বিলম্বিত বা গণনাটি সার্ভারে দীর্ঘ সময় নেয় যদি এটি ডুমড হয় ct ect। এই পরিস্থিতিতে আপনি যখন বাম তীর টিপবেন তখন খেয়াল করবেন, আপনি 200 এমএসের বিলম্বের সাথে আপনার চরিত্রটি বাম দিকে সরে যেতে দেখবেন। আপনার প্যাকেটের মধ্যে বিলম্ব সার্ভারে চলে যায়, গণনার সময় এবং আপনার শেষ অবস্থান নিয়ে ফিরে আসে। এটি সার্ভার অনুমোদিত ডিজাইনের সবচেয়ে খারাপ অসুবিধা। প্লেয়ার চাইছেন যে তিনি চলে যাওয়ার সাথে সাথেই তার চরিত্রটি সরানো উচিত, আপনি তাকে অপেক্ষা করতে পারবেন না। ভাগ্যক্রমে ক্লায়েন্টেরও সার্ভারের মতো একই কোড রয়েছে, তবে তা কেন তাড়াতাড়ি ক্লায়েন্টের উপর চালাবেন না এবং সার্ভারের উত্তর দিয়ে চূড়ান্ত ফলাফলটি ঠিক করবেন না? মূলত ইনপুট পূর্বাভাস কি তা স্থায়ী করে। ক্লায়েন্ট প্রেসগুলি বামে রয়েছে, তার পাশের কোডটি তাকে বাম দিকে নিয়ে যাবে, কিছু সময় পরে 200 এমএস বলতে দেয়, আসল অবস্থানটি সার্ভার থেকে আসে এবং ক্লায়েন্ট এটির সাথে তার অবস্থান সংশোধন করে। যদি সবকিছু ঠিকঠাক হয়ে যায়, ক্লায়েন্ট কোনও কিছুই খেয়াল করবেন না, "পদক্ষেপ 2" আমাদের এটির জন্যও সহায়তা করবে।
ঠিক আছে, নেট এই বিষয় সম্পর্কে অনেক টিউটোরিয়াল এবং জিনিস আছে। তবে আমি এখানে 2 টি পছন্দ করি:
সত্যিই ভাল, অন্ধকার দাগগুলি জুড়ে: ভালভ-উত্স ইঞ্জিন মাল্টিপ্লেয়ার নেটওয়ার্কিং
ইতিহাসের ধরণ , পড়ার মজা এবং এর মূল্য: 2800 উপর 1500 আর্চারস ,