Здрасьти, а это снова я, человек-devlog

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

Здрасьти, а это снова я, человек-devlog

О проекте

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

Что нового? Как дела?

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

Небольшие изменения

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

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

Ну и наконец то я нашел иконку для пластика, спустя десять тысяч лет поисков я смог.

Это вроде как пластиковая канистра, не пакет из магазина.. 
Это вроде как пластиковая канистра, не пакет из магазина.. 

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

  • У объектов теперь есть обводка. Как же я устал искать реализацию этого в URP, ибо с шейдерами я не магистр.

Инвентарь

Ну а теперь настало время для рассказа истории боли и страдания. Был чудный вечерок, я сидел и смотрел в монитор. И в какой то момент я понял, что инвентарь меня не устраивает. Изначально я хотел обойтись без Drag&Drop системы. Думал хватит и того, что игрок подбирает предметы и они просто появляются на панели, но в какой то момент до меня дошло, что некоторые предметы важнее других и их нужно держать на слоте 1, а всякий мусор на последнем. И я взялся реализовывать эту систему, все шло хорошо, я быстро создал систему взаимодействия UI панели с инвентарем, прикрутил Drag&Drop, и все было бы хорошо, но........................ И с этого начинается моя история.

Главный антагонист моего романа вот этот парень, Dictionary.

Здрасьти, а это снова я, человек-devlog

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

Dictionary.Add(item, 10); //добавить предмет в конец списка

По сколько это таблица хешей, то она не работает по такому принципу. И я решил изменить его на:

private List<KeyValuePair<ItemConfig, int>> items;

Мне нужно было что бы я мог хранит данные в видел Предмет/Количество. Но лист тоже стал не тем, что мне надо. Главные проблемы были в переборах и поисках объектов в таком списке. Что бы все работало более менее как нужно было мне, приходилось допиливать расширения методов, использовать линку и тд. В общем сидя и смотря на это все

Здрасьти, а это снова я, человек-devlog

и испытывая лютый кринж, я подрубил свой мозг на максимум, и за пару часов реализовал все по нормальному. Удалил всю дурь которую написал, и сделал все проще. Если кому интересно то я создал структуру Item, и в нее поместил Config, и Int, и вместо листа и DICKtionary я создал обычный массив

private Item[] items;

Ну и переписал методы перебора и тд. И теперь мы имеем полностью рабочий Drag&Drop инвентарь:

Крафт

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

Здрасьти, а это снова я, человек-devlog

Главное изменение в системе крафта, это то, что я убрал таймер крафта объектов. То есть теперь объект сразу будет появляться в инвентаре, не знаю зачем я вообще добавлял эту фичу.

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

Баги

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

  • У модели предмета кислородного баллона был pivot внизу и из-за этого объект в космосе крутился не от центра, а от основания, пофиксил путем преобразования модели в модель Probuilder и нажатием 1 кнопошки для централизации пивота по модели
  • Переработал спавнер предметов, теперь он работает от конфигов предметов а не от префабов, это не совсем баг, но для меня это ошибка
  • Так же спавнер теперь задает рандомное количество предмета, раньше он спанил предмет, он летел и когда игрок его подбирал он получал предмет в инвентарь в количестве +0

Движок

Немного расскажу про расширение движка для удобства работы.

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

Здрасьти, а это снова я, человек-devlog

Так же добавил еще одно окно для построек:

Тут хранятся данные конфигов построек - Нужные ресурсы и тд.
Тут хранятся данные конфигов построек - Нужные ресурсы и тд.

И есть еще одно окно, но оно связано с самым интересным(по моему мнению), и об этом будет в самом конце.

Главное меню

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

Здрасьти, а это снова я, человек-devlog

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

В главной роли Беттерс Стотч с лицом моего не самого смышленого соплеменника

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

Здрасьти, а это снова я, человек-devlog

Добавил сцену загрузки между уровнями:

Ранняя пташка, еще бы красивенький фон и шрифт и вообще можно в AAA продавать
Ранняя пташка, еще бы красивенький фон и шрифт и вообще можно в AAA продавать

Еще был добавлен эффект затухания при переходе между сценами:

Накидал концепт меню паузы:

Здрасьти, а это снова я, человек-devlog

Геймплей

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

Здрасьти, а это снова я, человек-devlog

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

temp. = distance(exitPoint, player) //Если описывать грубо

Это и есть тот самый индикатор про который я писал вышел:

Здрасьти, а это снова я, человек-devlog

Персонаж получает урон в зависимости от уровня обморожения.

Ну и на этом геймплей фишки кончаются :"(

Ну а теперь самое сладенькое

После последней своей статьи я решил выложить пост на Реддит, и результаты были выше ожиданий.

Здрасьти, а это снова я, человек-devlog

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

Прогресс перед глазами

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

И я решил создать свой Notion в юнити.

Здрасьти, а это снова я, человек-devlog

Накидав примерный UI я приступил к реализации окна в движке. По итогу вышло что то вроде того:

Здрасьти, а это снова я, человек-devlog

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

Чат

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

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

Другие идеи

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

В общем я хочу создать свой "форум" внутри игры.

Итог

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

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

Подводя итоги, работы еще много, но проект уже выглядит приятно, и думаю скоро я уже добью полноценную демку и залью ее на Itch.io, страницу я кстати уже создал на досуге:

Логотип думаю поменяется со временем
Логотип думаю поменяется со временем
Ну не красота?
Ну не красота?

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

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

Здрасьти, а это снова я, человек-devlog
2525
24 комментария

Чувак музыку предлагает для проекта, если надо

2
Ответить

О, идейный чувак видимо

1
Ответить
Автор

Интересно, но пока что музыку добавлять в проект смысла нет)

1
Ответить

"Человек, но devlog!
Он как human,
Но из words!"

2
Ответить

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

интересные идеи в блоке про комьюнити, не бойся развиваться в эту сторону, отсекая слишком сложные в реализации вещи. у меня идей особо нет, кроме традиционных twitter/discord, народ такое любит

у notion есть неофициальные API-клиенты на go, python и java. юзаю на питон-проекте уже почти год, полёт нормальный, ничего не отваливается. официальный API всё обещают, но без конкретных сроков

1
Ответить
Автор

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

Да, я видел API на питоне, но в этом и основная проблема) Я не хочу использовать питон в юнити, ибо шанс конфликта или отвала чего либо 99.999999%, а подгонять API и корректировать времени нет :( Да и думаю авто экспорта с авто обновлением будет достаточно. По сути иметь "свой" notion в движке даже удобно. А сейчас еще хочу посмотреть UI Builder или как то так, фича от юнити для создания UI с XML и USS(CSS только USS xD) и сделать себе супер красивый и удобный редактор

1
Ответить

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

1
Ответить