আমি আমার প্রথম 'যথাযথ' গেম প্রকল্পটি শুরু করছি এবং এক্সএনএ-তে গেমের উপাদানগুলি কীভাবে যোগাযোগ করা উচিত তা সিদ্ধান্ত নেওয়ার চেষ্টা করে একটি অনিবার্যভাবে আমি আঘাত করেছি।
পূর্ববর্তী (জাভা) জিইউআই প্রোগ্রামিং ইভেন্টগুলি থেকে, হ্যান্ডলার এবং শ্রোতাদের সামনে এগিয়ে যাওয়ার মতো মনে হয়েছিল। সুতরাং আমার কাছে এমন এক ধরণের ইভেন্ট বাস ছিল যা ইভেন্ট রেজিস্ট্রেশন এবং ক্লাসগুলি সেই ইভেন্টগুলিতে সাবস্ক্রাইব করে তাদের সাথে ডিল করার জন্য গ্রহণ করে। উদাহরণস্বরূপ (সিউডোকোড):
class SpriteManager
Update(){
if(player.collidesWith(enemy)
// create new 'PlayerCollisionEvent'
}
class HUDManager
onPlayerCollisionEvent(){
// Update the HUD (reduce lives etc)
}
তবে আমি কোড সেটআপ সম্পর্কে নিশ্চিত নই (সি # তে) যা এটি সম্পূর্ণরূপে সম্পন্ন করার প্রয়োজন হবে। কী ঘটনার ট্র্যাক রাখে (কোনও ধরণের বাস?) এবং এটি কীভাবে কাঠামোগত করা হয়?
গেম পরিষেবাদি সম্পর্কেও অনেক কিছু উল্লেখ করা আছে বলে মনে হয়, যার মাধ্যমে আপনি আপনার প্রধান গেমকোএস শ্রেণিতে একটি গেম কম্পোনেন্ট নিবন্ধভুক্ত করতে পারেন, তারপরে আপনার কোডের যে কোনও জায়গা থেকে মূল 'গেম' অবজেক্টের রেফারেন্স পাওয়া যায়। আমি আমার স্প্রাইটব্যাচ অবজেক্টটি দিয়ে এটি চেষ্টা করেছি এবং এটি খুব সহজ বলে মনে হচ্ছে .. তবে, আমি এটি কোনও ইভেন্টের মডেলের মতো নমনীয় দেখতে পাচ্ছি না।
উদাহরণস্বরূপ যখন কোনও শত্রু মারা যায়। আমরা গেমের স্কোরটি আপডেট করতে চাই। পরিষেবাদি ব্যবহার করে আমি আমার স্টেট ম্যানেজার অবজেক্টটি গেম 1 এ তৈরি হয়েছি এবং পরিষেবা হিসাবে যুক্ত করতে পারি, তারপরে নতুন মানটিতে 'স্কোর' সেট করি। আমি মনে করি একটি 'অনিমিডিথ' ইভেন্ট, যা ক্লাসের একটি ভিড় দ্বারা আলাদাভাবে পরিচালনা করা যেতে পারে, তবে প্রাসঙ্গিক 'শত্রু মৃত্যু সনাক্তকরণ' বিভাগে কোডের 1 লাইন দ্বারা শুরু করা, প্রতিটি প্রয়োজনীয় গেম কম্পোনেন্টকে আলাদাভাবে কাস্ট করার চেয়ে ভাল হবে তারপরে যা কিছু কল করুন পদ্ধতি প্রয়োজন।
নাকি এই নিকৃষ্ট কৌশলগুলি অন্য কিছু?
আমি বুঝতে পারি এটি গেম যোগাযোগের দৃষ্টান্তগুলির মতো আংশিকভাবে আমার দুর্বল সি # জ্ঞান, তবে আমি সত্যিই এই মূল জিনিসটি সঠিকভাবে পেতে চাই।
হালনাগাদ
পরিষেবাদিগুলির দিকে নজর দেওয়া আরও বিশদ আমি কম বিশ্বাস করি - এটি মূলত একটি বিশ্বব্যাপী পরিবর্তনশীল (যা আমি বুঝতে পারি) এর পাশ দিয়ে চলেছে।
আপডেট 2
ইভেন্ট হ্যান্ডলিং এবং নমুনা কোড পরীক্ষা করার জন্য এই বেসিক টিউটোরিয়ালটি একবার দেখে মনে হচ্ছে ঘটনাগুলি আমি যা আলোচনা করছি তার জন্য একটি যৌক্তিক পছন্দ হবে। তবে আমি যে নমুনাগুলি দেখেছি সেগুলিতে আমি এর বেশি ব্যবহার করতে পারি না। না করার কিছু স্পষ্ট কারণ আছে?