sch1zk

sch1zk 

Видеоблогер, стример, композитор

24subscribers

14posts

goals1
$0 of $19.8 raised
Хочу купить Last Epoch чтобы играть в перерывах, а то я так с ума сойду кодить по 14 часов в день.

Дневник разработки #1

Прошла неделя с предыдущего поста.
За это время было сделано уже довольно много всего важного. Реально важного. Но пока еще не могу сказать, что произошли какие-то серьезные подвижки в плане близости тестовых запусков.
Начнем с самой, на мой взгляд, важной механики моего режима, а именно - искусственных источников тепла, таких как печи:
Теперь они могут влиять на температуру окружения, наконец-то! Т.е. они наконец-то могут греть персонажа, если тот находится в непосредственной близости.
Я по разному пытался реализовать эту фичу: карта тепла, которая создавалась для каждого источника, просто добавление тепла ближайшим игрокам, но в итоге реализовал самый оптимальный, на мой взгляд, вариант:
- Когда печь горит, она каждые 20 тиков проверяет ближайших игроков.
- Если рядом есть игрок, ему падает тикет в температурный менеджер.
- Далее, температурный менеджер сверяет, есть ли между игроком и печью какие-либо препятствия. Для этого мне пришлось сделать особый raycast, ведь нужно было учитывать не только коллизию блока, но и его "теплопроводимость", чтобы избежать ситуаций, когда игрок не может получить тепло от печи, когда стоит за решеткой.
- Если печей несколько, то температура между ними суммируется. Если стоять в помещении, в котором стоит куча работающих печек, можно и сжариться.
- У каждого тикета свое время жизни, и если печь не обновила тикет, то он удаляется.
Такой системой я решаю самую важную проблему - суммирование тепла от разных источников. Правда, у нее есть одна очень большая потенциальная проблема, которая еще может аукнуться в будущем. Если переборщить с количеством источников тепла, то температурный менеджер будет сверять расстояние и отсутствие препятствий на пути для КАЖДОГО источника тепла. Так что огонь пока не греет от слова совсем.
Но я и так уже провел за работой над этой системой слишком много времени, и она останется такой пока я не придумаю что-нибудь получше.
Пример того, как печь пробивает тепло сквозь решетку:
Здесь также можно заметить еще целых две необычных штуки:
- Оверлей жары, такая оранжевая виньетка, которая появляется когда стоишь возле жаркого источника тепла либо просто находишься в слишком жарком для себя месте.
- Дебаг интерфейс для температуры. Там можно заметить и температуру тела, и температуру окружения, и диапазон комфортных температур персонажа. Это важная информация, и она будет доступна на время тестирований.
Есть и более подробная информация, которую отправляет именно сервер для клиента, если у обоих включен debug-режим:
К слову про оверлеи. Вот, например, новый оверлей замерзания:
А вот оверлей безумия, который будет появляться когда персонаж начинает активно терять свой рассудок:
Выглядит будто на тебя напали глазные черви, но я, как бы, пока что особо и не заморачиваюсь над визуалом (потому что у меня клешни вместо рук и я совсем не умею подбирать цвета, хоть и могу задавать формы).
Из остального:
- Была значительно снижена дистанция взаимодействия с интерактивными блоками/объектами:
- На кровати теперь можно спать днем, точка респавна при этом не ставится, а также ускоряется восстановление здоровья и отдельно показываются статус бары сверху, такие как здоровье, жажда, голод и пр.:
- Пояс на экране инвентаря (как и на других экранах) переехал вниз, где ему, кажется, самое место:
К слову, благодаря тому, что я реализовал эту штуку, я разобрался еще и с тем, чтобы выброс вещей за пределы интерфейсов работал корректно. Теперь нет неких "слепых зон" за пределами интерфейса, куда нельзя было выбросить предметы. Если мышь за пределами интерфейса, значит предмет корректно выбросится.
- Слоты брони переехали, и теперь раскрываются если навести мышью на соседний слот одежды:
Это освободило кучу места для других слотов, которые можно использовать для всяких утилитарных предметов или просто косметики для персонажа.
- Добавил новый вид крафта: handcrafting, или же "ручной крафт":
Работает крайне просто. Берешь подходящий инструмент в одну руку, а материал бросаешь на землю или на рабочий блок, а после тыкаешь ЛКМ, как бы "атакуя" предмет. В связи с реализацией этого нового вида крафта, слоты для крафта на экране инвентаря были удалены полностью.
Ну и завершу новость радостной для себя, но довольно малозначительной для вас, как будущих игроков, новостью - я полностью переработал ванильную систему "усталости". Теперь у меня есть система, которую я могу очень быстро перенастраивать в одном удобном месте, и точечно расходовать как голод, жажду, так и рассудок с воздухом. В коде это выглядит следующим образом:
Немного поясню, на что именно нужно смотреть:
- SPRINTING -> некий триггер, который добавляет "усталость"
- HungerManager -> это значит, что будет "усталость" будет накладываться на голод
- 0.04F -> сколько усталости добавится за тик или одно действие
Т.е. если я захочу сделать так, чтобы при CROUCHING (игрок в присяди) расходовался голод, стамина или еще что-либо, я могу добавить буквально одну строчку. Это очень круто, и поможет в дальнейшем довольно точно балансировать игровой баланс без лишних затрат по времени на поиск всех нужных триггеров.
Subscription levels5

Дерн

$1.24 per month
Регулярный, но все равно крайне важный блок, благодаря которому образуется ландшафт мира.
+ chat

Камень

$3.1 per month
Основа всех основ, ведь именно камень мы добываем в поиске драгоценных алмазов.
+ chat

Доски

$6.2 per month
Основной строительный блок, используемый практически во всех постройках.
+ chat

Обсидиан

$12.4 per month
Уникальный блок, тяжело разрушаемый, предоставляющий возможность отправиться в Нижний Мир.
+ chat

Адский Кирпич

$31 per month
Уникальный строительный блок, добываемый в крайне опасных крепостях Нижнего Мира.
+ chat
Go up