You are not logged in.
Здравствуйте.
Я разрабатываю плагин ботов для мультиплеера SA-MP. На сервере не содержится никакой информации о игровом мире, по сути он просто посредник между клиентами, а клиенты получая данные (координаты позиции, взгляда, и подобное) применяют эти данные себе, и уже локально идет обработка физических столкновений и прочего. Но боты - не игроки, у них нет экземпляра игры, который обработал бы данные аналогично обычным игрокам. Это вызывает ряд проблем - боты не имеют интеллект (имеется ввиду, что нельзя создать бота подобно тому, какой создается в одиночной игре), они не "знают" физическую модель мира (спокойно проходят сквозь стены, для них это не проблема), определение попаданий в ботов так же сильно упрощено - проверка проходит ли луч прицеливания через бота (нет учета разброса выстрелов, препятствия между стреляющим и целью) и подобное. Некоторое время назад, я работал над мультиплеером S.T.A.L.K.E.R., там сервер был представлен отдельным экземпляром игры, но без графического элемента (вместо отображения мира, игрока и т.д., мы получаем консоль), т.е. сервер имеет полные данные о всем игровом мире, все расчеты идут именно на сервере, а клиенты с ним синхронизируются, не расчитывая важные данные самостоятельно (для сохранения синхронизации). И у меня появилась идея, что если сделать подобное для SA-MP - подключить экземпляр игры к серверу, без графической состовляющей, т.е. убрать рендеринг, убрать звук, оставить расчеты физики и ИИ педов. Тогда боты будут работать аналогично педам в одиночной игре, с интеллектом, и будет информация о игровом мире, вся физическая модель присутствует на сервере.
Теперь вопрос, к знающим людям: возможно ли отключить у игры рендеринг и звук, оставив работоспособными обработку физики и ИИ?
Offline
Отключить рендеринг и тд можно, но это все делать незачем. Точнее, все зависит от целей бота. Если просто нужен бот с задачами типа "сесть в ближайшую тачку и следовать за игроком" или просто "следовать за игроком", т.е для выполнения алгоритмических задач, то тут физика не нужна. Смотри исходники RakSamp bots или как-то так; гуглить на гугл-коде. Там используется RakNet - сетевой движок, который в самом сампе. Ну а для "умного" бота, даже с простыми задачами типа "добежать до координаты x,y", конечно, нужны алгоритмы оббегания препятствий и тд, т.е придется либо использовать игру, либо составлять какие-то базы объектов или типа того.
И да, зачем писать свой велосипед, если существует оф. плагин для ботов для сервера samp, да и вообще, зачем нужны боты с задачами умнее "сделать то-то столько-то раз". Задача довольно трудоёмкая.
Last edited by Jack Daniel's (05-03-2013 17:42)
Offline
Вот как раз для использования самого интеллекта ботов игры и хотел подключить её, но потом вспомнил про unix версию сервера и идея сгорела. На данный момент боты и так умеют выполнять простенькие функции, "верх" их действий - нахождение кратчайшего пути по графу путей игры и движение по нему. Но когда нужно устроить перестрелку ботов и игроков - этого крайне мало. Получаем глупые столбы, которые стреляют по координатам, даже если между ними и целью стена. Осталась только мысль с загрузкой физической модели мира игры и писать обработку физики для ботов. Дело может и интересное, но времени требует много.
на счет P.S. : функционал стандартных ботов скуден, и их максимум - расставить торговцев по городу, либо заставить кататься по записи автобуса по городу.
функционал моего плагина - link
функционал стандартных ботов - link
Last edited by 009 (05-03-2013 17:49)
Offline
Интересно насчёт *нахождения кратчайшего пути*... Уже давно мечтаю сделать GPS на радаре)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Спасибо.
Уже нашёл подходящую функцию в движке игры.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
[offtop]009 - ты тот самый Alex009, который сделал ботов в 0.2x?) Я как раз тут нарыл исходник сампа 0.2.5, испытывать не с кем, а боты бы пригодились [/offtop]
Чем больше ты будешь наворачивать бота, тем больше это будет упираться в функционал игры, так что мне кажется, что не обойдется без использования самой игры. Можно посмотреть готовые опен-сорс проекты с ботами или даже, например, в утекших исходниках Source, для помощи в разработке алгоритмов самих ботов.
Offline
[offtop]009 - ты тот самый Alex009, который сделал ботов в 0.2x?) Я как раз тут нарыл исходник сампа 0.2.5, испытывать не с кем, а боты бы пригодились [/offtop]
Чем больше ты будешь наворачивать бота, тем больше это будет упираться в функционал игры, так что мне кажется, что не обойдется без использования самой игры. Можно посмотреть готовые опен-сорс проекты с ботами или даже, например, в утекших исходниках Source, для помощи в разработке алгоритмов самих ботов.
Да, тот самый. На 0.2х были первые попытки, готовый результат был в 0.3.
Идея такого развития плагина пока не сдвинулась с мертвой точки. Учитывая что нужно поддержку и линукса и винды - игру подцепить не вариант. Остается только сделать свою реализацию обработки физики для ботов и интеллекта.
Offline
@009 - Физика в SA достаточно рудиментарна (осбенно после IV)
В тех кусках, что я выкладывал, были, как минимум структуры физического движка.
Если нужно (и если будет время), могу попробовать вспомнить, что к чему.
Offline