PDA

معاينة النسخة الكاملة : [Unity3d][درس] عمل نظام شبكة _1_



matrixinc
02 / 06 / 2013, 04:51 PM
السلام عليكم و رحمة الله و بركاته

اقدم لكم درس لطريقة عمل نظام شبكة بين جهازين اي LAN وليس Online

الشرح ان شاء الله سيكون في السي شارب

بسم الله نبدا:

اولا قم بعمل بروجكت جديد و اعمل سكربت سي شارب و نسميه connect

و نقوم بنسخ هذا الكود و نضعه فيه :


using UnityEngine;
using System.Collections;

public class connect : MonoBehaviour {
public string IP = "127.0.0.1";

public int Port = 25555;

void OnGUI(){

if(Network.peerType == NetworkPeerType.Disconnected){
IP = GUI.TextArea(new Rect(105,5,100,25),IP);
if(GUI.Button(new Rect(5,5,100,25),"Start Server")){
Network.InitializeServer(10,Port);
}
if(GUI.Button(new Rect(5,35,100,25),"Connect")){
Network.Connect(IP,Port);
}
}
else{
if(Network.peerType == NetworkPeerType.Client){
if(GUI.Button(new Rect(5,35,100,25),"Disconnect")){
Network.Disconnect();
}
}
if(Network.peerType == NetworkPeerType.Server){
if(GUI.Button(new Rect(5,35,100,25),"Turn off server")){
Network.Disconnect();
}
}
}
}
}



جربها ستلاحظ وجود زرين واحد لفتح سيرفر و الثاني للاتصال و نافذة لكتابة الايبي

يمكنك التجريب من جهازك فقط بتصدير اللعبة ثم فتحها مرتين

الايبي حيكون نفسه الافتراضي 127.0.0.1

افتح السيرفر باللعبة الاولى و الثانية اكبس على اتصال

ستلاحظ انه تم الاتصال و التزامن

نبدأ بالشرح:


public string IP = "127.0.0.1";

public int Port = 25555;

هنا قمنا بعمل متغيرين لتخزين الايبي و المنفذ port


void OnGUI(){
}

قمنا باستخدام الفنكنشن OnGUI


if(Network.peerType == NetworkPeerType.Disconnected)

قمنا بكتابة شرط انه : اذا كان نوع الاتصال هو غير متصل قم بـ


IP = GUI.TextArea(new Rect(105,5,100,25),IP);
if(GUI.Button(new Rect(5,5,100,25),"Start Server")){
Network.InitializeServer(10,Port);
}
if(GUI.Button(new Rect(5,35,100,25),"Connect")){
Network.Connect(IP,Port);
}

في السطر الاول قمنا بعمل GUI.TextArea لتخزين الايبي مع امكانية تعديله

بعدها قمنا بعمل زر اسميناه start server وقلنا انه اذا تم ضغطه سوف يتم استخدام الكود Network.InitializeServer الذي يقوم بفتح سيرفر , الكود يتكون من قسمين الاول هو العدد الاقصى الذي يمكنه الاتصال بالسيرفر و هنا وضعنا 10 (يمكنك تغييره لأي رقم تريده) و القسم الثاني هو المنفذ و وضعناه المتغير port الذي عرفناه فيما سبق

و قمنا بعمل زر اخر اسمينا Connect وقلنا انه اذا تم ضغطه سوف يعمل الكود Network.Connect الذي يقوم بالاتصال بالسيرفر و يتكون من قسمين الاول هو الايبي و وضعناه المتغير IP الذي عرفناه فوق و الثاني هو المنفذ Port الذي عرفناه فوق ايضا


else{
if(Network.peerType == NetworkPeerType.Client)

هنا قلنا انه اذا لم يكن غير متصل (اي انه اذا كان متصل)و قمنا بعمل شرط داخل هذا هو

اذا كان نوع الاتصال هو مستقِبل (اي انه اذا كان متصل بالسيرفر) فسوف :


if(GUI.Button(new Rect(5,35,100,25),"Disconnect")){
Network.Disconnect();
}

يتم عمل زر نسميه Disconnect و قلنا انه اذا تم الضغط عليه سوف يقطع الاتصال


if(Network.peerType == NetworkPeerType.Server){

هذا شرط اخر وضعنا في اال else وهو

انه اذا كان نوع الاتصال سيرفر (اي انه اذا فتح السيرفر) فسوف :


if(GUI.Button(new Rect(5,35,100,25),"Turn off server")){
Network.Disconnect();
}

ايضا يتم عمل زر اسمه turn off server اذا تم الضغط عليه سوف يقطع السيرفر

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ـــــــــــــــــــــــــــــــــــــــــــــــــ

سنتوقف هنا في هذا الدرس :)

ان شاء الله في الدروس القادمة اشرح طريقة استخدام هذا الاتصال في الالعاب

اتمنى اكون افدتكم و اي ملاحظة او سؤال او خطأ ارتكبته اكتبه في كومنت

تحياتي

majedx3x8x
02 / 06 / 2013, 05:00 PM
تسلم ع الشرح الشروحات موجودة بالعربي بس السيرفرات لا انا قريب بنزل شروحات التواصل مع السيرفر ان شاء الله اذا فضيت

matrixinc
02 / 06 / 2013, 05:12 PM
تسلم ع الشرح الشروحات موجودة بالعربي بس السيرفرات لا انا قريب بنزل شروحات التواصل مع السيرفر ان شاء الله اذا فضيت

مشكور عالمرور

ممممممم الشروحات العربية موجودة؟
انا اعرف اغلب الشروحات العربية بالنت عن اليونيتي بس شرح الشبكة غير موجود ؟؟
بكل الاحوال لا مشكلة ^_^ زيادة الخير خيرين

majedx3x8x
02 / 06 / 2013, 06:12 PM
هذا الي اقصده شروحات المحرك موجودة بس الاتصال بالسيرفر لا

NTSoft
02 / 06 / 2013, 06:48 PM
مجهود رائع تسلم اخى استمر راح اتبعك :dd

matrixinc
02 / 06 / 2013, 07:01 PM
مجهود رائع تسلم اخى استمر راح اتبعك :dd
مشكور اخي NTSoft على المرور :)
ان شاء الله الدرس الثاني قريبا عن RPC


تحياتي

لا اعلم
02 / 06 / 2013, 07:43 PM
توقعت الموضوع اصعب من جذي
شرحك غيرلي الصوره
الشرح جميل ببساطته
اتمنئ لو تراجع الصيغه المكتوبه للشرح وتحسنها وتعيد صياغتها

ودي اجرب هذي الاكواد واقولك النتيجه بس انت عارف راح احتاج جهازين :)

matrixinc
02 / 06 / 2013, 08:05 PM
توقعت الموضوع اصعب من جذي
شرحك غيرلي الصوره
الشرح جميل ببساطته
اتمنئ لو تراجع الصيغه المكتوبه للشرح وتحسنها وتعيد صياغتها

ودي اجرب هذي الاكواد واقولك النتيجه بس انت عارف راح احتاج جهازين :)

مشكور على مرورك اخي مبارك

بالنسبة للصيغة المكتوبة , ان شاء الله اراجعها و احسنها :)

اما بالنسبة للتجربة , ذكرت بالموضوع انه يمكنك التجربة على جهاز واحد بفتح اللعبة مرتين و استخدام الايبي 127.0.0.1 (موجود افتراضيا) ;)

تحياتي لك

لا اعلم
02 / 06 / 2013, 08:31 PM
ما انتبهت بجرب انشاله اذا قدرت بقرب فرصه

g.dev
02 / 06 / 2013, 11:23 PM
الله يحفظك اخي ماهر

ProToN
03 / 06 / 2013, 12:19 AM
جزاك الله خيرا يا أخ ماهر على هذا الطرح وأسلوبك جميل فى الشرح .. ووضحت الفكرة كويس ..
شكرا لك .. وإن شاء الله هطبق فى أقرب فرصة.. وياريت تستمر على هذا المنوال

matrixinc
03 / 06 / 2013, 12:45 AM
ما انتبهت بجرب انشاله اذا قدرت بقرب فرصه

تمام :dd:


الله يحفظك اخي ماهر


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

شكرا لكما على المرور الجميل ^_^

matrixinc
03 / 06 / 2013, 05:20 PM
الدرس الثاني :glee:
http://www.maxforums.net/showthread.php?t=223574