Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

طرق صناعة الالعاب الجماعية والاون لاين (Multi-Player / MMO) المفاهيم

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • طرق صناعة الالعاب الجماعية والاون لاين (Multi-Player / MMO) المفاهيم

    بسم الله الرحمن الرحيم


    السلام عليكم ورحمة الله

    هذا الموضوع موجة لكل من يريد صناعة العاب جماعية اين كانت Multi-Player او MMO

    حسنا هناك بعض الاشياء التى يجب ان تكون على دراية بها وفى اولويتها معرفتك للغة برمجة بشكل جيد مثل C# / VB.Net / C++ / Java
    وان تكون جيد فى استخدام محرك العاب مثل Unity3D / او اى محرك العاب جاهز يدعم لغة برمجة من المشار اليها سابقا / او التعامل مع مكتبات مثل XNA او DirectX

    ويستحسن ان تكون استخدمت مكتبة ال Sockets فى اى لغة لا يهم

    سأدخل فى صلب الموضوع

    حسنا اولا : كلنا يعلم انة هناك العاب FPS / TPS / RTS وهى العاب من المفترض انها العاب فردية ومقامة على قصة معينة ولكننا نقدر على اللعب عبر الانترنت او من خلال الشبكة المحلية انت والاصدقاء من خلال خيار مضاف بها يمكنك من ذالك عن طريق قيام احد اللاعبين بعمل مضيف (Host) كخيار داخل اللعبة وباقى اللاعبين يدخلون على هذا المضيف كضيف (Guest) حسنا هذا النوع الاول ويندرج تحتة اى نوع من الالعاب الفردية فى الاساس وبها خيار اللعب الجماعى

    ثانيا : النوع الثانى وهو الالعاب الاون لاين MMO ايا كانت MMORPG او MMORTS اى يعنى الالعاب الاستراتيجية الاجتماعية فقط ليس لها لعب فردى وهو بدأ بالانتشار حديثا

    حسنا سأشرح النوع الاول وهو اسهل من النوع الثانى

    حسنا لنفترض اننا لدينا لعبة ونريد ان نجعل بها اللعب الجماعى لنجعلة الان لعب جماعى داخل الشبكة المحلية
    اولا بالنسبة للالعاب ال FPS / TPS / RTS انت ستقوم بعمل الضيف (Client) والمضيف (Server) فى تطبيق واحد وهو لعبتك فاللعبة هتعتبر مجزأة الى جزئين

    بالنسبة لجزء للسرفر : والى هو عبارة عن انك تعمل جوا اللعبة Host بمجرد ضغطة الزر هذة تقم اللعبة على عمل سرفر محلى منشأ على الاى بى المحلى للجهاز المقام علية السرفر مثل هذا 192.168.1.2 وعلى اى بورت انت بتختار ان السرفر يتعمل علية - عادة انت بردو موش بتختار بيكون فى نظام عشوائى لعمل البورتات -

    فمثلا فى اليونتى انت عشان تعمل سرفر بتكتب الكود دة
    كود:
    using UnityEngine;
    using System.Collections;
    
    public class example : MonoBehaviour 
    {
        void LaunchServer() 
        {
            Network.InitializeServer(32, 25000, false);
        }
    }
    هنا اليونتى موش مديك اختيار انك تعمل السرفر على IP محدد لان من الطبيعى ان السرفر وهو بيتعمل لما بتضفط على Host بيبحث عن رقم اى بى الجهاز الىمعمول علية ال Host دة ودة الطبيعى حيث ان موش كل الى بيلعبو الالعاب بيعرفة حتى يستخدمو خيارات اللعبة او موش مبرمجين - اى نعم اذا صنعت سرفرك بالدوت نت مثلا تستطيع ان تحدد اى بى معين ولكنى اتكلم عن شبكة محلية الان - انت فقط تحدد ما هو البورت لان ممكن تعمل اكثر من سرفر على اى بى واحد ولاكن لازم تكون البورتات مختلفة

    بالنسبة لجزء الكلينت : بضغطة الزر على Guest اولا لازم تصنع انت كود بنفسك بيبحث عن السرفرات المتاحة عبر الشبكة المحلية لانك فى الاساس موش عارف انهى اى بى او بورت اتعمل علية السرفر فانت هتعمل نظام يبحث عن عدد السرفرات المتاحة داخل الشبكة المحلية بالتالى هيبدء يعرض السرفرات المتاحة بدلالة الاى بى والبورت المقام عليهم السرفر

    حسنا لننتقل الى نطاق اوسع قليلا وهو ان تريد من هم خارج الشبكة المحلية ان يلعبو معك هنا سيختلف الامر قليلا

    اولا اذا لاحظنا ان فى جميع الالعاب فى اختيارين للعب الجماعى وليس اختيار واحد وهى Play Multi-Player OR Local والاخر Play Network

    الاول وهو Play Multi-Player ودة شرحنا الية عملة فوق ودة مينفعش تلعب من خلالو خارج الشبكة المحلية اما
    الثانى Play Network ينفع تلعب من خلالى خارج الشبكة المحلية ودة الية عملة تختلف عن السابق

    هنا ايضا فى زران Host و Guest او مايشبههم عامة هناك زر لعمل جيم وزر اخر للدخول على الجيم ولكن زر ال Host هنا لن يصنع سرفر هو سيدخل ككلينت ايضا حسنا لنقف هنا الان وننتقل الى نقطة اخرى ثم نرجع لها
    _________________هنا التعديل_________________
    سؤال : ما هى الاشياء التى احتاجها لكى انشر لعبتى خارج الشبكة المحلية ؟
    حسنا سنتدرج فى الشرح : نفترض انك ستقيم السرفر لديك اى بالضغط على زر ال Host فى الاختيار Play Network هنا انت لعمل السرفر ستحتاج لاى بى ليس محلى فستستخدم اى بى الراوتر لديك لتقيم علية السرفر بالاضافة لاى بورت انت تختارة .المشكلة هنا بعد ما انت صنعت السرفر كيف يفترض ان يدخل عليك باقى اللاعبين ك Guest هل سيبحث النظام فى كافة شبكة الانترنت على جيمباسم لعبتك مثلا - هذا جنون - (بالعلم انهم لا يعرفون اى بى والبورت المقام عليهم السرفر) هذة اول مشكلة حسنا هناك مشكلة اخرى وهى فى الالعاب الجماعية عند اللعب مع اصدقائك فى النت كافى عادة ما يكون الحد الاقصى لعدد اللاعبين هو 15 / 20 لاعب بكدا لا يكون التحميل على صاحب الجيم كبير حيث ان سرعة انتقال المعلومات داخل الشبكة المحلية تصل الى ما فوق ال 10 ميجا فى الثانية
    هنا تخيل ان ينتقل صاحب الجيم الى خارج الشبكة فى هذة الحالة تتحدد سرعة انتقال المعلومات بسرعة النت لديك وهى فى الغالب لا تكفى لعمل جيم يحتوى على 10 لاعبين فالحل هنا فى الاتى :
    ___________________________________________
    فى جميع الالعاب لدى الشركات الكبرى يصنعون سرفر للعبة مفتوح 24 ساعة يقوم بالتخديم على هذة الجيمات بمعنى:
    ان الى بعمل مضيف جديد لما بدخل على اختيار ال Play Network هو فى الاساس موش بيعمل سرفر جديد لانو موش بيعمل سرفر من الاساس هو بيدخل ككلينت على السرفر الموجود بالشركة الصانعة للعبة مع اعطاء هذا السرفر معلومة انو داخل على صورة مضيف فبيصنع لة السرفر - الى هو موش على جهازو دا على جهاز السرفر الموجود عند الشركة فقط -

    السرفر الى عند الشركة الصانعة للعبة بيكون مقام على جهاز لدية اى بى ثابت وبورت لا يتغيران ابدا والى هما بيطحطو فى اللعبة لما الشركة تنشرها عشان الناس تعرف تتصل ببعض ولا يتغير ابدا

    كل الى بيعملو السرفر دة انو فية نظام معين انت الى بتبرمجو والى هو فى معظم الالعاب بيكون عبارة عن وسيط ما بين الشخص الى عمل Host وباقى اللاعبين الى عملو Guest علية بالاضافة الى انو بيخزن عدد ال Hosts الى مفتوحة علية ويبعتا لما حد يدخل ك Guest ويدور على Host
    ____ هنا الاضافة_____________________
    يلعب فية بالاضافة الى انة هو المسؤل عن انتقال المعلومات بين اللاعبين بعضهم البعض فصاحب الجيم لا يتحمل اى لاج ممكن يحدث من عملية البطأ فى ارسال المعلومات
    __________________________________

    العملية دى اشبة كتير بالالعاب الاون لاين ولكن بصورة بسيطة جدا

    فال Play Network بيتكون من :
    سيرفر : ودة بيكون مقام على اى بى ثابت لدى الشركة المصنعة للعبة وعشان يسهل عملية اللعبة عبر شبكة الانترنت بدل ما كل الى عاوز يعمل Host جديد يبقى مشترك فى خدمة الاى بى الثابت فهو فقط يقوم بدور المعلن عن الجيم (Host) الى انت عملتو الجديد فقط يقوم بالاعلان عنة فى السرفر الرئيسى (الذى فى الشركة) الا اذا جعلتة يفعل اشياء اخرى

    Host : صاحب الجيم المقام فى السرفر كل الى بيعملو انو بيأمر السرفر انو يعمل جيم جديد بمواصفات معينة - هو اشبة بنظام انا مستخدمو عندى فى السرفر والى هو حاجة ذى انو بيعمل بعد جديد فى السرفر (dimension) فانت مثلا اذا اخترت انك تصنع جيم جديد وعاوز تعملو فى خريطة معينة نفترض مثلا الخريطة 1 وفى نفس الوقت فى جيم معمول من قبل بنفس الخريطة دى فعشان تحل المشكلة دى وتخلى كل جيم ميشفش اللاعيبة الى فى الجيم التانى مع انهم فى خريطة وحدة هو انك تعمل نظام يعمل استنساخ او يعمل بعد جديد للخريطة دى مختلف عن الخريطة الاصلية كأنو بيعملها كوبى - انت بتحددها لما بتصنع اللعبة ذى : اسم الجيم / كلمة السر للجيم / وخلافة وبقيام السرفر بعمل المضيف الجديد هذا لا يتحمل الشخص الى عمل هذا المضيف او يعنى الى امر السرفر انو يعملو باى نوع من انواع ال Ping او التحميل على جهاز المالك لهذا الجيم فالجيم بالكامل يكون فى السرفر وانت (المالك) يلعب كأنو زبون عادى (كلينت عادى) ولكن بخيارات اضافية مثل انو يتحكم انو يقفل الجيم فى اى وقت هو عوزو ليس اكثر

    Guest : وهم اللاعبين الذين يدخلون على السرفر للبحث عن جيمات مفتوحة سلفا للعب فيها وهو بدخولة على احد هذة الجيمات (Hosts) هو ليست لة علاقة بصاحب الجيم هذا ابدا فهو يدخل لزبون عادى ويتأثر بفروق المسافات بينة وبين سرفر اللعبة فى ال Ping وليس المسافة بينة وبين صاحب الجيم

    انت لك الحرية المطلقة فى ان تدع السرفر الرأيسى ان يتحكم فى كل شىء او يظل فقط الوسيط بينة وبين اللاعبين حتى لا يستطيع احد ان يخدع السيرفر

    فانت مثلا اذا جعلت اللاعب اذا تحرك من النقطة 1 الى النقطة 10 ان يرسلها للسرفر ثم يعيد السرفر ارسالها الى باقى اللاعبين بدون ان يتحقق من الممسافة والسرعة مثلا التى من المفترض ان تكون ثابتة عند كل اللعابين فى هذة الحالة يستطيع اللاعب ان يخدع اللاعبين الاخرين فانت لك الحرية فى هذا او تجعل السرفر يتحكم فى كل شىء - هذة برمجة ذاتية انت الى بتعملها بنفسك موش معمولة اوتوماتك

    فمهوم ال Play Network هذة قريب جدا من مفهوم ال Master Server فى اليونتى فالماستر سرفر يقوم بالاعلان عن سرفرك الخاص باللعبة الى انت عملتها على اليونتى فقط وهو سرفر مفتوح فى شركة اليونتى 24 ساعة بشكل دائم (هو فى الحقيقة ليس سرفر واحد هو اكثر من سرفر على اجهزة مختلفة للتخفيف موش اكثر) دة خدمة اليونتى مقدمها لينا عشان يسهل عملية اللعب خارج الشبكة المحلية وحتى لا تتضطر الى تحمل نفقات السرفر - هنا يأتى عيب ال Master Server وهو انك مينفعش تتحكم فية بمعنى انك مينفعش تحمى لعبتك من التهكير لو استخدمتو لانك لا تمتلكو فهو موجود فى شركة اليونتى فقط فلا تستطيع ان تفعل مثل المثال السابق
    فانت مثلا اذا جعلت اللاعب اذا تحرك من النقطة 1 الى النقطة 10 ان يرسلها للسرفر ثم يعيد السرفر ارسالها الى باقى اللاعبين بدون ان يتحقق من الممسافة والسرعة مثلا التى من المفترض ان تكون ثابتة عند كل اللعابين فى هذة الحالة يستطيع اللاعب ان يخدع اللاعبين الاخرين
    فانت هنا ليست لك الحرية مثل اذا صنعت انت اللعبة والسرفر الخاص بك ودة امر موش سهل خالص عشان كدا اليونتى ادم المساعدة الهائلة دى

    كدا شرحت الجزء الخاص بالالعاب ال Multi-Player بالتفصيل والى عاوزنى اوضحلو اى نقطة مش فهمها يقلى
    امثلة على الشرح :-
    http://www.mediafire.com/?j5ugpit3uu7psx9 دة مثال بالدوت نت
    http://www.mediafire.com/?5ka84a04l8nf27e ودة مثال اذاى تعمل سرفر باليونتى باستخدام ال State Synchronization

    __________________________________________________________

    شرح النوع الثانى : الالعاب الاون لاين MMO

    حسنا هذا النوع لا يختلف كثيرا عن ال Play Network فى الالعاب ال Multi-Player
    هذة الالعاب جماعية فقط ولا يوجد لها لعب فردى وهى مثل لعبة Conquer Online / Cabal / Zero Online / EVE Online / World Of War Craft

    هذة الالعاب اساسى تتكون من سرفر مستقل وكلينت مستقل

    السرفر : بيكون عبارة عن برنامج مقام على جهاز بمواصفات خاصة جدا ليتحمل التخديم على الاعداد الضخمة من اللاعبين الذى يتعدى الالاف وغالبا ما يتم تصميم السرفر حسب نوع اللعبة المصنوع لها فتكوين السرفر تختلف من لعبة الى اخرى خاصة فى طرق ارسال الحزم عبر الانترنت هناك ما يسمى بالمناهج / الاساليب
    المناهج مثل : Authoritative او Non-Authoritative
    الاساليب مثل : RPC(Remote Procedure Calls) / Synchronization / ASynchronization

    كل منهج ممكن تستخدم فية اكثر من اسلوب مع بعض

    غالبا السرفر بيكون مسؤل عن كل صغيرة وكبيرة ممكن يعملها اللاعب من التحرك والجرى والقفز والانتقال وتغيير الاسم او اللبس او اى شىء
    التعديل الأخير تم بواسطة NTSoft; 07 / 10 / 2012, 12:38 AM. سبب آخر: اخطاء بسيطة فى المقالة
    -:| My Games |:-
    AfterEarth Online SOON

    -:| Contact Us |:-
    Facebook Page :- NTStudio

  • #2
    ما شاء الله الله اكبر
    ممكن توضح فرضآ... اخترت ان يكون لشركة استضافة سيرفر لى لديها ليحمل ارتباطات اللعبة خاصتى لتكون مشاركة عالميآ ...السؤال ايه اللى هضعة على السيرفر من مكونات اللعبة ؟
    وممكن توضح الجزء البرمجى فى عملية ارسال واستقبال الحدث فى العبة وتاثير على اللاعبيين الاخرين؟
    سامحنى اذا ارهقتك...

    تعليق


    • #3
      من علمي انه الكود برمجة السيرفر ليس سطر واحد فقط

      بل مكون من كذا كود للوصول الى الخادم بتاع الأنترنت

      لأنه اذا تعطلت الشبكة بسبب الضغط الزائد فيحل محله سيرفر آخر ليكمل المشوار

      بغض النظر عن السيرفر المحلي طبعاً

      عدم استيعاب الكم الهائل الموجود على الشبكة للالعاب الجماعية

      تعليق


      • #4
        المشاركة الأصلية بواسطة fathi84 مشاهدة المشاركة
        ما شاء الله الله اكبر
        ممكن توضح فرضآ... اخترت ان يكون لشركة استضافة سيرفر لى لديها ليحمل ارتباطات اللعبة خاصتى لتكون مشاركة عالميآ ...السؤال ايه اللى هضعة على السيرفر من مكونات اللعبة ؟
        وممكن توضح الجزء البرمجى فى عملية ارسال واستقبال الحدث فى العبة وتاثير على اللاعبيين الاخرين؟
        سامحنى اذا ارهقتك...
        الى انت هتضعة فى الاستضافة دى هو السرفر الى هيشتغل كوسيط ما بين اللاعبين
        http://www.mediafire.com/?j5ugpit3uu7psx9 دة مثال بالدوت نت
        http://www.mediafire.com/?5ka84a04l8nf27e ودة مثال اذاى تعمل سرفر باليونتى باستخدام ال State Synchronization
        -:| My Games |:-
        AfterEarth Online SOON

        -:| Contact Us |:-
        Facebook Page :- NTStudio

        تعليق


        • #5
          موضوع مميز جدا جدا جدا ومنتظرينك على أحر من الجمر

          تعليق


          • #6
            وياريت تعملنا أمثلة

            تعليق


            • #7
              المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركة
              من علمي انه الكود برمجة السيرفر ليس سطر واحد فقط

              بل مكون من كذا كود للوصول الى الخادم بتاع الأنترنت
              صح 100% ولكن مثالى فى الموضوع على كونكشن اليونتى فكل الى نات قلتو دة مختصر فى الدالة دى
              network.initializeserver(32, 25000, false);
              لأنه اذا تعطلت الشبكة بسبب الضغط الزائد فيحل محله سيرفر آخر ليكمل المشوار

              بغض النظر عن السيرفر المحلي طبعاً

              عدم استيعاب الكم الهائل الموجود على الشبكة للالعاب الجماعية
              دة حسب انت مبرمج السرفر اذاى لو السرفر متبرمج بطريقة خطأ ممكن ميستحملش 5 جيمات كل جيم فية 10 مثلا يعنى المجموع 50 بعد كدا هتلاقى اخطاء فى السرفر منها عدم التزامن وغيرها من الاخطاء

              اما امكانية وجود سيرفر مساعد بجانب السرفر الرئيسى فدة حل جميل ولكنة صعب بالاضافة الى انة ليس بالمهم جدا فهى العاب fps لا يوكج حتى داتابيز لحفظ النقاط فأذا سقط السرفر لاى ظرف من الظروف لن يكون هناك خسائر (مع العلم انو صعب جدا انو السرفر يقف)
              -:| My Games |:-
              AfterEarth Online SOON

              -:| Contact Us |:-
              Facebook Page :- NTStudio

              تعليق


              • #8
                لاحظت وجود كلمة (يتبع...... )
                فأجل اسئلتى حتى لااضيع استرسال الموضوع وترتيبه
                والف شكر على هذا المجهود الطيب

                تعليق


                • #9
                  المشاركة الأصلية بواسطة mohmedelwa مشاهدة المشاركة
                  وياريت تعملنا أمثلة
                  شكرا لك

                  الامثلة انا ضفتها فى اخر الموضوع فوق
                  -:| My Games |:-
                  AfterEarth Online SOON

                  -:| Contact Us |:-
                  Facebook Page :- NTStudio

                  تعليق


                  • #10
                    موضوع ممتاز وشامل , هكدا مواضيع لازم تتبت لكي تبقى مرجع لكل شخص كانت له تساؤلات حول الميلتي بلاير او الاونلاين

                    تعليق


                    • #11
                      المشاركة الأصلية بواسطة amineGS مشاهدة المشاركة
                      موضوع ممتاز وشامل , هكدا مواضيع لازم تتبت لكي تبقى مرجع لكل شخص كانت له تساؤلات حول الميلتي بلاير او الاونلاين
                      شكرا لك
                      ____________________
                      -:| My Games |:-
                      AfterEarth Online SOON

                      -:| Contact Us |:-
                      Facebook Page :- NTStudio

                      تعليق


                      • #12
                        عشان كذا كانت لعبتك مكونة من شخصية واحدة في مكان أخر

                        كانت تجربتك اثناء برمجتك للسيرفر المحلي

                        اما التحكم فيها صعب يتم انتهاءك للبرمجة لعبتك

                        حتى يتجاوب معك Online او Offline

                        تعليق


                        • #13
                          شكرا لك اخي روعة..

                          تعليق


                          • #14
                            ممن تلقى نظرة على الرابط ده
                            واذا امكن توضحة بمعنى تفككة
                            http://pastebin.com/eFGPRpxi
                            شكرآ مسبقآ.....

                            تعليق


                            • #15
                              المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركة
                              عشان كذا كانت لعبتك مكونة من شخصية واحدة في مكان أخر

                              كانت تجربتك اثناء برمجتك للسيرفر المحلي

                              اما التحكم فيها صعب يتم انتهاءك للبرمجة لعبتك

                              حتى يتجاوب معك Online او Offline
                              موش فاهم




                              _______________________
                              -:| My Games |:-
                              AfterEarth Online SOON

                              -:| Contact Us |:-
                              Facebook Page :- NTStudio

                              تعليق

                              يعمل...
                              X