JGD | Розробка ігор


Channel's geo and language: Belarus, Russian
Category: Games


Роблю ігри та пишу про це
Для зв’язку: @stelf
Instagram: http://instagram.com/a.vasylevskyi
Facebook: https://m.facebook.com/anton.vasilevsky.7
TikTok: https://www.tiktok.com/@a.vasylevskyi

Related channels

Channel's geo and language
Belarus, Russian
Category
Games
Statistics
Posts filter


Круто оновили ChatGPT, тепер код показується у більшому вікні та з’явилися швидкі дії у нижньому правому кутку: додати коментарі, додати логи, пофіксити баги (лол), переписати на іншу мову або зробити код рев’ю. Анімація заміни коду також виглядає прикольно.


Video is unavailable for watching
Show in Telegram
Минув місяць:


Пограв вчора у Farming Simulator, бо Сталкер 2 ще фіксять і нажаль невистачає часу на щось серйозне. Мені вдалось зарунитися в атмосферу простого сільського життя і навіть якось тепло на душі стало, що такі ігри взагалі існують і хтось їх випускає та оновлює.

Ніщо як ця гра не нагадує про пастораль. Пастораль це жанр у літературі та мистецтві, який ідеалізує сільське життя та підкреслює прості, наївні переживання на лоні природи.

Ми багато граємо в ігри про дружбу з єльфами, про вбивство драконів, про неймовірне та неіснуюче. Але ось воно, життя: висіяти зернятка пшениці. Чекати дождів, що зроблять землю вологою, зернятко прокинеться, а сонце зігріє землю.

З’явиться колосок, як травичка, яка росте вгору. Ти піклуєшься про поле: тримаєш поле чистим та знищуєш шкідників. Паростки стають все більшими, поки не виростають у високі стебла. На кінці стебла з’являється колосок, а у колоску ростуть нові зернятка пшениці.

Коли пшениця дозріває, вона стає жовтою, як золото. Я збираю її за допомогою спеціальних машин – комбайнів. Ці машини зрізають стебла і відокремлюють зернятка від соломи.

Я збираю зернятка та відводжу на продаж, щоб накопичити гроші на ячмінь та у майбутьньому зібрати новий врожай. Я йду годувати курець та стежити, щоб півень не наробив шкоди у курятнику. Потім я лягаю спати та мені сниться новий, більш потужний комбайн.

Звичайне життя, без пригод та неіснуючих нагород. Про поле, пшеницю, ячмінь, комбайни та про мене самого. Чи хочеться мені пограти знову? І так і ні, бо на таке життя немає часу, є великі цілі яких треба досягти, є амбіції, є зовсім інше, сумотошне життя, так далеке від усього цього. Але так тепло, що десь є такий затишний світ, про комбайни та пшеницю, який живе десь зовсім поряд і про який завжди можна помріяти на перерві між битвами за неіснючі нагороди, вигадані мрії та життям в уявному світі.


Video is unavailable for watching
Show in Telegram
Алгоритм побудови залізничної колії на рушії PlayCanvas. Повністю написаний за допомогою ChatGPT. Але щоб ви не думали, що це так просто, це зайняло декілька днів і безліч діалогів/правок та декілька годин пошуку багів. Певен, що власноруч писати таке зайняло б може в два рази більше часу, але це не точно.


За порадою з ютуб погрався трохи з пост-процесінгом, а саме з Tonemapping обробкою. Цей ефект вимагає підтримки HDR, але його легко увімкнути в налаштуваннях URP. Ефект Tonemapping робить щось типу перестановки кольорів з одного спектру або палітри на іншу. Саме з ACES кольори виглядають більш кіношними, а також збільшується контраст зображення та змінюється баланс світла. Я це зрозумів саме так, але можу помилятися, бо технічні деталі досить важко було зрозуміти. Не знаю наскільки буде зручно працювати з текстурами, бо фінально вони можуть виглядати інакше ніж «на бумазі», але цей ефект можна легко відключати за необхідністю, бо працює він з фінальним зображенням і впливає лише на камеру сцени.


Unite

Сегодня вечером прошла ежегодная конференция Unite 2023 в Амстердаме. Показали следующую версию Unity и новые сервисы для разрабов.

Что нового в Unity 6
(да-да, не 2023)

На конференция показали демку, где простым включением фичей новой версии улучшается перфоманс. Много новых слов вроде GPU vertices occlusion, GPU resident drawer, Spatial-temporal post-processing позволяют без особых затрат повысить фреймрейт игры. Из интересного GPU vertices теперь умеет оптимизировать рендер объектов закрываемых другими модельками в кадре. Ну а самым эффективным на демке был GPU resident drawer, хотя принцип его работы не совсем понятен, каким-то чудом он резко снижает количество батчей. Все эти штуки доступны как в URP так и HDRP пайплайнах.

Крутой вещью по рендеру так же оказалась возможность запекать свет для разных ситуаций на сцене и возможность плавно переключать то что мы запекли. То есть теперь можно делать смену дня и ночи используя заранее просчитанное освещение, думаю будет востребовано для многих игр.

Сервисы

Unity теперь предоставляет сервисы Safe Voice и Moderation, которые с помощью нейронных сетей позволяют уменьшить токсичность в онлайн играх. Прикольная вещь и неожиданно что об этом заботятся, как сказал человек на презентации, что-то около 67% игроков покидают игры столкнувшись с токсичным поведением.

Много внимания уделили Unity Muse. Это такой набор сервисов для AI генерации ассетов и других прикольных вещей. Во время демки показали генерацию текстур, а вот судить Muse Chat и Muse Sketch можно только по видосам, хотя сказали что ранний доступ к этим сервисам уже открыт. Sketch например позволяет создавать анимации по текстовому описанию, по названию думаю понятно что это скорее для прототипирования. А Muse Chat умеет писать код и отвечать на вопросы, в принципе как альтернатива подписки на Chat GPT может быть окей, но вряд ли вы GPT использовали только для помощи с Unity.

Упомянули так же что помогут в случае судебного разбирательства, если ваша игра нарушит чьи-то авторские права, это лол конечно.

Так же рассказали про Unity Sentis, это еще один сервис позволяющий создавать свои варианты применения обучаемых моделей, например для диалогов NPC, освещения (даже видос показали) или просто умного поведения персонажей. Вся эта штука работает локально на девайсе, звучит круто по-моему.




Video is unavailable for watching
Show in Telegram
В релиз?


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


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


ResizableCursorShader.unitypackage
31.8Kb
Поделюсь исходником материала с шейдером. Внутри текстура аля Perlin Noise, вместо которой можно использовать другие вариации.


Разрушение построек


Video is unavailable for watching
Show in Telegram
Сделал ещё такой вариант


Video is unavailable for watching
Show in Telegram
А как вам такой шейдер?


Video is unavailable for watching
Show in Telegram


Video is unavailable for watching
Show in Telegram
Сделал такой вот бублик для выбора построек. Его часто используют как способ выбора предметов/оружия в играх.

Мучался с разными вариантами реализации направления движения мыши. В итоге самим приемлимым оказался нормализовать вектор движения мыши и умножить на максимально допустимую длину движения.

С радианами и тангенсами просил помощи у ChatGPT и умнейший чат справился с этой простейшей для него задачей. В очередной раз удостоверился что его можно использовать для простых код-сниппетов, но вот юзабилити лучше брать на себя, в вычислениях были небольшие ошибки, но их было нетрудно поправить.

Ну а моим навыкам пиксель-арта и художественному вкусу завидовать не приходится, но я еще учусь!

Поделюсь кодом этой прелести - Selection Wheel Script. Настоящий скарб, если хотите. Может секономить пару дней прототипирования.


Вам не душно от последних постов?


Большая часть кода с пояснениями. Здесь основные моменты по разделению на чанки, рендеру и пула коллизии. Весь я не отправлю, потому что он у вас не соберется без точной копии архитектуры. В текстовом виде тоже не отправлю, если хотите можно считать текст с картинки, это не сложно делается, ну и взять какие-то идеи или части кода для себя тоже не сложно переписав текст. Часть кода уже была в позапрошлом посте.


Video is unavailable for watching
Show in Telegram
Про коллизию и дальность прорисовки инстанс рендера. Для прорисовки каждый объект попадает в чанк небольшого размера. В каждом чанке есть список мэшей, которые будут отрисованы с одинаковым материалом. Помимо обычного материала, есть прозрачный, который используется когда чанк сменяется с видимого на невидимый.

Это необходимо для того, чтобы в первую очередь мы имели возможность прятать слишком далекие объекты, во вторую очередь, чтобы не рисовать объекты когда на них игрок не смотрит. Так как камера имеет свой собственный конусообразный фильтр, то что вне его видимости будет пропускаться.

Коллизия реализована с применением паттерна ObjectPool, хотя мне нравится перевод бассейн объектов. Для большей части объектов необходим коллайдер примитивной формы, мы заранее спавним тысячи GameObject’ов с разным типом компонентов коллизии.

Когда инстанс объекта попадает в рендер, то мы берем из басейна свободный коллайдер и располагаем его в нужной позиции и с нужным размером. В случае если свободного объекта нету, то создаем новый, но это неприятный сценарий, поэтому количество объектов в басейне на этапе инициализации желательно угадать как можно точнее.

Когда объект пропадает из зоны видимости мы сбрасываем его параметры и отключаем. Таким образом мы практически лишаемся необходимости лишний раз вызывать Instantiate и Destroy методы, которые как многие знают выделяют много памяти и работают медленно.

Сейчас разбираюсь почему AmbientOcclusion постэффект не накладывается на прозрачные материалы, его вызов происходит сразу после отрисовки непрозрачных объектов. На дальней дистанции этот артефакт не будет сильно заметен, особенно если прятать его за туман к примеру, но хотелось бы более элегантного решения. Возможно наш технический художник поможет исправить этот недостаток.

19 last posts shown.