PDA

View Full Version : سوال: چطور موتور یه بازی انلاین بنویسم ؟



My_LoVe_IRAN
شنبه 12 بهمن 1392, 23:58 عصر
با سلام خدمت دوستان
سوالی داشتم خدمت دوستان ،اینکه موتور بازی های انلاین چگونه نوشته میشه ؟ ایا کلا موتوری وجود داره ؟
بازی انلاینی مثل خانوارز یا تراوین چطور 24 ساعته کار میکنن ؟ منظورم اینه چطور دیتابیسشون به صورت ثانیه ای اپدیت میشه ؟ ایا یه برنامه اپلیکیشن جدا وجودداره یا ... ؟
اگر کسی از دوستان در این باره اطلاعاتی داره لطفا کمک کنه
با تشکر

ahmad156
یک شنبه 13 بهمن 1392, 00:10 صبح
در مورد Unity 3D (http://unity3d.com/) تحقیق کنی جوابتو میگیری

My_LoVe_IRAN
یک شنبه 13 بهمن 1392, 10:50 صبح
در مورد Unity 3D (http://unity3d.com/) تحقیق کنی جوابتو میگیری

با تشکر
ببخشید ،اما یونیتی چه ربطی به یه بازی انلاین داره ؟!!!
تا جایی که من میدونم اگر شما با یونیتی بازی بنویسین باید کاربر تو سیستمش یونیتی داشته باشه تا بتونه بازی کنه !
در صورتی که بازی هایی مثل خانوارز و تراوین نیاز به نصب هیچگونه نرم افزاری نداره !!!!
شما در این باره مطمئنین ؟ من میخام بازی شبیه به خانوارز یا جنگ های فضایی که که یه وبسایت هستن بنویسم نه یه بازی فلش و ... ؟!!

ahmad156
یک شنبه 13 بهمن 1392, 13:42 عصر
در حد اطلاعات عمومی فقط میدونم.آقای شهرکی (http://barnamenevis.org/member.php?55504-MMSHFE) مدیر تالار PHP توی این زمینه متخصص هستند.میتونین از ایشون بپرسین کامل جوابتون میدن

MMSHFE
یک شنبه 13 بهمن 1392, 16:22 عصر
توی پیام خصوصی گفته بودین با ASP میخواین. بنده PHP کار میکنم ولی درمورد موتور Unity3D باید بگم که این موتور میتونه برای Web و PC و XBOX و PS3 و Wii و iOS و Android و... خروجی بده. برای اجرای توی Web هم یک برنامه به اسم UnityWebPlayer داره که بطور خودکار اگه روی سیستم کلاینت نصب نباشه، دانلود و نصب میشه (البته بعد از اینکه کاربر روی لینکش توی صفحه سایتتون - که بطور خودکار تولید میشه - کلیک کرد). زبان برنامه نویسی Unity3D هم نسخه سفارشی شده #C و همچنین Javascript و یک زبان اختصاصی به اسم Boo هست و با IDE همراهش به اسم MonoDevelop و البته هر IDE دلخواه دیگه Visual Studio یا حتی ادیتورهای ساده مثل Notepad و ++Notepad و... میشه کدها رو نوشت. مدل سه بعدی هم از اکثر برنامه های رایج مثل 3D Studio MAX و Maya و ZBrush و... میشه بهش وارد کرد.

ahmad156
یک شنبه 13 بهمن 1392, 16:59 عصر
به افتخار آقای شهرکی که در نبود مدیران فعال(!!!!!!!!!) این تالار صفایی دادن به این پست:تشویق::تشویق::تشویق::تشو ق::تشویق::تشویق::تشویق::تشوی :
کاش این تالار هم یکی مثل شما داشت:ناراحت::ناراحت::ناراحت:

My_LoVe_IRAN
یک شنبه 13 بهمن 1392, 17:11 عصر
توی پیام خصوصی گفته بودین با ASP میخواین. بنده PHP کار میکنم ولی درمورد موتور Unity3D باید بگم که این موتور میتونه برای Web و PC و XBOX و PS3 و Wii و iOS و Android و... خروجی بده. برای اجرای توی Web هم یک برنامه به اسم UnityWebPlayer داره که بطور خودکار اگه روی سیستم کلاینت نصب نباشه، دانلود و نصب میشه (البته بعد از اینکه کاربر روی لینکش توی صفحه سایتتون - که بطور خودکار تولید میشه - کلیک کرد). زبان برنامه نویسی Unity3D هم نسخه سفارشی شده #C و همچنین Javascript و یک زبان اختصاصی به اسم Boo هست و با IDE همراهش به اسم MonoDevelop و البته هر IDE دلخواه دیگه Visual Studio یا حتی ادیتورهای ساده مثل Notepad و ++Notepad و... میشه کدها رو نوشت. مدل سه بعدی هم از اکثر برنامه های رایج مثل 3D Studio MAX و Maya و ZBrush و... میشه بهش وارد کرد.

خب اگر نخوام که چیزی رو کاربر نصب کنه هم امکان پذیره ؟؟؟

MMSHFE
یک شنبه 13 بهمن 1392, 17:58 عصر
نه دیگه. Unity Web Player یه چیزی تو مایه های Flash Player هست. البته Unity3D توانایی تولید خروجی SWF هم داره. بالأخره باید یه برنامه ای باشه که بازی سه بعدی شما رو توی Browser اجرا کنه.

My_LoVe_IRAN
یک شنبه 13 بهمن 1392, 19:22 عصر
نه دیگه. Unity Web Player یه چیزی تو مایه های Flash Player هست. البته Unity3D توانایی تولید خروجی SWF هم داره. بالأخره باید یه برنامه ای باشه که بازی سه بعدی شما رو توی Browser اجرا کنه.

قرار نیست بازی سه بعدی باشه !!!
میخام مثل تراوین و یا خانوارز باشه ! یه وبسایت ! اونا فقط سایت هستن ،نه بازی سه بدی !
khanwars.ir

MMSHFE
یک شنبه 13 بهمن 1392, 19:33 عصر
میدونم چه جور بازی میخواین بسازین. صحبت از موتورهای بازیسازی بود، گفتم Unity3D میتونه اینکار رو انجام بده. حالا شما بازی دوبعدی میخواین، اونطوری هم میتونه بسازه. اما اگه میخواین مثل جنگ خانها و تراوین و امثال اون باشه، باید بگم که این بازیها Engine خاصی ندارن (که بشه دانلود و استفاده کنید) و درواقع موتور پشت پرده این بازیها مخصوص همون بازی تولید شده و با ترکیب یک زبان سمت سرور مثل ASP یا PHP و یک زبان سمت کلاینت مثل Javascript یا کتابخانه های مبتنی بر اون مثل jQuery و Node.js و three.js و... و تعامل اونها به کمک AJAX و COMET و... کار میکنن. سورس اسکریپت Travian توی اینترنت قابل دانلوده (با PHP نوشته شده) و میتونید ازش ایده بگیرین. البته امروزه بازیها بیشتر دارن سمت WebGL و HTML5 میرن و Render سه بعدی عملاً توی خود Browser هم امکان پذیر شده. بحث ساخت بازی خیلی گسترده است و بنظر من (برحسب تجربه) اگه بخواین خودتون موتور براش بنویسید، خیلی زمان میبره و کار یکنفر نیست و باید تیمی کار کنید که متأسفانه بدلیل نبود استانداردهای TeamWorking یا عدم رعایت اون، توی ایران خیلی جواب نمیده و بهتره از موتورهای آماده و مخصوص این کار که در طی سالها، امتحانشون رو پس دادن استفاده کنید وگرنه بیشتر وقتتون بجای اینکه روی تجزیه و تحلیل و پیاده سازی منطق بازی بگذره، صرف رفع باگهای Engine خواهد شد.

My_LoVe_IRAN
یک شنبه 13 بهمن 1392, 19:50 عصر
میدونم چه جور بازی میخواین بسازین. صحبت از موتورهای بازیسازی بود، گفتم Unity3D میتونه اینکار رو انجام بده. حالا شما بازی دوبعدی میخواین، اونطوری هم میتونه بسازه. اما اگه میخواین مثل جنگ خانها و تراوین و امثال اون باشه، باید بگم که این بازیها Engine خاصی ندارن (که بشه دانلود و استفاده کنید) و درواقع موتور پشت پرده این بازیها مخصوص همون بازی تولید شده و با ترکیب یک زبان سمت سرور مثل ASP یا PHP و یک زبان سمت کلاینت مثل Javascript یا کتابخانه های مبتنی بر اون مثل jQuery و Node.js و three.js و... و تعامل اونها به کمک AJAX و COMET و... کار میکنن. سورس اسکریپت Travian توی اینترنت قابل دانلوده (با PHP نوشته شده) و میتونید ازش ایده بگیرین. البته امروزه بازیها بیشتر دارن سمت WebGL و HTML5 میرن و Render سه بعدی عملاً توی خود Browser هم امکان پذیر شده. بحث ساخت بازی خیلی گسترده است و بنظر من (برحسب تجربه) اگه بخواین خودتون موتور براش بنویسید، خیلی زمان میبره و کار یکنفر نیست و باید تیمی کار کنید که متأسفانه بدلیل نبود استانداردهای TeamWorking یا عدم رعایت اون، توی ایران خیلی جواب نمیده و بهتره از موتورهای آماده و مخصوص این کار که در طی سالها، امتحانشون رو پس دادن استفاده کنید وگرنه بیشتر وقتتون بجای اینکه روی تجزیه و تحلیل و پیاده سازی منطق بازی بگذره، صرف رفع باگهای Engine خواهد شد.

متاسفانه انجین اون بازی ها به در ما نمیخوره ،درسته که شبیه به هم هستن اما نمیشه استفاده کرد
درباره تراوین هم دیدم کدشو و به همین خاطر بود که وقتی دوستمون اسم یونتی رو اورد تعجب کردم !!!
درسته که این بازی ها با asp,ajax,java,jquery نوشته میشه ،اینو قبول دارم و باهاش مشکلی هم ندارم ،اما یه مشکل اساسی 24 ساعته بودن این نوع بازی هاست
عموما وقتی وبسایتی مینویسم عمل و عکس العمل داخل وبسایت وابسته به کاربر هست ،یعنی با کلیک کردن و رفرش دادن و ... که کاربر انجام میده وبسایت عکس العمل نشون میده ،اما توی بازی های انلاین یه سری کار ها بر اساس زمان خود به خود روی دیتابیس انجام میشن که به اصطلاح بهشون میگن انجین یا همون موتور ! که در این مورد اطلاعات کافی ندارم و خواستم اطلاعات بگیرم !!!

MMSHFE
یک شنبه 13 بهمن 1392, 20:32 عصر
کارهایی که روی سرور باید دائماً درحال اجرا باشن، توسط Processهای سمت سرور که دائماً درحال اجرا هستن (Application و Service و...) و یا اسکریپتهایی که هر چند وقت یکبار اجرا میشن (که توی ویندوز بهشون Scheduled Tasks و توی لینوکس بهشون Cron Jobs میگیم) انجام میشه.

mortezagt
یک شنبه 05 دی 1395, 02:59 صبح
کارهایی که روی سرور باید دائماً درحال اجرا باشن، توسط Processهای سمت سرور که دائماً درحال اجرا هستن (Application و Service و...) و یا اسکریپتهایی که هر چند وقت یکبار اجرا میشن (که توی ویندوز بهشون Scheduled Tasks و توی لینوکس بهشون Cron Jobs میگیم) انجام میشه.

ببخشید فضولی میکنم اما:
همش توی تاریخ و ساعت ورود بازیکن یا خروج بازیکن متمرکز هستش
در زمانی که بازیکن آنلاین نیست، هیچ هیچ هیچ پروسه ای توی سرور در حال اجرا نیست .
همه کارها بعد از لوگین شدن بازیکن انجام میشه.
مدت زمان بین تاریخ و ساعت اخرین ورودش و تاریخ و ساعت کنونی رو کافیه بدست بیاری و بر اساس همون، کارهای لازم رو انجام بدی مثل زمان ساخت ساختمان،نیرو، درامد منابع وووووو.....
مطمعنا الان میگید شاید یکی به بازیکنی که انلاین نیست حمله کنه و بازیکن مدافع هیچ نیرویی توی شهر نداره اما در حال ساخت نیرو هستش و اون نیروها قراره که زودتر از زمان حمله به اون آماده بشه ولی چون بازیکن مدافع آنلاین نشده که بر اساس تاریخ و ساعت پروسه ساخت نیرو رو تکمیل کنه پس در نتیجه شهر مدافع همچنان بدون نیرو باقی میمونه و مهاجم راحت شهر رو تصرف میشه..

اما جواب:
باز هم برمیگرده به همون بحث زمان و ساعت و تاریخ.
همون طور که گفتم زمانی که بازیکن وارد بازی میشه، همه پروسه های بر اساس تاریخ خروج و ورود بازیکن محاسبه میشه و نتیجه محاسبات در بانک اطلاعاتی بازی ،روی آیدی یا نام همین بازیکن ذخیره میشه. (یعنی ما میایم وقتی بازیکن لاگین کرد، ایدی بازیکن رو میدیم برای انجام بروشه).

حالا زمانی که بازیکن مهاجم حمله رو شروع میکنه، زمانی که به شهر مدافع رسید، باید خود سیستم بجای بازیکن مدافع عملیات لایگن رو انجام بده و بر اساس ساعت خروج بازیکن مدافع تا زمان شروع جنگ ، پروسه ها رو انجام بده و در نهایت میبینید که نیروهای مدافع ساخت شدن و در شهر مستقر شدن و اونوقت عملیات مربوط به جنگ آغاز میشه.
به همین خوشکلی:تشویق:

mortezagt
یک شنبه 05 دی 1395, 03:12 صبح
اینهای که گفتن بر اساس تجربه بوده و البته کمک بعضی از دوستان اینجا
خودم الان دارم یه بازی انلاین مثل تراوین رو میسازیم
شاید بشناسیدش(بازی ایکاریم)
ورژن بروز بازی رو دارم رو دات نت پیاده میکنم و از 0 تا 100 کدها رو خودم نوشتم. هیچ اسکریپتی از بازی موجود نیست البته بجز یکی که اون هم مربوط به زمان بوق علی شاه بود که همش 10 الی 20 درصد تکمیل بود که خیلی هم ناشیانه نوشته بودنش.
من ورژن جدید بازی رو دارم میسازم و تقریبا 80 درصد کار تماممممم شده و فقط مونده سیستم جنگ که این خیلی منو عذاب داره میده .
اینکه میگید بازی انلاین مثل تراوین نیاز به سرور پرقدرت داره 10 20 میلیونی داره کاملا غلطه چرا که این بازی ایکاریم بارها گسترده تر و بزرگتر از تراوین هست و من حتی روی سرورهای رایگان هم تستش کردم و فشار هم روش اوردم که ببینم چقدر سنگینه. ( 200 تا کاربر همزمان رو شبیه سازی کردم که همه در حال ارسال درخاست هستن)
دیدید؟ سرور رایگان تونست 200 کاربر همزمان رو هندل کنه اونوقت یه سرور اختصاصی 300 الی 500 تومنی نمیتونه 5 الی 10 هزار کاربر همزمان هندل کنه؟
نه عزیزم نگران هزینه سرور نباشید (البته همه بستگی به کدنویسی و طراحی داخل دیتابیس داره)
کد نویسی در حد 0 اگر باشه، سرور 500 تومنی که هیچ، سرور 50 میلیونی هم هندل نمیکنه

mortezagt
یک شنبه 05 دی 1395, 03:13 صبح
هر کس در مورد بازی انلاین مثل تراوین سوالی داشت با کمال میل دانسته هام رو باهاش شریک میشم