Table of Contents
موتور طلایی: یک بنیاد برای قابلیت پورتینگ
سفر متقابل پلتفرم نیمه عمر با موتور خود، GoldSrc. Derive از یک موتور Quake به شدت اصلاح شده از id Software آغاز می شود، تیم مهندسی Valve به زودی متوجه شد که یک کد پایه یکپارچه، پلتفرمی که به جای آن کدگذاری شده است مانع گسترش آینده می شود. GoldSrc در اطراف مجموعه ای از انتزاع های اصلی ساخته شده است که منطق بازی را از رابط سیستم جدا کرده است که به معنای آن لایه های ورودی خاص است - و به خوبی تعریف شده است.
تصمیم Valve برای استفاده از C (با برخی از C++ برای ابزار موتور) همچنین به قابلیت پورتینگ کمک کرد. کامپایلرهای C تقریبا در هر پلت فرم از دوره در دسترس بودند و طبیعت پایین زبان اجازه داد تا مهندسان به طور دقیق حافظه و عملکرد را بدون تکیه بر کتابخانه های زمان اجرای پلت فرم، سیستم کتابخانه پویا (مدل سخت افزار) برای کد گیم پلی بیشتر و تغییرات سیستم عامل.
گرافیک انتزاع: خط لوله
DirectX، OpenGL و Software Fallbacks
نیمه عمر حمل شده در سال 1998 هنگامی که اکوسیستم بازی ویندوز تحت سلطه DirectX 5 و 6. با این حال، Valve برنامه ریزی برای لینوکس و macOS پورت از ابتدا. موتور رندر در اطراف یک رابط انتزاعی "renderer" ساخته شده است که می تواند توسط Direct3D (بعد از DirectXGL)، OpenGL، یا یک رندر نرم افزار خالص پشتیبانی شود.این معماری اجازه داد تا بازی بدون سرعت در هر سیستم عامل لینوکس و استفاده از هر سیستم عامل های اولیه لینوکس اجرا شود.
رندر کننده OpenGL به ویژه برای لینوکس و macOS مهم بود، که DirectX وجود نداشت. Valve به کار گرفته شده با تکنیک های مانند GLQuake اما با بهبود قابل توجهی در مدیریت بافت و رندر نرم افزار سطح پایین، در حالی که با استانداردهای مدرن آهسته، اطمینان حاصل کرد که بازی حتی در سخت افزار پشتیبانی نشده بوت، یک بررسی انتقادی برای تست متقابل پلت فرم.
Shader و Graphics Feature Portability
قبل از اینکه سایه های قابل برنامه ریزی استاندارد شوند، GoldSrc بر ویژگی های خط لوله ثابت تکیه کرد. Valve بافت مخلوط، چند منظوره، و اثرات زیست محیطی پشت callbacks قابل پیکربندی تکیه کرد، این بدان معنی است که یک پورت به یک پلت فرم با یک خط لوله سازگار مختلف (به عنوان مثال، PlayStation 2 GS یا قدرت Dreamcast) می تواند بدون انتقال دوباره به همان مسیر ES text باز شود.
ورودی و صوتی: Universal Interfac
ورودی Abstraction
سیستم ورودی Half-Life به عنوان یک لایه انتزاعی گرده طراحی شده است.بازی یک "حالت غالب" عمومی برای صفحه کلید، ماوس و داده های جوی استیک طراحی شده است، در حالی که کد خاص پلت فرم پر شده است که از DirectInput، Linux dev یا macOS HID Manager ساخته شده است. این طراحی اجازه داد تا حرکت و همان سلاح صفحه نمایش را با یک صفحه کلید مجازی مشاهده کند (حتی یک صفحه کلید یا یک صفحه کلید صفحه کلید)
قابلیت های Audio Portability
صدا در نیمه عمر استفاده از سیستم صوتی مایلز، یک محصول واسطه که بر روی DirectSound، OSS (Open Sound System)، ALSA و Core Audio. Miles یک API سازگار برای صوتی 3D موقعیت یاب، جریان و پخش نمونه SDK را ارائه داد.
کد شبکه و چند نفره: نگه داشتن پروتکل Wire Constant
چند نفره نیمه عمر بر یک مدل مشتری محور UDP تکیه کرد. به طور غیر قانونی، پروتکل شبکه - فرمتpacket، فشرده سازی دلتا، هماهنگ سازی دولتی - به طور مستقل از لایه حمل و نقل پایه تعریف شده است، این بدان معنی است که یک مشتری لینوکس می تواند به یک سرور ویندوز متصل شود و برعکس، تا زمانی که هر دو نسخه مشابه را درک کردند. Valve حتی پروتکل را در اجرای نیمه عمر، و سرور سوم را منتشر کرد.
شبکه انتزاع همچنین به پایان و تراز بسته بندی (GoldSrc) از یک سیستم ماکرو (به عنوان مثال، Little ، GoldSrc استفاده کرد (FLT:3) برای تبدیل داده ها به سفارش شبکه در صورت نیاز، اطمینان از سازگاری در سراسر معماری مختلف (x،PC 1996، قدرت کوچک به پورت های ضروری است.
پورت های تاریخی: از Dreamcast تا Xbox
دانلود فیلم Sega Dreamcast (۲۰۰۰)
پورت Dreamcast از Half-Life یکی از بلند پروازانه ترین بود، آوردن بازی به کنسول با RAM محدود (16 MB سیستم، 8 MB ویدئو) و شریک شریک شریک شریک نرم افزار MAX رندر کننده را دوباره برای استفاده از لایه انتزاعی سخت افزار PowerVR، که بافت برتر (VQ) را ارائه داد، اما نیاز به سه دارایی دقیق تر داشت.
PlayStation 2 (2001)
پورت PS2 Half-Life (Half-Life: Decay) تنها در ژاپن عرضه می شود، اما همچنان یک کنجکاوی فنی است. از واحدهای بردار Emotion Engine برای سرعت بخشیدن به تغییر و تبدیل نرم افزار و روشنایی جهانی استفاده می کند. Valve مجبور بود تماس های OpenGL را با GSKit اختصاصی سونی جایگزین کند و در عین حال همان منطق رندر را حفظ کند.
Xbox (2001)
برای Xbox اصلی، Half-Life بر روی یک GoldSrc بسیار سفارشی اجرا شد که از GPU NV2A (یک مشتق GeForce 3) استفاده کرد. Valve از DirectX 8 سایه برای نقشه برداری و جلوه های مشخصاتی استفاده کرد، و اولین بار موتور از سایه های قابل برنامه ریزی استفاده کرد. پورت Xbox نیاز به تغییرات در مدیر حافظه (به جای F:0 [48] موتور اصلی ساخت گرافیک دوگانه (مانند: 1، و پشتیبانی از سیستم ورودی دوگانه بود).
منبع انتشار و پورت های اجتماعی
در سال ۲۰۰۴، Valve SDK نیمه عمر را تحت مجوزی منتشر کرد که اجازه اصلاح را داد اما توزیع مجدد آن را نداشت، با این حال، در سال ۲۰۱۳، کد منبع GoldSrc در GitHub تحت مجوز منبع باز قرار گرفت و این امر موجی از پورت های مبتنی بر جامعه را باز کرد.
برای مثال، موتور Xash3D جایگزین DirectX/OpenGL backends با SDL2 و OpenGL ES 2.0 شد و نیمه عمر را قادر ساخت تا بر روی دستگاه هایی با هیچ راننده GPU اجرا شود، این پورت های جامعه اغلب بر اساس انتزاع اصلی Valve بهبود می یابند، اضافه کردن پشتیبانی و نرخ فریم های بدون قفل شده، آنها همچنین مسائل ثابت با تأخیر صوتی و اثبات قدرت طراحی آن در هنگام طراحی آن را بهبود می دهند.
قابلیت حمل و نقل مدرن: مهندسی معکوس و میراث
امروزه، Half-Life در ویندوز 10/11، macOS (از طریق Steam Play) و لینوکس (به طور غریزی از طریق Steam Linux Runtime) قابل پخش است، موتور GoldSrc به معماری 64 بیتی منتقل شده است و V Valve’s خود را "Half-Life: Source" جایگزین رندر کننده با موتور منبع، اما اصلی بیشتر به دلیل رد پای آن پشتیبانی می شود.
درس های مهندسی از تلاش های متقابل نیمه عمر در موتورهای بازی مدرن باقی مانده است. Unreal Engine، Unity و Godot همه لایه های انتزاعی سخت افزاری، واسطه برای صدا و ورودی و نسخه پروتکل شبکه - مفاهیم پیشگام و یا اصلاح شده توسط GoldSrc. Valve را به منبع باز SDK الهام بخش نسل از توسعه دهندگان برای در نظر گرفتن قابلیت حمل و نقل از یک پروژه.
نتیجه گیری
سازگاری متقابل پلتفرم نیمه عمر یک تصادف نبود؛ نتیجه تصمیمات معماری عمدی بود: یک موتور ماژولار، رندر انتزاعی و سیستم های ورودی، واسطه برای صدا و یک پروتکل شبکه با دقت نسخه بندی شده که این انتخاب ها اجازه می داد تا بازی بر همه چیز از ویندوز کامپیوتر به Dreamcast اجرا شود و آنها به حمایت از پورت های اجتماعی به عصر مدرن ادامه می دهند تا هر دهه ای که به دنبال ساخت یک کتاب های ارزشمند طلا هستند، تغییرات ارزشمند در سراسر بازی طلا باقی بماند.
[در این باره] بخوانید: [[ویرایش]
- توسعه دهنده: موتور طلا[[ویرایش]
- Xash3D FWGS: پورت موتور طلا منبع باز
- وب سایت نیمه عمر رسمی [FLT 1]
- [[ویرایش] [۱] [۱] [۱] [۱] [۱] [۱] [۲] [۱] [۱]