কেবলমাত্র একটি সরাসরি "হ্যাঁ বা না কুউজ আমি তাই বলেছি" গ্রহণ করুন না উত্তর এখানে লিখুন যেহেতু আপনি নিজেকে ইউডিপির সাথে একগুচ্ছ সমস্যার লড়াইয়ের মুখোমুখি হতে যাচ্ছেন যা আপনাকে অবশ্যই মুখোমুখি হওয়ার দরকার নেই।
এখানের অন্য উত্তরগুলির মধ্যে কোনওটিই এটি প্রমাণ করার সুস্পষ্ট উপায়টি উল্লেখ করে না।
কিছু সাধারণ ঘটনা নিন
- কোনও আইপি শিরোনাম 20 বাইট হয় আপনি কোনও প্রোটোকল ব্যবহার করেন না কেন।
- ইউডিপি শিরোনাম 4 বাইট
- টিসিপি শিরোনামগুলি 20 বাইট
সুতরাং প্রতিবার আপনি যখন লাইনটি 1 বাইটের বার্তা প্রেরণ করেন তখন আপনি কোনও আইপি শিরোলেখ ধরে নিচ্ছেন যে প্রোটোকলের উপর নির্ভর করে 25 বা 41 বাইট পাঠিয়েছেন।
উত্স:
আমার উপদেশ
আপনার ক্লায়েন্ট সার্ভারের ইন্টারঅ্যাকশন প্রয়োজন যেখানে আপনার পরিস্থিতি নিন, ক্লায়েন্টগুলির সংখ্যা নির্ধারণ করুন তারপরে আপনি 2 এর মধ্যে পাঠানো ডেটার ভিত্তিতে গণিত করুন do
একটি উদাহরণ
আমি বলি যে আমি আমার গেমের প্রতি আপডেটে 1 বাইটযুক্ত 10 টি বার্তা প্রেরণ করছি এবং আমি প্রায় 60 fps আপডেট করছি তাই আমাকে আসল বার্তা ডেটা + প্রাসঙ্গিক শিরোনামের প্রতি সেকেন্ডে 60 * 10 = 600 বাইট প্রেরণ করতে হবে।
গেমের উপর নির্ভর করে আমি এগুলি সবই একক বার্তা হিসাবে প্রেরণ করতে পারি তাই টিসিপি স্তর থেকে আমার ওভারহেডটি কেবল 40 বাইট (কার্যকরভাবে প্রতি সেকেন্ডে 20 বাইটের ইউডিপির চেয়ে বেশি ব্যয়), ওভারহেড না হওয়া 600০০ বাইটের সম্ভাব্য ব্যয় ( কারণ আমার পুরো বার্তা প্রবাহটি আবার পাঠাতে হতে পারে)।
তবে যদি প্রতিটি বার্তা পাঠানো যায় তার তাত্ক্ষণিকভাবে এটি নিজেই প্রেরণ করা অত্যন্ত জরুরী, আমার কাছে 600 টি বার্তা রয়েছে (এছাড়াও 600 বাইট) + 40 * 600 = 24 কেস মূল্যবান টিসিপি ওভারহেড বা প্রতি সেকেন্ডে ইউডিপি 14 ডলার + বার্তা ডেটা 600 বাইট।
আবার, আমরা প্রশ্নগুলি জিজ্ঞাসা করি, এই বার্তাগুলি কতটা গুরুত্বপূর্ণ, সেগুলি কত ঘন ঘন এবং কীভাবে কোনও উপায়ে ওভারহেডগুলি হ্রাস করতে পারে?
এটি কেবলমাত্র একক বাইট বার্তাগুলির উপর ভিত্তি করে, সাধারণত আপনি খুব আলাদা কিছু করবেন তবে কাঁচা তথ্য না জেনেও কোনওভাবেই প্রমান করা শক্তভাবে প্রেরণ করা হচ্ছে যদি টিডিপি ইউডিপির চেয়ে আপনার পরিস্থিতির চেয়ে আরও উপযুক্ত।
সুতরাং, এটি কাজ করবে?
ঠিক আছে, আপনার যদি একটি সাধারণ fps থাকে, এবং অবস্থানটি গুরুত্বপূর্ণ (প্রতারণা বা ভুল সিদ্ধান্ত এড়াতে), আপনার জানতে হবে যে আপনার নেটওয়ার্ক স্ট্রিমটি বাস্তবযোগ্য, তবে ২২ খেলোয়াড় প্রতিটি স্ট্রিমিং যে 24 কে + বার্তা পিছনে পিছনে যায় (তাই 768 কেবি / s + বার্তা) ... এটি সার্ভারের মাধ্যমে প্রতিটি ক্লায়েন্ট থেকে অন্যান্য ক্লায়েন্টের প্রতি প্রতিটি ক্লায়েন্ট থেকে কমপক্ষে 1 বার্তা প্রেরণের উপর ভিত্তি করে পৃথক হেডারের জন্য 10 মিমি / গুলি ব্রডব্যান্ড লাইন প্রায় about
আপনি অবশ্যই আপনার সার্ভার এবং ক্লায়েন্টকে সেভাবে কাজ করার জন্য কোড করবেন না এবং বার্তার আকারগুলি অনেক বড় হতে পারে এবং বেশিরভাগ পরিস্থিতিতে ফ্রেম প্রতি 1 বাইটের চেয়ে কিছুটা কম ঘন ঘন থাকে তাই আসল বিশ্ব না দেখলে বলা শক্ত so "এটি আমার পাঠাতে হবে এমন ডেটা" উদাহরণ।
আমার ক্ষেত্রে
আমি আমার ক্ষেত্রে কলটি করেছি যে এটি একটি যুক্তিসঙ্গত ওভারহেড তবে এটি নির্ভর করে যে আমি কীভাবে আমার বার্তা প্রবাহগুলি তৈরি করি যাতে কিছু ডিজাইনের তুলনায় আমার কাছে বিশাল ওভারহেড না থাকে।
টিসিপি সূক্ষ্মভাবে কাজ করে এবং আমার একটি স্কেলযোগ্য এমএমও সার্ভার এবং ক্লায়েন্ট কাঠামো রয়েছে তবে আমাকে কখনও প্রচুর ডেটা ফ্রেম বা প্রচুর ছোট প্যাকেট স্ট্রিম করার দরকার নেই কারণ আমি আমার কলগুলি ব্যাচ করতে পারি।
অন্যদের জন্য: টিসিপি কেবল তা করবে না, এবং তারা কেবল ইউডিপি ব্যবহার করতে পারে তবে তাদের গ্রহণযোগ্যতা (অর্ডার / আগমনের গ্যারান্টি) দেওয়ার বিষয়ে তাদের কোনও আশ্বাস দেওয়া হবে না তা মেনে নিতে হবে।
অন্যান্য বিবেচ্য বিষয়
অনেক দুর্বল কোডযুক্ত গেম ইঞ্জিনগুলি সিপিইউতে মূল থ্রেডের সবকিছু হ্যান্ডেল করে তাই সিপুকে প্রায়শই কেবলমাত্র একটি খুব অল্প পরিমাণ সময় দেওয়া হয় নেটওয়ার্কিং কোড হ্যান্ডেল করার জন্য, পরিবেশন করা এবং ক্লায়েন্ট উভয়েরই একটি সুনির্দিষ্ট বাস্তবায়ন পুরোপুরি অ্যাসিঙ্ক হয় এবং সম্ভবত ধাক্কা দেয় এবং ব্যাচগুলিতে বার্তা টানুন।
এখানে বেশ কয়েকটি ভাল নেটওয়ার্কিং লাইব্রেরি রয়েছে তবে এখানে যেমন দেখা গেছে, অনেকেরই মতামত আছে যে ইউডিপি "কেবলমাত্র ভাল", নিজের প্রয়োজনের জন্য প্রথমে ভাল ফ্যাক্টর এবং এটিও নাও হতে পারে, এবং এমন একটি লাইব্রেরি খুঁজে পাওয়া যায় যা না আপনি যেভাবে কাজ করেন তার ফ্যাক্টরগুলি একই লিবের ইউডিপি ভেরিয়েন্টের তুলনায় খারাপভাবে কোডড টিসিপি সেটআপ করতে পারে (আমি কেবল বলছি যে আমি এটি দেখেছি, এবং লোড পরীক্ষাগুলি এটি প্রমাণ করেছে)।
আপনি যে ডেটা প্রেরণ করতে চান তার প্রযুক্তিগত ভিত্তিতে প্রথমে কিছু তৈরি করুন এবং এটি পরীক্ষা করার জন্য গণিতটি করুন, সবচেয়ে খারাপ ক্ষেত্রে এটি মেঘে স্থাপন করে লোড পরীক্ষা করুন এবং 50 টি কম্পিউটার এটি পরীক্ষা করতে পারে কিনা তা পরীক্ষা করার জন্য একটি ক্লায়েন্ট চালান প্রতি খেলায় আপনার 32 খেলোয়াড়ের সীমা (বা আপনার যে সীমাবদ্ধতা থাকতে পারে)।