46

Ragnarok Online на Godot + Python, часть 3. Отчитываюсь по списку⁠⁠

Серия Ragnarok Online

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

Путь после академии закончил. От выпуска до Job 10 теперь можно дойти через Излюд, Пронтеру, Пайон, Гефен и Морок, с посылками для Kafra и аудиенцией у короля. Посылки стали настоящими предметами в сумке. Квестовые вещи случайно выбросить нельзя, проверял.

Ссылки на вещи в чате сделал. Тащишь вещь из инвентаря в строку сообщения, и в чате появляется жёлтое [название]. Щёлкнул по нему и видишь именно этот нож: заточку, карты, опознан или нет. Ссылку собирает сервер из твоей сумки, так что нарисовать себе «+10 с четырьмя картами» не получится.

Патчи похудели. Раньше обновление весило 170–186 МБ, и линуксоиды (я в том числе) ругались. Теперь клиент держит базу и докачивает к ней маленький кусок. Манифест подписан, подменить патч по дороге нельзя.

Доска объявлений появилась. Стоит у Kafra в центре Пронтеры: просьбы горожан и охота на каждый день.

Боссы научились драться. Про них ниже, это была самая большая работа недели.

Лавки и аукцион есть. Аукционистка ждёт у южной Kafra Пронтеры, а лавка Торговца запоминает название и цены.

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

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

Из восьми пунктов семь. Ниже подробнее и про то, что в список не влезло.

Ссылка на вещь в чате и окно, которое открывается по щелчку

Ссылка на вещь в чате и окно, которое открывается по щелчку

Немного цифр

На сервере 36 аккаунтов, за ними 28 человек: мультиаккаунты у нас не запрещены. Персонажей 46, пик за сутки 7 человек онлайн. Немного, но они бегают по миру, ловят баги и пишут мне о них. Мне это очень нравится.

С первого поста прошло две недели:

  • версия игры была 0.223, сейчас 0.511, это почти 270 обновлений;

  • локаций было 100, стало 122;

  • видов монстров на картах было 160, стало 186;

  • автотестов было около 3 300, стало около 5 400;

  • строк кода на Python было 68 тысяч, стало 138 (вместе с сайтом), на GDScript было 75 тысяч, стало 100, на Lua было 18 тысяч, стало 33.

Боссы стали боссами

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

Монстры лечатся, телепортируются, прячутся (Ruwach их находит), ставят ловушки, кидают Meteor Storm и Lord of Vermilion. Оглушают, усыпляют, проклинают, превращают в камень. Есть даже поломка вещей и Full Strip, так что к Repairman теперь ходят по делу.

Сломанная вещь в инвентаре и подсказка, куда её нести

Сломанная вещь в инвентаре и подсказка, куда её нести

Боссы зовут свиту. Baphomet приводит Baphomet Jr., Moonlight Flower зовёт Nine Tail, Eddga зовёт Bigfoot. Свита ходит за хозяином, бьёт того же, кого он, и умирает вместе с ним.

Кто нанёс боссу больше всего урона, тот MVP. Ему особый опыт, вещь из MVP-дропа и тот самый эффект с официальным спрайтом и звуком. На месте убитого босса остаётся надгробие со временем смерти, а таймер возрождения не сбрасывается при перезапуске сервера.

Ещё монстры снова превращаются. Fabre окукливается в Pupa, из Pupa вылупляется Creamy, из яиц Thief Bug вылезают жуки.

Бафомет со свитой в лабиринте

Бафомет со свитой в лабиринте

Надгробие на месте убитого босса

Надгробие на месте убитого босса

Вторые профессии

Спрайты и данные всех тринадцати вторых профессий уже в игре. Открыты пока пять:

  • Охотник. Экзамен в гильдии охотников: собеседование, материалы для стрел и лес с ловушками на время. Умения тоже есть, включая ловушки, сокола и Blitz Beat.

  • Кузнец. Экзамен, умения и ковка.

  • Священник. Экзамен с духовной практикой, умения и эффекты.

  • Ассасин. Гильдия убийц в пустыне Сограт: письменный тест, охота на шесть целей за три минуты, потом пройти мимо мумий и гидр, никого не тронув. Ассасин держит оружие в обеих руках, бьёт катаром, травит ядами и уходит в невидимость. Заодно открыл подземелье Сфинкса, давно просилось.

  • Волшебник. Экзамен в башне Гефена: тест и арена стихий, где надо пройти комнаты Воды, Земли и Огня. Белая собака Мария рассказывает про гильдию, и в диалоге появляются её картинки, как в RO. Все умения на месте, включая Storm Gust и Ice Wall, которую можно разбить.

Сменить профессию можно с Job 40. Умения первой профессии остаются, а в окне умений появились вкладки «Первая» и «Вторая». Остальные буду открывать по одной, когда каждая будет готова и полностью проверена.

Все тринадцать вторых профессий

Все тринадцать вторых профессий

Ловушки Охотника

Ловушки Охотника

Кузнец куёт меч

Кузнец куёт меч

Ассасин в подземелье Сфинкса

Ассасин в подземелье Сфинкса

Storm Gust

Storm Gust

Ice Wall

Ice Wall

Про рейты

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

Рейты останутся x1. Честно скажу: экономики, которую можно сломать, у нас пока нет, на сервере три десятка человек. Но я примерно представляю, что будет, если поднять рейты до x100.

Первая беда в том, что игру делаю я один. На x100 до 99 уровня добегают за выходные. Открыто пять вторых профессий из тринадцати, и через неделю самые активные всё пройдут, всех боссов убьют и спросят, что дальше. А дальше пусто, и они уйдут. Новые карты и профессии я делаю быстро, но не со скоростью x100.

Вторая беда в дропе. Карты и MVP-вещи, за которые на x1 бьются неделями, на x100 сыплются мешками. Через месяц у всех всё есть, зени горы, торговать незачем, лавки стоят пустые. Так жили многие высокорейтовые серверы: первые две недели онлайн, потом тишина и вайп.

Третья беда в мире. Если уровень берётся за вечер, поля между городами никому не нужны. В пати не собираются, гильдии не нужны, и игра сжимается до «убил босса, ушёл». А мне хочется, чтобы по Мидгарду ходили и встречались.

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

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

  • путь до Job 10 стал в разы короче. Раньше будущему присту или магу приходилось часов восемь колотить порингов и лунатиков. Теперь квесты за полчаса проводят за ручку по всем основным городам, знакомят с миром и местами для новичков и доводят до Job 10. Любители хардкора могут отказаться от квестов и валить Фабре пачками, никто не запрещает;

  • журнал подсказывает, что делать на экзамене на профессию и в квестах на навыки первых профессий;

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

Гриндить по-прежнему можно, никто не запрещает. Если есть идеи, как сделать игру удобнее для тех, у кого час в день, напишите в комментариях. Мне правда интересно.

Что взял из ваших комментариев

Стайные монстры. Под первым постом бывший разработчик eAthena из команды мобов напомнил про флаги монстров. Режим Assist лежал в базе с самого импорта и ничего не делал. Теперь работает. Hornet сама не нападает, но стоит задеть одну, и она ужалит в ответ, а соседки в 11 клетках, которые это видят, летят к ней всей стаей. Долетели, ужалили, позвали своих. Так себя ведут 24 вида, среди них волки, кондоры, Peco Peco, Thief Bug и Yoyo.

Сначала я перестарался. Монстр звал своих, пока просто бежал за игроком, и за человеком тянулся целый паровоз волков. Прислали баг-репорт. Теперь зовёт только тот, кто бьёт, и не чаще раза в секунду.

Шапки. «Чем больше шапочек, тем лучше» мне написали прямым текстом, пришлось делать. В Гефене Ипоре вырастит на голове гриб за 300 спор, Сет сложит бумажный тюльпан из маски Mr. Smile. В Пайоне Неко Неко сошьёт кошачьи ушки, в Пронтере Нефия завяжет красный бант. Шапки образца 2004 года. Маску Mr. Smile продают в пяти городах.

Шапки 2004 года в Гефене

Шапки 2004 года в Гефене

Кафры. «Не увидел Кафры, не канон!» Вот, все девять 😄

Все Кафры в ряд на площади Гефена

Все Кафры в ряд на площади Гефена

Приложение для телефона

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

Приложение тоже на Godot, отдельным маленьким проектом. Новая версия сама выкладывается на сайт, а приложение само предлагает обновиться.

Приложение ZeRO для Android: кто в игре, друзья, переписка, чат группы, аукцион, свой персонаж и уведомления

Ошибки бывают и в логике

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

Игроки пожаловались, что сообщения в чате приходят с опозданием. Стал искать и нашёл 12 тысяч монстров на картах, где нет ни одного игрока. Они там гуляли. Около 2800 одновременно куда-то шли, сервер заводил им примерно 20 тысяч таймеров в секунду и считал пути в обход стен. Процессор был занят на 70–100 %. Напиши я сервер на Go или C++, получилось бы ровно то же самое: лишнюю работу никакой язык не ускорит.

В RO монстр, рядом с которым не было игроков, просто стоит. Я этого не сделал, а надо было. Исправил: пришёл игрок, и монстры вокруг просыпаются. Таймеров стало около 85 в секунду, нагрузка от монстров упала с 66 % до 2 %.

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

Мелочи из оригинала

  • Камера получила узкий объектив, как в RO. Спрайты по краям экрана больше не заваливаются набок.

  • Тени под ногами, крупные цифры урона, название заклинания над головой и круг под целью.

  • Оригинальные эффекты заклинаний Мага.

  • Скорость ходьбы и порталы как в оригинале.

  • Почта с вещами и зени, друзья, дуэли по согласию.

  • Заточка оружия и брони по правилам pre-renewal, очистка руды у кузнецов.

  • Наёмники.

  • Монстры чувствуют каст. Начал читать на Isis Fire Bolt, а она уже бежит к тебе, хотя урона ещё не было.

  • Сквозь стены больше никто не стреляет, ни игроки, ни монстры.

  • Новые земли: поля Комодо, крепость Сандаруман, Муравейник с MVP Maya, остров маяка Фарос.

Новые монстры Комодо и Муравейника

Новые монстры Комодо и Муравейника

Есть и своё, чего в RO не было. За вход каждый день дают подарок. Скины часов-Поринга из прошлого поста теперь собираются в коллекцию на аккаунте, их выдают за коды наград. А ещё можно стать невидимкой для друзей, как в Discord, или включить инкогнито: вместо твоего ника все, кроме друзей и группы, видят «???». Зачем? Да просто так.

Что дальше

  • Остальные вторые профессии, по одной, когда каждая будет готова и проверена.

  • Новые города и подземелья.

  • Гильдии. PvP в игре уже есть, а для войны гильдий сначала нужны сами гильдии. А ещё люди, так что заходите 🙂

Спасибо всем, кто писал под прошлыми постами. И тем, кто вспоминал свою первую гильдию, и тем, кто ругал рейты, Python и dev-версию Godot. Много чего из этого поста появилось из ваших комментариев.

Сайт игры: zeroro.ru

Поринги передают привет. Плюх.

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

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

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

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

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

- Выдавать чужой труд за свой

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


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

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

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

1
Автор поста оценил этот комментарий
Невероятно! Буду следить за развитием проекта
раскрыть ветку

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества

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

Теги

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

Сообщества