Сделайте-сделайте! Можно будет и историю с отменой сделать.
Только хотел предложить сделать кнопку «предыдущий кот», чтобы можно было вернуть результат предыдущей генерации. А то столько чудесных котиков пролистывается, пока жмякаешь на кнопку «Generate!»…
А ещё слайдеры для кастомной настройки кота. Ведь в коде много рандомных параметров — вот все рандомы в слайдеры переделать хорошо бы.
Няшность котейки каждый определяет по-своему, и потому остановиться на какой-то одной породе вряд ли получится. Так что потребуется алгоритм с поддержкой нескольких локальных максимумов (ну или минимумов, смотря что мерять).
Ну так вдруг человек захочет сгенерировать столько котов, сколько влезет на его жесткий диск?
Надо же ему будет знать, как долго будут генериться коты)
Никогда не понимал, почему нельзя таким же образом генерировать скины для монстров/зомби/прочих врагов в играх? Насколько интереснее был бы, например, мой любимый Day Z, если бы каждый зомби там был чуть-чуть другим, отличался от остальных одеждой, лицом, ростом и фигурой. А то сейчас там пяток стандартных скинов и всё. Эххх…
Возможно потому, что врагов по цвету/виду как раз и можно отличить? Тот же серьезный сем первый — там были противники, которые головы в руках носили. И были разных типов. Отличить можно было только по цвету. В простых играх — то же самое.
без цветовой дифференциации штанов общество лишено цели
Зато во-первых реалистичнее (к этому же вроде стремиться большинство современный игровых движков?), во вторых представте как здорово было бы похвастаться: «Играл вчера в STALKER, такого худющего кровососа видел возле „Юпитера“ — кожа да кости, хромает, рожа облезлая… болеет он что-ли? Так чего-то жалко его стало, что даже убивать не стал. А собаки в последнее время наоборот здоровые пошли, и жирные — просто кабаны, а не собаки. Недавно за мной такая по всей локации гонялось — еле смылся. Радиация на них так действует что ли?...»
ИМХО это немного другое. Например, в GTA (по моему начиная с San Andreas) автомобили могли генерироваться с повреждениями, или тюнингованные. Да, это было круто, это было разнообразие. А теперь возьмем какую нибудь сложную миссию. Вы ее пытаетесь пройти раз 20, уже приноровились что и как делать и тут БАЦ — модель чего то в миссии другая. Подсознательно вы будете вопринимать уже эту модель как нечто другое, и опыт прошлых попыток не будет задействован мозгом полностью. Возьмем что то попроще — любой метч3. Допустим надо совмещать предметы по цветам. Когда у всех предметов одинаковая форма — все легко воспрнимается. А теперь представьте, что формы — разные. Мозг будет думать что желтый квадрат и желтый кружок — это нечто разное.
Возможно вы и правы. В single player играх, где можно сохраниться, а потом ковырять одного и того же монстра пока не пройдеш — да, наверное игроку будет удобнее когда этот монстр всегда один и тот же на вид и ведет себя одинаково.
А в ролевых open world играх в онлайне? Где нет кнопки «сохранить» и одна и та же ситуация не повторяется? Неужели кто-то откажется от фантастического мира, заполненного разными зомби, разными на вид и с разными боевыми качествами? С разным поведением? Не разделённые на пару классов как в том же HL — «обычный зомби», «быстрый зомби» и т.п. — а различными? Идеш — смотриш идет тощий чахлый зомби. Думаеш что он немощный и неопасный, а он вдруг становится на четвереньки и прыгает на тебя… Или отрывает себе руку и кидает в тебя этой рукой. Демонстрирует уникальный внешний вид и поведение (которое тем не менее вписывается в какие-то рамки под названием «вид и поведение зомби»:)). Я бы в такую игруху с удовольствием поиграл.
Когда у нас есть зомби типа 3 в левом углу комнаты (x: 132.381, y:472.785, z:23.542), то сервер передаст игроку пакет содержащий три double и один int. Теперь представим что каждый тип может наследовать множество особенностей, к примеру то-же отрывание руки, значит эту информацию нужно передать клиенту, предварительно прочитав ее из памяти сервера (в которой для каждой модели будет уже не четыре переменных, а на порядок больше, даже если модель наследует базовые свойства). Это создаст дополнительную нагрузку на сервер, на канал и на клиента, так как все это надо еще отрендерить. В ближайшем будущем (5 лет), думаю что популярностью пользоваться не будет, но вот когда в виртуальные миры можно будет полностью погрузиться (не обязательно всем сознанием), то уникальные модели будут необходимы для поддержания ощущения «реальности».
Это бы сильно увеличило требования к видеопамяти. Одна текстурка хорошего качества занимает порядка четырёх мегабайт, а пямять нужна не только для текстур монстров. Кроме того, генерация подобных процедурных текстур — довольно требовательный к ресурсам процесс (например, потому что обычно выполняется силами CPU), который сильно увеличил бы время загрузки.
Ну и нельзя забывать, что сделать процедурную карту, генерирующую правдоподобные и одновременно с этим разнообразные рожицы, куда сложнее, чем нарисовать несколько текстурок для зомби.
Хотя с другой стороны, в таких играх, как Skyrim или Sims, скины, как я понимаю, генерируются динамически… Хм… Тогда, наверное, выше я в чём-то ошибся.
Возможно, потому, что в трехмерных играх это не просто скин (текстура). Я не спец в computer graphics, но насколько я понимаю, большинство движков используют разные ухищрения, чтобы модельки выглядели красиво и не тормозили. Всякие там карты освещения, карты нормалей. Если «переодеть» персонажа в случайную одежду, придется для него рисовать дополнительный контент, и делать это скорее всего вручную. Можно, конечно, сделать кучу вариаций и их смешивать. Так сделано в GTA, начиная с San Andreas, если не ошибаюсь.
А для изменения роста/фигуры надо писать движок соответствующий, это в игре вроде ArmA2 (и, как следствие, DayZ) вроде не сильно нужно…
Ну это, на мой взгляд, немного сложнее, ибо туловище имеет куда больше форм, тем самым сложнее сделать это красиво, сложнее чем с мордой. Но есть куда развиваться)
Странно, что никто не вспомнил про лица Чернова. Автор, если вы сделаете лица котов вертикально асимметричными, и замените рандомы на внешние параметры, получится отличное средство визуализации — количество степеней свободы у кошачьих лиц будет поболее, чем у человечьих :)
Я делаю небольшую браузерную 2D игру для одного ресурса. Вполне возможно что для смеха вставлю туда эту штуку :) Применений действительно масса.
Как-то был пост на Хабре, где делали процедурные пиксельные аватарки, что-то похожее и тут.
habrahabr.ru/post/195142/#comment_6771436
В самом верху же написано :) Да, это так задумано.
Изначально это был баг, перешедший из категории багов в категорию фич, потому что мне этот эффект понравился.
Очень круто! Когда-то хотел тоже сделать генератор портретов для игры, но дальше идеи дело не пошло. А тут действительно большой объем работы сделан до конца и результат вполне прикольный!
Анимация неплохая, но… какая-то неестественная для кота. Исчезающая обводка, точки на щеках, странным образом двигающиеся усы. Как-то странно выглядит.
Ну так и кот не совсем канонический.
В коде дергается случайный параметр от минимального до максимального значения с произвольным периодом. Можно подобрать периоды для нескольких «случайных» бросков — тогда получим более естественную анимацию.
А вообще это просто прикол. Да и обожаю я генераторы псевдослучайных чисел, особенно для подобных задач.
Генератор случайных котов за 8 шагов