সত্তা সিস্টেমগুলি সম্পর্কে দুটি প্রশ্ন জিজ্ঞাসা করার পরে ( 1 , 2 ) এবং সেগুলি সম্পর্কে কয়েকটি নিবন্ধ পড়ে, আমি মনে করি যে আমি এগুলি আগের চেয়ে আরও ভাল বুঝি। আমার এখনও কিছু অনিশ্চয়তা রয়েছে, প্রধানত কণা নির্গমনকারী, একটি ইনপুট সিস্টেম এবং একটি ক্যামেরা তৈরি সম্পর্কে। স্পষ্টতই এখনও সত্তা সিস্টেমগুলি বোঝার জন্য আমার কিছু সমস্যা রয়েছে এবং এগুলি সামগ্রিকভাবে অন্যান্য সামগ্রীর জন্য প্রয়োগ হতে পারে তবে আমি এই তিনটি বেছে নিয়েছিলাম কারণ এগুলি খুব আলাদা ধারণা, একটি সুন্দর বিস্তৃত ক্ষেত্রটি আবরণ করা উচিত এবং সত্তা সিস্টেমগুলি বুঝতে এবং কীভাবে আমাকে বুঝতে সহায়তা করবে এগুলি যেমন আমার সাথে আসে তেমন সমস্যাগুলি পরিচালনা করুন।
আমি জাভাস্ক্রিপ্টে একটি ইঞ্জিন তৈরি করছি, এবং আমি বেশিরভাগ মূল বৈশিষ্ট্যগুলি প্রয়োগ করেছি, যার মধ্যে রয়েছে: ইনপুট হ্যান্ডলিং, নমনীয় অ্যানিমেশন সিস্টেম, কণা এমিটার, গণিতের ক্লাস এবং ফাংশন, দৃশ্য হ্যান্ডলিং, একটি ক্যামেরা এবং একটি রেন্ডার এবং পুরো গুচ্ছ include ইঞ্জিনগুলি সাধারণত সমর্থন করে এমন অন্যান্য জিনিস। আমি বাইট 6's এর উত্তরটি পড়েছি, এটি আমাকে ইঞ্জিনটিকে কোনও সত্তার সিস্টেমে তৈরি করতে আগ্রহী করেছে। এটি এখনও বেসিক দৃশ্যের দর্শনের সাথে একটি এইচটিএমএল 5 গেম ইঞ্জিন হিসাবে থাকবে, তবে এটি উপাদান থেকে সত্তার গতিশীল তৈরি সমর্থন করা উচিত।
আমার এখন যে সমস্যা রয়েছে তা হ'ল আমার পুরানো ইঞ্জিন ধারণাটি এই নতুন প্রোগ্রামিং দৃষ্টান্তের সাথে ফিট করে। এগুলি পূর্ববর্তী প্রশ্নগুলির কয়েকটি সংজ্ঞা, আপডেট হয়েছে:
একটি সত্তা একটি সনাক্তকারী হয়। এটির কোনও ডেটা নেই, এটি কোনও বস্তু নয়, এটি একটি সরল আইডি যা সমস্ত সত্ত্বার দৃশ্যের তালিকার একটি সূচককে উপস্থাপন করে (যা আমি আসলে একটি উপাদান ম্যাট্রিক্স হিসাবে প্রয়োগ করার পরিকল্পনা করি)।
একটি উপাদান হ'ল ডেটা ধারক, তবে এমন পদ্ধতিগুলির সাথে যা সেই ডেটাতে পরিচালনা করতে পারে। সেরা উদাহরণটি হ'ল একটি
Vector2D
, বা "অবস্থান" উপাদান। এটি তথ্য রয়েছে:x
এবংy
, কিন্তু কিছু পদ্ধতি যা ডেটা অল্প সহজ অপারেটিং করুন:add()
,normalize()
, ইত্যাদি।একটি সিস্টেম এমন একটি জিনিস যা নির্দিষ্ট প্রয়োজনীয়তার সাথে মিলিত সংস্থাগুলির সেটগুলিতে পরিচালনা করতে পারে; সাধারণত সত্তাগুলি পরিচালিত হতে উপাদানগুলির একটি নির্দিষ্ট সেট থাকা প্রয়োজন। সিস্টেমটি হ'ল "লজিক" অংশ, "অ্যালগরিদম" অংশ, উপাদান দ্বারা সরবরাহিত সমস্ত কার্যকারিতা নিখুঁতভাবে সহজ ডেটা পরিচালনার জন্য।
ক্যামেরা
ক্যামেরার একটি Vector2D
অবস্থানের সম্পত্তি, একটি ঘূর্ণন সম্পত্তি এবং এটি একটি বিন্দুর চারপাশে কেন্দ্রিকরণের জন্য কিছু পদ্ধতি রয়েছে। প্রতিটি ফ্রেম, এটি একটি দৃশ্যের পাশাপাশি একটি উপস্থাপককে খাওয়ানো হয় এবং সমস্ত অবস্থান তার অবস্থান অনুসারে অনুবাদ করা হয়। দৃশ্যটি তখন রেন্ডার করা হয়।
কীভাবে কোনও সত্তা সিস্টেমে আমি এই জাতীয় কোনও উপস্থাপনা করতে পারি? ক্যামেরা কি কোনও সত্তা, উপাদান বা সংমিশ্রণ হবে (আমার উত্তর অনুসারে )?
কণা উত্তোলক
আমার কণা ইমিটারের সাথে আমার যে সমস্যাটি রয়েছে তা হ'ল, আবার কী হওয়া উচিত। আমি নিশ্চিত যে কণাগুলি নিজেরাই সত্তা হওয়া উচিত নয়, কারণ আমি এর মধ্যে 10,000 টিরও বেশি সমর্থন করতে চাই এবং আমি বিশ্বাস করি যে এতগুলি সত্তা তৈরি করা আমার অভিনয়ের উপর একটি ভারী আঘাত হয়ে উঠবে।
কীভাবে কোনও সত্তা সিস্টেমে আমি এই জাতীয় কোনও উপস্থাপনা করতে পারি?
ইনপুট পরিচালক
আমি শেষেরটির সাথে কথা বলতে চাই তা হল কীভাবে ইনপুট পরিচালনা করা উচিত hand ইঞ্জিনটির আমার বর্তমান সংস্করণে, একটি ক্লাস বলা হয় Input
। এটি এমন একটি হ্যান্ডলার যা ব্রাউজার ইভেন্টগুলিতে সাবস্ক্রাইব করে, যেমন কী টিপুন এবং মাউস অবস্থানের পরিবর্তনগুলি এবং অভ্যন্তরীণ স্থিতি বজায় রাখে। তারপরে, প্লেয়ার শ্রেণীর একটি react()
পদ্ধতি রয়েছে যা একটি ইনপুট অবজেক্টকে আর্গুমেন্ট হিসাবে গ্রহণ করে। এর সুবিধাটি হ'ল ইনপুট অবজেক্টটি .JSON এ সিরিয়ালাইজ করা যেতে পারে এবং তারপরে মসৃণ মাল্টিপ্লেয়ার সিমুলেশনগুলির অনুমতি দিয়ে নেটওয়ার্কে ভাগ করা যায়।
এটি কীভাবে কোনও সত্তা সিস্টেমে অনুবাদ করে?