This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Бонус — неудачные дубли ходьбы. Хотя у меня и на «рабочем» заставить перса моргать не получилось
🔥9
День 1.2 Архитектура
Ну и конечно же до того как писать код лучше составить схему архитектуры. Тут по сути не хватает геймплея, но мне он будто и не нужен, ток в контроллер сессии добавить какой-нить GameplayManager, который будет бросать события прохождения уровня и так далее. Чтобы уровни были изолированы.
Сам геймплей будет весь на декораторах, там не так интересно рисовать общую схему.
Итак, а что у нас по основной архитектуре. Так сказать подсветим фишечки. И первое "спорное" решение SessionController.
В данной архитектуре SessionController — это по сути синглтон сервис локатор. Да, можно было бы ща расписать какую-то DI версию с более грамотным IoC контейнером. Но для маленького проекта, а зачем? В чём-то небольшом подобные архитектуры меня никогда не подводили. Удобно бустрапить, подменивать реализацию сервисов через директивы препроцессора и так далее.
IStorageConfig, ITransactionProvider, IAdsProvider — единственные места где я вижу разумную подмену реализации. Разные сдк разных платформ. Ну и магазином может захочется не локально управлять, а с сервера. Часто люди пишут всё на интерфейсах, даже там где смысла в этом нет, я такое не люблю. Поэтому только три интерфейса.
Если есть какие-то вопросы по схеме можно задавать в комментах. Продолжаем работу. Ну и как всегда ставим 🔥, не стесняемся!
PS: Лучше было уложить каскадом по слоям, но так как это «на скорую руку» и для меня — было лениво.
#индиприключения
Ну и конечно же до того как писать код лучше составить схему архитектуры. Тут по сути не хватает геймплея, но мне он будто и не нужен, ток в контроллер сессии добавить какой-нить GameplayManager, который будет бросать события прохождения уровня и так далее. Чтобы уровни были изолированы.
Сам геймплей будет весь на декораторах, там не так интересно рисовать общую схему.
Итак, а что у нас по основной архитектуре. Так сказать подсветим фишечки. И первое "спорное" решение SessionController.
В данной архитектуре SessionController — это по сути синглтон сервис локатор. Да, можно было бы ща расписать какую-то DI версию с более грамотным IoC контейнером. Но для маленького проекта, а зачем? В чём-то небольшом подобные архитектуры меня никогда не подводили. Удобно бустрапить, подменивать реализацию сервисов через директивы препроцессора и так далее.
IStorageConfig, ITransactionProvider, IAdsProvider — единственные места где я вижу разумную подмену реализации. Разные сдк разных платформ. Ну и магазином может захочется не локально управлять, а с сервера. Часто люди пишут всё на интерфейсах, даже там где смысла в этом нет, я такое не люблю. Поэтому только три интерфейса.
Если есть какие-то вопросы по схеме можно задавать в комментах. Продолжаем работу. Ну и как всегда ставим 🔥, не стесняемся!
PS: Лучше было уложить каскадом по слоям, но так как это «на скорую руку» и для меня — было лениво.
#индиприключения
1🔥34❤🔥1
День 1.3 Тёпленькая пошла
Итак, и вот пошла самая сложная часть. Начинаем мучения с артом. Пока треш, угар и содомия. Надо видимо определить палитру и отрисовать маски, которые потом нейросеть добьёт. Пробую процесс "отдельные гейм ассеты и коллаж". Идея процесса по шагам.
0. Берём и мучаем дипсик чтобы он написал нам промт, который будет выдавать концептуальный стиль того, что мы хотим.
1. Генерим картинки пока не начнёт получаться стабильно нужный стиль.
2. Просим дипсик разбить промты на отдельные для игровых ассетов.
3. Генерим отдельные ассеты и совмещаем их в фотошопе, чтобы посмотреть как они друг с другом дружат. И собираем "уровень".
Преимущества подхода. Можно допиливать каждый конкретный ассет. Я считаю что генерить целиком картинки и локации подходит только для кат сцен и визуальных новелл.
Недостаток. Нужно следить за единообразием стиля, цветовой гаммой и тому подобным. Вот сейчас на собранной вместе картинке "кто в лес, кто по дрова". Там проблемы со всем. Стили, пропорции, цветовая гамма. Но это так сказать с наскока.
Наблюдение. Дипсику на паллитру в целом наплевать. То есть промт генерил одно. Но дипсику плевать, он просто "придумал цвета" вне зависимости от того сочетаются они или нет. Наверное я выпишу все промты. Сделаю паллитру, чтобы у персонажа и игровых объектов было достаточно контраста с фоном. Забью в промты нужные цвета. И попробую на второй заход.
В общем чтобы сделать хотя бы "адекватный", я уж не говорю хороший результат с нейросетями — это явно не нажать на пару кнопок. Нужны навыки фотошопа, понимание и насмотренность в дизайне. Понимание концепций дизайна.
P.S. На эксперименты я потратил 2 часа. Явно далеко от кнопки "сделай красиво".
#индиприключения
Итак, и вот пошла самая сложная часть. Начинаем мучения с артом. Пока треш, угар и содомия. Надо видимо определить палитру и отрисовать маски, которые потом нейросеть добьёт. Пробую процесс "отдельные гейм ассеты и коллаж". Идея процесса по шагам.
0. Берём и мучаем дипсик чтобы он написал нам промт, который будет выдавать концептуальный стиль того, что мы хотим.
1. Генерим картинки пока не начнёт получаться стабильно нужный стиль.
2. Просим дипсик разбить промты на отдельные для игровых ассетов.
3. Генерим отдельные ассеты и совмещаем их в фотошопе, чтобы посмотреть как они друг с другом дружат. И собираем "уровень".
Преимущества подхода. Можно допиливать каждый конкретный ассет. Я считаю что генерить целиком картинки и локации подходит только для кат сцен и визуальных новелл.
Недостаток. Нужно следить за единообразием стиля, цветовой гаммой и тому подобным. Вот сейчас на собранной вместе картинке "кто в лес, кто по дрова". Там проблемы со всем. Стили, пропорции, цветовая гамма. Но это так сказать с наскока.
Наблюдение. Дипсику на паллитру в целом наплевать. То есть промт генерил одно. Но дипсику плевать, он просто "придумал цвета" вне зависимости от того сочетаются они или нет. Наверное я выпишу все промты. Сделаю паллитру, чтобы у персонажа и игровых объектов было достаточно контраста с фоном. Забью в промты нужные цвета. И попробую на второй заход.
В общем чтобы сделать хотя бы "адекватный", я уж не говорю хороший результат с нейросетями — это явно не нажать на пару кнопок. Нужны навыки фотошопа, понимание и насмотренность в дизайне. Понимание концепций дизайна.
P.S. На эксперименты я потратил 2 часа. Явно далеко от кнопки "сделай красиво".
#индиприключения
🔥25
Чуть почистил подписчиков. Мимо проходил и увидел странное. Вообще надо поискать нет ли бота который банит ботов в подписчиках по подобному фактору. Через интерфейс я вижу только часть подписчиков. А через апи думаю можно глянуть больше. Ну и кто-то начал отписываться, так как я вернулся, а про мой эксперимент читать неинтересно :)
🔥23
Анализ проекта с Project Auditor
https://dev.to/attiliohimeki/unity-project-analysis-with-the-project-auditor-2pea
Юнитеки сделали статический анализатор проекта? Что-то я это упустил. Штука полезная, а что это такое? Unity Project Auditor — бесплатный инструмент для анализа проектов в Unity. Он сканирует код, ассеты и настройки, выявляя проблемы производительности: неоптимальные скрипты, дубликаты текстур, некорректные настройки физики и графики.
В статье собственно разбор его функционала. Очень полезная штука чтобы искать косяки и проводить финальную оптимизацию перед релизом, так как без такого легко упустить мелкий косяк. В стиле не отключенных мипмап в спрайте который используется только для интерфейса.
#новости
https://dev.to/attiliohimeki/unity-project-analysis-with-the-project-auditor-2pea
Юнитеки сделали статический анализатор проекта? Что-то я это упустил. Штука полезная, а что это такое? Unity Project Auditor — бесплатный инструмент для анализа проектов в Unity. Он сканирует код, ассеты и настройки, выявляя проблемы производительности: неоптимальные скрипты, дубликаты текстур, некорректные настройки физики и графики.
В статье собственно разбор его функционала. Очень полезная штука чтобы искать косяки и проводить финальную оптимизацию перед релизом, так как без такого легко упустить мелкий косяк. В стиле не отключенных мипмап в спрайте который используется только для интерфейса.
#новости
DEV Community
Unity Project analysis with the Project Auditor
The Project Auditor is a static analysis tool that goes through your project to provide useful...
🔥20
День 2.1 Ежедневные бонусы за вход
你好! 你好吗? Утро у меня обычно начинается с того, что я листаю новости на прогулке, слушаю аудиокнигу (иногда) и собственно учу китайский. И самая настойчивая зелёная сова не забывает мне напоминать, чтобы я поучил немного иероглифоф. Причём когда я начинал учить 中文 (Китайский) не было вариант русско-китайского изучения. Только русско-английский. Так что за одно пытаюсь вспоминать куда ставятся артикли.
И у этой совы есть механика стриков. Ниче нового в геймдеве ей 100 лет в обед. Но я подумал может засунуть награды за ежедневный вход куда-то в игру для ретеншена. Неплохая механика удержания. Вообще надо подумать что игрок может покупать, чтобы сливать валюту, и при этом не утонуть в миллионе промтов. Строить мотивацию на скинах и шапках не хочется. Я придумал точкой траты абилки (по сути читерство, чтобы пройти уровень 3 секунды полной темноты «Время ночи» и «Хронокровь» остановка времени). Тратим валюту чтобы их открыть, тратим валюту чтобы их юзать. Но будто в наградах должна быть не тупо валюта, а ещё что-то.
Пока думаю что надо придумать третью абилку, которая даётся только за 7 дней подряд ежедневного входа, чтобы D7 ретеншен поднять. Просто ещё пока я вижу пару проблемных решений над которыми надо подумать.
1) Капли крови (звёздочки по сути) это так же и валюта, которую мы можем удвоить за просмотр рекламы в конце уровня. И получить в магазине за просмотр рекламы.
И баланс валюты надо будет посчитать, но вообще будто бы сложнее это пользователю объяснить. Нужно будет грамотно сделать интерфейс чтобы это было очевидно.
2) Капли крови тратятся на использование абилок. Вообще и нарративно логично, и интерфейсно понятно как сделать, но надо плейтестить. И легко балансировать для казуальных игроков.
Проблему я вижу в мотивации к хардкорных игроков, которым способности и подсказки юзать по статусу не положено. А если основная точка траты валюты — это абилки. Тратить валюту им некуда.
#индиприключения
你好! 你好吗? Утро у меня обычно начинается с того, что я листаю новости на прогулке, слушаю аудиокнигу (иногда) и собственно учу китайский. И самая настойчивая зелёная сова не забывает мне напоминать, чтобы я поучил немного иероглифоф. Причём когда я начинал учить 中文 (Китайский) не было вариант русско-китайского изучения. Только русско-английский. Так что за одно пытаюсь вспоминать куда ставятся артикли.
И у этой совы есть механика стриков. Ниче нового в геймдеве ей 100 лет в обед. Но я подумал может засунуть награды за ежедневный вход куда-то в игру для ретеншена. Неплохая механика удержания. Вообще надо подумать что игрок может покупать, чтобы сливать валюту, и при этом не утонуть в миллионе промтов. Строить мотивацию на скинах и шапках не хочется. Я придумал точкой траты абилки (по сути читерство, чтобы пройти уровень 3 секунды полной темноты «Время ночи» и «Хронокровь» остановка времени). Тратим валюту чтобы их открыть, тратим валюту чтобы их юзать. Но будто в наградах должна быть не тупо валюта, а ещё что-то.
Пока думаю что надо придумать третью абилку, которая даётся только за 7 дней подряд ежедневного входа, чтобы D7 ретеншен поднять. Просто ещё пока я вижу пару проблемных решений над которыми надо подумать.
1) Капли крови (звёздочки по сути) это так же и валюта, которую мы можем удвоить за просмотр рекламы в конце уровня. И получить в магазине за просмотр рекламы.
И баланс валюты надо будет посчитать, но вообще будто бы сложнее это пользователю объяснить. Нужно будет грамотно сделать интерфейс чтобы это было очевидно.
2) Капли крови тратятся на использование абилок. Вообще и нарративно логично, и интерфейсно понятно как сделать, но надо плейтестить. И легко балансировать для казуальных игроков.
Проблему я вижу в мотивации к хардкорных игроков, которым способности и подсказки юзать по статусу не положено. А если основная точка траты валюты — это абилки. Тратить валюту им некуда.
#индиприключения
🔥9
Как рендерить траву в играх: теория и оптимизация
https://hexaquo.at/pages/grass-rendering-series-part-1-theory/
В статье "Grass Rendering Series Part 1: Theory" разбираются основы рендеринга травы в реальном времени: проблемы с производительностью из-за большого числа травинок, оптимизации (инстансинг, LOD, процедурная генерация), а также физика (ветер, столкновения) и шейдерные техники для реалистичного освещения и полупрозрачности.
Чёт наткнулся в ночи. Пусть полежит тут. Трава штука довольно часто применимая. Когда делается любая 3д локация на улице то она от такого прям оживает. В моём случае это обычно визуализации заводов и всяких производств для выставок. Не люблю когда картинка мёртвая, даже если такие детали это явно не центральный объект, уметь делать всё равно полезно. Сохраним. Поделимся. Пусть статьи дальше для Godot. Концепт от этого не сильно меняется, только конкретика реализации.
#новости
https://hexaquo.at/pages/grass-rendering-series-part-1-theory/
В статье "Grass Rendering Series Part 1: Theory" разбираются основы рендеринга травы в реальном времени: проблемы с производительностью из-за большого числа травинок, оптимизации (инстансинг, LOD, процедурная генерация), а также физика (ветер, столкновения) и шейдерные техники для реалистичного освещения и полупрозрачности.
Чёт наткнулся в ночи. Пусть полежит тут. Трава штука довольно часто применимая. Когда делается любая 3д локация на улице то она от такого прям оживает. В моём случае это обычно визуализации заводов и всяких производств для выставок. Не люблю когда картинка мёртвая, даже если такие детали это явно не центральный объект, уметь делать всё равно полезно. Сохраним. Поделимся. Пусть статьи дальше для Godot. Концепт от этого не сильно меняется, только конкретика реализации.
#новости
🔥12
Я таки завёл Boosty!
https://boosty.to/dev_game
Всем привет! Не прошло и трёх лет (на самом деле прошло), и я решил завести себе бусти. Буду рад если кто-то решит поддержать! А у меня будет больше мотивации всё так же искать самые интересные новости по Unity и создавать авторский контент. Вроде моих статей от том "как сделать билд минимального размера" или длинной истории моей карьеры. Я уже всё-таки больше 10 лет разрабатываю что-либо. И создал много бесплатного контента и репозиториев. С ними кстати тоже можно ознакомиться.
Но помимо того что я уже делаю я кое-что придумал :) Что будет доступно для подписчиков с определённого уровня.
1. Плагины
Все разработанные плагины будут доступны для тех, кто угощает меня фильтр-кофе раз в месяц. С неэксклюзивной лицензией на коммерческое использование. Чистые по правам и так далее. По-моему честная сделка.
Первый плагин на очереди, который я придумал - это быстрый 2d glow для URP работающий в WebGL.
2. Предлагать плагины и получать поддержку
А кто латте угостил, тот ещё получит ответы на вопросы по плагину. И могут предлагать свои плагины. Для этого будут отдельные посты.
3. Разбор проектов
Сразу скажу, что там зависит от масштаба. Нельзя читерить и на огромный проект от компании (название популярной компании) сказать: "У нас тут 100к строк кода, проведи аудит по-братски". Небольшие проекты. Могу даже архитектурку набросать как это было в этом посте.
4. Ваше имя в титрах
Чтож. Я видел у блогеров куда-то имена принято писать. Думаю деньги с бусти пойдут на реализацию моих экспериментальных игр. Так что все кто возьмут самую вип подписку попадут в титры игр.
Число подписок с разборами и консультациями + попаданием в титры ограничено. Так как пока я не нашёл маховик времени, чтобы успевать всё что угодно.
Спасибо за внимание. Пойду разберу рабочие дела и поделаю задачки по игре. А вы подписывайтесь, не стесняйтесь.
#интересное
https://boosty.to/dev_game
Всем привет! Не прошло и трёх лет (на самом деле прошло), и я решил завести себе бусти. Буду рад если кто-то решит поддержать! А у меня будет больше мотивации всё так же искать самые интересные новости по Unity и создавать авторский контент. Вроде моих статей от том "как сделать билд минимального размера" или длинной истории моей карьеры. Я уже всё-таки больше 10 лет разрабатываю что-либо. И создал много бесплатного контента и репозиториев. С ними кстати тоже можно ознакомиться.
Но помимо того что я уже делаю я кое-что придумал :) Что будет доступно для подписчиков с определённого уровня.
1. Плагины
Все разработанные плагины будут доступны для тех, кто угощает меня фильтр-кофе раз в месяц. С неэксклюзивной лицензией на коммерческое использование. Чистые по правам и так далее. По-моему честная сделка.
Первый плагин на очереди, который я придумал - это быстрый 2d glow для URP работающий в WebGL.
2. Предлагать плагины и получать поддержку
А кто латте угостил, тот ещё получит ответы на вопросы по плагину. И могут предлагать свои плагины. Для этого будут отдельные посты.
3. Разбор проектов
Сразу скажу, что там зависит от масштаба. Нельзя читерить и на огромный проект от компании (название популярной компании) сказать: "У нас тут 100к строк кода, проведи аудит по-братски". Небольшие проекты. Могу даже архитектурку набросать как это было в этом посте.
4. Ваше имя в титрах
Чтож. Я видел у блогеров куда-то имена принято писать. Думаю деньги с бусти пойдут на реализацию моих экспериментальных игр. Так что все кто возьмут самую вип подписку попадут в титры игр.
Число подписок с разборами и консультациями + попаданием в титры ограничено. Так как пока я не нашёл маховик времени, чтобы успевать всё что угодно.
Спасибо за внимание. Пойду разберу рабочие дела и поделаю задачки по игре. А вы подписывайтесь, не стесняйтесь.
#интересное
🔥10❤🔥4
Как устроены игры?
https://github.com/OTFCG/Awesome-Game-Analysis?tab=readme-ov-file
Отличная подборка материалов по разбору геймдизайна, игровых механик и аналитики. Здесь собраны исследования, инструменты и кейсы, которые будут полезны разработчикам, аналитикам и просто фанатам игр. Прям список литературы на лето для разработчика игр!
#новости
https://github.com/OTFCG/Awesome-Game-Analysis?tab=readme-ov-file
Отличная подборка материалов по разбору геймдизайна, игровых механик и аналитики. Здесь собраны исследования, инструменты и кейсы, которые будут полезны разработчикам, аналитикам и просто фанатам игр. Прям список литературы на лето для разработчика игр!
#новости
GitHub
GitHub - OTFCG/Awesome-Game-Analysis: a comprehensive collection of video game tech analysis resources
a comprehensive collection of video game tech analysis resources - OTFCG/Awesome-Game-Analysis
🔥10😱1
Зато я точно понял как работает размытие Гаусса
Не то чтобы я раньше не знал. Но было интересно попробовать реализовать его шейдер графом. И в целом можно добить, но так неудобно без циклов и не кодом. Не тот алгоритм чтобы реализовывать. Это скорее был экспериментальный подход :)
Но бусти надо честно отрабатывать. Так что быстрый OutlineGlow не за горами. По сути плагинами для подписчиков я выложу то, что мне и в проекте пригодится. Просто оформлю так, чтобы это были удобные самостоятельные модули. Так что это у нас будет подсветка объектов, верёвки разрубаемые свайпом и динамический 2д свет способный отражаться.
Но раз уже подписчики появляются, подсветку хочется выложить завтра. Не заставлять же первых поддержавших людей ждать :)
P.S. Гаусс в целом не самый быстрый. Да и шейдер графом, учитывая его логику самплирования и "смещения от центра", без циклов собирать такое скорее забавно. Но я вспомнил ещё пару техник. Буду сегодня тестить.
#интересное
Не то чтобы я раньше не знал. Но было интересно попробовать реализовать его шейдер графом. И в целом можно добить, но так неудобно без циклов и не кодом. Не тот алгоритм чтобы реализовывать. Это скорее был экспериментальный подход :)
Но бусти надо честно отрабатывать. Так что быстрый OutlineGlow не за горами. По сути плагинами для подписчиков я выложу то, что мне и в проекте пригодится. Просто оформлю так, чтобы это были удобные самостоятельные модули. Так что это у нас будет подсветка объектов, верёвки разрубаемые свайпом и динамический 2д свет способный отражаться.
Но раз уже подписчики появляются, подсветку хочется выложить завтра. Не заставлять же первых поддержавших людей ждать :)
P.S. Гаусс в целом не самый быстрый. Да и шейдер графом, учитывая его логику самплирования и "смещения от центра", без циклов собирать такое скорее забавно. Но я вспомнил ещё пару техник. Буду сегодня тестить.
#интересное
🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Продолжаю мучать Glow Outline
Обожаю вспоминать про разные оптимизации юнити. Где-то час я не мог понять что происходит с альфой. Я перепробовал разные варианта её расчёта, но в итоге всё равно получалась ободка с разными артефактами. Альфа обрезалась. И я не мог понять почему. Вот что значит пару лет почти не трогать SpriteRenderer.
А потом я вспомнил. Там же не Quad. там меш, который генерится и это оптимизация. На мобильный платформах, особенно на андроид, всегда была проблема с альфа блендингом при множестве слоёв, если есть много лишней альфы. Я с этим сталкивался ещё в 2015, когда работал над проектом Vector 2.
Хорошо, что в настройках Sprite есть ползунок ExturdeEdges. Он решает эту проблему, и нужно просто будет написать про это в документации. А на видео слева спрайт, справа квад.
Хочется ещё добавить дисторш, и настройку вроде Softness, чтобы можно было квад и аутлайн переключать.
#индиприключения
Обожаю вспоминать про разные оптимизации юнити. Где-то час я не мог понять что происходит с альфой. Я перепробовал разные варианта её расчёта, но в итоге всё равно получалась ободка с разными артефактами. Альфа обрезалась. И я не мог понять почему. Вот что значит пару лет почти не трогать SpriteRenderer.
А потом я вспомнил. Там же не Quad. там меш, который генерится и это оптимизация. На мобильный платформах, особенно на андроид, всегда была проблема с альфа блендингом при множестве слоёв, если есть много лишней альфы. Я с этим сталкивался ещё в 2015, когда работал над проектом Vector 2.
Хорошо, что в настройках Sprite есть ползунок ExturdeEdges. Он решает эту проблему, и нужно просто будет написать про это в документации. А на видео слева спрайт, справа квад.
Хочется ещё добавить дисторш, и настройку вроде Softness, чтобы можно было квад и аутлайн переключать.
#индиприключения
🔥6
Несколько иллюстрирующих картинок бонусом. Первая "как выглядит квад с точки зрения меша". Вторая кусочек шейдер графа для реализации Glow.
Просто стандартные техники вроде полноэкранного эффекта — дорогие. Хотя реализуются проще через bloom. Если обводку делать спрайтом, то как быть с анимированными объектами?
А так, ща добавлю дисторсию (доп. шейдером, чтобы можно было делать прикольную анимированную обводку) и ряд настроек. Сделаю доку по использованию. И в продакшен. Будет первый ассет у тех, кто подпишется на третий уровень подписки на бусти.
#индиприключения
Просто стандартные техники вроде полноэкранного эффекта — дорогие. Хотя реализуются проще через bloom. Если обводку делать спрайтом, то как быть с анимированными объектами?
А так, ща добавлю дисторсию (доп. шейдером, чтобы можно было делать прикольную анимированную обводку) и ряд настроек. Сделаю доку по использованию. И в продакшен. Будет первый ассет у тех, кто подпишется на третий уровень подписки на бусти.
#индиприключения
🔥5