Серия «Дневники разработчика. Духи Леса, текстовая-ММОРПГ»

DnD в телеграме. Дневник разработчика. Часть 4

Предисловие для тех, кто не читал предыдущие части дневника: Это блог начинающего разработчика-самоучки, не претендующий на гениальность и уникальность. Я просто делаю свою первую текстовую ММОРПГ в телеграм-боте на python, и мне это нравится. А тут делюсь впечатлениями.

Когда я только планировал и набрасывал концепцию игры, хотелось выжать максимум из имеющихся возможностей. Убивать монстров, улучшать навыки и крафтить вещи - это есть везде. Я же хотел сделать настоящие подземелья, "как у взрослых":

- где будут генерироваться не только монстры и боссы, но и небоевые события;

- где будут иметь значение не только боевые, но и ремесленные навыки, а также специализированные ролевые навыки типа ночного зрения, разведки, взлома замков и побега;

- где будет нужна слаженная группа, причем, не только в качестве бойцов. Например, павшего союзника может оживить только другой игрок. Если союзников нет, или они без зелий, или решили тебя бросить, то на этом подземелье для тебя закончится.

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

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

Структура

DnD в телеграме. Дневник разработчика. Часть 4 Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

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

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

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

Враги

DnD в телеграме. Дневник разработчика. Часть 4 Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

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

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

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

Групповые бои

DnD в телеграме. Дневник разработчика. Часть 4 Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

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

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

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

С новым балансом добавил и другие боевые навыки, работающих как в групповых, так и в обычных боях - комбо, отражение, амбидекстр.

Вместе с тем, старался сохранить систему сдержек, чтобы нельзя было просто "вкачать все" - боевые навыки работают только с соответствующим оружием. Соответственно у разного оружия по 2-3 бонуса к разным навыкам. Значит, для сочетаний навыков нужно подбирать определенные оружия. Либо менять их по ситуации, что также поощряет игра.

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

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

Кроме того, здесь наконец-то заиграли красками расовые навыки, которые я заложил в начале игры: ночное зрение у Рысей, взлом у Енотов, тактическое отступление у Лис. Например, только при срабатывании Тактического отступления после поражения персонаж остается живым и может воскресить союзников, чтобы с новыми силами попробовать добить противников.

Находки

DnD в телеграме. Дневник разработчика. Часть 4 Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

Каждая из находок прописана так, что может выдать минимум несколько результатов, как полезных так и вредных.

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

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

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

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

И конечно же очень приятно получать теплые отзывы от игроков, которые уже успели пройти эти подземелья. Практически все первопроходцы отозвались очень положительно и побежали проходить более высокие уровни. Огромное спасибо всем, кто уже поддерживает проект, играет и дает обратную связь! Понимание, что это это кому-то тоже нравится, придает мне сил и энтузиазма работать ночами напролет, изучать и добавлять в наш волшебный Лес что-то новое.

Ремарка для истории: С момента написания прошлой части дневников население Духов Леса выросло до 600 зверьков. А кроме того, выходили другие дополнения, про которые я напишу как-нибудь в следующий раз. Так что жизнь в Лесу бьет ключом! Я только и успеваю, что каждый день ловить старые баги, плодить новые, дорабатывать, улучшать и изобретать велосипеды на свой лад.

На этом откланяюсь. Спасибо и удачи всем кто дочитал!

С вами был Нокс. До встречи в Лесу!

Показать полностью 4

Дневник разработчика. Часть 3. Ищем свой путь!

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

Дневник разработчика. Часть 3. Ищем свой путь! Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

Последний тренд моды в Духах Леса. Домики - зверятам! Замки - стаям! Травки - всем желающим!

Уникальные истории - вот то, ради чего (в той или иной степени) многие приходят в игры. В реальной жизни твои возможности ограничены телом человека, законами физики и банковским счетом. А в играх ты можешь стать кем угодно: супергероем, спецагентом, космическим рейнджером, и даже пушистым енотиком. А значит, одна из главных задач разработчика - дать возможность прожить эти роли по своему и получить уникальный опыт.

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

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

Для того чтобы игроки могли проявлять индивидуальность и выбирать свой путь, я проработал 7 видов ресурсов (металл, драгметалл, самоцветы, камень, дерево, кожа, травы), 6 видов переработки (для получения обработанных ресурсов), и отдельные механики для каждого вида создания, починки, улучшения предметов. Кроме того, я старался для каждого из этих процессов добавить хотя бы небольшие отличия и "изюминки". Вот несколько примеров:

Травы не обрабатываются и сразу пригодны для крафта зелий.

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

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

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

Кроме того, для создания почти любого предмета требуются два вида ресурсов. Для оружия - металл и доски. Для брони - металл и кожа. Для аксессуаров, в зависимости от вида, это может быть сочетание любых двух ресурсов кроме трав и камня. Таким образом, любой ремесленник также стоит перед выбором, прокачивать ли добычу всех необходимых ресурсов или объединяться с кем-то, и каждому делать упор на конкретный ресурс.

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

Дневник разработчика. Часть 3. Ищем свой путь! Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

При плавке руды по строчке с эмодзи руды бежит огонек. При переработке леса пила превращает деревья в бревнышки. Камень при шлифовке становится кирпичиками. Разные варианты "двигающихся" эмодзи прописаны для всех видов переработки и крафта.

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

Еще один пример того, как я постарался дать игрокам свободу выбора и разнообразие - это квесты. Как только получились первые несколько стандартных квестов типа "убей N противников" и "принеси N предметов", захотелось шагнуть дальше. Поэтому, например, при создании ремесленных заданий у просветленного рыбака-выдры Марлина, я прописал возможность выбора из нескольких предметов, которые нужно скрафтить по квесту. Кроме этого, в промежуточных квестах на сбор ресурсов для крафта Марлин подскажет игроку, что ресурсы можно получить несколькими путями, например, добыть самому, купить, найти в походе.

Таким образом, игрок чувствует свободу и выбирает наиболее выгодный или доступный путь. Более того, в финальных квестах крафтовых веток, Марлин просит изготовить самостоятельно квестовый предмет, и у игрока появляется еще один выбор. О нем не говорится напрямую, но об этом не сложно догадаться на основе предыдущих квестов. Как именно выполнить это задание: делать вещь самому, купить на рынке или одолжить у другого игрока?

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

Дневник разработчика. Часть 3. Ищем свой путь! Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

Мудрый Марлин поощряет изобретательность и поиск своего пути.

Ну и разумеется, раз уж речь зашла о свободе выбора, я обязан упомянуть о боевом билдостроении.

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

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

Дневник разработчика. Часть 3. Ищем свой путь! Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

Пример комбинации навыков из нескольких школ. Здесь активные навыки из веток бойца (мастер меча) и убийцы (ночной охотник) работают за счет разных оружий в двух руках.

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

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

Всегда есть выбор: взять в левую руку щит или второе оружие? Или вообще взять двуручное оружие? Щит дает больше выживаемости. Второе оружие дает больше бонусов к своим навыкам или позволяет комбинировать навыки разных школ, но урон у оружия в левой руке снижен на 50%. Двуручное же оружие имеет больше урона, чем два одноручных, однако дает меньше навыков.

С доспехами тоже не все так просто. Тяжелые доспехи дают больше всего брони и кучу дополнительного здоровья, но снижают шанс парирования на 50% и лишают героя возможности уворачиваться. Средние доспехи дают меньше брони и жизней, не мешают парировать, но снижают уворот на 50%. Легкие же доспехи позволяют максимально эффективно и парировать и уворачиваться, но, как и следует из названия, дают совсем мало защиты и здоровья.

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

А пока что волшебный Лес потихоньку наполняется жизнью, а я продолжаю работать над следующим патчем и исправляю баги, которые мне помогают найти активные зверятки, ворвавшиеся в ОБТ. В проекте уже 250+ игроков, каждый из которых открывает свой собственный уникальный путь!

Всем спасибо за внимание и до встречи в Лесу!

Показать полностью 3

Дневник начинающего разработчика. Часть 2. Длиннопостные животные и сотворение жизни в Лесу

Продолжение истории о том, как я пишу Духов Леса - свою первую текстовую ММОРПГ в телеграм-боте на Python.

Но, для начала, посмотрите на эти прекрасные мордашки.

Дневник начинающего разработчика. Часть 2. Длиннопостные животные и сотворение жизни в Лесу Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

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

Итак, начало положено. Параллельно с изучением теории программирования я набрасывал в табличках планы, механики, формулы, объекты и ключевые события.

Когда пришла пора воплощать это в жизнь, первые шаги давались с большим трудом. Однако, долгими ночами строчка за строчкой начинало вырисовываться нечто прекрасное. По крайней мере, мне жутко нравилось все происходящее, и именно на энтузиазме, любопытстве и усидчивости я работал над игрой ежедневно по 6-10 часов.

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

Довольно быстро я понял, что записывать в одну базу десятки характеристик, переменных и состояний каждого персонажа будет проблематично. Тем более, игре придется потом часто к ним обращаться. Поэтому, подробные переменные я стал записывать в отдельный JSON файл для каждого персонажа, а в базе данных оставил только основные сведения (id класс имя и т.д.).

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

Дневник начинающего разработчика. Часть 2. Длиннопостные животные и сотворение жизни в Лесу Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

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

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

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

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

Таким образом, обитатели Леса стали не только длинношерстными, но и "длиннопостными", и это свое свойство менять не собирались. Я решил, пусть уж это будет своеобразным критерием отбора игроков, и в сообществе преобладают те, кому интересно читать текст, и вникать в происходящее.

Дневник начинающего разработчика. Часть 2. Длиннопостные животные и сотворение жизни в Лесу Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

Первый из "длиннопостных" животных. Он рад каждому новому путнику в Изумрудном Холме, и ему есть что рассказать тем, кто не ленится читать. Так выглядит создание персонажа.

Здесь же, на стадии создания персонажа, нужно было кратко ввести игроков в курс боевки. Как любителя РПГ типа Diablo и POE меня всегда радовала вариативность. Потому и в своем мире мне хотелось сделать не жесткое деление на классы, а возможность их комбинировать. Основа должна быть простой и понятной с первого взгляда: воин, танк, убийца - которые по принципу камень-ножницы-бумага имеют разные преимущества. Однако, с самого начала игры новички предупреждаются, что все классы можно комбинировать, и ни один из первоначальных выборов не ограничивает другие возможности. Просто стоимость прокачки "чужих" навыков будет больше, чем "родных".

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

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

Навыки к этому моменту уже были в общих чертах распланированы в таблице, оставалось их только перенести в код и надеяться, что на стадии создания боевки я смогу это все учесть в формулах и функциях. Сначала я написал только первые 3 школы по 6 боевых навыков, а впоследствии добавил к ним 4 ремесленные школы по 8 - 10 скиллов.

Дневник начинающего разработчика. Часть 2. Длиннопостные животные и сотворение жизни в Лесу Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

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

С инвентарем пришлось повозиться тоже достаточно долго. Была создана база данных с видами предметов и функции для создания баз данных экземпляров предметов для каждого чата, где запущена игра. Так например вид предмета "катана", в зависимости от материала, из которого ее создают, может превратиться в экземпляры: Стальная катана, Кобальтовая катана, Титановая катана и т.д. со своими характеристиками. Плюс каждый из экземпляров можно улучшить, пока что до 5 уровня. Таким образом 1 строчка предмета "катана" в типовой базе с учетом коэффициентов материалов и улучшений превращалась в игре в 25 разных катан с отличающимися характеристиками.

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

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

Дневник начинающего разработчика. Часть 2. Длиннопостные животные и сотворение жизни в Лесу Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

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

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

За сим на сегодня откланяюсь и побегу делать следующее обновление. Сейчас у меня в разгаре разработка веток крафта, отвечающих за строительство домиков и клановых замков, и обустройство их мебелью и пристройками. А всех, кого заинтересовал мой проект, прошу заглядывать на ОБТ.

Спасибо всем, кто дочитал! Продолжение следует.

Играйте в игры, любите игры, следуйте за своей мечтой и просто хорошо проводите время!

Показать полностью 4

Дневник начинающего разработчика. Моя первая игра. Текстовая ММОРПГ в телеграм-боте на Python

Предыстория. Я 36 лет прожил работая юристом и играя в игры все свободное время. Часто посещали мечты, вроде "вот было бы круто начать самому делать игры". И осенью в 2023 что-то в голове щелкнуло, и я подумал "а почему бы и да?".
Опыта и знаний по программированию было 0, но меня же "в интернете не забанили", так что это не оправдание бездействию. Тем более наиграв десятки тысяч часов в другие игры, я прекрасно понимал, что хочу видеть в игре, что игрокам нравится, что не нравится и т.д. Более того, в 2023 в нашу жизнь уже уверенно ворвались нейросети, так что, даже без наставника, мне будет у кого спросить совета или попросить о помощи.

В качестве теоретической подготовки я скачал первые попавшиеся курсы по python на торренте, за месяц их прошел, и решил, что все, дальнейшее обучение будет происходить исключительно на практике. Помогал мне в этом бесплатный чат-GPT. Бесплатный GPT версии 3.5 обладал информацией о библиотеках питона по 2021 год, и не знал про новую версию Python-telegram-bot. Про то, что сейчас все рекомендуют Aiogram, я тогда не знал. Поэтому, по рекомендации чат-GPT, я взял старенькую библиотеку TeleBot, благо по ней GPT еще мог подсказать что-то более-менее актуальное, и пустился в это приключение.

Выбрал для начала простой формат текстовой игры в чат-боте телеграма. Отчасти меня вдохновила на этот путь чужая игра Жабабот. Я залипал в нее с друзьями несколько месяцев, и испытывал противоречивые чувства:
С одной стороны все было примитивно, аляписто, местами кринжово, и, начав в нее играть, сразу ловил себя на мыслях: "я бы сделал по-другому", "тут все так просто, что я и бы и без опыта сделал лучше".
С другой стороны, это отличный пример того, как игра добивается успеха своей простотой. Я смотрел на ее огромную (по моим меркам) аудиторию, и понимал, что, раз получилось у этого разраба, то что мешает мне сделать на том же уровне или даже лучше.

Продумал концепцию миленького фэнтезийного лесного мира с антропоморфными животными. Название определилось само собой - Духи Леса. Не сильно оригинально, но отражает суть, ведь все действие у меня будет происходить в Лесу, а основным источником магической силы будут Духи этого леса. Под этот стиль я адаптировал некоторые названия. Например, одноручное и двуручное оружие у меня стало "однолапное" и "двулапное", кланы - "стаи", а глава клана - "вожак".

Что бы наглядно передать атмосферу решил обильно украшать ее классными картинками и детально подходить к каждому тексту (все же, это текстовая игра, так что если и делать красиво, то из вариантов только тексты и картинки). Благо для картинок сейчас тоже куча нейросетей, есть где выбрать. Мне для начала хватило бесплатной Midjourney.
Стали вырисовываться первые персонажи и свой стиль. По крайней мере, я точно решил не использовать надоевших всем орков, эльфов, и, тем более, людей.
В итоге я определился с тремя игровыми расами: Еноты, Лисы и Рыси. У каждой расы свой Дух-покровитель: у Лис - Инари, у Енотов - Тануки, у Рысей - Бастет.

Дневник начинающего разработчика. Моя первая игра. Текстовая ММОРПГ в телеграм-боте на Python Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

Три игровые расы: рыси, еноты, лисы. Для каждой генерирую аватарки, которые игрок может сменить за игровую валюту. Сейчас примерно по 40 аватарок для каждой расы. Планирую увеличить количество до сотни каждой.

Для НПС решил использовать других милых животных: коала, вомбат, капибара, бобер (курва!), панда, хомяк и т.д. Где получилось добавил отсылок к мемам. Судя по реакции первых тестеров отсылки заходят отлично. Старался также сделать НПС максимально функциональными, что бы они были задействованы не только в одной какой-то активности или линейки заданий, а в разных. Например, есть коала Лулу - знахарь. У нее есть квесты в прологе на исцеление кузнеца, есть квесты крафтовые на обучение зельеварению, а после прохождения у одного квеста открывается возможность один раз в день у нее бесплатно вылечиться.

Дневник начинающего разработчика. Моя первая игра. Текстовая ММОРПГ в телеграм-боте на Python Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

NPC, они же жители города Изумрудный Холм. Всего сейчас сделано 9 НПС, у каждого из которых есть свой функционал. Функции планирую расширять, что бы каждый из НПС мог раскрыть свой характер и запомниться игроку.

Сразу я определил несколько принципов, которые стараюсь соблюдать на всем процессе разработки:

1. Каждая механика должна быть интересна сама по себе и приносить пользу другим сферам.
Поэтому, все основные сферы: боевка, квесты, ремесло, торговля - завязаны друг для друга и имеют свои фишечки, которые открываются не сразу, и приносят пользу в других сферах.
То, что без ремесла не получить экипировки для боя, и так очевидно. Но, например, я решил оставить возможность покупать и продавать на рынке в т.ч. предметы, необходимые для квестов. Часть квестов привязать к бою, а часть к ремеслу. Таким образом, ремесленник, может продать изготовленные товары и купить недостающие трофеи для сдачи квеста, а боец для другого квеста может за полученную в бою награду купить у ремесленника добытые ресурсы, и т.д.

2. Альтернативные пути развития, и баланс между ними.
Баланс - это самое сложное в любой игре. И это как раз то, что я уже сейчас пытаюсь найти в ходе ОБТ. Моей целью было сделать 3 основные боевые ветки развития и кучу ремесленных. При этом, ни один из путей развития не исключает другие, то есть, их можно комбинировать в любом сочетании.
Можно сочетать две или все три боевые ветки, при этом качая еще и пару ремесленных, или сделать упор только на что-то одно. Баланс такой вариативности пугал, но очень манила свобода выбора и реиграбельность. Чем больше путей доступно, тем интереснее экспериментировать игроку.

Дневник начинающего разработчика. Моя первая игра. Текстовая ММОРПГ в телеграм-боте на Python Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

Доска объявлений, как простейший способ найти доступные задания. Альтернативный способ найти их же - поговорить с конкретным НПС. Тут же "Новости" - краткая информация о патчах и событиях, и "Объявления" - там игроки могут опубликовать объявление на время.

3. Высокий уровень совершенствования, но низкий порог вхождения.
Тут все просто, и это то, что отличает все хорошие игры. Новичку со старта доступны дешевые начальные навыки всех веток развития, но с повышением уровня их цена возрастает. Таким образом, можно быстро попробовать себя во всем и выбрать занятие по душе. Но, чтобы стать мастером в любой сфере, придется приложить немало усилий.

4. Основной контент должен работать как индивидуально, так и в группе. При этом социалка приносит значительную пользу.
На практике это выглядит так, что любой игрок может быть совершенным интровертом и ни с кем не общаться, и игра не должна его за это наказывать. Даже ремесленника и торговца можно отыгрывать в гордом одиночестве, для этого предусмотрен рынок с системой ордеров. Скажу честно, на такой рынок меня вдохновила EVE. Я, в меру своих способностей, попробовал сделать что-то аналогичное, насколько это позволяет формат текстовой игры. Для социального взаимодействия, помимо чатов, рынка и доски объявлений, я разумеется ввел кланы. Базовый функционал кланов я дописал буквально недавно, а в дальнейшем в планах ввести клановые замки, а это и дополнительные бонусы участникам кланов, и дополнительные общие занятия - отстройка и улучшение этих замков, что бы получать больше бонусов. Но уже сейчас, кланы объединяют игроков, помогают делить ремесленные занятия, обмениваться ресурсами, помогать друг другу.

Дневник начинающего разработчика. Моя первая игра. Текстовая ММОРПГ в телеграм-боте на Python Текстовая ролевая игра, MMORPG, Gamedev, Чат-бот, Telegram бот, Компьютерные игры, ОБТ, Python, Животные, Длиннопост

Навыки: 7 базовых веток, в каждой из которых еще 6-10 вторичных навыков. Рынок - моя гордость. Не дождусь когда будет достаточно игроков что бы проверить как будет работать экономика.

Таким образом начало было положено. В следующих постах напишу продолжение. Забегая вперед, написать есть о чем: сейчас игра уже на стадии ОБТ, в ней первые 80+ игроков, начали поступать донаты, отличные отзывы. Так что я полон сил и решимости развивать ее и дальше. работаю над ней каждый день. Планирую вложиться в маркетинг, когда допилю основной контент и устрою релиз. По примерным расчетам это будет в ближайшие пару месяцев.

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

Показать полностью 4
Отличная работа, все прочитано!