Outpost 2 کی فائل فارمیٹس · bei.pm
اس صفحے پر بیان کردہ فائل کے فارمیٹس Dynamix, Inc. اور Sierra Entertainment کے ذہنی ملکیت کے تکنیکی تجزیے پر مبنی ہیں۔
ذہنی ملکیت آج Activision Publishing, Inc. / Activision Blizzard, Inc. کی ملکیت ہے اور اس وقت Microsoft Corp. کے پاس ہے۔
یہ معلومات ریورس انجینئرنگ اور ڈیٹا تجزیہ کے ذریعے تاریخی ڈیٹا کے ساتھ محفوظ کرنے اور باہمی تعامل کے لیے جمع کی گئی ہیں۔
کوئی مخصوص یا خفیہ تفصیلات استعمال نہیں کی گئیں۔
یہ کھیل اس وقت gog.com پر ڈاؤن لوڈ کے طور پر خریداری کے لیے دستیاب ہے۔
یہ مضمون کی سیریز میرے تجربات کو "آؤٹ پوسٹ 2: تقسیم شدہ تقدیر" کے ڈیٹا فارمیٹس پر دستاویز کرتی ہے، جو 1997 میں سیرا کے ذریعے شائع ہوا اور ڈائنامکس نے تیار کیا۔
میں نے تقریباً 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) | بلاک کی لمبائی | یہ معلومات فراہم کرتا ہے کہ درج ذیل ڈیٹا بلاک کا حجم (بائٹس میں) کتنا ہے۔ یہاں صرف خالص استعمال کی جانے والی ڈیٹا کی بات کی گئی ہے - اس میں 8 ہیڈر بائٹس شامل نہیں ہیں۔ |
0x0007 | uint(8) | جھنڈے؟ | یہ معلوم نہیں ہے کہ یہ بلاک بالکل کس کام آتا ہے۔ یہ ویلیو اکثر 0x80 ہے، جبکہ دوسری فائلوں میں یہ اکثر 0x00 ہے۔ یہ اس بات کی طرف اشارہ کرتا ہے کہ یہ ایک فلیگ سیٹ ہے۔ |
حجم
والیمز ایک ڈیٹا کنٹینر ہیں جو کھیل کے لیے ہے، جیسے کہ کسی آرکائیو فارمیٹ کی طرح جیسے کہ ٹار بال۔ کم از کم آؤٹ پوسٹ 2 میں اس فارمیٹ میں صرف فائلیں ہوتی ہیں - کوئی فولڈر نہیں۔ شاید ان فائلوں کو متعلقہ فائل کے نام کے ذریعے ظاہر کیا جا سکتا ہے۔
ایک والیم والیم ہیڈر اور متعدد والیم بلاکس پر مشتمل ہوتا ہے، جو مخصوص فائلوں کے مطابق ہوتے ہیں۔
"والیمز" وہ فائلیں ہیں جن کا ایکسٹینشن '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 علامات کی توقع کرتی ہے۔ ڈیٹا کو پارس کرتے وقت اس ڈیٹا بلاک کا مزید تجزیہ کرنے کی ضرورت نہیں ہے، کیونکہ والیم کی معلومات میں براہ راست فائل ناموں کے آفسیٹس حوالہ دیے گئے ہیں۔ |
Volume Strings ایک فائل ناموں کی فہرست ہے جو Volume کے اندر موجود ہیں۔
حجم کی معلومات
ایڈریس | 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 = فائل الاٹمنٹ ٹیبل)
فائلوں کی تعداد بلاک کے حجم کو ڈائریکٹری کے اندراجات کی لمبائی - 14 بائٹس سے تقسیم کر کے حاصل کی جاتی ہے۔
انفرادی ڈائریکٹری کے اندراجات کا ہر ایک اس طرح کی تشکیل ہے:
ایڈریس | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | کریکٹر | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
آفسیٹ | ڈیٹا کی قسم | نام | وضاحت |
---|---|---|---|
0x0000 | uint(32) | فائل کے نام کا آفسیٹ | یہ بتاتا ہے کہ فائل کے نام کی فہرست (Volume-Strings) میں فائل کا نام کس آفسیٹ (!) پر واقع ہے۔ یہ صارف کے ڈیٹا بلاک کے آغاز کی طرف اشارہ کرتا ہے۔ |
0x0004 | uint(32) | فائل آفسیٹ | یہ بتاتا ہے کہ مجموعی Volume فائل کے اندر یہ فائل کس آفسیٹ پر موجود ہے۔ |
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 گرافک فارمیٹ ہیں۔ یہ 13 ٹیلس سیٹس پر محیط ہیں،
جنہیں "wells" کہا جاتا ہے (well0000.bmp
سے well0012.bmp
تک)،
جو maps.vol کے حجم میں موجود ہیں۔
ان ٹیلس سیٹس / ویلز میں درج ذیل شامل ہیں:
فائل کا نام | مواد |
---|---|
well0000.bmp | ایک 32x32px کا نیلا گرافک - یہ چیک کرنے کے لیے مثالی ہے کہ آیا آپ کا امیج لوڈر کام کر رہا ہے |
well0001.bmp | ہلکے پتھر، ہلکے پتھر پر پہاڑی سلسلے اور ہلکے پتھر میں بے شمار مختلف اقسام کے ٹکرانے کے گڑھے شامل ہیں |
well0002.bmp | ہلکے پتھر کے 'ڈوڈڈز' شامل ہیں - یعنی عناصر جو ہلکے پتھر پر آرائش کے لیے (یا جان بوجھ کر ساخت کے طور پر، جیسے دیواریں) رکھے جا سکتے ہیں، جن میں نباتات بھی شامل ہیں |
well0003.bmp | ہلکے پتھر پر ایک کثیف ساخت شامل ہے |
well0004.bmp | گہرے پتھر، گہرے پتھر پر پہاڑی سلسلے اور گہرے پتھر میں بے شمار مختلف اقسام کے ٹکرانے کے گڑھے شامل ہیں |
well0005.bmp | گہرے پتھر کے 'ڈوڈڈز' شامل ہیں - یعنی عناصر جو گہرے پتھر پر آرائش کے لیے (یا جان بوجھ کر ساخت کے طور پر، جیسے دیواریں) رکھے جا سکتے ہیں |
well0006.bmp | گہرے پتھر پر ایک کثیف ساخت شامل ہے، ساتھ ہی ہلکے اور گہرے پتھر کے درمیان منتقلی |
well0007.bmp | لاوا شامل ہے جس میں ہر ایک کے لیے 4-5 فریم کی حرکت شامل ہے |
well0008.bmp | ریت اور ریت میں بے شمار مختلف اقسام کے ٹکرانے کے گڑھے شامل ہیں |
well0009.bmp | ریت کے 'ڈوڈڈز' شامل ہیں - یعنی عناصر جو ریت پر آرائش کے لیے (یا جان بوجھ کر ساخت کے طور پر، جیسے دیواریں) رکھے جا سکتے ہیں |
well0010.bmp | ہر ایک کے لیے 48 منتقلی ہلکے اور گہرے پتھر سے ریت میں شامل ہیں |
well0011.bmp | نقشے کے قطبی ٹوپیاں شامل ہیں، جس کی بنیاد گہرے پتھر پر ہے |
well0012.bmp | نقشے کے قطبی ٹوپیاں شامل ہیں، جس کی بنیاد ہلکے پتھر پر ہے |
یہ ایک درست عمل درآمد کے لیے مشورہ دیا جاتا ہے کہ ٹائلز کو پہلے سے رینڈر نہ کیا جائے تاکہ انہیں کیش کیا جا سکے، کیونکہ دن/رات کے چکر کے لیے ڈیٹا ابھی تک تیار کرنا باقی ہے - اور اس کے لیے بہت زیادہ ڈیٹا جمع ہو جائے گا۔
ٹائلز 8bpp گرافکس ہیں جن کی انڈیکسڈ پیلیٹ 32x32 پکسل کی وضاحت کے ساتھ ہوتی ہے، جو ایک دوسرے کے ساتھ ترتیب دی گئی ہیں۔ اس طرح بنائے گئے ٹائل سیٹ میں حقیقت میں زیادہ مواد شامل ہو سکتا ہے۔
اہم کنٹینر میں 2 سیکشنز ہیں: 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 کے تمام Wells کے لیے یہاں |
0x0010 | uint(32) | اونچائی (عمودی قرارداد) | یہ بتاتا ہے کہ تصویر کی فائل کتنی اونچی ہے (پکسل میں). Outpost 2 کے تمام Wells میں یہاں کی قیمت |
0x0014 | uint(32) | رنگ کی گہرائی؟ | اس قدر کی اہمیت نامعلوم ہے۔ چونکہ یہ تمام جانچے گئے فائلوں میں |
0x0018 | uint(32) | رنگ کی گہرائی 2؟ | اس قیمت کی اہمیت نامعلوم ہے۔ ممکن ہے کہ یہ 'ہدف' رنگ کی گہرائی ہو۔ |
ان معلومات کے بعد ایک معیاری 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 بٹ میپ کے طور پر موجود گرافکس میں ہوتی ہے، رنگین پیلیٹ میں رنگ کا انڈیکس ہوتا ہے۔
گیم انجن ٹائلز کو *شاید* طلب پر تیار کرتا ہے۔
یہ دراصل دن اور رات کے دورانیے کی وجہ سے ہے، جو 32 مختلف ٹائلز کی سطحیں جانتا ہے۔ اس میں، ہر بار روشنی کی قدر سے 'تھوڑا تھوڑا' کم کیا جاتا ہے۔ درست اقدار ابھی تک معلوم نہیں ہو سکیں، میں حساب کی بنیاد پر کام کر رہا ہوں
v *= (daylight / 48) + 0.25;
pixel کے HSV ڈیٹا کے ساتھ، جہاں daylight کی قدر 0-31 کے درمیان ہے اور v کی قدر 0-1 کے درمیان ہے۔ اس کے علاوہ، یہ بھی یاد رکھنا ضروری ہے کہ نقشے پر ہر طرف 16 ٹائلز کا ایک کنارے موجود ہے (جو کہ یونٹس کے غیر مرئی پیدا کرنے کے لئے ہے)۔
مزید یہ کہ، دن اور رات کا دورانیہ ہر گیم سائیکل میں صرف نقشے کی ایک کالم کو اپ ڈیٹ کرتا ہے۔
تیز رفتار دن اور رات کا دورانیہ اس طرح نظر آتا ہے:
پی آر ٹی
ایڈریس | 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
-سیکشن (جو ممکنہ طور پر پیلیٹ کنٹینر کے لئے ہے) صرف پیلیٹ کے ڈیٹا کو گھیرے ہوئے ہے، یہ بتاتے ہوئے کہ عام طور پر 1052 بائٹ کے 8-بٹ پیلیٹ کی کتنی تعداد موجود ہے۔
1052 بائٹ کا یہ ذکر لازمی نہیں ہے، کیونکہ پیلیٹ فارمیٹ ممکنہ طور پر مختلف پیلیٹ کے سائز کو پیش کر سکتا ہے۔ یہ صرف اس ڈیٹا کے لئے ہے جو اوٹ پوسٹ 2 کے ساتھ فراہم کیا جاتا ہے۔
پیلیٹ کی فہرست کے بعد براہ راست اور بغیر کسی ابتدائی ہیڈر کے، بٹ میپوں کی فہرست آتی ہے؛ اسی طرح حرکت کی فہرستیں بھی اس کے بعد فوری طور پر آتی ہیں۔
دونوں کو ایک 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) | غیر معروف - جھنڈے؟ | یہ واضح نہیں ہے کہ یہ قیمت کیا معنی رکھتی ہے، کیونکہ یہ بظاہر بنیادی طور پر |
پیلیٹ کے بارے میں مزید صرف یہ کہنا ہے کہ انیمیشنز کے لیے استعمال ہونے والی پیلیٹ کے لیے درج ذیل قوانین لاگو ہوتے ہیں:
- پہلا رنگ ہمیشہ شفاف ہوتا ہے، چاہے وہاں کوئی بھی قیمت دی گئی ہو۔
-
پیلیٹ کی پہلی 24 اندراجات کو پیلیٹ 1-8 میں کھلاڑی کے رنگ کے طور پر سمجھا جانا چاہیے۔
یہ واضح نہیں ہے کہ کھلاڑی 1 کے علاوہ رنگ کہاں سے آتے ہیں۔
میری توقع ہے کہ باقی رنگ ہارڈکوڈڈ ہیں۔
بٹ میپس
ایڈریس | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | کریکٹر | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
آفسیٹ | ڈیٹا کی قسم | نام | وضاحت |
---|---|---|---|
0x0000 | uint(32) | منظم کردہ چوڑائی | یہ بائٹس میں پکسل ڈیٹا کی سطروں کی چوڑائی کو ظاہر کرتا ہے - کیونکہ یہ 4 بائٹ کی سرحدوں کے مطابق ترتیب دیے گئے ہیں۔ اس طرح ایک مخصوص تصویر کی سطر کو جلدی سے منتخب کرنا ممکن ہے۔ یہ واضح نہیں ہے کہ یہ قدر علیحدہ کیوں محفوظ کی جاتی ہے حالانکہ اسے حساب کیا جا سکتا ہے۔ |
0x0004 | uint(32) | آفسیٹ | بٹ میپ میں پہلی لائن کی آفسیٹ کی وضاحت کرتا ہے |
0x0008 | uint(32) | اونچائی | تصویر کی اونچائی پکسل میں بتائیں |
0x000c | uint(32) | پھیلاؤ | تصویر کی چوڑائی پکسل میں بیان کرتی ہے |
0x0010 | uint(16) | ٹائپ | تصویر کی نوعیت کی وضاحت کرتا ہے۔ یہاں ایسا لگتا ہے کہ یہ ایک بٹ ماسک ہے:
|
0x0012 | uint(16) | پیلیٹ | تعریف کرتا ہے کہ کون سی پیلیٹ PRT فائل سے استعمال کی جائے گی |
PRT فائل کا یہ ڈیٹا ڈھانچہ بتاتا ہے کہ سپرائٹس کے لئے استعمال ہونے والی بٹ میپس کیسے بنائی گئی ہیں۔ یہ بٹ میپس ایک الگ جز کے طور پر کام کرتی ہیں، جنہیں کئی سپرائٹ کے ایک اینیمیشن فریم میں جوڑا جاتا ہے۔
حقیقی تصویری ڈیٹا دراصل کھیل کے ڈائریکٹری میں موجود op2_art.BMP میں چھپا ہوا ہے۔
یہ واضح نہیں ہے کہ یہ بٹ میپ فائل ایک (زیادہ تر درست) RIFF بٹ میپ ہیڈر کیوں رکھتی ہے۔ ممکن ہے کہ آؤٹ پوسٹ 2 گرافکس کو لوڈ کرنے کے لئے سسٹم کے APIs کا استعمال کرتا ہے، جس میں یہ ہیڈر عارضی طور پر لیا جاتا ہے اور متعلقہ متغیرات کو اوور رائیٹ کیا جاتا ہے۔
پکسل ڈیٹا BMP فائل میں اوفسیٹ + 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) | نامعلوم 1 | نامعلوم معلومات |
0x0004 | uint(32) | باؤنڈنگ باکس: بائیں | بائیں طرف کی شروعات (پکسل میں) باؤنڈنگ باکس کی وضاحت کرتی ہے۔ |
0x0008 | uint(32) | باؤنڈنگ باکس: اوپر | اوپر کی شروعات (پکسل میں) باؤنڈنگ باکس کی وضاحت کرتا ہے۔ |
0x000c | uint(32) | باؤنڈنگ باکس: چوڑائی | یہ Bounding Box کی چوڑائی (پکسل میں) ظاہر کرتا ہے۔ |
0x0010 | uint(32) | باؤنڈنگ باکس: اونچائی | یہ Bounding Box کی اونچائی (پکسل میں) بتاتا ہے۔ |
0x0014 | uint(32) | آفسیٹ: X | اینیمیشن کے افقی مرکز کی نشاندہی کرتا ہے |
0x0018 | uint(32) | آفسیٹ: Y | اینیمیشن کا عمودی مرکز بتاتا ہے |
0x001c | uint(32) | نامعلوم 2 | نامعلوم معلومات |
0x0020 | uint(32) | فریمز کی تعداد | یہ بتاتا ہے کہ اس حرکت میں کتنے اینیمیشن فریم شامل ہیں |
0x0024 | uint(32) | کھڑکیوں کی تعداد | یہ بتاتا ہے کہ ڈرائنگ کے دوران کتنے ونڈو استعمال کرنے ہیں |
اوپر کی سطح کے ڈیٹا، جو کہ انیمیشن سے متعلق ہیں، بنیادی طور پر انتظامی ڈیٹا ہیں - Boundingbox اس وقت گاڑی/عمارت کے گرد نشان کے نقاط کی نشاندہی کرتی ہے، جب یہ منتخب کیا جاتا ہے اور یہ بھی بتاتی ہے کہ کون سا علاقہ کلک کرنے کے قابل ہونا چاہیے۔
آفسیٹ بنیادی طور پر "صفر نقطہ" طے کرتا ہے؛ وہ نقطہ جو کہ کھیل کے اندرونی نقاط میں شامل یا کم کیا جانا ہے۔ اسے ریاضیاتی طور پر بھی بیان کیا جا سکتا ہے: آفسیٹ یہاں نقاط کی اصل کی نشاندہی کرتا ہے۔
ونڈوز بھی، جیسے کہ آفسیٹ، ہر ونڈو کے لیے 4 uint(32) کے اقدار پر مشتمل ہیں، جو ایک ایسا علاقہ فراہم کرتے ہیں جو انفرادی سب فریمز کے لیے استعمال کے قابل ہے۔ ونڈوز کے باہر، جب تک کہ یہ بٹ میپ کے لیے مناسب ہو، ڈرائنگ نہیں کی جا سکتی۔
فریم
ایڈریس | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | کریکٹر | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
آفسیٹ | ڈیٹا کی قسم | نام | وضاحت |
---|---|---|---|
0x0000 | uint(8) | سب فریم کی تعداد اور آپشنل 1، 2 کے لیے ٹوگل | یہ قیمت شامل ہے:
|
0x0001 | uint(8) | انجان 1 اور آپشنل 3، 4 کے لیے ٹوگل | یہ قیمت میں شامل ہے:
|
0x0002 | uint(8) | اختیاری 1 | نامعلوم |
0x0003 | uint(8) | اختیاری 2 | نامعلوم |
0x0004 | uint(8) | اختیاری 3 | نامعلوم |
0x0005 | uint(8) | آپشنل 4 | نامعلوم |
ذیلی فریم
ایڈریس | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | کریکٹر | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
آفسیٹ | ڈیٹا کی قسم | نام | وضاحت |
---|---|---|---|
0x0000 | uint(16) | بٹ میپ آئی ڈی | یہ بتاتا ہے کہ اس سب فریم کے لیے کون سی بٹ میپ استعمال کی جانی چاہیے |
0x0002 | uint(8) | نامعلوم 1 | یہ نامعلوم ہے - البتہ میں یہ مضبوطی سے مشکوک ہوں کہ یہ ایک رینڈر کی ترجیح (Z-Layer) ہے۔ |
0x0003 | uint(8) | سب فریم-آئی ڈی | یہ بتاتا ہے کہ ہم کس ذیلی فریم میں ہیں |
0x0004 | sint(16) | آفسیٹ - افقی | یہ بتاتا ہے کہ فریم کے اندر سب فریم کہاں رکھا جانا چاہیے، یا بٹ میپ کو کتنے پکسلز افقی طور پر منتقل کیا جانا چاہیے |
0x0006 | sint(16) | آفسیٹ - عمودی | یہ بتاتا ہے کہ فریم کے اندر سب فریم کہاں رکھا جائے گا، یا بٹ میپ کو عمودی طور پر کتنے پکسلز منتقل کیا جائے گا |
اس کے ساتھ ہم اب انفرادی فریمز اور مکمل متحرک تصاویر کو مناسب طریقے سے ترتیب دے سکتے ہیں، یہاں ایک پیچیدہ متحرک تصویر کی مثال کے طور پر، جو انڈیکس 500 کے ساتھ ہے، پیش کی گئی ہے۔
اینیمیشن 500
انیمیشن 500 دکھاتی ہے کہ کس طرح ایک پلیموٹھ ٹرانسپورٹر، جو کہ عام خام مال سے بھرا ہوا ہے، کو اتارا جا رہا ہے۔ یہ چند انیمیشنز میں سے ایک ہے جو ونڈوئنگ کی فعالیت کا استعمال کرتی ہے۔
اور یوں مکمل انیمیشن کو اکٹھا کیا جا سکتا ہے۔
بدقسمتی سے اوپر کے لوڈنگ دروازے کے ساتھ ایک مسئلہ ہے، کیونکہ یہاں گرافک ٹائپ کی معلومات میں متعلقہ بٹ سیٹ نہیں کیا گیا ہے۔
یہاں کچھ مزید، خوبصورت انیمیشن شدہ اسپرائٹس ہیں جو کھیل سے ہیں:
صارف کے انٹرفیس
اب کھیل کا صارف-انٹرفیس باقی ہے، جو کہ برش کیے گئے دھات کے انداز میں ہے۔
لیکن یہاں بھی یہ واضح ہے کہ Dynamix کو دوبارہ پہیہ ایجاد کرنے کی ضرورت نہیں تھی؛ یہاں صرف Windows کی فراہم کردہ User32 اور GDI32 APIs کا استعمال نہیں کیا گیا - خاص طور پر User32 کے وسائل کے انتظام کا بھی استعمال کیا گیا ہے۔
ان کو آپ Angus Johnson کی طرف سے مفت فراہم کردہ Resource Hacker جیسے پروگراموں کے ذریعے نکال سکتے ہیں، یا اگر آپ Linux / Mac OS پر Wine کے استعمال سے گریز کر رہے ہیں تو icoutils میں شامل wrestool کی مدد سے بھی نکال سکتے ہیں۔
فائل کا نام | مواد |
---|---|
Outpost2.exe | صرف کھیل کا آئیکن ہے، جو New Terra کے سامنے کی خلا میں موجود اسٹیشن کو دکھاتا ہے |
op2shres.dll | بٹنوں، ریڈیو بٹنوں، چیک باکسز جیسے کنٹرولز کے گرافکس کے علاوہ، کہانی کے مشن متون کے لیے ملحقہ تصاویر اور مرکزی مینو کے پس منظر گرافکس شامل ہیں |
out2res.dll | ان گیم ونڈو کی سجاوٹ، عام اور خاص دھات کے آئیکنز، لوڈنگ اسکرین، مکالمے کے لیے گرافکس اور دیگر کرسر گرافکس شامل ہیں، جو کھیل کے ڈائریکٹری میں متحرک ہیں |