প্রকল্প সম্পর্কে

netcode হলো একটি C লাইব্রেরি যা রিয়েল-টাইম মাল্টিপ্লেয়ার গেমের জন্য UDP-এর উপরে একটি নিরাপদ ক্লায়েন্ট/সার্ভার প্রোটোকল বাস্তবায়ন করে। এটি সেই সাধারণ সমস্যার সমাধান করে যে UDP কোনো কানেকশন ধারণা প্রদান করে না, তাই ডেভেলপারদের নিজেদেরই কানেকশন ম্যানেজমেন্ট, নিরাপত্তা এবং নির্ভরযোগ্যতা তৈরি করতে হয়। ডিজাইন ও বৈশিষ্ট্য: - UDP-এর উপরে কানেকশন-ভিত্তিক প্রোটোকল, যাতে গেমগুলো TCP হেড-অফ-লাইন ব্লকিং ছাড়াই অবিশ্বস্ত, এলোমেলো প্যাকেট বিনিময় করতে পারে। - কানেক্ট টোকেন ব্যবহার করে নিরাপদ ক্লায়েন্ট কানেকশন: শুধুমাত্র ব্যাকএন্ড দ্বারা অনুমোদিত ক্লায়েন্টরাই সংযোগ করতে পারে, যা ম্যাচমেকিং প্রবাহের জন্য উপযুক্ত যেখানে একটি ওয়েব ব্যাকএন্ড টোকেন ইস্যু করে। - ক্লায়েন্ট স্লট সিস্টেম: সার্ভারগুলো n সংখ্যক স্লট নির্ধারণ করে; সংযোগের সময় ক্লায়েন্টদের একটি স্লট বরাদ্দ করা হয় এবং পূর্ণ হয়ে গেলে দ্রুত প্রত্যাখ্যান করা হয়। - উভয় পক্ষেই দ্রুত পরিষ্কার সংযোগ বিচ্ছিন্ন করে স্লট মুক্ত করা, সাথে কঠিন সংযোগ বিচ্ছিন্নের জন্য টাইমআউট। - sodium লাইব্রেরির মাধ্যমে এনক্রিপ্টেড ও সাইন করা প্যাকেট, যা টেম্পারিং এবং ইভসড্রপিং থেকে সুরক্ষা দেয়। - ক্ষতিকারকভাবে তৈরি প্যাকেট, রিপ্লে আক্রমণ এবং প্যাকেট অ্যামপ্লিফিকেশন আক্রমণের বিরুদ্ধে নিরাপত্তা সুরক্ষা। - Wi-Fi রাউটারে জিটার কমাতে ঐচ্ছিক প্যাকেট ট্যাগিং। - IPv4 এবং IPv6 সমর্থন। ব্যবহারের রূপরেখা: একটি র‍্যান্ডম 32-বাইট প্রাইভেট কী তৈরি করুন যা সার্ভারে গোপন রাখা হয়; প্রাইভেট কী এবং সর্বোচ্চ কানেক্ট টোকেন লাইফটাইম সহ একটি কনফিগ দিয়ে সার্ভার তৈরি করুন; নির্দিষ্ট সংখ্যক ক্লায়েন্ট স্লট দিয়ে এটি শুরু করুন। ক্লায়েন্টরা একটি ব্যাকএন্ড REST API থেকে কানেক্ট টোকেন পায় এবং netcode_client_connect কল করে। সংযোগের পর, ক্লায়েন্ট একটি ক্লায়েন্ট ইনডেক্স পায় এবং সার্ভারের সাথে এনক্রিপ্টেড, সাইন করা প্যাকেট বিনিময় করতে পারে। উদাহরণ কোড client.c এবং server.c-এ প্রদান করা হয়েছে। রিপোজিটরিতে C বাস্তবায়ন রয়েছে। README-তে C#, Go, Rust, Unity, UE4 এবং TypeScript-এ বাস্তবায়নের তালিকাও রয়েছে, এবং নিজেদের সংস্করণ লিখছেন তাদের জন্য netcode 1.02 স্ট্যান্ডার্ড এবং IMPLEMENTERS.md-এর দিকে নির্দেশ করে। প্রকল্পটি BSD 3-Clause লাইসেন্সের অধীনে এবং পণ্যের ক্রেডিটে স্বীকৃতি চায়।