Войти

Программирование игр

Статьи

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

Читать | Комментарии [96]
9 окт. 2019

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

Читать | Комментарии [38]
18 авг. 2019

На пути к эффективному алгоритму Global Illumination, часть 1
Синхронизации в Vulkan
Пишем простой рейтрейсер используя Vulkan Raytracing
Введение в Vulkan Raytracing

Термины

Universal Scene Description (USD)
Universal Scene Description (USD)
Universal Scene Description (USD) — файловый формат описания трехмерной сцены, разработанный компанией Pixar.

Читать
5 июня 2018

Verge3D
Verge3D
Verge3D - трёхмерный движок для веба, использующий технологию WebGL. Основан на Three.js, от которого отличается наличием реалистичных материалов, визуальным редактором логики Puzzles, средой создания приложений и более тесной интеграцией с программами моделирования Blender и 3ds Max. 14 декабря 2017 года в рамках проекта был запущен облачный сервис Verge3D Network для публикации и распространения 3D-приложений.

Читать | Комментарии [19]
8 дек. 2017

Вуду-программирование
Blend4Web
Forward+

Подсказки

^ Инверсия матрицы 4x4
Доступно пользователям со статусом Участник

Читать | Комментарии [35]
25 янв. 2020

Подсветка кода и IntelliSense в Visual Studio для любых типов файлов.
Экспорт геометрии коллизии с материалом из 3DS Max в формат XML.
Создание собственного материала для геометрии коллизии с помощью MAX Script

Новости

Ray Tracing Gem. Доступно бесплатно!
Опубликована PDF-книга «Ray Tracing Gem. High-quality and real-time rendering with DXR and other APIs» на 600+ страниц, подготовленная NVIDIA и разными специалистами из области рейтрейсинга. Можно скачать отсюда:
https://link.springer.com/book/10.1007/978-1-4842-4427-2

Ссылка | Комментарии [7]
4 мар. 2019

Microsoft анонсировала DirectX Raytracing (DXR)
На проходящей в Сан-Франциско конференции разработчиков игр (GDC) компания Microsoft анонсировала поддержку в DirectX 12 технологии DirectX Raytracing (DXR). Новый программный интерфейс позволяет производить просчет рейтрейсинга при помощи поддержки этой технологии в железе.

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

SEED-screenshot | Microsoft анонсировала DirectX Raytracing (DXR)

Подробнее…

Ссылка | Комментарии [504]
20 мар. 2018

О дизайне игровых подсистем в 2048 Tournament
Опубликован доклад по итогам разработки игры 2048 Tournament. В нём секции о естественной и искусственной сложности, о принципах дизайна систем, о типах ошибок, о декларативном формировании сценария действий, о том, как у нас работает конечный автомат и о паре архитектурных трюков.

P.S. Не забудьте включить полноэкранный режим просмотра.
Ссылка на доклад: http://www.goo.gl/6DoH7R

2048_tournament_postmortem | О дизайне игровых подсистем в 2048 Tournament

Ссылка
27 янв. 2015

Sony расширяет программу PSM Dev Program на 12 стран, включая Россию

PSM Logo | Sony расширяет программу PSM Dev Program на 12 стран, включая Россию

Как сообщается на портале Playstation Mobile Developer Portal, 29 мая 2014 года Sony Computer Entertainment Inc. расширила программу PSM Dev Program на 12 стран, включая Россию, а PlayStation Store для PSM будет запущен в 4 новых странах 22 июня 2014 года.

Участие в этой программе даёт доступ к PSM Publisher License, которая необходима для разработки приложений при помощи PSM SDK и Unity for PSM, а также к возможности публиковать эти приложения в PS Store для PSM.

Всего на данный момент программа PSM Dev Program действует на территории 32 стран, а контент для PS Store для PSM в ближайшем будущем будет доступен пользователям 22 стран. При этом PS Store для PSM в данный момент не доступен российским пользователям.

Ссылка | Комментарии [18]
30 мая 2014

Программирование игр — создание компьютерной программы (программного обеспечения) с помощью языков программирования. В программирование игры, или создание игрового движка, входит программирование геймплея, создание 3D или 2D графики (при помощи OpenGL или DirectX, которые можно скачать бесплатно), поддержка физики и звукового сопровождения, обеспечение взаимодействия пользователя с игрой и с другими пользователями сетевой или онлайн игры, написание утилит и экспорта из пакетов моделирования, таких как 3DS MAX и Maya. Наиболее популярные среды для программирования игр: MS Visual Studio и Delphi.

Форум

Поиск пути в играх. Алгоритм поиска пути A*26 янв. 202019:18GameDevRu
В своё время долго и упорно разбирал различные алгоритмы поиска путей для различных задач. Сейчас, во время отпуска, решил сделать доброе дело и поделиться накопленными знаниями.

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

Надеюсь, что это будет кому то полезным.

Unity3d. Job Systems26 янв. 202011:36snowslip
Всем привет)
Я тут изучаю возможности Job Systems. Делаю это в отрыве от ECS(у меня шутер от первого лица, кажется, что ECS там избыточен).
Подскажите, пожалуйста, возможно ли создать джоб, который будет крутиться бесконечно? Допустим, в этом джобе я обрабатываю какие-то события, которые могут происходить в любой момент на протяжении всего жизненного цикла игры и источником этих событий служит не UI-поток(т.е. я не могу отследить их из кода MonoBehaviour, который их порождает).

Я почитал разные статьи на эту тему и создаётся впечатление, что, несмотря на существование потокобезопасных коллекций "Native...", которые могут создаваться с маркером Allocator.Persistent(т.е. данные в такой коллекции хранятся неопределённо долго) типовым кейсом использования джоба является создание контейнера для какой-то конечной операции. Т.е вычисления долгие, но когда-то закончатся и мы обработаем их результаты в каком-нибудь условном Update(например, отобразим в том же UI).
Не просядет ли у меня производительность из-за того, что я отойду от типовых кейсов?

И ещё: в чём секрет вот этих "Native..."? Сказано, что они нужны для потокобезопасности. Но ведь в C# уже есть потокобезопасные коллекции. Хочется понять, почему бы мне просто не использовать потокобезопасные коллекции C# вместо "Native..."?
С последним вопросом в гугле чёт совсем туго.

Правка: 12:24

Unity3d. Обработка пакетов, принятых по сети.26 янв. 202010:45snowslip
Всем привет. Решили тут с другом поупражняться в написании сетевого кода. Почитали всякого, написали.
Теперь втаскиваю это в Unity. И вот тут проблема. Кажется, что юнити заточена под работу через сеть со своими классами.(а сейчас они вроде вообще перестраивают эту инфраструктуру).
Как бы то ни было, хочется обойтись без юнитишного сетевого кода, а сделать всё самостоятельно.
Сложность возникла с тем, чтобы получить пакет, а потом обработать его, применив изменения к нужным объектам.
Сейчас делаю так:
1. Запускаю отдельным потоком код, который получает пакеты и складывает их в потокобезопасную очередь.
2. В UI потоке(прям на MonoBehaviour) у меня крутится код, который проверяет, есть ли что-то в очереди. Если что-то нашёл, то вынул из очереди и применил изменения к сцене.

Пока я оставляю за скобками вопрос того, а как я найду на сцене нужный объект, чтобы к нему применить изменения.
Просто хочется понять, какая могла бы тут быть более хорошая реализация получения\применения пакетов(с использованием многопоточности так сказать в стиле Unity3d).
Мне сейчас кажется, что я мог бы как-то ввернуть в эту схему job systems, т.к. джобы тоже про многопоточность, но при этом созданы прям для юнити.

Может кто-то посоветует что-то? Буду рад примером работы с джобами, которые показывают, как:
1. бесконечно наполнять какую-то нибудь очередь одним джобом
2. проверять и опустошать очередь другим джобом.

Или может быть мне тут джобы не помогут вообще?(в большей степени даже хочется получить обоснованный комментарий от знатоков на тему: а помогут ли мне тут джобы как-то?
PS: я не использую ECS. Если перейду на ECS, то может тогда джобы пригодятся? - везде джобы подают в связке с ECS. А у меня шутер от первого лица, поэтому ECS выглядит избыточным.

Правка: 10:48

Ищу напарника26 янв. 20205:19stalker94
В связи с потерей напарника, ищу ответственного и целеустремленного напарника, js программист, отлично ,skj ,s если знаком с construct 2. Проект является некой мультиплеерной игрой с элементами сталкера + прочее тому подобное.  Игра была осуществлена на 40%, но был утерян напарник. Думаю сменить движок и стратегию. Все подробности, в режиме "тет а тет". Степень готовности контента: высокая.
Изображение
Game Engine (OpenGL / SDL2 / shaders )25 янв. 202017:31gres8
Цикл видео уроков создания игрового движка с нуля.

Видео курс будут состоять из уроков

1 Создание треугольника

2 Используем VBO, Новый класс Sprite, and NDC

3 Добавляем класс GLSLProgram

4 Добавляем Interleaved Vertex Data, composition, Uniform

5 Bonus Sandbox


По окончанию цикла игровой движек будет способен на такое

Правка: 17:57

[Unity] Есть ли событие - потеря фокуса приложения Unity?25 янв. 202017:30smartxp
Событие нужно в редакторе Scene View, а не в игре, т.е. без MonoBehaviour.
Например, когда нажимают alt+tab.
[Решено] Текстура квадратится25 янв. 202015:14programina
Размер текстуры 4096 x 4096, размер меша 1024 x 1024 м2. Как избавиться от оквадрачивания текстуры?
Инверсия матрицы 4x4 (комментарии)25 янв. 202014:39eDmk
Инверсия матрицы 4x4 (комментарии)
Это сообщение сгенерировано автоматически.
OpenGL С++ мерцают полигоны25 янв. 202013:24Koorya
После переноса проекта на другой, более мощный компьютер, а заодно с windows на linux, возникла такая проблема. При запуске на дискретной видеокарте возникает такой артефакт, что часть полигонов в моделях не рисуются. Полигоны мерцают. На картинке видно по кадрам, что рандомные полигоны вдруг перестают рисоваться.
polygon flickering | Sony расширяет программу PSM Dev Program на 12 стран, включая Россию
При этом на интегрированной видеокарте все работает нормально, правда с маленьким fps.
Видеокарта Nvidia GeForce GTX 1660 Ti, на ней fps этой сцены 60 к/с, но мерцают полигоны, и не работает мультисемплинг, хотя в коде он включен.

Здесь пишу в первый раз. На этом ресурсе находил много решений своих проблем связанных с OGL.

Пропали варнинги в студии o_O24 янв. 202018:48fsmoke
Студия 2017 (скоро перейду на 19ю, но мне просто интересно....)

Короче в проекте стоит варнинг левел = 3 - классический, проект в репозитории
компиляторы у всех одинаковые  19.16.27035 for x86

я компилю - ни одного варнинга ну и ошибок соответсвенно нет, тут сотруднику помогал собрать мой проект(много зависимостей там), краем глаза увидел, что есть варнинги o_O - ладно сел поправил залил в репу

сижу пишу дальше на своём компе - пометил один метод как [[deprecated("bla bla bla")]] - у меня опять варнингов нет - ну думаю студия наверное ещё не держит, хотя вроде странно с++14 вроде ж как и вроде ж в фича листе всё давно было - да ну бред какой-то - ну и забил... позже залил в репу...

тут гляжу сотрудники ругаются - сборка перестала собираться - студия говорит error C4996: 'там-то там-то': bla bla bla.
Гляжу они начали sdl checks отрубать - чтоб хотя бы варнинг был, а не ошибка.

КАК?? КАК это собирается у меня o_O??? - без варнингов и ошибок - sdl checks включена!!!

vcxproj - одинаковый сливается из репы - т.е. он у всех идентичный - спецом удалил у себя и переслил - та же хрень

Уже перебрал все глобальные настройки - все настройки проекта - я хз.

Мож у кого такое было ?? Блин как вообще такое происходит?? Ладно бы это был глюк студии - но я не понимаю как компиль это глотает?

Правка: 18:49