72

Ragnarok Online на Godot + Python. Пустил первых игроков — теперь пишем квесты⁠⁠

Серия Ragnarok Online

В прошлом посте я рассказывал, как собираю свой Ragnarok Online на Godot и Python с помощью нейросетей. Там были конвертеры старых корейских форматов, сетевой протокол, поринги и попытки заставить Python выдерживать населённый мир.

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

Если кратко, то случился деплой.

Сервер теперь живёт на отдельной виртуальной машине, у проекта есть адрес zeroro.ru, а у сообщества — форум. Клиенты лежат на странице скачивания. Пока это ранний тест. Ошибок хватает, и я постоянно бегаю по миру, выясняя, что опять сломалось. Так что если мимо пронеслась взмыленная зёпа без привет/пока, скорее всего, это я спешу что-то тестировать или исправлять.


Windows не пустила дальше запуска

В комментариях @Fymka попробовал запустить игру на Windows и получил ошибку про SSE4.2. Выясняли конфигурацию, переписывались, пересобирали клиент. Он скачал заново, ошибка осталась.

Под Wine у меня всё запускалось. Только @Fymka от этого было не легче.

В итоге для Windows подготовил две сборки: основную x64 и дополнительную x86 с SSE2, без требования SSE4.2. На странице загрузки они находятся в одной карточке; на кнопках прямо написана архитектура.

Есть и нативная сборка macOS — универсальное приложение для Intel и Apple Silicon. Правда, её не тестировал: мне не на чем. Есть тут лица с нетрадиционным выбором техники, готовые помочь протестировать клиент?

Видеокарта и драйверы всё равно должны подходить под требования Godot. А заработало ли в итоге у @Fymka, я пока не знаю (эй, отпишись!).

Там же всплыла ещё одна неприятность: человек хотел сообщить об ошибке, а форма отправки сама отвечала ошибкой. Багрепорт на багрепорт. Приехали.

Ты родился! Что дальше?

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

И почти сразу упёрся в вопрос: куда идти?

Каюта и журнал задания: сначала ещё надо понять, где выход

Каюта и журнал задания: сначала ещё надо понять, где выход

Задание уже взято, только я об этом не знаю. В журнале написано, что надо попасть в академию. Осталось догадаться открыть журнал. Но сначала нужно найти выход из каюты, потом выход с корабля, потом ещё один корабль. Человек, который делает этот маршрут впервые, не обязан узнавать двери по старой памяти.

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

Потом я спросил: а если пойти назад? Вернулся в каюту, поднялся на другой этаж, заблудился по дороге. Маячки нужны и там. Этот маршрут тоже проверяем.

Собрали добычу — карта показывает путь к кораблю обратно в академию

Собрали добычу — карта показывает путь к кораблю обратно в академию

На скриншотах нашлось ещё весёлое. Маячок правильно указывает на преподавателя в академии, а длинный текст задания всё ещё объясняет выход из каюты. Или предметы уже собраны, а описание продолжает предлагать их собирать.

Теперь сверяем и карту, и текст задания. А то одна подсказка отправляет к преподавателю, другая обратно в каюту.

А спросить ещё раз можно?

Регистратор выдал нож и больше ничего полезного не говорил. А я мог случайно закрыть диалог. Или прочитать и через минуту забыть, к кому он меня отправлял. Снова подошёл, а спросить дорогу уже нельзя.

Нож уже в инвентаре. Теперь бы ещё вспомнить, к кому с ним идти

Нож уже в инвентаре. Теперь бы ещё вспомнить, к кому с ним идти

Поправили локально: при повторном разговоре NPC напоминают следующий шаг. Лекарь объясняет здоровье и лечение, Субино — экипировку и бой, Kafra — сохранение и хранилище.

Мы прошли практику: отправились на остров, собрали три Jellopy, вернулись, отдали добычу, посетили Kafra и закончили курс. Смотрели на каждом этапе, что говорит журнал и куда указывает карта.

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

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

На выходе KittyCat получила выпускные 100 zeny, задание закрылось, дверь выпустила её в Излюд. Из этих скриншотов собираем пошаговую инструкцию для форума. Пока проходили, заодно выловили ошибки в подсказках.

Kafra объясняет сохранение и хранилище, затем отправляет за выпускной наградой

Kafra объясняет сохранение и хранилище, затем отправляет за выпускной наградой

KittyCat после выпуска из академии

KittyCat после выпуска из академии

Для тех, кто знает RO наизусть, предусмотрели пропуск курса у Регистратора. Без выпускной награды, зато без обязательной лекции при создании очередного персонажа.

В комментариях спрашивали про долгую прокачку. Начинаю с первых десяти Job.

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

Сейчас переделываю задания после академии: хочу довести новичка до Job 10 через путешествие по городам. Сначала знакомство с городской Kafra и магазинами Излюда — покупать товары для выполнения заданий не требуется. Затем Проводник предлагает два заказа на добычу, и у каждого есть альтернатива для тех, кто пока не хочет драться.

Первый заказ — пять Jellopy и два яблока с порингов. Вместо охоты можно отнести посылку северной Kafra Пронтеры, у дороги к замку. Второй — десять Clover и три морковки с лунатиков. Его альтернатива — доставка центральной Kafra Пайона. Добычу разрешено получить от других игроков. Доставки сейчас переделываем: Проводник будет выдавать посылку отдельным предметом, который нужно принести адресату.

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

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

Если Job 10 ещё не достигнут, после второго заказа маршрут продолжается в Гефене: Kafra у южных ворот рассказывает о жизни курьера. Дальше — центральная Kafra Морока, разговор о весе сумки и хранении лишних вещей. Открывать платный склад ради задания не нужно. Завершает путешествие аудиенция у короля Рун-Мидгарда в замке Пронтеры — там новичка благодарят за помощь городам и выдают последнюю награду.

Пишу им разговоры. Например, гефенскую Kafra вчера спросили, можно ли доставить Fire Bolt в закрытом конверте. Пришлось объяснять, что после такого письма остаётся только адрес. А в Мороке перед походом к королю советуют стряхнуть песок с сапог: дворцовые ковры тоже чья-то работа.

Награды посчитали под Job 10: девять наград за прохождение цепочки, всего 570 Base EXP и 1151 Job EXP. Для персонажа с нуля это Base 8 и Job 10. Если десятый Job получен раньше, журнал переводит к выбору профессии, а оставшиеся награды не выдаются.

В журнале будут оба счётчика: сколько собрано Jellopy и сколько яблок. Маячок поведёт сдавать заказ, когда хватит всего. Отдельно проверяем сдачу: если яблок мало, Jellopy забирать нельзя. И получить награду второй раз повторным разговором тоже нельзя. В базе списание предметов, опыт и новый этап сохраняются вместе.

После Job 10 Проводник объясняет Basic Skill и показывает дорогу к выбранной гильдии. Очки за игрока не распределяем, профессию автоматически не выдаём. Условия и экзамены гильдии остаются отдельным этапом: например, будущему Магу ещё потребуется Base 10, а эта цепочка сама по себе его не гарантирует.

Всё это сейчас переделывается и проверяется локально. На боевом сервере готовую цепочку пока не ищите. До старших уровней я с этими квестами тоже ещё не добрался.

Зачем тогда свой клиент?

Меня об этом спрашивали под первым постом. Покажу на часах и чате: их уже можно пощупать в клиенте.

Часы для тех, кто играет на полный экран

В полном экране часов на панели задач не видно. Ради них сворачивать игру неудобно, поэтому сделали свои. Показывают время компьютера игрока, в 24-часовом формате, с секундами. Навёл мышь, увидел полную дату.

Включаются через Alt+T или в настройках: «Интерфейс» → «Панели» → «Часы». Их можно перетащить мышью туда, где они не заслоняют игру; положение и выбранный вид сохраняются.

Есть три размера:

  • Большие: Поринг с настоящим стрелочным циферблатом и цифровым временем под ним.

  • Стандартные: Поринг с табличкой, на которой время и дата.

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

Три размера часов и все одиннадцать вариантов оформления из клиента

Три размера часов и все одиннадцать вариантов оформления из клиента

Всем доступны розовый Поринг, зелёный Попоринг и жёлтый Дропс. На аккаунте можно открыть ещё восемь оформлений: Девилинг, Ангелинг, Мастеринг, Гостринг, Санта, Металинг, Марин и Магмаринг. У кого крылышки, у кого корона, у кого новогодний колпак. Для картинки я собрал их все, включая ещё закрытые для нового аккаунта.

Рожки или нимб у часов на характеристики персонажа не влияют. Просто мне нравятся поринги.

Чат, в котором разговор не тонет в сообщениях о добыче

На охоте чат легко превращается в непрерывный отчёт: урон, опыт, предметы, системные сообщения. Где-то между ними напарник написал, куда идти. Хорошо бы прочитать это до того, как группа ушла в другую сторону.

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

У вкладки есть и канал отправки: для «Группы» можно выбрать групповой чат. В строке ввода есть отдельный переключатель «Всем / Группа», чтобы было видно, кому ты сейчас пишешь.

Реальный интерфейс чата: отдельная вкладка группы и настройки цветов. Сообщения демонстрационные

Реальный интерфейс чата: отдельная вкладка группы и настройки цветов. Сообщения демонстрационные

Шрифт, прозрачность фона и цвета сообщений настраиваются. Можно включить время возле строк и подсветку своего имени. На большом мониторе можно увеличить текст; на светлой карте — сделать фон плотнее. Окно двигается и растягивается, а замок фиксирует его, чтобы случайно не утащить мышью. Положение и настройки сохраняются.

Для личных сообщений есть поле «Кому» и список недавних собеседников. Стрелки вверх и вниз возвращают ранее набранные сообщения. Журнал выбранной вкладки можно сохранить в TXT или HTML — например, чтобы приложить понятную историю к багрепорту.

Заодно разбирались с фокусом ввода: написал сообщение, захотел продолжить играть, а клавиши всё ещё забирает чат. Сейчас Enter в пустой строке или Esc снимают фокус, щелчок по миру тоже возвращает управление игре. Иначе жмёшь клавишу умения, а пишешь букву в чат.

В планах интерфейса — показать вещь прямо в чате

В бэклоге, в группе «Доработки», есть B-121 «Ссылки на предметы в чате». Ещё не реализовано.

Хочу сделать так: перетаскиваешь вещь из инвентаря в строку сообщения — появляется ссылка [Название вещи]. Отправляешь её в общий, групповой или личный чат. Другой игрок нажимает и видит описание именно этого экземпляра: характеристики, заточку, вставленные карты и опознание.

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

Что сохраняем в самой игре

Рейты у нас Х1/Х1/Х1: базовый опыт, профессиональный опыт и дроп. Крыльев с характеристиками не планирую. Из кастомного хочу делать косметику и удобства в интерфейсе.

У квестов фиксированная награда опытом, серверный множитель ради них не меняем.

Что дальше

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

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

После первых десяти Job хочется продолжить задания. В бэклоге лежат доски объявлений и ежедневные поручения: добыча, поездки между городами, помощь NPC. С наградами ещё надо разбираться. Дальше интересуют групповые приключения, боссы, торговые лавки и аукцион. За всё сразу браться не буду, сроков пока нет.

Есть и работа с сервером: научить сервисы перечитывать конфигурацию и сделать обновления менее болезненными для тех, кто в этот момент играет. Игрок уже добрался до поринга, не хочется выкидывать его ради очередной правки.

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

А от тех, кто играл давно, интересно услышать: что стоило бы объяснить новичку в первые полчаса, чтобы дальше он уже мог отправиться в приключение сам? И что бы вы поменяли или дополнили в интерфейсе?

Поринги передают привет. И требуют сначала разобраться с дверями.

@ares7782, @CensorAC, @wakuorin — просили пнуть, вот пожалуйста. Пинок доставлен, урон нулевой, ссылка на клиент выше :)

@Dragonslayer666, ты просил написать, где взять клиент. Тебе тоже повестка в Пронтеру!

Онлайн ретро-игры

1.4K поста3.4K подписчиков

Правила сообщества

1. Важно уважать друг-друга! Чем нас больше, тем веселее!

1.1. Вовлекай заинтересованных друзей в сообщество!

2. Пикабушник видит пикабушника из далека, когда в его нике есть "495" или "pb495"!

2.1. Увидел пикабушника в игре - не забудь заскринить!

3. Делись знаниями, инструкциями по настройке и активно вовлекай в движ!

4. Не забывай про теги: по ним товарищи будут искать нужные посты, инструкции и другие важные летописи.

5. Нужен позитивный контекст!

6
Автор поста оценил этот комментарий

О, РОшечка. Сколько выходных было потрачено. Подписался, плюс поставил. Буду следить за развитием. Завтра клиент скачаю - буду тестить. По возможности, что буду замечать - буду отписывать

раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества