Найти в Дзене

«А можно просто 32x32?»: Почему мой эксперимент с GPT и Unity закончился на третьем шаге и перерос в другой эксперимент | Часть Вторая | #2

В прошлый раз мы создали проект и полностью настроили его, используя GPT-5. На данный момент у нас есть новый проект с созданными папками и настроенным UPR 2D. Пора продолжить эксперимент. Посмотрим, куда нас это уведет. В чате, который я создал для инструкций, я отправил промпт для того, чтобы GPT помнил выбранное мною название игры и создавал игру, учитывая это название. По крайней мере, чтобы "Keys of Blackstone" не превратился в рыбалку. В основном чате, после выбора названия игры, GPT выдает следующий шаг. Третий шаг получился довольно большим. Если учитывать, что это задумано как эксперимент, описывающий опыт чайника... Чайник уже убежал в сторонку плакать. Давайте разбирать новый шаг. Как я уже сказал, шаг не маленький. Он разделен на несколько дополнительных подшагов, которые обозначены буквами A, B, C, D, E, F. Начнем с A. Итак, что предлагает GPT пошагово. В Иерархии (Hierarchy) — нажмите правой кнопкой — 2D Object — Tilemap — Rectangular. Это добавит объекты Grid (родитель)
Оглавление

--------------------------------------------------------

Перед тем как начать, хочу выразить благодарность тем, кто подписан, и тем, кто читает. Огромное вам спасибо! Если вы случайно попали сюда и если вам нравится то, что вы видите, пожалуйста, подпишитесь. Это дает мотивацию продолжать, а в планах еще многое. )
-----------------------------------------------------------------------

Если тематика интересная, подборка статей здесь:

GPT + Unity + C# | Игровой Музей | Дневники, Гайды, Истории и Сплошные Спойлеры | Дзен

Предыдущая статья:

-----------------------------------------------------------------------

В прошлый раз мы создали проект и полностью настроили его, используя GPT-5. На данный момент у нас есть новый проект с созданными папками и настроенным UPR 2D. Пора продолжить эксперимент. Посмотрим, куда нас это уведет.

В чате, который я создал для инструкций, я отправил промпт для того, чтобы GPT помнил выбранное мною название игры и создавал игру, учитывая это название. По крайней мере, чтобы "Keys of Blackstone" не превратился в рыбалку.

-2

В основном чате, после выбора названия игры, GPT выдает следующий шаг. Третий шаг получился довольно большим. Если учитывать, что это задумано как эксперимент, описывающий опыт чайника... Чайник уже убежал в сторонку плакать. Давайте разбирать новый шаг.

Шаг третий

-3

Как я уже сказал, шаг не маленький. Он разделен на несколько дополнительных подшагов, которые обозначены буквами A, B, C, D, E, F. Начнем с A. Итак, что предлагает GPT пошагово.

А)

1. Создайте Сетку + Таблицу тайлов

В Иерархии (Hierarchy) — нажмите правой кнопкой — 2D Object — Tilemap — Rectangular. Это добавит объекты Grid (родитель) и Tilemap (дочерний).
-4

После этого действия в Иерархии появится компонент "Grid" (сетка) и его дочерняя компонента "Tilemap". Также вы должны заметить уже существующая сетка стала толще.

-5

Для понимания, Grid — это компонент в виде сетки, который автоматически управляет размещением дочерних объектов, а Tilemap — это система, позволяющая создавать 2D-уровни из отдельных изображений, называемых "тайлами" (плитками), которые размещаются на сетке.

Дочерний объект — это игровой объект, связанный с родительским объектом в иерархии. Дочерний объект наследует от родителя его положение, вращение и масштаб, что означает, что при перемещении, повороте или масштабировании родителя дочерний объект будет двигаться вместе с ним.

2. Откройте Палитру тайлов (Tile Palette)

Window — 2D — Tile Palette — в этом окне нажмите Create New Palette... — назовите её "KOB_Palette".
-6

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

-7

Бывает такой подвох после нажатия кнопки "Create" (создать), что он открывает окно для выбора папки для сохранения на том уровне проекта, на котором невозможно сохранить Palette (палитра). Нам нужно найти папку с названием игры, внутри папку "Assets" и сохранить в одну из папок, которые находятся в ней. А вообще идеально создать новую папку "Palettes" внутри папки "Assets". GPT это не упоминает, но теоретически это изменение без его знания не должно влиять на проект. Поживем — увидим.

-8

3. Добавьте временный тайл

Если у вас ещё нет готовой графики: Assets — Create — Sprites — Square (белый квадрат). Перетащите этот квадрат из окна Project в Палитру тайлов; Unity спросит, в какую папку сохранять ресурсы Тайлов — создайте папку с названием Art/Tiles. Теперь можно закрашивать.

Кстати, забыл упомянуть. В первой статье он рекомендовал создавать такие папки с использованием "/" (слэш). Unity не разрешает использование таких символов в названиях папок. Но можно создать папку Art и уже внутри нее папку Tiles. Так будет даже лучше.

-9

Далее передо мной стоит выбор: использовать обычный спрайт в виде квадрата, как он предложил, в случае если у меня нет готовой графики, или же создать графику. Так как мы уже знаем, что GPT-5 создает графику без проблем, пользоваться белым кубиком становится немного скучновато, правда? Короче говоря, я решил создать внутри проекта еще один чат с промптом "Этот чат будет использоваться для создания артов (спрайтов, тайлов и т. д.) по запросу". Он согласился, после чего я попросил его сгенерировать компонент для его же рекомендации под третьим шагом. Я прописал ему прямо "step 3 A) 3.)".

-10

Короче говоря, он потерялся на момент и попросил напомнить, что это и с чем его едят. Я продолжил вести себя как чайник с промптом "ищи в том чате, где мы держим шаги". После чего он мне выдал шикарный ответ в виде:

Я не смог найти четкой ссылки на пункт "3 A) 3" в упомянутом вами чате о выборе игры, поэтому я создал основную базовую asset-картинку для Keys of Blackstone, исходя из своего предположения: это бесшовный тайл потрескавшегося каменного пола размером 32x32 пикселя в мрачной цветовой палитре, подходящей для руин.
Если это не тот элемент, который нужен, скажите мне, что именно скрывается под пунктом 3 A) 3, и я сгенерирую именно его.
Хотите, чтобы я также подготовил версию 16x16 или следующим шагом создал соответствующие тайлы для стен и краёв?
-11

Просто шикарно, он "предположил". Также "если это не тот элемент, который нужен, скажите мне". Вот как мне знать, что мне нужно, я абсолютный чайник, не имеющий понятия, что я делаю. Короче говоря, промпт, который я создавал в начале для его поведения со мной как с чайником, не работает. Он как будто его забыл уже на третьем шаге. Но ладно, я решил не останавливаться и прописал ему название пункта, который он должен найти. Только после этого он очухался и выдал базу.

Ах — да! Вы абсолютно правы 👍
В Шаге 3 («Добавьте временный тайл») мы говорили о создании временного тайла пола для тестирования Tilemap в Unity — чего-то простого, например, блока камня или земли для окружающей среды.
Только что сгенерированное изображение (тёмный тайл потрескавшегося каменного пола) идеально подходит для этой цели — он может служить временным тайлом для Шага 3A-3.

(╯°□°)╯︵ ┻━┻


Оказывается, что "3A-3" подходит как описание для поиска, а "3 A) 3" не подходит. Также картинка, которую он "предположил", идеально подойдет для этих целей.

4. (Если у вас есть готовое изображение тайлсета) Аккуратно нарежьте его

Кликните на ваш тайлсет в окне Project → в Инспекторе (Inspector) установите Sprite Mode = Multiple → откройте Sprite Editor → нажмите Slice (Automatic или Grid by Cell Size, например, 16×16 или 32×32) → Apply. Затем перетащите нарезанные спрайты в Палитру тайлов (Tile Palette).
Совет: установите Pixels Per Unit в соответствии с размером тайла (например, для тайлов 16px → PPU 16), чтобы каждый тайл занимал одну единицу измерения (юнит) в Unity.

У меня голова заболела. Я немного сидел и смотрел на этот шаг, чесал голову и думал о том, как это: он мне предлагает взять этот один тайл и порезать его на квадратики 32x32, когда по факту этот один тайл должен быть сам по себе 32x32. Как оказалось, он создал 1024x1024.

После того как я ему сказал, что мне нужно 32x32, он такой: «Аааа, без проблем, держи» — и создает мне еще один 1024х1024, но более пикселизированный.

-12

Я немного посмеялся, также немного покипел и задал вопрос: «А ты можешь технически создать 32х32?»

Технически — не совсем напрямую. Вот почему:
Модель генерации изображений (та, что создает изображения) всегда работает в высоком разрешении, например 1024×1024 или 768×768.
Даже если я опишу «тайл пиксель-арта 32×32 пикселя», она все равно создаст изображение высокого разрешения, которое имитирует сетку 32×32 пикселя — потому что модель не способна буквально отрисовать такое малое количество пикселей.
Чтобы получить истинное изображение 32×32, мне нужно:
Сгенерировать его в высоком разрешении
Затем уменьшить его до 32×32 с помощью точечного масштабирования (nearest-neighbor)
Так что да — создать настоящую версию 32×32 возможно, но это всегда включает этап уменьшения размера после генерации, а не прямое создание в таком размере.

Попробовал я его точечное масштабирование и решил, что эксперимент вышел за грани понимания для чайников. Причем давно. Вот почему. Ниже скрин увеличенных тайлов после масштабирования изначального варианта. С левой стороны — тайл, который я самостоятельно переделал, используя обычный Paint.net; с правой стороны — тайл, который масштабировал GPT, используя какую-то там свою технологию…

-13

Человек, который не знает, что вообще происходит, просто пойдет по совету GPT, порежет один тайл 1024x1024 на куски 32x32 и будет иметь полную кашу в палитре.

Примерно тут я решил, что эксперимент, по сути, закончился. Неудачно. Но все-таки я хотел продолжить и посмотреть, что у меня получится сделать с этим инструментом, если я не чайник, а понимающий человек.

Данный шаг оставляю незаконченным, так как нет смысла продолжать в духе чайника. Я его просто закину в следующей статье и объединю с остальными шагами. До этого момента — ожидайте!

┬──┬◡ノ(° -°ノ)

Продолжение следует!
-----------------------------------------------------------------------

Если тематика интересная, подборка статей здесь:

GPT + Unity + C# | Игровой Музей | Дневники, Гайды, Истории и Сплошные Спойлеры | Дзен

Предыдущая статья:

-----------------------------------------------------------------------

Спасибо, что прочитали до конца! Если вам нравится данный формат, пожалуйста, поставьте лайк и подпишитесь. Критика и идеи в комментариях приветствуются!

-----------------------------------------------------------------------