Виктор Битюков
Виктор Битюков
Full Stack Web Developer. Делаю сайты, метаю ножи и пишу ботов для телеграм. Есть задача? Пиши в телегу: t.me/dardent
Leer 2 minutos

Хобби программиста #1 Как я создал карту "дополненной реальности" в Albion Online

Каюсь, грешен. Давно уже вырос, но всё ещё иногда поигрываю в игрульки.

Альбион Онлайн — ММО средневековой тематики, где вся экономика полностью держится на игроках. Хочешь — бери топор и играй в симулятор дровосека, хочешь — бери удочку и играй симулятор рыбалки, а если ты пришел ради PVP — лук в зубы и иди косплеить Робин Гуда.

Из интересного: весь мир играет на одном сервере

Image for post

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

Я загорелся идеей — перенести все данные по ресурсам из внешней бд на внутриигровую карту.

Спойлер: Всё получилось. Но не сразу.

Image for post

Мне везёт

Полез смотреть как защищен сайт с базой данных. Ха, да никак. Удивительное везение: запрос на получение всех точек особо никто не прятал и поэтому получить нужные данные было не сложно. На случай если "прочухают и закроют" — сделал копию всей бд на своем хосте.

Первое препятствие

Точки на карте должны были отображаться поверх игры без какого-либо окна. Перепробовав три разных варианта, остановился на канвасе с призрачным фоном. На удивление — удобненько.

Image for post
Параллельно получилась интересная функция из Diabllo 2. Если закрываешь игровую карту - ты всё еще можешь оставить дополненную, которая просто сверху прозрачно накладывается на игру. И бежать к нужной точке по ней.

Второе препятствие

Запилил приложение. И тут оказалось, что игровую карту можно масштабировать и перемещать. Если игрок трогал карту своими ручками — все точки смещались.

Неприятно, но не смертельно. Попробовал использовать библиотеку для поиска изображений по шаблону, но адекватно настроить её так и не вышло — она всё равно сбоила с 20% вероятностью. Пришлось сделать карту статичной, с указанием рамки куда нужно её поместить, если игрок всё-таки потрогал её ручками.

Image for post
Красная обводка вокруг карты — та самая рамка.

Третье препятствие

В качестве языка программирования я взял Python. И там просто охренительная сложность в сборке exe файла. Полез на форумы, а там чел пишет: "А зачем вам вообще собирать проект?"

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

Пригорел — проиграл. Остыл и разобрался с ситуацией.


Забавно, но самое сложное оказалось не написать программу, а скомпилить экзешник.

Чем всё закончилось?

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

Но карта до сих пор работают и ей пользуются :)

Image for post

Контакты для связи:
vk.com/sylar167
t.me/dardent
it@readman.pro

Виктор Битюков, Full Stack Web Developer
Делаю сайты без хурмы.
Пишу Telegram ботов.
По воскресеньям метаю ножи.

9 visitas
Añadir
Acciones
Виктор Битюков
Full Stack Web Developer. Делаю сайты, метаю ножи и пишу ботов для телеграм. Есть задача? Пиши в телегу: t.me/dardent
Seguir