الشبكة العربية لمطوري الألعاب

خبير  أحمد عزالدين مشاركة 1

السلام عليكم

يبدو ان التفكير في كيفية تنفيذ فكرة المشاعل تبع القصة الجديدة يحتاج حقا لطريقة تنفيذه كمؤثر رسومي برمجيا

اعتقد من وجهة نظري (مع العلم اني لم اجرب مثل تلك المؤثرات بعد) انه يمكن عملها بعدة طريق منها:-

1- استخدام كل مشعل كـ positional light type له مكان محدد (يمكن تغييره) ويتدرج الضوء الخارج منه ويقل حسب المسافة يعني مثلا كل ضوء او مشعل عبارة عن ضوء ممثل كلمبة ويمكن بالطبع اضافة هذه الامكانية لبنائها في محرر المراحل ليقوم مصممي المراحل باضافة الاضواء كما يشاؤون
ويمكننا عندها تفعيل عدة اضواء حسب مكان اللاعب في المرحلة الحالية وذلك باستخدام مفهوم الـ light group
>> هذه الامكانية تتيح لنا بناء عدد كبير جدا جدا من الاضواء في المرحلة مع تفعيل عدد محدد حسب ما يتم السماح به في المشهد الواحد وحسب امكانيات ال device driver


2- يمكننا ايضا كحل بديل تنفيذ مثل تلك المؤثرات كـ particle system يتيح لنا عمل مشاعل اكثر واقعية مثل النيران واعتقد هناك مثال مشابه لتلك التقنية
في امثلة ال DX SDK واعتقد اسمه lens flare ويستخدم ال point sprite

3- اعتقد ايضا انه يمكن عمل نفس المؤثر باستخدام animated texture

4- اعتقد ايضا انه يمكن عمل ذلك المؤثر بالاقتباس من طريقة عمل وتحريك شخصية اللعبة حين تقوم بالقفز مثلا او بالجري حيث يكون عندنا
 صورة مخزن فيها عدد من الاطارات المتتالية ونقوم بتحميل هذه ال frames ثم نقوم بعمل render لها بسرعة بالتتالي مما ينتج لنا محاكاة
 لصورة تتحرك - بالمثل يمكن عمل عدة اطارات تمثل نيران مشعل ونقوم بتخزينها بصورة متتالية وتحميلها واستخدامها

هل يمكن تطبيق مثل هذه المؤثرات باستخدام الشيدر
نرجو التوضيح؟

لو كان هناك طرق اخري يمكن عمل بها هذا المؤثر:
نرجو سماعها
ونرجوا ايضا التعليق علي ما ذكر

والسلام عليكم

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

محترف مشرف عبد اللطيف حاجي علي مشاركة 2

وفي 19 تموز 2008 03:41 م، أعرب ahmed ezz عن رأيه بالموقف كالآتي:

4- اعتقد ايضا انه يمكن عمل ذلك المؤثر بالاقتباس من طريقة عمل وتحريك شخصية اللعبة حين تقوم بالقفز مثلا او بالجري حيث يكون عندنا
 صورة مخزن فيها عدد من الاطارات المتتالية ونقوم بتحميل هذه ال frames ثم نقوم بعمل render لها بسرعة بالتتالي مما ينتج لنا محاكاة
 لصورة تتحرك - بالمثل يمكن عمل عدة اطارات تمثل نيران مشعل ونقوم بتخزينها بصورة متتالية وتحميلها واستخدامها

ما الفرق بين هذه الطريقة و طريقة الـ animated texture (باستثناء أن الأخيرة تستخدم أحد ميزات كرت الشاشة)؟

عبد اللطيف حاجي علي
مبرمج
In|Framez

خبير  أحمد عزالدين مشاركة 3

السلام عليكم

حسب ما اعرف (ارجو التعليق او التصحيح):
- طريقة ال animated texture حسب علمي تقوم بتغيير احداثيات ال texture UV mapping مع الزمن لاظهار محاكاة كأن الصورة تتحرك علي المضلع
- اما طريقة التحريك الاخري مثل المستخدمة في اللعبة فانها تعتمد حسب فهمي علي انه مثلا يتم تخزين عدة اطارات متتالية داخل ملف يمثل حركة
   اللاعب اثناء الجري مثلا - ثم نقوم نحل بتحميل هذه الاطارات والتي تمثل حركة الجري بالنسبة للاعب لتكون داخل اللعبة وعندما نريد تحريك اللاعب
   فهي ليست صورة واحدة نقوم بمحاكاة تحريكها مثل الطريقة الاولي وانما هنا نقوم برسم حالة اللاعب اثناء الجري من قائمة اطارات حركة الجري
   بادئين بأول اطار حركة للجري وفي اللحظة التالية نقوم برسم الاطار الثاني وفي اللحظة التي بعدها وهكذا حتي ننتهي من سلسلة اطارات الحركة
    المخزنة والتي تمثل حركة الجري لنعود من بداية السلسلة مرة اخري وبالتالي نكرر حركة الجري من بدايتها

انظر الصورة في المرفقات لتفهم المقصود
(عذرا الصورة من نوع png ولم يتم اضافتها كصورة لذلك اضطررت لاضافتها كمرفق)

والسلام عليكم

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 4

في 19 يوليو 2008 08:41 ص، عقد ahmed ezz حاجبيه بتفكير وقال:

1- استخدام كل مشعل كـ positional light type له مكان محدد (يمكن تغييره) ويتدرج الضوء الخارج منه ويقل حسب المسافة يعني مثلا كل ضوء او مشعل عبارة عن ضوء ممثل كلمبة ويمكن بالطبع اضافة هذه الامكانية لبنائها في محرر المراحل ليقوم مصممي المراحل باضافة الاضواء كما يشاؤون
ويمكننا عندها تفعيل عدة اضواء حسب مكان اللاعب في المرحلة الحالية وذلك باستخدام مفهوم الـ light group
>> هذه الامكانية تتيح لنا بناء عدد كبير جدا جدا من الاضواء في المرحلة مع تفعيل عدد محدد حسب ما يتم السماح به في المشهد الواحد وحسب امكانيات ال device driver

كلام جميل. لكن لعبة وادي الملوك لعبة 2D وليست مبنية من نقط بنواظم، وإنما فقط صور 2D بسيطة 🙁 . فكيف سنضيئها؟ 😧
 


وفي 19 يوليو 2008 08:41 ص، قال ahmed ezz متحمساً:

- يمكننا ايضا كحل بديل تنفيذ مثل تلك المؤثرات كـ particle system يتيح لنا عمل مشاعل اكثر واقعية مثل النيران واعتقد هناك مثال مشابه لتلك التقنية
في امثلة ال DX SDK واعتقد اسمه lens flare ويستخدم ال point sprite

حل جيد، لكن هذا فقط يساعد في تأثير النيران المتطايرة (إن كان فهمي صحيحاً لما تعنيه)، ولكن يجب أن نجد طريقة أولاً لجعل الحجرة مظلمة تماماً، ومضيئة فقط في المنطقة المحيطة بالمشعل، وهذه المنطقة تتحرك طبعاً مع تحرك اللاعب الحامل للمشعل... 😒
 

وفي 19 يوليو 2008 08:41 ص، ظهر شبح ابتسامة على وجه ahmed ezz وهو يقول:

- اعتقد ايضا انه يمكن عمل نفس المؤثر باستخدام animated texture

4- اعتقد ايضا انه يمكن عمل ذلك المؤثر بالاقتباس من طريقة عمل وتحريك شخصية اللعبة حين تقوم بالقفز مثلا او بالجري حيث يكون عندنا
 صورة مخزن فيها عدد من الاطارات المتتالية ونقوم بتحميل هذه ال frames ثم نقوم بعمل render لها بسرعة بالتتالي مما ينتج لنا محاكاة
 لصورة تتحرك - بالمثل يمكن عمل عدة اطارات تمثل نيران مشعل ونقوم بتخزينها بصورة متتالية وتحميلها واستخدامها

نعم. بالنسبة للمشعل نفسه، فأنا أوافقك بأنه يجب أن نعتمد نفس أسلوب الرسم المتبع في بقية اللعبة (لقطات متتابعة للحركة).يمكنك رؤية الصور المستخدمة لتحريك الشخصية في اللعبة ضمن برنامج PIX، وستجد أن اللقطات موضوعة بشكل متجاور ويتم انتقاء اللقطة الحالية باستخدام الـ UV المناسب:
 


وهكذا يمكننا أيضاً تنفيذ المشعل مع حركة نيران طفيفة...
 
فلنحاول التفكير بحل لإظلام الحجرة باستثناء الدائرة المحيطة بالمشاعل!  😒

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  أحمد صقر مشاركة 5

اه ... انا ضعيف جدا فى البرمجة 😭 .. عشان كده مقدرش أفيدكم بس قلت أطل عالشباب ... بخصوص المشكلة ... هو ينفع تعملوا حاجة زى mask أو زى الـ Alpha map ???  يمكن تحل المشكله ... انا بستخدم الطريقة دى فى عمل الـ prototypes عالفلاش و الماكس 😒

أحمد صقر
مطور ألعاب مستقل
http://a-saker.blogspot.com

خبير  أحمد عزالدين مشاركة 6

السلام عليكم

اه ان شاء الله ينفع نعمل حاجة زي ال alpha map او ال mask
واعتقد انها فعلا فكرة كويسة انه ممكن نحاكي عملية الظلام الموجودة في بعض مناطق الحجرة بتطبيق اكساء عليها عبارة عن alpha map
بحيث انه يعمل darken مع بيكسلات الحجرة في المنطقة المراد اظلامها وبالتالي تظهر كأنها مظلمة

شكرا علي الفكرة اخي احمد صقر
اعتقد انه فكرة جيدة

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 7

حقاً فكرة ممتازة، وهي تعمل بنجاح لمشعل واحد، لكن كيف نستطيع تعميم هذا التأثير لأكثر من مشعل؟ 😨  لأننا لو قمنا بتطبيق الـ mask الأول فإنه سيتسبب بإظلام بقية الحجرة، ولن نستطيع إنارتها ثانية 😳 ...
 
فكر فكر فكر 😒 😒 😒

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عزالدين مشاركة 8

السلام عليكم

اعتقد انه يمكننا عمل flag حيث نقوم برسم الحجرة اولا بتطبيق ال alpha map وبالتالي تظهر الحجرة مظلمة في البداية
وعندما يتحرك اللاعب ومع المشعل فان الاضاءة ستكون مؤقتة الي ان يقوم اللاعب بتفعيل المفتاح الذي ينير الحجرة
وعندها نضع ال flag ثم نقوم برسم الحجرة مع مراعاة قيمة ال flag الجديدة وبالتالي نرسم الحجرة بدون تطبيق ال alpha map عليها
فتصبح مضاءة

ارجو ان يكون هذا ما تقصده
😄

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 9

كلا، ليس هذا ما قصدته... 😄
 
تخيل معي الحجرة، وبها ثلاث مشاعل مثبتة على الجدار، وكل منها يضيء المكان حوله ضمن نطاق دائرة . كيف نستطيع تنفيذ هذا التأثير؟ 😒 إن حيلة الـ mask التي طرحها أحمد صقر جيدة، لكنها تنفع لمشعل واحد فقط 😳 ... هل تخيلتم معي الموقف؟

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  أحمد صقر مشاركة 10

وفي 24 يوليو 2008 12:13 ص، أعرب وسام البهنسي عن رأيه بالموقف كالآتي:

كلا، ليس هذا ما قصدته... 😄
 
تخيل معي الحجرة، وبها ثلاث مشاعل مثبتة على الجدار، وكل منها يضيء المكان حوله ضمن نطاق دائرة . كيف نستطيع تنفيذ هذا التأثير؟ 😒 إن حيلة الـ mask التي طرحها أحمد صقر جيدة، لكنها تنفع لمشعل واحد فقط 😳 ... هل تخيلتم معي الموقف؟

😄 انا عارف انى زودتها ... بس هو مينفعش تعملوا طبقة سودا مثلا و تحتها طبقة المرحلة و بكده تقدروا تطبقوا أكتر من ماسك على الطبقة السودا 😒 (انا حاسس انى بلبخ 😠 .. بس ممكن ؟؟)

أحمد صقر
مطور ألعاب مستقل
http://a-saker.blogspot.com