Блог пользователя creator

ИИ. Обход территории. Дополнение

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

Для флага и индекса использую одну переменную в структуре TMazeCreature - это int cPoint.
В самом начале переменная равная 0 и означает, что существо (моб) прошел(узнал) не всю карту.
В случае когда карта пройдена выполняется инструкции:

ИИ. Патрулирование

Одним из важнейших составляющих игры является наличие так называемого искусственного интеллекта. Чем хуже ИИ – тем скучнее игра.

Чаще всего создатели игр компенсируют низкий интеллект мобов (компьютерных игроков), за счет повышения им характеристик и/или обмундирования.

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

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

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

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

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

Полет стрелы. Серверная часть.

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

Проверка на наличие снарядов и возможности стрельбы – очень простая: проверяется, что оружие в правой руке – тип артиллерия (TW_RANGE), наличие снарядов, что в правой есть предмет с типом снарядов (TW_ARROW), далее проверяется количество снарядов (прочность предмета).

Равновесие сил

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

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

Эти четыре пункта дают щитоносцу больший шанс на победу перед лучником.

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

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

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

Магазин

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

В дополнение, т.к. теперь в одном городе (или на точке карты) может быть несколько магазинов, то по умолчанию ссылка на магазин /shop автоматически перемещает на "лучший" (по рейтингу) магазин /shop?id=XXXX.
Рейтинг будет считаться от количества прибыли и прочего (пока в размышлениях), но понятно что частным магазинам будет очень "приятно" если их магазин будет открываться как по умолчанию.

Постройки в городе

Для бОльшой экономической составляющей решено увеличить количество построек/сооружений/учреждений в городе.
Постройки могут быть муниципальными (владелец - город) и частными.

Примеры построек:
магазин
Продает и покупает товары - вещи, артефакты, сырье

тренировочный зал
Обучает за деньги игроков боевому искусству (иными словами gold -> exp)

кузница
Создает/чинит/улучшает вещи, артефакты (про улучшения написано здесь)

рынок

Чуть-чуть про сюжет

Еще придумали линию сюжета – вернее про одну из 7 реликвий , - это мел.

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

А на момент игры, мел будет естественно утерян – а потом новых устойчивых переходов делать будет нельзя.

База, сохранение данных

В начале, было решено сохранять и загружать все объекты и их текущие состояния: игроков, лабиринты, магазины.

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

RSS-материал