клиент

Наконец-то чат!

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

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

Легко решилось внедрением в события переменной кому, если 0 – то всем.

Опять цвета и как можно все испортить

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

Цвета – были ужасно похожими очень многие, а потому была составлена вручную палитра цветов (пока 50 штук), для героев.
Было сделана передача в клиент, цвета героя (определяется порядковым номером в лабиринте, тупо позицией в векторе m->creatures.

Передача осуществляется как и другие параметры, при запросе getinfo.

Тень и другое

Изменил функцию тени на Flash-клиенте, теперь оно считается также как и на сервере – круговым просмотром, конечно не быстро – зато уж точно правильно.

Теперь на клиенте просмотр считается заполнением дополнительной карты, где 1 означает, что данный квадрат игрок видит, а 0 – что нет. Определение видит ли игрок, любой и объект – весьма простой – нужно посмотреть координаты и значение по этим координатам в этой карте.

Сейчас внедряем чат.

Также дописал алгоритм, поведения лучника – и теперь этот гад убивает меня быстрее, чем я его :)

Полет стрелы. Клиентская часть

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

Например, есть ограничение, что нельзя стрелять по невидимому противнику, невидимость противника сейчас на клиенте определяется чуть по другому, чем на сервере (на сервере используется алгоритм кругового обзора с прямыми лучами, а на клиенте упрощенный пока вариант – до цели меньше чем 4 клетки), была ошибка при движении невидимых противников – они все-же двигались.

Рушим сомнения

Для успешного запуска бета-версии сервера, меня останавливало несколько сомнений. Одно из них было успешно вчера преодолено.
Это скорость прорисовки, дело в том, что прорисовка на моем домашнем компе (P4 3ГГц 2Гб ОЗУ) было мягко говоря, не очень. Прорисовывалось кусками, и хотя я давно решил потом переписать функцию обрисовки, все равно был осадок. Вроде как – зачем делать гавно?

Вчера буквально одним глазком просмотрев функцию makeMap тут же вставил парочку if - и скорость прорисовки возросла в разы! Это сразу дало мне ощутимый пинок для дальнейшего развития.

Арена и воины

Доводим до ума арену, решил уменьшить ее размер (10x10) и сделать ее фиксированной вот, такого вида:
unsigned char pack[13]={255,7,88,111,133,149,86,90,104,191,1,254,7};

Собственно это сжатая на биты карта, для ее отображения небольшой код:
int TMap::MakeMapFromPack(unsigned char *pack)
{
int l =w*h;
int size_pack = l/8;
if (l % 8) size_pack++;
for(int j=0,i=0;i<size_pack;i++)
for(int k=0;k<8;k++)
if (j<l) Map[j++] = pack[i] & (1 << k);
}

Новогодние правки

Во время новогодней недели мы планировали сделать очень многое, но оказалось совсем наоборот - всем лень и некогда.
Оливье, шампанское - вот чем все заняты.

Из сделанного:

  • Внедрили навыки в код сервера, пока любой навык дает 5% к повреждению, а аналогичный навык у противника снижает на на 2.5%
  • Перемещение героя в лабиринте - теперь в два клика, первым устанавливаем путь (показывается шаги), вторым по той-же точке - команда перемещение. Клик по другой точке - установка нового пути.
  • Новые вещи

    Дорисовал набор предметов, которые можно найти в сундуке в подвале старейшины.
    Это уже известный нож, ржавый доспех и ржавая каска. Т.е. ничего нового найти у старейшины не получится.

    Вещи обладают незначительными характеристиками, нож - +5 к наносимому ущербу, каска - +5 к защите, доспех +10 к защите.


    ржавый доспех, лабиринты зыби - 7maze.ru   ржавая каска, лабиринты зыби - 7maze.ru

    Открытие сундуков

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

    Образы решил увеличить для наглядности в два раза.

    7maze - Лабиринты зыби, содержимое сундука

    Реализация сундуков

    Сделал реализацию открытия сундуков.

    На клиенте

    var sunduk = _root.maybeOpen(tx,ty);
    if (sunduk && dx<=1 && dy<=1)
    _root.openChest(tx,ty);

    Функция maybeOpen - просто проверяет что на карте в (x,y) находиться сундук (открытый или закрытый), а функция openChest - посылает на сервер сигнал open_chest.

    На сервере

    RSS-материал