GameDev HACK
91 subscribers
29 photos
14 videos
6 files
100 links
HACK — Helpful Advice, Code & Knowledge

Blog by a developer sharing advice and coding tips to help you create better games.


Уютный бложик в виде записок разработчика @AnikoV. Полезные советы, код и знания.
Download Telegram
Набор рекомендаций для сражения с долгим Domain Reload в Unity. Всё ради быстрых итераций. Всё как обычно - померять, распознать бутылочные горлышки, пофиксить.

https://johnaustin.io/articles/2020/domain-reloads-in-unity
👍3❤2🔥1
Оскар Стольберг рассказывает о тонкостях генерации островов с помощью коллапса волновой функции или редукции фон Неймана (алгоритмом, вдохновлённым идеями квантовой механики) [habr.com] и не только. Также Оскар автор проекта https://www.townscapergame.com/ , который можно погонять прямо онлайн в браузере без регистрации и смс и пощупать WFC в действии.

Ссылка на доклад https://www.youtube.com/watch?v=NpfoRAzfGDg
❤1
Player Loop

Вместо MonoBehaviour на сцене можно использовать инжект в текущий луп. Для этого нужно понимать в какой именно мы хотим добавить вызов своего метода. Всего есть 8 групп:

TimeUpdate = 0
Initialization = 1
EarlyUpdate = 2
FixedUpdate = 3
PreUpdate = 4
Update = 5
PreLateUpdate = 6
PostLateUpdate = 7


Использовать проще всего с инжектом при инициализации, но в принципе можно вызывать этот код когда угодно, как и удалять свою систему из обработки:


[RuntimeInitializeOnLoadMethod]
static void Inject() {
var loop = PlayerLoop.GetCurrentPlayerLoop();
var sys = new PlayerLoopSystem {
type = typeof(YourClassName),
updateDelegate = () => Debug.Log("Custom Update")
};
var index = 4; // PreUpdate (см список выше)
loop.subSystemList[index].subSystemList = loop.subSystemList[index].subSystemList.Append(sys).ToArray();
PlayerLoop.SetPlayerLoop(loop);
}


#unity #playerloop
2👍2🔥1👏1
Недавно наткнулся на доску в miro с дорожной картой развития Unity-разработчика.

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

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

Понятно, что тут нет многих глубоких вещей, но именно для старта или получения общего обзора - более чем.
🔥2
Мы представляем новую модель контакта, называемую Offset Geometric Contact (OGC), для гарантированного моделирования объектов с минимальными вычислительными затратами без проникновения. Наш метод основан на построении объемной формы путем смещения каждой грани вдоль ее нормального направления, что обеспечивает ортогональные силы контакта и, таким образом, позволяет получить большой радиус контакта без артефактов.

https://graphics.cs.utah.edu/research/projects/ogc/

https://www.youtube.com/watch?v=7NF3CdXkm68
🔥4
Старое видео о том, как игры используют обратную связь с игроком (feedback loops): структуры вознаграждений в играх, которые могут усиливать или балансировать победителей и проигравших.

На примере Pyre от SupergiantGames

https://www.youtube.com/watch?v=H4kbJObhcHw
🔥1
🎮 Ранее я уже упоминал интересный блог Глена Фидлера — основателя NetworkNext и эксперта по мультиплееру
(тот пост — тык).

У него есть легендарная статья о реализации игрового цикла с разной частотой обновления логики и рендера

👉 Fix Your Timestep!

Но сегодня — не о ней 😉
Я наткнулся на отличное продолжение этой темы и хочу поделиться ею с вами:

👉 Upgrade Your Timestep!

она развивает идеи Фидлера и добавляет несколько практичных апгрейдов.

🧠 хранить время в u64 (uint64) (наносекундах), а не в double — потому что при долгой работе float и double теряют точность, и симуляция со временем начинает «плыть»;

🛠 рассмотреть проблему времени в шейдерах, которые используют float, — автор ссылается на решение Джонатана Блоу (автор Braid, The Witness (очень советую, кстати, оба эти проекта - покажите их детям) ) и предлагает своё возможное улучшение;

🐌внедрить timescale, который позволяет ускорять или замедлять течение времени без нарушения детерминизма;

⏱️ добавить таймеры, работающие на этой же временной системе — удобно для событий вроде задержек, подсказок и внутриигровых таймингов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from C# Ready | Unity
Интерсепторы: ловим вызов метода до его выполнения — без сторонних библиотек!

Иногда нужно логировать вызовы, проверять аргументы или внедрять кросс-срезовые фичи в одном месте — вместо разбросанных Console.WriteLine по всему коду.

Подключаем нужные пространства имён и объявляем универсальный интерсептор на основе DispatchProxy:
using System;
using System.Reflection;

public class LoggingInterceptor<T> : DispatchProxy
{
public T Target { get; set; }

protected override object Invoke(MethodInfo method, object[] args)
{
Console.WriteLine($"➡️ Вызов метода: {method.Name}");
return method.Invoke(Target, args);
}
}


Теперь создаём прокси для вашего сервиса и вызываем метод через интерсептор:
// Предположим, есть интерфейс IMyService и класс MyService
IMyService real = new MyService();
var proxy = DispatchProxy.Create<IMyService, LoggingInterceptor<IMyService>>();
((LoggingInterceptor<IMyService>)proxy).Target = real;

// Все вызовы пойдут через интерсептор
proxy.DoWork();


🔥 Получаем логирование каждого вызова без сторонних AOP-библиотек — только .NET Core в комплекте!

➡ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Forwarded from Hipnc Club
А теперь про Gamedev. На сегодняшнем стриме Алексей Калинин покажет, как создавались пропсы для игры Populus Run. Будет много процедурного моделинга, Houdini Engine, Unity3D, а заодно обсудим плюсы и минусы использования Гудини в инди-разработке. Приходите!
Начало, как всегда, в 22:00 по Московскому времени.

https://www.youtube.com/watch?v=MLD7XSjHm8Y
🫡3
Кратко об асинхронных механизмах
https://discussions.unity.com/t/introducing-asynchronous-programming-in-unity/1693772
🔥1
Несколько видео с выдержками из "чистого кода", которые, в том числе, визуально показывают их влияние на общую работу в команде.

Мне кажется, это всё про сокращение "времени координации" при обсуждениях и чтении кода и сокращение размера изменений в PR/MR.

Я не приверженец безукоризненно соблюдать всё, что написано в "чистом коде", но многие вещи оттуда реально работают и проверены временем и работой в разного размера командах. Важно расставлять приоритеты, что важно для каждой команды в данный момент времени и договариваться о общих правилах.
❤1
Когда-то около 8 лет назад я пристально следил за блогом разработки компании CampoSanto - разработчиков прекрасной Firewatch . По их проекту было много интересных докладов на GDC. Там явно собралась в то время очень талантливая команда из около 10 человек.

- Аниматор James Benson (youtube, x.com), который делал также анимации и для серии игр Ori.

- Matthew Wilde - vfx разработчик (https://x.com/skilful) уже автор шейдеров для воды в CS2.

- Paolo Surrichio - графический программист http://www.paolosurricchio.com - теперь уже работает в Respawn Entertainment

и многие другие были очень талантливые разработчики. В какой-то момент студия начала новый проект In The Valley of Gods, но студию купила Valve - проект был отложен и многие из той команды сейчас работают там над текущими проектами компании.

Мне было и радостно за ребят и грустно от того что дев блог CampoSanto закончился.
https://blog.camposanto.com/

А самыми интересными для меня постами в то время были:
Про GDC доклад об арте Firewatch
О том как реализовать афро причёску вашему персонажу
О новом шейдере воды (выглядит супер реалистично)
О шейдере с процедурным эффектом гало для неба
О способе протестировать коллизии главного персонажа с террейном для ограничения передвижения
🔥3🤝1
GameDev HACK
Decision Making от чувака, который прочувствовал боль на Hitman Absolution и Batman Arkham Knight. slides: https://docs.google.com/presentation/d/13po2s6tJXeDm0TqFsu5l6q_QzTck9f1P/edit#slide=id.p1 https://www.youtube.com/watch?v=5ZXfDFb4dzc #ai #gameai…
Хочу Вам поподробнее рассказать про разработчика Бобби из предыдущего поста. Бобби многое повидал: занимался AI ещё в 2008 году, когда это ещё не было мейнстримом, а я ещё в школу под стол ходил.

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

Decision Making

slides: https://docs.google.com/presentation/d/13po2s6tJXeDm0TqFsu5l6q_QzTck9f1P

https://www.youtube.com/watch?v=5ZXfDFb4dzc

Game AI Basics
slides: https://docs.google.com/presentation/d/1nYTzpkAomu2FWro3rytWbxJnCayY5erd/

https://www.youtube.com/watch?v=G5A0-_4dFLg

Animation Programming Basics

https://www.youtube.com/watch?v=Jkv0pbp0ckQ

Animation Graphs
https://www.youtube.com/watch?v=R-T3Mk5oDHI

Entity / Object models
pt1 https://www.youtube.com/watch?v=jjEsB611kxs
pt2 https://www.youtube.com/watch?v=fuiNOWEUnJ8

Также разработчик Бобби время зря не терял:
- написал и выложил в open source свой движок для прототипирования https://www.esotericaengine.com/ (в нём, кстати, внутри использованы по сути все концепции из докладов)

- а также ведёт свой бложик в твиттере https://x.com/Bobby_Anguelov и на своём сайте https://takinginitiative.net/

а, ну и на сдачу работает в Valve на данный момент, а до этого в IO Interactive, Ubisoft и WB Games.
👍3