আমি যখন সি # তে একটি ভিডিও গেম ডিজাইন করছিলাম তখন আমি এই প্রশ্নটি জুড়ে এসেছি।
আমরা যদি যুদ্ধক্ষেত্র বা কল অফ ডিউটির মতো গেমগুলিকে বিবেচনা করি তবে একই সাথে কয়েকশো বা হাজার হাজার বুলেটও উড়ছে। ইভেন্টগুলি ক্রমাগত ট্রিগার হয় এবং আমি যা জানি তা থেকে এটি প্রচুর পরিমাণে প্রক্রিয়াকরণ শক্তি চুষে ফেলে ... বা এটি করে? আমি জানতে চাই যে বিভিন্ন গেম ডেভেলপাররা কীভাবে (2 ডি এবং 3 ডি) বুলেট পরিচালনা করে এবং প্রত্যেকের জন্য সবচেয়ে কার্যকর পদ্ধতিটি কী।
আমি প্রশ্নটি পড়েছিলাম কীভাবে বুলেটগুলি ভিডিও গেমগুলিতে সিমুলেটেড হয়? তবে বুলেটগুলি প্রোগ্রামের নকশার দৃষ্টিকোণ থেকে কীভাবে কাজ করে তা স্পর্শ করে না।
আমার কয়েকটি ধারণা ছিল, কিন্তু প্রত্যেকেরই এর ত্রুটি রয়েছে:
আমি সবচেয়ে কার্যকর পদ্ধতিটি (2 ডি গেমসের জন্য) ভাবতে পারি:
বলুন আমি বুলেট নামক একটি ক্লাস তৈরি করেছিলাম, এবং যদিও দীর্ঘকাল ধরে ব্যবহারকারী একটি বোতাম চেপে ধরে রাখে, প্রতি 0.01 সেকেন্ডে বুলেট অবজেক্ট তৈরি করা হত। এই বুলেটটিতে রয়েছে:
1 বেগ
2 যেখানে এটি থেকে গুলি করা হচ্ছে পদে শুরু
3 স্প্রাইট টেক্সচার
4 একটি হিট প্রভাব
যেহেতু বুলেটটি তার নিজস্ব শ্রেণি হবে তাই এটি অঙ্কন, চলন এবং ক্রিয়া শ্রোতাদের নিজেরাই পরিচালনা করতে পারে।
এই হাজার হাজার বস্তু তাত্ক্ষণিকভাবে স্থাপন করা, তারপরে ধ্বংস (যখন হিট প্রভাবটি ট্রিগার করা হয়) তখন প্রক্রিয়াজাতকরণের পক্ষে কি শক্ত হবে না? র্যাম স্পেস?
3 ডি গেমগুলির জন্য কার্যকর পদ্ধতি - আমার মনে হয়েছিল আরও একটি ধারণা:
বলি আমি একটি অস্ত্র শ্রেণি তৈরি করি। এই অস্ত্রটির বিভিন্ন বৈশিষ্ট্য রয়েছে যার মধ্যে কয়েকটি:
1 অস্ত্রটি কোথায় লক্ষ্য করে চলেছে তা সনাক্ত করুন এবং এটি কোনও লক্ষ্য লক্ষ্য করছে কিনা তা নির্ধারণ করুন
2 বন্দুকের শুটিংয়ের একটি অ্যানিমেশন ট্রিগার করুন
3 এর একটি ডোডামেজ () পদ্ধতি রয়েছে যা বন্দুকের দিকে ইশারা করে যা কিছু থেকে স্বাস্থ্য বিয়োগ করতে কিছু নির্দেশ করে
4 বোতাম টিপে গেলে বুলেট অ্যানিমেশন ক্লাসটি জানায়
আমি তখন বুলেটএনিমেশন বলি, একটি স্ট্যাটিক ক্লাস তৈরি করতে পারলাম, এটি যে গুলিটি চালু করেছিল সেখান থেকে নোটিফিকেশন পেতে পারে, যেখানে সেই বন্দুকটি চিহ্নিত করা হয়েছে (বুলেট গন্তব্যের জন্য), এবং বুলেটটির জন্য উপযুক্ত স্প্রাইট এবং বেগ সম্পর্কিত তথ্য । এই শ্রেণিটি উভয় অবস্থান এবং কাঙ্ক্ষিত স্প্রাইটের উপর ভিত্তি করে স্প্রিটস (সম্ভবত একটি নতুন থ্রেডে, সম্ভবত ইডকি) আঁকেন, যাতে একটি বন্দুক থেকে গুলিবিদ্ধ গুলি চালানো হতে পারে ulate
পরবর্তীটি কোড করা বেশ কঠিন বলে মনে হচ্ছে এবং একসাথে কয়েক হাজার বুলেটের জন্য নিয়মিত স্ট্যাটিকটি কল করতে প্রচুর প্রসেসিং শক্তি লাগবে না? উভয় প্রারম্ভিক এবং শেষ পজিশনের উপর ধ্রুবক আপডেটগুলি পাওয়া শক্তও হবে।
আমার প্রশ্ন, গেম স্রষ্টাগুলি এটি সবচেয়ে কার্যকরী উপায় কী? এই পদ্ধতিটি কি 2 ডি থেকে 3 ডি গেমগুলিতে পরিবর্তিত হয়?
pew-pew-pew
প্রযুক্তির মাধ্যমে কাজ করে :)