আমি প্রস্তাব দিচ্ছি যে আপনি টেক্সচারপ্যাকারটি ব্যবহার করে দেখুন
- আপনি কেবল আপনার সমস্ত চিত্র টেনে আনুন এবং ফেলে দিতে পারেন এবং সেগুলি প্যাক করতে পারেন
- আপনি বিভিন্ন সংক্ষেপণ প্রয়োগ করতে পারেন - উদাহরণস্বরূপ পিএনজি ব্যবহার করুন যা কম স্মৃতি গ্রহণ করে - একটি প্রমিত পিএনজি ফাইলের তুলনায় 70% কম
- আপনি এমন একটি ফাইল ডেটা ফাইল তৈরি করতে পারেন যাতে আপনার প্রতিটি বিল্ডিংয়ের নাম + অবস্থান থাকে
- নিখরচায় সংস্করণটি আপনার জন্য স্প্রিট শিটগুলি তৈরি করতে ইতিমধ্যে যথেষ্ট
আপনি কি অ্যান্ডেঙ্গাইন, কোকোস 2 ডি-এক্স বা লিবিজিডিএক্সের মতো কোনও গেম ডেভেলপমেন্ট ফ্রেমওয়ার্ক ব্যবহার করেন? => কিছুই নয়
আপনার একই সাথে আপনার সমস্ত চিত্র লোড করা দরকার? দেখে মনে হচ্ছে আপনি লক্ষ্য ডিভাইসগুলিতে প্রচুর র্যাম সমস্যা নিয়ে চলেছেন।
আপডেট: সাপ আমাকে কিছু ছবি পাঠিয়েছে। প্রতিশ্রুতি হিসাবে তাদের এখানে সর্বজনীন করা হবে না তাই আমি কীভাবে মেমরির ব্যবহার হ্রাস করতে পারি তা প্রদর্শনের জন্য কিছু শিল্প তৈরি করেছি।
মূল চিত্রটিতে, চিত্রটির কেবলমাত্র একটি অংশ চলছিল। আমি এটি দেখানোর জন্য একটি বাড়িতে একটি পাখি রেখেছি:
মূলত সম্পূর্ণ অ্যানিমেশনটি একটি শীটে প্যাক করা মেমোরির একটি বড় অপচয়। আপনার স্থির এবং চলমান অংশগুলি বিভক্ত করা উচিত:
স্ট্যাটিক:
Anim01:
Anim02:
ছবিগুলিতে পাখির আসল অবস্থান রাখুন । এই কারণেই উপরে এত মিচ খালি জায়গা রয়েছে। অ্যানিমেশন সারিবদ্ধ করার জন্য আপনার এটি দরকার।
এখন টেক্সচারপ্যাকারে চিত্রগুলি টানুন এবং নীচের প্যারামিটারগুলি নির্বাচন করুন
- ডেটা ফর্ম্যাট: জেএসএন হ্যাশ (বা আপনি যদি এটি পছন্দ করেন তবে এক্সএমএল)
- ট্রিমমোড: ট্রিম (এটি আয়তক্ষেত্র তৈরি করে)
- পিক্সেল ফর্ম্যাট: ইন্ডেক্সড 8 বিট - 8 বিট পিএনজি তৈরি করতে (প্রায় 70% কম মেমরি)
- আবর্তনের অনুমতি দিন: মিথ্যা
- ডেটা জন্য একটি ফাইল নাম লিখুন
ফলস্বরূপ যে আপনি এখন 2 টি ফাইল পান: স্প্রিট শীট এবং একটি JSON বিবরণ ফাইল।
"house_anim_01.png":
{
"frame": {"x":351,"y":246,"w":110,"h":79},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":67,"y":8,"w":110,"h":79},
"sourceSize": {"w":400,"h":400},
"pivot": {"x":0.5,"y":0.5}
},
গুরুত্বপূর্ণ অংশগুলি হ'ল ফ্রেম এবং স্প্রাইটসোর্সসাইজ ।
ফ্রেম আপনি পরী শীটে মূল পরী অবস্থান দেয়।
স্প্রাইটসোর্সসাইজ আপনাকে চিত্র আঁকার জন্য অফসেট দেয় - ছাঁটাইয়ের কারণে চিত্রের যে অংশগুলি বাদ পড়েছে:
একটি সাধারণ সিউডো-কোড অঙ্কনের রুটিনটি এরকম দেখাচ্ছে:
drawImage(spritename, posX, posX)
{
data = sheetData[spritename]
offsetX = data.spriteSourceSize.x
offsetY = data.spriteSourceSize.y
frameX = data.frame.x
frameY = data.frame.y
width = data.frame.w
height = data.frame.h
screen.draw(sheetImage, posX+offsetX, posY+offsetY, width, height)
}
আপনার গ্রাফিক্স সিস্টেমে পিভট পয়েন্ট / উত্সের উপর নির্ভর করে আপনাকে অফসেট গণনা সামঞ্জস্য করতে হতে পারে। উপরের রুটিনটি এমন একটি স্থানাঙ্কিত সিস্টেমটি ধরে নিয়েছে যার উত্সটি বাম দিকের।
তারপরে কেবল ঘরটি 2 পাসে আঁকুন:
draw("background", 100, 100);
draw("anim_01", 100, 100);
আপনার অফসেটগুলি সম্পর্কে কোনও চিন্তা করার দরকার নেই - যেহেতু চিত্রগুলি ইতিমধ্যে সংযুক্ত রয়েছে।