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

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

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

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

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

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

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

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

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

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

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


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

1608592776289.png

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

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

1608640606377.png1608640623498.png
 
709
9
106
Советую переименовать мод в что-то в стиле "Blood Amulets" или "Blood Amulets & Dungeons".

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

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

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

1608929395730.png

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


UPD: Просто упоротый скриншот из индева:
1608971159580.png
 
Последнее редактирование:
6,091
226
1,177
Это векдь частицами делается? Скоко фпс?
 
192
8
93
Это векдь частицами делается? Скоко фпс?
Ага, частицами. По ФПС на моем ведре просадок не вижу особо, что довольно странно.
Энивей, если будут проблемы с ФПС - буду решать костылями на рендере. Даже есть предположения, как именно :D
 
709
9
106
709
9
106
6,091
226
1,177
Иностранцы тоже играют на 1.12. Летом играл на серве с ProjectOzone3
 
709
9
106
@Sainthozier Твой "сервер в румайне" ещё на 1.7.10 сидит с модами. На 1.12.2 ещё толком не все сервера с модами перешли. Мод будет и на этой и на той версии
 
Сверху