готовые скрипты для игр

Игровое программирование. Уроки скриптописания

Для многих начинающих игростроевцев, которые уже собирают свою команду, чтобы слепить на коленке очередной шедевр, программирование часто видится жутким монстром, с которым непонятно как бороться. Вроде и в 3D уже рисовать умеют, и в Photoshop кисточкой сноровисто работают, и другие полезные программы неплохо знают. Но как только дело доходит до кода, начинается паника и неразбериха: “ Кто спрограммирует? Кто напишет заветные строчки? А если и напишет, то как в них потом разобраться?! ”.

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

Установка среды разработки

Классы игры и иерархия

Распаковка игровых скриптов

Настройка среды разработки

В ООП существуют три основных принципа, на которых строятся практически все логические манипуляции с объектами.

Инкапсуляция — объединение внутри объекта данных с методами для их обработки. Например, если рассматривается класс “Лампочка”, то у него должны быть методы “включить свет” и “выключить свет”.

Наследование — создание класса объектов на основе уже существующего класса. При этом создаваемый класс будет не только содержать все данные и методы базового класса, но и обладать своими собственными. Методы базового класса могут быть переопределены. Примеры наследования и переопределения: если класс “Пегас” наследуется от класса “Лошадь”, то у первого появляется новое свойство — “крылья” и соответствующий метод “махать крыльями”. Все остальное у этих двух классов одинаковое. Если мы рассмотрим класс “Русалка”, основанный на классе “Человек”, то в данном случае будет иметь место переопределение свойства “ноги” на “рыбий хвост”, а метод “двигаться” будет вместо движения ног отвечать за перемещение хвоста.

Полиморфизм — что это такое, проще всего рассмотреть на конкретном примере. Рассмотрим два класса объектов — “Пегас” и “Лошадь”. Полиморфизм заключается в том, что мы можем рассматривать любого пегаса как лошадь и, например, у обоих объектов выполнять метод “кушать траву” или “бежать галопом”.

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

Создание проекта

К сожалению, в UDE кнопка “Создать новый проект” отсутствует. Поэтому создаем в корневой папке UT2004 файл CreateNewClass.bat с командами:

echo class %pkg% extends //base class>> %pkg%\Classes\%pkg%.uc

Значение переменной pkg — это имя нашего проекта (в данном случае — Megakiller ). Остальные строки генерируют “пустой” скрипт.

Идея модификации

Перед изучением нижеследующей информации настоятельно рекомендуется изучить текстовый блок “ Анатомия Unreal-класса ”.

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

Класс оружия

Рис. 1. Диалог создания дерева классов и архивов.

Класс альтернативной стрельбы

Рис. 2. Окна с деревом классов и списком архивов.

В начале файла объявляем несколько новых свойств для объектов класса ( строки 2-5 ): визуальный тип взрыва ( ExplosionClass ), визуальный тип следа от взрыва, например на стенах ( ExplosionDecalClass ). Тип луча при альтернативной стрельбе ( BeamEffectClass ) и радиус поражения при взрыве ( DamageRadius ).

Рис. 3. Диалог создания подкласса.

Классы повреждения

Рис. 4. Окно компиляции.

Класс игрового мутатора

— просто лежать на карте ( строка 15 ). Тут нам помогает класс WeaponPickup ( строка 15 ). Подмена осуществляется функцией ReplaceWith ( строка 19 ).

Рис. 5. Сообщение об ошибке и справка.

Дуэли на «Мегакиллерах» иногда превращают обычный бой в феерическое зрелище.

Чернокожий стрелок пытается безуспешно подстрелить «античную» мадам.

Местные леди способны просто-таки заряжать вас энергией!

Каждый Чебурашка мечтает о большой пушке!

Компиляция и тестирование

Для того чтобы вы сразу могли оценить действие мутатора и поиграть в него, мы выкладываем полную версию “Мегакиллера” на наш диск.

Принципы объектно-ориентированного программирования

Класс игры имеет унифицированную архитектуру. Структура файла следующая.

— Заголовок, содержащий объявление класса:

class ClassName extends BaseClass config(user); где ClassName — название нашего класса, BaseClass — базовый класс, на основе которого создается новый класс, config(user) — пример параметра в объявлении класса — указывает, что используются конфигурационные параметры из файла User.ini. Все игровые классы имеют в качестве родительского класс Object или любой из его классов-потомков. Лексемы class и extends являются зарезервированными обязательными атрибутами объявления игрового класса. Важно запомнить, что корректным является только тот uc-файл, имя которого совпадает с названием объявленного в нем класса. И в одном uc-файле должен быть описан только один класс.

— Объявления новых переменных (свойств класса) в следующем формате:

PropertyName; или var() SimpleType PropertyName; где PropertyClass — название класса создаваемого свойства, SimpleType — элементарный тип, такой как byte (байтовое значение от 0 до 255), int (знаковый целый тип), bool (логический тип), float (знаковый вещественный тип), string (символьная строка) и т.д. (полный список элементарных типов можно посмотреть в справке UDE), PropertyName — имя нового свойства.

— Объявления новых методов или переопределение унаследованных от базового класса имеют следующий вид:

— Задание параметров (свойств) по умолчанию класса:

defaultproperties где defaultproperties — лексема, указывающая начало блока свойств, Variable1Name — название свойства, представляющего собой некоторый другой объект класса ClassName, содержащегося в u-файле с именем Package. Параметр Variable2Name имеет элементарный тип, поэтому и присваиваемое значение Variable2Value должно иметь тот же тип. Символ «=» означает операцию присвоения значения справа переменной слева. Фигурные скобки обособляют в коде блок присвоений.

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

Источник

Готовые скрипты для игр

готовые скрипты для игр

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Warspear – ролевая платформа, которая предназначена, как для мобильных устройств, так и для игры в режиме онлайн через компьютер. Несмотря на то, что ролевая игра является бесплатной, она имеет большое количество дополнительных приложений и услуг, которые игроки могут приобрести за реальные небольшие деньги. Вносить можно через различные денежные системы.

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Order and Chaos – современная ролевая игра, которая доступна на большинстве устройств в режиме онлайн. Это приложение позволяет не только полностью погрузиться в игровой мир и получить массу удовольствий, но и при этом заработать неплохие денежные средства.
Показать полностью.

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Готовый скрипт онлайн игры Drakensang Online
Наконец-то появился готовый скрипт онлайн игры Drakensang Online. Теперь вы сможете распространять свою онлайн игру в 3D. Долго работала наша команда над кражей данного готового скрипта онлайн игры. В скрипте убраны все копирайты и названия игры, которые вы сможете добавить через админ панель, чтобы не было вопросов по правам обладателя данного скрипта. Скачать готовый скрипт онлайн игры можно просто кликнув по кнопке ниже, вы скачаете даунлодер, а уже через него можно скачать любой скрипт готовой онлайн игры, представленный на нашем сайте.

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Скачать готовый скрипт онлайн игры My Lands

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Скачать готовый скрипт онлайн игры Blood and Soul
Теперь у вас появилась возможность скачать готовый скрипт онлайн игры Blood and Soul. Это клиентская онлайн ММОРПГ в стиле Фентези на самом продвинутом 3D движке с шикарными спецэффектами В этой онлайн игре создано просто все что только можно придумать, ждут жестокие сражения, беспощадные турниры, войны гильдий, свадьбы, создание семей и многое другое.. Так что кликайте по кнопке ниже и скачивайте наш даунлодер с помощью которого вы сможете скачать любой готовый скрипт онлайн игры предоставленный на нашем сайте.

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Скачать готовый скрипт онлайн игры War Thunder

Вы давно хотели иметь точно такую же игру, но не знали, как это сделать? Но теперь у вас есть прекрасная возможность скачать готовый скрипт онлайн игры и наслаждаться данным процессом. В первую очередь необходимо загрузить архив с файлом на ваш компьютер, после чего распаковать его и извлечь все файлы, которые находятся в данном архиве. Затем загрузить таблицу, произвести все необходимые настройки. После чего у вас есть возможность добавить миссий в саму игру, настроить кошельки для оплаты. Скрип работает на 100%, и если вы его скачаете и установите прямо сейчас, то можете сами в этом убедиться. В архиве могут быть представлены несколько языков. В основном это русский и английский, но конечно же. Стоит выбирать русскоязычную версию. В целом все довольно просто и никаких проблем и сложностей возникнуть не должно.

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Скачиваете архив с файлами, распаковываете их. Затем на среднем хостинге необходимо «залить» их в главную дирекцию именно в том виде, в котором они будут находиться после того, как вы проведете разархивацию. Создание базы данных – не самый сложный момент, но он требует особого внимания и учета всех особенностей данной онлайн игры. После чего все данные из архива вы переносите в таблицу базы данных, настраиваете работу всех платежных систем. Конфигурационный файл из архива должен содержать основную информацию из базы данных, если чего-то не хватает, необходимо будет восполнить информацию.

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Скачать готовый скрипт онлайн игры Karos Online
Karos Online представляет собой современную онлайн игру. Если вы хотите погрузиться в загадочный мир Азмара. Это мир фэнтези является воплощением магической силы земле, где на протяжении длительного срока идет активная борьба между темными и светлыми силами.
Показать полностью. Главный герой должен противостоять темным силам, проходить через все испытания, таким образом привести игру к тому, что победят светлые силы. Если вы заинтересованы и хотите стать обладателем данной игры, при этом получать денежные дивиденды то вы можете скачать готовый скрипт онлайн игры загрузить на свой хостинг и начать процесс заработка денег.

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Скачать готовый скрипт онлайн игры Forsaken World
Forsaken World – ролевая многопользовательская игра, которая была разработана в Китае. Игра довольно интересна и точно привлечет внимание многих игроков, т.к. помимо обыденной борьбы добра и зла, здесь можно создавать семью, играть свадьбу, приручать домашних животных.
Показать полностью. В общем, каждый игрок может стать настоящим воином и добытчиком в своей семье. В игре есть как люди, так и эльфы, и прочие существа. Всего существует 6 разновидностей героев, каждый из которых обладает какими-то своими характерными особенностями.

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Скачать готовый скрипт онлайн игры Royal Quest
Royal Quest в последнее время стала одной из наиболее популярных ролевых игр в режиме онлайн. События MMORPG Royal Quest происходят в фантастическом мире Аура. Это место, где в союзе друг с другом находятся магия, технология и алхимия. Но черные алхимики угрожают Ауре, потому что их целью является получение ценного металла, обладающего уникальными свойствами. Король предлагает за победу над этой проблемой целые замки, золото и т.д. Но все эти вещи требуются игрокам и в процессе игры, поэтому они могут это приобрести за небольшие. Но реальные деньги. У кого? У вас!

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

готовые скрипты для игр

готовые скрипты онлайн игр запись закреплена

Скачать готовый скрипт онлайн игры 11×11

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

Источник

Разработка нагрузочных скриптов для браузерных/мобильных игр. Часть 1

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

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

готовые скрипты для игр

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

Таким образом, при разработке нагрузочных скриптов приходится считаться со множеством условий, динамическими данными и прочим. Мне кажется, чем-то подобным должны заниматься люди которые создают ботов для разных онлайн-игр, чтобы автоматизировать некоторые однотипные задачи. Но в своих тестах мы стараемся реализовать все игровые активности.

Проблема релевантных данных

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

Одна из главных проблем при разработке скриптов для игры — это сложность самого слежение (трекинга) изменений, которые произошли до данного конкретного момента, перед выполнением команды. Информация об изменённом состоянии объектов, ресурсов, юнитов и пр. может прийти в любой момент, даже после выполнения не связанных с конкретными данными действий. Если пропустить данное обновление, то виртуальный пользователь (VU, тред в Jmeter) будет рассинхронизован с игрой и начнет генерить ошибки аля “недостаточно ресурсов” или «нет места на карте» и превращать нагрузочный тест в нечто бесполезное. Конечно всегда есть вероятность того, что всё же скрипт выдаст что-то типа “нельзя атаковать союзника”, если он секунду назад стал таковым, но то же самое произойдет и в настоящем клиенте.

Также осложняет жизнь то, что почти всегда все исходные данные и текущее положение дел в игровом мире приходят в клиент только при логине в игру (обычно это огромный JSON на несколько мегабайт) и далее по ходу игры клиент исходя из этих первоначальных данных и преходящих изменений находится в релевантном состоянии, то есть знает о текущем положении дел. То же самое необходимо реализовать и в скрипте, надо чтобы каждый VU “запомнил” что игра присылает на стадии логина и далее аккуратно передавать и изменять эти данные в ходе выполнения теста. Далее приведу пример как я решал проблему с одной из игр компании InnoGames.

Forge of Empires

(надеюсь это не зачтется за рекламу, нужно описать суть проблемы и решения, но не могу без краткого описания самой игры)

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

Вновь зарегистрированный игрок после логина видит примерно следующее: пустое поле и одно главное большое здание (ГЗ), пару деревьев и дорог на нем:
готовые скрипты для игр

Само незанятое поле и объекты разбиты на квадраты, в зависимости от размера приходится считаться с размером самого здания и свободного места на карте. Здания делятся на типы: жилые, производственные, военные, культурные, дороги и прочее. Разные здания производят разные ресурсы: жилые — население и деньги, производственные — товары и ресурсы, культурные — счастье и так далее. При постройке каждого здания необходимо учитывать те же самые ресурсы и если их не хватает нужно либо ждать, либо, например, построить новый дом, чтобы восполнить население. Чувствуете куда я клоню? Это не бухгалтерские проводки эмулировать 🙂

Строительство

В градостроительном симуляторе главным бизнес-процессом (назовем это так) является собственно само строительство. Это первая и главная проблема при создании скриптов для игр такого рода. Проблема постройки здания делится на несколько подзадач, которые необходимо решать одновременно:

После нескольких часов раздумий пришла идея простого алгоритма, я назвал его “строительство слоями”. Суть его в следующем. Как вы могли заметить на скриншоте сверху, ГЗ прижато к краю карты за которым уже ничего строить нельзя и это сыграло на руку. Каждый VU после логина первым делом строит дорогу по контуру карты и самого главного здания, а уже потом строит необходимые здания, возле этой дороги, пока есть место. Таким образом все здания построенные у дороги будут связаны с ГЗ. Далее мы строим следующий “слой” дороги уже по контуру построенный зданий. Таким образом, первоначальную дорогу мы строим, исходя из условия: например если слева граница карты, справа — пусто, а сверху и снизу от проверяемого квадрата пусто или что-то есть, то мы вероятно можем построить дорогу.

Примерно так (зеленый квадрат — ГЗ, жёлтый — дорога, черный — какое-либо здание):

готовые скрипты для игр

Поехали

Так как данная игра общается с клиентом исключительно посредством http с JSON`ами, я использую в Jmeter дополнительную библиотеку org.json для работы и парсинга запросов/ответов в post- и pre- процессорах.

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

Для упрощения кода впоследствии и уменьшения потребляемой памяти каждым java-тредом мы сохраняем из всего набора данных только те, которые будем использовать, поэтому предварительно необходимо создать и подключить два простеньких вспомогательных класса Entity и ExistEntity — первый отвечает за любое доступное в игре здание в принципе (со стоимостью, размером, функциями и прочим), а второй за уже построенное в городе (с координатами).

Первый POST-запрос StaticData_getData возвращает огромный JSON весом в 1-2 мегабайта. Распарсим его, создадим структуру, например HashMap и заполним её объектами Entity с ключами id, чтобы впоследствии обращаться к этому хэш-мапу за информацией о каждом конкретном здании:

Теперь каждый виртуальный пользователь знает всю необходимую информацию о зданиях. Далее необходимо “запомнить” территорию, её размеры и текущее расположение зданий в самом городе. Я использовал также HashMap, в котором в качестве ключей используются объекты класса java.awt.Point с координатами X, Y, а в качестве значений String с названием типа здания в данной координате.

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

При помощи vars.putObject() теперь каждый тред (VU) будет знать всю необходимую информацию, остаётся только вовремя обновлять данные объекты на каждом этапе выполнения скрипта, если игра присылает соответствующие данные.

Строим

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

Добавляем в HTTP Sampler jsr223 pre-processor и формируем запрос. Перебираем каждую квадратик, ищем пустой и тот, которого окружает хоть один (из 8) занятый другим объектом (включая границу) квадрат. Таким образом, мы “обведём” дорогой любой объект, включая границу территории (здесь есть большой простор для оптимизаций, надеюсь кто-нибудь подскажет более лучший алгоритм):

Далее нам необходимо построить само здание. Допустим, сейчас нам неважно какое, нам важен лишь его размер. Соответсвенно ищем на воображаемой карте такую координату, от которой на расстоянии ширины здания по оси X и высоты здания по оси Y находятся свободные квадраты, а также в одной из восьми квадратов по углам здания есть дорога (я правда проверяю 4 верхних, таким образом заполнение города идет сверху вниз):

готовые скрипты для игр

Также необходимо удостовериться, что на всей желаемой территории будущего здания не окажется какого либо объекта (дерева например):

На самом верхнем уровне тест-плана Jmeter добавляем Post-processor который, будет реагировать на каждый входящий респонс от игры, парсить его и обновлять объекты, так как нам необходимо трекать изменение ресурсов, а также обновлять виртуальную карту новыми зданиями:

Как итого после одного 12-часового нагрузочного теста можно увидеть реально построенный город с различными зданиями, которые соединены с главным зданием, а значит вполне себе неплохо функционируют:
готовые скрипты для игр

Спасибо за внимание, я решил не сваливать всё в кучу и разбить тему на несколько частей. Следующая часть будет посвящена решению той же самой проблемы, но в более жёстких условиях, когда клиент игры использует HTTP-протокол с protobuf, а обновления получает через web-сокет с STOMP.

Оставлю ссылку на наш гитхаб, может найдете что-то интересное.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Анатомия Unreal-класса