[1.16.5] Relics - Реликвии со сложными и уникальными механиками

205
12
103
Давненько от меня не было новостей, но на то есть свои оправдания - сессия. Буквально 10 минут назад сдал один из экзаменов, и следующий уже не за горами. Но не будем о грустном - к изменениям:
Ну, во-первых, вспышка получила возможность прервать передвижение между точками, если игрок нажмет шифт в процессе. Так её станет немного легче использовать, и можно будет предотвратить ненужные передвижения.
Во-вторых - сейчас ведётся работа над комплексной реликвией заезженной вампирской тематики, к которой обращались уже все, кому не лень. Готово на данный момент следующее:
Амулет из вампирских клыков - фенечка для мода Baubles, надеваемая в слот шеи. Обладает внутренним буфером крови и параметром количества клыков. Чем больше клыков в амулете - тем больше её вместимость по крови, соответственно (1 клык - 100 капель). Кровь внутри амулета имеет свойство испаряться в дневное время: если носитель находится в тени или под открытым солнцем во время дождя - по 1 капле крови в секунду, если под открытым небом в ясную погоду - по 5 капель. В ночное время, а также в дождливую погоду в тени этот запас не изменяется. В случае, если запас крови в амулете пуст, носитель, находясь под открытым небом, будет получать 2 единицы чистого урона ежесекундно. Клыки в амулет добавляются путем нажатия комбинации Шифт+ПКМ с амулетом в руке, но для этого, очевидно, они должны быть в инвентаре. В случае смерти носителя амулет теряет 1 клык из запаса, а если таковых не останется - амулет разрушается. Если кому-то сложно это представить - просто вспомните механику вампиризма из WItchery - амулет из вампирских клыков действует примерно похожим образом.
Вампирский нож - предмет, основная задача которого - работать с буфером крови внутри амулета. За каждого убитого ножом моба амулет наполняется на 25% от максимального здоровья жертвы. В случае успешной атаки по цели амулет покрывается её кровью, и следующий урон таким ножом восстановит владельцу 25% от нанесенного атакой урона. В ночное время окровавленный нож наносит двойной урон, что делает его эффективным исключительно в ночное время суток, поскольку днём запас крови отнюдь не бесконечен, а её поддержание занимает определенное время. Нож также обладает двумя (с половиной) активными способностями:
1 - Рывок. За небольшое количество крови (10 капель) игрок совершит рывок на 20 блоков в указанном направлении. Во время рывка носитель реликвии неуязвим и невидим, за ним остается лишь облако кровавого дыма - темное облако с мелкими красными пятнами, которое тянется за игроком, пока тот находится в состоянии рывка. Механика движения этой способности устроена таким образом, что скорость передвижения в первые 10 блоков постепенно увеличивается, а в последующие - замедляется, что создает эффект, будто под конец рывка игрок зависает в воздухе. Во время такого зависания повторным правым кликом игрок может выпустить кинжал (за 10 капель крови из амулета, естестна :3) в направлении своего взгляда, это продлит время зависания в воздухе еще на одну секунду, а если он попадет в цель - игрок притянется к ней. Во время полнолуния рывок не имеет перезарядки и может непрерывно совершаться до наступления утра, что обеспечивает практически свободный полет за скромную плату по крови.
2 - Бессмертие. В обмен на 50 капель крови в секунду игрок становится полностью бессмертным, игнорируя любой получаемый урон. Способность может быть активирована только в том случае, если амулет заполнен на 98-100%
Теперь о запланированном, что я просто еще не сделал или сделал, но не могу протестировать в одиночку:
Световая граната - бросаемый предмет. При попадании в цель нанесет носителю амулета урон, равный его запасу крови. Соответственно, урон не обязательно будет фатальным, если носитель обладает достаточно хорошей броней.
Зеркало - предмет, который должен помочь вампирам отражать действие световых гранат. В случае, если носитель амулета держит в левой руке зеркало (правой для левшей, соответственно), и в него бросили световую гранату - урон, который она должна была нанести, будет полностью поглощен, а если тот игрок, что кинул гранату в обладателя зеркала также носит вампирские клыки - он получит весь урон, что должна была понести его потенциальная жертва (наличие у него зеркала также поглотит урон, но уже без повторного отражения). У зеркала всего 5 единиц прочности, по истечении которых оно ломается.
Связка чеснока - простенький амулет, ношение которого попросту блокирует возможность вампиров лечить свое здоровье за счет нанесения урона цели, а также не дает им притянуться к цели после броска ножа.
Жертвенный кинжал - разрезает тело носителя, вызывая серьезное кровотечение, что регулярно наносит урон, который будет тем выше, чем быстрее передвигается использовавший. В обмен довольно быстро заполняет шкалу крови в амулете.

Думаю, простыня достигла своих критических размеров, и последующие подробности будет логичнее опубликовать позже :D
 
205
12
103
Совсем недавно я начал задумываться над тем, что пора заканчивать делать бесполезные реликвии, и пора заняться созданием способов их получения. В течение получаса был сформирован практически весь план на основу этой задумки, и, как мне показалось, наилучшим решением перед созданием задуманного будет мигрировать с Legacy версии игры на что-то более новое, поскольку дальнейшее портирование задуманных систем вызовет тонны баттхерта как у меня, так и у всех остальных в радиусе нескольких километров.
Честно - я не очень хочу мигрировать, потому что с позиции сервера 1.12 сейчас куда более стабильная для продакшена, нежели что-либо более новое, но, тем не менее, ставки на 1.16 сейчас также крайне велики и не оставляют желания сидеть на старых версиях, потому вопреки внутреннему чутью план на данный момент таков:
1. Миграция до последней доступной версии форжа, и, соответственно, версии игры 1.16.4.
2. Исправление всех косяков, связанных с основным принципом работы реликвий - НБТ, поскольку на 1.16 логика работы с ним несколько изменилась, и практически все мои костыли станут неактуальными.
3. Непосредственная работа над способами получения реликвий, которая в несбыточных мечтах оказалась несколько более комплексной, нежели сами реликвии. Но не суть.

Надеюсь, благодаря этой миграции я смогу пересмотреть свои взгляды на то, как должны выглядеть реликвии, и сделаю их лучше и полезнее. Если переживу сессию, конечно же, ибо у меня тут дедлайны через 3 дня, а у меня готово -0% от всей работы. Пожелайте мне удачи! :D
 
205
12
103
Сессия продолжается. Равно как и портирование мода на 1.16.

На данный момент я работаю над реализацией энергии, которую реликвии будут использовать для своей работы - очками душ, а-ка SoulPoints или же просто SP.
SP на данный момент добывается при убийстве мобов: агрессивных, и не очень. Обязательным условием для получения души является наличие камня провидца во второй руке игрока. Сама по себе душа - невидимый моб, определить которого можно лишь по частицам искр, испускаемых душой. Бывает двух видов: Порочная (монстры, красного цвета) и чистая (животные, светло-синего цвета). Порочная используется для работы с атакующими реликвиями, чистая - с защитными. Чистая душа движется вверх равномерно и плавно, не представляя для окружения ни малейшей угрозы, порочная же душа совершает движение рывками, иногда перескакивая из стороны в сторону. Также порочная душа по сравнению с чистой представляет угрозу для игрока, держащего в руке камень провидца (который позволяет видеть души) - коллизия с такой душой может нанести чистый процентный урон и осквернить душу игрока путем снижения некоторых его характеристик, используемых в моде. Ловля душ чем-то напоминает игру из серии покемонов - для этого необходимо подобраться к душе поближе и нажать по ней ПКМ специальной сферой, которая попытается вобрать душу в себя. Чем выше объем такой души (определяется кол-вом ХП убитого моба), тем меньше шанс её поймать, и тем выше шанс разрушить сферу.

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

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

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

Sainthozier

Стрелочник
626
11
370
Покинуть данж нельзя
Можно. Всякими телепортаторами из других модов.

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

портирование мода на 1.16
Разве это портирование? Ты ж на 1.12 не релизнул ничего. Это разработка на 1.16 ) Версию в темке обнови )
 
205
12
103
Можно. Всякими телепортаторами из других модов.
Если сказано "нельзя", полагаю, приложены все усилия для предотвращения этого. Я отлавливаю ивенты респавна и перемещения (опционально отключаемо, если сервер слабоват для последнего). Патчить другие моды я уж точно не намереваюсь.

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


Разве это портирование? Ты ж на 1.12 не релизнул ничего. Это разработка на 1.16 ) Версию в темке обнови )
Да. Это портирование той части кода, которая была у меня на 1.12. Шапку темы, равно как и её описание, обновлю по мере готовности системы с SP.
 
205
12
103
Примерно вот так сейчас выглядит та самая душа (может изменяться со временем), которая появляется при убийстве мирного моба с камнем провидца в руке:

1608592776289.png

После появления она начинает плавно перемещаться вверх, а скорость её перемещения прямо зависит от того, сколько времени она существует. Спустя ~10 секунд душа умирает.

Я очень хочу сделать ей шейдер, чтоб земля под ней светилась синеватым оттенком, но пока не имею ни малейшего представления о том, как этого добиться. Скорее всего на изучение принципа работы шейдеров уйдет достаточно времени, потому новостей от меня какое-то время не будет, + защита курсовой через пару дней, кря-кря...
 
205
12
103
Теперь душу можно перемещать по миру некоторое время, если у игрока в руке есть специальная приманка. Выглядит это примерно так на данный момент:

1608640606377.png1608640623498.png
 

sk9zist :l

Исправился
981
18
157
Советую переименовать мод в что-то в стиле "Blood Amulets" или "Blood Amulets & Dungeons".

Патчить другие моды я уж точно не намереваюсь.
Можно. Всякими телепортаторами из других модов.
Ну так сделай в LivingUpdateEvent проверку на то (в зависимости от того, в данже ли он сейчас, или нет), находиться ли игрок в определенном диапазоне координат на котором расположен данж. Если нет - телепортируешь его обратно в данж.
и с патчем других модов также не придёться заморачиваться, ведь игрока в любом случае будет телепортировать назад, несмотря на то, каким способом он попытаеться уйти.

UPD:
если носитель амулета держит в левой руке зеркало (правой для левшей, соответственно)
Кстати насчёт вот этого вот, нашёл я недавно такой метод (случайно) и решил поделиться с вами:
EntityPlayer#getHeldEquipment()

Он получает итем и в правой и в левой руке (если в левой - то получает в левой, если в правой - то в правой)
 
Последнее редактирование:
205
12
103
Сейчас работаю над базовой механикой крафта в моде. Пытаюсь осилить создание своих алтарей (честно - сложно. Очень сложно). Уже сделал средство передачи маны на расстояния (случайно, кстати), понемногу допиливаю визуальную составляющую. К примеру, вот так выглядит обновлённый эффект ауры души:

1608929395730.png

Собственно, отличие от предыдущей механики в том, что центр души практически полностью белый, а её аура градиента в указанном мной диапазоне. Вроде выглядит неплохо :D
 
205
12
103
Штош. Я хочу сразу попробовать разделить ритуалы в моде на несколько уровней. Вот вам анимация первого уровня :D


UPD: Просто упоротый скриншот из индева:
1608971159580.png
 
Последнее редактирование:
7,109
326
1,513
Это векдь частицами делается? Скоко фпс?
 
205
12
103
Это векдь частицами делается? Скоко фпс?
Ага, частицами. По ФПС на моем ведре просадок не вижу особо, что довольно странно.
Энивей, если будут проблемы с ФПС - буду решать костылями на рендере. Даже есть предположения, как именно :D
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
7,109
326
1,513
Иностранцы тоже играют на 1.12. Летом играл на серве с ProjectOzone3
 

sk9zist :l

Исправился
981
18
157
@Sainthozier Твой "сервер в румайне" ещё на 1.7.10 сидит с модами. На 1.12.2 ещё толком не все сервера с модами перешли. Мод будет и на этой и на той версии
 
Сверху