Dusk World: Дневники разработки игры

Дневники разработки Dusk World, в которых рассказываю о процессе разработки нашего проекта

27 постов | 151 комментариев | 3 участников

Все подряд | 2+ | 5+ | 10+ | Лучшие
3

Итоги первого месяца после обновления сайта

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

Обновлять такой большой и старый сайт как наш это огромный пласт работы. Потому что сам по себе функционал, разработка которого также заняла кучу времени, сам по себе — это просто пустые страницы. Без контента это не имеет никакой ценности.

Первые пару недель я занимался самым-самым базовым наполнением: добавил 16 игр в базу (благо RostyaL написала много обзоров в свое время), добавил 8 сообществ и немного перенес постов в каждый из них, чтобы они не были пустыми. В сумме за первые две недели перенес 157 страниц со старого движка, и 14 января обновил главную страницу.

Дальше можно было переключаться на игровой функционал (который все заждались), но я решил еще немного позаниматься контентом, и перенести весь раздел по Diablo 2, на который приходится 70% посетителей сайта.

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

Зато теперь:

База знаний по Diablo 2 полностью перенесена.

Общие итоги по месяцу

- Перенесено 764 страниц со старого движка. Полностью перенесены разделы Базы знаний по Diablo 2 и Дневники разработки Dusk World. Теперь ~75% посетителей сайта видят страницы на новом движке.
- Добавлено 16 игр в базу. Плюс на подходе обзор на Path of Exile 2 от JustNeedCoffee и обзор на первую Diablo от меня.
- Добавлено 12 сообществ.

Небольшие доработки

- Добавлена защита от перебора авторизационного токена
- Добавлены новые теги игр: «Браузерная», «PvP», «Бесплатная»
- Добавлена пагинация в комментариях
- Доработана форма создания постов через админку (через которую и переношу старые страницы)
- Добавлен функционал переноса старых комментариев на существующий пост - понадобился, когда при переносе старой страницы забываешь указать url старой страницы, от куда тянутся комментарии. В итоге пост создается, но без старых комментариев.
- По мелочи доработано отображение страниц на мобильной версии
- В заголовке поста добавлено больше допустимых символов (пишите, если каких-то символов вам не хватает)
- Улучшена страница списка пользователей: добавлено отображение группы Dusk World Team, добавлено цветовое выделение группы администратора и модератора.
- Доработана страница статистики.

Исправленные ошибки

- Исправлена ошибка добавления достижения «Участниек бета-теста»: она добавлялась, но в параметрах пользователя не указывалось, что есть достижения, и запрос на их получение не отрабатывал, что приводило к тому, что достижение не отображалось.
- Исправлена ошибка, когда на старых страницах сайта пропал favicon после переезда
- Исправлена ошибка, когда на странице компании не выводилось её полное описание
- Исправлена ошибка с комментариями, когда нельзя было добавить ответ на только что добавленный комментарий (нужно было обновить страницу)
- Исправлена ошибка, когда не отображался перенос строк в комментариях
- Исправлена ошибка, когда обзор на игру добавлялся через админку, то статус игры не менялся и не увеличивалось количество обзоров у неё
- Исправлена ошибка, при которой не отображалась фраза «причина неизвестна» в компаниях, которые закрыты, но причина закрытия которых не указана
- Исправлена ошибка, когда некорректно отображались иконки игр на странице «Мои игры»
- Исправлена ошибка, когда страница пользователя с символами - и _ в имени не открывалась

Из неприятного

Посещаемость сайта упала где-то на 20%, с ~5000 уникальных посетителей в сутки до ~4000. Это связано с тем, что поисковики не любят когда меняются url страниц. А у нас это произошло дважды: вначале при переезде на новый домен, а потом при переезде страниц со старых url на новые.

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

Из приятного

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

(пользователи присылали материалы для публикации и раньше, но раньше мне приходилось подключаться и оформлять страницы)

Что дальше

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

Напомню, что на конец марта у нас запланирован релиз персонажей, предметов, прокачки через «кликер» и PvP на обновленном модуле боевки.

P.S.

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

Показать полностью
Diablo 17 дней назад
2

Обновление главной страницы

Ну что, обновленный сайт постепенно наполняется — добавлено 16 игр в базу игр, создано 8 сообществ, перенесено 157 страниц со старого движка на новый. И это значит, что можно уже обновить главную страницу.

На память скриншот, как главная выглядела раньше:

И как теперь:

Что дальше

Дальше по плану добавление нового игрового функционала и продолжение постепенного переноса старых страниц, но я тут проанализировал как распределяется посещаемость по разделам и выяснил, что распределяется она крайне неравномерно: например, раздел по Path of Exile имеет 661 страниц, и всего 2.5% посетителей от общего числа, а раздел по Diablo 2 имеет 516 страниц и 70% посетителей всего сайта.

Я знал, что посещаемость распределяется неравномерно, но что прямо вот так радикально — не обращал внимание. А это значит, что если в ближайшие 2-3 недели сосредоточиться только на переносе раздела Diablo 2 на новый движок, то 70% посетителей сайта будут видеть уже обновленный сайт.

Так что я пока отложу новый игровой функционал и займусь переносом раздела по Daiblo 2.

Меню в сообществах

Нельзя не упомянуть и про меню в сообществах:

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

В любом случае:

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

P.S.

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

Показать полностью
Diablo 1 месяц назад
2

О питомцах и славе

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

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

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

 

Б значит баланс

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

И возникнет проблема — магу будет очень сложно «держать» удар, и было бы хорошо иметь какого-то танка. Танку будет сложно убивать врагов, и хорошо бы за спиной иметь какого-то дд. Мили-дд будет не хватать выживаемости, и хорошо бы в тылу иметь какого-то хила и т.д.

Изначально концепция по спутникам была такая:

Наемники

Вводятся в игру первыми. Это просто одноразовые спутники разного типа, которые живут до первой смерти. Нанимаются за золото.

Союзники

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

Питомцы

И в конце самый сильный тип спутников — питомцы. Их будет несколько градаций редкости (и мощности), а также их можно прокачивать и усиливать. Они сильнее союзников, но и получить их сложнее.


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

 

Подробнее о питомцах и их получении

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

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

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

При этом, если нужного количества славы пока нет — можно вернуться позже, когда слава появится. Главное не говорить Закану поймать кого-то еще, тогда он отпустит пойманного зверя.

Будет существовать три градации редкости/мощности питомцев:

  • Обычные
  • Редкие
  • Легендарные

В каждой градации питомцы будут делиться на разную специализацию:

  • Танки
  • Мили-ДД
  • Рейндж-ДД
  • Хил/поддержка
  • Необычные гибриды

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

Примеры питомцев
   

Аватар

Название

Редкость

Роль

Способности

Черный Волк

Обычный

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

Отсутствуют

Пума

Обычный

Боец ближнего боя с хорошей защитой и высоким шансом критического удара

Отсутствуют

Гризли

Обычный

Боец ближнего боя с большим запасом здоровья

Отсутствуют

Ящер Куко

Обычный

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

Поддержка природы — восстанавливает небольшое количество здоровья самому раненому члену отряда

Единорог

Редкий

Боец ближнего боя с высокими здоровьем и сопротивлениями.

Магический барьер — значительно увеличивает все свои сопротивления

Мяу

Редкий

Боец ближнего боя с высоким шансом и силой критических ударов. Также имеет хорошую обычную и магическую защиту.

Пронзающий удар — сокрушительный удар с повышенным шансом нанести критический удар

Огненная лисица

Редкий

Маг дальнего боя с мощными атакующими характеристиками

Испепеление — испускает по противнику прожигающий огненный луч наносящий большой урон

Фея

Редкий

Маг дальнего боя с возможностью лечить спутников

Поддержка природы — восстанавливает небольшое количество здоровья самому раненому члену отряда

Мифриловый голем

Легендарный

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

Дрожь земли — наносит сокрушительный удар по земле, ударная волна от которого наносит урон всем противникам

Неприступность — увеличивает свои базовые и максимальные сопротивления

Ониксовая черепаха

Легендарный

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

Рваная рана — кусает противника оставляя ему кровоточащую рану, наносящую постепенный урон

Природная регенерация — накладывает на себя эффект постоянного восстановления здоровья

Белоснежный тигр

Легендарный

Боец ближнего боя с высоким уроном и сокрушительными атакующими способностями.

Укус — кусает противника восстанавливая 50% от нанесенного урона

Звериная ярость — накладывает на себя эффект увеличивающий урон и скорость атаки

Дриада

Легендарный

Лучник со способностями лечения и усиления спутников

Метка восстановления — накладывает на самого раненого члена группы эффект постепенного восстановления здоровья

Единение с природой — накладывает на союзника эффект увеличивающий атаку, защиту и скорость атаки и создания заклинаний

Аватар

Название

Редкость

Роль

Способности

Хотя, возможно, сделаю 4 градации спутников, что позволит последний сделать прямо действительно редким-редким.

Также нужно будет еще хорошенько подумать над вариантами спутников и их особенностями. Нужно будет сделать штук 30-40 минимум. Если есть интересные идеи — пишите.

 

Прокачка и тренировка питомцев

Если вы берете питомца с собой в локации — он будет получать 30% от вашего опыта и прокачиваться. При этом количество необходимого опыта для получения новых уровней отличается для питомцев разной редкости отличается:

Обычные питомцы качаются с той же скоростью что и персонаж: т.е. Взяв питомца 1 уровня на 1 уровне персонажа, он будет получит 15 уровень одновременно с вашим персонажем.

Редкие питомцы качаются в два раза медленнее. А легендарные — в 5 раз медленнее. Соответственно их прокачка будет весьма и весьма трудной. Но и пользу они дадут существенную.

Помимо прокачки питомцев их можно тренировать:

  • Тренировать злость: +1% глобального урона за 1 тренировку
  • Тренировать живучесть: +1% здоровья за 1 тренировку
  • Тренировать скорость: +0.01% скорости атаки и создания заклинаний за 1 тренировку
  • Тренировать меткость: +1.5% обычной и магической меткости за 1 тренировку
  • Тренировать верткость: +1.5% обычной и магической защиты за 1 тренировку
  • Тренировать стойкость к огню: +2% сопротивления за 1 тренировку
  • Тренировать стойкость к воде: +2% сопротивления за 1 тренировку
  • Тренировать стойкость к воздуху: +2% сопротивления за 1 тренировку
  • Тренировать стойкость к земле: +2% сопротивления за 1 тренировку
  • Тренировать стойкость к магии: +1% сопротивления к магии жизни и магии смерти

Всего можно сделать по 30 тренировок на каждый тип. Для тренировки также требуется слава.

Суммируя все вышеописанное можно сказать что питомцы — это почти бесконечный потенциал для усиления своего персонажа:

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

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

 

Подводя итог

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

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

Показать полностью
Diablo 2 месяца назад
2

Ачивка за участие в бета-тесте

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

Чтобы выделить и наградить всех тех, кто принимал участие в тестировании, давал фидбек, находил ошибки и просто морально поддерживал своим неравнодушием к проекту, я решил добавить уникальное достижение:

Чтобы получить это достижение необходимо:

  • зарегистрироваться до 1 января 2025 года на dwdemo.ru, dwdemo2.ru или demo.duskworld.ru (достаточно на каком-то одном);
  • указать тот же почтовый ящик, на который вы потом будете регистрировать основной аккаунт — привязка будет именно к email, а не к нику;
  • проявить какую-либо активность (просто регистрации недостаточно);
  • ждать релиза, после чего зарегистрироваться уже на основном проекте duskworld.ru и сразу, автоматически, получить достижение.

Важно! То, что сейчас можно сделать потратив 10 минут — потом нельзя будет получить никаким способом. Имейте ввиду — оставшийся месяц пролетит незаметно.

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

И еще раз, чтобы не было недопонимания, чего недостаточно для получения достижения:

  • Просто зарегистрироваться;
  • Зарегистрироваться после 31 декабря 2024;
  • Зарегистрироваться на чужой email;
  • Допустить ошибку в написании email. Подтверждение email добавлено только в последней демо-версии — demo.duskworld.ru, если вы там зарегистрировались — то с почтой точно все ок.

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

Потом пеняйте на себя.

P.S.

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

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

Показать полностью
Diablo 2 месяца назад
3

Переезд на DuskWorld.ru и новая демо-версия

Ну что господа, двигаемся в соответствии с планом, а по плану на конец октября у нас переезд на новый домен DuskWorld.ru (заодно наконец-то сайт переехал на https) и выход новой, четвертой демо-версии Dusk World. Вы только подумайте, четвертая версия! У меня при мыслях об этом сразу такая ассоциация:


Потрогать новую версию матрицы Dusk World

(вспомнить старые версии: первая, вторая, третья)



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

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

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

Из важного, чего еще нет, но добавится в ближайшие 2 месяца:

  • Будут обновлены все аватары;
  • Функционал редактирование своих комментариев/постов/сообществ/игр;
  • Функционал восстановления/смены пароля;
  • Больше опций при создании постов (например, голосования);
  • И прочие мелочи.

Эпоха Diablo1.ru заканчивается, начинается эпоха Dusk World!

Показать полностью
Diablo 3 месяца назад
2

Часть 19: Что нового

Просто красивая картинка с просторов еще не запрещенного интернета


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

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

 

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

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

декабрь 2023 — дописана новая версия боевки. Визуально и по механикам там (пока) все как в старой, но внутри всё переписано и намного больше просторов для реализации интересных механик. Подробнее о ней писал в предыдущем выпуске дневников.

январь-март 2024 — дорабатывал свой фреймворк, на котором написана вторая демо-версия.

апрель 2024 — возвращаюсь к попыткам развивать проект дальше на основе второй демо-версии, но там все сложно (подробности ниже).

июнь 2024 — деньги на год жизни накоплены и я увольняюсь. Наконец-то. Но прежде чем плотно приступать к разработке решаю, что нужно хорошо отдохнуть и разгрузить мозги, и на месяц зависаю в 7 сезоне Diablo 2.

1 июля 2024 — отдохнув приступаю к написанию новой версии проекта.

 

Итак, новая версия проекта

Да-да, знаю, что при этих словах у всех кто всё еще ждет проект будет примерно такая реакция:

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

  • отсутствие авто-тестов, соответственно при изменении старого кода постоянно что-то отваливается. А правки старого кода там приходится делать постоянно.
  • фундаментальные архитектурные косяки, например числовые айдишники, которые нельзя оставлять как есть: когда посты имеют url вида domain.ru/post/10 то легко написать скрипт, который будет каждую секунду запрашивать новые посты, и в туже секунду, как они добавлены на сайт — копировать их себе. И поисковики могут подумать, что именно сайт-вор это источник контента.
  • много недоработок, с которыми невозможно было мириться, например, не было миграций для базы данных

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

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

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

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

 

Новая версия проекта

Давайте пройдемся по новой версии проекта, покажу что сделано за 3.5 месяца. Пока занимаюсь пока только «сайтовой» частью проекта.

Регистрация. Здесь пока все также, но в будущем все аватары будут заменены.

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

Теперь нужно подтверждать регистрационный email — это усложнит создание твинков.

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

Добавлена база игр.

Игру может добавить любой желающий (ограниченное количество, которое будет расти с ростом уровня аккаунта), после модерации она будет добавлена. Для добавления игры необходимо будет также написать обзор на неё. Если несколько человек в одно и тоже время добавили игру — автором игры будет тот, у кого лучше обзор. Обзор же второго человека также будет добавлен, но уже просто как обзор.

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

Игру можно добавить в любимые, и тогда она появится на странице профиля.

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

В будущем можно будет добавить «лайки» компаниям игр и можно будет сделать рейтинг самых любимых компаний по версии игроков.

Добавлены сообщества.

Текущие базы знаний по играм это будут именно сообщества.

И на этом же скрине видно небольшое улучшение по уведомлениям — если их 3 или более появляется кнопка «закрыть все». Не нужно кликать на каждый отдельно.

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

Подробнее о спутниках и питомцах расскажу в будущих выпусках дневников.

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

По сообществам еще много работы.

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

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

 

Эволюция понимания как надо делать

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

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

План по релизам
   

Стадия I
Конец октября

Стадия II
Конец декабря

Стадия III
Март

Стадия IV
Лето

Функционал

переезд diablo1.ru на duskworld.ru
переезд diablo1.ru на https
запуск новой демо-версии

«тихий» релиз сайтового функционала

релиз «кликера» и PvP

релиз игровой составляющей проекта
запуск нового сезона

Пользователи в это время

тестируют сайтовый функционал в демо-версии

осваивают новый сайтовый функционал

тестируют PvP

играют в полноценную игру

Я в это время

доделываю админку, ошибки и прочие мелочи

переношу старые страницы на новый движок
реализую функционал персонажей,
обновляю предметы
добавляю рейтинговые PvP
добавляю турниры

продолжаю переносить старые страницы
правлю баланс
делаю новые локации
функционал диалогов
функционал квестов
и прочее

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

Если по первой и последней стадии всё понятно, промежуточные нужно пояснить:


Стадия II: «тихий» релиз сайтового функционала — когда функционал будет готов, нельзя будет просто взять и переключить сайт на новую версию. Потому что постов 0, игр 0, сообществ 0, и пользователи подумают, что привычный им сайт куда-то исчез.

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

Тоже самое с базами игр и сообществами — буду добавлять их в интерфейс когда там что-то будет.

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

В общем это специфика обновления крупных и старых проектов.


Стадия III: релиз «кликера» и PvP — разработка новых локаций займет много времени, и чтобы пользователям было чем заняться, весной будет условный релиз «кликера»: когда на странице персонажа будут просто кнопки «добавить x опыта (10 энергии)», «добавить предмет (5 энергии)» и за счет этого можно будет прокачивать и одевать своего персонажа, а потом учавствовать в PvP с другими персонажами.

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

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

 

P.S.

В общем планы такие. Самое главное — что я уволился и могу полноценно заниматься проектом. Ближайший год будет веселым!

Показать полностью
Diablo 5 месяцев назад
3

Часть 18: Пять лет разработки

Ну что, не ждали новой части дневников по разработке Dusk World? Думали, забил Diablo на свою игру? Нет, ни разу не забил, хотя жизнь в последние годы и добавила геморроя.

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

 

12 августа 2019 — Выпуск предыдущего дня дневников, в котором объявляю о предварительном релизе второй демо-версии. Это не полноценный релиз демо-версии, а просто публикация текущих наработок, которые любой желающий может потрогать своими руками. И обо всех обновлениях писал там же.

5 октября 2019 — В демо-версию добавлена прокачка боевых способностей и PvP

6 ноября 2019 Добавлен личный сундук и бонусы от полных наборов определенного типа брони

11 мая 2020 Добавлена механика локаций (модуль локаций переписан полностью с нуля, на что ушло 5 месяцев) — визуально это та же одна локация, что и в первой демо-версии, но под капотом все совершенно по другому — качественней и лучше.

31 мая 2020 Добавлены уведомления и статусы постов

Июнь 2020 — К болям в пояснице, которые меня беспокоят с 2014 года, добавляются боли в шее. И надо отметить, проблем они доставляют намного больше, чем боли в пояснице, с которыми, в той или иной степени, сталкиваются многие.

14 июня 2020 Добавлена механика дропа и два новых типа эпизодов: Алхимическая лаборатория, где можно найти несколько зелий, и Магическая комната, где можно найти несколько книг заклинаний.

Июль 2020 — Боли в шее не проходят уже месяц, и начинаю ходить по врачам. Т.е. вместо того, чтобы после работы сесть за разработку Dusk World, приходится идти к врачу, и так по несколько раз в неделю. Разумеется, все это тормозит разработку.

6 июля 2020 Добавлена механика отключения возможности написания постов при низкой карме . Проект делаю таким, чтобы он был минимально завязан на ручное модерирование (хотя и оно будет).

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

14 июля 2020 — Из забавного: первый пользовательский гайд о том, как положить в сундук предметов больше допустимого

29 июля 2020 Добавлены турниры; пока игроков немного — лишь самые маленькие на 8 участников. В будущем будут турниры на 16/32/64 участника с более ценными призами.

2 сентября 2020 Добавлена механика торговцев и первый NPC-алхимик. Это последнее значительное обновление демо-версии. Боли в шее так и не проходят и начинают отравлять жизнь все больше.

17 ноября 2020 — Пишу пост дела житейские в которых рассказываю, что из-за проблем со здоровьем возможности заниматься Dusk World уменьшились.

Декабрь 2020 — Черный месяц, когда я пошел в очередную клинику, занимающуюся исключительно проблемами с позвоночником (кажется, что все подобные клиники — исключительный лохотрон и развод на деньги), где я плачу 80 тысяч, хожу в течении 4 недель на процедуры, т.е. каждый будний день в 8:00 выехал на работу, а домой вернулся в 23:00, т.е. свободного времени в принципе 0, и по итогу всего этого мне стало только значительно хуже — и боли стали острее, и грыжа в шее стала больше.

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

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

20 февраля 2021 — Blizzard анонсируют Diablo 2 Resurrected, и становится понятно, что надо будет обновить раздел Diablo 2 на сайте. Учитывая, что релиз анонсировали на сентябрь этого же года — заниматься обновлением надо прямо сейчас, за что и берусь. К счастью, с обновлением помогают JustNeedCoffee и Gattling.

8 марта 2021 — Параллельно с обновлением раздела Diablo 2 начинаю активно писать новый модуль боевки. Старая боевка писалась еще в 2017 году, на костылях, и добавлять в неё новые механики стало очень сложно. Плюс в ней есть плавающие хитрые баги, которые сложно отловить: например, ситуации, когда урон от атаки не наносится в принципе. Случается такой баг раз в месяц, и сколько не пробовал — даже воспроизвести его не удавалось, не говоря уже о том, чтобы исправить.

В таких ситуациях проще написать с нуля, с хорошим ООП, с юнит-тестами, чем мучить дохлую старую лошадь.

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

27 мая 2021 Второй пост дела житейские, в котором пишу, что наконец-то нашел врача, который помог найти причину болей, и что процесс выздоровления наконец-то пошел. За год хождения по врачам было потрачено 650 тысяч, и если бы не врачи — уже на тот момент можно было увольняться, и 8-10 месяцев спокойно сидеть и целыми днями заниматься игрой.

28 октября 2021 Третий пост дела житейские, в котором рассказываю о том, что, несмотря на улучшившееся здоровье, время уходит на обновление раздела Diablo 2, написание новой боевки, и на подготовку к будущим собеседованиям. А на развитие демо-версии Dusk World времени не остается.

14 января 2022 — Глобальное обновление раздела Diablo 2 на сайте. По сути весь 21 год ушел именно на это.

 

«Спецоперация» и умерший рынок труда

Казалось бы, худшее позади, «но расслабляться погоди, ведь много ждет нас впереди» (c)

Вся разработка Dusk World шла в свободное от работы время — после работы, на выходных, на праздниках, в отпусках. Получается этакая жизнь 24/7 за компьютером и кодом. Во-первых, это изматывает, во-вторых, даже в таком режиме игра разрабатывается медленно. Решение, которое напрашивалось — это поиск новой работы с большей зарплатой и откладывание 50% зарплаты в заначку, а потом, после года такого накопления — можно будет уволиться и год жить на накопленные деньги. И именно такие планы у меня были на весну 22 года — пойти по собеседованиям и найти работу получше. Тем более, что весь 21 год из каждого утюга рассказывали, какая острая нехватка программистов на рынке труда, и как у них необоснованно растут зарплаты (и то, и другое – полная чушь, не ведитесь и не несите свои деньги в айти-курсы).

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

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

Вспомнил про игры. Побегал по просторам старинного Morrowind (давно строю планы сделать о нем раздел на сайте), божественного Скайрима (тешу планы как-нибудь перезапустить хроники по скайриму), вспомнил старушку Lineage 2, которая, как оказалась, несмотря на свой почти 20-летний возраст, собирает онлайн на фришках больше, чем было в нулевые годы на официальных серверах.

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

Lineage 2 — это какой-то феномен игровой индустрии, столько лет прошло, а так и не встретил никакой другой MMORPG, которая бы настолько затягивала, и где можно было бы увидеть настолько массовые сражения — замес 300 на 300 это абсолютно рядовая ситуация.

В общем, в 22 году, пока в России царили хаос и паника, я, наоборот, хорошо отдохнул и отвлекся от жизненных проблем.

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

 

Изменения в новой боевой системе

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

Работа способностей полностью переделана

Если раньше были 3 способности, жестко завязанные на три характеристики: концентрацию, хитрость и ярость, то теперь способности могут активироваться при любых параметрах.

Например, если раньше пассивная способность людей «воля к победе» работала как «костыль», и просто с 20% шансом при смерти восстанавливала 50% здоровья (что визуально могло сбить нового игрока), то теперь это именно способность, и визуально персонаж вначале умирает, потом активируется способность и применяется – происходит анимация воскрешения. То же самое и с расовой способностью орков, увеличивающей урон в 2 раза при здоровье меньше 30%

Пока есть только 2 способности, завязанные не на концентрацию, хитрость и ярость, но уже нет никаких проблем добавлять новые, с самыми причудливыми условиями, вроде «здоровье меньше 50%, мана больше 50%, концентрация и ярость 100%»

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

И есть еще глобальное изменение по способностям, которое в процессе реализации – это отвязка от жесткой привязки на 3 способности завязанных на класс персонажа.

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

  • расы
  • класса
  • предметов (да, будет механика, когда какие-то уникальные предметы будут добавлять боевые способности)

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

Добавлена статистика по бою

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

Добавлена механика призыва новых существ на поле боя

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

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

Добавлена механика воскрешения юнитов

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

Улучшена механика эффектов

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

Например, размышляю над новой способностью для класса берсерк:

  • Способность активируется при здоровье > 70% (т.е. активируется со старта боя)
  • Каждый ход юнит теряет здоровье
  • Каждый ход увеличивается урон и скорость атаки

Получается этакий берсерк (кэп), который сам себе наносит повреждения, но с каждым ходом становится все более опасным.

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

И таких интересных механик можно будет придумать и добавить массу.

Ну и, конечно же, классов у рас будет больше, чем сейчас по 5 штук на расу.

Добавлены особые эффекты от критических ударов с оружия

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

  • дробящее оружие может оглушить (одноручное – на 1 ход, двуручное – на 2 хода, тяжелое двуручное – на 3 хода)
  • кинжалы накладывают кровотечение на 3 хода
  • жезлы снимают один положительный эффект с цели (в отличие от двух предыдущих – эта механика еще в разработке)

Добавлена механика удара сразу по всем вражеским юнитам

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

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

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

Добавлена мультиязычность

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

Что еще в процессе разработки:

  • Механика клонирования себя с % от исходных характеристик. Можно будет добавить уникальный класс «Иллюзионист», ультимативная способность которого будет создавать иллюзии, имеющие 15-25% характеристики хозяина. И уникального босса с аналогичной способностью.
  • Механика рефлекта урона
  • Механика снятия положительных/отрицательных эффектов
  • Есть еще идея интересной механики, когда класс суккуб сможет переманивать в свою команду вражеского юнита и заставлять несколько ходов воевать на своей стороне. Но это уже изыски, посмотрим, на сколько будет время
  • Также есть еще интересная (но сложная) механика: расширить количество сражающихся команд с 2 до любого количества. Это позволит устраивать, например, групповые бои в формате «каждый сам за себя».

Также есть вещи, которые существуют в старой боевой системе, но пока не реализованы в новой:

  • Все 150 способностей классов
  • Расовая способность эльфов уклонения от любой атаки/заклинания с шансом 20% (никак не зависящая от меткости атакующего)
  • Добавление способностям требование по типу оружия
  • Рандомизатор урона
  • Увеличение урона в долгих боях
  • Механика активации способностей через хитрость
 

Планы на будущее

Разработка идет уже 6 год, а конца-края не видно. Очевидно, что-то с этим надо делать, и очевидно, что – убирать часть запланированного функционала, оставляя его на обновление уже после релиза.

Еще мотивирует к скорейшему релизу то, что даже в текущий супер-урезанный функционал демо-версии несколько человек задротили месяцами. Tieru так и вовсе сделал что-то невозможное и взял максимально возможный уровень. Напрашивается вывод – просто улучши то, что уже есть, просто добавь локаций, просто добавь игроков (для этого даже в рекламу вкладываться не нужно – просто перенести функционал на diablo1.ru) – и будет уже сильно веселее.

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

И все, кто помогает с наполнением контента, также просят добавить уже какой-то редактор на сайт.

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

Итак, от чего принято решение отказаться:

От открытого мира

C массой разнообразных зон и локаций, которые, мало того, запланированы в различных климатических зонах – леса, степи, пустыни, тундры, тропики, скалы и т.д.

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

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

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

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

От замков, осад, контроля над территорией и королей рас

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

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

От механик темного и светлого эфира

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

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

От турниров

Да, казалось бы, уже работающие турниры тоже нужно будет отложить, потому что сбалансированное пвп также требует доработок.

От крафта предметов и добычи ресурсов

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

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

От более сложных версий подземелий

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

От навороченной системы спутников

Изначально планировалась очень навороченная система NPC и спутников, когда, например, вы можете помогать и улучшать отношения с обычным торговцем в городе, потом, при определенном уровне прокачанности отношений он становится вам доступен как спутник (на ограниченное количество локаций, потом ему нужно будет «отдохнуть»), и потом его еще можно прокачивать – усиливать его характеристики.

Все это пока откладывается. Останутся только случайные спутники, которые могут присоединиться в локации.

 

Что же будет? Кажется, что удаляется просто все

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

Пройдемся также по пунктам:

Регистрация

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

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

Как видите – даже элементарный и уже работающий функционал требует доработок. Идем дальше.

Посты и комментарии

Их также необходимо доработать:

  • Редактирование постов
  • Редактирование комментариев
  • Возможность добавления картинок в комментариях
  • Возможность анонимных комментариев (все текущие комментарии на сайте будут перенесены на новый движок как анонимные)
  • Систему тегов: возможность добавление постам тегов, поиск постов по тегам
  • (может быть) Черновик – когда можно написать пост, сохранить его как черновик и позже вернуться к дописыванию. Если не на релизе, то потом так и так нужно будет делать такую механику

Прочий «сайтовый» функционал

Еще есть то, чего в демо-версии нет вообще, но нужно будет сделать уже в релизной части:

  • Сообщества
  • Базу по играм (которая будет завязана на механику сообществ)

Игровая часть

Здесь еще куча работы:

  • Механика диалогов с NPC
  • Механика заданий
  • Локация города, его торговцы и сюжетные NPC
  • Одно глубокое подземелье будет состоять из 3-4 визуально разных подземелий и суммарно состоять из 8-10 локаций. Сделать такое количество подземелий в сотню раз проще, чем сделать целый открытый мир, но все равно это немалый объем работы
  • Доработать механику генерации предметов
  • Добавить больше различных заклинаний
  • Добавить больше монстров и боссов
  • Добавить несколько заданий – одно основное и несколько побочных
  • Доделать и интегрировать новую боевую систему

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

Но и это не все (вы еще не устали читать, да?)

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

А так как старых страниц тысячи – это очень немаленький объем работы.

При этом можно было бы заморочиться и написать сложный парсер, который все старые страницы разом переделает в новые, но все такие глобальные переделки сайтов чреваты тем, что поисковые системы могут «глюкнуть» и подумать, что по старому домену теперь расположен новый сайт (пусть и с похожим содержимым), и, соответственно, все его позиции в запросах нужно рассчитать по-новой. А «по-новой» – это значит, что текущие позиции в топе по запросам просто исчезнут.

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

 

Но…

Реалистичные планы на перспективу построены, мотивации делать (доделать) Dusk World вагон, но вы же не думали, что не будет никакого подвоха?

Не бывает так, чтобы без подвоха...

А подвох заключается в том, что через 3 месяца релиз Diablo 4, и в первую очередь мне нужно сделать раздел по этой игре на сайте. И все ближайшие 3 месяца уйдут на это. И в начале лета, если все сложится, смогу активно вернуться к разработке Dusk World.

 

Разбавим скепсис

- Ну вот опять! Еще десять лет ждать будем! А потом и вовсе забьет! (кто-то из читателей)

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

И дело здесь даже не в какой-то суперидейности или супермотивации (хотя и это тоже есть) и даже не в том, что мне проект по-прежнему нравится, и нравится им заниматься.

А в том, что просто нет другого варианта:

Например, я хочу получать больше денег. Банальное такое желание. Но на хорошие и оплачиваемые позиции большая конкуренция. Чтобы выделиться среди кандидатов, хочу сделать свой блог о программировании. И изучая что-то новое из программирования, не просто запоминать это в голове, а сразу оформлять в виде новых статей в этом блоге. А что нужно для создания блога? Регистрация, посты, комментарии – в общем, базовый функционал. Т.е. мне так и так нужен проект, который я смогу использовать как фундамент для создания любых других сайтов.

К тому же, что diablo1.ru, что Dusk World, что блог о программировании – это не единственные сайты, которыми хочется заниматься. Есть идеи и других проектов, и везде мне понадобится базовый функционал.

Поэтому, как ни крути, даже если я вдруг (вдруг!) потеряю интерес к Dusk World – мне так и так нужно будет доделывать эту регистрацию, посты, комментарии, теги, сообщества.

А сделав это, останется доделать еще немного (немного здесь должно быть в жирных кавычках) – и вот уже урезанная, но релизная версия Dusk World.

Так что все будет.

Показать полностью
Diablo 1 год назад
2

Часть 14: О генерации предметов

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

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

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

А перед этим покажу финальный вариант, где можно посмотреть варианты генерации:


Генератор предметов


 

Чертеж

Основа предмета — это чертеж. Он определяет базовые характеристики и параметры предмета, и выглядит так (на примере кинжала):

Чертеж кинжала
   

Имя:

Кинжал

Иконка:

url к картинке

Тип предмета:

Кинжал

Магический тип:

Одноручное оружие

Ряд:

1

Тип урона:

Атака

Секция:

Правая рука

Материал:

Металл

Пол:

Мужской

Цена:

140

+

Минимальный уровень:

1

Минимальная сила:

0

+

Минимальный интеллект:

0

+

Минимальная ловкость:

20

+

Ограничения:

Скорость создания заклинаний, магическая меткость

Урон:

20

+

Шанс критического удара:

20%

Сила критического удара:

300%

Скорость атаки:

1.2

Вес:

70

+

Часть параметров имеет фиксированное значение, например скорость атаки, а часть — плавающие, например урон, и зависят от того, из какого материала они сделаны.

Последняя колонка указывает, какие параметры меняются от материала.

 

Материал

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

  • Дерево (посохи, луки, арбалеты)
  • Кожа (легкие доспехи)
  • Ткань (роба)
  • Металлы (все остальное)

Материалы имеют следующие параметры (на примере металла Верит):

Метал Верит
   

Название:

Веритовый / Веритовая / Веритовое / Веритовые

Стихия:

Земля

Множитель цены:

3.8

Множитель требований:

2

Множитель стихии:

2

Множитель меткости:

2

Множитель магической меткости:

2

Множитель защиты:

2

Множитель магической защиты:

2

Множитель веса:

2

Соответственно, если мы делаем кинжал из Верита, то он получит следующие параметры:

Веритовый Кинжал
   

Название:

Веритовый кинжал

Урон:

40 (стихией земли)

Скорость атаки:

1.2

Шанс критического удара:

20%

Сила критического удара:

300%

Цена:

266

Вес:

140

Требование к ловкости:

40

Качество

Но, помимо этого накладывается дополнительный множитель качества:

  • Множитель 0.7 — Сломанный
  • Множитель 0.8 — Низкокачественный
  • Множитель 0.9 — Грубый
  • Множитель 1
  • Множитель 1.1 — Добротный
  • Множитель 1.15 — Качественный
  • Множитель 1.2 — Превосходный

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

 

Магические свойства

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

  • Обычный предмет — 0
  • Магический предмет — 1
  • Зачарованный предмет — 2
  • Редкий предмет — 3
  • Мистический предмет — 4
  • Легендарный предмет — 5
  • Эпический предмет — 6
  • Артефакт — 7
  • Реликвия — 8

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

 

Правила применения магических свойств

Применение магических свойств к предметам происходит не случайно, а с применением нескольких «фильтров»:

1. Фильтр по уровню

Каждое магическое свойство имеет несколько вариаций, у каждой - свое ограничение по минимальному уровню предмета. Например, свойства на дополнительный урон огнем следующие:

  • 1+ уровень: Урон огнем +1-3
  • 5+ уровень: Урон огнем +4-6
  • 10+ уровень: Урон огнем +7-10
  • 15+ уровень: Урон огнем +11-15
  • 20+ уровень: Урон огнем +16-19
  • 25+ уровень: Урон огнем +20-28

Соответственно, если предмет 17 уровня, то свойства на 20 и 25 уровень будут исключены, и случайным образом будет выбран вариант из оставшихся.

2. Фильтр по типу предмета

Сейчас в базе 63 типа магических свойств, но на каждый тип предмета указан отдельный список свойств, которые на нем могут быть получены. Где-то по 20-30 на каждый.

3. Дополнительные фильтры

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

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

Чтобы таких ситуаций не было, была добавлена механика дополнительных фильтров, в соответствию с которой:

  • На оружии с типом урона огонь, может сгенерироваться только свойство на % увеличение огня (все остальные % увеличения стихийного урона будут фильтроваться);
  • На оружии с типом урона «атака» не может сгенерироваться бонус к скорости создания заклинаний или магической меткости;
  • На оружии с типом урона «заклинание» не может сгенерироваться бонус к скорости атаки и меткости;
  • На броне без защиты не может сгенерироваться бонус к защите;
  • На броне без магической защиты не может сгенерироваться бонус к магической защите.

4. Фильтр по редкости или особые свойства

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

У каждого (почти каждого) типа предмета есть свои, особые магические свойства, которые могут сгенерироваться только на нем, это:

  • Бонус к максимальным сопротивлениям — только на нагрудных доспехах
  • Бонус к блоку — только на щитах
  • Бонус к регенерации здоровья — только на кольцах
  • Бонус к регенерации маны — только на амулетах
  • Бонус к находимому золоту — только на шлемах
  • Дополнительные слоты в поясе — только на штанах/поясах
  • Уменьшение расхода выносливости — только на обуви
  • Бонус к шансу быть незамеченным — только на обуви
  • Бонус к общему наносимому урону — только на перчатках

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

У обычных свойств этот параметр равен 100%, т.е. Выбрался, к примеру, из 20 доступных типов свойств бонус к здоровью — он и применяется. А вот если на кольце выбирается бонус к регенерации здоровья, который имеет параметр редкости 40%, то будет сделана дополнительная проверка, и с 60% вероятности это свойство не применится, и будет выбираться следующее.

В будущем редкие свойства на предмете будут выделены цветом.

 

Список предметов и материалов

Кому интересны детали:


Сразу скажу, что это не финальные варианты — все еще будет 10 раз обновляться, балансироваться и дополняться.

 

P.S.

Что по итогу — механику генерации предметов начал писать еще в далеком 17 году, за пару выходных сделал основной прототип. Потом возвращался к ней в 18 году, и сделал почти готовый вариант.

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

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

  • Ничего
  • Золото
  • Расходники
  • Материалы для крафта
  • Экипировка

Если экипировка — то какая. Будет много фильтров с разными вероятностями, плюс нужно будет придумать формулу, и какое-то значение «крутости» противника, который будет передаваться в генератор дропа, и, соответственно, если убили крысу — получить «ничего» будет 80%, а если убили босса — то это будет несколько предметов, в том числе какая-то экипировка.

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

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

Показать полностью
Diablo 5 лет назад