Войти

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

Статьи

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

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

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

Читать | Комментарии [46]
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+

Подсказки

^ Матрица LookAt
Доступно пользователям со статусом Участник

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

Инверсия матрицы 4x4
Подсветка кода и IntelliSense в Visual Studio для любых типов файлов.
Экспорт геометрии коллизии с материалом из 3DS Max в формат XML.

Новости

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.

Форум

Столкнулся с парсингом заголовка wav звука?17 фев. 202019:54Beginerok
Юзаю такой код:
struct WAVHEADER
{
  // WAV-формат начинается с RIFF-заголовка:

  // Содержит символы "RIFF" в ASCII кодировке
  // (0x52494646 в big-endian представлении)
  char chunkId[4];

  // 36 + subchunk2Size, или более точно:
  // 4 + (8 + subchunk1Size) + (8 + subchunk2Size)
  // Это оставшийся размер цепочки, начиная с этой позиции.
  // Иначе говоря, это размер файла - 8, то есть,
  // исключены поля chunkId и chunkSize.
  unsigned long chunkSize;

  // Содержит символы "WAVE"
  // (0x57415645 в big-endian представлении)
  char format[4];

  // Формат "WAVE" состоит из двух подцепочек: "fmt " и "data":
  // Подцепочка "fmt " описывает формат звуковых данных:

  // Содержит символы "fmt "
  // (0x666d7420 в big-endian представлении)
  char subchunk1Id[4];

  // 16 для формата PCM.
  // Это оставшийся размер подцепочки, начиная с этой позиции.
  unsigned long subchunk1Size;

  // Аудио формат, полный список можно получить здесь http://audiocoding.ru/wav_formats.txt
  // Для PCM = 1 (то есть, Линейное квантование).
  // Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
  unsigned short audioFormat;

  // Количество каналов. Моно = 1, Стерео = 2 и т.д.
  unsigned short numChannels;

  // Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
  unsigned long sampleRate;

  // sampleRate * numChannels * bitsPerSample/8
  unsigned long byteRate;

  // numChannels * bitsPerSample/8
  // Количество байт для одного сэмпла, включая все каналы.
  unsigned short blockAlign;

  // Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т.д.
  unsigned short bitsPerSample;

  // Подцепочка "data" содержит аудио-данные и их размер.

  // Содержит символы "data"
  // (0x64617461 в big-endian представлении)
  char subchunk2Id[4];

  // numSamples * numChannels * bitsPerSample/8
  // Количество байт в области данных.
  unsigned long subchunk2Size;

  // Далее следуют непосредственно Wav данные.
};
  FILE* file_;
  errno_t err;
  err = fopen_s(&file_, "content//konga.wav", "rb");
  if (err)
  {
    printf_s("Failed open file, error %d", err);
    return 0;
  }

  WAVHEADER header;

  fread_s(&header, sizeof(WAVHEADER), sizeof(WAVHEADER), 1, file_);
  printf("audioformat:%d\n", header.audioFormat);
  printf("bitsPerSample:%d\n", header.bitsPerSample);
  printf("blockAlign:%d\n", header.blockAlign);
  printf("byteRate:%lu\n", header.byteRate);
  printf("chunkId:%s\n", header.chunkId);
  printf("chunkSize:%lu\n", header.chunkSize);
  printf("format:%s\n", header.format);
  printf("numCannels:%d\n", header.numChannels);
  printf("sampleRate:%lu\n", header.sampleRate);
  printf("subchunk1Id:%s\n", header.subchunk1Id);
  printf("subchunk1Size:%lu\n", header.subchunk1Size);
  printf("subchunk2Id:%s\n", header.subchunk2Id);
  printf("subchunk2Size:%lu\n", header.subchunk2Size);
  fclose(file_);
Выхлоп такой в случае хорошего файла https://ibb.co/Rv8hJKZ И в моем случае https://ibb.co/dgBg4Fh
Нужен художник любитель для векторной графики или пиксельной17 фев. 202010:04Iv@nD
Нужен художник векторной или пиксельной графики. Нужно для проекта: персонаж по типу игры Brofist.io + землю (тоесть по чему перс будет ходить)

P. S. Заплатить не смогу, что вы хотите мне 11 лет. Понимаю, что скажут мол "что ты тут делаешь малолетка?", но пожалуйста нарисуйте что нтбудь для меня. Если что, у меня есть Дискорд. 

Генерация UV реки16 фев. 202019:21DeadRipper
Привет, собственно такой вопрос, как генерить UV для реки / дорог?
Есть меш в виде ленты, который может изгибаться, собственно делаю так

по uv.x проблем нет - слева 0.5 минус ширина в мировых координатах, справа 0.5 плюс ширина.

аккумулирую uv.y по одной стороне ленты и uv.y по второй в зависимости от мировых координат
(берется дистанция от точки до точки и аккумулируется по каждой стороне своя)
текстура с repeat режимом

если изгиб сильный и существует большая разница с левой стороны и с правой
получается вот что - UV реки | Sony расширяет программу PSM Dev Program на 12 стран, включая Россию

Был второй вариант каждый новый квад вреппить значения uv.y (2.2 станет 0.2)  чтобы предотвратить накапливание разницы между левой и правой стороной, но в этом случае появятся швы.

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

как вы генерите реки и дороги?

Правка: 19:41

Вычисление ячейки и коррекция ноля16 фев. 202018:27eDmk
Всем привет!

Есть куб состоящий из кубов - 140х140х140. Общее кол-во кубов получается 2 744 000.
Нужно вычислить номер куба по координатам. Все координаты целочисленные.

Если координаты такие: vec3(50, 20, 35), то номер вычисляется корректно:
50 * 20 * 35 = 35000.
Но если в координаты попался ноль vec3(50, 0, 35), то все произведение равно нолю:
50 * 0 * 35 = 0, что совсем некорректно!

Сдвигать координаты нельзя.
Думаю какая формула может подойти или как учесть координату ноль.

Правка: 18:29

Unity3D: пушка пролазит во все что можно16 фев. 202013:27Alerr
Привет всем!
Есть пушка с достаточно длинным стволом и она пролазит во все стены в игре. И это выглядит совсем некрасиво. Пробовал решать эту проблему тем, что рисовал пушку поверх всего. Камера от первого лица, если подойти очень близко к стене и рисовать пушку поверх стены, то это выглядит нереалистично из-за того, что бросается в глаза: ствол длинный и он должен 100% пересечь стену.
Думаю, что нужно не рисовать пушку поверх всего, а физически ее как-то размещать так, чтобы это было как в жизни.
С этим есть проблемы.
Поделитесь своим оптыом, что думаете, как лучше реализовать поведение пушки, чтобы она не пересекала стены.
fxaa + soft particles. Как правильно сложить две текстуры , что бы были не сильно прозрачными частицы ?16 фев. 202013:02ronniko
В общем для дыма или облаков мой результат меня устраивает.
Делаю lerp(fxaaresult,softparticles,0.7);

А вот если надо что то типа травы (четкое и не сильно прозрачное) , то проблемы.

Иногда хочу рисовать вдалеке спрайты деревьев и домов. И вот для них хотелось бы получить лучший вариант.

смена одежды в юнити16 фев. 20207:22Cattleya
Привет
Подскажите как все-таки оптимально реализовать смену одежды в юнити. Мне известно два способа:

1) Дизайнер выдает один файл с одним скелетом и кучей мешей одежды, привязанных к нему. В движке просто скрываем/показываем нужное. У нас этот метод нереализуем, так как дизайнер не может выдать один файл с кучей всего

2) Дизайнер выдает много мешей одежды, привязанных к своим скелетам в разных файлах. В юнити расставляем объекты (меш+свой скелет) на свои места и анимируем каждую часть отдельно - получается, что в сцене будет одновременно работать несколько animator controller для персонажа. Главный минус такого подхода - иногда бывает рассинхрон в анимациях для разных частей.

Может быть есть вариант, чтобы использовать исходные раздельные по отдельным файлам меши с одеждой, а в движке собрать все в один объект с одним скелетом ?

[Unity] Не работает смена курсора в окне Scene [Решено]15 фев. 202023:43smartxp
Пытаюсь поменять курсор Cursor.SetCursor, но юнити его тут же меняет на стандартную стрелку, если засунуть Cursor.SetCursor в OnSceneUpdate, то прямо видна постоянная смена курсора со стандартного на мой.

Как пофиксить?

Перенос Curve анимации Blender -> Unity14 фев. 202016:15Alerr
Привет всем!
Делаю болтающийся хвост.
1) В Blender сделал кривую, один конец кривой соединил с Empty object (модификатор Hook-Aim). Двигаю Empty object через ключи => конец кривой двигается за ним.
Результат:
+ Показать

2) Создал сужающийся цилиндр, добавил ему костей. На "Armature" прицепил модификатор "Spline IK" к последнему дочернему узлу и указал в нем кривую, которая гнется за Empty object. Кости расположились вдоль кривой:

+ Показать

Кстати, конус хвоста почему-то немного отстает от костей, но все же огибает их:

+ Показать

3) Двигаю (запускаю анимацию) Empty object и все вроде как работает, хвост движется плавно, нет острых углов при изгибе хвоста.

4) Экспортирую в unity:

+ Показать


В итоге в unity хвост выглядит неправильно (появился явный перелом). Что это может быть и как исправить?

+ Показать

Должно быть без острых углов:
+ Показать


Upd1:
Скорее всего что-то не так с весами, потому, что если выставляю все веса в 1, то хвост хорошо огибает кости.
Но мне нужно сгладить специфические перегибы, потому все веса высавлять в 1 нельзя.

Видео того как все работает с узлами с разными весами: https://yadi.sk/i/wFxkyY0JS3AYyg

Здесь все вершины имеют максимальный вес: https://yadi.sk/i/NN7GeKc4nxscgA

Так работает анимация в Blender: https://yadi.sk/i/7gyk3NR9XFDtIg

Правка: 18:50

Магазин в юнити14 фев. 202012:19Zaven
Ребят помогите пожалуйста , как сделать чтобы при покупке какой то вещи ,например фон в моём случаи, при следующей покупке не снимались деньги и чтобы менялся текст на выбрано или купить или куплено!?Помогите пожалуйста прошу я уже неделю думаю , чтобы деньги не отнимались я как то сделал осталось чтобы текст менялся помогите пожалуйста могу код скинуть!!
Зеркало казино Украины http://casino-cleopatra.net/zerkalo , Букмекерские конторы по материалам http://winline.ru.