Artemiy’s Devblog
27 subscribers
4 photos
8 videos
1 file
14 links
Блог присвячений створенню та обговоренню ігор.
Розробка ігор, Unity3D, шейдера, створення графіки та багато іншого.
Download Telegram
Сьогодні я здивувався коли дізнався, що світло прораховується теж у шейдері. Трохи подумавши я зрозумів наскільки дивно було те, що мене це здивувало, тому що де ж ще йому прораховуватися?
У нас є тільки 2 обчислювальні пристрої: CPU і GPU.
Враховуючи, що світло потрібно прорахувати для кожного видимого текселя, то для цього якраз і потрібно використовувати GPU, тому що вона для цього і призначена. CPU просто б померла, якби ми навантажили її такою кількістю прорахунків 60 разів на секунду.
This media is not supported in your browser
VIEW IN TELEGRAM
У проекті знадобилося накласти на світло маску і може здаватись, що це досить тривіальне завдання і в проекті з Build-in Render Pipeline така штука навіть із коробки є, але ось у URP чомусь такої фічі немає, а ось у HDRP вже є, тому довелося писати кастомні Light Cookies
Результатом більш ніж задоволений у проект зайшло на ура, але скільки ж було болю домогтися правильної роботи, якось опишу як це зроблено
This media is not supported in your browser
VIEW IN TELEGRAM
Освоюю нові горизонти шейдерів, сьогодні познайомився із Planar mapping. Зробив графіті та парочку текстурок, які показують властивості роботи даного мапінгу.
Такий підхід можна застосовувати, наприклад, у декалях, які можуть відрізнятися залежно від світової позиції
This media is not supported in your browser
VIEW IN TELEGRAM
Відкрив свій старий Pet-проект (можна сказати єдиний) та почав його дороблювати, щоб скоріше його закінчити та перейти до наступних проектів, бо цей мені не дає спокою.
Не можу залишити в напів робочому стані.
Мій перший OpenSource проект😄
https://github.com/Artemiy42/photoshop-autosave-with-timer-script

Ну як проект, так пару скриптів.
Зробив скрипти для автоматичного збереження всіх відкритих файлів у фотошопі із повторенням через певний проміжок часу.
Файли зберігаються у фоновому режимі без зайвих діалогових вікон та всякого такого.

Скрипти були зроблемі для того, щоб уберегтись від лагів та вильотів фотошопу, бо він це полюбляє, та хоч у фотошопі й є інстумент, який повинен зберігати файли після вильоту, він все рівно цього не робить або зберігає який дуже старий прогресс.
Ситація коли фотошоп вилетів та нічого не зберіг, хоча повинен був, вже траплялась не раз, з цими скриптами такої проблеми не буде більше ніколи.
This media is not supported in your browser
VIEW IN TELEGRAM
Пару днів намагався зробити зберігання прогресу у грі, але не аби як, а якось по «нормальному». Зробив через серіалізацію даних гравця у Json в кінці гри, який потім записую в PlayerPrefs та десеріалізацію назад на початку гри.

В цілому вийшло непогано, але довилось трішки помучитись із серіалізацією мого класу Board.

P.S.: Як виявилось JsonConvertor класна штука, за допомогою якої можна дуже легко та зручно перегоняти обʼєкти у Json та назад.
Ну і нормально потестити JsonConvertor допомігли Unit тести
Може колись якийсь юнітіст потрапить на цей пост та зацікавиться юніт тестами, тому залишу лінк на гарне відео по цьому чудовому інструменту від K-Syndicate
Сьогодні випадко наткнувся на цікаву статтю: https://frimn.github.io/fabrics.html

Якщо коротко підсумувати то в ній йдеться про створення універсальних інструментів і чому це не завжди добре.
В статті також згадується термін "Тюрінгівська трясовина", це коли ви створили який дуже універсальний інструмент, який в теорії повинен вирішиву низку завдань, але практично приміняти його дуже важко та не зручно)
Коротше не знав чим зайнятись ввечері після робочо дня, тому виріш сісти далі розробляти нашу з дівчиною простеньку гру.
Я думаю в найближчому часі покажу трішки, що то таке буде🎮
This media is not supported in your browser
VIEW IN TELEGRAM
Короче робимо з дівчиною власну гру, і ось я базово накидав якого коду і як можна бачити щось навіть працює.
Але через те що я замість того щоб роботи гри починав робити якісь абстракції для перевикористання коду в майбутньому, бо думав, що він мені 100% знадобиться. Через перфекціонізм до цих абстракцій та постійні думки про правильність неймінгу та самої абстракції мені все менше хотілось сідати за проєкт далі та я відкладав його на потім, і ось в один день (вчора) я видалив його нафіг та почав з 0🥲

P.S: На відео те що було зроблено)
This media is not supported in your browser
VIEW IN TELEGRAM
Вчора створив проєкт та почав все з початку.
На цей раз вирішив додавати абстракції лише в тому випадку, якщо вони дійсно будуть необхідні та поки код або механіка того не вимагає, все буде по простому.
Ну і за сьогоднішній вечір отримав такий результат.
Мені сподобалось йти крок за кроком роблячи тільки те що потрібно на даний момент та постійно тримаючи проєкт у робочому стані, щоб бачити результат.
This media is not supported in your browser
VIEW IN TELEGRAM
Я в цілому наздогнав те що було в минулій версії гри, але на цей раз код трішки гірший, по ходу розробки трішки рефакторив, що писав тому все не так погано, але ще є місця де треба його провести.

Руки все ще тягнуться зразу писати абстракції та робити на роки, але я поки стараюсь утримуватись від цього, бо знову буде застой на одному місці.
За допомогою ChatGPT знайшов крутий сервіс для зручної та швидкої передачі файлі між пристроями, це сайт Send Anywhere
На роботі працюю із віддаленими машинами, на котрих немає слаку чи телеграму, а логи передавати якось треба було і за допомогою Send Anywhere я спокійно можу це робити.
Закидуєте файл на сайт після чого сайт тримає його у себе 10 хвилин надаючи код із 6 цифр, для завантаження вводимо код після чого автоматично запускається завантаження, файл автоматично видаляється із серверу після завантаження.
Як на мене це дуже зручно та швидко

P.S.: Ще я не впевнений що ми саме завантажуємо файл на сервер, мені здається він відпрявляє файл напряму отримувачу без тимчасового зберігання на своїх серверах
This media is not supported in your browser
VIEW IN TELEGRAM
Минулу гру відклали поки в шухлядку, бо плани на гру сильно виросли, а ми хотіли реалізувати щось простеньке для початку, тому повернулись до моєї минулої ідеї, поки контору палити не буду, але ось невеликий спойлер, може хтось дізнається що за гра)

Роботи ще дофіга, але по трохи йде. Блін як же важко писати хоч щось без постійних роздумів про ідеальність та перфікционізм, але поки трохи виходить.
This media is not supported in your browser
VIEW IN TELEGRAM
Додав меню, вибір паків з рівнями та вибір самих рівнів
Треба додати меню після перемоги, бо я переміг, а нічого не відбувається)
Це все звісно капля в морі, але по трохи рукаюсь і то добре
Сьогдні додав трохи убоге меню перемоги, але заспокою себе думкою, що хоч це і малий крок, але все ж таки крок
Також додав завантаження наступного левела
Ще вчора я думав що меню працюють в цілому непогано, але вже сьогодні мені вони не подобаються і з тим треба буде щось зробити, але воно поки працює, тож хай працює
Трохи відрефакторив роботу із UI, бо перший варіант мене не сильно влаштовував. Спершу хотів зробити гнучко і на віки, але швидко зрозумів, що за гнучкість треба платити складністю та абстріктністю, а платити цю ціну я поки нехотів, тому вирішив зробити як то кажуть "в лоб".
Зараз всі вікна та їх послідовність менежменить GameController (так так, знаю що це лажа, але пізніше я від нього відмовлюсь, коли з'явиться трохи більше сервісів), але згодом ця логіка думаю переїде в якийсь UIService, або щось накшталт цього.
Із цікавого, додав локалізацію до гри, щоб всі інші вікна та тексти робити зразу через локалізаційні ключі, щоб залишалось тільки перевести та можна в продакшн.

Гра буде підтримувати англійську та українську, хотів же додати японську, але чує моя дупа, що перевести буде складнувато, тому поки відклав цю ідею😅🇯🇵
Я думаю це вже класика в 3D починати його вивчення з пончика))
В цілому крутий гайд для вивчення Blender, гарно пояснює та показу всі основні штуки
Ось поки що в мене вийшло, по трохи буду дороблювати, не те щоб я над ним сильно старався, більше намагався засвоїти хоткеї та як правильно використовувати той чи інший інструмент
Задумував вести канал про розробку, де буду розповідати про код і всяке таке, а закидую пончики, ото придумав🍩