কিভাবে একটি নেটওয়ার্ক গেম লিখবেন? [বন্ধ]


73

এমএমও বিকাশ করা কেন এত কঠিন? :

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

আমি সকেট, সার্ভার, ক্লায়েন্ট, প্রোটোকল, সংযোগ এবং এই জাতীয় জিনিসগুলি সম্পর্কে তত্ত্বটি জানি।

এখন আমি ভাবছি যে কেউ কীভাবে একটি নেটওয়ার্ক গেম লিখতে শিখতে পারে:

  • ভারের সমস্যার ভারসাম্য কীভাবে রাখবেন?
  • গেমের অবস্থা কীভাবে পরিচালনা করবেন?
  • কীভাবে জিনিসগুলিকে সিঙ্ক্রোনাইজ করা যায়?
  • বিপরীত প্রকৌশল থেকে যোগাযোগ এবং ক্লায়েন্টকে কীভাবে রক্ষা করবেন?
  • বিলম্বিত সমস্যাগুলির চারপাশে কীভাবে কাজ করবেন?
  • কোন জিনিসগুলি স্থানীয়ভাবে গণনা করা উচিত এবং কোনটি সার্ভারে থাকা উচিত?
  • ...

এ সম্পর্কিত কোন ভাল বই, টিউটোরিয়াল, সাইট, আকর্ষণীয় নিবন্ধ বা অন্যান্য প্রশ্ন আছে?

আমি বিস্তৃত উত্তর খুঁজছি, তবে নির্দিষ্টগুলিও পার্থক্যটি শিখতে ভাল।


4
হ্যাঁ, এটি সম্পর্কিত বই, টিউটোরিয়াল, সাইট, আকর্ষণীয় নিবন্ধ এবং অন্যান্য প্রশ্ন রয়েছে।
রিকিট

2
আমি প্রশ্নটি পরিবর্তন না করেই প্রশ্নটি ঠেকানোর জন্য অনুগ্রহ যুক্ত করেছি এবং ব্যবহারকারীদের এই প্রশ্নের উত্তরের উপযুক্ত কারণ এইভাবে সেরা উত্তরদাতা তাদের কাজের জন্য খ্যাতি পান তবে একটি উত্তর নেই যা প্রশ্নের উত্তর দেয়।
তামারা উইজসম্যান

উত্তর:


61

অন্যান্য উত্তরের সাথে যুক্ত নিবন্ধটি ছাড়াও, আমি আরিয়ান প্রকল্পের অভিজ্ঞতা সম্পর্কে কিছুটা বলতে পারি ।

কীভাবে জিনিসগুলিকে সিঙ্ক্রোনাইজ করা যায়?

ক্রিয়া এবং উপলব্ধি ধারণার চারপাশে আমাদের কাঠামো " ম্যারাওরোয়া " রয়েছে: ক্লায়েন্টের কাছ থেকে ক্রিয়াকলাপগুলি ব্যবহারকারী ইনপুট বহনকারী সার্ভারে প্রেরণ করা হয় (বাঁদিকে হাঁটুন, আক্রমণ দানব # 47, 'হ্যালো' বলুন)। এবং উপলব্ধিগুলি সার্ভার থেকে ক্লায়েন্টদের কাছে তাদের আশেপাশের বিশ্বের অবস্থা সম্পর্কে জানানো হয়। সেই অনুভূতিগুলি প্রতিটি মোড়কে পাঠানো হয়। গেমের উপর নির্ভর করে আমরা 30ms থেকে 300ms এর টার্ন টাইম ব্যবহার করি।

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

বিলম্বিত সমস্যাগুলির চারপাশে কীভাবে কাজ করবেন?

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

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

ইউডিপি বনাম টিসিপি ব্যবহার

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

বিপরীত প্রকৌশল থেকে যোগাযোগ এবং ক্লায়েন্টকে কীভাবে রক্ষা করবেন?

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

এসএসএল ব্যবহার করে তৃতীয় পক্ষের অননুমোদিত স্নিগিংয়ের বিরুদ্ধে যোগাযোগ রক্ষা করা সহজ।

তবে এটি বিপরীত প্রকৌশল থেকে রক্ষা করা অসম্ভব। নিশ্চিত যে আপনি এটিকে অবরুদ্ধ করতে পারেন এবং অ্যান্টি-ডিবাগিং কৌশলগুলি ব্যবহার করতে পারেন। তবে শেষ পর্যন্ত আপনি সফ্টওয়্যারগুলির বিপরীত প্রকৌশলকে আটকাতে পারবেন না যা আপনি ব্যবহারকারীদেরকে দিয়ে যান। বিকাশকারীরা এন্টি ডিবাগিং কৌশলগুলিতে প্রচুর প্রচেষ্টা চালিয়ে গেলেও স্কাইপ কীভাবে ইঞ্জিনিয়ার হয়েছিল তা নিয়ে একটি আকর্ষণীয় উপস্থাপনা রয়েছে: http://recon.cx/en/f/vskype-part1.pdf

দ্রষ্টব্য: কিছু দেশ রয়েছে যেখানে বিপরীত প্রকৌশল অবৈধ বা লাইসেন্সে অনুচ্ছেদ স্থাপনের অনুমতি দেয় বা বিপরীত প্রকৌশল অস্বীকার করে টসকে অনুমতি দেয়। তবে অন্যান্য দেশ রয়েছে (আমি যেমন বাস করছি তার মতো) যা সুস্পষ্টভাবে ডেটা স্টোরেজ ফর্ম্যাট বা ট্রান্সমিশন প্রোটোকল, লাইসেন্সের অনুচ্ছেদে বা টোসকে বাতিল করার চেষ্টা করার প্রেক্ষাপটে বিপরীত প্রকৌশলকে অনুমতি দেয়। (এই বিভাগের সমস্ত কিছুই আমি যতদূর জানি, আমি আইনজীবী নই)

কোন জিনিসগুলি স্থানীয়ভাবে গণনা করা উচিত এবং কোনটি সার্ভারে থাকা উচিত?

আমরা সার্ভারে গেম যুক্তি সম্পর্কিত সমস্ত কিছু গণনা করি। গেমটি সুষ্ঠুভাবে খেলতে খেলতে ক্লায়েন্ট নির্দিষ্ট কিছু ইভেন্টের পূর্বাভাস দেবে। তবে শেষ পর্যন্ত সার্ভারটি সর্বদা সঠিক।

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

ভারের সমস্যার ভারসাম্য কীভাবে রাখবেন?

এটি রক্ষণাবেক্ষণ সহজ করার জন্য যথাসম্ভব সহজ রাখার চেষ্টা করুন।

স্থায়ী সামগ্রীর লোড ব্যালেন্সিং HTTP সার্ভার ক্লাস্টার এবং সামগ্রী বিতরণ নেটওয়ার্কগুলির ক্ষেত্রে সুপরিচিত।

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

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

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

এমএমওগুলিতে লোড ব্যালেন্সিং কীভাবে অর্জিত হয় আমি এই বিষয়টিতে বিস্তারিতভাবে গিয়েছিলাম ?


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

2
@ ড্যানি, নতুন টিসিপি-সংযোগ শুরু করার জন্য তিনটি প্যাকেট দরকার: ক্লায়েন্ট থেকে সার্ভার: এসওয়াইএন, সার্ভার থেকে ক্লায়েন্ট: এসওয়াইএন এসি, ক্লায়েন্ট থেকে সার্ভার: ACK + ডেটা। এটি ইউডিপির চেয়ে এক রাউন্ড ট্রিপ, তবে ক্লায়েন্ট প্রথমবারের জন্য সার্ভারের সাথে যোগাযোগ করলে এটি কেবলমাত্র শুরুতেই ঘটে। একটি প্রতিষ্ঠিত সংযোগে প্রতিটি প্যাকেট কোনও অতিরিক্ত রাউন্ড ট্রিপ ছাড়াই তাত্ক্ষণিকভাবে প্রক্রিয়াজাত করা হয়। একটি এসকে-উত্তর থাকবে তবে এটি যে এসসি প্যাকেটগুলি ফেরত ভ্রমণের সময় প্রাপ্ত ডেটা ইতিমধ্যে প্রক্রিয়াজাত হয়।
হেনড্রিক ব্রুমারম্যান

1
@ ড্যানি, টিসিপি প্যাকেট ক্ষতি স্বয়ংক্রিয়ভাবে এবং বেশ দক্ষ উপায়ে পরিচালনা করে। নিজেকে ইউডিপি ব্যবহার করে পুনরায় প্রয়োগ করা শক্ত; যদি না আপনার প্রোটোকলটি এলোমেলো Undelivred প্যাকেটগুলির সাথে ঠিক না থাকে। পরের সমস্যাটি হ'ল টিসিপি নিশ্চিত করে যে প্যাকেটের ক্রম, যখন ইউডিপি প্যাকেটগুলি ভুল ক্রমে প্রাপ্ত হতে পারে। আবার, নিজেকে পুনরায় বাস্তবায়ন করা শক্ত, যদি না আপনি কেবল প্যাকেটের কাউন্টারের ভিত্তিতে পুরানো প্যাকেটগুলি উপেক্ষা করতে পারেন। টিসিপির জন্য যদি খুব স্বল্প প্রতিক্রিয়া সময় প্রয়োজন হয়, নাগলের অ্যালগরিদম অক্ষম করা দরকার।
হেন্ডরিক ব্রুমারম্যান

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

27

http://gafferongames.com/networking-for-game-programmers/

গেম নেটওয়ার্কিংয়ের সাথে সম্পর্কিত বিভিন্ন সমস্যা এবং সমাধান সম্পর্কিত নিবন্ধগুলির একটি দুর্দান্ত সেট।


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

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


5
আহ না, তারা কীভাবে কাজ করে তা পরিবর্তন করে তাদের সম্পদ স্ট্রিমিংয়ের পারফরম্যান্স উন্নত করেছে। এই মুহুর্তে এইচটিটিপি / টিসিপি ব্যবহার তাদের দ্রুত বাস্তবায়নের পক্ষে আরও সহজ করে তুলেছে। আমি আরও লক্ষ করতে পারি যে জেরোমক একটি আকর্ষণীয় প্রকল্প এবং এটি গেম নেটওয়ার্কিংয়ের ক্ষেত্রে খুব সুন্দরভাবে স্কেল করতে পারে। zeromq.org
jsimmons

8

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


8

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

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

(নোট করুন যে আমি মূল প্রশ্নে এমএমওগুলি সম্পর্কে আরও কথা বলছি - একটি 'নেটওয়ার্ক গেম' বলতে পিএইচপি-ভিত্তিক পাঠ্য গেম থেকে শুরু করে এমএমও পর্যন্ত সমস্ত ধরণের জিনিস বোঝাতে পারে এবং উপরের উপ-প্রশ্নগুলি সমস্ত নয় প্রতিটি প্রকারের জন্য প্রয়োগ করুন।)


7

ভারের সমস্যার ভারসাম্য কীভাবে রাখবেন?

স্থির ভৌগলিক আকার + একাধিক উদাহরণ হ'ল সহজ সমাধান। এসডাব্লুজি-তে কাজ করা ছেলেরা গতিশীল আকারের চেষ্টা করে আফসোস করেছে।

গেমের অবস্থা কীভাবে পরিচালনা করবেন?

সার্ভার অনুমোদনপ্রাপ্ত।

কীভাবে জিনিসগুলিকে সিঙ্ক্রোনাইজ করা যায়?

সার্ভার থেকে পর্যায়ক্রমিক সিঙ্ক আপডেট। (উদ্বেগটি এখানে কী তা পুরোপুরি নিশ্চিত নয়)

বিপরীত প্রকৌশল থেকে যোগাযোগ এবং ক্লায়েন্টকে কীভাবে রক্ষা করবেন?

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

বিলম্বিত সমস্যাগুলির চারপাশে কীভাবে কাজ করবেন?

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

কোন জিনিসগুলি স্থানীয়ভাবে গণনা করা উচিত এবং কোনটি সার্ভারে থাকা উচিত?

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

সত্যি বলতে গেলে, এই সমস্যাগুলির অনেকগুলি অর্থোথোনাল এবং পরে সমাধানগুলি প্রয়োগ করা যেতে পারে। কেবল গেমটি করা শুরু করুন এবং এই বিষয়গুলি সম্পর্কে খুব বেশি চিন্তা করবেন না।


4

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

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