ফ্ল্যাশ গেমগুলির জন্য রেন্ডারিং পারফরম্যান্স


11

আমি কাস্টম BitmapDataফ্রেম বাফার তৈরি বনাম নেটিভ ফ্ল্যাশ রেন্ডারিংয়ের বিষয়ে এসওতে পড়ছিলাম এবং এর কয়েকটি উত্তর কিছুটা বিরোধী ছিল, তাই আমি ভাবছিলাম:

  1. কাস্টম বিটম্যাপ বাফার রুটে যাওয়ার পক্ষে কি সাধারণত সেরা অনুশীলন বা ফ্ল্যাশ ইঞ্জিনে রেন্ডারিং ছেড়ে রাখা ভাল?
  2. আপনি যদি MovieClipস্প্রিটের বিপরীতে ভেক্টর অ্যানিমেশন ( গুলি) ব্যবহার করে থাকেন তবে তা কি উপরের উত্তরটি পরিবর্তন করে?
  3. যদি তাই হয় তবে স্প্রাইট ভিত্তিক অ্যানিমেশনগুলি ব্যবহার করা কি ভাল অনুশীলন?

(আমি যদি ফ্ল্যাশ 10 টার্গেট করছি তবে এতে কোনও পার্থক্য আসে)

উত্তর:


14

1. সাধারণ সেরা অনুশীলন নেই।

আপনি যদি আপনার গেমটিতে প্রচুর (জটিল আকারের) উপাদান, কণা ইত্যাদি পেয়ে থাকেন তবে বিটম্যাপ বাফার পদ্ধতিটি আরও দ্রুত হতে চলেছে । বিটম্যাপ বাফার আপনার স্প্রাইটসের ক্রমবর্ধমান জটিলতার সাথে আরও ভাল স্কেল করবে। ভেক্টর রেন্ডারার হবে , আরো জটিল আকার বা tween (আকৃতি tween) অ্যানিমেশনের সঙ্গে ধীর হয়ে এটি কিছু অন্যান্য সুবিধা যদিও আছে:

  • আপনি নিজের সম্পদ নির্দ্বিধায় স্কেল করতে পারেন বা এমনকি মানটির ক্ষতি ছাড়াই দৃশ্যে জুম করতে পারেন।
  • ঘোরানো বা স্কিউয়ের মতো অন্যান্য রূপান্তরগুলি ভেক্টর গ্রাফিক্সে সঞ্চালন করা আরও সহজ হবে

সুতরাং উপসংহারে, আপনি কোন ধরণের গেমটি তৈরি করছেন তা এটি ফোটে।

২. বিটম্যাপ স্প্রিট শিটের পরিবর্তে মুভি ক্লিপ ব্যবহার করা

আমার ধারণা আপনি "বিটম্যাপ স্প্রাইট-শিটস" বলতে চেয়েছিলেন এবং এএস 3 স্প্রাইট শ্রেণি নয়?

সত্যিই এটি কোনও পার্থক্য করে না। আপনি সর্বদা আপনার মুভিসিপ্লিপ ভিত্তিক অ্যানিমেশনগুলিকে অ্যানিমেটেড বিটম্যাপে রূপান্তর করতে পারেন। হয় ম্যানুয়ালি, মুভিটি ফ্রেমে রফতানি করে এবং এগুলিকে একটি স্প্রিট- শিটে রূপান্তরিত করে, বা গতিশীলরূপে রানটাইমে আপনার মুভি ক্লিপ থেকে একটি স্প্রিট শীট রেন্ডার করে। আমি এখানে এটি কীভাবে করব:

  1. মুভি ক্লিপ এবং এর একটি উদাহরণ তৈরি করুন stop() এটির ।
  2. একটা তৈরি কর new BitmapDataমুভিচ্লিপ হিসাবে একই প্রস্থ এবং উচ্চতা সহ অবজেক্ট ।
  3. ব্যবহার বিটম্যাপটাটাতে মুভিসিপ্লিপ রেন্ডার করতে, অঙ্কন () পদ্ধতিটি ।
  4. বিটম্যাপডেটা অবজেক্টটিকে একটি অ্যারে বা ভেক্টরে সংরক্ষণ করুন।
  5. আপনার মুভি ক্লিপের পরবর্তী ফ্রেমে যান এবং 2 - 4 পদক্ষেপগুলি পুনরাবৃত্তি করুন, আপনি নিজের মুভিসিপ্লপের শেষ ফ্রেমে পৌঁছা পর্যন্ত এটি করুন। সর্বাধিক প্রস্থ এবং সর্বোচ্চ উচ্চতার সাথে দুটি ভেরিয়েবল আপডেট করাও ভাল ধারণাআপনার মুভি ক্লিপ ফ্রেমের (যেহেতু এগুলি ফ্রেম থেকে ফ্রেমে পরিবর্তিত হতে পারে)।
  6. এখন আপনি সমস্ত সঞ্চিত বিটম্যাপডাটা অবজেক্টগুলিকে একটি স্প্রিট-শীটে একত্রিত করতে পারেন ( বিটম্যাপডেটা কোডপিপিপিক্সেল () ব্যবহার করুন )

৩. স্প্রাইট-ভিত্তিক অ্যানিমেশন

আপনার প্রথম প্রশ্নের উত্তরে যেমন উল্লেখ করা হয়েছে, এর কোনও নির্দিষ্ট উত্তর নেই। আপনার যদি আপনার সামগ্রীর সাথে প্রচুর রূপান্তর করতে হয়, যেমন। স্কেলিং এবং ঘোরানো আপনি ফ্ল্যাশ নেটিভ রেন্ডারার ব্যবহার করে সম্ভবত আরও ভাল off যদি আপনি প্রাক-সংজ্ঞায়িত অ্যানিমেশনগুলি পেয়েছেন যা স্প্রিট-শিটগুলিতে (ম্যানুয়ালি বা গতিশীলভাবে) বেক করা যায়, এবং যদি আপনাকে একই সময়ে কয়েকশ স্প্রাইট প্রদর্শন করতে হয়, তবে বিটম্যাপ-রেন্ডারিং ইঞ্জিনে যান।


যখন (যদি?) ফ্ল্যাশ তার রেন্ডারিংয়ের জন্য হার্ডওয়্যার ত্বরণ ব্যবহার শুরু করে, একটি অনুলিপি পিক্সেল রেন্ডারার সম্ভবত দেশীয় রেন্ডারারের চেয়ে ধীর হবে।
বার্ট ভ্যান হিউকেলোম

6

আমি বলব যে আপনি যদি স্প্রিট ব্যবহার করে একটি রাস্টার ভিত্তিক গেমটি তৈরি করে থাকেন তবে বিটম্যাপডাটা ব্যবহার করে একটি কাস্টম রেন্ডারিং সমাধান তৈরি করতে যান। আপনি যদি ভেক্টর ভিত্তিক গেমটি তৈরি করে থাকেন তবে মুভি ক্লিপস ব্যবহার করে বিল্ট ইন অ্যানিমেশন পদ্ধতি ব্যবহার করে চলুন।

আপনি যদি একটি কাস্টম রেন্ডারিং সমাধান তৈরি করতে যান তবে আপনি যা প্রয়োজন তা পূরণ করতে একা অ্যাকশনস্ক্রিপ্ট ব্যবহার করে ফ্ল্যাশ থেকে নিজেকে বিচ্ছিন্ন করে দিন। Flixel ইঞ্জিন এই পদ্ধতি ব্যবহার করে এবং এটা বেশ চমৎকার। আমি যদিও স্ক্র্যাচ থেকে আমার নিজস্ব ইঞ্জিনটি লিখতে পছন্দ করি তবে আপনি ধারণাটি পেয়ে যান।

বিল্ট ইন ফ্ল্যাশ অ্যানিমেশন প্রক্রিয়াগুলি ভেক্টর ভিত্তিক গেমগুলির পক্ষে সেরা কাজ করে কারণ আপনি মুভি ক্লিপস হিসাবে সহজেই আপনার লাইব্রেরি সম্পদগুলি তৈরি করতে পারেন যা আপনি চাহিদা অনুযায়ী অ্যাকশনস্ক্রিপ্টে ইনস্ট্যান্ট করতে পারেন। অ্যানিমেশন পরিচালনা করতে এবং সেই অনুযায়ী স্প্রিটের অবস্থানটি সরাতে আপনি মুভি ক্লিপগুলি প্রদত্ত টাইমলাইনটি ব্যবহার করেন। সমস্ত ব্যাটলন! অ্যাডভেঞ্চার কোয়েস্ট ওয়ার্ল্ডসের মতো গেমগুলি এই পদ্ধতিটি ব্যবহার করে। দেখতেও সুন্দর লাগছে।

আমি ধরে নিচ্ছি আপনার শেষ প্রশ্নটি ভেক্টর অ্যানিমেশনের জন্য মুভিসিপ্লিপ শ্রেণির পরিবর্তে স্প্রাইট শ্রেণিটি ব্যবহার করার বিষয়ে উল্লেখ করছে। একটি স্প্রাইট একটি টাইমলাইন ছাড়াই একটি মুভি ক্লিপ, তাই আপনার জন্য অ্যানিমেশনগুলি পরিচালনা করার সুবিধাটি হারাবেন।


3

যদিও এটি একটি সাধারণভাবে বিশ্বাস করা হয় যে ব্লিটিং দ্রুততর হয়, আমি কোনও প্রমাণদণ্ড এটি প্রমাণ করতে দেখিনি। কিছু বিকাশকারী কেবল ব্লিটিং পছন্দ করেন কারণ এটি ফ্ল্যাশকে আরও জেনেরিক ভার্চুয়াল মেশিন হিসাবে বিবেচনা করতে এবং তাদেরকে রেন্ডারিং নিয়ন্ত্রণ করে। তবে আপনি যদি বিল্ট-ইন ডিসপ্লে তালিকাটি পছন্দ করেন (যা আমি করি) তবে ফ্ল্যাশটি আনন্দের সাথে উচ্চতর ফ্রেমের হারে কয়েকশ অন-স্ক্রিন প্রদর্শনঅবজেক্টগুলিতে (যেমন মুভি ক্লিপস, স্প্রিটস, বিটম্যাপস) দুর্দান্ত প্রভাবগুলি স্থানান্তর করতে, স্কেল করতে, ঘোরানো এবং প্রয়োগ করতে পারে, তাই যতক্ষণ না এগুলি মাত্রাগুলিতে বেশ ছোট, যেমন প্রতিটি 200x200 পিক্সেলের চেয়ে কম। আপনি ভেক্টর ব্যবহার না করে মুভি ক্লিপ ব্যবহার করতে পারেন। বেশিরভাগ গেমগুলি যে কোনও সিস্টেম ব্যবহার করে বিটম্যাপ সম্পদ ব্যবহার করবে। তবে টাইমলাইনে বিটম্যাপ সম্পদগুলি লেআউট এবং অ্যানিমেট করার জন্য এটি কখনও কখনও কার্যকর হয়, বিশেষত যদি আপনি পিক্সেল শিল্পীর চেয়ে ফ্ল্যাশ বিশেষজ্ঞ ডিজাইনারের সাথে কাজ করছেন। নিচে মঞ্চের মানটি সেট করে আপনি কৃপণ রূপান্তর ব্যয় করে আরও ভাল পারফরম্যান্স পাবেন। ফ্ল্যাশ স্ক্রিন বন্ধ থাকা কোনও বস্তু রেন্ডার করবে না, সুতরাং তারা আপনাকে ধীর করে না।

ফ্ল্যাশ যেখানে ধীরে ধীরে পেতে পারে তা খুব বড় বিটম্যাপগুলি স্থানান্তরিত করছে এবং রূপান্তর করছে - উদাহরণস্বরূপ যদি আপনার খুব বড় স্ক্রোলিং স্তর থাকে বা প্রচুর প্যারাল্যাক্স স্তর থাকে। আপনার অফার স্ক্রিন বাফার থেকে পটভূমি মুড়িয়ে দেওয়ার সময় আপনার গেমের অবজেক্টের জন্য মুভি ক্লিপগুলি ব্যবহার করার একটি হাইব্রিড পদ্ধতির উপায়টি দ্রুততর হতে পারে এবং স্ট্যান্ডার্ড স্প্রিটস এবং মুভি ক্লিপসকে সহজেই ব্যবহারের অনুমতি দেওয়ার সময় আপনাকে অসীম আকারে বড় স্তর সরবরাহ করতে দেয়।


জটিল ভেক্টর আকারগুলিও পারফরম্যান্সে উল্লেখযোগ্য প্রভাব ফেলতে পারে। যদি আপনি প্রচুর গ্রেডিয়েন্টের সাথে অ্যানিমেটেড মুভিস্লিপগুলি পেয়েছেন এবং আপনি যদি আপনার ভেক্টর-আকারগুলির বিশদের স্তরের দিকে মনোযোগ না দেন তবে এটি বিটম্যাপের চেয়ে অনেক ধীর হয়ে যাবে।
বাম্মজ্যাক

আপনি ভেক্টর ব্যবহার না করে মুভি ক্লিপ ব্যবহার করতে পারেন। বেশিরভাগ গেমগুলি যে কোনও সিস্টেম ব্যবহার করে বিটম্যাপ সম্পদ ব্যবহার করবে। তবে টাইমলাইনে বিটম্যাপ সম্পদগুলি বিন্যাস এবং অ্যানিমেটেড করার জন্য এটি কখনও কখনও দরকারী, বিশেষত যদি আপনি পিক্সেল শিল্পীর চেয়ে ফ্ল্যাশ বিশেষজ্ঞ ডিজাইনারের সাথে কাজ করছেন।
আয়ান

হ্যাঁ ফ্ল্যাশ গেমগুলির জন্য আমি এইচইউডি এবং প্লেয়ার স্প্রাইটের কয়েকটি জিনিস ব্যতীত ভেক্টর হতে চলেছে এবং প্রতিটি ফ্রেম ফ্ল্যাশ করে রেন্ডার করে এমন কোনও কিছুর জন্য গ্রেডিয়েন্টগুলি ব্যবহার না করার পুনঃসংশোধন করি। গ্রেডিয়েন্টগুলি পারফরম্যান্স দ্রুত খায়।
অ্যাটাকিংহোব

কিছু রেন্ডারিং এবং আপডেট বেঞ্চমার্ক: 8bitrocket.com/2007/12/23/…
সর্বোচ্চ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.