Блоги

Составные картинки

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

Думаю попробовать реализовывать следующим образом:
Первым делом грузится основа, затем для загруженного клипа вызывается функция инициализации (интересно можно так напрямую, например mc.initAll()?) с передачей параметров, тех вещей, которые нужно загрузить.

Т.е. допустим амуниция/оружие рисуется на все кадры, анимация оружия только на режимах боя.

Ветераны арены

Ветеран арены. 7maze.ru - лабиринты зыбиПодумал и решил сделать для арены - количество игроков не два, а три.
Причем ветераны добавляются автоматически после 30 секундного простоя, после добавления каждого игрока.

Тех.персонажи

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

Маленькие правки

Добавил в структуру TMazeCreature exp, данный параметр уже присутствует в TMazeCreature, через TCreatureParams, но там он показывает общий опыт полученный персонажем.
А в структуре TMazeCreature будет показывать опыт набранный в текущем лабринте, также его можно будет показывать на страничке после победы - типа "выграл игрок, получил XXX опыта".

Так-же, добавил на странице ожидания арены таймер, который рефрешает страницу каждые 5 секунд, а то до этого нужно было рефрешать ручками.
Примитивный JS-скрипт:

О правильном названии функций

Делаю я арену, и натыкаюсь в одном месте на вызов не существующей функции checkMaze - подумал, нафик я ее поставил, тем более ее еще и нет, есть функция checkMazes - которая в фоне проверяет ходы, крутит таймер и все такое.
Закоментил, с надписью "что не знаю что такое".

Косяки

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

Во-первых пришлось срочно добавить переменную очередности - чтоб клиент знал, кто сейчас ходит.
Во-вторых у при получение данных о существе если это был игрок (id>10000) то второму игроку не передавалось его HP, а у меня было повязано на это условие - нет HP - не показывался персонаж (считалось что он уже умер)

Но самый главный косяк и не продуманность была в getaction - получении и обработки команд с сервера.

Принцип равновесия

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

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

Задумался

Пытался сделать уже веб реализацию арены, но вперся в то, что есть несколько статусов.

Вернее как – для начала жмем по ссылке на арене – все хорошо, мы либо попадаем в заявку, либо создаем ее. Далее должен сработать редирект на лабиринт, либо все должно вернуться на вид арены (т.е. открытое двухуровневое меню на тот уровень).

Муторно это т.к. теоретически это меню может быть в любом месте и запоминать параметры (а именно так передается сейчас пункт меню/подменю) муторно.

Реализация заявок

Собственно реализация - получение списка текущих заявок, добавление заявок и хранение их где-то.

Структура заявок - TMazeDemand
typedef struct
{
bool close; //close?
int id;
int type; //type
int place; //location
time_t stime; //start time
time_t etime; //end time
vector<int> victim; //players
} TMazeDemand;

Ну все кажется понятным, кроме close - что заявка уже закрыта (пока не знаю для чего это нужно, но кажется нужно).

Расстановка

Делаю арену, и тут маленькой подзадачкой стало расстановка игроков в лабиринте, таким образом чтоб шанс был практически равный у всех.
Сначала думал написать общий алгоритм, а потом решил, что нафик не надо, ибо количество игроков в лабиринте-арене – лимитировано.
И так вот, что получилось:
Есть лабиринт с размерами wh*wh, и есть n игроков. Задача расставить n игроков по полю наиболее равномерно, в зависимости от n.
Далее варианты:

  • Игрок один – становится ровно по центру c={wm/2,wh/2}
  • RSS-материал