রিয়েল-টাইম মাল্টিপ্লেয়ারের জন্য জাভাস্ক্রিপ্ট এবং পিএইচপি? [বন্ধ]


13

আমি ভাবছি যদি জাভাস্ক্রিপ্ট ক্লায়েন্টাইডকে পিএইচপি / মাইএসকিএল সার্ভারসাইডের সাথে সংযুক্ত করা HTML5 রিয়েল-টাইম মাল্টিপ্লেয়ার (ছোট স্কেল) ব্রাউজার গেমগুলির জন্য একটি ভাল ধারণা?

আমার প্রযুক্তিগত জ্ঞান খুব সীমিত, এবং যদিও ভবিষ্যতে আমি নোড.জেএস শিখার পরিকল্পনা করি, তবে শিখার বক্ররেখা এখনই বরং বিশাল।

যেহেতু আমি ইতিমধ্যে পিএইচপি এর সাথে পরিচিত তাই আমার মনে হয় আমি এটি আরও দ্রুত কাজ করতে পারব।

আমি যে স্কেলটি ভাবছি তা হ'ল 2-8 জন খেলোয়াড়। এবং ক্লায়েন্টকে সার্ভার মেসেজের গণনা যতটা সম্ভব কম রাখার চেষ্টা করা হচ্ছে।

আমি যে মানগুলি সংরক্ষণ / হ্যান্ডেল করতে চাইছি সেগুলি হ'ল:

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

আমার অনুমান যদিও এটি সর্বোত্তম সমাধান নয়, তবে আমি যুক্তিটি ছোট রাখি কারণ এটি পুরোপুরি কার্যকর। আমি কি সঠিক?


4
পুরোপুরি করণীয় মনে হচ্ছে। আপনি শুধু এটি চেষ্টা করবেন না কেন? সবচেয়ে খারাপ ক্ষেত্রে, আপনি কিছুটা শেখার জন্য ব্যয় করেছেন, সেরা ক্ষেত্রে, আপনি যা চান ঠিক তেমনটি পেয়ে যান।
উইলিয়াম মারিয়ের

1
হ্যাঁ তবে আমি ধারণা করি এটি তৈরিতে কিছুটা সময় লাগবে, এবং আমি সময় নষ্ট করতে পছন্দ করি না, এজন্য আমি এখানে জিজ্ঞাসা করেছি। =)
justanotherhobbyist

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

1
এখানেই আসলে একটি ভাল পয়েন্ট
justanotherhobbyist

উত্তর:


12

একটি রিয়েল-টাইম গেমের জন্য, আপনি বিলম্বকে হ্রাস করতে চান। এটি অর্জনের জন্য দুটি টিপস, পিএইচপি এবং নোড সম্পর্কে নোট সহ:

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

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


+1 পয়েন্ট 2 এর জন্য আপনি যেটি করতে পারেন সবচেয়ে বড় ভুলটি প্রতিটি ইভেন্টে মাইএসকিউএল অনুসন্ধানগুলি সূচিত করার আশা করে। এইচডিডি থেকে গেমের ডেটা সরাতে আপনি যে কোনও কিছু করতে সহায়তা করতে যাচ্ছেন। এর জন্য মেমক্যাচ আপত্তিজনক সাফল্য পেয়েছি। নিঃসন্দেহে অন্যান্য উপায় আছে।
ড্যাম্প এস

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

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

1

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

অবশ্যই সার্ভার এবং ক্লায়েন্ট উভয়েরই ঠিক একই গেমটির বাস্তবায়ন করতে হবে তাই এটি আরও কিছুটা কাজ হতে পারে। আপনার যদি ক্লায়েন্ট এবং সার্ভার উভয় ক্ষেত্রে নিখুঁত বাস্তবায়ন হয়, ক্লায়েন্টটির কম প্রায়ই সিঙ্ক করা প্রয়োজন।

এটি ক্লায়েন্ট / সার্ভার মেসেজিং হ্রাস করবে এবং এটি বিলম্বিতা হ্রাস করবে। এটি প্রতারণা রোধ করতেও সহায়তা করবে।

ধরে নিই যে আপনি এই গেমটি জাভাস্ক্রিপ্টে তৈরি করছেন, নোডজেএস ব্যবহার করে জাভাস্ক্রিপ্টে ব্যাক-এন্ড লেখার পক্ষে এটি উপযুক্ত হবে। এইভাবে আপনি সার্ভার এবং ক্লায়েন্ট উভয়ের জন্য আপনার গেমের জাভাস্ক্রিপ্ট প্রয়োগ পুনরায় ব্যবহার করতে পারেন।


0

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

Nowjs নামক একটি মডিউলটি দেখুন। শুভকামনা!

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