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

مبتدئ  كنان فخرالدين هذه المشاركة مميزة مشاركة 1

استخدام Project Darkstar في برمجة الألعاب على الإنترنت (اونلاين) أو ما يسمى بـ (Online Games)

أولاً: ما جعلني أطرح هذا الموضوع هو تعريف المطورين والمبرمجين العرب بهذا المشروع الناجح والذي بدأ يسرق الأضواء وينافس أقرانه مغلقة المصدر والباهظة الثمن.
ما هو (Project Darkstar)؟
مشروع مفتوح المصدر من شركة (Sun Microsystems) انطلق رسمياً منذ عام 2005 مكتوب بلغة الجافا، وهو عبارة عن تطبيق متعدد المهام يوضع على الخادم وذلك لتنفيذ وإدارة الطلبات التي تأتي من عملاء الموقع والذين قد يصل عددهم إلى عشرات الآلاف بآن واحد، ويمكن استخدامه لدعم جميع تطبيقات العوالم الافتراضية والشبكات الاجتماعية والألعاب التي تتطلب أداء عالي رغم عدد المستخدمين المرتفع فهنا يأتي دور البرنامج بتنفيذ الطلبات وإدارتها وموازنة الحمل على الخادم (Load Balancing) وتكمن فيه العديد من الخصائص الهامة لأي برنامج خادم.

ورغم دعم البرنامج (Darkstar) للشبكات الاجتماعية والعوالم الافتراضية فإن التركيز (حتى من رواد المشروع) يرتكز على برمجة الألعاب اونلاين.

ما هدف مشروع (Project Darkstar)؟
من الضروري قبل الغوص بتفاصيل المشروع فهم أهدافه: حيث أنه يهدف إلى تجريد برمجة الألعاب والعوالم الافتراضية وذلك لتفرغ المطور لبرمجة منطق اللعبة التي يعمل عليها ورسومياتها بعيداً عن تعقيدات برمجة الشبكات والخوادم أي إبعاده عن التفاصيل المعقدة التي تحوم حول برمجة ألعاب (تطبيقات) ذو الأداء العالي.

وهنا وصف للمشروع في موسوعة ويكيبيديا:
http://en.wikipedia.org/wiki/Project_Darkstar

ماذا يتوجب علي أن أتعلم كي أستطيع برمجة الألعاب باستخدام (Project Darkstar)

1. إتقان لغة الجافا، ولتطوير تطبيقات الجافا، يمكنك استخدام إحدى البرنامجين المجانيين:
    1. برنامج (Eclipse IDE) وهو برنامج مفتوح المصدر لتطوير جميع تطبيقات لغة الجافا (شخصياً، أجده أفضل).
http://www.eclipse.org/downloads/
    2. برنامج (NetBeans IDE) من شركة (Sun Microsystems) صاحبة لغة الجافا.
http://netbeans.org/downloads/

2. الدخول إلى موقع المشروع
http://www.projectdarkstar.com
وتنزيل أحدث إصدار من (Project Darkstar)والذي يحوي:
http://www.projectdarkstar.com/current-distribution.html
    1. الشيفرة المصدرية (الكود) للمشروع.
    2. 7 أمثلة (مع الشيفرة المصدرية لها) لتمكين المبرمج من البدء بتطوير التطبيقات التي تعمل بالاعتماد على Project Darkstar.
    3. كتاب تعليمي بـ (67) صفحة باللغة الإنكليزية يشرح المشروع وبنية الصفوف ومن ثم شرح مفصل للأمثلة السبعة وكيفية تنفيذها.
(وكوني قد درست الترجمة للغة الإنكليزية بشكل أكاديمي، مستعد لترجمة هذا الكتاب بمساعدة أشخاص من هذا المنتدى وذلك ليس للمساعدة الفعلية بقدر ما هو للتعاون والإحساس بالاهتمام بالمشروع).

وعندها سيدلك الكتاب على خارطة الطريق كما يقولون، وأعرف أن الكتاب صغير ولا يعطي إلا طرف الخيط ولكن يوجد منتدى المشروع فهناك الكثير من المواضيع الهادفة والمفيدة والكثير من الأشخاص الذين يودون المساعدة.

منتدى المشروع: http://www.projectdarkstar.com/forum/

وبشكل عام، فإن المعرفة بالأمور التالية ستفيدك كثيراً:
برمجة ملفات (bat): حيث يتم استخدامها لتشغيل وإيقاف السرفر. (وهي بالكاد تسمى برمجة 😄 ).
التعامل مع ملفات (jar) وهي خرج برامج لغة جافا.
التعامل مع Socket في أي لغة أخرى فالمبدأ واحد.
التعامل مع المشاريع مفتوحة المصدر لأنها شيء أساسي في المراحل اللاحقة.

وهناك خبر جيد أنه إذا كنت لست من هواة لغة جافا، فيمكنك تطوير برامج على أي لغة أخرى لكي تعمل مع هذا البرنامج من جهة العميل Client API (يوفر موقع المشروع لغتان الأولى هي الجافا والثانية هي ++C) وأنا أعمل الآن على تطوير Client API بلغة ActionScript3 الخاصة بالبيئة الشهيرة Flash واخترت هذه اللغة/البيئة (Flash/AS3) لأنها متوافقة مع جميع مستعرضات الإنترنت، تصور أن لديك موقعك الإلكتروني الخاص باللعب على الإنترنت بتطبيق Flash من ناحية العميل ومشروع هذا الموضوع من ناحية السرفر/الخادم، أليس هذا رائعاً؟

ما الألعاب التي تم تطويرها باستخدام المشروع؟
هناك لعبة ثلاثية الأبعاد سميت برجل الثلج تم تصميمها لإثبات كفاءة المشروع (Proof of Concept) أي أنها ليست تجارية وبصراحة لم أقم بتجربتها ولكنني شاهدت الفيديو الخاص بها على موقع اليوتيوب.
وهذا هو الموقع الخاص باللعبة
https://project-snowman.dev.java.net/
(يمكنك تحميل اللعبة والبدء باللعب على الإنترنت لتجربتها)
http://download.java.net/maven/2/com/projectdarkstar/example/projectsnowman/snowman-dist/0.1/snowman-dist-0.1.zip

كيف سيكون شكل موقعي عندما أنتهي من بناءه اعتماداً على مشروع Project Darkstar؟
http://gamezer.com/
هذا الموقع مشابه جداً لما يمكن عمله من خلال مشروع Project Darkstar، حيث تم تصميم واجهات الموقع باستخدام (Flash) ومن الناحية النظرية يمكن لمشروع Project Darkstar أن يمثل الجهة المقابلة من الموقع (جهة الخادم)، ويمكن ربط ال (Flash) مع (PHP) وبالتالي (MySQL) لاستخدام قواعد البيانات. (كما أن هناك بعض المحاولات لاستخدام MySQL من خلال برنامج الخادم مباشرةً).

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

أتمنى أن يساعد هذا الموضوع المبرمجين والمطورين (أو حتى المستثمرين) الطامحين أن يكون لديهم الموقع الخاص بهم للعب على الإنترنت أو على الأقل تعلم برمجة ألعاب الإنترنت.

يرجى عدم الرد على هذا الموضوع بما يلي (أنا لا أستطيع المشاركة لأنني لا أعرف لغة الجافا) أو (كنت أتمنى الاطلاع ولكنني لم أنتهي من امتحاناتي بعد) بل نريد مشاركات فعالة كتجربة المشروع والرجوع بالنتائج أو المشاكل التي واجهتك أثناء ذلك.

فالموضوع هنا لا يتطلب البدء بمشاريع ما زال مستوانا العلمي والتقني ضعيفاً مقارنة بها (كتطوير محرك ألعاب مثلاً) بل بإمكانك بكل بساطة صنع مثال بسيط باستخدام Flash للبدء مع Project Darkstar، يمكنك البدء ببرمجة الاتصال مع السرفر والعمليات (Log in, Log out) وبعد ذلك تبدأ بتطوير ذلك ليشتمل على الرسائل بين العميل والخادم ومن ثم منطق لعبة حقيقية. ونذكّر هنا أنك لن تعيد صناعة العجلة لأنها مصنوعة وموجودة على السرفر (الذي يمكن أن يكون على جهازك الشخصي Localhost) أي أنك لن تحتاج إلى أي تجهيزات للبدء في التعامل مع المشروع.

وأنا مستعد للمشاركة في أي موقع ألعاب على شكل مشروع تجاري يعتمد أغلب دخله المادي على الإعلانات التجارية وربما التعاقدات المستقبلية مع شركات أخرى والتي لا بد منها في زمن تكتل الشركات للبقاء.
ولدي تصور مبدئي ودراسة جدوى أولية للمشروع للمهتمين والجادين وهذا الموضوع ليس للدعاية بل لتعريف المطورين بهذا المشروع المفيد جداً والذي يمكن أن يدفع بشركات ومشاريع ومواقع وطننا العربي إلى الأمام حيث أن أغلبها تعاني من التشوهات الكبيرة في التصميم والكادر الإداري والفني.

كما أنني مستعد للإجابة عن أي استفسار أو سؤال تقني بخصوص المشروع وأتمنى الاطلاع على المشروع والتسجيل في المنتدى الخاص به الذي ذكرناه في بداية الموضوع حيث أنني أعتبر هذا المشروع مفتاحاً لبداية أي موقع ناجح لبرمجة الألعاب على الإنترنت.

فنحن (إن كنا نود البدء فعلاً بمشروع كهذا) نحتاج إلى ما يلي:
1. مبرمجين جافا (لإكمال برمجة المشروع من ناحية السرفر، حيث أنك إن كنت تود إضافة لعبة استراتيجية إلى موقعك من ناحية العميل (فلاش فرضاً) فيجب عليك برمجة الجهة المقابلة من اللعبة على السرفر وطبعاً هنا لن تعيد برمجة اللعبة من جديد بل فقط بعض الأمور لضمان جريان أوامر اللاعبين ومعالجتها بشكل صحيح).
2. مبرمجين ومصممين (ومحركين) فلاش. (لتصميم واجهات وبرمجة الموقع، ناحية العميل). (ويفترض أن يكون المصممين ذو كفاءة بكافة برامج التصميم اللازمة).
3. ربما نحتاج لمبرمجين PaperVision3D وهو مشروع لدعم البعد الثالث في فلاش. (لدعم الألعاب ثلاثية الأبعاد فيما بعد).

كمرحلة ثانية: (في حال كان المشروع تجارياً)
4. خبير سرفرات لينوكس (أفضل من حيث الاستضافة).
5. مدير لكل مشروع (أو لعبة وذلك يعتمد على حجم الألعاب التي تقوم بتنفيذها).
6. كل ما يلزم شركة برمجة ألعاب عادية للنواحي غير التقنية من المشروع.

وشكراً.

كنان فخرالدين

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

شكراً جزيلاً على تنويهك بهذه المكتبة، فلم أكن أعرف عنها مسبقاً، رغم أنني واجهت مشاريعاً تستفيد من مثل هذه البنية البرمجية.
 
لقد كنتُ أطلع على الأمثلة الابتدائية لاستخدام المكتبة، وقد بدت لي غاية في البساطة وهذا أسعدني بشدة، وبالتأكيد سأنظر بأمر هذا النظام في مشاريعي القادمة إن شاء الله.


أما في 06/صفر/1431 10:04 ص، فقد تنهد كنان فخرالدين بارتياح وهو يرد:

وهناك خبر جيد أنه إذا كنت لست من هواة لغة جافا، فيمكنك تطوير برامج على أي لغة أخرى لكي تعمل مع هذا البرنامج من جهة العميل Client API (يوفر موقع المشروع لغتان الأولى هي الجافا والثانية هي ++C) وأنا أعمل الآن على تطوير Client API بلغة ActionScript3 الخاصة بالبيئة الشهيرة Flash واخترت هذه اللغة/البيئة (Flash/AS3) لأنها متوافقة مع جميع مستعرضات الإنترنت، تصور أن لديك موقعك الإلكتروني الخاص باللعب على الإنترنت بتطبيق Flash من ناحية العميل ومشروع هذا الموضوع من ناحية السرفر/الخادم، أليس هذا رائعاً؟

فعلاً، ثم إن قرار دعم ++C هو قرار حكيم لجهة العميل، حيث أن العديد من التطبيقات التي تعمل خارج المتصفح تعتمد على قاعدة برمجية واسعة من كود الـ ++C. 
 
بما أنك تملك اطلاعاً واسعاً على الإمكانيات الحالية للمكتبة، فإنني أتساءل ما هي التسهيلات الخاصة بالألعاب التي يقدمها نظام دارك ستار؟ هل هناك مثلاً مفاهيم عالية المستوى جاهزة للاستخدام ضمن لعبة من طراز العوالم المفتوحة؟ أو أية أمور أخرى مما قرأت... أم هي بنية تحتية تقتصر على إدارة الطلبات والمهام والتواصل ووحدة البيانات؟

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

مبتدئ  كنان فخرالدين مشاركة 3

شكراً لك أخي وسام البهنسي لاطلاعك على الموضوع وأنا أشكركم على تصنيف هذه المشاركة ضمن المشاركات المميزة 😄 فذلك يشرفني

في 22 كانون الثاني 2010 05:59 ص، غمغم وسام البهنسي باستغراب قائلاً:

لقد كنتُ أطلع على الأمثلة الابتدائية لاستخدام المكتبة، وقد بدت لي غاية في البساطة وهذا أسعدني بشدة، وبالتأكيد سأنظر بأمر هذا النظام في مشاريعي القادمة إن شاء الله.

يسعدني ذلك وأنا مستعد للمشاركة الفعلية بالمشروع على أرض الواقع أو الاكتفاء بالمساعدة عن بعد.

بتاريخ 22 كانون الثاني 2010 05:59 ص، قطب وسام البهنسي حاجبيه بشدة وهو يقول:

بما أنك تملك اطلاعاً واسعاً على الإمكانيات الحالية للمكتبة، فإنني أتساءل ما هي التسهيلات الخاصة بالألعاب التي يقدمها نظام دارك ستار؟ هل هناك مثلاً مفاهيم عالية المستوى جاهزة للاستخدام ضمن لعبة من طراز العوالم المفتوحة؟ أو أية أمور أخرى مما قرأت... أم هي بنية تحتية تقتصر على إدارة الطلبات والمهام والتواصل ووحدة البيانات؟

نعم، هناك محاولة جادة مفتوحة المصدر أيضاً ومن قبل مطوري المشروع أنفسهم و تدعى مشروع سليب ستريم (Slipstream) وهي توفر مكتبة تعمل تحت مشروع دارك ستار وذلك لتسهيل برمجة الألعاب ورغم أن هذه المكتبة ما زالت في مراحلها الأولى وانشغال مطوريها بما أنهم يعملون  على عدة مشاريع معاً فمن الواضح أنها تشكل أساساً لا بأس به للبداية في برمجة ألعاب لمشروع دارك ستار، تتألف هذه المكتبة من:

1. الأصناف الأساسية في أي لعبة وهي (اللعبة، اللاعب - سواء البشري أو الإلكتروني bot أو الشخصيات داخل اللعبة NPC، الأداة Item).
2. خدمة خاصة لإدارة الرسائل.
3. بعض أنواع المجموعات لتسهيل التواصل بين اللاعبين - SingleSenderGroup, UnmoderatedGroup, ChannelGroup
4. بعض الأصناف الهامة الأخرى:
4--1. وضع اللعبة (GameMode): حيث أنه في أي لعبة هناك عدة أوضاع (Mode)، فمثلاً أنت قد توجد على طاولة اللعب أو تشاهد لعبة أخرى أو تتجول في الردهة (Lobby) الخاصة بالموقع. حيث أنه لكل (GameMode) مجموعة من الضوابط والقواعد التي تضمن جريان منطق اللعبة بشكل صحيح.
4--2. وكيل اللعبة (GameProxy): يستخدم كل وضع (GameMode) وكيلاً للاحتفاظ بحالة كل لاعب ضمن هذا الوضع ويستخدم اللاعب الوكيل الخاص به للتواصل مع الوضع الخاضع له.
4--3. المنطقة (Region): يقدر مطوري سليب ستريم أنه قد يلزم لعبتك تمثيلاً مكانياً وهذا ما يمثله الصنف (Region)، حيث يمكن للاعب أو أداة ما أن تشغل حيزاً مكانياً (Region).
4--4. وكيل المنطقة (RegionProxy): كما في وضع اللعبة، يلزمنا هنا وكيلاً كي يتعامل مع اللاعب مباشرةً عند ورود أحداث مثل دخول اللاعب لمنطقة معينة أو التحرك أو مغادرة هذه المنطقة أو عرض اللاعبين الآخرين ضمن نفس المنطقة.

حتى تفهم (GameMode) أكثر: تخيل أنك تدخل إلى فندق يوفر طابقه الأرضي مكاناً لبعض الألعاب،
ستدخل أولاً إلى الردهة (ولنسميه LobbyMode) ومن ثم يمكنك الدخول إلى أي غرفة من الغرف حيث أنه
يجري في كل غرفة لعب لعبة من نفس النوع ولنفرض أنك اخترت غرفة لعبة الورق (CardGameMode) أو غرفة لعبة الشطرنج (ChessGameMode) وهكذا حيث أن هذه الأوضاع تجتمع فيما بينا لتشكل كامل أوضاع اللعب، يحاول مطوري سليب ستريم جعل هذا
النموذج مثالياً، يمكنك مع ذلك التعديل عليه لتشكيل بنيتك الخاصة من
الأصناف كما تريدها.

------------------------------------
وصلات خارجية متعلقة:
موقع المشروع:
http://slipstream.dev.java.net/
الموضوع التقديمي لـ(سليب ستريم) في منتدى دارك ستار
http://www.projectdarkstar.com/forum/?topic=1316.0
كتاب تعليمي بـ 37 صفحة يتألف من ثلاثة أقسام: أفضل النصائح للبرمجة في دارك ستار، بنية سليب ستريم البرمجية مع أمثلة، خدمات سليب ستريم، و الخاتمة: خارطة الطريق لمن يريد التطوير على سليب ستريم (ما الأماكن التي يريد مطوري المشروع بعض الأدمغة أن تعمل عليها 😄 )
https://slipstream.dev.java.net/source/browse/slipstream/trunk/doc/slipstream.pdf?rev=49

للحصول على السورس كود الخاص بـ (سليب ستريم)، فعليك استخدام إحدى برامج SVN مثل TortoiseSVN والذي يعتبر أفضلها
http://tortoisesvn.net/downloads
------------------------------------

كما يقدر مطوري سليب ستريم أيضاً أنه يمكن لوضع لعبة ما (GameMode) أن يحتاج تمثيلاً مكانياً ولذلك فقد تم تزويده بمرجع للمنطقة (Region) في حال احتاج مطور الوضع لذلك، حيث يكون وضع اللعبة مسؤولاً عن تطبيق قواعد اللعب، بينما تعرف المنطقة (Region) القواعد المكانية.


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

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

ملاحظة: يبقى دائماً في المشاريع مفتوحة المصدر جهداً على المبرمج، أي بشكل عام لا تتصور أن يكون كل شيء جاهزاً وبدون أية مشاكل، ورغم أن ذلك قد لا يعجب البعض ولكنني أرى ذلك محفزاً لكثير من الأشخاص الذي يودون فعلاً العمل باحترافية، ومع ذلك فإن مشروع دارك ستار بشكل عام يوفر أمثلة تعمل بكل سلاسة وبدون أية مشاكل وحتى في وجود أي مشكلة لا تتردد في السؤال عنها هنا أو في المنتدى الخاص بالمشروع.

دمتم بخير.

كنان فخرالدين

مبتدئ  المانشافت مشاركة 4

مشكور اخ كنان - كنت افكر بعمل لعبه منافسه للفارم فيل و انت دليتني عالبدايه ههه!!!

خبير  algeria مشاركة 5

كفيت ووفيت أخي بارك الله فيك

يمكن أيضا برمجة الألعاب Online في Directx
عن طريق الكائن DirectPlay

الجزائر قلبي وغزة نبضه

مبتدئ  كنان فخرالدين مشاركة 6

نعم أخي الكريم algeria أعلم ذلك.

ولكن DirectX DirectPlay لا يمكنه توفير أداء عال كالذي يوفره المشروع.

حيث أن هناك خبر جيد بأن إحدى ألعاب موقع فيس بوك الشهير والمسماة (Zoo Kingdom)

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

وصول عدد اللاعبين المتزامن (أي المتصلين بلحظة واحدة) إلى 4500 لاعب على كل مخدم.

هذا رقم عظيم ولا يستطيع أي مشروع تخديم طلبات الوصول لهذا الرقم (تخيل أن جميع هؤلاء

اللاعبين يتبادلون البيانات من وإلى المخدم).

وأنا أعمل حالياً لإطلاق موقعي الذي يحتوي على عدة ألعاب يمكن لعبها جماعياً على الإنترنت

وسأحتفظ بأسماء الألعاب لنفسي حالياً ولكن لمن يريد التواصل أو الاستفسار عن المشروع يمكنه

مراسلتي على الإيميل الخاص: supergeek_rs[at]yahoo.com

طبعاً سيتم إطلاق الموقع اعتماداً على نفس المشروع دارك ستار

خبير  algeria مشاركة 7

جميل جدا أخي ,, شكرا على التوضيح
وبالنسبة لما ذكرته بشأن موقعك
أنا لا أستعمل بريد Yahoo,Msn ,, بطيئان في التواصل
هل عندك Skype

الجزائر قلبي وغزة نبضه

مبتدئ  كنان فخرالدين مشاركة 8

عذراً على التأخير...

ولكنني انشغلت بالمشروع بالفترة الأخيرة وبشكل مكثف.

نعم أخي

pda.softdev

هذا معرف Skype الخاص بي.

خبير  algeria مشاركة 9

في 12 سبتمبر 2010 01:48 ص، قال كنان فخرالدين بهدوء وتؤدة:

هذا معرف Skype الخاص بي.

لا بأس أخي
إن شاء الله

الجزائر قلبي وغزة نبضه

مبتدئ  عمّار حرفوش مشاركة 10

احب ان اضيف:
http://playerio.com
و هي خدمة موجهة لألعاب الفلاش بشكل خاص لكنها تدعم لغات الـ .net ايضا
و يتم برمجة السيرفر بالـ Csharp بدلا عن الجافا.
و المميز فيه انه يوفر سيرفرات مخصصة للالعاب تتراوح اسعارها بين المجاني و 2500$ شهريا للالعاب ذات العدد الهائل من اللاعبين.