Outpost 2 ফাইল ফরম্যাটগুলি · bei.pm
এই পৃষ্ঠায় বর্ণিত ফাইল ফরম্যাটগুলি Dynamix, Inc. এবং Sierra Entertainment এর মেধা সম্পত্তির প্রযুক্তিগত বিশ্লেষণের উপর ভিত্তি করে।
মেধা সম্পত্তি বর্তমানে Activision Publishing, Inc.- / Activision Blizzard, Inc.-এর মালিকানাধীন এবং বর্তমানে Microsoft Corp. এর অধীনে রয়েছে।
তথ্যগুলি রিভার্স ইঞ্জিনিয়ারিং এবং ডেটা বিশ্লেষণ এর মাধ্যমে আর্কাইভিং এবংhistorical ডেটার সাথে আন্তঃক্রিয়ার উদ্দেশ্যে সংগৃহীত হয়েছে।
কোনও মালিকানাধিকার বা গোপন স্পেসিফিকেশন ব্যবহার করা হয়নি।
খেলাটি বর্তমানে gog.com এ ডাউনলোডের জন্য কেনার জন্য উপলব্ধ।
নিচে দেওয়া লেকচার সিরিজটি 1997 সালে সিয়েরা দ্বারা প্রকাশিত এবং ডায়নামিক্স দ্বারা উন্নত রিয়েল টাইম স্ট্র্যাটেজি গেম "আউটপোস্ট 2: ডিভাইডেড ডেস্টিনি" এর ডেটা ফরম্যাট সম্পর্কে আমার জানতে পারা তথ্যগুলি ডকুমেন্ট করে।
আমি 01 নভেম্বর 2015 থেকে 14 নভেম্বর 2015 পর্যন্ত মূলত গেমের ডেটার বিশ্লেষণে ব্যস্ত ছিলাম - এবং এর সাথে কী করা যায় সে সম্পর্কে।
আমি যে তথ্যগুলি সংগ্রহ করতে পেরেছি, তার ভিত্তিতে ডায়নামিক্স - অনেক বাণিজ্যিক কোম্পানির মতো - আউটপোস্ট 2 এর জন্য বিশেষভাবে কিছু ডেটা ফরম্যাট তৈরি করেনি, বরং এটি মেকওয়ারিয়র সিরিজের মতো অন্যান্য উন্নয়নগুলিতেও (পরিবর্তিত) ব্যবহৃত হয়েছে।
এছাড়াও, দেখা যাচ্ছে যে ডেটা ফরম্যাটগুলোর উদ্ভাবনী শক্তি মূলত সীমাবদ্ধ এবং প্রায়শই প্রচলিত ফরম্যাট যেমন JFIF এবং RIFF এর দীর্ঘস্থায়ী ধারণাগুলির ওপর ভিত্তি করে তৈরি।
টেবিল এবং ডেটা ফরম্যাটের ব্যাখ্যার জন্য আরও তথ্য কি কি? এ উপলব্ধ।
এখানে প্রদত্ত ডেটাগুলি সাধারণভাবে লিটল এন্ডিয়ান হিসেবে বোঝা উচিত।
শেষে বলা যায় যে, রিভার্স ইঞ্জিনিয়ারিং খুবই মজার ছিল, যদিও এটি সম্পূর্ণ নয়।
অবশ্যই, আমি শুধু সুপারিশ করতে পারি যে গেমটি নিজে খেলে দেখা উচিত, কারণ এটি আকর্ষণীয় গেম মেকানিক্স সরবরাহ করে।
পরিচিতি
Outpost 2 দ্বারা ব্যবহৃত তথ্য ফরম্যাটগুলির একটি JFIF / PNG এর মতো গঠন রয়েছে - প্রতিটি তথ্য ব্লকের একটি 8 বাইটের হেডার থাকে। সুতরাং, আমি সংশ্লিষ্ট নির্দিষ্ট স্থানে প্রতিটি হেডার ডকুমেন্ট করার প্রয়োজন মনে করছি না এবং সেখানে কেবল বিচ্যুতি ডকুমেন্ট করব।
ফরম্যাটটি সবসময় নিম্নলিখিত; প্রকৃত ব্যবহারযোগ্য তথ্য সেখানেই এম্বেড করা থাকে:
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | পরবর্তী ডেটা ব্লকে কি আশা করা যায় সে সম্পর্কে তথ্য ধারণ করে। পরিচিত মান:
|
0x0004 | uint(24) | ব্লক-দৈর্ঘ্য | এতে তথ্য রয়েছে যে পরবর্তী ডেটা ব্লকের আকার (বাইটে) কত। এতে শুধুমাত্র ব্যবহারকারীর ডেটা বোঝানো হয়েছে - ৮টি হেডার-বাইট এতে অন্তর্ভুক্ত নয়। |
0x0007 | uint(8) | ঝান্ডা? | এটি অজানা, এই ব্লকটি ঠিক কী কাজে লাগে। ভলিউমগুলিতে এই মানটি প্রায়শই 0x80, অন্য ফাইলগুলিতে প্রায়শই 0x00। এটি ইঙ্গিত করে যে এটি একটি ফ্ল্যাগ-সেট। |
ভলিউমস
ভলিউমগুলি একটি ডেটা ধারক যা গেমের জন্য, যেমন একটি আর্কাইভ ফরম্যাট যেমন টারবল। কমপক্ষে আউটপোস্ট ২-এ, এই ফরম্যাটটি শুধুমাত্র ফাইলগুলি জানে - কোন ফোল্ডার নেই। সম্ভবত এগুলি সংশ্লিষ্ট ফাইলের নামের মাধ্যমে সিমুলেট করা যেতে পারে।
একটি ভলিউম ভলিউম-হেডার এবং একাধিক ভলিউম ব্লক নিয়ে গঠিত, যা নির্দিষ্ট ফাইলগুলির সাথে সম্পর্কিত।
"ভলিউমগুলি" হল গেম ডিরেক্টরিতে 'vol'
এক্সটেনশন সহ ফাইলগুলি।
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-লম্বা | |
0x0007 | uint(8) | ফ্ল্যাগস |
ভলিউম শিরোনাম
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-লম্বা | |
0x0007 | uint(8) | ফ্ল্যাগস |
ভলিউম হেডারে কোন ব্যবহারকারী তথ্য নেই।
এটি কেবলমাত্র একটি কন্টেইনার হিসেবে কাজ করে।
ভলিউম হেডারের প্রথম তথ্য হিসাবে ভলিউম স্ট্রিংগুলি থাকা উচিত; এরপর ভলিউম তথ্যগুলি থাকবে।
ভলিউম স্ট্রিংস
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-লম্বা | |
0x0007 | uint(8) | ফ্ল্যাগস |
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-লম্বা | |
0x0007 | uint(8) | ফ্ল্যাগস | |
0x0008 | uint(32) | পেইলোড-দৈর্ঘ্য | এটি নির্দেশ করে যে নিম্নলিখিত তথ্যের মধ্যে কতগুলো বাইট আসলে কার্যকর ডেটা। ভলিউম-স্ট্রিংস-তালিকার অবশিষ্ট, বাকি ডেটাগুলি স্পষ্টভাবে গার্বেজ হিসেবে গণ্য করা উচিত। পরবর্তীকালের তারিখের ফাইলগুলিতে এই 'বাকি ডেটা' 0x00, যা সম্ভবত ডেভেলপমেন্টের সময় টুলচেইনের সাথে কিছু অসঙ্গতির ইঙ্গিত করে, অর্থাৎ, একদম পরে একজন ডেভেলপার বাফারগুলির সঠিক প্রাথমিককরণের দিকে মনোযোগ দিয়েছেন, কারণ ডেটা প্রাথমিককৃত কিনা তা গেমের উপর কোনো প্রভাব ফেলে না। |
0x000c | uint(8)[] | ফাইলের নামের তালিকা | এটি একটি 0-বাইট টার্মিনেটেড ফাইল নামের তালিকা, যা - অন্তত বর্তমান ডেটা উপাদানে - শুধুমাত্র ASCII অক্ষর আশা করে। ডেটা পার্স করার সময় এই ডেটা ব্লকটিকে আরও বিশদে বিশ্লেষণ করার প্রয়োজন নেই, কারণ ভলিউম তথ্যের মধ্যে সরাসরি ফাইল নামের অফসেটগুলিকে উল্লেখ করা হয়। |
ভলিউম স্ট্রিংগুলোর মধ্যে একটি ফাইলের নামের তালিকা রয়েছে, যা ভলিউমের অন্তর্ভুক্ত।
ভলিউম তথ্য
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-লম্বা | |
0x0007 | uint(8) | ফ্ল্যাগস |
ভলিউমের তথ্যগুলি ফাইলগুলির সম্পর্কে বিস্তারিত তথ্য ধারণ করে। এটি একটি ধরনের FAT ডিরেক্টরি এন্ট্রি হিসেবে বিবেচিত হতে পারে (FAT = ফাইল অ্যালোকেশন টেবিল)।
ফাইলের সংখ্যা ব্লক আকারকে ডিরেক্টরি এন্ট্রির দৈর্ঘ্য - ১৪ বাইট দ্বারা ভাগ করে নির্ধারিত হয়।
প্রতিটি পৃথক ডিরেক্টরি এন্ট্রির গঠন নিম্নরূপ:
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ফাইলের নাম-অফসেট | নির্দেশ করে যে ফাইল নামের তালিকার (ভলিউম-স্ট্রিংস) মধ্যে ফাইলের নাম কোন অফসেটে (!) অবস্থান করছে। এটি ব্যবহৃত ডেটা ব্লকের শুরু দিকে নির্দেশ করে। |
0x0004 | uint(32) | ফাইল-অফসেট | এটি নির্দেশ করে যে পুরো ভলিউম ফাইলে ফাইলটি কোন অফসেটে অবস্থিত। |
0x0008 | uint(32) | ফাইলের আকার | ফাইলের আকার কত বাইট তা নির্দেশ করে। |
0x000c | uint(16) | ফ্ল্যাগগুলো? | এটি স্পষ্টতই ফাইলের কোডিং সম্পর্কে অতিরিক্ত তথ্য প্রদান করে।
|
ভলিউম ব্লক
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-লম্বা | |
0x0007 | uint(8) | ফ্ল্যাগস |
একটি ভলিউম-ব্লক হল একটি কন্টেইনার, যা ফাইলগুলি ধারণ করে। এটি শুধুমাত্র আবার - ব্লক ফরম্যাটের কারণে - ফাইলের আকার পুনরাবৃত্তি করে এবং এরপর সরাসরি ব্যবহারকারীর তথ্য অনুসরণ করে।
টাইলস
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-দৈর্ঘ্য | |
0x0007 | uint(8) | ফ্ল্যাগস |
টাইলগুলি হল একটি Outpost-2 এর জন্য বিশেষ
Bitmap-গ্রাফিক ফরম্যাট। এগুলি ১৩টি টাইলসেটের উপর বিস্তৃত,
"ওয়েলস" নামে পরিচিত (well0000.bmp
থেকে well0012.bmp
),
যা maps.vol ভলিউমের মধ্যে অবস্থিত।
এতে টাইলসেট / ওয়েলগুলি নিম্নলিখিতগুলি ধারণ করে:
ফাইলের নাম | বিষয়বস্তু |
---|---|
well0000.bmp | একটি 32x32px সাইজের নীল গ্রাফিক - এটি পরীক্ষা করার জন্য আদর্শ যে আপনার ইমেজ লোডার ঠিক কাজ করছে কি না |
well0001.bmp | এতে হালকা পাথর, হালকা পাথরের উপর পর্বতমালা এবং হালকা পাথরে অসংখ্য প্রভাব ক্রেটার রয়েছে |
well0002.bmp | এতে হালকা-পাথর 'ডুডাডস' রয়েছে - অর্থাৎ উপাদানগুলি যা হালকা পাথরে স্থাপন করা যেতে পারে (বা পরিকল্পিতভাবে কাঠামোর মতো, যেমন দেয়াল) এবং এর মধ্যে উদ্ভিদও রয়েছে |
well0003.bmp | এতে হালকা পাথরের উপর একটি খোলস-জাতীয় গঠন রয়েছে |
well0004.bmp | এতে গা dark ় পাথর, গা dark ় পাথরের উপর পর্বতমালা এবং গা dark ় পাথরে অসংখ্য প্রভাব ক্রেটার রয়েছে |
well0005.bmp | এতে গা dark ় পাথর 'ডুডাডস' রয়েছে - অর্থাৎ উপাদানগুলি যা গা dark ় পাথরের উপর স্থাপন করা যেতে পারে (বা পরিকল্পিতভাবে কাঠামোর মতো, যেমন দেয়াল) |
well0006.bmp | এতে গা dark ় পাথরের উপর একটি খোলস-জাতীয় গঠন রয়েছে, পাশাপাশি হালকা এবং গা dark ় পাথরের মধ্যে সংযোগগুলি রয়েছে |
well0007.bmp | এতে লাভা রয়েছে যার সঙ্গে প্রতিটি 4-5 ফ্রেমের অ্যানিমেশন রয়েছে |
well0008.bmp | এতে বালু এবং বালুর মধ্যে অসংখ্য প্রভাব ক্রেটার রয়েছে |
well0009.bmp | এতে বালু 'ডুডাডস' রয়েছে - অর্থাৎ উপাদানগুলি যা বালুর উপর স্থাপন করা যেতে পারে (অথবা পরিকল্পিতভাবে কাঠামোর মতো, যেমন দেয়াল) |
well0010.bmp | এতে বালু থেকে হালকা এবং গা dark ় পাথরের মধ্যে 48 সংযোগ রয়েছে |
well0011.bmp | এতে ম্যাপের মেরু কেপ রয়েছে, গা dark ় পাথরের ভিত্তিতে |
well0012.bmp | এতে ম্যাপের মেরু কেপ রয়েছে, হালকা পাথরের ভিত্তিতে |
একটি সঠিক বাস্তবায়নের জন্য এটি পরামর্শযোগ্য যে টাইলগুলি আগেভাগে রেন্ডার করা না হয় যাতে সেগুলি ক্যাশ করা যায়, কারণ দিন/রাত চক্রের জন্য ডেটা এখনও প্রক্রিয়া করতে হবে - এবং প্রচুর পরিমাণে ডেটা তৈরি হবে।
টাইলগুলি ৮বিপ্পি-গ্রাফিক্স যা সূচকিত প্যালেট সহ ৩২x৩২ পিক্সেল রেজোলিউশনের, যা একে অপরের উপরে সাজানো থাকে। একটি এভাবে তৈরি করা টাইলসেটে অনেক বেশি
মূল কন্টেইনারটি ২টি সেকশন নিয়ে গঠিত: head
এবং data
।
টাইলস হেডার
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-দৈর্ঘ্য | |
0x0007 | uint(8) | ফ্ল্যাগস | |
0x0008 | uint(32) | সংস্করণ / পতাকা? | এটি ফাইল ফরম্যাটের একটি সংস্করণ নির্দেশক হতে পারে; আমার কাছে থাকা সমস্ত ফাইলে এখানে মান ছিল |
0x000c | uint(32) | প্রস্থ (অনুভূমিক সমাধান) | এটি নির্দেশ করে যে চিত্র ফাইলটির প্রস্থ কত (পিক্সেলে)। Outpost 2 এর সব ওয়েলে এখানে মান |
0x0010 | uint(32) | উচ্চতা (লম্বালম্বি সমাধান) | এটি নির্দেশ করে যে চিত্রের ফাইলের উচ্চতা কত (পিক্সেলে)। আউটপোস্ট ২ এর সকল ওয়েলের জন্য এখানে মানটি |
0x0014 | uint(32) | রঙের গভীরতা? | এই মানের অর্থ অজানা। যেহেতু এটি সমস্ত পরীক্ষিত ফাইলগুলিতে |
0x0018 | uint(32) | ফার্বটিফ ২? | এই মানের অর্থ অজানা। এটি সম্ভবত একটি 'লক্ষ্য'-রঙ গভীরতা হতে পারে। |
এই তথ্যগুলোর পরে একটি স্ট্যান্ডার্ডাইজড RIFF ফরম্যাটে উপলব্ধ প্যালেট ফাইল আসবে। সঠিক স্পেসিফিকেশন খুঁজে পাওয়া যাবে - যেহেতু প্যালেটগুলি অন্যত্রও উপস্থিত হয় - প্যালেটেন এর অধীনে।
টাইলের ডেটা
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-দৈর্ঘ্য | |
0x0007 | uint(8) | ফ্ল্যাগস |
শেষে খালি পিক্সেল ডেটা বাম-শীর্ষ থেকে সারি বাইরেই ডান-নিচে অনুসরণ করে।
সাধারণত 8bpp-বিটম্যাপ হিসেবে উপস্থিত গ্রাফিকগুলোর ডেটা মান রঙের প্যালেটে রঙের সূচকের সাথে সঙ্গতিপূর্ণ।
গেম ইঞ্জিনটি টাইলগুলো *সম্ভবত* অন-ডিমান্ডে আঁকে।
এটি, অন্যান্য বিষয়ের মধ্যে, দিন-রাতের চক্রের জন্য হয়েছে, যা ৩২ স্তরের পৃথক টাইলের সংখ্যা জানে। এর মধ্যে প্রতিটি আলোর মান থেকে 'একটু' বিয়োগ করা হয়। সঠিক মানগুলি এখনও নির্ধারণ করা যায়নি, আমি হিসাবের ভিত্তিতে কাজ করছি
v *= (daylight / 48) + 0.25;
পিক্সেলের HSV ডেটার সাথে, যেখানে daylight হল ০-৩১ এর একটি মান এবং v হল ০-১ এর মধ্যে একটি মান। এছাড়াও, মনে রাখতে হবে যে ম্যাপে প্রতিবার বাম এবং ডান দিকে ১৬টি টাইলের একটি সীমা রয়েছে (যা ইউনিটের অদৃশ্য স্পাউনের জন্য ব্যবহৃত হয়)।
অতিরিক্তভাবে, দিন-রাতের চক্র প্রতি গেম সাইকেলে কেবল একটি কলাম আপডেট করার জন্য মনে হচ্ছে।
একটি ত্বরিত দিন-রাতের চক্র এইভাবে দেখা যায়:
পিআরটি
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | প্যালেটের দৈর্ঘ্য | স্বাভাবিক ব্লক ফরম্যাটের বিপরীতে, এই ফাইলে পাওয়া যেতে থাকা প্যালেটের সংখ্যা নির্দেশ করুন - ব্লকের আকারের দৈর্ঘ্য নয়। |
0x0007 | uint(8) | ফ্ল্যাগস | সম্ভবত, যেমন সাধারণত হয়, ফ্ল্যাগগুলি। তবে, আমার জানা কোনো ফ্ল্যাগ নেই; যেহেতু আমার জানা সব মান |
PRT
এর সঠিক অর্থ আমার জানা নেই; উদাহরণস্বরূপ 'Palette and Resource Table' হতে পারে - কারণ এই ফাইলটি - যা op2_art.prt নামে maps.vol এ পাওয়া যায় - একটি এরকমই ফাইল, অথবা এটি ফাংশনটিকে সুন্দরভাবে বর্ণনা করবে।
এই ফাইলে প্যালেটের একটি তালিকা, সকল ব্যবহৃত বিটম্যাপের একটি টেবিল, সমস্ত অ্যানিমেশন সংজ্ঞা এবং আরও কিছু অজানা তথ্য রয়েছে। এটি পূর্ববর্তী কনটেইনার ফরম্যাটের প্রতি সামান্য অনুসরণ করে, যেহেতু সব ডেটা রেকর্ড এই স্কিমা অনুসরণ করে না।
CPAL
সেকশন (সম্ভবত প্যালেট কনটেইনারের জন্য) শুধুমাত্র প্যালেটের তথ্যকে ঘিরে রাখে, যা নির্দেশ করে যে সাধারণত ১০৫২ বাইটের আকারের ৮-বিট প্যালেটের কতগুলো বিদ্যমান।
১০৫২-বাইটের উল্লেখটি বাধ্যতামূলক হিসেবে গ্রহণ করা হয় না, কারণ প্যালেটের ফরম্যাট সম্ভাব্যভাবে বিভিন্ন প্যালেটের আকারের কথা বিবেচনা করতে পারে। এটি শুধুমাত্র সেই ডেটা সেটের জন্য প্রযোজ্য, যা আউটপোস্ট ২ বিতরণ করা হয়।
প্যালেটের তালিকার পরে সরাসরি এবং কোন প্রারম্ভিক হেডার ছাড়াই, বিটম্যাপের তালিকা আসে; সঠিকভাবে এর পরে অ্যানিমেশন তালিকাগুলি আসে।
দুই ক্ষেত্রেই একটি uint(32) (অথবা আবার uint24+uint8 ফ্ল্যাগ?) দিয়ে শুরু হয়, যা রেকর্ডের সংখ্যা ধারণ করে।
প্যালেটেন
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | প্যালেটের দৈর্ঘ্য | সাধারণ ব্লক ফরম্যাটের বিপরীতে, এই ফাইলে পাওয়া প্যালেটের সংখ্যা নির্দেশ করুন - ব্লকের দৈর্ঘ্য বাইটে নয়। |
0x0007 | uint(8) | ফ্ল্যাগস | সম্ভবত, যেমন সাধারণত হয়, ফ্ল্যাগ। তবে আমি কোনো ফ্ল্যাগ জানি না; কারণ আমার জানা সমস্ত মান |
প্যালেটের তথ্যগুলি খুব সহজে পড়া যায়।
এগুলি প্রতিটি একটি হেডার এবং একটি ডেটা সেগমেন্ট নিয়ে গঠিত।
প্যালেটের শিরোনাম
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | প্যালেটের দৈর্ঘ্য | সাধারণ ব্লক ফরম্যাটের বিপরীতে, এই ফাইলে পাওয়া প্যালেটের সংখ্যা নির্দেশ করুন - ব্লকের দৈর্ঘ্য বাইটে নয়। |
0x0007 | uint(8) | ফ্ল্যাগস | সম্ভবত, যেমন সাধারণত হয়, ফ্ল্যাগ। তবে আমি কোনো ফ্ল্যাগ জানি না; কারণ আমার জানা সমস্ত মান |
0x0008 | uint(32) | প্যালেটফরম্যাট সংস্করণ? | সম্ভবত সংজ্ঞায়িত করে যে কোন প্যালেট ফরম্যাটের সংস্করণ প্যালেটটি অনুসরণ করে। সমস্ত Outpost2-প্যালেটের সংস্করণ |
প্যালেটের তথ্য
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | ম্যাজিক বাইটস | |
0x0004 | uint(24) | ব্লক-দৈর্ঘ্য | |
0x0007 | uint(8) | ফ্ল্যাগস |
ডেটা সেকশন পৃথক প্যালেট এন্ট্রি গ্রহণ করে। প্যালেট এন্ট্রির সংখ্যা ব্লক দৈর্ঘ্য / 4 থেকে নির্ধারিত হয়।
পৃথক এন্ট্রিগুলোর একটি সাধারণ গঠন রয়েছে;
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(8) | রেড-কম্পোনেন্ট | রঙের লাল অংশ নির্দেশ করে |
0x0001 | uint(8) | গ্রীন উপাদান | রঙের সবুজ অংশ নির্দেশ করে |
0x0002 | uint(8) | নীল উপাদান | রঙের নীল অংশ নির্দেশ করে |
0x0003 | uint(8) | অজানা - পতাকা? | এটি অস্পষ্ট যে এই মানের কী অর্থ, কারণ এটি স্পষ্টভাবে মৌলিকভাবে |
প্যালেটগুলির সম্পর্কে শুধুমাত্র এতটুকু বলার, যে অ্যানিমেশন ব্যবহারের জন্য প্যালেটগুলির ক্ষেত্রে নিচের নিয়মগুলি প্রযোজ্য:
- প্রথম রঙটি সবসময় স্বচ্ছ, সেখানে যে কোনও মান দেওয়া থাকুক না কেন।
-
প্যালেটের এন্ট্রি ১-২৪ প্যালেট ১-৮ এর মধ্যে খেলোয়াড়ের রঙ হিসেবে গণ্য হবে।
খেলোয়াড় ১ এর বাইরে রঙগুলি কোথা থেকে আসে, তা আমার স্পষ্ট নয়।
আমি মনে করি, বাকি রঙগুলি হার্ডকোডেড।
বিটম্যাপস
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | সাজানো প্রস্থ | পিক্সেল ডেটা লাইনের প্রস্থটি বাইটে নির্দেশ করে - কারণ এগুলি ৪-বাইট সীমানার দিকে সজ্জিত। এভাবে একটি নির্দিষ্ট চিত্র লাইনে দ্রুত প্রবেশ করা সম্ভব। এই মানটি কেন আলাদাভাবে সংরক্ষিত হয়, যদিও এটি গণনা করা যেতে পারে, তা স্পষ্ট নয়। |
0x0004 | uint(32) | অফসেট | বিটম্যাপের প্রথম লাইনের অফসেট নির্দেশ করে |
0x0008 | uint(32) | উচ্চতা | ছবির উচ্চতা পিক্সেলে নির্দেশ করে |
0x000c | uint(32) | প্রস্থ | ছবির প্রস্থ পিক্সেলে নির্দেশ করে |
0x0010 | uint(16) | টাইপ | ছবির প্রকার নির্দেশ করে। এখানে এটি একটি বিটমাস্ক মনে হচ্ছে:
|
0x0012 | uint(16) | প্যালেট | নির্ধারণ করে কোন প্যালেটটি PRT ফাইল থেকে ব্যবহার করা হবে |
এই PRT ফাইলের তথ্য কাঠামো নির্দেশ করে যে স্প্রাইটগুলির জন্য ব্যবহৃত বিটম্যাপগুলি কিভাবে গঠিত হয়। এই বিটম্যাপগুলি একটি একক উপাদান হিসাবে কাজ করে, যার কয়েকটি একত্রিত হয়ে একটি স্প্রাইটের অ্যানিমেশন ফ্রেম তৈরি করে।
নির্দিষ্ট চিত্রের তথ্য আবার খেলা ডিরেক্টরিতে op2_art.BMP ফাইলে লুকিয়ে রয়েছে।
কেন এই বিটম্যাপ ফাইলটি একটি (প্রধানত সঠিক) RIFF বিটম্যাপ হেডার ধারণ করে, তা স্পষ্ট নয়। সম্ভবত আউটপোস্ট 2 গ্রাফিক্স লোড করার জন্য সিস্টেম-এপিআই ব্যবহার করে, এই হেডারটি অস্থায়ীভাবে গ্রহণ করা হয় এবং সংশ্লিষ্ট পরিবর্তনশীল ক্ষেত্রগুলি ওভাররাইট করা হয়।
বিপিএম ফাইলে পিক্সেল ডেটা
অফসেট + uint32-অফসেট অবস্থানে পাওয়া যায়, যা BMP ফাইলে ঠিকানা 0x000A-এ (RIFF-বিটম্যাপ ডেটা অফসেট) পাওয়া যায় - এবং আবার উপরের বাম থেকে ডান নিচে সারি দ্বারা সাজানো হয়।
মনোক্রোম 1bpp গ্রাফিকগুলি এভাবে আঁকা যেতে পারে, যাতে রঙ 0 সম্পূর্ণ স্বচ্ছতা এবং রঙ 1 একটি অর্ধস্বচ্ছ কালো/গ্রে হয়, যেহেতু মনোক্রোম গ্রাফিকগুলি সাধারণত যানবাহন এবং ভবনের ছায়া অ্যানিমেশনে ব্যবহৃত হয়।
এতে করে অনেক গ্রাফিক একত্রিত করা সম্ভব।
অ্যানিমেশন
এখন আমরা আউটপোস্ট 2 ডেটা ফরম্যাটের মধ্যে শৃঙ্খলার রাজশ্রেণীতে চলে আসি:
অ্যানিমেশনগুলির কথা।
অ্যানিমেশন তালিকাগুলি একটি বৈশ্বিক হেডার দ্বারা শুরু হয়, যা মূলত তথ্য যাচাইকরণের জন্য ব্যবহৃত হয়। এরপর আসছে নির্দিষ্ট অ্যানিমেশন সংজ্ঞাগুলি, যা 3 স্তরে বিভক্ত:
-
অ্যানিমেশন
একটি অ্যানিমেশন হল শীর্ষস্থানীয় উদাহরণ; এটি একটি ইউনিট, একটি ভবন বা একটি 'পার্টিকেল অ্যানিমেশন' (কমেটের আঘাত, আবহাওয়া, বিস্ফোরণ) এর একটি নির্দিষ্ট অবস্থায় অ্যানিমেশন উপস্থাপন করে। -
ফ্রেম
একটি ফ্রেম হল একটি অ্যানিমেশনের মধ্যে একটি একক চিত্র। একটি অ্যানিমেশনে একটি বা একাধিক ফ্রেম থাকতে পারে। -
সাবফ্রেম
একটি সাবফ্রেম হল সেই তথ্য যা নির্দেশ করে যে একটি নির্দিষ্ট বিটম্যাপ নির্দিষ্ট মানদণ্ডের ভিত্তিতে একটি ফ্রেমের নির্দিষ্ট স্থানে অঙ্কিত হওয়া উচিত। একটি ফ্রেমে একটি বা একাধিক সাবফ্রেম থাকতে পারে।
এরপর সরাসরি আসবে পৃথক অ্যানিমেশন সংজ্ঞাগুলি।
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | অ্যানিমেশনের সংখ্যা | কতগুলো অ্যানিমেশন ডেটাসেট আছে |
0x0004 | uint(32) | ফ্রেমের সংখ্যা | মোট কতটি ফ্রেম থাকা উচিত |
0x0008 | uint(32) | সাবফ্রেমের সংখ্যা | মোট কতগুলো সাবফ্রেম থাকা উচিত |
0x000c | uint(32) | ঐচ্ছিক এন্ট্রির সংখ্যা | কতগুলি "অপশনাল এন্ট্রি" রয়েছে। |
অ্যানিমেশন
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(32) | অজানা ১ | অজানা তথ্য |
0x0004 | uint(32) | বাউন্ডিং বক্স: বাম | বাঁ দিকের শুরু (পিক্সেলে) Bounding Box নির্দেশ করে। |
0x0008 | uint(32) | বাউন্ডিং বক্স: উপরে | এটি Bounding Box-এর উপরের শুরু (পিক্সেলে) নির্দেশ করে। |
0x000c | uint(32) | বাউন্ডিং বক্স: প্রস্থ | বাউন্ডিং বক্সের প্রস্থ (পিক্সেল-এ) নির্দেশ করে। |
0x0010 | uint(32) | বাউন্ডিং বক্স: উচ্চতা | এটি Bounding Box এর উচ্চতা (পিক্সেল এ) নির্দেশ করে। |
0x0014 | uint(32) | অফসেট: এক্স | এটি অ্যানিমেশনের অনুভূমিক কেন্দ্রে নির্দেশ করে |
0x0018 | uint(32) | অফসেট: Y | এটি অ্যানিমেশনের উল্লম্ব কেন্দ্রবিন্দু নির্দেশ করে |
0x001c | uint(32) | অজানা ২ | অজানা তথ্য |
0x0020 | uint(32) | ফ্রেমের সংখ্যা | এতে নির্দেশ করে যে এই অ্যানিমেশনে কতগুলি অ্যানিমেশন ফ্রেম অন্তর্ভুক্ত রয়েছে |
0x0024 | uint(32) | উইন্ডোজের সংখ্যা | এটি নির্দেশ করে যে আঁকার সময় কতগুলো জানালা প্রয়োগ করতে হবে |
শীর্ষ স্তরের তথ্য, অ্যানিমেশন, প্রধানত প্রশাসনিক তথ্য - Boundingbox দ্বারা গাড়ি/ভবনের চারপাশের চিহ্নের অক্ষাংশ ও দ্রাঘিমাংশ নির্দেশ করা হয়, যখন এটি নির্বাচিত হয় এবং একই সময়ে নির্দেশ করে, কোন এলাকা ক্লিক করা যাবে।
অফসেট মূলত "শূন্যবিন্দু" নির্ধারণ করে; সেই বিন্দু, যা খেলার অভ্যন্তরীণ অক্ষাংশে যোগ বা বিয়োগ করতে হবে। গাণিতিকভাবে বলা যায়: এই অফসেট এখানে অক্ষাংশের উৎপত্তি নির্দেশ করে।
উইন্ডোগুলোর ক্ষেত্রেও, অফসেটের মতো, প্রতিটি উইন্ডোর জন্য ৪টি uint(32)-মান রয়েছে, যা একটি এলাকা নির্দেশ করে, যা পৃথক সাবফ্রেমগুলির জন্য ব্যবহারযোগ্য। উইন্ডোর বাইরের অংশে, যদি বিটম্যাপের জন্য যথাযথভাবে নির্ধারিত না হয়, তাহলে আঁকা যাবে না।
ফ্রেম
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(8) | সাবফ্রেমের সংখ্যা এবং বিকল্প ১, ২-এর জন্য টগল | এই মানে অন্তর্ভুক্ত:
|
0x0001 | uint(8) | অজানা ১ এবং বিকল্প ৩, ৪ এর জন্য টগল | এই মানে অন্তর্ভুক্ত:
|
0x0002 | uint(8) | বিকল্প ১ | অজানা |
0x0003 | uint(8) | অপশনাল ২ | অজানা |
0x0004 | uint(8) | অপশনাল ৩ | অজানা |
0x0005 | uint(8) | অপশনাল ৪ | অজানা |
সাবফ্রেম
এড্র | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | চার | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
অফসেট | ডেটা টাইপ | নাম | ব্যাখ্যা |
---|---|---|---|
0x0000 | uint(16) | বিটম্যাপ-আইডি | নির্দেশ করে, কোন বিটম্যাপ এই সাবফ্রেমের জন্য ব্যবহার করা হবে |
0x0002 | uint(8) | অজানা ১ | অজানা - তবে আমি দৃঢ়ভাবে অনুমান করছি যে এটি একটি রেন্ডার-প্রাধান্য (Z-লেয়ার) এর সাথে সম্পর্কিত। |
0x0003 | uint(8) | সাবফ্রেম-আইডি | এটি নির্দেশ করে, আমরা কোন সাবফ্রেমে আছি |
0x0004 | sint(16) | অফসেট - অনুভূমিক | এটি নির্দেশ করে যে ফ্রেমের মধ্যে সাবফ্রেমটি কোথায় স্থাপন করা হবে, বা বিটম্যাপটি কতগুলি পিক্সেল অনুভূমিকভাবে স্থানান্তরিত হবে। |
0x0006 | sint(16) | অফসেট - উল্লম্ব | এটি নির্দেশ করে যে ফ্রেমের মধ্যে সাবফ্রেমটি কোথায় স্থাপন করা উচিত, অথবা বিটম্যাপটি কত পিক্সেল উল্লম্বভাবে সরে যাবে |
এখন আমরা একক ফ্রেম এবং সম্পূর্ণ অ্যানিমেশনগুলি যথাযথভাবে একত্রিত করতে পারি, এখানে একটি জটিল অ্যানিমেশনের উদাহরণ হিসাবে, 500 ইনডেক্স সহ অ্যানিমেশনটি প্রদর্শিত হচ্ছে।
অ্যানিমেশন ৫০০
অ্যানিমেশন 500 একটি প্লিমাউথ পরিবহনকারী যন্ত্রের বর্ণনা করে, যা সাধারণ খনিজ দ্বারা লোড করা হয়েছে, এবং এটি কিভাবে খালাস করা হয় তা দেখায়। এটি উইন্ডোিং কার্যকারিতা ব্যবহার করা একমাত্র কিছু অ্যানিমেশনের মধ্যে একটি।
এবং এভাবে সম্পূর্ণ অ্যানিমেশনটি একত্রিত করা যায়।
দুর্ভাগ্যবশত, উপরের লোডিং হুডের সাথে এখনও একটি সমস্যা রয়েছে, কারণ এখানে গ্রাফিক টাইপ তথ্যের মধ্যে সংশ্লিষ্ট বিট সেট করা হয়নি।
এখানে খেলনা থেকে আরও কিছু সুন্দরভাবে অ্যানিমেটেড স্প্রাইট রয়েছে:
ব্যবহারকারীর ইন্টারফেস
এখন গেমটির ইউজার ইন্টারফেসের অভাব রয়েছে, যা একটি ব্রাশড মেটাল লুকে তৈরি করা হয়েছে।
কিন্তু এখানে এটি স্পষ্ট যে Dynamix নতুন কিছু আবিষ্কার করতে হয়নি; এখানে শুধুমাত্র Windows দ্বারা সরবরাহিত User32 এবং GDI32-এপিআইগুলির ব্যবহার করা হয়েছে - বিশেষ করে User32-এর রিসোর্স ম্যানেজমেন্টও ব্যবহৃত হয়েছে।
এগুলি উদাহরণস্বরূপ Angus Johnson-এর দ্বারা ফ্রি সফটওয়্যার হিসেবে তৈরি করা Resource Hacker এর মতো প্রোগ্রামের মাধ্যমে অথবা - যদি কেউ Linux / Mac OS-এ Wine ব্যবহার করতে না চান - icoutils-এ অন্তর্ভুক্ত wrestool ব্যবহার করে এক্সট্র্যাক্ট করতে পারে।
ফাইলের নাম | বিষয়বস্তু |
---|---|
Outpost2.exe | শুধুমাত্র গেমটির আইকন রয়েছে, যা নিউ টেরা এর সামনে মহাকাশ স্টেশনটি প্রদর্শন করে |
op2shres.dll | বিভিন্ন নিয়ন্ত্রণের জন্য গ্রাফিক্স যেমন বর্ডার, বোতাম, রেডিও বোতাম এবং চেকবক্সের পাশাপাশি সংলাপের পটভূমি, গল্পের মিশনের টেক্সটের জন্য সহায়ক ছবি এবং মেনুর পটভূমির গ্রাফিক্স অন্তর্ভুক্ত রয়েছে |
out2res.dll | গেমের ইনগেম উইন্ডো সাজসজ্জা, সাধারণ এবং বিশেষ ধাতুর জন্য আইকন, লোডিং স্ক্রীন, সংলাপের জন্য গ্রাফিক্স এবং অতিরিক্ত কার্সর গ্রাফিক্স, গেম ডিরেক্টরির অ্যানিমেটেডগুলির পাশাপাশি অন্তর্ভুক্ত রয়েছে |