Решил я продолжить свои изыскания в теме реализации лайфа цивилов на карте, и мне удалось изыскать очень даже такой, не стандартный подход. Во всяком случае мне ещё не попадалась такая технология реализации этой темы. А такой подход, по моему мнению, имеет в себе очень даже большой потенциал.
Так вот, во время размышлений о реализации функционала, мне пришла в голову мысль, вот ползают вокруг игрока по карте гады ползучие, скачут твари ушастые, летает там что то, стрекочет, и почему бы к этому ещё не добавить двуногих прямо ходящих! И какая прелесть), всё это за нас будет делать движок Армы.
Что понадобится сделать для этого
1 - Как ни крути) это будет аддон.
2 - В этом аддоне мы будем производить конфигурацию требуемых для реализации объектов и переконфигурацию мира АЛТИС
3 - Так же нам понадобится немножечко так функций
И ещё несколько слов о Ambient в Арме. Реализация для сингла вообще стоит смешного, а вот для мультика пришлось пойти на хитрость, и дело вот в чём, вся окружающая живность спавнится локально на клиенте, я пробовал передать выделенному серверу ссылку на бота, сервер послал меня на фиг) и сказал нет такого зверя. Но я всё так нашёл ещё одно не стандартное решение и этой проблемы, что бы и мультик тоже был кошерный. Я решил подсунуть движку пустышки который движок и будет спавнить, а те в свою очередь при инициализации будут спавнить нам правильных ботов, что нам и нужно.
И так, нам понадобится 2 объекта которые будет спавнить движок, один рабочий, другой для теста. Это у нас будет лежать в файле CfgVehicles.hpp
class CfgVehicles {
class Sign_sphere10cm_F;
class Logic_ambient_test : Sign_sphere10cm_F { // объект для тестов, это те красный фиговины над головами ботов
displayName = "Logic ambient test";
class EventHandlers {
init = "(_this select 0) spawn ptm_fnc_initCivilianAmbient";
};
};
class Logic_ambient: Logic_ambient_test { // правильный объект)
displayName = "Logic ambient";
model = "\A3\Weapons_F\empty.p3d";
};
};
Далее нам надо отредактировать сам мир, а конкретно класс AmbientA3, и сделаем мы это в файле CfgWorlds.
ВНИМАНИЕ!!! Из полей копировать не стоит, потому что я буду делать сокращения, сам аддон прилагается, всё там.
class CfgWorlds {
class DefaultWorld {
class Weather {
class Overcast;
};
};
class CAWorld : DefaultWorld {
class Grid {};
class DayLightingBrightAlmost;
class DayLightingRainy;
class DefaultClutter;
class Weather : Weather {
class Lighting;
class Overcast : Overcast {
class Weather1;
class Weather2;
class Weather3;
class Weather4;
class Weather5;
class Weather6;
};
};
};
class DefaultLighting;
class Altis : CAWorld {
class AmbientA3 {
maxCost = 1500;
/* Civilian Ambient */
/*
// Рабочая конфигурация
class Radius400_600 {
areaSpawnRadius = 400.0;
areaMaxRadius = 600.0;
spawnCircleRadius = 30.0;
spawnInterval = 4.7;
class Species {
class Logic_ambient {
maxCircleCount = "(10 * houses)";
maxWorldCount = 200;
cost = 5;
spawnCount = 1;
groupSpawnRadius = 5;
maxAlt = 900;
minAlt = -5;
};
};
};
*/
// Тестовая конфигурация
class Radius10_30 {
areaSpawnRadius = 10.0;
areaMaxRadius = 30.0;
spawnCircleRadius = 1.0;
spawnInterval = 2.0;
class Species {
class Logic_ambient_test {
maxCircleCount = "(10 * houses)";
maxWorldCount = 200;
cost = 5;
spawnCount = 1;
groupSpawnRadius = 3;
maxAlt = 900;
minAlt = -5;
};
};
};
/* ----------------- */
};
};
};
Сразу предупрежу, господа, здесь я излагаю концепцию, и над конфигурацией желательно поработать!
Далее те немножечко функций
Функция ptm_fnc_initCivilianAmbient, лежит в файле fn_initCivilianAmbient.sqf, эту функцию инициализирует объект Logic_ambient отспавненый движком, эта функция инициализирует спавн бота
Функция ptm_fnc_randomizeCiv1, лежит в файле fn_randomizeCiv1.sqf, приятнее наблюдать немножечко по разному одетых ботов, найдёте в аддоне.
И функция ptm_fnc_agentMove, лежит в файле fn_agentMove.sqf, что бы боты не таращились на нас тупо стоя на месте, а делали вид что у них очень много неотложных дел. Найдёте там же)
И всё! Коллеги! До безобразного неприличия просто!
В своих изысканиях я натолкнулся на очень интересную тему.
Она скорее всего будет полезна тем, кто создаёт сингл миссии, и сам же в них потом играет, есть кошерный способ, поддать производительности вашему клиенту, и добавить, скажем так, по больше красок, в вашу игру.
Краткая суть такова
Ваш сингл должен лежать в папке MPmission
Хостите из игры локальный сервер, это тот который не публичный, и выбираете для него вашу миссию.
Далее запускаете Headless Client, после запуска он будет ожидать старта сервера, если сервер ещё не запущен, и подключится автоматически.
Стартуете сервер
Суть затеи такова, избавить вас, клиента, он кучи математических расчётов, которые приходится делать, когда имеешь рядом большую кучу ботов, которые непременно требуют к себе применение руководящей ими роли.
А эти математические расчёты вполне могут быть и настолько ресурсоёмкими, и тем не мене они занимают своё место в очереди на исполнение, и в результате нас начинает штырить и тормозить, сводя на нет всю комфортность геймплея.
В результате, на видео, был реализован сценарий
Ботов спавнит клиент, он же сервер, и они остаются его же собственностью. Лучше так, на пальцах объяснять почему именно так, не айс), практические наблюдения, скажем так.
А контроль над ситуацией, и проведение всех необходимых расчётов передаётся Безголовому клиенту, от которого клиент-сервер получает уже готовые результаты произведённых вычислений, и применяет их к ботам.
И при таком сценарии мы упрёмся только в производительность видео карты.
Я так понял это все для экономии FPS!? По сути дела тут есть и мой интерес из темы про "Спавн Юнитов"! Так как, если заменить "Цивилов" на одну из вражеских сторон, движок будет спавнить врагов в определенном радиусе? Так?
Я так понял это все для экономии FPS!? По сути дела тут есть и мой интерес из темы про "Спавн Юнитов"! Так как, если заменить "Цивилов" на одну из вражеских сторон, движок будет спавнить врагов в определенном радиусе? Так?
не важно на кого, поройся в миссии, там вся логика, для примера.
Ввиду того, что БИСам влом запилить движок отвечающий сегодняшним временам, они сделали этот костыль, который позволяет задействовать тот вычислительный ресурс, который не использует арма. Это если на одном компе.
А по сути тема полезная в том плане, что можно поднять сервер, который по факту будет состоять из нескольких физических компов, а вот это уже реальный кул!
Сообщение отредактировал SteelRat: 14 January 2015 - 00:31
У меня тут наглое предложение возникло, как раз по вашей части)
Модуль "Side" - конечно крутой модуль, но! Что если сделать сделать так чтобы он добавлял специфики в размещение юнитов.
Например:
Вместо одного юнита он ставил АГС на высоких ногах на вышки и на крыши штабных так сказать зданий. И заодно добавлял модуль "АЛЛОВУ ГЕТ ИН" к этим самым юнитам и АГСам.
И если уж он - модуль способен определять типы здания и направления юнитов по отношению к ним, то может он будет способен распознавать навесы под которые заодно он спавнил бы определенную технику и заодно добавлял модуль "АЛЛОВУ ГЕТ ИН".
У меня тут наглое предложение возникло, как раз по вашей части)
Модуль "Side" - конечно крутой модуль, но! Что если сделать сделать так чтобы он добавлял специфики в размещение юнитов.
Например:
Вместо одного юнита он ставил АГС на высоких ногах на вышки и на крыши штабных так сказать зданий. И заодно добавлял модуль "АЛЛОВУ ГЕТ ИН" к этим самым юнитам и АГСам.
И если уж он - модуль способен определять типы здания и направления юнитов по отношению к ним, то может он будет способен распознавать навесы под которые заодно он спавнил бы определенную технику и заодно добавлял модуль "АЛЛОВУ ГЕТ ИН".
О как!!!
Сам не смогу - прошу и предлогаю вам!)
Да я уже ковырялся с ним, вот это видео как раз продукт этого ковыряния
Подойдет для диверсионных миссий и артилерию сложнее использовать будет - убил гражданского трибунал)
По поводу именно цивилов, там норм амбиент, рыбаки на пирсах и портах, рабочие на рабочих местах, и цивильный сервис тоже в наличии, только там работёнки ещё хватает, я задействовал что готово, там даже имеются классы объектов, которых в арме ещё нет)
Не хватает военной тематики - типа военных на базах и диктатуры типа комменданского часа и беспредела военных типа расстрела на улицах)
И будет супер платформа)))
Ну базы какие не какие уже есть, посмотрел я в коде на твоё предложение, там работёнки ручками хватит за глаза, это визуальное впечатление что арма делает сама.
Вот оригинальная функция оккупации билдингов, не широкий выхлоп, я скажу, и хватит забот по определению всяких цифирок)