Мы представляем новую модель контакта, называемую Offset Geometric Contact (OGC), для гарантированного моделирования объектов с минимальными вычислительными затратами без проникновения. Наш метод основан на построении объемной формы путем смещения каждой грани вдоль ее нормального направления, что обеспечивает ортогональные силы контакта и, таким образом, позволяет получить большой радиус контакта без артефактов.
https://graphics.cs.utah.edu/research/projects/ogc/
https://www.youtube.com/watch?v=7NF3CdXkm68
YouTube
NVIDIA Just Solved The Hardest Problem in Physics Simulation!
❤️ Check out Lambda here and sign up for their GPU Cloud: https://lambda.ai/papers
Guide:
Rent one of their GPUs with over 16GB of VRAM
Open a terminal
Just get Ollama with this command - https://ollama.com/download/linux
Then run ollama run gpt-oss:120b…
Guide:
Rent one of their GPUs with over 16GB of VRAM
Open a terminal
Just get Ollama with this command - https://ollama.com/download/linux
Then run ollama run gpt-oss:120b…
🔥4
Старое видео о том, как игры используют обратную связь с игроком (feedback loops): структуры вознаграждений в играх, которые могут усиливать или балансировать победителей и проигравших.
На примере Pyre от SupergiantGames
https://www.youtube.com/watch?v=H4kbJObhcHw
На примере Pyre от SupergiantGames
https://www.youtube.com/watch?v=H4kbJObhcHw
🔥1
Forwarded from Блог Василия Скобелева
Объясняю диаграмму интенсивности на примере сайд-квеста Building Bridges из первого региона Ghost of Yotei. Приятного чтения!
#анализигр #нарративныйдизайн #левелдизайн #GhostofYotei
#анализигр #нарративныйдизайн #левелдизайн #GhostofYotei
Telegraph
Интенсивность и стори-биты
С точки зрения дизайна миссий очень полезно оценивать получившийся опыт с точки зрения интенсивности. Для этого сценарий игровой сессии делят на стори-биты (единицы сценария) и выставляют условную оценку интенсивности геймплея. Иногда это называют уровнем…
❤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
Telegram
GameDev HACK
Network programming blog
https://gafferongames.com/categories/game-networking/
#network #gamedev
https://gafferongames.com/categories/game-networking/
#network #gamedev
👍2
Forwarded from C# Ready | Unity
Интерсепторы: ловим вызов метода до его выполнения — без сторонних библиотек!
Иногда нужно логировать вызовы, проверять аргументы или внедрять кросс-срезовые фичи в одном месте — вместо разбросанных
Подключаем нужные пространства имён и объявляем универсальный интерсептор на основе
Теперь создаём прокси для вашего сервиса и вызываем метод через интерсептор:
🔥 Получаем логирование каждого вызова без сторонних AOP-библиотек — только .NET Core в комплекте!
➡ C# Ready | #практика
Иногда нужно логировать вызовы, проверять аргументы или внедрять кросс-срезовые фичи в одном месте — вместо разбросанных
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 в комплекте!
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
Начало, как всегда, в 22:00 по Московскому времени.
https://www.youtube.com/watch?v=MLD7XSjHm8Y
YouTube
Стрим: Гудини для инди (Алексей Калинин)
Донаты: https://donatty.com/houdinirus
https://www.donationalerts.com/r/houdinirus
Поддержка канала:
Из России: https://boosty.to/houdini
Из других стран: https://www.patreon.com/hipnc
Телеграм-канал и чат: https://t.me/hipnc
Houdini FAQ: http://hipnc.club/houdini…
https://www.donationalerts.com/r/houdinirus
Поддержка канала:
Из России: https://boosty.to/houdini
Из других стран: https://www.patreon.com/hipnc
Телеграм-канал и чат: https://t.me/hipnc
Houdini FAQ: http://hipnc.club/houdini…
🫡3
Кратко об асинхронных механизмах
https://discussions.unity.com/t/introducing-asynchronous-programming-in-unity/1693772
https://discussions.unity.com/t/introducing-asynchronous-programming-in-unity/1693772
🔥1
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
Несколько видео с выдержками из "чистого кода", которые, в том числе, визуально показывают их влияние на общую работу в команде.
Мне кажется, это всё про сокращение "времени координации" при обсуждениях и чтении кода и сокращение размера изменений в PR/MR.
Я не приверженец безукоризненно соблюдать всё, что написано в "чистом коде", но многие вещи оттуда реально работают и проверены временем и работой в разного размера командах. Важно расставлять приоритеты, что важно для каждой команды в данный момент времени и договариваться о общих правилах.
Мне кажется, это всё про сокращение "времени координации" при обсуждениях и чтении кода и сокращение размера изменений в 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
О том как реализовать афро причёску вашему персонажу
О новом шейдере воды (выглядит супер реалистично)
О шейдере с процедурным эффектом гало для неба
О способе протестировать коллизии главного персонажа с террейном для ограничения передвижения
- Аниматор 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.
Так вот у этого мужика есть отличный набор стримов, где сосредоточена такая крутая кристаллизованная выжимка информации об архитектуре, которая, явно видно, прошла огонь, воду и медные трубы. Считаю это одними из лучших "докладов" что я видел за всё время по темам, которых он касается в них.
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
This media is not supported in your browser
VIEW IN TELEGRAM
Алгоритм Грэхема — алгоритм построения выпуклой оболочки в двумерном пространстве. В этом алгоритме задача о выпуклой оболочке решается с помощью стека, сформированного из точек-кандидатов. Все точки входного множества заносятся в стек, а потом точки, не являющиеся вершинами выпуклой оболочки, со временем удаляются из него. По завершении работы алгоритма в стеке остаются только вершины оболочки в порядке их обхода против часовой стрелки.
🔥4🤔1
Вы когда Unity запускаете на исполнение, GameView ставьте на конкретное разрешение, а то кто его знает, сколько пикселей будет, когда вы ставите на Aspect. Часто бывает так что GameView с FullHD достаточно по визуалу и по производительности сильно лучше.
🤝3
Procedural Grass в Ghost of Tsushima
Здесь трава — это не набор расставленных мешей. По сути это GPU-driven procedural pipeline, который генерирует, фильтрует и рендерит растительность почти полностью на стороне GPU.
Цели у системы довольно практичные:
• минимальная нагрузка на CPU
• масштабируемость для большого open world
• высокая визуальная плотность
• правдоподобное поведение на ветру
😡 Procedural placement
Растительность не хранится как тысячи объектов сцены. Вместо этого на поверхности генерируются seed points — компактные записи, описывающие будущую траву. В них обычно лежат:
• тип растения
• вариация формы
• плотность
• параметры анимации
Распределение сидов учитывает особенности поверхности:
• угол наклона (slope)
• высоту
• тип материала
• контекст окружения (дороги, тропинки и т.п.)
За счёт этого данных хранится немного, а плотность растительности можно менять динамически.
⚡️ GPU-driven pipeline
CPU здесь в основном задаёт правила. Основная работа происходит на GPU.
Упрощённо пайплайн выглядит так:
Используются:
• compute shaders для подготовки instance buffer
• GPU frustum и distance culling
• indirect draw calls
CPU не управляет миллионами объектов — он лишь передаёт исходные данные и параметры.
LOD управляет не только геометрией
LOD здесь работает не просто как «меньше полигонов дальше от камеры». Меняется и геометрия, и плотность растительности:
• рядом с камерой — полноценные blades
• на средней дистанции — grass cards
• вдали — impostor-поля
Так удаётся сохранить ощущение плотного травяного покрытия без перегрузки GPU.
Система ветра
Фирменный “Wind of Tsushima” — важная часть визуального стиля игры. Для движения травы используется vector field. Он задаёт направление и силу ветра в пространстве.
Поверх этого комбинируются:
• крупные порывы ветра
• мелкие высокочастотные колебания
• локальная деформация от персонажа
Реакция травы задаётся кривыми (curve parameters), поэтому движение выглядит естественно и не синхронно.
Оптимизации
Несколько вещей, которые делают систему дешёвой:
• секторный procedural culling
• очень компактные instance-данные
• многоступенчатые GPU-буферы
pipeline буферов выглядит примерно так:
В результате одна травинка описывается буквально несколькими байтами данных.
Почему эта система интересна
Ghost of Tsushima хорошо показывает современный подход к растительности:
• data-driven
• GPU-centric
• процедурная генерация
• масштабируемость для open worlds
Трава здесь — не просто декор. Это часть динамической системы окружения, которая реагирует на ветер, камеру и игрока.
🎥 Доклад от разработчиков:
https://www.youtube.com/watch?v=Ibe1JBF5i5Y
Здесь трава — это не набор расставленных мешей. По сути это GPU-driven procedural pipeline, который генерирует, фильтрует и рендерит растительность почти полностью на стороне GPU.
Цели у системы довольно практичные:
• минимальная нагрузка на CPU
• масштабируемость для большого open world
• высокая визуальная плотность
• правдоподобное поведение на ветру
Растительность не хранится как тысячи объектов сцены. Вместо этого на поверхности генерируются seed points — компактные записи, описывающие будущую траву. В них обычно лежат:
• тип растения
• вариация формы
• плотность
• параметры анимации
Распределение сидов учитывает особенности поверхности:
• угол наклона (slope)
• высоту
• тип материала
• контекст окружения (дороги, тропинки и т.п.)
За счёт этого данных хранится немного, а плотность растительности можно менять динамически.
CPU здесь в основном задаёт правила. Основная работа происходит на GPU.
Упрощённо пайплайн выглядит так:
seed data → visibility pass → LOD selection → instance buffer → indirect draw
Используются:
• compute shaders для подготовки instance buffer
• GPU frustum и distance culling
• indirect draw calls
CPU не управляет миллионами объектов — он лишь передаёт исходные данные и параметры.
LOD управляет не только геометрией
LOD здесь работает не просто как «меньше полигонов дальше от камеры». Меняется и геометрия, и плотность растительности:
• рядом с камерой — полноценные blades
• на средней дистанции — grass cards
• вдали — impostor-поля
Так удаётся сохранить ощущение плотного травяного покрытия без перегрузки GPU.
Система ветра
Фирменный “Wind of Tsushima” — важная часть визуального стиля игры. Для движения травы используется vector field. Он задаёт направление и силу ветра в пространстве.
Поверх этого комбинируются:
• крупные порывы ветра
• мелкие высокочастотные колебания
• локальная деформация от персонажа
Реакция травы задаётся кривыми (curve parameters), поэтому движение выглядит естественно и не синхронно.
Оптимизации
Несколько вещей, которые делают систему дешёвой:
• секторный procedural culling
• очень компактные instance-данные
• многоступенчатые GPU-буферы
pipeline буферов выглядит примерно так:
visibility → LOD → final draw buffer
В результате одна травинка описывается буквально несколькими байтами данных.
Почему эта система интересна
Ghost of Tsushima хорошо показывает современный подход к растительности:
• data-driven
• GPU-centric
• процедурная генерация
• масштабируемость для open worlds
Трава здесь — не просто декор. Это часть динамической системы окружения, которая реагирует на ветер, камеру и игрока.
🎥 Доклад от разработчиков:
https://www.youtube.com/watch?v=Ibe1JBF5i5Y
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Procedural Grass in 'Ghost of Tsushima'
In this 2021 Advanced Graphics Summit talk, graphics programmer Eric Wohllaib will discuss how they generate acres of grass within reasonable memory and performance limits, techniques for rendering and animating individual blades, and methods for making thousands…
🔥2❤1🤝1
best practices for character navigation
architecting for ААА performance and robustness
Неплохой обзорный доклад лучших практик для навигации персонажей с GDC 2026 от Tech lead, Havok Navigation Ben Sunshine-Hill
#AI #navigation
architecting for ААА performance and robustness
Неплохой обзорный доклад лучших практик для навигации персонажей с GDC 2026 от Tech lead, Havok Navigation Ben Sunshine-Hill
#AI #navigation
🤝2