در این جلسه به معرفی اصلی ترین ابزار های شبیه سازی فوتبال دو بعدی یعنی نرم افزار RCSSServer، خواهیم پرداخت. آشنایی با سایر ابزار ها را برای جلوگیری از طولانی شدن بحث به جلسه بعد موکول می کنیم.
سرور شبیهساز فوتبال روبوکاپ (RoboCup Soccer Simulation Server) نرم افزار استانداردی است که فدراسیون روبوکاپ برای لیگ شبیهسازی فوتبال در مسابقات منتشر نموده است. این نرم افزار محیط حقیقی بازی فوتبال را با تمام جزییات اعم از وزن توپ، وزن بازیکنان، سرعت و شتاب توپ، سرعت بازیکنان، مختصات اشیاء در زمین مسابقه، تعداد گل ها، جهت وزش باد و ... به همراه قوانین فیزیکی حاکم بر مسابقه شبیهسازی میکند.
هر تیم از 12 عامل (Agent) هوشمند شامل 11 بازیکن و یک مربی تشکیل شده است. این Agent ها از نظر نقش با یکدیگر متفاوت هستند (دروازهبان، مدافع، حمله و ...). به این گونه عاملها، عاملهای ناهمگون (Heterogeneous Agents) گویند.
این Agent ها به عنوان سرویس گیرنده (Client) به نرم افزار سرویس دهنده (Server) شبیهسازی فوتبال متصل شده و از طریق پروتکل UDP/IP با آن به تبادل پیام (message) میپردازند. حاصل این تبادل پیام ها بین Server و Client ها، شبیهسازی بازی فوتبال است.
Agent ها از طریق حسگرهای مجازی خود، دانشهای محیطی (اطلاعات موجود در محیط شبیهسازی شده مثل موقعیت توپ یا بازیکنان و ...) را در قالب Message ها از سرور شبیهساز دریافت و بر اساس استراتژی و منطق راهبردی خود، تصمیمگیری نموده و نتیجه تصمیم (مثلا شوت به سمت دروازه) را از طریق Message به سرور ارسال مینمایند.
Server پیام دریافتشده را تجزیه و تحلیل نموده و با در نظر گرفتن تمامی عوامل از جمله میزان انرژی بازیکن، سرعت توپ و ... نتیجه تصمیم Agent را بر روی محیط مجازی اعمال مینماید. Message ها در قالب یک رشته کاراکتری (String) بین Server و Client ها رد و بدل میشوند.
در زیر چند نمونه از Message هایی که Client ها به سرور شبیهساز میفرستند را مشاهده مینمایید:
انتقال بازیکن مربوط به Agent جاری به نقطه (X, Y) |
move X Y |
شوت کردن توپ در جهت Direction و با قدرت Power |
kick Power Direction |
چرخاندن گردن و تغییر زاویه دید به اندازه Angle درجه |
turn-neck Angle |
یک نمونه Message از Server شبیه ساز به Client ها نیز در زیر آورده شده است:
این پیام پس از اتصال Agent به Server، از طرف Server به Agent فرستاده شده و آن را مقدار دهی اولیه می کند. Side معرف نیمه چپ یا راست زمین است. Unum شماره بازیکن (1 تا 11) و PlayMode حالت بازی که معمولا Before_Kick_Off است مگر اینکه Agent بعد از شروع بازی به سرور متصل شده باشد. |
init Side Unum PlayMode |
برای مشاهده لیست کامل Message های رد و بدلشونده بین Server شبیهساز فوتبال و Agent ها به راهنمای رسمی سرور شبیهساز فوتبال دو بعدی (لینک زیر) مراجعه نمایید:
http://sourceforge.net/apps/mediawiki/sserver/index.php?title=Users_Manual/Soccer_Server
وظیفه دیگر سرور شبیهساز فوتبال، پیش بردن زمان است. این نرم افزار، زمان ده دقیقه ای اجرای یک مسابقه فوتبال کامل را به 6000 برش زمانی گسسته و جدا از هم موسوم به سیکل (Cycle) تقسیم میکند؛ بنابراین هر Cycle، زمانی معادل 100 میلیثانیه طول میکشد. در هر Cycle تنها یک دستور جابجاکننده (مثل move یا kick) قابل اجرا است. اما دستوراتی مانند تغییر زاویه دید (turn-neck) میتوانند بارها و در کنار سایر دستورات در یک Cycle اجرا شوند. به عبارت دیگر، در طول مدت یک Cycle، همه اشیای موجود در زمین مسابقه، بیحرکت میمانند و اگر دستور جابجایی یک شی (توپ یا بازیکن) در یک Cycle به Server ارسال شود، شی مربوطه در ابتدای Cycle بعدی جابجا خواهد شد.
توجه کنید که در هر Cycle، تمامی 12 عامل (Agent) یک بار و به صورت همزمان اجرا میگردند.
بازی فوتبال در لیگ شبیه سازی دو بعدی به دو نیمه 3000 سیکلی تقسیم می شود. اگر در پایان دو نیمه، نتیجه بازی دو تیم، مساوی باشد، دو تیم در یک نیمه 1000 سیکلی با قانون گل طلایی، با یکدیگر مسابقه داده و اولین تیمی که به گل دست یابد برنده مسابقه میشود.
اگر در پایان این 1000 سیکل، نتیجه بازی همچنان مساوی باشد، دو تیم مجددا در یک نیمه 1000 سیکلی دیگر با قانون گل طلایی روبروی یکدیگر مسابقه می دهند. نیمه با قانون گل طلایی برای بار سوم تکرار نمی شود و در صورتی که نتیجه بازی همچنان مساوی باشد، برنده بازی از روی ضربات پنالتی مشخص میگردد.
از دیگر وظایف نرم افزار سرور شبیه ساز فوتبال (RCSSServer) اجرای قوانین داوری (آفساید یا ارایه کارت زرد و قرمز و ...) است. البته برخی از خطا ها توسط نرم افزار Server قابل تشخیص نبوده و در این مواقع داور انسانی خطای مربوطه را تشخیص می دهد. برای مثال احاطه کردن توپ توسط تعدادی بازیکن به صورتی که بازیکنان تیم حریف توانایی دسترسی به توپ را نداشته باشند و یا پر کردن دروازه با تعداد زیادی بازیکن، خطا هایی هستند که توسط سرور شبیه ساز (Automated Referee) قابل تشخیص نمی باشند و تشخیص آنها به عهده داور انسانی (Human Referee) است.
برای اطلاعات بیشتر در مورد قواعد بازی و خطا هایی که داور خودکار و یا داور انسانی مسئول قضاوت در مورد آنها هستند می توانید به لینک زیر مراجعه نمائید:
http://sourceforge.net/apps/mediawiki/sserver/index.php?title=Users_Manual/Overview
در جلسه آینده با سایر ابزار های مورد نیاز برای شبیه سازی فوتبال آشنا خواهید شد.
پایان جلسه ششم
حمیدرضا حسین خانی