এটি একটি পুরানো পোস্ট তবে এটি এখনও পপ আপ তাই আমার 2 সেন্ট এখানে যোগ করতে চেয়েছিল।
প্রথম তালিকার ডেটা যা ইউআই / ডিসপ্লে থ্রেড বনাম লজিক থ্রেডে সংরক্ষণ করা উচিত। ইউআই থ্রেডে আপনি 3 ডি জাল, টেক্সচার, হালকা তথ্য এবং অবস্থান / রোটেশন / দিকনির্দেশের ডেটার একটি অনুলিপি অন্তর্ভুক্ত করতে পারেন।
গেম লজিক থ্রেডে আপনার গেম অবজেক্ট সাইজের 3 ডি, সীমাবদ্ধ আদিম (গোলক, ঘনক্ষেত্র), সরলীকৃত 3 ডি জাল ডেটা (উদাহরণস্বরূপ বিশদ সংঘর্ষের জন্য), বস্তুর গতিবেগ, টার্ন রেশিও ইত্যাদির মতো চলন / আচরণকে প্রভাবিত করে সমস্ত বৈশিষ্ট্য প্রয়োজন হতে পারে, এবং অবস্থান / ঘূর্ণন / দিকনির্দেশ তথ্য।
আপনি যদি দুটি তালিকার তুলনা করেন তবে দেখতে পাবেন যে কেবল অবস্থান / ঘূর্ণন / দিকনির্দেশের তথ্যের অনুলিপিটি যুক্তি থেকে UI থ্রেডে পাস করা দরকার। এই ডেটাটি কোন গেমের অবজেক্টের অন্তর্ভুক্ত তা নির্ধারণ করতে আপনার কোনও ধরণের সম্পর্ক সম্পর্কিত ID প্রয়োজন হতে পারে।
আপনি কীভাবে এটি করবেন তা নির্ভর করে আপনি কোন ভাষার সাথে কাজ করছেন। স্কালায় আপনি জাভা / সি ++ এ কোনও ধরণের লকিং / সিঙ্ক্রোনাইজেশন সফ্টওয়্যার লেনদেনের মেমোরি ব্যবহার করতে পারেন। আমি অপরিবর্তনীয় ডেটা পছন্দ করি তাই আমি প্রতিটি আপডেটের জন্য নতুন অপরিবর্তনীয় বস্তু ফিরিয়ে দেওয়ার প্রবণতা রাখি। এটি মেমরির কিছুটা অপচয় নয় তবে আধুনিক কম্পিউটারগুলির সাথে এটি এত বড় বিষয় নয়। তবুও আপনি যদি ভাগ করা ডেটা স্ট্রাকচার লক করতে চান তবে এটি করতে পারেন। জাভাতে এক্সচেঞ্জার ক্লাসটি পরীক্ষা করে দেখুন, দুটি বা আরও বেশি বাফার ব্যবহার করে জিনিসগুলিকে গতি বাড়ানো যেতে পারে।
থ্রেডগুলির মধ্যে ডেটা ভাগ করে নেওয়ার আগে আপনাকে আসলে কতটা ডেটা পাস করতে হবে তা নিয়ে কাজ করে। যদি আপনার অষ্ট্রি আপনার 3 ডি স্পেসটিকে বিভাজন করে থাকে এবং আপনি 10 টি অবজেক্টের মধ্যে 5 টি গেম অবজেক্ট দেখতে পাচ্ছেন, এমনকি যদি আপনার যুক্তিটি 10 টি আপডেট করার প্রয়োজন হয় তবে আপনি কেবল 5 দেখতে পাচ্ছেন red আরও পড়ার জন্য এই ব্লগটি পরীক্ষা করে দেখুন :
http://gameprogrammingpatterns.com/game-loop.html
এটি সিঙ্ক্রোনাইজেশন সম্পর্কিত নয় তবে এটি দেখায় যে গেম যুক্তি প্রদর্শন থেকে কীভাবে পৃথক হয় এবং আপনার কী চ্যালেঞ্জগুলি কাটিয়ে উঠতে হবে (এফপিএস)। আশাকরি এটা সাহায্য করবে,
ছাপ