Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Code_Game_Challenge.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
585.22 Кб
Скачать

Содержание

  1. Code Game Challenge

    1. Обзор

    2. Правила

      1. Корабли и юниты

      2. Снаряды

  1. Программирование игрока

    1. Обзор

    2. Инициализация

    3. Движение

    4. Клиентское ПО

    5. Примеры кода

  1. Интерфейсы программирования

Code Game

1.1 Обзор

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

Корабли могут передвигаться в плоском двумерном мире. Они могут разгоняться, поворачиваться и использовать своё вооружение.

Во время проведения Code Game Challenge ваша команда должна будет написать стратегию поведения флота на языке программирования C++. Так же команде будет предоставлено специальный программный клиент для тестирования своего алгоритма.

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

1.2 Правила

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

На любое действия игрока – инициализацию, или совершение хода – дается 0.25 секунды. Если алгоритм не укладывается в это время, то его исполнение будет прервано.

И гровой мир представляет собой прямоугольник размером 6144 x 4708 единиц.

Размер игрового мира не зависит от разрешения экрана.

Каждой команде в начале матча выдается 100 кредитов. Игрок на выданные кредиты набирает себе флот. Игрок считается побежденным, когда его флот будет полностью уничтожен.

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

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

В игре 2 вида юнитов:

  • Корабли

  • Вспомогательные юниты

В игре существует корабли следующих «рас»:

  • Kohr-Ah

  • Earthling

  • Chmmr

  • Slylandro

  • Orz

Так же у некоторых рас имеются вспомогательные юниты.

Особенности кораблей и юнитов будут рассмотрены позже.

Также, в игровом мире существует еще несколько видов объектов:

  • «Космический мусор» - астероиды и планета

  • Снаряды

Объекты имеют следующие радиусы:

Объект

Радиус

Планета

220

Астероид

25-30

Корабль

15-50 (В зависимости от типа корабля)

Снаряд

15-30 (В зависимости от типа корабля)

Два объекта считаются столкнувшимися, если расстояние между их центрами меньше либо равно сумме их радиусов. Поведение объектов при столкновении приведено в таблице:

Тип объекта

Результат столкновения

Юнит

Снаряд

Снаряд исчезает. Юнит получает соответствующее кол-во повреждений.

Юнит

Объекты меняют свои скорости соответственно закону упругого столкновения.

Астероид

Планета

Тип объекта

Результат столкновения

Снаряд

Снаряд

Каждый снаряд наносит повреждения другому. Снаряды, исчерпавшие свой запас прочности или запас урона – исчезают.

Юнит

Снаряд исчезает. Юнит получает соответствующее кол-во повреждений.

Астероид

Снаряд наносит урон астероиду и исчезает

Планета

Снаряд исчезает.

Астероид

Снаряд

Снаряд наносит урон астероиду и исчезает

Юнит

Объекты меняют свои скорости соответственно закону упругого столкновения, за исключением особого случая с кораблем Slylandro.

Астероид

Объекты меняют свои скорости соответственно закону упругого столкновения.

Планета

Цель команды – набрать как можно больше очков.

Очки выдаются за:

  • Нанесение урона кораблю/юниту противника: стоимость_корабля * 10 * процент_нанесенного_урона;

  • За серию убийств противников;

  • Выживание в конце раунда,;

  • За не израсходованные кредиты в конце раунда.

Корабль, добивший более 1го противника, не умирая, приносит команде дополнительно 24 очка. Размер бонуса увеличивается с каждым следующим убийством на 12 очков. Т.е. за убийство двух противников одним кораблем – 24 очков, за третьего – 36 очков, за четвёртого – 48 очков и т.д. Также, за каждое убийство, начиная со второго, дается 1 кредит.

Когда корабль «убивают» (численность его экипажа становится равна 0), то он сгорает и через 100 тактов исчезает из игрового мира.

Когда астероид уничтожают, он исчезает из игрового мира.

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

Когда снаряд или астероид покидает границ мира, он исчезает.

Корабль может:

  • Использовать основное оружие;

  • Использовать альтернативное оружие;

  • Изменять свою скорость и направление.

      1. Юниты

Корабли обладают основным и альтернативным оружием/возможностями. Каждый корабль или юнит характеризуется следующими параметрами:

  • Численностью экипажа / запасом прочности;

  • Запасом энергии;

Характеристики кораблей:

  • Радиус;

  • Масса;

  • Скорость регенерации энергии;

  • Задержка регенерации энергии (Количество тактов, через которое начнется регенерация энергии);

  • Скорость ускорения;

  • Скорость поворота – минимальная (У всех, кроме Slylandro Probe минимальная скорость поворота = 0) и максимальная;

  • Максимальная, развиваемая за счет двигателей, скорость.

K

Стоимость: 33ед.

ohr-Ah Maradeur

Экипаж: 42 Радиус: 50

Запас энергии: 42 Масса: 80

Скорость регенерации энергии

0.03/такт

Задержка регенерации энергии

0 тактов

Максимальная скорость

5.1 ед/такт

Максимальное ускорение

0.025 ед/такт2

Максимальная угловая скорость

0.016 рад/такт

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

Альтернативное оружие – излучатель Т.О.П.К.А. («Термоядерный однофазный прецессионный каталитический аннигилятор») – создает кольцо перегретого ионизированного газа, выпускаемый по периметру корабля.

Оружие:

Основное: диск-мина

  • Диск летит, пока корабль использует своё основное оружие (Вызывается метод «использовать основное вооружение»). Имеет слабое самонаведение.

  • Каждый диск наносит 4 ед. урона.

  • Запас прочности диска: 5 ед.

  • Время перезарядки: 25 тактов.

  • Затрачиваемая энергия: 5 ед.

Вторичное: «Т.О.П.К.А.»

  • Создает быстро распространяющееся кольцо из раскалённой плазмы (16 струй).

  • Каждая струя кольца наносит 4 ед урона.

  • При столкновении плазменной струи со снарядом, снаряд аннигилируется.

  • Время перезарядки: 100 тактов.

  • Затрачиваемая энергия: 20 ед.

Стоимость: 21ед.

E arthling Cruiser

Экипаж: 20 Радиус: 50

Запас энергии: 20 Масса: 35

Скорость регенерации энергии

0.05/такт

Задержка регенерации энергии

40 тактов

Максимальная скорость

6.0 ед/такт

Максимальное ускорение

0.020 ед/такт2

Максимальная угловая скорость

0.022 рад/такт

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

Оружие:

Основное: Ядерная ракета «Выстрели-и-забудь»

  • Ракета обладает системой самонаведения.

  • При попадании наносит 4 ед. урона.

  • Запас прочности ракеты: 2 ед.

  • Время перезарядки: 80 тактов.

  • Затрачиваемая энергия: 7.5 ед.

Вторичное: Система точечной лазерной защиты

  • Выстреливает кратковременным лазерным импульсом по объекту располагающемуся в радиусе 300 ед вокруг корабля.

  • Импульс наносит 2 ед урона.

  • Время перезарядки: 65 тактов.

  • Затрачиваемая энергия: 4 ед.

  • Направлением стрельбы можно управлять (см. метод IControllable::UseSecondaryWeapon(Vec2 dir))

C

Стоимость: 51ед.

hmmr Avatar

Экипаж: 42 Радиус: 50

Запас энергии: 42 Масса: 95

Скорость регенерации энергии

0.10/такт

Задержка регенерации энергии

10 тактов

Максимальная скорость

5.0 ед/такт

Максимальное ускорение

0.021 ед/такт2

Максимальная угловая скорость

0.015 рад/такт

Chmmr Avatar – мощнейший боевой корабль, объединяющий в себе технологии нескольких рас. Несет мощнейший рентгеновский лазерный излучатель такой мощности, что даже ионизирует солнечный ветер, вызывая излучение в видимом диапазоне. Способен разрезать вражеский корабль на части за секунды, превращая бой лицом-к-лицу для врага в самоубийство. Так же корабль оснащен генератором транспортного луча, который создает искусственное гравитационное поле, притягивая жертву к лазерным когтям Avatar’а. В дополнение к этому нехилому военному потенциалу, Avatar окружен 3-мя кораблями-спутниками «ZapSat». Каждый спутник оснащен системой точечной лазерной защиты, позволяющей отбивать снаряды. Когда все 3 спутника функционируют, Avatar практически неуязвим для оружия с запасом прочности 2 или ниже.

Оружие:

Основное: Рентгеновский лазер

  • Мощнейший лазерный луч, наносит 0.3 ед урона за такт.

  • Радиус действия: 400 ед;

  • Время перезарядки: 0 тактов;

  • Затрачиваемая энергия: 0.3 ед./такт.

Вторичное: Транспортный луч

  • Притягивает все объекты, которые он пересекает, к кораблю.

  • Урона не наносит;

  • Время перезарядки: 0 тактов;

  • Затрачиваемая энергия: 0.1 ед./такт.

  • Направлением луча можно управлять (см. метод IControllable::UseSecondaryWeapon(Vec2 dir))

  • Сила притяжения: 2.22 условных Ньютона.

C hmmr ZapSat

Экипаж: 4 Радиус: 15

Запас энергии: 4 Масса: 5

Скорость регенерации энергии

0.10/такт

Задержка регенерации энергии

0 тактов

Максимальная скорость

7.0 ед/такт

Максимальное ускорение

0.050 ед/такт2

Максимальная угловая скорость

0.035 рад/такт

Chmmr ZapSat – беспилотный корабль-спутник. Вращается вокруг Chmmr Avatar, обеспечивая его защитой.

Оружие:

Основное: Система точечной лазерной защиты

  • Выстреливает кратковременным лазерным импульсом по объекту располагающемуся в радиусе 300 ед вокруг юнита.

  • Импульс наносит 1 ед урона.

  • Время перезарядки: 45 тактов.

  • Затрачиваемая энергия: 2 ед.

  • Направлением стрельбы можно управлять (см. метод IControllable::UseSecondaryWeapon(Vec2 dir))

Особенность: Механический.

S

Стоимость: 26ед.

lylandro Probe

Экипаж: 20 Радиус: 50

Запас энергии: 16 Масса: 15

Скорость регенерации энергии

0.00/такт

Задержка регенерации энергии

0 тактов

Максимальная скорость

8.0 ед/такт

Максимальное ускорение

0.00 ед/такт2

Максимальная угловая скорость

1.047 рад/такт

Минимальная угловая скорость

1.047 рад/такт

Slylandro Probe – беспилотный маневренный зонд. Был приобретён Slylandro для исследовательских нужд, чтобы устанавливать контакты с представителями других рас. Полное название зонда: Каталожный номер 2418-B: Удаленный Само-Воспроизводящийся Исследовательский Зонд. Во время неудачной перепрошивки, для само-воспроизведения был установлен неверный приоритет. Результат был ужасающим. Вместо исследовательских функций, зонд начал использовать свои энерго-разрядники для разбора дружественных кораблей на составляющие, чтобы в дальнейшем использовать их для воспроизведения.

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

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

Оружие:

Основное: Разряд транспортных динамо-элементов.

  • Создает 2 молнии, наводящихся в сторону ближайшего врага.

  • Каждая молния наносит 1 ед. урона.

  • Радиус действия: около 600 ед;

  • Время перезарядки: 60 тактов;

  • Затрачиваемая энергия: 2 ед.

Вторичное: Перезарядка динамо-элементов.

  • Уничтожает астероид, полностью восстанавливает энергию.

  • Время перезарядки: 100 тактов;

  • Для использования этой возможности нужно врезаться в астероид.

Особенность: Механический.

O

Стоимость: 23ед.

rz Nemesis

Экипаж: 16 Радиус: 35

Запас энергии: 16 Масса: 35

Скорость регенерации энергии

0.03/такт

Задержка регенерации энергии

30 тактов

Максимальная скорость

7.0 ед/такт

Максимальное ускорение

0.060 ед/такт2

Максимальная угловая скорость

0.050 рад/такт

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

Оружие:

Основное: Шоковая гаубица

  • Стреляет небольшим, очень быстрым снарядом, который при попадании наносит 3 ед. урона.

  • Запас прочности снаряда: 4 ед.

  • Время перезарядки: 30 тактов.

  • Затрачиваемая энергия: 6 ед.

Вторичное: Запуск захватчиков

  • Выбрасывает 1 члена экипажа в бронированном экзоскелете в космос (В корабле становится на 1 ед. экпиажа меньше).

  • Время перезарядки: 30 тактов.

  • Затрачиваемая энергия: 4 ед.

Orz M arine

Запас прочности: 2 Радиус: 6

Запас энергии: 0 Масса: 1

Скорость регенерации энергии

0.00/такт

Задержка регенерации энергии

0 тактов

Максимальная скорость

7.50 ед/такт

Максимальное ускорение

0.100 ед/такт2

Максимальная угловая скорость

0.035 рад/такт

Orz Marine – экзо-скелет, рассчитанный на одного члена экипажа Orz. Захватчики Orz в бою летят в своих бронированных экзо-скелетах к кораблям врага, пробуривают дыру в корпусе (В результате разгерметизации в космос выбрасывает 1 члена экипажа вражеского корабля – он мгновенно погибает), и начинает методично истреблять население корабля: Каждые 50-100 тактов случается одно из следующих событий:

  • В 7 из 16 случаев ничего не происходит;

  • В 8 из 16 случаев захватчик убивает 1 члена экипажа. Если этот член экипажа был последним на кораблей – то корабль переходит под командование Orz. Каждый захватчик на корабле переходит в 2 ед. прочности.

  • В 1 из 16 случаев захватчика убивают озверевшие члены экипажа захватываемого корабля.

Если корабль уничтожат, пока в нем были захватчики, то они автоматически эвакуируются.

Каждый экзо-скелет оборудован антигравитационным тормозным двигателем, замедляющим захватчика на 1% от его текущей скорости.

Захватчик не может внедряться в корабли с механическим экипажем.

Особенность: Малая инерция.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]