===== Игровой процесс ===== Игровой процесс довольно прост: регистрируемся, программируем змей, посылаем их в бой и повышаем свой рейтинг. Регистрация и авторизация в игре пока что будет своя, в будущем, возможно, будут использоваться форумная авторизация. ==== Участие в рейтинге ==== В рейтинге участвуют игроки, а не змеи. Чтобы вступить в соревнование, игрок должен выбрать бойца — одну из своих обычных змей, которая будет сражаться за рейтинг. Бойца в любой момент можно заменить (при этом рейтинг не сбрасывается), но отказаться от участия в рейтинге уже нельзя (спорно). ==== Игровое поле ==== Размер поля — 25×25 клеток, препятствия отсутствуют. Начальная длина змеи: 10 клеток. Змеи расположены по серединным вертикали и горизонтали поля, хвост у границы поля, голова направлена к центру поля. Т. о. между головами змей можно вписать квадрат 5×5 клеток, змеи могут видеть друг друга с самого начала. первая змея находится внизу поля, вторая слева, третья вверху, четвертая справа. ==== Управление змеями ==== Есть три типа змей: * Временные. Эти змеи не хранятся на сервере, они существуют только на стороне клиента. Каждый раз, когда игрок создает новую змею или изменяет программу обычной змеи или бота и не сохраняет изменения, появляется временная змея. * Обычные. Эти змеи уже хранятся на сервере. Только змеи этого типа могут быть бойцами. * Боты. Хранятся на сервере. Предназначены для обучения новичков и тестирования программ. Программу бота могут видеть (но не редактировать) все игроки. Игрок может свободно создавать, модифицировать и удалять змей. Единственное ограничение — нельзя удалять бойцов. ==== «Заказ» боя ==== При «заказе» боя игрок выбирает его тип — тренировочный или рейтинговый. В тренировочном бою игрок может выставлять любых змей любых типов любых игроков в любом количестве (от 1 до 4), в том числе несколько экземпляров одной и той же змеи. На рейтингах результаты боя никак не отражаются. Игрок задает максимальное количество ходов (не более 1000), после которого бой прекращается. Рейтинговый бой почти наверняка приведет к изменению рейтингов его участников, причем рейтинг может как вырасти, так и упасть. Для «заказа» такого боя игрок должен участвовать в рейтинге. Игрок выбирает ровно трех игроков-соперников, участвующих в рейтинге. Сражение ведется между бойцом «заказчика» и бойцами выбранных игроков. Лимит ходов для таких боев всегда равен 1000. ==== Просмотр боя ==== Все бои рассчитываются на сервере. Сервер для каждого игрока хранит записи нескольких последних боев, в которых участвовали его змеи. Если в бою участвовали змеи игрока или боты, то для каждой такой змеи доступна отладочная информация: программа змеи на момент боя и (для каждого хода) решение, принятое змеей (номер и вариант карты либо причина, по которой карты не использовались). Игрок может приостановить показ боя и снова запустить его, «перемотать» запись к желаемому шагу, просматривать запись пошагово с отображением отладочной информации. Игрок может сохранить запись боя для просмотра позже (количество сохраненных записей ограничено). У каждой такой записи может быть краткое описание, которое игрок может редактировать. ==== Объекты ==== === Игрок === Данные игрока: * идентификатор (неизменен); * данные для аутентификации (логин, пароль); * имя; * рейтинг; * список змей; * списки боев: * последние «заказанные»; * последние рейтинговые бои, в которых участвовал боец игрока (кроме «заказанных» игроком); * бои, сохраненные игроком. === Змея === Данные змеи: * идентификатор (неизменен); * идентификатор владельца (неизменен); * тип (обычная/бот); * имя; * идентификатор окраски («шкурки»); * текстовое описание программы; * пользовательские наборы элементов для программы; * набор карт программы: * текстовое описание карты; * положение головы; * шаблоны. === Бой === Данные боя: * идентификатор; * дата и время; * тип (тренировочный/рейтинговый); * лимит ходов; * исход боя (осталась одна змея/превышен лимит ходов/нет возможных ходов); * краткое описание боя (только для сохраненных); * список ходов; для каждого хода: * очередность шагов; * для каждой змеи: * направление шага (прямо/направо/налево/на месте); * использованная карта и вариант / причина, по которой карты не использовались (съедена/нет ходов/единственный ход/нет подходящей карты); * список змей; для каждой змеи: * идентификатор змеи; * имя змеи; * окраска змеи; * идентификатор владельца; * имя владельца; * исходный рейтинг владельца (только для рейтинговых боев); * итоговый рейтинг владельца (только для рейтинговых боев); * программа. Все данные боя, кроме описания, неизменны.