সংঘর্ষ সনাক্তকরণ সার্ভার-সাইড বা ক্লায়েন্ট / সার্ভারের মধ্যে সহযোগিতামূলকভাবে করা উচিত?


24

আমি একটি অনলাইন গেমের সাথে কাজ করছি যা খুব ভারী সংঘর্ষ সনাক্তকরণ প্রক্রিয়া করবে। প্লেয়ার মডেলগুলি অন্য খেলোয়াড়, জনসমাগম, কাঠামো, ভূখণ্ড এবং শক্ত বস্তুগুলির সাথে সংঘর্ষ করবে যা কেবল সার্ভার সাইডে উপস্থিত রয়েছে (ক্লায়েন্টের ডেটা ফাইলে সংরক্ষণ করা হয়নি)।

সুরক্ষা উদ্দেশ্যে, আমি কি সমস্ত সংঘর্ষ শনাক্তকরণের সার্ভার-সাইডটি করা উচিত? অথবা আমার কাছে ক্লায়েন্টটি সনাক্তকরণ করা এবং সার্ভারটি কোনওভাবে এটি অনুসরণ করা উচিত? আমার মনে হচ্ছে এটি সার্ভারের নিজের দ্বারা করা খুব বেশি হবে (আমি একটি সার্ভারে কয়েকশ প্লেয়ারের জন্য ইঞ্জিন ডিজাইন করছি)।

মূলধারার এমএমওগুলি কীভাবে এটি করে তা কি কেউ জানেন? আমি জানি যে এই মুহুর্তে প্রায় সমস্ত এমএমও পদার্থবিজ্ঞানের হ্যাকগুলির প্রতি সংবেদনশীল এবং সাধারণত হ্যাকগুলি সনাক্ত করে এবং লোকজনকে নিষিদ্ধ করে তাদের সাথে ডিল করে। আমি বরং হ্যাকস কমপক্ষে পদার্থবিজ্ঞানের উপাদানটির জন্য কাজ করিনি।

উত্তর:


21

মনে হচ্ছে এর সুস্পষ্ট উত্তরটি আপনার বেশিরভাগ সনাক্তকরণ ক্লায়েন্ট-সাইড (মসৃণতার জন্য) করা, এবং তারপরে আপনি যদি ক্লায়েন্ট খুব দূরে থাকেন তবে সার্ভার কী বলে তাতে আপনি বিভক্ত হন। সার্ভার ক্লায়েন্টের তুলনায় কম ঘন ঘন হারে টিক দিবে (যেমন, বলুন, 10 এই হার্জেড) এবং সম্ভবত কিছু বেসিক থাকা দরকার "এই খেলোয়াড়টি সেখানে পৌঁছে যেতে পারেন যেখানে তিনি বলেছেন যে তিনি বর্তমানে তাঁর শেষ পরিচিত অবস্থান" কোড থেকে এসেছেন, যা বোঝায় কিছু রকমের ন্যাভ জাল-প্রকারের সমাধান এবং প্যাথফাইন্ডিং।

আপনার প্রয়োজনীয়তাগুলির উপর নির্ভর করে এটি নিষিদ্ধভাবে ধীর হতে পারে। আপনি কোনও নকশার সিদ্ধান্ত নিতে পারেন, উদাহরণস্বরূপ, সার্ভারে প্লেয়ার-প্লেয়ারের সংঘর্ষের যত্ন না করার জন্য। বেশিরভাগ গেমস, যতদূর আমি জানি, এমনকি ক্লায়েন্টেরও সে সম্পর্কে যত্ন নেই। এটি আপনার প্রয়োজনগুলি নির্ভর করে।

তবে থাম্বের নিয়মটি হ'ল আপনার ক্লায়েন্টকে কখনই বিশ্বাস করা উচিত নয়। এটি যদি গেমপ্লে প্রভাবিত করে তবে আপনাকে এটি সার্ভারে অন্তত যাচাই করতে হবে।


24

সুতরাং, এখানে কয়েকটি উত্তর।

  • ক্লায়েন্ট-সাইড সংঘর্ষ একটি পারফরম্যান্স দৃষ্টিকোণ থেকে এবং খেলোয়াড়ের অনুভূতির দৃষ্টিকোণ থেকে আদর্শ। আপনি সংঘর্ষটি দীর্ঘস্থায়ী হতে চান না, আপনি চান খেলোয়াড়রা কোনও শক্ত বস্তুতে চলে এবং থামুক। আপনি যদি এটি সার্ভার-সাইড করেন, আপনি হয় পুরো জায়গা জুড়ে রবারব্যান্ডিং খেলোয়াড়দের দিকে তাকিয়ে রয়েছেন বা খেলোয়াড়রা সরানোর চেষ্টা করার সময় লক্ষণীয় পিছনে দিচ্ছেন। খারাপ মোজো, উভয় ক্ষেত্রেই।

  • একটি সুরক্ষার দৃষ্টিকোণ থেকে সার্ভার-সাইড সংঘর্ষ আদর্শ। আপনার ক্লায়েন্টরা "বোবা টার্মিনালগুলিতে" যত কাছাকাছি আসবে ততই আপনার খেলাটি তত কম ব্যবহারযোগ্য হবে। এমন কোনও কারণ রয়েছে যে পাঠ্য-ভিত্তিক এমইউডি খেলে কেউই ওয়ালহ্যাকস বা স্পিডহ্যাকগুলি নিয়ে চিন্তা করতে পারে না - এটি কারণ ক্লায়েন্ট উল্লেখযোগ্য কোনও কাজ করছে না।

  • এরকম উভয় "আদর্শ" প্রায় প্রতিটি ক্ষেত্রে হয়। ক্লায়েন্টরা তাদের জিনিসটি করতে দিন, তারপরে সার্ভারে ডাবল চেক করুন যাতে লোকেরা প্রতারণা করছে না তা নিশ্চিত করে নিন। ডাউনসাইডগুলি জটিলতা, সিঙ্ক্রোনাইজেশন ( দু'জনের মধ্যে একমত না হলে আপনি ঠিক কী করবেন) এবং নিখুঁত সার্ভারের সিপিইউ ব্যবহার।

  • আমি যা প্রস্তাব দিচ্ছি তা হ'ল এটি প্রায় সম্পূর্ণ ক্লায়েন্ট-সাইড। ক্লায়েন্টটি সম্পূর্ণ ক্লায়েন্ট-সাইড সিস্টেমে যেমন ঠিক তার অবস্থান সম্পর্কে অনুমোদনযোগ্য এবং তার নিজস্ব প্রক্রিয়াজাতকরণও করে। তার উপরে, আপনার এলোমেলোভাবে সার্ভারটি একবারে একবারে বিভিন্ন প্লেয়ার চেক করে। সার্ভার লোড কম রাখুন, তবে এটি প্রতারণাপূর্ণ আশ্চর্যজনকভাবে দ্রুত নির্মূল করবে।

বিকল্পভাবে, আপাতত এটি ক্লায়েন্ট-সাইড করুন, ভবিষ্যতে কিছু সময় সার্ভার-সাইড যাচাইকরণ যুক্ত করুন যদি আপনার গেমটি জনপ্রিয় হয়ে ওঠে যে লোকেরা এতে প্রতারণা করছে। কোনটি, আসল কথা বলা যাক, সম্ভবত এটি হবে না, সুতরাং এখনই কোডার সময়টি ব্যয় করার কোনও অর্থ নেই।


3

ওয়ার্কক্র্যাফট ওয়ার্ল্ড খেলোয়াড় / জনতার মধ্যে সংঘর্ষ সনাক্তকরণ করে না। এই সিদ্ধান্তের পিছনে প্রযুক্তিগত কারণ থাকতে পারে বা নাও থাকতে পারে, তবে সত্যই, এটি প্রযুক্তিগত সিদ্ধান্তের চেয়ে গেম ডিজাইনের সিদ্ধান্তের বেশি হতে হবে:

প্লেয়ার-বনাম-প্লেয়ার পরিস্থিতিতে এটি কতটা সুবিধাজনক হতে পারে তা কল্পনা করুন। বা যদি অন্যান্য (প্রায়শই নিষ্ক্রিয়) প্লেয়াররা আপনার চলাচল অবরুদ্ধ করে থাকে তবে ব্যাংক / নিলামের ঘর / মেলবক্সগুলি ব্যবহার করা কত কঠিন হবে!

ক্লায়েন্ট বনাম সার্ভার ভিত্তিক সংঘর্ষ সনাক্তকরণের ক্ষেত্রে - সত্যই, যদি না চলাচল খুব ধীর হয় তবে এটি প্রাথমিকভাবে ক্লায়েন্ট-সাইড হতে হবে, সুতরাং এটি প্রতিটি ক্লায়েন্টকে ডান দেখাচ্ছে। লেগি / বিলম্বিত সংঘর্ষের প্রতিক্রিয়া, এবং / বা 'অদৃশ্য' অবজেক্টগুলির সাথে সংঘর্ষ করা বেশ অপ্রীতিকর হবে।


1
যদিও প্লেয়ার বনাম ভিড় / প্লেয়ারের সংঘর্ষ খারাপ গেমের নকশা কিনা তা নিয়ে প্রশ্ন না থাকলেও আমি ডার্কফল অনলাইন এর মতো গেমগুলিতে সন্ধান করার পরামর্শ দিচ্ছি যেখানে সবকিছুই দৃ solid়। এটি গেমপ্লেতে একটি নতুন মাত্রা যুক্ত করে এবং আপনাকে গেমের সাথে খুব আকর্ষণীয় জিনিস করার অনুমতি দেয়। খেলোয়াড়রা আমার গেমটিতে ব্যাঙ্কের মতো জিনিসগুলি ব্লক করার বিষয়ে উদ্বিগ্ন হব না কারণ সর্বদা একটি ছোট ব্যবধান থাকবে যেখানে প্লেয়াররা বিষয়টি খোলার জন্য দেখতে পাবে।
বারাক্যাটএক্স 2

আপনি খেলোয়াড়দের আক্রমণ করতে পারে এমন যে কোনও কিছু দ্বারা বাধা দিতে পারে এবং তারা আক্রমণ করতে পারে না এমন কিছু দ্বারা তারা সহজেই চলতে পারে। উদাহরণস্বরূপ, খেলোয়াড়রা ভিড়ের মধ্যে দিয়ে হাঁটতে পারবেন না যেহেতু তারা ভিড়গুলিকে আক্রমণ করতে পারে। তারা পিভিপিতে পতাকাঙ্কিত হওয়ায় তারা খেলোয়াড়দের মধ্য দিয়ে চলতে পারবেন না যেহেতু তারা পিভিপিতে পতাকাঙ্কিত রয়েছে। যে প্লেয়ারকে পিভিপি প্রতীকী নয় এমন কোনও খেলোয়াড় যেকোন খেলোয়াড়ের মধ্য দিয়ে চলতে পারে, এমনকি পিভিপিতে পতাকাঙ্কিত না হওয়াতেও তারা প্লেয়ারদের আক্রমণ করতে পারে না।
আজরাল

2

আপনি যদি হ্যাকগুলি নিয়ে উদ্বিগ্ন হন এবং গেম খেলায় এটির প্রভাব পড়ে তবে উত্তরটি হ্যাঁ।

আমার ব্রাউজার ভিত্তিক গেমটি যা "সিটি বিল্ডিং" ধরণের গেম, আমি হ্যাকগুলি নিয়ে বিরক্ত নই কারণ আমি যখন সংরক্ষিত গেমের অবস্থার বিন্যাস করি তখন ক্লায়েন্ট ইঞ্জিন ব্যর্থ হয় না।

তবে এটি গেমপ্লেটি সম্ভাব্যভাবে অপব্যবহার করতে পারে কারণ প্লেয়ারকে আরও ঘরবাড়ি / ভবন নির্মাণের জন্য প্লেযোগ্য ক্ষেত্রটি প্রসারিত করতে গেম কয়েন (বা প্রিমিয়াম নগদ) ব্যয় করতে হবে। সুতরাং, আমি সদ্য সংযুক্ত বিল্ডিংয়ের দ্বারা দখল করা টাইলগুলির সংখ্যার একটি সহজ চেক প্রয়োগ করতে চলেছি আবার কতগুলি বিনামূল্যে টাইল উপলব্ধ available

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.