#1 25-02-2013 09:55

009
From: Кемерово
Registered: 06-03-2009
Posts: 46
Website

Использование игры в виде подключаемого модуля

Здравствуйте.
    Я разрабатываю плагин ботов для мультиплеера SA-MP. На сервере не содержится никакой информации о игровом мире, по сути он просто посредник между клиентами, а клиенты получая данные (координаты позиции, взгляда, и подобное) применяют эти данные себе, и уже локально идет обработка физических столкновений и прочего. Но боты - не игроки, у них нет экземпляра игры, который обработал бы данные аналогично обычным игрокам. Это вызывает ряд проблем - боты не имеют интеллект (имеется ввиду, что нельзя создать бота подобно тому, какой создается в одиночной игре), они не "знают" физическую модель мира (спокойно проходят сквозь стены, для них это не проблема), определение попаданий в ботов так же сильно упрощено - проверка проходит ли луч прицеливания через бота (нет учета разброса выстрелов, препятствия между стреляющим и целью) и подобное. Некоторое время назад, я работал над мультиплеером S.T.A.L.K.E.R., там сервер был представлен отдельным экземпляром игры, но без графического элемента (вместо отображения мира, игрока и т.д., мы получаем консоль), т.е. сервер имеет полные данные о всем игровом мире, все расчеты идут именно на сервере, а клиенты с ним синхронизируются, не расчитывая важные данные самостоятельно (для сохранения синхронизации). И у меня появилась идея, что если сделать подобное для SA-MP - подключить экземпляр игры к серверу, без графической состовляющей, т.е. убрать рендеринг, убрать звук, оставить расчеты физики и ИИ педов. Тогда боты будут работать аналогично педам в одиночной игре, с интеллектом, и будет информация о игровом мире, вся физическая модель присутствует на сервере.
    Теперь вопрос, к знающим людям: возможно ли отключить у игры рендеринг и звук, оставив работоспособными обработку физики и ИИ?

Offline

#2 05-03-2013 17:39

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Re: Использование игры в виде подключаемого модуля

Отключить рендеринг и тд можно, но это все делать незачем. Точнее, все зависит от целей бота. Если просто нужен бот с задачами типа "сесть в ближайшую тачку и следовать за игроком" или просто "следовать за игроком", т.е для выполнения алгоритмических задач, то тут физика не нужна. Смотри исходники RakSamp bots или как-то так; гуглить на гугл-коде. Там используется RakNet - сетевой движок, который в самом сампе. Ну а для "умного" бота, даже с простыми задачами типа "добежать до координаты x,y", конечно, нужны алгоритмы оббегания препятствий и тд, т.е придется либо использовать игру, либо составлять какие-то базы объектов или типа того.

И да, зачем писать свой велосипед, если существует оф. плагин для ботов для сервера samp, да и вообще, зачем нужны боты с задачами умнее "сделать то-то столько-то раз". Задача довольно трудоёмкая.

Last edited by Jack Daniel's (05-03-2013 17:42)

Offline

#3 05-03-2013 17:45

009
From: Кемерово
Registered: 06-03-2009
Posts: 46
Website

Re: Использование игры в виде подключаемого модуля

Вот как раз для использования самого интеллекта ботов игры и хотел подключить её, но потом вспомнил про unix версию сервера и идея сгорела. На данный момент боты и так умеют выполнять простенькие функции, "верх" их действий - нахождение кратчайшего пути по графу путей игры и движение по нему. Но когда нужно устроить перестрелку ботов и игроков - этого крайне мало. Получаем глупые столбы, которые стреляют по координатам, даже если между ними и целью стена. Осталась только мысль с загрузкой физической модели мира игры и писать обработку физики для ботов. Дело может и интересное, но времени требует много.

на счет P.S. : функционал стандартных ботов скуден, и их максимум - расставить торговцев по городу, либо заставить кататься по записи автобуса по городу.
функционал моего плагина - link
функционал стандартных ботов - link

Last edited by 009 (05-03-2013 17:49)

Offline

#4 10-03-2013 20:30

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Использование игры в виде подключаемого модуля

Интересно насчёт *нахождения кратчайшего пути*... Уже давно мечтаю сделать GPS на радаре)


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#5 11-03-2013 03:01

009
From: Кемерово
Registered: 06-03-2009
Posts: 46
Website

Re: Использование игры в виде подключаемого модуля

@DK22Pac - простая реализация алгоритма дейкстры для нахождения по пути по графу (граф дан - все пути игры **NODES.dat)

Offline

#6 11-03-2013 11:34

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Использование игры в виде подключаемого модуля

Спасибо.
Уже нашёл подходящую функцию в движке игры. wink


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#7 17-03-2013 18:15

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Re: Использование игры в виде подключаемого модуля

[offtop]009 - ты тот самый Alex009, который сделал ботов в 0.2x?) Я как раз тут нарыл исходник сампа 0.2.5, испытывать не с кем, а боты бы пригодились [/offtop]
Чем больше ты будешь наворачивать бота, тем больше это будет упираться в функционал игры, так что мне кажется, что не обойдется без использования самой игры. Можно посмотреть готовые опен-сорс проекты с ботами или даже, например, в утекших исходниках Source, для помощи в разработке алгоритмов самих ботов.

Offline

#8 17-04-2013 12:36

009
From: Кемерово
Registered: 06-03-2009
Posts: 46
Website

Re: Использование игры в виде подключаемого модуля

Jack Daniel's wrote:

[offtop]009 - ты тот самый Alex009, который сделал ботов в 0.2x?) Я как раз тут нарыл исходник сампа 0.2.5, испытывать не с кем, а боты бы пригодились [/offtop]
Чем больше ты будешь наворачивать бота, тем больше это будет упираться в функционал игры, так что мне кажется, что не обойдется без использования самой игры. Можно посмотреть готовые опен-сорс проекты с ботами или даже, например, в утекших исходниках Source, для помощи в разработке алгоритмов самих ботов.

Да, тот самый. На 0.2х были первые попытки, готовый результат был в 0.3.
Идея такого развития плагина пока не сдвинулась с мертвой точки. Учитывая что нужно поддержку и линукса и винды - игру подцепить не вариант. Остается только сделать свою реализацию обработки физики для ботов и интеллекта.

Offline

#9 19-04-2013 15:12

listener
From: Vice City
Registered: 09-11-2006
Posts: 615
Website

Re: Использование игры в виде подключаемого модуля

@009 - Физика в SA достаточно рудиментарна (осбенно после IV)
В тех кусках, что я выкладывал, были, как минимум структуры физического движка.
Если нужно (и если будет время), могу попробовать вспомнить, что к чему.


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

Board footer

Powered by FluxBB