Войти

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

Статьи

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

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

На пути к эффективному алгоритму Global Illumination, часть 1
В этой статье мы рассмотрим небольшой исторический контекст разработки алгоритмов global illumination, а также поразмышляем, какими свойствами должен обладать оптимальный алгоритм расчёта global illumination.

Читать | Комментарии [142]
22 апр. 2019

Синхронизации в 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+

Подсказки

Подсветка кода и IntelliSense в Visual Studio для любых типов файлов.
Подсветка кода и IntelliSense в Visual Studio для любых типов файлов.
Привет всем! Сейчас я поделюсь с вами способом добавления кастомных типов исходников в MS Visual Studio.

Читать
20 ноя. 2018

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

Новости

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)

Подробнее…

Ссылка | Комментарии [503]
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.

Форум

Предрасчёт рейкаста для эффективного рендеринга травы и меха (комментарии)18 авг. 201921:12Suslik
Предрасчёт рейкаста для эффективного рендеринга травы и меха (комментарии)
Это сообщение сгенерировано автоматически.
Коллизия Phaser 3 - CSV Map18 авг. 201919:21ZGames
Вот код коллизии игрока и кактусов, но она не работает, игрок проходит сквозь, что я сделал не так?

let map = this.make.tilemap({key : 'map', tileWidth: 32, tileHeight: 32});
    
let tileset = map.addTilesetImage('tiles');
let layer = map.createStaticLayer(0, tileset, 0, 0);
    
map.setCollisionBetween(524,527);
map.setCollisionBetween(556,559);
    
Player.object = this.physics.add.sprite(10,10,'player');
    
this.physics.add.collider(Player.object,layer);

Правка: 19:35

[Unity3d] GPU Line Renderer17 авг. 201915:50Polyflow3d
Вобщем надоели мне все эти встроенные LineRenderer-ы и прочие GL.Lines и я решил написать свой лайн рендерер быстрый и удобный.

пока это просто рендерер сегментов (подходит для тонких линий), но может позже я сделаю и непрерывные линии.

MemTest 64/12816 авг. 201920:54eDmk
Всем привет!

Пишу свой модуль работы с памятью и возникла необходимость проверить как работают функции на других машинах. Буду признателен за Ваш результат. AMD также приветствуется.
Иногда с первого раза может выдать низкий результат. С чем связано пока не разобрался.

Мой результат:

+ Показать

Бинарник + исходники теста для Delphi XE6 (x64): MemTest64
Если вдруг вылез Exception (может сбойнуть OLE-server),
то запустите EXE с параметром -WMI или BAT-файл в папке Release.

Правка: 18 авг. 2019 19:57

Бесплатный шейдер Unity для создания волн от дождевых капель16 авг. 201917:33dvornik
Эффект динамический ( не текстурная анимация ).
Использует 2 текстуры для распределения капель, задания фазы и количества волн.
Использует ddx ddy инструкции для расчета нормалей.
Не shadergrpah

Скачать:

OpenGL - текстура не всегда создается!16 авг. 201911:48AleksZubov
Привет Всем!

Пытаюсь реализовать загрузку *.hdr формата текстур.
Проблема в том, что при некоторых запусках программы текстура создается и отображается корректно, а при некоторых просто белая (не содержит нужного изображения).
Гружу текстуру неба 8192х2048.
В чем может быть проблема? Где искать?


Код загрузки ниже.

+ Показать

Правка: 12:05

Насколько std::vector дружит с CPU cache?15 авг. 201914:51Robotex
Пытаюсь следовать Data Locality. Все элементы упакованы в вектор. Внутри есть SpriteComponent, внутри которого вектор индексов конкретных спрайтов в другом векторе (на деле вектор объектов, содержащих всего 2 поля: индекс спрайта и длительность его показа на экране, перед переходом к следующему).

Цикл перебирает элементы и вызывает у них update метод. Потом другой цикл также перебирает все элементы, берет индекс текущего спрайта, берет из другого массива конкретный спрайт и выводит его на экран.

Не будут ли при таком подходе возникать cache miss? Я предполагаю, что и вектор элементов и вектор спрайтов должны существовать одновременно в разных cache line. Так ли это?

Если вместо индекса на элемент вектора использовать указатель, сможет ли компилятор правильно оптимизировать расположение данных?

Косяк с вращением глобуса на Opengl14 авг. 201923:31urii
Доброго времени суток.

Столкнулся с проблемой при вращении модели земли (глобуса) в opengl.

Управление вращением осуществляется мышью. При нажатии кнопки запоминаются координаты, а при возникновении MouseMoveEvent изменение положения курсора трансформируется в последовательные повороты по двум осям (при этом запоминается новое положение курсора для последующего поворота и так пока пользователь не отпустит кнопку мыши)...

Сам поворот выполняется средствами opengl так:
  glMatrixMode(GL_MODELVIEW);
  glPushMatrix();

  glLoadIdentity ();
  glRotated(dX, 1.0, 0.0, 0.0);
  glRotated(dY, 0.0, 1.0, 0.0);
  glMultMatrixf  (mlocal);
  glGetFloatv    (GL_MODELVIEW_MATRIX, mlocal);

glPopMatrix();

Таким образом сохраняются матрицы вращения сцены mscene и глобуса mlocal

В PaintGL последовательно вызываются:

glLoadMatrixd(mscene);// вращение сцены
glTranslated(0.0, 0.0, zoom); // перемещение в центр глобуса
glMultMatrixd(mlocal); // вращение вокруг центра глобуса.

Однако если последовательно вращать глобус : +dY --> +dX --> -dY -->-dX (описав курсором круг) мы не вернемся в исходную точку на глобусе, а появится вращение вокруг третьей оси направленной на нас. Причем чем больше меняются dX dY тем это вращение сильнее, и зависит от направления движения курсора . Если перемещать курсор  +dY --> +dX --> -dХ -->-dY то вращение вокруг третьей оси не наблюдается и мы возвращаемся в исходную точку.

В чем может быть косяк в логике поворотов???

[iOS]Как узнать установлена ли другая игра на девайсе?14 авг. 201910:09n0th1ng
Погуглив, нашел метод canOpenURL:
+ Показать

но не понял как с ним работать. По разному передавал строку с appScheme( и с bundleID) другой(своей) игры и все без толку. Все время возвращает false. Проблема в том, что у меня нет доступа к Objective C коду, только C++ и интерфейс вызова canOpenURL. Как правильно делать запрос? Или есть другие методы?
C++ пройтись по листу типов и создавать объекты до определенного момента13 авг. 201914:54MAMOHT-92
Всегда не дружил с шаблонами и мета-программированием с++.
Есть подобная иерархия:

Абстрактный класс и куча разных наследников в одном поколении.

Я хочу в определенном порядке их создавать и пробовать инициализировать, а именно до первого успешно созданного и инициализированного.

Порылся я в интернете, нашел реализации списка типов, например: https://blog.galowicz.de/2016/05/08/compile_time_type_lists/
но как им воспользоваться я не понимаю.

Вот у меня список:

using MyList = make_t<Type1, Type2, Type3>;

так же есть функция, которая создает и инициализирует объект требуемого типа:

template <typename DecoderType>
inline VideoDecoderPtr tryCreateDecoder(DemuxerPtr demuxerPtr, uint8_t videoTrackNumber)
{
    auto provider = std::unique_ptr<VideoSampleProvider>(new VideoSampleProvider(demuxerPtr,
                                                                                 videoTrackNumber));
    auto decoder = VideoDecoderPtr(new DecoderType);
    if( (provider == nullptr) || (decoder == nullptr) )
        return VideoDecoderPtr(nullptr);

    auto initResult = decoder->init(std::move(provider));
    if(initResult != DecoderError::OK)
        return VideoDecoderPtr(nullptr);

    return decoder;
}

сейчас написал такое использование это функции:

...
auto decoder = tryCreateDecoder<NVDEC_VideoDecoder>(demuxerPtr, videoTrackNumber);
    if(decoder != nullptr)
        return decoder;

    decoder = tryCreateDecoder<FFMPEG_VideoDecoder>(demuxerPtr, videoTrackNumber);
    if(decoder != nullptr)
        return decoder;

    return VideoDecoderPtr(nullptr);
...

а хочу заюзать список.
Понимаю, что нужны c++ variadic templates, что нужны две функции обертки, но не понимаю как это все заюзать, чтобы добиться требуемого эффекта. Мне же не все надо создавать объекты.

Правка: 14:56

Зеркало казино Украины http://casino-cleopatra.net/zerkalo , Рокс казино зеркало , Интернет в Москве от компании Ростелеком.