الدرس الرابع ~الأونلاين~
الألعاب الأونلاين قد تكون ذات عنى مبهم او غير واضح عند معظمنا
فأنت كلاعب عند لعبك لعبة ما اونلاين فأنت تختبر ما تفقده الألعاب العادية
انت تختبر التفاعل الاجتماعي
اذن ماهي العوامل التي تؤدي الى اكمال لعبة أنولاين ما ؟
فلنبدأ الشرح اذن :
أولا : تصميم اللعبة ...
ليس من امكانية كل البرامج صنع العاب يمكن جعلها أونلاين
ولكني افضل لغات الـ
C++ or
C# or
VB.Net
صعب ؟!
نعم صعب جدا
وقد يكون الـ VB.Net اسهل لغة من ضمن تلك اللغات ولكن مقابل تلك السهولة انت تفقد الفاعلية.
عن نفسي افضل استخدام الـ C++ لأنه فعال
ففي تلك اللغة , كل شيء تحت تصرفك
من الصحيح انها تطلب عمل اكثر, ولكن مقابل ذلك تحصل على فاعلية اكبر.
كود:
ماذا اعنى بالفاعلية ؟
تخيل انك صنعت لعبة بالـ VB.Net + DirectX 9
حجم اللعبة 400 كيلو بايت
تستغل اللعبة مساحة قدرها 11000 كيلوبايت من الذاكرة في جهاز المستخدم
والأن حاول صنع تلك اللعبة ايضا ولكن بأستخدام الـ C++ + DirectX 9
حجم اللعبة 250 كيلو بايت او اقل!
تستغل اللعبة ا يقرب من 2000 كيلو بايت من الذاكرة المؤقتة في جهاز المستخدم
~ طبعا هذا للتوضيح فقط ~
اذن كيف يكون تصميم اللعبة من اهم عوامل جعلها أونلاين ؟
-_- اللعبة في مراحل تصميمها تقوم بأدراج اكواد و تعريف طرق ارسال و استقبال البيانات من الخادم ~Server~ و كيفية ترجمة تلك البيانات الى ما يختبره اللاعب من احداث ووقائع
اذن فاللعبة تتصل بالخادم بأستخدا مكتبة الـ WinSock ؟
ليس فقط الـ WinSock توجد ايضا مكتبات اخرى توفرة
ولكن الـ WinSock يعتبر اكثرها شيوعا
مهمتها بسيطة و هي عبارة عن ارسال البيانات من والى الخادم و اللعبة
اذن تلخيص ما سبق يكون كالأتي :
1- عند صناعة اللعبة و جعلها أونلاين يجب ان نراعي الفاعلية
2- يجب ان نستخدم مكتبة لارسال البيانات من والى الخادم و اللعبة
3- يجب ان نفسر الرساءل الستقبلة من الخاد و نترجها لأحداث تحدث داخل اللعبة
ثانيا : تصميم الخادم ...
هل تصدق ان اخبرتك ان لغة تصميم الخادم لا يجب ان تكون نفس لغة تصميم اللعبة ؟
يمكن ذلك ولكن نظريا هذه الطريقة ليست مفيدة!
حسنا ننتقل للمهم.
كيف نصمم الخادم ؟
هل يمكنك تصميم شيء ما بدون ان تعرف ما هو ؟
من الطبع لا ~ مع اني صممته بدون ان اعرفه , ولكن ليس ذلك المهم~ :]
اذن دعني اعيد صياغة سؤالك الى :
ماهو الخادم ؟
الخادم هو عبارة عن المجتمع الذي يتم فيه استقبال البيانات من اكثر من عميل ~اللعبة~
وارسالها فيما بينهم
تنظيم دورة البيانات و تحديد ما يراه كل لاعب وماذا يحدث
فالخادم هو بصفة اكثر عبارة عن المتحكم في العالم الخيالى الذي صممناه
الألعاب الأونلين لا تقوم بدون خادم
ولكن هل توجد العاب اونلاين بدون خادم ؟
نعم توجد العاب مثل CounterStrike,HalfLife
ولكن كيف ؟
حقيقة تلك الألعاب انه يوجد خادم ولكنه واحد من اللاعبين
فحين تقوم بأنشاء لعبة جديدة على الشبكة مثلا LAN
انت بنفسك تلعب دور الخادم الذي ينسق البيانات
و حين تغلق اللعبة من عندك سوف تلاحظ ان جميع من كان يلعب معك طرد من اللعبة
اذن كيف نصمم الخادم ؟
الأن يسرني ان خبرك :]
عند تصميم الخادم يجب ان تراعي فيه ما يلي
اولا ما عدد اللاعبين الذي يستطيع الخادم ان يجمعهم معا ؟
ثانيا ما هي سرعة معالجة البيانات بين اللاعبين ؟
طبعا ذلك ليس كل ما يجب حسابه
ولكن كبداية هذا يعتبر جيدا :]
اذن اولا, عدد اللاعبين الذي يستطيع الخادم ان يجمعهم معا يعتمد على
1- سرعة الاستضافة
2- سرعة جهاز الاستضافة
3- طريقة تصميم الخادم
ماذا تقول, استضافة ؟
اعذرني اخي العزيز , ولكن هل ظننت انك سوف تدير لعبة اونلاين من البيت ؟
ثانيا سرعة معالجة البيانات ؟
نعم , قدرة الخادم على استقبال البيانات و تنظيمها و اعادة ارسالها او الاحتفاظ بها
كلها تأتي من التصميم الجيد للخادم
اعلم ايضا ان الخادم يستخدم نفس المكتبة التي يستخدمها العميل لارسال واستقبال البيانات
اذن هل هذا ما احتاجه لتصميم لعبة أونلاين ؟
اححم
كلا!
لا زلنا نفتقد عنصرا مهاً
تلك البيانات اين تذهب ؟
هل تلعب لعبة اونلاين كل ما شغلت اللعبة تبدأ من البداية ؟
مالفائدة ان كنت العب ولا تسجل انجازاتي ؟
اذن دعني اقدم لك
قواعد البيانات!
ثالثا : قواعد البيانات ...
قواعد البيانات تسجل فيها الأحداث, اماكن اللاعبين, ما يملكون, وكل معلوماتهم
انها مثل الكتاب ولكن هذا الكتاب يمكن ان تعدل فيه بما يناسبك.
اذن كيف اتعامل مع قواعد البيانات ؟
اولا نحدد نوع قاعدة البيانات المستخدمة
هل هي OLEDB, ODBC, MySql, MSSQL,ORACLE
لكل مميزاته و لكني افضل ان اتعامل مع الـ MySql
ثانيا نوصل القاعدة بالخادم :]
باستخدام الـ Connector وهي عبارة عن مكتبة نقل بيانات بين القاعدة المستهدفة و برنامج ما
بالنسبة للـ MySql فالـ Connector الخاص بها يسمى MySql Connector ~ملائم~
ثالثا نبدأ عملية ارسال و استقبال البيانات
بين الخادم و قاعدة البيانات فقط !
لماذا لا اجعل اللعبة متصلة مباشرة بقاعدة البيانات؟
لأنه قد يتم تعديل البيانات المستخدمة من قبل وسائل خارجية و بذلك تفقد اللعبة الأمان!
~ كنت افعل ذلك في بعض الألعاب, و لكن ليس هذا موضوعنا~
اذن تخيل معي الأتي
اللعبة >>> ~ ارسال بيانات الى :~ >>>
الخادم >>> ~ ارسال بيانات الى :~ >>>
القاعدة
القاعدة >>> ~ ارسال بيانات الى :~ >>>
الخادم >>> ~ ارسال بيانات الى :~ >>>
اللعبة
هذه احدى وسائل نقل البيانات المعهودة و يمكن ايضا التالي
اللعبة >>> ~ ارسال بيانات الى :~ >>>
الخادم
الخادم >>> ~ ارسال بيانات الى :~ >>>
اللعبة
الخادم >>> ~ ارسال بيانات الى :~ >>>
القاعدة
القاعدة >>> ~ ارسال بيانات الى :~ >>>
الخادم
هذه هي اهم الميزات للألعاب الأونلاين
~كانت توجد بعض الصور للتوضيح اكثر ولكني لم اعثر عليها في جهازي ~
-_-
والسلام عليكم ورحمة
الله و بركاته
اخوكم : اسلام الريان.
~ملحوظة كاتب الموضوع كان شبه نائما اثناء الكتابة~
~ملحوظة اخرى الدرس لم ينتهي بعد~