অ্যান্ড্রয়েড গেমটি কত থ্রেড ব্যবহার করা উচিত?


28

সর্বনিম্ন, একটি ওপেনজিএল অ্যান্ড্রয়েড গেমটিতে একটি ইউআই থ্রেড এবং একটি রেন্ডারারের থ্রেড তৈরি করেছে GLSurfaceViewRenderer.onDrawFrame()হাইজেস্ট এফপিএস পেতে সর্বনিম্ন কাজ করা উচিত। পদার্থবিজ্ঞান, এআই ইত্যাদি প্রতিটি ফ্রেম চালানোর প্রয়োজন হয় না, তাই আমরা সেগুলি অন্য থ্রেডে রাখতে পারি। এখন আমাদের আছে:

  1. রেন্ডারারের থ্রেড - অ্যানিমেশনগুলি আপডেট করুন এবং পোলগুলি আঁকুন
  2. গেমের থ্রেড - লজিক এবং পর্যায়ক্রমিক পদার্থবিজ্ঞান, এআই ইত্যাদি আপডেট
  3. ইউআই থ্রেড - কেবলমাত্র অ্যান্ড্রয়েড ইউআই ইন্টারঅ্যাকশন

যেহেতু আপনি কখনও ইউআই থ্রেডটি ব্লক করতে চান না, তাই আমি গেম যুক্তির জন্য আরও একটি থ্রেড চালাচ্ছি। যদিও এটি এখনও প্রয়োজন হয় না? রেন্ডারার থ্রেডে গেম লজিক চালানোর কোনও কারণ আছে কি?

উত্তর:


18

গুগলের ক্রিস প্রুয়েট তাঁর রেপ্লিকা আইল্যান্ড ব্লগে এই বিষয়টি নিয়ে কথা বলেছেন । কারণ eglSwapBuffers () জিএলসুরফেসভিউ থ্রেডে একটি ব্লকিং কল, অন্য থ্রেডে গেম লজিক কোড থাকা স্যুপের বাফার কলটি ব্লক করার সময় এটি চালানোর অনুমতি দেয়। এটি গুরুত্বপূর্ণ যদি আপনার গেমটি জটিল হয় এবং আপনি প্রতি সেকেন্ডে 60 ফ্রেম অর্জন করতে চান।

আপনি রেপ্লিকা দ্বীপের জন্য উত্স কোডটি ডাউনলোড করতে পারেন এবং তারা এটি কীভাবে করেছে তা দেখুন। আমি আমার গেমের জন্য অনুরূপ কিছু কার্যকর করেছি (আপনি যে তিনটি থ্রেড নিয়ে কথা বলেছেন) এবং এটি দুর্দান্ত কাজ করে।


2

অ্যান্ড্রয়েড স্ট্যান্ডার্ড জাভা থ্রেড সমর্থন করে। ব্যাকগ্রাউন্ডে ক্রিয়া রাখতে আপনি java.util.concurrent প্যাকেজ থেকে স্ট্যান্ডার্ড থ্রেডস এবং সরঞ্জামগুলি ব্যবহার করতে পারেন। একমাত্র সীমাবদ্ধতা হ'ল আপনি ব্যাকগ্রাউন্ড প্রক্রিয়া থেকে সরাসরি ইউআই আপডেট করতে পারবেন না।

আপনার যদি ব্যাকগ্রাউন্ড টাস্ক থেকে ইউআই আপডেট করতে হয় তবে আপনার কয়েকটি অ্যান্ড্রয়েড নির্দিষ্ট ক্লাস ব্যবহার করা দরকার। আপনি এই বা ক্লাব AsyncTasks এর জন্য android.os.Handler ক্লাসটি ব্যবহার করতে পারেন।

আরও তথ্যের জন্য দয়া করে নীচের লিঙ্কটি দেখুন ...

http://mindstick.com/Articles/7a9205de-bae7-48ba-81b5-2b2ec161d672/?Thread%20in%20Android

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