Карта PUBG для игры ARMA 2

Теги: Другое, Игры
История:

Игра Player Unknown Battlegrounds в свое время набрала большую популярность и, конечно, не могла пройти мимо моего внимания. Однако же, мне так и не удалось в нее поиграть. Друг рассказал, что даже в компьютерном клубе, после оплаты сеанса, нет возможности поиграть в PUBG, так как необходим собственный аккаунт, который подразумевает покупку игры.

В этой игре мне всегда виделась интересной возможность присутствия на огромных территориях со свободой выбора дальнейших действий. Можно обосноваться в каком-нибудь здании или отправиться в безопасную зону, перебегая от укрытия к укрытию, либо же, найти машину и доехать на ней до нужного места. Огромная карта, разнообразные объекты на ней и особенности ландшафта разогревают во мне интерес экспедитора. Сама идея игры - следование игроков после десантирования в определенное безопасное место, как бы подталкивает к изучению карты, предлагая всякий раз новое путешествие в случайно выбранную точку.

Снайперы

Другой интерес - возможность встретиться на карте с другими персонажами, путешествующими по ней. Все игроки враждебны и предсталяют опасность, поэтому всегда нужно быть на чеку, занимать наиболее удобные и тактически выгодные позиции.

Когда-то давно, в детстве я играл в игру ARMA, в самую первую часть, еще на компьютере своего старшего брата. До сих пор вспоминаю, что больше всего в ней мне нравился редактор. Я расставлял в нем разные объекты, запускал игру и изучал просторы игрового мира. И теперь, узнав об игре PUBG и о том, что изначально это была карта для игры ARMA, захотелось сделать что-то похожее для себя, чтобы иногда поиграть в нее в одиночку или по сети с другом.

Перестрелка

ARMA 2 - симулятор боевых действий. Игра, приближенная по реалистичности (насколько это позволил сделать компьютер) к настоящим военным условиям. В ней нет отображения количества здоровья, как во всех обычных шутерах, все оружие имеет свои физические свойства, из-за которых им очень сложно пользоваться. Но при этом есть возможность командовать отрядами, оказывать первую помощь, пользоваться техникой и стационарными орудиями, и даже отдавать честь.

Редактор этой игры очень увлекателен, хотя и имеет ряд неудобств в плане проработки визуальных элементов управления. В нем есть свой собственный скриптовый язык, похожий на C, на котором можно программировать собственные сложные сценарии и игровые алгоритмы, используя широкий набор команд и функций.

Я начал изучение редактора с простой карты про захват базы противника. В ней нужно было прийти в определенную точку на базе, которая была хорошо защищена. На её создание и ознакомление с возможностями редактора ушло около двух дней, потом мы с другом смогли поиграть в нее по сети, для меня это было радостно и удивительно - в то, что я сделал в редакторе, можно даже поиграть совместно.

Следующую карту я сделал про спасение заложников. Три заложника находятся в зданиях на базе террористов, на территории какого-то завода в пустыне. Для этой карты я начал использовать скрипты, описанные во внешних файлах, и понял, что это дает гораздо больше возможностей, чем встроенные в редактор элементы управления и настройки.

Десантирование

Я начал работать над этой картой с решения вопроса десантирования. Еще в карте про заложников я пытался сделать появление игроков более динамичным, чтобы они десантировались неподалеку от вражеской базы на парашютах. Однако, стандартные возможности редактора позволяли десантировать солдата только одного типа с определенным набором оружия. Заменить оружие в полете или после приземления у меня не получилось, так как, по-видимому, игра сама выдаёт оружие боевой единице только после её приземления.

Десантирование

На просторах интернета я нашел способ создания десанта с помощью внешнего скрипта из игровых миссий. Тестировать разные функции я решил на отдельной маленькой пустынной карте. Сделав автоматическое появление боевых единиц в определенной зоне на карте, я вызвал для них этот скрипт, и они стали появляться в воздухе, а затем открывать парашют, подлетая к земле, и приземляться, как и положено настоящим десантникам. Один из моментов, на понимание которого мне пришлось потратить много времени, - когда я создавал боевых единиц при помощи кода, сначала они никак не хотели создаваться, хотя, ошибок в коде я не обнаружил. Как оказалось позже, из-за каких-то особенностей игры, чтобы программно создавать солдат определенной фракции, требуется наличие какой-либо боевой единицы этой фракции на поле боя.

Следующий важный момент, который нужно было реализовать, - враждебность компьютерных игроков друг ко другу. Как оказалось, это сделать не так-то просто. Дело в том, что стандартно в игре имеется 3 основных фракции, все боевые единицы могут принадлежать к одной из них, а солдаты одной фракции не атакуют «своих». В этом заключается другой непонятный момент, который, на мой взгляд, в игре реализован нелогично - как сделать боевые единицы одной фракции противниками друг другу? Оказывается, для этого используется параметр рейтинга боевой единицы. Если значение этого параметра будет ниже -2000, то игра оценивает эту боевую единицу как принадлежащую к фракции дизертиров и врагов для всех (enemy). Странным видится то, что нельзя создать боевую единицу, изначально принадлежащую к этой фракции... Меня не оставляют сомнения, что некоторые боты не считают врагами других ботов, судя по их поведению на поле боя.

Возможности «лутать» здания в карте нет, однако всегда можно поживиться оружием, которое носят боты. Часто у них можно найти снайперскую винтовку, а иногда даже ракетницу.

Кругом враги

Следующий шаг в создании карты - реализация системы кругов. В PUBG все действие происходит на огромной карте, а цель игроков определяется двумя кругами. Внешний круг постепенно сходится до внутреннего, и все, кто выходит за радиус внешнего круга, получают повреждения. После того, как круги сошлись, начинается новый раунд - определяется новый круг внутри имеющегося. Подобную систему я реализовал за счет маркеров. В ARMA можно создавать маркеры в виде областей - прямоугольной и овальной. Я сделал так, чтобы изначально на карте присутствовал большой круг, и спустя 4 минуты начинался первый раунд, чтобы игроки успели добраться в область первого круга. Далее появляется внутренний круг (размером примерно 2/3 от радиуса внешнего), нехитрыми вычислениями внешний начинает сходиться ко внутреннему спустя полминуты.

Круги

Благодаря тому, что позиция каждого круга определяется случайным образом, каждый раз игрокам приходится продумывать новые маршруты своего движения, отправляясь в неизвестные места.

Если боевая единица не успевает добраться до круга и находится вне его радиуса, ей наносятся повреждения. Этот момент вызвал сразу несколько проблем, которые в ARMA не решаются стандартными возможностями игры.

Первая проблема - отсутствие показателя здоровья в интерфейсе. Очень неприятно находиться в неведении, сколько тебе еще осталось, когда ты судорожно пытаешься догнать сходящийся круг. Поэтому, я воспользовался дополнительным скриптом, написанным maxjoiner для игры ARMA 3, но подошедшим и для второй части игры после небольших исправлений. Теперь в игре появился, хоть и примитивный, но индикатор здоровья, с ним стало гораздо удобнее.

Снайперы

Вторая проблема - отсутствие аптечек. Немало пострадав от круга, игрок становится неспособен быстро передвигаться и нормально прицеливаться. Поэтому, какие-либо повреждения здоровья до уровня чуть ниже половины уже начинают приносить неудобства. Для решения этой проблемы я воспосользовался другим скриптом от celery, который реализует примитивную систему аптечек. Аптечки никак не отображаются в инвентаре, но их применение сделано довольно удобно. При получении повреждений, игрок может выполнить действие «Применить аптечку», если у него есть хотя бы одна. Кроме того, можно полечить товарища или передать аптечку ему. Еще одна классная возможность этого скрипта - аптечку можно взять у убитого вражеского бота.

Битва

Третья проблема - боты массово погибают от круга. Этот момент уже не так просто решить, пришлось придумывать ботам особый алгоритм «спасения». Если игрок не знает о боте - находится далеко и не видит его (есть такая хитрая функция knowsAbout), и при этом, бот находится за пределами круга, то последний перемещается в безопасную зону. Решение не самое элегантное, но работает.

При перемещнии ботов в безопасную позицию, с некоторой вероятностью, боты объединяются в группу. Это сделано, чтобы их перемещение не было напрасным - чтобы не стали сразу убивать друг друга, оказавшись слишком близко. Боты, объединившиеся в группу, помогают друг другу и играют более слаженно.

Дальше я перешёл на большую карту, в качестве местности выбрал Такистан. Это горы и холмы, между которыми располагаются дороги и небольшие поселения, нефтяные заводы, военные базы и т.д. На такой местности хорошо видно врагов издалека, поэтому мне было легче наблюдать за поведением ботов и контролировать происходящее.

Карта

Для внесения еще большей случайности в начальное расположение круга, я задал на карте несколько локаций на месте крупных городов, в позиции одной из которых изначально создается большой круг. Выбрал большой радиус десантирования так, чтобы он практически покрывал все эти города. Чтобы добираться до безопасного места было не так утомительно, я добавил на карту около 40 позиций для техники, и при старте игры случайным образом помещал в эти позиции технику (велосипеды, мотоциклы, автомобили).

Транспорт

Чтобы внести разнообразие в игровой процесс и как-то оживить его, я добавил всем ботам уникальные имена. В событии «боевая единица убита» выводил сообщение о том, что этот персонаж убит и сколько еще игроков осталось на карте. Благодаря переменной solidersCount, хранящей в себе количество игроков, сделал и условие победы. Если все противники убиты - игрок побеждает.

Боты

После десантирования всем ботам назначаются маршрутные точки в безопасную область. Изначально, когда я создавал только одну точку, бот приходил в нее и стоял на одном месте, что было довольно глупо с его стороны и делало его легкой мишенью. Для решения этой проблемы я добавил не одну, а три маршрутные точки в область круга так, чтобы добежав до первой, бот начинал перемещение ко второй в режиме поиска и уничтожения противника, затем к третьей, которая зацикливает его движение. Теперь боты стали немного интереснее и постоянно куда-то движутся.

Выживание

Однако же, это не сделало их достойными противниками для игрока. Часто мне удавалось просто отсидеться где-нибудь в укромном месте до тех пор, пока круг не сойдется до последней стадии, и боты не перестреляют друг друга. Чтобы усложнить жизнь игроку и сделать её интереснее, я добавил скрипт периодической атаки. Если расстояние от бота до игрока меньше 250м, с некоторой вероятностью, маршрутные точки бота будут заменены на другую точку, целью которой является игрок. Теперь стычки с ботами происходят довольно часто, и даже иногда удаётся проиграть. :)

У меня есть еще много идей по поводу того, что можно было бы добавить в карту и как её доработать. Возможно, со временем что-то реализую. А пока предлагаю поиграть в то, что есть на данный момент.


Версия 2.0

По прошествии некоторого времени выкладываю новую версию карты.

Все настройки отделены от основного кода - таким образом, игру можно быстро переносить на другую местность. В файле init.sqf задаются все основные параметры (количество ботов, время до начала уровня, скорость круга, высота десантирования, количество уровней и т.д.)

В карте доработана многопользовательская игра. Реализован вызов функций для передачи сообщений от сервера клиентам в ключевые моменты (например, когда была определена новая позиция центра круга, у всех игроков устанавливается метка на карте в этом месте). Благодаря настройке gameMode, которая может принимать два значения «coop» и «survival», можно определить условия победы в многопользовательской игре.

Доработан искусстенный интеллект: боты теперь ездят на машинах. В этой версии карты машины не расставляются на местности заранее, а размещаются скриптом на определенном радиусе от центра первого круга. Количество машин можно задавать в файле настроек.

В карту добавлен скрипт дропа оружия. В начале каждого уровня появляется самолет, который сбрасывает ящик с оружием. Также, добавлен скрипт прыжка, который позволяет нажатием на клавишу «Пробел» преодолевать некоторые препятствия.

#1 из 4: Версия 2.0
PUBG_new.Takistan.zip (23kb) Финальная версия карты
PUBG_mini.utes.zip (23kb) Мини-версия на карте Утес. Есть возможность игры кооперативно против ботов и друг против друга.
pubgMP.zip (8kb) Первая версия карты
hosteges.zip (1kb) Карта про заложников
Автор: SpectreZ Работа над проектом: 2020 год
+
Фильтрация по тегам
Выбранные теги отобразятся в этой области...
Найти
Программирование 38, Игры 18, Программы 13, Delphi 29, Библиотеки 15, Карты для Warcraft 1 Веб-разработка 24, Сайты под ключ 6, Дизайн 21, JavaScript 5, PHP 0, Laravel 0, Joomla 2 Графика 34, Обработка фото 6, Логотипы 2, Иллюстрации 12, Рисунки 6, Печатная продукция 1, Стикеры 2 Видео 12, Трейлеры 2, Анимация 3 Миры 1, Музыка 8, Персонажи 9, Статьи 7, Литература 7, Рассказы 5, Стихи 2, 2D 6, 3D 24, На заказ 11, Другое 2
Используйте среднюю кнопку для быстрого фильтра по тегу...
Календарь проектов
2008 3 , 2009 7 , 2010 8 , 2011 2 , 2012 3 , 2013 6 , 2014 5 , 2015 12 , 2016 6 , 2017 9 , 2018 2 , 2019 5 , 2020 6 , 2021 1