تفاوت Atlas و Spritesheet؟
اطلس چیست؟ اسپرایت شیت چیست؟ و چه تفاوتی با هم دارند؟ برای چه از آنها استفاده میکنند؟
به زبانی ساده اطلس به فایلی گفته میشود که شامل عکسهایی با اندازهها و موضوعات مختلف است. اسپرایت شیت هم مانند اطلس است با این تفاوت که اکثر مواقع سایز و موضوع آن واحد است.
تصویر همیشه بهتر از تعریف کارساز است! پس بهتر از با ذکر مثالی تصویری این تفاوت را روشنتر کنیم.
همانگونه که در تصویر فوق میبینید اطلس در بردارنده اسپرایتهای مختلفی (مانند واگن قطار یا خانه) است که الزاما ربطی به هم ندارند و البته اندازه آنها با یکدیگر متفاوت است. استفاده از اطلس تنها محدود به کارهای دو بعدی نیست و در کارهای سه بعدی نیز، برای گرد آوردن همه تکسچرها در یک فایل، به کار برده میشود.
همچنین با توجه به اسپرایت شیتی که در تصویر آمده، در میابیم که اسپرایت شیت، مجموعهای از اسپرایتهای یک موجودیت خاص (مثلا شخصیتهای بازی) است که در بر دارنده اسپرایتهای انیمیشن آن موجودیت است. یکی از سادهترین راهها برای پخش انیمیشن دوبعدی، استفاده از اسپرایت شیت است. برای پردازش سادهتر انیمیشنهای اسپرایت شیت، اسپرایتها را معمولا در اندازه ثابت درست میکنند و در هر اسپرایت شیت، فقط اسپرایتهای همان موجودیت و حالت را قرار میدهند. مثلا شما میتوانید برای حرکات شخصیت اصلی بازی دوبعدی خودتان، اسپرایت شیتهای متعددی شامل ایستادن، راه رفتن، دویدن و … را درست کنید. اسپرایت شیتها فقط در کارهای دوبعدی کاربرد دارند.
شاید این سوال برای شما هم پیش آمده باشد که چرا اصلا باید تکسچرها و یا اسپرایتها را در یک فایل کنار هم بچینیم؟ چرا آنها را در فایلهای جداگانه قرار ندهیم؟ پاسخ در بهینهسازی است. برای بارگذاری هر تکسچر در کامپیوتر، صرف نظر از اندازه و حجم فایل، باید منابع زیادی از سیستم در اختیار قرار گیرد که اگر به درستی مدیریت نشود میتوانند باعث افت کارایی بازی شود. پس بهتر است تا حد ممکن بارگذاری فایلهای مختلف را در کامپیوتر به حداقل ممکن برسانیم و بهترین راه حل برای این امر استفاده از اطلس و اسپرایت شیت است. در این حالت به جای بارگذاری مثلا ۱۰ فایل تکسچر، تنها یک فایل تکسچر را بارگذاری میکنیم که منجر به بهبود کارایی سیستم میشود.
ما در بازی رخنه از اطلسها بسیار زیاد استفاده کردیم چرا که این کار علاوه بر مزیت فوق، فشرده سازی تکسچرها را هم آسانتر میکند. در پستهای آینده در مورد فشرده سازی تکسچرها در موتورهای بازی بیشتر صحبت خواهیم کرد.