رد: صناعة الألعاب الدولية - 3D gamestudio A7
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته.
حصل لي مشكل أثناء نقل الصور إلى موقعي الخاص بذلك.
وفي انتظار إصلاح المشكل أو أجد مكانا أضع فيه الصور لتدعيم درسا جديدا ثم أنقل الدرس.
موقع المنتدى لا يسمح بإدراج الصور إلا من خلال موقع أو رابط.
هل أنا على خطإ ؟ الله أعلم.
والسلام عليكم ورحمة الله وبركاته.
صناعة الألعاب الدولية - 3D gamestudio A7 - الدرس رقم 1 من C-Script
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته.
قبل الدخول في فهم أكواد C-Script، سنصمم أبسط لعبة.
صمموا أي غرفة في WED واعطوها اسم، مثلا : chambre، ثم ترجموا هذا الملف.
مع العلم أن ملف chambre كان له امتداد wmp أي chambre.wmp. وبعد الترجمة أصبح اسمه chambre.wmb ، فقط ثم عودوا إلى SED
واكتبوا الأسطر التالية الموجودة على الصورة داخل المربع الأحمر.
http://www.ahlallouch.fr.tc/scripts1/image01.jpg
ومن الآن فصاعدا، كلما تعذر كتابة الكود، لتداخل الكلمات والرموز، سأضع مكانه صورة عوض الكتابة.
أنظروا إلى الأسفل كيف ظهرت الكتابة، والفرق بينها وبين الصورة. وهذا لن يساعدنا في شيئ.
string niveau_wmb = <chambre.wmb>;
function main()
{
level_load(niveau_wmb);
}
كما تلاحظون الكلمات والرموز مبعثرة، وفرق بينها وبين كلمات الصورة
نقطة أخرى مهمة دفعتني لعرض صورة عوض الكتابة، هو تعثر متصفح الأنترنيت لبعض القراء في عرض الصفحات بشكل جيد.
طيب. ما الذي فعلناه في هذه السطور ؟
قبل ذلك، 3DGS، عندما يقرأ الملف الذي سيبدأ به اللعبة، فإنه يبدأ دائما بالسطر الأول، يقرأه ثم يذهب للسطر التالي، تماما كما نفعل نحن مع الكتاب، من البداية إلى النهاية.
وطبعا قد نصادف في الطريق أشياء سنحتاجها في وقت لاحق. كذلك ملفات C-Script، عندما يبدأ 3DGS في القراءة سيصادف أشياء في البداية، سيحتفض بها في ذاكرته
كما نفعل نحن مع الكتاب، ثم يتمم قراءته إلى النهاية.
السطور، عبارة عن أوامر وإرشادات بلغة C-Script.
هي لغة كأي لغة في الدنيا، هناك من يفهمها وهناك من لا يفهمها. لغة C-Script يفهمها 3DGS.
وما دمنا نحتاج لتصميم لعبة واخترنا السيد 3DGS لهذه الصناعة. وكي نطلب منه ذلك علينا الحوار معه بلغته، ولغته هي C-Script
السطر الأول، هو التعريف باسم ملف المكان الذي صممناه في WED. وضعنا هذا الإسم في متغيرة سميناها niveau_wmb.
ما معنى متعيرة ؟
المتغيرة هي مكان يستأجره برنامج 3DGS داخل ذاكرة الحاسوب، ليضع فيه لوازمه أثناء تشغيله اللعبة.
وضعنا المتغيرة niveau_wmb في الذاكرة ثم وضعنا فيه اسم الشيئ الذي سنحتاجه في لعبتنا. ونحن سنحتاج ما صممناه في WED.
سنضع فيه اسم الملف chambre.wmb
لكن ما معنى string ؟
هي كلمة للبرمجة خاصة بـ C-Script. دورها أنها تحدد نوعية المتغيرة niveau_wmb، هل هي أرقام أو نصوص أو ماذا ؟
بالنسبة لنا، هذه المتغيرة وضعنا فيها نصا صغيرا ألا وهو chambre.wmb، وبالتالي فالمتغيرة niveau_wmb هي من نوع النصوص.
السطر الأول في الصورة إذا يطلب من 3DGS، أن يستأجر لنا مكانا في ذاكرة الحاسوب باسم niveau_wmb، وأن تكون من نوع النصوص string،
وأن نضع في هذه المتعيرة النص chambre.wmb الذي هو البناء الذي بنيناه في WED، لكي نتصرف في هذا البناء كيفما نريد.
طبعا نستعمل علامة - تساوي - = - كي يفهم 3DGS أن المتغيرة niveau_wmb تساوي الملف chambre.wmb . هذا الإسم وضعناه بين القوسين <>.
هي لغته، هكذا يفهمها، علينا احترام ذلك.
والنقطة الثانية التي يجب أن نحترمها هي إنهاء كل أمر بعلامة - ; - هذه العلامة تخبر 3DGS أن الأمر الحالي انتهى. وبإمكاننا وضع عدة أوامر في سطر واحد مفصولة
بهذه العلامة - ; - ، لكننا نفضل، وحتى لا نتوه، أن نضع كل أمر في سطر مستقل، إلا للضرورة، وسنشير إلى ذلك إذا صادفنا حالة خاصة.
وقد نضع بديلا لهذه العلامة - ; - في ظروف أخرى.
تذكروا دائما أن 3DGS يحتاج لمكان يستأجره ونوعية المكان المستأجر، وما الذي سيضعه فيه.
والسطر الثاني في ملفنا يبدأ بكلمة function.
مفهوم الكلمة واضح وضوح الشمس. function تعني - مهمة -
هذه الكلمة خاصة بـ C-Script. عندما يصادفها، يفهم أن هناك مهمة يجب القيام بها. طبعا C-Script كأي لغة يحب النظام. لذلك يسأل ما اسم هذه المهمة أولا،
ثم ماهي أوامر هذه المهمة.
نقول كلمة أوامر أحيانا عندما نقصد الشكل العام للملف، ثم نخصصها أحيانا أخرى لنفهم نوعية الأوامر.
function مثلا عبارة عن أمر كبير يضم أمرا أو أوامر صغيرة، تنفذ كاملة في تلك المهمة أو function.
لكن C-Script يحتفظ ببعض الكلمات الخاصة به إضافة إلى كلمات البرمجة.
مثلا كلمات string - function خاصة بالبرمجة.
كلمة niveau_wmb هو اسم لمتعيرة، نحن اخترناه كما نسمي أطفالنا.
لكن، هناك كلمات للتسمية سبق وأن اختارها C-Script لأغراضه الخاصة. مثلا اسم المهمة التي هي موجودة أمام function أي main، كلمة أو تسمية
اختارها C-Script لنغسه. لذا علينا الاحتياط من هذا النوع من التسمية لكي لا يتوه 3DGS وينفذ أشياء لم نطلبها منه.
ملاحظة : أضفنا كلمة wmb إلى المتعيرة niveau وربطناهما بـ - _ - ، لماذا ؟ أحيانا عندما تكثر المتعيرات، نحتاج إلى علامات ترشدنا لتساعدنا على فهم المتغيرات
وفهم محتوى المتغيرات، لذلك، هو مجرد اختيار، أفضل أن أضيف علامة، سواء 3 أحرف أو أكثر أو أقل إلى نوعية المخزون داخل المتعيرة. مثلا كتبت niveau أي مستوى،
وأضفت إليها wmb التي هي امتداد للملف الذي طلبته. لكم الاختيار في التسمية، فقط ساعدوا أنفسكم على ابتكار أسماء تلهم من قراءتها إلى محتواها.
وكما سميت niveau_mwb بإمكانكم تسمية haboula أو mountada، ولا فرق بين الحرف الكبير أو الصغير في C-Script. نكتب haboula أو HaBouLa، لايهم.
3DGS له طبع خاص عندما يقرأ ملف الانطلاقة. تابعوا معي جيدا. عندما بيدأ بالسطرالأول، قلنا يتجه للسطر الثاني. لكن دماغه الصلب يصر للبحث عن ماذا ؟ عن function main
ما الذي أصابه ؟ ولم هذا الإصرار ؟ بكل بساطة، يقرأ الملف، لكنه يحتاج إلى مكان معين ينطلق فيه التنفيذ. طيب، قلنا له إن الملف chambre.wmb يوجد في
المتغيرة niveau_wmb من نوع النصوص. لكن ماذا سيفعل ما هي المهمة الأولى التي سيبدأ بها ؟
إنها مهمة function main الخاصة به، حيث سيجد فيها الأوامر التي يجب القيام بها للتنفيذ.
إذا في جل الأحوال يقرأ الملف، ثم يبحث عن مكان وجود هذه المهمة الخاصة التي هي function main، أي المهمة الرئيسية.
لكن، وكأي مهمة لها بداية ونهاية خاصة بها. فعندما نبدأ هذه المهمة التي بها أوامر صغيرة، علينا أن نجعل لها حدودا، لكي لا نخرج إلى أوامر أخرى لا علاقة لها بالمهمة
الحالية. لذلك نضع حدودا يفهمها 3DGS، وبها يعرف متى تبدأ المهمة ومتى تنتهي. إنها علامات - {} - فالمفتوحة إلى اليمين، تخبر 3DGS أن الأوامر القادمة، خاصة بالمهمة
الحالية التي هي مهمة main . على 3DGS أن ينفذ كل الأوامر التالية حتى يصل إلى العلامة المفتوحة إلى اليسار من العلامتين التاليتين - {} - . كتبتهما معا حتى لا يبعثر
متصفح الأنترنيت الرموز المعروضة. تذكروا فقط أن المفتوحة إلى اليمين للبداية، والمفتوحة إلى اليسار للنهاية.
وقبل أن نتعرف على ما بين العلامتين - {} - علينا أن نتعرف على سر وجود القوسين أمام كلمة main - () -.
عندما نذهب مثلا إلى السوق، فإننا نحمل معنا كيسا، لنضع فيه ما قد نشتريه. وقد نعود دون شراء شيئ. نفس الشيئ تقريبا يحصل لنا مع الأقواس. عندما نأتي أو ننادي
على مهمة ما، نحتاج أحيانا إلى أشياء أو مسميات نضع فيها ما قد نصطاده أو نحصل عليه داخل المهمة المطلوبة.
في حالنا الحالي، لا نحتاج لشيئ. لذا سنتسرب داخل المهمة وبعد القوس المفتوح يمينا، لننظر ما هناك من أوامر.
وجدنا أولا كلمة level_load، ماذا تعني ؟ level أي مستوى، load أي تحميل. أمر من أوامر C-Script. بإمكانهم أن يقولوا شيئ آخر، ولكن يستحسن دائما أن ترمز الكلمة
إلى شيئ واضح. level_load معناه تحميل المستوى الذي بين قوسين، أي niveau_wmb، الذي يضم الملف chambre.wmb
إذا حمل level_load البناء الذي سميناه chambre.wmb الموجود في المتعيرة niveau_wmb.
بإمكاننا أيضا أن نكتب بين القوسين اسم الملف مباشرة (<chambre.wmb>) عوض (niveau_wmb). كما تقول لصديقك : خذ هذا الظرف أو، خذ الـ 100 درهم.
الفرق أنك تستطيع أن تضع شيئ آخر في الظرف كرسالة، ويبقى الظرف هو الظرف، ولكن لا تستطيع أن تعطيه رسالة مباشرة وتقول خذ 100 درهم. سنتعرف
على هذه الأمور في ظروف أخرى.
المهم طلبنا بواسطة الأكواد أن نحمل البناء قبل كل شيئ، ثم نظيف علامة نهاية الأمر - ; - ونغلق بالقوس المفتوح يسارا، وانتهى.
هذا كل ما في الملف.
ألا تلاحظون دور الأقواس أمام كلمة level_load ؟ نعم كلمة level_load هي مهمة أيضا أي function، ناديناها باسمها level_load ووضعنا كيسا اسمه niveau_wmb بين
القوسين. فعند الدخول عند 3DGS العنيد داخل مقراته السرية سنجد شيئ يشبه ()function level_load ، وسيأخذ منا الكيس حيث سيجد بداخله chambre.wmb
فيظهره لنا على الشاشة.
لتشغيل الملف، نصغط بالفأرة على المثلث الأسود.
هناك بعض النسخ في 3DGS لا تشغل الملف مباشرة إلا بعد التعديلات في اختيارات SED
اختر من القائمة الأفقية Options / Preferences لتظهر الصورة التالية :
http://www.ahlallouch.fr.tc/scripts1/image02.jpg
بعد ذلك اختر قسم Engine ثم حدد مكان الملف الذي كتبته، ويستحسن أن يكون في دليل repscript وهو من اختياري، داخل دليل GStudio7، لكي نسير مع بعض في
نفس الأماكن، وذلك بالنقر على النقط الثلاث على يمين الخانة الموجودة تحت التسمية : Main Script to Run / Publish
الصورة التالية توضح اختيار الملف script_01.wdl
http://www.ahlallouch.fr.tc/scripts1/image03.jpg
الصورة التالية توضح وجودنا داخل الغرفة
http://www.ahlallouch.fr.tc/scripts1/image04.jpg
والأخيرة توضح لنا الغرفة البعيدة، كيف ذلك ؟
http://www.ahlallouch.fr.tc/scripts1/image05.jpg
يجب استعمال الصفر - 0 - الموجود على لوحة المفاتيح وذلك حسب لوحتكم وبلدكم، سواء بـ cap lock أو أي شيئ آخر حتى يسمح لكم 3DGS بالتجول داخل وخارج الغرفة
بمفاتيح التوجه الأربعة المعروفة.
إلى حين درس جديد، دمتم في رعاية الله.
والسلام عليكم ورحمة الله وبركاته.
رد: صناعة الألعاب الدولية - 3D gamestudio A7
مشكور على درس يا اخي
بنسبة للقوصين امام الدالة الرايسية هل لتدوين ما تتضمنه الدالة داخل قوصين؟؟
ارجو ان تضع الابواب قبل درس القادم
وشكرا مرة اخرى
رد: صناعة الألعاب الدولية - 3D gamestudio A7
بسك الله الرحمن الرحيم
أخي الكريم لم أفهم السؤال جيدا
لكن انظر الترتيب التالي
function main
() - القوسين أمام main دون أي شيئ آخر - ثم تفتح النوع الآخر من القوس - المعقوفة مفتوحة على اليمين
}
هنا تضع جميع الأوامر المتعلقة بالدالة function main
ثم بعد الانتهاء تغلق بالمعقوفة المفتوحة إلى اليسار
{
main هي دالة أو مهمة خاصة ب 3DGS
وأفضل اجتناب الكلمات الرياضية لتبسيط الفهم
أظن قد أصبت إن شاء الله.
()function main
}
command1
command2
command3
{
والسلام عليكم
رد: صناعة الألعاب الدولية - 3D gamestudio A7
السلام عليكم و رحمة الله و بركاته ..
كل عام و انتم بخير ، وبعد
بعد ما رأيت ان الاخ ahlallouch قرر ان يبدأ دروسه في c_sript قررت الانضمام الى المنتدى ، لاني بصراحة لم تعجبني فكرة البرمجة الجاهزة و تطبيقها الى entity ، اشكرك يا اخي على الجهد الذي بذلته و اتمنى ان نتواصل و تفيدنا بخبرتك ، وأن لا تتأخر علينا بدروسك ..
اتمنى ان تكون الدروس القادمه تهتم بكتابة السكربتات الخاصة بحركة اللاعب عن طريق التحريك بالعظام bone و تحركها و طريقة تطبيق الانيميشن لها مثل تطبيق حركة المشي و الركض و القفز و غيرها من الحركات ....
متى ستكتب لنا ان شاء الله الدرس التالي ؟
مع تحياتي لك يا اخي الكريم و زادك الله بسطة في العلم .
رد: صناعة الألعاب الدولية - 3D gamestudio A7
بسم الله الرحمن الرحيم
السلام على أخي محمد ولد أحمد
السلام على جميع الإخوة الكرام
والله يا أخي محمد، وردا على تساؤلك، ليس لي وقت وفير، فطول النهار من أجل البحث عن عيشي وعيش أبنائي وبالليل التعب وعمل آخر جد مهم أريد به وجه الله، وهذا يترك لي وقتا قصيرا، أبذل فيه ما استطعت لأقدم لكم الدروس، فهي ليست سهلة التحظير وكثير من الإخوة يعلمون ذلك، خصوصا عندما ينضاف هم المسؤولية لإيصال الرسالة بشكل جيد.
لإلى ذلك الحين رعاكم الله جميعا.
والسلام عليكم ورحمة الله وبركاته.
رد: صناعة الألعاب الدولية - 3D gamestudio A7
الى الاخ ahlallouch عندي سؤال ارجو الاجابة عليه اذا كنت تعرف الاجابه طبعا .
عندما احول مرحلة مثلا من برنامج المايا بصيغة fbx ثم ادخلها الى med و احفطها بصيغة موديل ، ثم ادخلها مرة اخرى الى wed ، يكون هناك خلل ... يعني عندما اضع الشخصية التي لدي و اعمل للمرحلة run لا يتأثر اللاعب الذي لدي بالارضية التي رسمتها ، يعني يسقط و يخترق الارض . هل توجد هناك طريقة ما لرسم المراحل في برنامج المايا و تصديرها دون خلل؟
رد: صناعة الألعاب الدولية - 3D gamestudio A7
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
ليس لي دراية بعالم Maya
وأنصحك بمعاينة هذا الموقع الذي به برنامج تجريبي يصلح حتى لحمل المستوى بالكامل.
http://www.maya-to-3dgs.com/main.htm
والسلام عليكم ورحمة الله وبركاته.
رد: صناعة الألعاب الدولية - 3D gamestudio A7
بسم الله الرحمان الرحيم
شكرا لك اخي على الموضوع الرائع
هل يمكن صناعة المقر كله مثلا بالمايا وتصديره الى 3DGS
:biggthump
رد: صناعة الألعاب الدولية - 3D gamestudio A7
بسم الله الرحمن الرحيم
السلام عليكم
هناك برنامج يفعل ذلك، وهو تصريح الموقع الرسمي
وأنقل لك بالحرف ما كتبه الموقع بخصوص البرنامج
MayaTo3DGS is a MEL program of MAYA for directly exporting Gamestudio WMP levels. The tool exports blocks with their textures, sprites and terrains, lights, paths, and model positions. In MAYA, you can add actions, skills, and flags to entities, and adjust terrain by using brushes or height images. MayaTo3DGS can also export camera animations to a script file.
والسلام عليكم ورحمة الله وبركاته
رد: صناعة الألعاب الدولية - 3D gamestudio A7
maya to 3DGS هو عبارة عن plugin ، ولكن المشكلة هي انك لن تجده مجاني .
و بصراحة رسم المرحلة بإستخدام 3دي جيم ستدوديو مريض جدا بعكس استخدام المايا ، الله يعيننا في هذه المشكلة .
طلب آخر (رجاءً)، اذا كان احدكم يعرف موقع او رابط يوجد فيه درس لتعليم كتابة الاكواد الخاصة بتحريك شخصية اللعبة ، فأنا متلهف جدا جدا لتعلم برمجة الالعاب ، لانني متوقع (ان شاء الله ) اني اكون احسن من مخرج لعبة ميتال جير و احسن من مخرج ريزيدنت ايفل ( اضحك معاكم طبعا) بس اتمنى ان احنا نكون مثلهم مبدعين ، اوكي ، منتطر الرد اذا كنانت عندكم دروس شكرا ؟
رد: صناعة الألعاب الدولية - 3D gamestudio A7
اقتباس:
نوع الوسام: الإبداع في تطوير وصناعة الألعاب
الأعضاء المميزين الحاصلين على وسام الإبداع في تطوير الألعاب
أخي ahlallouch
ألف مبرووك على مجهودك في هذا الموضوع والخدمة التي تقدمها بستمرار لمنتدى صناعة الالعاب وأعضائه
واتمنى الاستمرار للأفضل والتقدم.
رد: صناعة الألعاب الدولية - 3D gamestudio A7
بسم الله الرحمن الرحيم
سلام الله عليكم جميعا.
لكم جزيل الشكر لتشجيعكم لأعمالي المتواضعة راجيا من الله أن تنال رضاكم، وأن يساعدني لتقديم أحسن الإفادة لكل الإخوة.
راجيا من الله التوفيق.
وتحية طيبة من قلب صادق لكل المسؤولين في موقع المنتدى.
رعاكم الله وحفظكم من كل كرب ومكروه.
والسلام عليكم ورحمة الله وبركاته.
رد: صناعة الألعاب الدولية - 3D gamestudio A7
السلام عليكم 1000 مبروك على وسام
حبيت اقترح عليك اقراح كان في بال مند شهر وترددت في طرحه
هناك كتابان من تاليف الاخ ديمو1 للغة c-script
لو تبدا بدرس لكيفية تغير على اكواد الجاهزة وشرحها متل كود الاعب و صيارة..... او كيفية تصميم كود خاص باسلحة
ولاشارة الى احد دروس ديمو1 ادى كنا سنحتاجها خلال درس
-ارجو رايك في هدى الموضوع ادى كنت موافق فيمكن ان اضع روابط الكتب واد كنت تريد اكمال كما بدات فلاباس.
من صعب تغيير طريق وقد وضعت مخطط له المهم ارجو ان تفكر في الامر وان واتق من ان قرارك هو اصائب
ارجو ان لا يكون في هدى رد ازعاج لك
رد: صناعة الألعاب الدولية - 3D gamestudio A7