মাল্টিপ্লেয়ার রিয়েলটাইম অ্যান্ড্রয়েড গেমের জন্য সেরা সমাধান [বন্ধ]


11

আমি অ্যান্ড্রয়েডের (2-8 প্লেয়ার) মাল্টিপ্লেয়ার রিয়েলটাইম গেমটি তৈরির পরিকল্পনা করি এবং আমি বিবেচনা করি, মাল্টিপ্লেয়ার সংস্থার জন্য কোন সমাধানটি সেরা:

  1. পিসিতে সার্ভার তৈরি করুন, এবং মোবাইলে ক্লায়েন্ট করুন, সমস্ত কথোপকথন সার্ভারের মাধ্যমে যায় (ক্লায়েন্টা -> পিসি সার্ভার -> সমস্ত ক্লায়েন্ট)

  2. ব্লুটুথ ব্যবহার করুন, আমি এখনও ব্যবহার করি না, এবং আমি জানি না যে ব্লুটুথে মাল্টিপ্লেয়ার তৈরি করা কঠিন

  3. কোনও একটি ডিভাইসে সার্ভার তৈরি করুন এবং অন্যান্য ডিভাইসগুলি সংযোগ করুন (নেটওয়ার্কের মাধ্যমে, তবে আমি জানি না NAT এর মাধ্যমে ডিভাইসগুলির সাথে সমস্যার সমাধান করা কি কঠিন?)

  4. অন্য সমাধান?


3
আপনি কি এইটিকে স্থানীয়-একমাত্র গেম হিসাবে পরিকল্পনা করছেন বা আপনি কী চান যে লোকেরা ইন্টারনেট জুড়ে লোকের সাথে খেলতে পারবে? আপনি কি গেমসের জন্য মেশিন হোস্ট করছেন?
টেট্রাড

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

উত্তর:


2

দাবি পরিত্যাগী; আমি জাভা এবং অ্যান্ড্রয়েড প্ল্যাটফর্ম দিয়ে খুব বেশি কিছু করিনি ।

তবে উইন্ডোজ প্ল্যাটফর্মের সাথে উইন্ডোজ মোবাইল প্ল্যাটফর্মের 'নেট' ভাষার সাথে আমার আরও বিস্তৃত অভিজ্ঞতা হ'ল ব্লুটুথ বা নেটওয়ার্ক ডেটা সংযোগ তৈরি এবং বজায় রাখতে প্রয়োজনীয় সমস্ত কোডের একটি ভাল 75-90% বজায় রাখা হয় / ওএস বা লাইব্রেরিগুলির সাহায্যে হার্ডওয়্যার অ্যাক্সেসের প্রয়োজন হবে supported

এ পর্যন্ত অ্যান্ড্রয়েডের সাথে, ব্লুটুথ বা ইন্টারনেটের মাধ্যমে ডেটা সংযোগ তৈরির জন্য ওএস এক্সপোজার পদ্ধতিগুলির সাথে সম্পর্কিত হার্ডওয়্যার সক্ষম / অক্ষম করার পাশাপাশি এটি সত্য বলে মনে হয়।

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

অন্যান্যগুলি সঠিক যে ব্লুটুথ v2.0 / v2.1 বর্তমানে বড় ডেটা লোড সমর্থন করতে সক্ষম নয়। এটি v3.0 এবং এর উচ্চতর ইভেন্টের শেষের সাথে পরিবর্তিত হবে। এবং এই সীমাবদ্ধতা কাছাকাছি পেতে উপায় আছে।

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

কন: প্রতিটি খেলোয়াড়ই প্রকৃতপক্ষে গেমটির নিজস্ব কিছুটা অনন্য উদাহরণ খেলবে, যা অন্য খেলোয়াড়দের সাথে যুক্ত হবে যাতে গেমগুলি একে অপরের সাথে সিঙ্কের বাইরে যাওয়ার থেকে দূরে রাখে।

, CON: সমর্থনকারী কোড হতে পারে ব্যাপক / জটিল এবং কঠিন কি আপনি অর্জন করতে চান তার উপর নির্ভর করে প্রায় আপনার মাথা মোড়ানো।

প্রো: কোনও কেন্দ্রীয় সার্ভার বা ডিভাইসের প্রয়োজন নেই! কোনও $$$ রক্ষণাবেক্ষণের প্রয়োজন নেই।

প্রো: যখন কোনও খেলোয়াড় (পুনরায়) যোগদান করেন বা কোনও খেলা শুরু করা হয় তখন কেবলমাত্র ডেটার ভারী বিনিময় ঘটে। - এমনকি সমস্ত গেমস তৈরি হতে চলেছে এবং সমস্ত খেলোয়াড়ের একই পদ্ধতিতে অগ্রগতি নিশ্চিত করে এটি হ্রাস করা যায়। সম্ভাব্য শক্তি খরচের যে ভারী নেটওয়ার্কের ব্যবহার কারণে ঘটে কমে যায়।

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

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

সবচেয়ে সহজ ছিল ইউনোকে অনুকরণ করা। আমি খেলোয়াড়ের সমস্ত গেম জিতেছে তা নিশ্চিত করার জন্য কোনও খেলোয়াড় জিতে যাওয়ার পরে আমি মূলত পরাজিত লোকদের ডেকে রেখেছি। 95% + সময়টি আমি বলতে পারিনি যে আমি অন্য সবার মতো ঠিক একই খেলা খেলছি না।

আমি দ্বিতীয় ওরিওনের দ্বিতীয় মাস্টার অনুরূপ একটি গেমটি তৈরি করা শুরু করেছিলাম তবে গেমটি নিজেই আমার হাতে নেওয়া খুব সামান্য ছিল।


9

এটি প্রচুর পরিমাণে গেমের উপর নির্ভর করে তবে কিছু বন্ধু এবং আমি কয়েক মাস আগে একই সমস্যা নিয়ে ভাবছিলাম এবং আমরা যা নির্ধারণ করেছি তা এখানে। আমি আবার বেশ ভাল এবং খারাপ মেজাজে আছি।

কম্পিউটার ভিত্তিক সার্ভার

পেশাদাররা

  • চেষ্টা এবং সত্য
  • মাপযোগ্য

কনস

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

তাদের মধ্যে একজনের নিয়ন্ত্রণে থাকা পিয়ার টু পিয়ার

পেশাদাররা

  • অ্যাড-হক সার্ভার যেখানে বন্ধুরা চাইলে অন্য বন্ধুদের সাথে যোগ দিতে পারে
  • আপনার পক্ষে সামান্য কোনও চলমান ব্যয়
  • সার্ভার কোডটি ক্লায়েন্ট কোডের সাথে মিশ্রিত হবে, আলাদা সার্ভার অ্যাপ্লিকেশন লেখার দরকার নেই।

কনস

  • একটি সাধারণ কেন্দ্রীভূত পিয়ার-ফাইন্ডার লিখতে হবে। (আমি কয়েকশো সহজ লাইনে পিএইচপি + মাইএসকিএল করেছিলাম)
  • সার্ভারগুলি ফোনে চলছে। ফোন ধীর হতে পারে। সমস্ত লক্ষ্যবস্তু ফোন একটি গেম হোস্ট করতে সক্ষম হবে?
  • সার্ভার ফোনটি সংযোগ বিচ্ছিন্ন হয়ে গেলে কী হবে?
  • হ্যাকারগুলিতে প্রবেশের জন্য ক্লায়েন্ট-সার্ভারের চেয়ে সহজ

ব্লুটুথ হিসাবে, আমি আশা করব যে উপরের পিয়ার থেকে পিয়ার পদ্ধতির অনুরূপ হবে। আমিও মনে করি না NAT এর সাথে আপনার কোনও সমস্যা হওয়া উচিত।

সম্পাদনা : এটি আপনার অভিজ্ঞতার উপরও নির্ভর করে। নেটওয়ার্কিংয়ের প্রথমে হ্যাং পেতে আমি কিছু অপেক্ষাকৃত ছোট ক্লায়েন্ট / সার্ভার গেমগুলি লিখতে শুরু করব। এটি একটি শক্ত বিষয় যা প্রথমবার ভুল হওয়া সহজ। আমি তৃতীয় চেষ্টা আমার অধিকার পেয়েছিলাম। জ্ঞাত নিদর্শনগুলি অনুসরণ করুন এবং নিজেকে কিছু তৈরি করার চেষ্টা করবেন না।


ব্লুটুথের মাধ্যমে এটি করা যেতে পারে বলে আমি মনে করি না, এটি সম্প্রচারকে সমর্থন করে: আফিক এটি কেবল একটি একক হোস্টকে অন্যটির সাথে সংযুক্ত করে, খুব কম সংযোগের পরিমাণ রাখে এবং ধীর হয়।
o0 '

4

আপনার সবচেয়ে বড় বিবেচনার দরকার হ'ল নির্ভরযোগ্যতা reli ফোনগুলি খুব নির্ভরযোগ্য নয়; আসলে, আপনার সম্ভবত ধরে নেওয়া উচিত যে 8 খেলোয়াড়ের খেলায় কেউ সংযোগ বিচ্ছিন্ন হওয়ার সম্ভাবনা রয়েছে (ইনকামিং কল, খারাপ সংবর্ধনা, প্লেয়ার ছাড়ছেন ...)

এটি মনে রেখে, বুঝতে হবে যে আপনার সংযোগ বিচ্ছিন্ন ব্যবহারকারীর প্রভাবকে হ্রাস করা উচিত। আপনার দ্বিতীয় বিকল্পে, আপনি মূলত একটি ফোন সার্ভার তৈরি করেছেন। যদি সেই ফোনটি এমআইএ যায়, গেমটি কার্যকরভাবে সমস্ত প্লেয়ারের জন্য শেষ হয়।

জন একটি traditionalতিহ্যবাহী ক্লায়েন্ট </> সার্ভারের আর্কিটেকচারের উপকারিতা এবং বিধিগুলি আবরণ করেছেন। এটি সম্ভবত সকলের জন্য একটি নির্ভরযোগ্য মাল্টিপ্লেয়ার অভিজ্ঞতা প্রদানের সবচেয়ে নির্ভরযোগ্য উপায়।

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

কৌশলটি কার্যকর করা কঠিন এবং ডিবাগ করা খুব কঠিন হতে পারে। আরও বেশি traditionalতিহ্যবাহী ক্লায়েন্ট-সার্ভার আর্কিটেকচারের চেয়ে এটি অবশ্যই আরও কঠিন। এটি কোনও প্লেয়ারের ইনপুট এবং গেমটি যখন ইনপুটটিতে প্রতিক্রিয়া জানায় তখন একটি ব্যবধানও বোঝায়। তবে, যদি কোনও খেলোয়াড় বাদ পড়ে, তবে বাকি খেলোয়াড়রা কেবল তাকে খেলা থেকে বাদ দিতে এবং চালিয়ে যেতে পারত। এটি অন্যান্য স্কিমের তুলনায় নেটওয়ার্ক ট্র্যাফিক সম্ভাব্যভাবে হ্রাস করতে পারে।

আপনি যদি এই কৌশলটি সম্পর্কে আরও জানতে চান তবে বিষয়টির এই দুর্দান্ত নিবন্ধটি দিয়ে শুরু করুন। অন্যথায়, আমি দৃ network়ভাবে এমন একটি নেটওয়ার্ক স্কিমকে নিরুৎসাহিত করব যেখানে একক ফোন একাধিক প্লেয়ার সেশনের জন্য দায়বদ্ধ এবং আরও সহজ ক্লায়েন্ট <-> সার্ভার আর্কিটেকচারের পরামর্শ দেয়।

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