Возможно есть фанаты вселенной Backrooms, которым надоели Kane Pixels с его Бактериями, уровнями, которые появляются из головы и вы строчите Wiki с желанием получить игру по этой информации? Это игра будет именно про этою. Пока в игре есть 7 уровней включая Hub. Совместно с ИИ Claude мы делаем переходы между уровнями возможными, инвентарь, возможность размещения баз, крафт. В будущем сделаю мультиплеер и предметы для базы. Игра находится еще в разработке.
Строю игру-мир в Unreal 5 один, с двумя ИИ-агентами вместо команды. В сёлах этого мира будут жить люди, НПС и ИИ-аватары, поэтому в каждый дом должно быть можно зайти: зал, лестница, очаг, стол, двор.
Зал трактира из генератора: общий стол, лестница наверх. Unreal Engine 5
Сначала попробовал готовое. Дал рисунок трактира-кузни трём ИИ-генераторам 3D по картинке: TRELLIS.2, Tripo и Pixal3D. Предметы и статуи они делают отлично, а дом у всех троих вышел одинаково: снаружи красивый, внутри пустая коробка — голые стены и пол.
Внутри: три ИИ-генератора 3D по картинке и генератор домов
Процедурные генераторы городов ставят коробки, наборы ассетов дают одни и те же дома, а руками — дни: три дома одного села делались двое суток.
Готового генератора целых домов, с комнатами и мебелью, я не нашёл. Поэтому Клод, первый агент, за одну ночь написал свой — по правилам, без нейросети внутри: паспорт дома → план этажей → стены, кровля, мебель, двор → проверки. Астра, второй агент, смотрела каждый шаг глазами художника, я ставил задачу и принимал.
Показ в браузере: трактир с кузней и дом с садом, снаружи и без крыши
Главная проверка — пройдёт ли человек. Все комнаты достижимы с улицы, двери не уже 95 см, лестница не круче 38°, ступень не выше 19 см, от входа видны очаг и стол. Дом собирается за 0,11–0,17 секунды, генератор держат 364 теста.
Второе семейство — дом с двором: крыльцо, горница с печью, сарай, грядки, плетень. В Unreal Engine 5 такой дом встаёт за 8–30 секунд.
Дом с двором: с крыльца видно горницу с печью. Unreal Engine 5
Можно начать и с картинки: показываешь рисунок — ИИ читает его в паспорт дома, генератор строит похожий.
Что честно не получилось сразу. В первом ролике заметил: косяки дверей мигают. Косяк стоял заподлицо с откосом стены, две грани в одной плоскости, и видеокарта не знает, какую рисовать. Косяк отодвинут в проём на 2 сантиметра. Следом так же мигал бок лестницы: каждая ступень была коробкой до конца марша. Теперь ступень — столбик под своей проступью, а в генераторе появилась проверка, которая ищет совпадающие грани. И ещё: сборщик для Unreal с материалами в выпуск пока не вошёл, в движок дом идёт файлом glTF.
Выложил бесплатно, открытый код (MIT). Дома выгружаются в glTF для Unity, Godot, Blender и Unreal, а покрутить их, снять крышу и разрезать по этажам можно прямо в браузере — ссылка на показ в начале страницы проекта. Если знаете готовый инструмент, который строит дом целиком, с комнатами и мебелью, — киньте в комментарии, сравню.
Наткнулся тут на один видос про то, как сообщество любителей Майнкрафта придумывает недостающие по их мнению механики для любимой многими игры. Ролик лишь косвенно относится к этому посту, так что можно не смотреть, но он напомнил мне тему поста, который у меня давно и бестолку валялся в черновиках.
просто уютненькая деревенька на картинке для привлечения внимания из сети
Сразу оговорюсь, что дед (в лице меня) не пропустил приём таблеток, не впал в детство и не поехал кукухой, просто мне всегда нравилась лаконичность и красота концепции Майнкрафта. Я далеко не игроман, мало во что играл вообще последние, наверно, полтора десятка лет.
Однако зайти в свежесозданный ванильный мир свежей ревизии, побегать, полюбоваться незатейливым, но таким органичным ланшафтом, послушать офигенно атмосферную музыку, построить домик из грязи, пару простых ферм, шахту, огородик, зарезать дракона, добыть без читов элитры, побродить по бескрайнему миру в поисках красивых мест и приключений... Ну вот как-то всегда лежала у меня душа к этой игре. Разве что первые самые сырые версии вызывали ступор и удивление, а потом как-то втянулся.
Ну так вот, ближе к идее-то!
Есть ещё одна механика которой в этой игре (ИМХО) не хватает, и которая с одной стороны не нарушила бы лаконичность концепции майнкрафта, а с другой сильно оживила бы мир не вступая в противоречие с генеративным подходом к формированию мира по мере его разведки.
Речь про переработку механики и экономики жителей.
Сейчас жители в майнкрафте по своим возможностям не сильно ушли от животных. Да, с ними можно, как бы, торговать, но вещи, которые они продают - слишком натянутая и вопиющая условность.
Да, они, как бы, "живут" в домах и деревнях, но кто когда и как их для них построил - не понятно, ведь даже Эндермен может брать и ставить блоки, а жители нет.
Профессии жителей - это почти полностью очередная натянутая условность и надуманное "разнообразие". Это плохо вяжется с красивым и реально разнообразным игровым миром.
Представьте что было бы, если дать жителям немного интеллекта и возможностей по операциям с блоками и инструментами как у игрока.
- Жители могли бы более честно отыгрывать свои профессии. Фермеры по-настоящему бы выращивали и складировали еду в полном производственном цикле, каменщики изготавливали бы материалы и развивали, хоть и медленно, свои деревни, строили бы дома для новых жителей просто по аналогии со Схематикой. Можно было бы добавить шахтёров, которые по-настоящему бы строили шахты и добывали руду традиционным способом.
- Торговля стала бы менее условной, если бы покупать можно было только те товары, которые жители сами добывают или крафтят. Это автоматически внесло бы разнообразие и специализацию в экономические роли конкретных деревень. Если у шахтёра удачное место и нашлась богатая жила, то деревня богата конкретными ископаемыми, Если рядом лес, лесорубы смогут рубить больше дерева, получать саженцы, а из саженцев лесник может выращивать новый лес на смену срубленного.
- Деревни могли бы расти и развиваться с возрастом мира, вносить живое растущее разнообразие в статичный сегодня пейзаж.
Мне сейчас возразят, что генеративная модель формирования огромного мира не даст такое реализовать без ещё больших условностей и компромиссов, чем даже сейчас, но нет, у меня есть решение проблемы развития не сгенерированных (ещё) локаций.
Помните как устроен генератор мира? Он собирает ландшафт, как бы, слоями. Шум Перлина, на котором основано псевдослучайное разнообразие, имеет много накладывающихся слоями гармоник, что даёт возможность генерировать почти бесконечный органично выглядящий мир без швов и заметных повторений.
Для уровня развития деревень тоже нужно сделать отдельный слой. Нужно просто (хотя согласен, не так уж и просто) добиться примерно похожего уровня "развития" деревни жителями при живом наблюдателе (игроке) и генератором разной степени развитости деревень при отсутствии наблюдателя.
Ну вот, к примеру, пляшем от ресурсов. У шахтёра есть понятный и, простите за технический термин, идемпотентный регламент строительства шахты в любых заданных условиях. Это конкретный алгоритм, параметры которого опираются на координаты и сид локации, а результат - это цепочка вполне определённых задач по добыче и установке блоков. Эту цепочку действий можно выполнить как по-настоящему (юнитом шахтёра), если игрок наблюдает, так и ускоренно без реального отыгрыша согласно времени, прошедшему в локации без наблюдения игроком.
Получается своего рода шахтёр Шрёдингера. Если игрок смотрит, тот копает по заданной программе, а если не смотрит, то майнкрафт проделает все замены блоков "в уме" не тратя ресурсов на отыгрыш, и когда в локацию придёт пользователь, он увидит шахту сразу сгенерированную в том же виде, что получилась бы при отыгрыше программы жителем-шахтёром.
Да, шахтёру можно мешать, и этим игрок будет вносить своё влияние в жизнь деревни, в её развитие, но если не сильно вмешиваться, то результат не отличишь!
Ну и кроме того, чтобы мешать, можно же и помогать! Например привести "корованы" из деревни в соседнем биоме, тогда, шахтёр сможет использовать другой вид древесины в подпорках, или быстрее копать штреки не ожидая пока свой лесник умудрится что-то вырастить из скудного случайного запаса семян.
Все эти параметры: богатство локации деревьями, рудами, другими ресурсами - это то, что можно вычислить на основе сида мира для любой точки этого мира не создавая реальных чанков и блоков. Все эти параметры будут влиять на те самые идемпотентные алгоритмы юнитов по добыче ресурсов, развитию своей деревни.
Это значит, что небольшим количеством сравнительно простых и однообразных алгоритмов можно добиться огромного разнообразия проявлений реальной "жизни" игрового мира.
Тут главное не перемудрить и не переборщить, как это часто бывает с модами. Хочется сохранить или даже усилить лаконичность и замкнутость экосистемы игры, чтобы минимальным количеством новых сущностей (а лучше вовсе без них) органично и ванильно повысить разнообразие и живость игрового мира.
Что скажете? Я такую игру "джва года ждал"! Всё руки не доходили сделать мод.
Мальчик Витя, 43 годика, погромист.
ВНИМАНИЕ! Этот текст написан и подготовлен к публикации исключительно живой настоящей биологической нейронной сетью автора, без использования генеративных моделей и искусственного интеллекта. Мне кажется это редкость в наши дни, и такие пометки стоит делать для тех, кому это ещё может быть важно.
Кстати, наверно я не первый кому пришла в голову идея именно такого мода. Если кто сталкивался - кидайте ссылки. Интересно же. Только, я считаю, главное - это не надуманное внесение условного разнообразия путём злостного и безмерного осквернения Бритвы Оккама, а именно тонкое и деликатное незаскриптованное внедрение механик "живых" жителей и развивающихся поселений в игровой мир.
Всем привет! Вместе с братом разрабатываем тактический карточный рогалик. Подробнее можно узнать тут: Ссылка на стим.
Думали над тем что игроку достаточно тяжело выйти из зоны контроля, бросок и прыжок, помогают но не достаточно. Да и хочется больше взаимодействия с юнитами. Добавили оглушение, страх, сбитие с толку, обозвали их статус эффектами.
Оглушение - заставляет юнита пропустить следующий ход. Также он не реагирует на игрока, можно спокойно двигаться рядом с этим юнитом.
Сбитие с толку - заставляет юнита поменять планы на свой ход.
Страх - заставляет бежать юнита к краю карты.
С броском другая проблема, он слишком силен, поэтому карты с ним стоят много энергии. Решили сделать эконом версию - отталкивание.
Отталкивание позволяет толкнуть юнита по прямой линии. То есть приходится подстраиваться чтобы толкнуть объект куда надо. При падении или столкновении юнит или препятствия получают урон. Часть объектов на карте, например кости,увеличивают урон от столкновения с ними, и являются хорошей мишенью для отталкивания или броска.
Также, часто получали мнения, о том что деревья душат боевую арену своей листвой, и за ними ничего не видно.
Изначально приняли решение превратить все деревья в пни, и оставить тени. Но выглядело это как лагерь углежогов, пришлось дописывать шейдер.
Новый шейдер позволяет скрывать деревья в середине экрана, так чтобы было видно поле, но по краям остаются кроны чтобы создавать ощущение леса
Тени всегда остаются на земле, они дают понять что тут все таки стоит дерево, а не просто пенек, даже когда кроны не видно.
На связи Александр, технический художник студии WATT. Сегодня расскажу о том, как мы делаем процедурную генерацию домов в игре GRIMPS.
Одной из самых трудозатратных частей разработки является создание окружения. Отрисовка и сборка контента занимает огромное количество времени, поэтому мы решили активно использовать процедурную генерацию, чтобы ускорить производство и снизить нагрузку на арт-отдел.
В GRIMPS мы применяем систему PCG (Procedural Content Generation) в Unreal Engine. Как это работает? С помощью нодовой системы мы создаём алгоритм, который размещает точки в пространстве. К этим точкам затем привязываются различные модули — стены, окна, двери, а также детали вроде кондиционеров или водосточных труб.
Такой подход позволяет не только быстро собирать здания, но и оптимизировать сцену. Движок объединяет одинаковые элементы и рендерит их как единый объект, что экономит память и ресурсы. В итоге дом, который вручную собирался бы несколько дней, мы создаем буквально за пару минут, просто меняя параметры в панели генератора: размеры, цвет, декор и другие настройки.
При этом каждое здание выглядит по-разному: художник ставит генератор на сцену, настраивает параметры — и получает дом нужного размера и стиля.
А теперь немного технической информации
В основе генератора лежит сетка точек, задающая структуру здания. Сначала создаётся базовая сетка с заданным расстоянием между точками. Затем алгоритм удаляет внутренние точки, оставляя только точки по периметру — именно они используются для построения стен.
После этого начинается фильтрация точек:
выделяются углы, для которых используются отдельные меши
распределяются точки для стен, окон и дверей
добавляются уникальные элементы вроде окон лестничной клетки
Например, у хрущёвок мы используем простой паттерн: каждый пятый модуль по горизонтали становится дверью. Это позволяет быстро создать узнаваемую структуру здания.
Для разных сторон здания используются отдельные правила:
Передняя сторона здания
используется основной паттерн с дверями
вокруг дверей формируются дополнительные модули стен
Задняя сторона
двери не используются
на их месте размещаются окна лестничной клетки
Боковые стены
крайние точки становятся глухими стенами
остальные точки заполняются окнами
Далее сетка дублируется по высоте, формируя этажи. Алгоритм отдельно обрабатывает:
первый этаж
средние этажи
верхний этаж
На основе атрибутов точки превращаются в конкретные элементы — окна, стены, двери или карнизы крыши. Дополнительно создаются точки для мелких деталей: водосточных труб, кондиционеров и других элементов.
Для разных типов зданий алгоритм немного отличается. Например, у строительных площадок добавляются внутренние стены, а также отдельные настройки для размещения окон и заборов.
В следующих девлогах расскажем ещё больше о том, как создаётся мир игры.
Процедурный генератор диаграмм имени русского математика Георгия Феодосьевича Вороного. Можно использовать просто для дизайна, а также как шаблон для ИИ-генераций текстур.
Есть точка зрения, которую сегодня любят называть взрослой и трезвой.
«Доброты не существует, это все показуха…»
Чаще всего это говорится спокойно, уверенно, без эмоций. Как будто человек не злой — просто слишком умный, чтобы верить в сказки. Проблема в том, что эта позиция начинает разваливаться, если задать один простой вопрос.
А откуда тогда вообще взялась доброта? Маленький, но неудобный вопрос…
Если доброта — это исключительно социальная маска, если она придумана культурой, воспитанием и обществом, то она не должна существовать там, где нет ни культуры, ни морали, ни репутации. Эммм, но она существует…
И не у людей, а у животных. Я не буду говорить, что у животных есть «мораль» или «осознанный выбор быть хорошими». В науке используют более точный термин — просоциальное поведение. Если по-простому, это когда существо:
Помогает другому;
Утешает;
Делится ресурсами;
Делает что-то не для прямой немедленной выгоды.
Без философии: ТОЛЬКО наблюдаемые действия.
Крысы, которые освобождают других крыс (это не про людей, а то я уверен, что найдется человек, который начнет придумывать не приличные аналогии…).
Да, звучит странно. Но эксперимент реальный и хорошо задокументированный. Крысе давали выбор: либо ничего не делать, либо научиться открывать сложный контейнер, внутри которого сидит другая крыса
Контейнер не открывался случайно, нужно было учиться и повторять действия. Скажу сразу, крысы глупее людей, это я так, может кто-то не знал (хейтеры, обожаю вас!). Для них учиться и повторять действия сложно.
Что выяснилось:
Крысы целенаправленно открывали контейнер, если внутри была живая крыса;
Они делали это значительно реже, если контейнер был пуст;
Поведение не объяснялось простым любопытством.
Авторы формулируют осторожно, но суть ясна: наблюдается поведение, которое работает как помощь. Не мораль, не выгода, а именно «другому плохо — я что-то делаю».
У шимпанзе и бонобо давно описано поведение, которое называется consolation — утешение. После конфликта:
К пострадавшему подходит третий участник;
Использует телесный контакт;
Снижает уровень стресса.
Важно!!! Это не агрессия, не доминирование и не борьба за статус, а поддержка. Причём она чаще направлена к знакомым и близким, а её эффект — снижение напряжения в группе.
Если это не зачаточная форма эмпатии, то что тогда вообще считать эмпатией? У азиатских слонов наблюдают поведение, которое вообще трудно объяснить иначе. После сильного стресса:
Другие слоны чаще подходят к пострадавшему;
Касаются его;
Сопровождают;
Издают специфические звуки.
Исследователи говорят об эмоциональном заражении — когда состояние одного влияет на состояние других. Это уже очень близко к человеческому сочувствию.
Один из самых жутких (лично для меня) примеров, вампировые летучие мыши делятся пищей, бууууууквально — кровью.
Факт, который обычно упускают: если мышь несколько дней не поест, она погибает. То есть помощь:
Имеет цену;
Несёт риск;
Не всегда направлена на родственников.
И при этом она существует и поддерживается годами через социальные связи. Это уже не «случайность», а социальная стратегия. Никто не говорит, что помощь не имеет эффекта, в действительности имеет, НО это не привычный для капитализма эффект выгоды, а скорее социальная сплоченность.
Обычно на этом месте звучит финальный аргумент: «Ну раз есть выгода — значит, это не доброта» …
А с чего вообще взяли, что доброта должна быть саморазрушительной? В природе не выживает «самый святой». Выживает устойчивая социальная система.
Группы, где есть поддержка, кооперация и снижение внутреннего стресса, просто на просто живут дольше и стабильнее. Поэтому мозг вознаграждает помощь. Не из-за морали (и тут тоже не понятно, что такое мораль). А потому что это работает.
ИИИИИ, барабанная дробь, человек здесь не исключение :)
У НАС (я понимаю, что большинство хейтеров считает меня животным, но я человек, это могут доказать врачи!):
Помощь активирует системы вознаграждения;
Социальная поддержка снижает уровень стресса;
Изоляция напрямую связана с ростом смертности.
Это не воспитание, это биология. Мы склонны помогать, потому что мы не выживаем поодиночке. И это же круто на самом деле, нам не плевать друг на друга, хоть это и механизм природы ;) Почему тогда так популярна фраза «доброты не существует»?
Потому что она удобная. Если доброты нет, не нужно чувствовать ответственность, не нужно сомневаться и можно оправдать любое безразличие. Фраза «все одинаковые» часто не про зрелость, а про защиту.
Доброта — это не слабость, не показуха и не моральный фетиш (может, кто-то и делает это так, но это не значит, что все такие). Это базовый социальный механизм, который:
Существует у животных;
Встроен в нашу биологию;
Поддерживает жизнь групп.
Её можно искажать, её можно эксплуатировать, НО отрицать её существование — значит отрицать очевидные факты. И, если честно отрицание, это куда более наивная позиция, чем признать, что помогать — для социальных существ нормально.