Виктор Битюков
Хобби программиста #1 Как я создал карту "дополненной реальности" в Albion Online
Каюсь, грешен. Давно уже вырос, но всё ещё иногда поигрываю в игрульки.
Альбион Онлайн — ММО средневековой тематики, где вся экономика полностью держится на игроках. Хочешь — бери топор и играй в симулятор дровосека, хочешь — бери удочку и играй симулятор рыбалки, а если ты пришел ради PVP — лук в зубы и иди косплеить Робин Гуда.
Из интересного: весь мир играет на одном сервере
К этой игре есть большая база данных на внешнем сайте, где показаны все точки спавна нужных предметов. Но это было неудобно: тебе либо нужен второй монитор, либо постоянно сворачивать игру и смотреть правильно ли ты идешь.
Я загорелся идеей — перенести все данные по ресурсам из внешней бд на внутриигровую карту.
Спойлер: Всё получилось. Но не сразу.
Мне везёт
Полез смотреть как защищен сайт с базой данных. Ха, да никак. Удивительное везение: запрос на получение всех точек особо никто не прятал и поэтому получить нужные данные было не сложно. На случай если "прочухают и закроют" — сделал копию всей бд на своем хосте.
Первое препятствие
Точки на карте должны были отображаться поверх игры без какого-либо окна. Перепробовав три разных варианта, остановился на канвасе с призрачным фоном. На удивление — удобненько.
Второе препятствие
Запилил приложение. И тут оказалось, что игровую карту можно масштабировать и перемещать. Если игрок трогал карту своими ручками — все точки смещались.
Неприятно, но не смертельно. Попробовал использовать библиотеку для поиска изображений по шаблону, но адекватно настроить её так и не вышло — она всё равно сбоила с 20% вероятностью. Пришлось сделать карту статичной, с указанием рамки куда нужно её поместить, если игрок всё-таки потрогал её ручками.
Третье препятствие
В качестве языка программирования я взял Python. И там просто охренительная сложность в сборке exe файла. Полез на форумы, а там чел пишет: "А зачем вам вообще собирать проект?"
И ведь действительно, зачем, я ведь только разрабатываю, зачем мне что-то для конечно пользователя.
Пригорел — проиграл. Остыл и разобрался с ситуацией.
Забавно, но самое сложное оказалось не написать программу, а скомпилить экзешник.
Чем всё закончилось?
Программу сделал, записал видео о новой внутриигровой карте и распространил её среди русскоязычной аудитории. Через месяц получил большой заказ и забросил игру.
Но карта до сих пор работают и ей пользуются :)
Контакты для связи:
vk.com/sylar167
t.me/dardent
it@readman.pro
Виктор Битюков, Full Stack Web Developer
Делаю сайты без хурмы.
Пишу Telegram ботов.
По воскресеньям метаю ножи.