Sun
 
Tiger
Сегодня в Джунглях
Конкурсантов: 294
Новых участников: 57
Всего существ: 35
Публичных видов: 14


 Законы Электрических Джунглей

Обозначения

  • X% МЭ — Количество энергии в процентах от максимальной энергии (МЭ) существа.
  • K_someconst(5) — Постоянная, которая определяет значение одного параметра игры (все постоянные определены в Constants.java). В скобках указано текущее значение. Для большинства констант эти значения во время всего конкурса сохранятся, однако возможны и переопределения.

Понятия и цели

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

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

Масса и скорость. Каждое существо в ЭД обладает двумя базовыми характеристиками: массой и скоростью, а также в каждый момент времени характеризуется энергетическим уровнем. Масса совпадает с максимальной энергией (МЭ), которой может обладать существо. Если энергетический уровень падает ниже K_emin(15)% МЭ — существо умирает и вся его оставшаяся энергия доступна для потребления другими существами. Масса не может быть больше K_maxmass(1000) и меньше K_minmass(0.1). Скорость не может быть больше K_maxspeed(10) и меньше K_minspeed(1).

Общая масса вида (сумма масс всех живых существ данного вида) определяет количество очков игрока. Масса существа определяет его энергоемкость, энергопотребление за ход и повреждение, наносимое в битве.

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

Энергия является основой существования в ЭД. Любое действие (даже просто выживание) требует
потребления некоторого количества энергии. В начале игры на поле случайным образом размещаются источники
энергии, из которых существа могут черпать энергию (не более 10% МЭ). Энергия в источниках постепенно восполняется.  
Начальное количество энергии и скорость ее роста случайны и различны для разных источников. На поле имеется
NUM_REGULAR(100) обычных источников и NUM_GOLDEN(3) золотых источников, производящих гораздо больше энергии. Хотя в различных играх энергия и прирост по-разному распределены на поле, суммарная энергия и ее прирост всегда одинаковы.

Информация о внешнем мире. Существо может получить информацию о внешнем мире при помощи API BeingIntreface и PointInfo. Доступна следуюшая информация:

  • Количество энергии самого существа
  • Владелец и масса любого существа, находящегося достаточно близко (на той же клетке или на примыкающих клетках)
  • Количество энергии, скорость ее прироста и максимальная емкость в клетке
  • Список всех объектов в данной точке (в частности, других существ)
  • Суммарная масса всех живых существ в данной точке

Действия и события

За один ход существо может совершить одно действие, а также каждое существо получает оповещения о происходящих с ним событиях. Доступны следующие действия (см. EventKind.java):
  • ACTION_MOVE_TO — Перейти в другую клетку. Доступность клетки определяется скоростью существа. Стоит K_movecost(1)% скорости.
  • ACTION_EAT — Потребить энергию. Количество энергии, которую можно потребить за ход, но общая энергия не может может превышать энергоемкости (массы) и потребленная энергия не может быть больше K_bite(10)% МЭ. Бесплатно.
  • ACTION_GIVE — Передать энергию другому существу. Бесплатно.
  • ACTION_ATTACK — Атаковать другое существо, нанося повреждение в K_fight(20)% МЭ. При этом теряется K_fightcost(1)% собственной МЭ + K_retaliate(5)% МЭ атакуемого существа.
  • ACTION_BORN — Породить другое существо, возможно с немного отличающимися (не более чем на  K_minbornvariation(0.8)/K_maxbornvariation(1.2)) массой и скоростью (т.е. существо с массой 100 и скоростью 2 может порождать существа с массой от 80 до 120 и скоростью от 1.6 до 2.4). Энергия при этом делится пополам. Рождение возможно только тогда, когда у существа достаточно энергии - не менее K_toborn(80%) МЭ. Акт рождения стоит K_borncost(20)% МЭ. При этом существу можно передать "генокод" — произвольный Java объект.
  • ACTION_MOVE_ATTACK — Совмещенно двигаться и атаковать, при этом наносится меньше K_fightmovepenalty (0.75) повреждений. Стоимость совпадает с суммарной стоимостью атаки и передвижения.

Также существо получает оповещения о следующих событиях:

  • BEING_BORN — Первое оповещение, которую существо получает после рождения. Можно инициализировать различные параметры, специфичные для данного существа.
  • BEING_DEAD — Последнее оповещение, передается после смерти существа.
  • BEING_ATTACKED — Существо атаковано кем-то, идентификатор аттакующего передается как параметр.
  • BEING_ENERGY_GIVEN — Кто-то передал нам энергию.

Состязание

Состязание начинается с помещения одного существа каждого игрока в случайную точку пространства, при этом один раз вызывается метод reinit(), информирующий о текущих условиях игры и позволяющий заново инициализировать статические переменные. Параметры первого существа определяются возвращаемым значением метода Being.getParams(). Параметры всех остальных существ определяются параметрами действия ACTION_BORN. После этого у каждого существа есть возможность попытаться добиться победы в заданных условиях, как описано далее.

Виды игр (см. GameKind.java):

  1. Блицкриг — SINGLE
    Одному виду существ дается весь мир. Цель — добиться наивысшего рейтинга путем максимально эффективного использования ресурсов и быстрой разведки за данный временной интервал (200 ходов).
  2. Дуэль — DUEL
    Главный вид состязания в Электрических Джунглях. Два конкурирующих вида существ сражаются на протяжении 1000 ходов.
  3. Джунгли — JUNGLE
    До 8-ми конкурирующих видов сражаются на одном поле 2000 ходов.
О компании  |  Торговые марки  |  Copyright 2006 Sun Microsystems Inc.