Нужен был интерьер и экстерьер, но использовать вот этот самый популярный и заезженный ассет - я не хотел! Он используется просто в каждом инди-хорроре!
Поэтому, я пошел дальше, и потихоньку в отрыве от работы - делал многоквартирный дом в Азиатском стиле. Ушло примерно две недели в неспешном темпе.
Вот часть рефов которые брал из Корейский дорам:
Вышло более 130 уникальных моделей и я их все использую в своей игре! Вот скриншотики:
1/11
Если интересно, вот сама игрулька для которой сделал ассет: Страничка в Steam
Что оказалось неожиданным: — Если вкладывать много усилий в шортс, а именно делать катсцены или писать сценарий и по нему снимать шортс → просмотров почти нет (уже два или три раза обжегся). — Если снять мем за 10 минут про банан или помидор → просмотров и комментов можно собрать неплохо, но вишлистов это не добавляет.
🙃 Выходит, чем больше стараешься, тем хуже результат. 😅 А мемы залетают, но не конвертят в то, ради чего всё это затевалось.
Это немного бьёт по мотивации, но я держусь вот за эту мысль, которую кто-то написал мне в твиттере под постом:
“It’s a slow grind at first, but it builds into a snowball effect.”
Так что продолжаю пилить контент и верю, что шар всё-таки покатится
RGG-LAND - это больше чем просто стримерский ивент, это игра внутри которой участники играют в другие игры, а также делают различные активности, которые помогают им в их пути. Поскольку RGG-LAND вырос из простой настолки где необходимо пройти от старта к финишу, необходимо сначала пояснить основную механику передвижения. Кому интересно почитать с самого начала, можете глянуть мой лонг по Истории RGG.
Пример разных типов клеток на карте.
Игрок бросает д6-кубик, двигается вперед по карте, встает на клетку, роллит игру, проходит ее, снова бросает кубик и т.д. до финиша. Раз у нас присутствует необходимость прохождения игры для движения вперед, то у игрока должна быть возможность отказаться от прохождения игры - дропнуть. Таким образом, при дропе все то же самое, но игрок двигается назад, к старту.
Исходя из того что на клетке необходимо получить игру и пройти ее или дропнуть, самые простые действия хождения по клеткам из дефолтной настолки необходимо переработать. Итак, у нас есть белые клетки - они самые обычные, на них ничего особенного не происходит. Серые клетки - вставая на такую клетку, игрок должен сразу же перейти по пунктиру. Красные клетки - они заставляют игрока идти по другому пути, вместо дефолтного номерного. Клетка Дверь - дальнейший путь игрока определяется броском кубика.
Самые замороченные из всех оказались красные клетки. Во-первых, зоны, в которые они вели надо было как-то выделить. На данный момент лучшее решение, к которому мы пришли - это клетки со стрелочками, указывающие направление движения в зоне обхода. Это не путает игроков, все четко знают что номерной путь - основной, а если попадаешь в обход, то двигаешься по стрелочкам вперед когда проходишь игру и в обратном направлении, если дропаешь. Я много думал над тем, чтобы в зоне обхода были какие-то другие обозначение клеток, например 4-1 или 4А, но для того чтобы информация внутри клетки хорошо читалась, нужно максимум три знака, а 4-12 - это уже четыре знака, и тогда сразу придется шрифт уменьшать. С буквами тоже самое, если зона обхода будет начинаться с клетки 328, то внутри уже будет 328А и т.д., а это уже четыре знака и снова выходит слишком мелко. Минус стрелочек заключается в том, что очень тяжело сообщить словами другим игрокам где конкретно ты находишься, однако эту проблему немного решают координаты на самой карте.
В обычной настолке, в клетках, которые ведут в зону обхода нет ничего сложного. Попал на нее - иди в обход. Не попал - повезло. Но в RGG-LAND у нас есть прохождение игры, а это многое меняет и дает возможность, к примеру, избежать обхода. Допустим, игрок встал на клетку 261 и не хочет идти в зону обхода, ведь после того как он пройдет игру на 261-й клетке, его дальнейший путь будет по стрелочкам, а это может быть длиннее чем основной путь или просто невыгодно.
Тогда игрок принимает решение о дропе игры, бросает кубики и идет назад, допустим, оказываясь на клетке 260. Таким образом, теперь ему надо пройти игру на клетке 260 и потом спокойно двигаться дальше. Он, конечно, может выбросить на кубике 1 и снова встать на красную клетку 261, но шанс 1 к 6 байтит на то чтобы сделать такой мув и поставить себя в более выгодное положение.
Конечно, мне хотелось, чтобы игроки не занимались подобными вещами и подчинялись своей судьбе, если уж попал на красную клетку. В первом RGG-LAND было придумано правило закрепа, которое гласило, что если ты один раз встал на красную клетку, то твой путь навсегда изменен, и даже если ты провернешь такой мув, как я описал выше, ты все равно будешь обязан идти в эту самую зону обхода. Однако, тогда получалось, что если ты попадаешь в зону обхода, которая ведет назад, то при несчастливых обстоятельств, можно было снова наступить на красную клетку и, таким образом, ходить бесконечно по кругу.
Пример обхода, ведущего назад.
Ну и в целом было неудобно запоминать или записывать куда-то, что ты сейчас залочен на какую-то зону обхода, так что уже в следующем сезоне, я от этого отказался. От обходов, ведущих назад, тоже пришлось в скором времени отказаться - участники много бухтели, никто не хотел делать такой крюк и еще после этого оказываться позади, а также это сильно мотивировало моментально дропать игры, оказавшись на такой клетке как 53 (на скрине выше). Даже если игра очень хорошая и\или очень быстрая, проще было отказаться от ее прохождения, только бы не ходить по такой обходной зоне.
То же самое со временем случилось и с длинными обходами.
Длинный обход.
Со временем игроки просекли, что в длинных обходах нет проблемы с абузом дропа игры. Если ты стоишь на красной клетке 6 и видишь, что твой путь лежит в обход, которые приведет тебя на клетку 10, проще дропнуть игру, чтобы не делать длинный путь. На это все еще повлияла введенная механика предметов-оружий, которые позволяли участникам двигать друг друга на одну, две или три клетки в разные стороны, в зависимости от предмета. Некоторые загоняли друг друга в такие обходные зоны, а потом, чтобы вылезти оттуда дропалась игра, и игрок снова оказывался на номерной клетке. Это, конечно, не работало если игрок оказывался близко к концу обходной зоны, но все равно проявлялось все чаще.
Вместе с оружейной механикой, все начало доходить до того, что игроки стали сильно бояться этих зон. Большинство участников, лишь попав на красную клетку, сразу просили других выстрелить в них оружием, сдвинув на одну или две клетки назад.
Серая клетка на 352 сразу отталкивает на 350, тем самым делая невыгодным движение на одну клетку назад с 353 на 352.
Я немного поборолся с этим, поставив почти перед каждой красной клеткой серую клетку. Тогда получалось, что сдвиг на клетку назад отталкивал игрока еще дальше чем тот хотел бы, и это могло быть критично и приходилось просить тратить уже более дорогие оружия, которые двигали на большее количество клеток, а это было менее выгодно. Но все равно красные клетки превратились в средство закупоривания туда участников. Игроки всегда и везде ищут выгоду и когда было выгодно оказаться в такой зоне, просили заталкивать их туда, а когда не было выгодно, наоборот выталкивать. И наоборот, те кто воевали друг против друга, заталкивали друг друга в такие обходные зоны, чтобы было тяжелее выбраться или провоцировали на дроп игры.
На данный момент, я пока что пришел к двум решениям, которые будут реализованы одновременно. Первое - это большинство обходов сделать короче и выгоднее.
Выгодный короткий обход.
Попасть на красную клетку в целом сложнее чем не попасть, хотя для этого есть и много путей. Таким образом, мета на карте поменялась, и теперь уже игрокам почти всегда выгодно было оказаться в обходе, т.к. обходы превратились в срез пути. Но и попасть туда стало сложнее. Трикстеры и играющие сами за себя стали наоборот отпихивать других игроков от красных клеток, а те кто любили помогать другим не всегда хотели тратить кучу оружия на пропихивание другого игрока в выгодное положение. Красные клетки стали наоборот ценнее и желаннее.
Но, кстати, я сразу же подумал о том, что надо ставить серую клетку на первую клетку такой зоны обхода. Ведь раз стало ценным ходить в эти зоны, то игрокам должно быть сложно там удержаться, и серые клетки в таких зонах надо делать жестче, чтобы они отправляли дальше назад.
Серая клетка на первой клетке обходной зоны, ведущая сильно назад.
Второе решение это оставить пару больших обходов, но заставлять ходить туда игроков, превратив красную клетку в красную Дверь.
Красная Дверь.
Таким образом, проходя мимо такой большой зоны обхода, игрок должен бросить кубик, чтобы определить свое дальнейшее направление движения. Если повезло - скипает, не повезло - придется пройти через обход. Да, конечно, из такого обхода можно дропнуть игру, и оказаться снова на номерных клетках, но через красную Дверь все равно придется пройти, бросив кубик еще раз, а там снова может не повезти. Вероятности необязательно устанавливать 50 на 50 как на скрине выше, я попробовал и планирую попробовать разные, как 1 к 6 на попадание в обход, так и 2 к 6 и т.д.
Можно сделать и наоборот. Поставить красную Дверь на срезку.
Красная Дверь со срезом пути.
Я сделал пару таких срезочек где с вероятностью 50 на 50 можно хорошо срезать путь если, конечно, повезет. Всегда можно остановиться на клетке со стрелочкой, а тогда есть шанс что тебя оттуда вытолкнут назад.
Пока не знаю какой из этих вариантов лучше, но пока позволяет возможность использовать на карте их все, я использую, ведь, мне кажется, вариативность и разнообразность интереснее, чем если бы все обходные зоны подчинялись одной системе. В целом, я бы хотел добиться какой-то усредненности, чтобы все подобные зоны не были сильно выгодными, но и в них хотелось бы попадать, чтобы сокращать путь или наоборот закидывать туда других игроков, чтобы замедлить их продвижение по карте.
Пишите в комменты если что-то заинтересовало, я с удовольствием подискутирую. Также буду благодарен если в комментах будет какой-нибудь вопрос на основе которого можно написать подобный пост.
AntiCheat разработан для вас, чтобы обеспечить безопасность вашей игры. К сожалению, в мире видеоигр читерство по-прежнему широко распространено: люди используют различные методы, чтобы получить преимущество над другими игроками. К ним относятся использование модов, хаков или эксплойтов, дающих несправедливое преимущество. Будь то одиночная или многопользовательская игра.
AntiCheat, работая на стороне клиента, защищает вашу игровую память, хранилище, время, а также обнаруживает и предотвращает попытки взлома. Он обеспечивает целостность игрового процесса для вас и ваших честных игроков.
🔒 ЗАЩИЩЕННАЯ ПАМЯТЬ
Важные данные, такие как счёт, позиции или здоровье, обычно хранятся в оперативной памяти, которая может быть уязвима для манипуляций со стороны читеров. AntiCheat предлагает защищённые типы данных для распознавания, предотвращения и реагирования на попытки манипуляции памятью.
– Примитивы: защищённый тип данных для всех примитивов. Сюда входят такие типы значений, как int, float, string и т. д., а также все типы значений Unity, такие как Vector, Quaternion и т. д.
– Коллекции: добавлены защищённые версии для часто используемых коллекций, таких как List, Queue и Stack.
– Data- и BlockChain: введены классы цепочки данных для поддержки удалённой синхронизации упорядоченных данных с сохранением их целостности.
💾 ЗАЩИЩЕННЫЕ НАСТРОЙКИ ИГРОКОВ
PlayerPrefs в Unity предлагают простой способ сохранения пользовательских настроек и данных, но они не обеспечивают никакой безопасности или шифрования, что делает их уязвимыми для нежелательных изменений. Защищённые AntiCheat PlayerPrefs предназначены для решения этой проблемы безопасности.
- Защищённые PlayerPrefs: Защищённая реализация PlayerPrefs Unity для хранения зашифрованных данных в локальном реестре.
- Защищённые PlayerPrefs на основе файлов: Файловая альтернатива для хранения PlayerPrefs Unity в зашифрованном виде в файле по вашему выбору.
⏱️ ЗАЩИЩЕННОЕ ВРЕМЯ
Время, будь то в реальном времени или игровое время, играет решающую роль в любой игре. Однако читеры часто манипулируют им, ускоряя или замедляя игру или изменяя часы устройства. AntiCheat решает эти проблемы, предоставляя решение, защищающее от манипуляций со временем.
- Защищённое игровое время: Защищённые и надёжные версии deltaTime, fixedDeltaTime и всех других свойств класса Unity Time.
- Защищённое время устройства: Следите за временем устройства игрока и используйте надёжный формат UTC DateTime для обеспечения целостности игры.
📱 ЗАЩИТИТЕ СВОЮ МОБИЛЬНУЮ ИГРУ
Мобильные приложения часто становятся мишенью для несанкционированного распространения: мошенники модифицируют их для получения преимуществ, обхода платёжных систем или даже меняют название и переиздают. Но AntiCheat поможет вам предотвратить это!
Android:
- Проверка источника установки: Проверьте источник установки, чтобы убедиться, что ваше приложение установлено из официального магазина приложений, а не из сторонних источников.
- Проверка хеша: Проверьте весь хеш приложения, чтобы определить, было ли оно каким-либо образом изменено, будь то изменение кода или других ресурсов.
- Проверка отпечатка сертификата: Проверьте отпечаток сертификата вашего приложения, чтобы убедиться, что приложение выпущено именно вами, а не кем-то другим.
- Проверка библиотек: Распространённый метод мошенничества в приложениях Unity для Android — это вставка пользовательских библиотек в ваше приложение вместо изменения существующего кода. Проверьте библиотеку на наличие в белом и чёрном списках.
- Проверка установленных приложений: пользователь может не только изменять или манипулировать вашей игрой или приложением, но и попытаться получить преимущество, внося изменения в настройки своего устройства. Проверяйте установленные приложения!
iOS + Android:
- Проверка имени пакета: проверьте имя пакета установленного приложения и убедитесь, что это именно ваше приложение, а не ребрендинг.
⭐ ПОЧЕМУ ANTICHEAT
- Проверенное качество: тысячи разработчиков уже почти десять лет используют AntiCheat как комплексное решение для безопасности игр.
- Пожизненный доступ: купив решение один раз, вы получаете доступ ко всем функциям и будущим обновлениям.
- Исходный код: пакет включает полный исходный код C#, что позволяет разработчикам легко настраивать и адаптировать приложение под свои требования.
- Разработано для вас: разработано с учётом потребностей разработчиков, гарантируя вам всю необходимую поддержку.
Друзья, встречайте свежее обновление L.O.R.D. game! Мы подготовили для вас новые возможности, улучшения и исправления. Погружайтесь в игру и исследуйте всё, что появилось в этом релизе!
☣️ Заражённая древесина
Заражайте леса ради получения нового сорта древесины.
Теперь вы можете создавать бирюзовые доски, мебель, ограды и другие деревянные предметы!
🎙️ Ивентовый диктор
Голосовые оповещения для еженедельной клановой битвы – достучимся до вас в любой точке мира!
🛠️ Исправления
Изменён рецепт крафта блока гномьей верёвки – теперь для создания нужны металл и шестерни.
Новый дизайн кланового сундука – латинская готическая "C" намекает, что сундук принадлежит клану.
🛡️ Ребаланс комплектов брони и колец
Теперь при расчёте защиты эффекты от кольца воды не суммируются с комплектом брони. Срабатывает либо кольцо, либо броня. В зависимости от того, что из них имеет лучший показатель
Приходите поиграть или вовсе присоединяйтесь к разработке нашего Open-Source проекта на движке Luanti по мотивам легендариума Дж. Р. Р. Толкина («Властелин Колец», «Хоббит», «Сильмариллион»…) - всё на нашем сайте: https://lord-server.ru/
В первой части этой статьи я создал аналог игры «Pong!» с помощью нейросети Qwen, которую сегодня некоторые обзорщики называют одной из лучших нейронок для разработки. Во второй части мы с Qwen создали небольшой платформер. Не без проблем, но в целом справились. А вот для третьей части статьи я приготовил особое задание, которое кажется невыполнимым – создать клона «Героев Меча и магии 3», который бы отражал основные механики оригинальной игры. В конце статьи я добавлю ссылку на то, что у меня получилось, чтобы вы смогли сами оценить результат. Промпт был такой:
Давай создадим упрощенный клон игры "Герои меча и магии 3". Должны присутствовать три основных механики. 1. Перемещение по карте мира и сбор ресурсов/бой с монстрами 2. Боевая механика аналогично Героям 3. 3. Отстройка города.
Получилось интересно и несколько неожиданно:
Карта мира выглядела как поле из «минера». На поле в случайном порядке были отмечены ресурсы и монстры. Так же на карте находился и замок игрока.
Отдельно стоит отметить героя, который имеет очки опыта и движения. Так же он имеет навыки атаки и защиты (как в классических «героях») и очки здоровья (зачем?).
Еще ниже представлены имеющиеся у игрока ресурсы, но почему-то, все они выглядят как золото. Рядом кнопка перехода в город и «Восстановить движение» - аналог «Нового дня».
Если мы перейдем в город, то увидим возможность его «отстройки» и найма войск.
А что насчет боевой системы? Она в первой версии игры совсем текстовая.
Еще один нюанс - побежденные монстры не исчезали с карты, а оставались на ней и далее. Так же, как и войска игрока. Потери в бою не сохранялись – следующий бой ты начинал с той же армией, что предыдущий. При повышении уровня персонаж получал больше очков здоровья и движения, а также увеличивал свои навыки атаки и защиты. Что все это давало – неизвестно.
В первом раунде правок мы убрали ненужные герою очки здоровья, добавили рельеф карты и увеличили её. Карта теперь состояла из гор и воды (непроходимы), пустыни, болота и лесов (замедляют передвижение) и травы (не влияет на передвижение героя).
Так же я попытался исправить боевую систему и сделать ее ближе к оригинальным «Героям». Она должна была выглядеть так: поле 8*8 клеток, воины дальнего боя атакуют с любого расстояния, ближнего – только с расстояния в одну клетку. Кроме этого, персонажи могут тратить действия на движение либо на атаку.
Но, к сожалению, нейросеть не справилась с этой боевой системой. Все работало не так, крашилось, и пришлось ее снова упрощать.
После упрощения мы вернулись к прежней боевой системе, только учли несколько моментов: при атаке урон рассчитывался как сила атаки юнита умноженная на их количество (изначально количество не учитывалось), увеличили количество монстров противника (изначально в каждом стеке был один монстр). Побежденные монстры теперь исчезали с карты, а потери в стеке игрока учитывались
Отдельной проблемой оказалась казавшаяся в героях простой механика «Силы стека», то есть, сила атаки стека складывалась из суммы силы атаки юнитов, а здоровье складывалось из суммы здоровья. При этом, нейросеть не учитывала потери. То есть, она просто складывала 10 юнитов с 1 атаки и 10 хп до 1 юнита с 10 атаки и 100 хп. Если опустить хп этого юнита, например, до 50, то в реалиях «Героев» количество юнитов в стеке упадет до 5 и их сила атаки так же уменьшится. У нейронки изначально ничего не менялось. После нескольких раундов диалога этот вопрос удалось решить.
Из-за особенностей новой боевки (от тебя зависит очень мало, главное грамотно рассчитать силу отряда), потребовалось добавить опцию разведки перед боем: теперь до боя игрок видит количество и силу монстров и имеет возможность отступить.
Так же, я поменял и систему прокачки героя. Теперь у героя было всего три способности: скорость передвижения, атака и защита. При повышении уровня герой случайным образом получал или очко атаки или очко защиты. Каждое очко атаки увеличивало урон его армий на 5%, а каждое очко защиты снижало урон, получаемый армиями на 5%.
Еще один момент, который требовалось исправить – это отстройка и экономика. По сути, изначальная застройка в игре ничего не давала игроку кроме галочек напротив построенного здания. Поэтому пришлось выстроить простейшую логику: есть постройки экономические (префектура, муниципалитет, капитолий), а есть военные (стрельбище, казармы, монастырь и портал славы). Экономические давали золото в ход, а военные позволяли строить соответствующих юнитов (Стрелки, рыцари, монахи, ангелы). Изначально ваш доход составляет 250 золотых в день, а нанимать вы можете только крестьян. Кроме того, как и в «Героях», игрок должен строить экономические здания именно в указанном выше порядке.
Далее я попытался добавить механику «Сундуков» из Homm. Тут тоже возникла проблема: сундуки (их роль играли монетки) исчезали только если после того, как герой их забрал, нажималась кнопка «Новый день», в противном случае их можно было абузить бесконечно. Поэтому пришлось забрать у игрока возможность двигаться после посещения сундуков.
В отсутствие противника (я побоялся добавлять его во избежание крашей), целью игры было зачистить карту от монстров. Это было бы слишком просто сделать, если бы у монстров отсутствовала бы какая-либо прогрессия. Поэтому я добавил правило: при нажатии кнопки «Новый день», количество монстров во всех нейтральных лагерях увеличивается на 1. Это не сильно усложняет бой с простыми монстрами типа гоблинов, но вот чтобы победить драконов нужно будет постараться.
На удивление, игра получилась очень сложной, за первые несколько попыток мне её пройти не удалось – прогрессия монстров оказалась больше прогрессии игрока. Пришлось немного подправить баланс.
Что я получил в итоге?
Игру с механиками «Героев»: отстройка замка, бой с монстрами и перемещение по карте. Если честно, я правда не ожидал, что Qwen сможет объединить все эти механики в одной игре. В игре есть сундуки, крестьяне, ангелы и драконы. Итоговый код игры составил 1289 строчек. Для создания игры я не применял никаких знаний программирования. Все что я делал – это ставил задачи нейросети.
Что я потратил?
Относительно первых игр я потратил очень много времени на генерацию – около 10 часов. Код игры усложнился, а значит и время ответа ИИ увеличилось с 1-2 до 5-6 минут. Кроме этого, сама игра обладала более сложными механиками, а значит и мои ТЗ нейросети были гораздо более объемными.
Не знаю, как долго она будет храниться на серверах, поэтому не могу ручаться за работоспособность ссылки для тех, кто увидит статью сильно позже её выхода.