Мракус

Мракус 

Создание игр для взрослых

209subscribers

274posts

goals3
77 of 100 paid subscribers
Потихоньку захватываем мир...
3 of 3

Фестиваль. Как оно делалось и инструкция к применению.

Уже несколько людей интересовались деталями производства игр, и я решил, что время пришло для еще одной лекции-инструкции-деления опытом. Ведь, как знают мои старые подписчики, я что хочу, чтобы многие люди делали игры. Сам делаю это не ради денег (хотя это, несомненно, приятный бонус), а ради удовольствия. Поэтому я не боюсь конкуренции и не скрываю ни одного процесса. И мне совсем не влом поделиться своими наработками. Итак, как создавался «Фестиваль».
Изначально в голове у меня было лишь 2 фразы: «кубики и настольная игра» и «разврат с девушками из разных тайтлов». Вот, собственно, и весь концепт. Далее был выбран Godot 3.5. Почему он, несмотря на то что есть уже 4.6? Совет нейросетки. Сказала, что для слабого ноута, на котором в основном и программируется всё, самое то. Но, как чувствую, меня немножко обманули. Ну да ладно, для нужд вполне хватало.
Движок я не знал от слова «совсем». Поэтому, опять же, за консультацией лез к нейросетке. Кстати, я пользуюсь на постоянной основе Qwen. Довольно умна, нечасто галлюцинирует (если правильно задать промт) и, по сути, 90% кода сделала она.
Почему Qwen, а не тот же специализированный Cursor? Лимит на токены и невозможность их купить, с чем у Qwen проблем нет.
Мне хватило пары месяцев и 1 тестовой модели игры, чтобы более-менее в нем разобраться.
Скрины тестовой модели
До опытного пользователя мне, конечно, как до луны пешком, но я хотя бы не запрашиваю каждый шаг у нейронки. Так что не бойтесь, не так Годот страшен, как кажется.
Получив первые данные и примерно поняв, как это должно работать, приступил к дизайну. Изначально думал, только 6 сцен будет. Главное меню, карта с пешками, сцена диалога, сцена магазина, сцена мини-игры и сцена итогов. Их я и начал делать. Тут советов особо дать не могу. Каждый делает дизайн на свой вкус. Но просто старайтесь, чтобы игроку было удобно. Пользовался обычным фотошопом. Ибо, несмотря на мои усиленные поиски, ни одна нейросетка не смогла адекватно выдать что-либо похожее на нормальный интерфейс.
Получив первый дизайн, стал воплощать его в коде.
Это не скрин. Это первый (который я признал годным, так 4) дизайн, сделанный в фотошопе.
Естественно, многое оказалось сделано неправильно. Некоторые части сделаны не так, постоянная проблема в размерах и разрешении (кстати, именно поэтому игра не меняет свое разрешение правильно — я не разобрался до сих пор). Однако это все же было куда удобнее, чем в HTML, и я до сих пор не жалею, что перешел на Годот.
Реализовав остальные, я приступил к планомерному, а иногда и авральному (когда оказывается, что для нормального показа галереи надо сделать не 1, а 3 сцены) развитию.
-----------------
Как всё происходит.
Перво-наперво, если вы такой же неуч, как и я, вам понадобится нейросетка.
И первое, что вам надо запомнить — нейросеть это не ИИ. Это генератор случайных чисел. Который подкручен так, чтобы случайное число было логичным. Технически его можно звать ВИ (виртуальный интеллект) по аналогии с такими из «Масс Эффекта». Хотя и до них они не дотягивают, на мой взгляд.
Поэтому забудьте о вежливых расшаркиваниях (хотя я сам это до сих пор победить не могу). Четкий промт с максимальным четким описанием желаний.
Пример:
Выбрав нужную вам нейросеть, вы должны создать 3 файла. В их создании вам тоже поможет она. Эти файлы: Концепт, Стиль и Ошибки.
Без них вы обречены раз за разом объяснять нейросетке одни и те вещи.

Концепт (AGENTS). ЧТО мы делаем.
Первое, что вы делаете в нейросетке — вываливаете ваш сумбур идей, что в голове, и начинаете с ней обсуждать идеи. Она не решит всё за вас, но может задать неудобные вопросы, о которых вы забыли. Поболтав так полчаса, в итоге просите сформировать из вашего диалога стройное техзадание. Она это сделает, но, скорее всего, неправильно или что-то забудет. Вы начинаете править и дополнять.
Вскоре вы придете к чему-то такому:
Это ваш костяк, на котором будет строится игра.

Стиль (CODING_STYLE). КАК мы делаем.
Тут вещь посложнее. Если вы так же, как и я, нифига не шарите в этом, то придется положиться на нейросеть и интуицию. Вы просите ее предоставить варианты, как правильно это всё запрограммировать. Она выдает несколько, и вы среди них выбираете самый оптимальный. Который просите оформить так же в ТЗ.
В моем случае это выглядит так:

Ошибки (Past_mistakes).
Рано или поздно нейросеть ошибется. Одной из частых ошибок в моем случае является использование слова char как название переменной для персонажей. А это зарезервированное Годотом слово, и его НЕЛЬЗЯ использовать в коде таким образом. Но нейросеть раз за разом писала его. И если в одном чате она это поправит, то в следующем она снова допускает эту ошибку.
Поэтому каждый раз вы фиксируете ее косяки (точнее, она сама их фиксирует по вашей просьбе) и добавляете их в файл ОШИБКИ.
Пример:
В Qwen есть возможность создать проект, в который можно заранее вложить файлы и сделать некие условия. Вот так это выглядит у меня:
Далее уже в рамках этого проекта вы и начинаете общение по поводу кода. Сложнее всего будет в самом начале, когда не на что опираться. Дальше нейросетке будет достаточно примера вашего кода, чтобы понять, как работать.
Буквально скидываете ей файл с кодом и говорите: «Мне надо переделать функцию перерасчета очков за победу. Она должна быть такой-то». И она, основываясь на уже написанном, сделает запрошенное. Вам достаточно лишь, следуя инструкции, вставить в нужное место кусок кода.

ОДНАКО! Важно, еще раз напоминаю. Это не ИИ. Это генератор случайных чисел. Мартышка, которая случайным кликаньем напечатала «Войну и мир». И на один и тот же запрос она выдаст вам 2 варианта и будет про каждый говорить «это самый оптимальный!». Не верьте ей на слово. Перепроверяйте. Вы можете не понимать код, но вы же знаете, что хотели получить в итоге?
В общем-то, всё, что надо знать. Всё остальное нарабатывается опытом общения с ней.
Если кому понадобится помощь в работе с нейросетью — обращайтесь. Что знаю — подскажу.
------------------------------
Генерация изображений.
Я использую A1111. Причем довольно уже старый, 2-годичной давности. На нем начал работать, да и привык. Но если вы только начали свои попытки, то советую все же Comfy. Он куда более активнее развивается и более гибок.
Я не претендую на звание профессионала в генерации. Тот же человек, что делал видео для Фестиваля, куда прокаченней меня в этом плане.
Однако я просто расскажу, как работаю.
Свои первые попытки делал на Цивитай. Там довольно лояльное отношение к токенам, разврат разрешен почти весь, огромное количество лор и чекпоинтов. Для тренировки самое то. Это мой основной источник и промтов, и лор.
Использую я модель illustrious. Она очень гибкая и может реализовать большинство ваших задумок. Pony не советую, морально и технически устарел еще год назад. И совершенно не гибкий. Чекпоинты и лоры используйте на свой вкус. Хотя если конкретно, то советую чекпоинт WAI-illustrious-SDXL. Постоянно развивается.
Как проходит моя работа.
1. На настройках, максимально повторяющих мой стиль на основном ПК, я тестирую лоры на «Цивитай». При запросе, например, как в данном случае, «Ма Ренки» вам вылезет довольно много лор, но они не одинаковы.
Разные ключевые слова, разные источники и просто разный подход к подбору материала делают лоры очень разными. Как пример, один и тот же промт, но куча разных Ренок.
2. При выявлении подходящей лоры я скачиваю ее к себе на комп, и уже там творится основанная магия.

Как то так выглядит мой примерно стандартный промт:
<lora:BSS_ArtisticSlider_v10_last:0.1> <lora:dark_fantasy_anime_illustriousXL:0.7> dark_fantasy_style, <lora:Illustrious_Torotei:0.5> qbtrt, masterpiece, best quality, amazing quality, absurdres, highly detailed, intricate details, soft lighting, depth of field, 8k, ultra quality, ultra detailed, beautiful, diffused light, (perfect anatomy:1.3), (highly defined features:1.3), (crisp edges:1.3),
<lora:Detailer_NoobAI_Incrs_v1:0.7> detailed,
science fiction, cable, machine, machinery city, foggy , alley, rain, wet clothes, wet hair, <lora:lightingSlider:-0.4> dark,
1girl, solo,
[ <lora:KonanNoobXL_byKonan:0.85> konan, blue hair, single hair bun, orange eyes, hair flower, large breasts, (lip piercing, , long sleeves, black cloak, xiangyun, high collar, cloud print, wide sleeves:0.8), (akatsuki uniform /(naruto/):0.5)] ,
nipples, exposed breasts, hetero, (proud expression, arrogant expression, dominant expression:0.9),
(erotic pose:1.2), from_above,
hetero, (paizuri:1.2), (focus_face:1.4), (clous-up:1.2), (upper body:1.2),,
BREAK
[<lora:gray_fullbuster_ilxl:0.7>(head out of frame:1.3), (1boy:1.2), (, office clothes, black trousers, white shirt:0.9)]
Сначала делается черновик (в том же разрешении (это важно!)).
Обычно на одну удовлетворяющую меня картинку выходит 3–5, в некоторых неприятных случаях до 15 попыток. Бывает, с первого раза хорошая выходит. Если всё меня устраивает, то перегенерирую с теми же настройками и сидом, но с включенным апскейлом, что увеличивает размер картинки, тем самым повышая ее качество.
В «7 днях» постоянно пользовался ADetailer, улучшающим лица, в «Фестивале» он требуется не так часто.
В таком темпе на рисунок обычно уходит 10-20 минут.
Но основная работа как бы за кадром. Составить нужный промт далеко не так легко, как кажется. На него может уйти столько же времени, сколько на весь цикл рисовки. И даже составленный идеально промт не всегда выдаст вам идеальный результат.
Знаете, что такое безумие? :) Это когда один и тот же промт в разных лорах ведет себя по-разному. Где-то идеальная поза, а где-то просто что-то странное.
Всего у меня выходит 21 изображение на персонажа. И нет ни одного персонажа, чьи рисунки (хотя бы 1) я не редактировал в фотошопе.
Данные о них хранятся в специальных файлах JSON.
Изначально я закладывал в код то, что я не хочу каждый раз прописывать персонажа програмно. В блокнотике написал JSON. Изображения правильно переименовал, положил в нужное место, и вуаля, персонаж интегрировался в игру сам. Это экономит огромное количество времени.
-----------------
Вся информация и изображения хранятся у меня на виртуальном рабочем столе Holst.
Раньше был на Miro, но из-за разных глюков и опасности блокировки пришлось перейти. Хотя на самом деле он не сильно хуже. Основные нужные для меня вещи типа хранения информации и наглядной работы с ней он выполняет на отлично. Вообще ЛЮБОМУ человеку, который работает с массой разноплановой информации, это очень нужная вещь. Крайне советую.
-----------------
Музыка генерировалась в SUNO. Я, конечно, крут, но вот музыкантом не являюсь совсем. Так что снова нейросетка, но уже музыкальная. Количество попыток в день ограничено, но они есть, и вполне можно получить хорошее, если не сегодня, то на следующий день. Разобраться там не сложно любому, тем более человеку с музыкальным уклоном.
Так, например, выглядит промт для музыки титров:
Со звуками, правда, запара вышла. Бесплатной нейросети для них я не нашел. Пришлось просто искать в свободном доступе.
-----------------
Проверкой орфографии занимается нейроредактор Яндекса. Глючит периодически, но для русского языка пока самый идеальный вариант.
----------------
В заключении.
Как видите, сейчас один человек может сделать то же, что и целая команда еще каких-то лет пять назад.
Основная проблема интровертных творческих людей — нежелание или невозможность кооперироваться. Разное виденье на один и тот же проект может загубить все благие начинания. И чем больше людей — тем больше мнений. И да, я интроверт, я так вижу!
В одиночку скорость работы повышается, потому что не надо спорить по каждому пустяку. Однако и работать этот человек должен за всех, так что прирост скорости тут спорный)).
Но что бесспорно, так это то, что один человек, даже без особых талантов (как я, например), МОЖЕТ создать в одиночку проект. Если раньше сценарист не мог найти художника, программиста или музыканта для своих идей, то сейчас эта проблема уже не так остра. Да, нейросеть не идеальна и глючна, но и обычные люди могут косячить нехило (как человек, побывавший в роли лидера команды разработки визуальной новеллы, говорю).
Чтобы вы еще раз осознали. Приступая к созданию "Фестиваля", ЛИЧНО у меня была только идея и небольшие навыки фотошопа. А, и тексты хорошо пишу, хоть и не люблю это дело.
В итоге пусть и скучная, но красивая и, главное, РАБОЧАЯ игра.
Если вы хотели сделать свой проект, но не могли, потому что не было толкового специалиста, то сейчас чуть ли не самое идеальное время начать.
Также вы всегда можете обратиться ко мне с вопросом о том или ином аспекте разработки. Без проблем поделюсь опытом.
Надеюсь, это немного пошевелило ваше желание творчества? :)
Рад буду поиграть в ваши игры.
Офигенная лекция! Не уверен, что сам решусь когда-нибудь делать игры, но если решусь, то это отличный гайд. Если планируешь иногда попиливать похожие посты-гайды то можно собрать их в отдельную папку сверху... просто идея)
Офигеть "Простыня".... Но.спасибо за лекцию... Может быть пригодится...
Subscription levels6

Юнлинг

$1.29 per month
Вы только вступили на путь поддержки этого автора
Ваш голос в любых голосованиях считается за 2

Падаван

$2.58 per month
Выделаете успехи, юный джедай.
Ваш голос в любых голосованиях считается за 3

Джедай

$3.9 per month
Вы прочно стоите на своем пути
Ваш голос в любых голосованиях считается за 4

Мастер-джедай

$6.5 per month
Вам уже пора брать новых падаванов
Ваш голос в любых голосованиях считается за 5

Магистр

$12.9 per month
Рад видеть вас тут уважаемый мастер-джедай
Ваш голос в любых голосованиях считается за 10

Канцлер

$129 per month
КХМ! Не ожидал, но польщен вашим присутствием!
Ваш голос в любых голосованиях считается бесценным!
Go up