![]() |
2D Soccer Simulation - شبیه سازی فوتبال دو بعدی
فصل اول - آشنایی با شبیه سازی
سلام همانطوری که میدانید 2D Soccer Simulation ( به اختصار : 2dsoccersim ) یکی از رشته های محبوب در زمینه Robocup هست که هم در ایران و هم در سایر کشور ها سرمایه گزاری های زیادی روی اون انجام میشه . به دلیل اینکه بر خلاف سایر رشته های روبوکاپ , برای درست کردن یک تیم فوتبال شبیه سازی شده هیچ خرج و مخارجی احتیاج نیست .
|
فصل دوم - شبیه سازی فوتبال 2 بعدی
برای ایجاد و اجرای شبیه سازی دو بعدی احتیاج به موارد زیر داریم :
آشنایی در حد توابع , شرط ها و حلقه ها ...
با یوزر root لوگین شوید , قبل از شروع هرکاری باید مطمئن شوید که gcc روی لینوکس نصب هست! اگر نیست می تونید از درون سی دی لینوکس و با استقاده از Software Management توی YaST نصبش کنید یا توی Konsole بزنید: کد: yum install gcc gcc یک کامپایلر C هست که توی لینوکس خیلی استفاده میشه . بعد از اینکه مطمئن شدید gcc نصب هست باید یه پکیج دیگه بنام boost رو نصب کنید! نصب این پکیج زمان خیلی زیادی می گیره و حدود 1 گیگ هم هارد نیاز داره! البته سرور شبیه ساز فوتبال فقط نیاز به دو تا از Library های اون داره، شما می تونید فقط همون دو تا رو make و make install کنید: کد: libboost_filesystem-gcc.so libboost_program_options-gcc.s بصورت پیش فرض این Library ها توی /usr/local/lib ذخیره میشن! اما یه مشکلی که وجود داره اینه که اسم این Library ها توی پکیج جدید Boost نسبت به زمانی که Soccer Simulation Server ساخته شده فرق کرده پس باید اسم اونا رو عوض کنیم! برای این کار به /usr/local/lib برین و اسم دو تا فایل رو با این دوخط دستور عوض کنید: کد: mv libboost_filesystem-gcc41-1_34_1.so libboost_filesystem-gcc.so mv libboost_program_options-gcc41-1_34_1.so libboost_program_options-gcc.so که اگر گه Boostای که گرفتین فرق داشته باشه ممکنه اون عدد های آخر فرق کنن!
با یوزر Root لوگین شوید و تمام فایل ها را به طور کامل Extract کنید , این 3 فولدر را باید نصب کنید : rcssbase-12.1.0 rcssmonitor-12.1.0. rcssserver-12.1.1 من آموزش نصب rcssserver-12.1.1 رو میدم , بقیه به طریق مشابه است . وارد Konsole شوید و دستورات زیر را وارد کنید : کد: cd Desktopcd rcssserver-12.1.1./configuremakemake install حالا 2 فایل دیگر هم نصب کنید به همین طریق ( با تفافت اینکه cd rcssserver-12.1.1 باید تغییر کند ) , دوباره وارد Konsole شوید و دستور زیر را تایپ کنید : کد: ./rcsoccer sim (البته بودن فاصله ) حالا اگر صفحه ای شبیه صفحه زیر را مشاهده کردید ( البته بدون بازیکن ) یعنی عملیات موفقیت آمیز بوده و سرور شبیه ساز به طور کامل روی لینوکس شما نصب شده ... |
خوب دوستان در آموزش هاي بالا ياد گرفتيد كه چگونه سرور شبيه سازي دو بعدي را نصب و اجرا كنيد !
حالا دو تا فايل آموزشي بسيار مفيد با فرمت pdf براتون مي زارم كه شما رو در شبيه سازي فوتيال دو بعدي به سطح بالايي مي رسونه اما تا تهش نيست و بعد از خواندن اين دو فايل باز هم نمي توانيد تيم بنويسيد و براي مسابقات آماده شويد !! و ديگر هيچ فايل آموزشي بالاتري وجود نداره ! ان شاءالله به زودي من يك فايل آموزشي به صورت فوق كامل تهيه خواهم كرد كه از صفر صفر يعني حتي برنامه نويسي c اي كه براي شبيه سازي لازمه تا فنون و ترفند هاي secret پاياني و تاكتيك هاي جديد بازي ... ( كه البته اگه اين تيكه آخر رو بزارم فروشيش مي كنم اگر نه رايگان براي دانلود عموم مي زارم !! ) ... اما علاقه مندان فعلا اين دو فايل رو دانلود كنن تا لذت ببرن !! لينك دانلود : کد: http://people051.persiangig.ir/other/Amouzesh%202D%20soccer.rar پسورد : کد: www.people.blogfa.com دوستان اگر دلگرمي بدين سريع تر آموزشم حاضر مي شه وگر نه شايد اصلا حاضر نشه !! |
باینری تیم WrightEagle(تیم دوم جهان در سه سال گذشته! البته شایدم چهار سال گذشته!!)
کد: http://ai.ustc.edu.cn/rco/rco08/binary/WrightEagle.tar.gz یه تیم ضعیف تر برای شروع کار: کد: http://ai.ustc.edu.cn/rco/rco08/binary/ZcvcTF.tar.gz یه تیم باز هم ضعیف تر: کد: http://ai.ustc.edu.cn/rco/rco08/binary/Strive.tar.gz البته اینها بازم یه کم! قوی اند(البته برای شروع ضعیف اند) |
شروع کار
ابتدا از فایل های موجود شروع میکنیم: مهمترین فایل همون Main.cpp هست که خیلی جزیی بررسیش میکنیم،در اینجا مشخص میشه کسی که براش برنامه اجرا شده coach هست یا بازیکن. اگر coach بود از این به بعد کار با کلاس AdvancedCoach است وگرنه کار با کلاس AdvancedAgent.(باز هم تاکید میکنم برای همه اعضای تیم یک برنامه اجرا میشود و شما باید در کد خود مشخص کنید چه موقع coach اجرا شود چه وقت بازیکن، کی دفاع اجرا شود کی دروازه بان و...) پس تا اینجای کار ما به دو class مربی و بازیکن(AdvancedCoach و AdvancedAgent) رسیدیم. چون فعلا میخواییم فایل های همون وسطو بررسی کنیم (فعلا) کاری به این دو و باقی جزییات که به فایل های ریخته شده وسط بیس ربطی ندارند، کاری نداریم. Makefile و Makefile.common هم کارشون اینه که وقتی شما make رو در خط فرمان تایپ میکنید همه فایل ها رو کامپایل کرده و یک فایل به اسم TeamName]Agent] بسازند. که در حالت عادی MersadBaseAgent میباشد. فایل اجرایی شما startAll است که میاد به اندازه مورد نیاز(11 -12 تا) این MersadBaseAgent رو اجرا میکنه.startCoach و start5+goalie و ... هم تعدادی از بازیکن ها یا مربی رو اجرا میکنند. به جز killAll میتونید بقیه فایل هارو پاک کنید :دی (البته unpackLogFiles هم بعدا بدردتون میخوره، و header هم استفاده میشه، میتونید استفادش نکنید و بعد پاکش کنید، استفاده مفیدی نداره! فقط وقتی تیم start میشه نوشته های توش تو کنسول یا ... نوشته میشه. بود و نبودش یکیه،.تو start ها استفاده میشه، یعنی از بالای آنها برش دارید مساوی با اینه که ازش استفاده نمیکنید و میتونید پاکش کنید) |
بررسی فولدر های موجود و فایل های داخل آنها اول از آنهایی شروع میکنیم که زیاد باهاشون کاری نداریم، HPSو SignalHandling رو کلا باهاشون کاری نداشته باشید(شاید بعدا بخواهید تغییرشان بدهید) Formation هم نیازی به این فولدر نداره، یعنی کار formation میتونه بدون این فولدر انجام بشه(ignore ش کنید) Coach هم همانطور که از اسمش پیداست مربوط میشه به مربی، زمان شورع و کار مبتدی کاری به مربی نداشته باشید(از کار های پیشرفته تر محسوب میشه) Connection هم مربوط به ما نمیشه و اتصال بازیکنان به سرور هستش و ...(نیازی نیست تغییرش دهید) بقیه فولدر ها خیلی مهم اند و تقریبا با تک تک فایلاشون کار داریم، چون کلاس های مهمی توشون تعریف شده که خیلی استفاده میشوند. Configs: فایل های .conf اینجا هستند که اهمیتشون به اینه که راحت میشه تغییرشون داد و نیازی هم به کامپایل ندارند.( با تغییر دادن قسمتی کوچکی از آنها ممکن است تیم شما تغییر کلی ای بکند) مثل PassFactors.conf که فاکتور های پاس و ضریب آنها(وزن آنها) در آن لحاظ شده. علاوه بر این کانفیگ های اصلی Agent.conf و Coach.conf هم اینجا هست. فعلا کاری به استفاده از کانفیگ و خواندن آنها در برنامه cpp نداریم. دیگه قاعده صادق نیست(اول از اونهایی شروع میکنیم که زیاد باهاشون کاری ندارم)، WorldModel خیلی مهمه. WorldModel:تقریبا مهم ترین فولدری که باید کاملا به فایل هاش، کلاس هاش و تابع های کلاس هاش مسلط باشید. چون زیاد ازشون استفاده میشه. ارتباط یک Agent با محیط بیرون و اطرافش(شایدم سرور) از طریق WorldModel است. مثلا این که الان ball کجاست(مختصاتش) یا چه سرعتی داره(بردار سرعت، جهت و مقدار داره که البته با مشخص کردن x و y در اینجا مشخص میشه)، نزدیک ترین بازیکن به توپ کیه، هم تیمی یا نه، شمارش چنده،مختصاتش چیه و ...؛ من الان کجام، شمارم چنده، چه type ی دارم(حدود 17 type داریم،مثلا یکی تند میدود ولی مثلا زود خسته میشه، و کوچک تر از بقیس به این معنی که از فاصله کمتری میتونه رو توپ اثر بذاره و... . یعنی هر کدوم ویژگی های خاص خودشو داره) همگی اطلاعاتی هستند که WorldModel در اختیار ما قرار میده. میشه گفت کلاس WorldModelUtilities مهم ترین فایل WorldModel است.(که از WolrdModelBase ارث میبره) همون فایلیست که باید بهش مسلط باشید. قبل از توضیح WorldModelUtilities باید کلاس های زیر را بررسی کنیم:
پیشنهاد من این است کد .h تمام این کلاس ها رو بخونید.(فایل h. ی که این کلاس ها در آن تعریف شده اند) فکر کنم دیگه زیاد شد. شما اینها رو فعلا بخونید، بقیه WorldModel رو بعدا میگم. |
کمک
نقل قول:
من تازه شروع کردم به یادگیری شبیه سازی دوبعدی و روی بیس uva هم کار می کنم. مطلب شما را خواندم ۲ سوال برام ایجاد شد : ۱ - من cygwin را نصب کردم حالا چه جوری روی ویندوز بیس را اجرا کنم ؟ ۲- لینک دانلود شما خرابه! با تشکر |
اکنون ساعت 10:15 PM برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد. |
Powered by vBulletin® Version 3.8.4 Copyright , Jelsoft Enterprices مدیریت توسط کورش نعلینی
استفاده از مطالب پی سی سیتی بدون ذکر منبع هم پیگرد قانونی ندارد!! (این دیگه به انصاف خودتونه !!)
(اگر مطلبی از شما در سایت ما بدون ذکر نامتان استفاده شده مارا خبر کنید تا آنرا اصلاح کنیم)