من أشهر محركات الألعاب اليوم هو محرك Unreal Engine، هو بلا منازع أكثر محركات الألعاب استخداماً حتى الآن، خاصة إصدارته الثالثة والتي تم استخدامها لتطوير Batman Arkham Asylum و Mirror's Edge و Gears of War وآخرين، ما أروع الحصول على نفس الأدوات التي تم استخدامها لتطوير هكذا ألعاب؟
في مفاجأة رائعة فجرّتها شركة Epic قبل أسابيع، تم طرح طقم تطوير Unreal والمسمى UDK اختصاراً، والمذهل في الموضوع إنه نفسه محرك Unreal Engine 3 ولا وجود لأي محدودية مفروضة على إمكانياته على حد علمي، يتضمن UDK كذلك مجموعة من التقنيات التجارية مثل FaceFX و SpeedTree والمضمنّة مع المحرك لكي تستخدمها مجاناً! (اتفاق بين Epic والشركات المسؤولة عن تلك التقنيات)
هل بدأ لعابك يسيل؟ لقد بدئنا للتو..
Unreal Development Kit
UDK هو Unreal Engine 3 نفسه، إطار العمل الاحترافي المتكامل والذي يضم عدداً كبيراً من الأدوات التي تمكنّك من تطوير ألعاب عظيمة، إنشاء عوالم افتراضية، أو تطوير برامج محاكاة واقعية. تم تطويره من قبل شركة Epic Games بقيادة Tim Sweeny مؤسس الشركة، أول ظهور لـ Unreal Engine كان سنة 1998 في ثاني لعبة ناجحة للشركة والتي سميت Unreal، أصبح Unreal Engine في السنوات اللاحقة أساساً للكثير من الألعاب ذات الجودة العالية.
آخر جيل من المحرك هو الجيل الثالث، من الألعاب التي استخدمته:
- Unreal Tournament 2007
- Gears of War
- Bioshock
- Mirror's Edge
- Batman Arkham Asylum
- Mass Effect
- وغيرها كثير
نواة المحرك مكتوبة بلغة ++C ويقدم محرك Unreal Engine 3 الكامل دعماً لجميع المنصات الأساسية مثل Windows، Linux، MacOS X، XBOX360، Playstation3 ودعم لـ DirectX9، DirectX10، OpenGL حسب المنصة، أما UDK فبالطبع يقتصر دعمه على Windows فقط، وكذلك فإن كود ++C للمحرك غير مقدّم مع UDK.
التطوير
يختلف محرك Unreal عن جميع المكتبات والمحركات المجانية الأخرى في إنه مصمم لكي يتم استخدامه من قبل فريق تطوير ألعاب، عدد الأدوات التي يوفرها Unreal كبير وكل شيء تقريباً يمكن القيام به بطريقتين على الأقل، طريقة تناسب المطوّرين، وأخرى موجهة أكثر للفنانين، لذلك أعتقد أنّ من الصعب الوصول لأكبر فعالية ممكنة في استخدام محرك Unreal من دون فنّانين مختصين.
محرّر Unreal
الأداة الرئيسية التي يعتمد عليها محرك Unreal هي المحرّر UnrealEd، ويمكن من خلاله عمل كل شيء تقريباً عدا كتابة البرامج التي تعرّف عناصر اللعبة (Actors) في Unreal.
ولكن ما هي عناصر اللعبة؟ كما في Unity والكثير من محركات الألعاب الأخرى يتألف العالم من مجموعة من العناصر التي تسمى Actor أو GameObject أو Entity (أو ما شابه) والتي تشكل بمجموعها اللعبة نفسها، قد يكون العنصر شجرة أو صخرة لا تتحرك ولا تتفاعل مع أي شيء، او قد يكون وحش كاسر يمتلك ذكاء اصطناعي، مخالب مخيفة، وكره شديد غير مبرّر تجاه اللاعب، أو قد يكون العنصر أميرة حسناء محبوسة في قمة قصر، صاروخ أطلقته دبابة معادية، أو سيارة يستطيع اللاعب أن يركبها ويقودها ويحولها إلى طائرة عندما يريد، ... حسناً سأتوقف الآن.
في Unreal يسمى عنصر اللعبة الواحد Actor، وهنالك طريقة واحدة فقط لكتابة عناصر جديدة وهي البرمجة باستخدام UnrealScript.
UnrealScript هي اللغة التي يستخدمها Unreal وهي تستعير أفكار من لغتي ++C و Java، ولكن تضيف الكثير من الأفكار الموجهة للألعاب خصيصاً، على سبيل المثال كل عنصر يمتلك State Machine تعمل بالتوازي مع كود العنصر الفعلي، وكذلك فإن إمكانات الشبكات وتعدّد اللاعبين (networking/multiplayer) جزء من اللغة نفسها وليست مكتبة منفصلة.
أول عيب لاحظته في UDK هو عدم توفير برنامج لكتابة أكواد UnrealScript، يمكن بالطبع استخدام أي محرّر نصوص اعتيادي بدءاً من Notepad وانتهاءاً بـ Visual Studio، ولكن ليس لدي معلومات حول إمكانية إعداد Debugger لـ UnrealScript يدوياً باستخدام ادوات خارجية.
الجزء الرئيسي من محرّك Unreal هو محركّ اللعبة، ومعظمه مكتوب بلغة UnrealScript ويمكنك أن تلقي نظرة على الأكواد في المسار التالي (UDK/Development/Src/Engine/Classes)، على سبيل المثال تصفح ملف Actor.uc والذي يتضمن تعريف عنصر اللعبة النموذجي وجزء كبير من خصائصه مثل الفيزياء والحركة، يمكنك قراءة الكود بسهولة حتى وإن لم تكن درست UnrealScript لأنه مشابه لـ ++C كما ذكرت.
ولكي تزيد الأمور روعة، تقدم Epic مع UDK ديمو كامل للعبة Unreal Tournament مع أربعة خرائط، وبالطبع، أكواد اللعبة وعناصر اللعبة مقدّمة بالكامل لكي تستفيد منها، تجد تلك الأكواد في المسار (UDK/Development/Src/UTGame/Classes).
ديمو UTGame
بالإضافة إلى ذلك هنالك 3 ألعاب معمولة باستخدام UDK مقدمة لنا للدراسة، Whizzle وهي لعبة من نمط Casual، والثانية The Ball وهي تعديل على لعبة Unreal Tournament، وأخيراً Prometheus وهي لعبة شبيهة بلعبة Portal.
من الجدير بالذكر أن عدم توفير كود ++C لمحرك Unreal Engine سوف يؤدي إلى حتمية الاعتماد الكامل على UnrealScript وهي لغة يقوم محرك Unreal بتنفيذها بطريقة التفسير فوري (Interpreted) من ما يعني أنها أبطئ كثيراً من كود ++C، قد يؤثر ذلك على المشاريع المتوسطة التي يتم تطويرها باستخدام UDK لأن أي أكواد معقدة سوف تكون بالنتيجة بطيئة، وسوف يؤثر ذلك سلباً بالتأكيد على المشاريع الضخمة تأثيراً جدّياً.
من الأفضل أن أشير أيضاً إلى أن كود UnrealScript الذي يشكل محرك اللعبة والمقدم مع UDK يقدم اداءاً جيد جداً لسبب، إن حاولت تصفح بعض ملفات UnrealScript المقدمة لا شك أنك لاحظت معرّفات كثيرة تسبق تعريف الإجراءات وأحياناً تصف class معيّن، يهمنا هنا تحديداً المعرّف native، يعني هذا المعرّف أن كود الإجراء الفعلي (أو جزء من الـ class) مكتوب باستخدام ++C للحصول على أفضل اداء ممكن، وليس باستخدام UnrealScript، بطبيعة الحال لا نملك مع UDK هذه الإمكانية، ألا وهي كتابة جزء من الكود في ++C، كذلك لا يمكن تعديل جزء كبير من محرك اللعبة المقدّم مع UDK مباشرة، لأن أي تعديل على جزء native يجب أن ينعكس على ++C ونحن لا نملك تلك الإمكانية، ولكن يمكن بدلاً عن ذلك وراثة class من نوع native، وعمل override لإجراءاته.
ونقطة أخيرة تعد معلومة جديدة بالنسبة لي ذكرها المطوّر وسام البهنسي مشكوراً وهي عدم إمكانية كتابة مظللات مباشرة بالكود، وبالتالي فإن الخيار الوحيد لإنشاء المظللات هو محرّر المواد المرئي الذي هو جزء من UnrealEd.
ومن المهم فهم تبعات عدم تقديم كود ++C قبل اتخاذ قرار استخدام UDK لعمل مشروع جدّي.
رخصة الاستخدام
رخصة استخدام UDK فريدة من نوعها بالنسبة لمحرك ألعاب تجاري (خاصة من هذا الحجم)، وسأركز على تطوير ألعاب باستخدامه لأن هنالك شروط خاصة بتطوير برامج لمؤسسات ثالثة وغير ذلك من الكلام الذي لا يهمنا هنا، كبداية فإن المحرك مجاني تماماً للاستخدام الشخصي الغير تجاري بلا قيود، عندما تقرّر تطوير لعبة تجارية باستخدام UDK يمكنك تطوير اللعبة مجاناً أيضاً، ولكن عندما تنتهي من اللعبة وتستعد لإصدارها يجب أن تدفع رسماً مقداره 99 دولاراً فقط للحصول على الرخصة المسماة Royalty Bearing License، ليس واضحاً لي ما إذا كان هذا الرسم يدفع مرة واحدة للمنتج الأول فقط أو يجب دفعه لكل منتج، على كل حال فهو مبلغ رمزي ولا مشكلة إن كان يدفع لكل منتج.
والآن، لنفرض أنك قد أصدرت لعبتك وبدأت أرباح المبيعات تصلك، الـ 5000 دولار الأولى من الأرباح التي تحصل عليها لك بالكامل، ولا تطالب Epic بأي نسبة هنا، بعد الـ 5000 دولار الأولى يجب عليك أن تدفع لشركة Epic ما نسبته 25 بالمئة من الأرباح، تلك هي الرخصة باختصار.
على سبيل المثال، لنفترض أنك طوّرت لعبة أسميتها الأرنب المفترس، ثم قررت إصدارها تجارياً، يجب عليك أولاً دفع 99 دولار لشركة Epic للحصول على حق النشر التجاري، لنفترض أنك حصلت على أرباح 5000 دولار من اللعبة في أول شهر، هذه الأرباح لك بالكامل (مبروك مقدماً وأنت مطالب بعزيمة غداء محترمة)، ثم في الشهر الثاني حصلت على أرباح 10000 دولاراً، فيجب أن تدفع من هذه الـ 10000 دولار 25% أي 2500 دولار لشركة Epic، وتستمر بعد ذلك في دفع 25% من أي أرباح تحققها اللعبة.
مزايا UDK
- محرّر Unreal والذي يقدم بيئة تحرير كاملة لمشروعك مع إمكانية استخدام جميع أدوات المحرّك الأساسية من داخل المحرّر. أهم تلك الأدوات:
- محرّر التضاريس (Terrain Editor)
- محرّر المواد (Material Editor): يقدم نظاماً فريد من نوعه لإنشاء المواد بشكل مرئي، يمكنك استخدامها لكي تطوّر مظلّلات لعبتك ومؤثراتها خاصة من دون الحاجة لكتابة سطر برمجي واحد. (تذكّر أن معظم أدوات المحرّر موجهة للفنانين الذين ليسوا من المعجبين بالبرمجة عادةً)
- محرّر المجسّمات (Mesh Editor): يمكنك تغيير الخصائص الفيزيائية للمجسّم كذلك يمكن تبسيط المجسّم، إنشاء مستويات الدقة للمجسّم، إنشاء إحداثيات الإكساء، وكذلك أداة لتكسير المجسّم لإضافة قابلية التدمير.
- محرّر الحركة (Animation Editor): لضبط الحركة العظمية للشخصيات وربطها بأحداث اللعبة وأكواد UnrealScript.
- محرّر النباتات (Foliage Editor): يستخدم محرّك SpeedTree لإنشاء الأشجار، الحشائش، والزهور بكافة الأشكال والأحجام.
- محرّر الهياكل الفيزيائية (Unreal PhAT): يمكن استخدامها لإنشاء هيكل عظمي فيزيائي للشخصيات والأشياء للحصول على مؤثرات من قبيل الدمى القماشية (Ragdolls).
- محرّر الأنظمة الجزيئية (Unreal Cascade): تستخدم لإنشاء الأنظمة الجزئية والمؤثرات البيئية.
- محرّر السينمائيات (Unreal Matinee): أداة إنشاء العروض السينمائية للعبة (Cutscenes or FMVs).
- محرّر النصوص البرمجية المرئي (Unreal Kismet): يمكن استخدامه لكتابة أكواد بسيطة بشكل مرئي، مثلاً إن أردت أن تشغل مصعد ضمن مرحلة من مراحل اللعبة يمكنك كتابة وظيفية المصعد باستخدام Kismet.
- محرّر واجهة المستخدم (UI Editor): يمكن استخدامه لإنشاء قوائم اللعبة وواجهتها (HUD) بالشكل الذي ترغب فيه، يقدم دعم لاستيراد خطوط TrueType.
- محرّر الصوت (Sound Cue Editor): لإنشاء الأحداث الصوتية وتغيير خصائص الصوت.
- محرّر المؤثرات الخاصة (Post-process Editor): يمكنك إنشاء أي عدد من المؤثرات الخاصة التي تنطبق على كامل العرض مثل Depth of Field أو Motion Blur.
- متصفح المحتوى (Unreal Content Browser): أداة لإدارة جميع محتويات اللعبة.
- الإظهار: نظام إظهار Gemini يقدم لك نظام إظهار متعدد المسارات (multi-threaded) يتيح إظهار مشاهد معقدة ومفصلة، يستطيع كذلك تعديل دقة المشاهد والمؤثرات الخاصة لكي يتناسب مع العتاد الذي يعمل عليه، يستند النظام على 64-بت HDR ويقدم مؤثرات كثيرة يمكن تطبيقها على المشاهد مثل Depth of Field، Motion Blur، و Bloom مع إمكانية إنشاء مؤثرات جديدة بأيدي الفنانين.
- الحركة: نظام قوي للحركة، مع محرّرات متعددة، يستطيع نظام الحركة تطبيق الحركات الإجرائية (Procedural Animation) على الهياكل العظمية للشخصيات ويقدم نظام حركية عكسية كامل (Inverse Kinematics)، نظام حركة المجموعات، دعم لحركة الوجوه التحولية وإمكانية إنشاءها وتصديرها في Maya أو Max.
- النصوص البرمجية: إمكانية كتابة النصوص البرمجية باستخدام لغة UnrealScript وهي لغة عالية المستوى مرنة وبسيطة، وإمكانية كتابة النصوص البرمجية بشكل مرئي باستخدام Unreal Kismet.
- الفيزياء: يستخدم Unreal محرك الفيزياء PhysX من NVIDIA مع دعم لفيزياء العربات (Vehicle Physics)، البيئات القابلة للتدمير، نظام لمحاكاة الحشود (Crowd System).
- الإضاءة والظلال: دعم لجميع تقنيات الإضاءة الحديثة (مثل Ambient Occlusion)، نظام Unreal Lightmass لإنشاء الإضاءة المحسوبة مسبقاً (باستخدام Global Illumination)، دعم للظلال في الزمن الحقيقي إضافة لتنعيمها.
- المشاهد السينمائية: يمكن استخدام أداة Unreal Matinee لإنشاء المقاطع السينمائية بتحكم كامل بالكاميرات والمؤثرات الصورية.
- الشبكات: نظام ألعاب شبكات عالي المستوى مع دعم عدد لاعبين يصل 64 واللعب عن طريق الإنترنت أو الشبكة المحلية.
- المظلّلات: أداة تصميم مظلّلات مرئي مشابهه للأدوات الموجودة في برنامجي XSI و Maya موجهة للفنانين.
- الصوت: دعم الأصوات ثلاثية الأبعاد، يستخدم Unreal مكتبة Ogg Vorbis لضغط الملفات، ويأتي مجهز بمحرّر أصوات.
- الأنظمة الجزيئية: محرّر الأنظمة الجزيئية Unreal Cascade لإنشاء المؤثرات.
- الذكاء الاصطناعي: نظامان لإنشاء المسارات في العالم ثلاثي الأبعاد مع خوارزمية خاصة لإيجاد المسار.
- الفيديو: يستخدم Unreal أداة Bink Video لترميز الفيديو.
- النباتات: محرّك SpeedTree الكامل متوفر مع UDK (برنامجي SpeedTree Modeler و SpeedTree Compiler المستقلين عن المحرّر)، يستطيع المحرّك إنشاء الأشجار والأعشاب بكافة أشكالها وأنواعها وتحريكها بشكل صحيح.
- حركة الوجوه: نظام FaceFX مضمّن كجزء من UDK، يستطيع تحريك وجوه الشخصيات إستناداً إلى الملفات الصوتية للكلام.
روابط مهمة