Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование игр [Форум / Инфо]

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

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

Читать | Комментарии [51]
20 мар. 2018

Детали плавающей точки FordPerfect
Детали плавающей точки
Цель статьи - дать читателю представление о работе с числами с плавающей точкой в программировании. Предполагается дать базовый объём информации и предоставить уровень понимания, достаточный для самостоятельного проведения оценок в задачах, возникающих на практике.

Читать | Комментарии [15]
4 мая 2017

Frustum Culling _Wizard_
Стоимость OpenGL команд. _Wizard_
Rectilinear Texture Warping Mephisto std
Behavior Trees в Unreal Engine 4 std::cin
Verge3D alexkowel
Verge3D
Verge3D - трёхмерный движок для веба, использующий технологию WebGL. Основан на Three.js, от которого отличается наличием реалистичных материалов, визуальным редактором логики Puzzles, средой создания приложений и более тесной интеграцией с программами моделирования Blender и 3ds Max. 14 декабря 2017 года в рамках проекта был запущен облачный сервис Verge3D Network для публикации и распространения 3D-приложений.

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

Вуду-программирование Epsilon
Вуду-программирование
Вуду-программирование (Voodoo programming) — программирование без чёткого понимания языка, основ программирования или используемой технологии; в результате программа обычно не работает, либо работает, но автор не может объяснить как.

Читать | Комментарии [59]
11 янв. 2016

NetWars Engine (NWE) Бабер
Blend4Web B4W_dev
Forward+ innuendo
Экспорт геометрии коллизии с материалом из 3DS Max в формат XML. Aviator777
В предыдущей статье http://www.gamedev.ru/code/tip/Collision_material мы разобрали как написать простой скрипт, с помощью которого можно создать костюмный материал, но мы не разобрали, как его использовать. В данной статье мы разберём как создать скрипт для экспорта из 3DS MAX геометрии коллизии с наложенным материалом.

Читать
6 дек. 2017

Создание собственного материала для геометрии коллизии с помощью MAX Script Aviator777
3D Studio Max: Перезагружаемый плагин RmzVoid
^ Как в Xcode превратить Command Line Tool в Cocoa Application. Sergio
Microsoft анонсировала DirectX Raytracing (DXR) wat
На проходящей в Сан-Франциско конференции разработчиков игр (GDC) компания Microsoft анонсировала поддержку в DirectX 12 технологии DirectX Raytracing (DXR). Новый программный интерфейс позволяет производить просчет рейтрейсинга при помощи поддержки этой технологии в железе.

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

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

Подробнее…

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

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

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

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

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

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

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

Анонс Unity 5 Daemon19
18 марта Unity Technologies анонсировали новую версию популярного движка Unity. Кратко, что обещают:
  • Новая physically-based система материалов,
  • Real-Time Global Illumintaion,
  • Audio Mixer — новый инструмент, позволяющий работать со звуком не выходя из Unity,
  • Редактор 64bit,
  • Апгрейд PhysX до 3.3,
  • Physics 2D Effectors,
  • Поддержка WebGL — добро пожаловать в браузер без unity player,
  • Многопоточные задачи,
  • Интеграция SpeedTree,
  • Еще больше Physics2D API,
  • И многое другое.

Unity 5 | Анонс Unity 5

+ Рекламное видео с особенностями нововведений в Unity 5

Подробная информация: http://unity3d.com/5

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

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

Форум

Наcтройка Canvas в Unity24 апр. 201815:01dmitrykozyr
Мне нужно переместить один слой UI на несколько строчек ниже, чтобы при включении главного меню на экране не было других элементов UI, но когда я это делаю, перехожу на другую сцену, а потом возвращаюсь на исходную, то вижу, что этот элемент вернулся на предыдущее место. Как его переместить, чтобы он там и оставался?

1 | Анонс Unity 5

Помогите разобраться с силами, поворачивающими автомобиль.24 апр. 20189:32vindast
Здравствуйте.

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

Мне требуется найти центростремительную силу. (не через a = v * v / r )

На изображение изображено авто, первый случай понятен, а второй нет.

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

Я подозреваю что часть силы трения, направленной против скорости должна, преобразоваться в силу, перпендикулярную V  ( это собственно и должна быть центростремительная сила).

В общем, помогите разобраться в вопросе, не понимаю вообще что к чему.

поворот | Анонс Unity 5

Правка: 24 апр. 2018 9:44

Как получить значение приращения24 апр. 20182:42tonline_kms65
Всем здравствуйте.
Мне нужна помощь, я на эту тему уже писал - просил помощи. Но у меня остались вопросы.
Математика - это моя беда.
Мне нужно плавно повернуть тело танка в направлении углов вейпоинта.
В кратце что я делаю - я отнимаю от угла вейпоинта текущий угол направления танка. Получаю некую дельту.
Мне нужно эту дельту разбить на части (для поворота на эти значения при каждом тикрейте).
Я запутался.
Целый круг 360, я отнимаю от него целое значение дельты, получаю оставшееся значение окружности.
Дельту делю на оставшуюся окружность.
Я понимаю что это возможно неправильное решение. Но пока не могу придумать что либо.
Ошибка есть, она мизерная, но она есть.
Сам код:
float delta = NormalizeAngle(point_angles[1] - ent_angles[1]);       // разница углов
float remnant_round = (360.0 - delta);                                                   // остаток круга
delta = delta/remnant_round;

if(delta < 0.0){ 
ent_angles[1]+=delta;
} else if(delta > 0.0){ 
ent_angles[1]-=delta;

Код в углах. В радианы не перевожу, пока не разберусь.
Как получить значение приращения | Анонс Unity 5

Тени в 2k1823 апр. 201821:55IBets
Какие современные алгоритмы существуют по отображению теней в Real-Time?(Особенно точечных источников света)

Правка: 23 апр. 2018 21:55

Поясните пожалуйста за форматы изображения (DXGI_FORMAT)23 апр. 201820:37Кинжал
https://msdn.microsoft.com/en-us/library/windows/desktop/bb173059… vs.85%29.aspx
Не подскажете, где можно почитать (желательно на русском) где используются эти (либо основные из них) форматы (за AYUV-V408 вроде понятно - они для видео)?
Например R32G32B32?
Или R16G16B16A16? Или в чем его отличие от R16G16? Какой оптимальнее (и для каких целей) в рамках [текстур для] игры использовать?
R8G8B8A8 я так понимаю самый ходовой?
Так же не понятна разница typeless/float/uint/sint.

Спасибо заранее за ответы

Правка: 23 апр. 2018 20:37

маска рендера23 апр. 201817:04Djon801
Всем здравствуйте! Это моя первая тема на этом форуме.
Вопрос по unity.
Наверняка все видели игру огонь и водаИзображение
Меня интересует каким образом реализовали основной уровень.
Разобрал я swf и что вижу.Там находится холст текстура вот этих светлых кирпичиков.таг-же есть как я понял альфа маски
То-есть маской вырезается всё что обведено чёрным контуром.каким образом в маске можно манипулировать границами цвета?Я не знаю возможно не очень внятно задал вопрос.Вот такой шейдер я раздобыл где-то в интернетеИзображение
Каким бы я цветом не рисовал маску,не чего не меняется.может есть где-то шейдер более функциональнее?
Ах да и каким образом кинуть тень от первого с маской спрайта на тот что зади.В игре огонь и воза это всё наглядно
Может ли CommandBuffer использовать ReplacementShader?22 апр. 201823:23Alerr
Привет всем!
Вопрос: собственно, в шапке.

Вот вариант использования cmdBuff, но я не знаю как произвести подмену шейдера:

+ Показать

Пробовал имитировать работу cmdBuf так:

+ Показать

Обьект shader в 2-х скриптах один и тот же.
lampsColorShader - примитивный шейдер, просто возвращает цвет.

Я не особо силен в том как работает камера, по этой причине после LateUpdate почему-то здесь OUTPUT_BLURRED_LIGHT_TEXTURE и здесь OUTPUT_BLURRED_LIGHT_DEPTH_TEXTURE содержится "мусор". Есть предположение того почему результат в OUTPUT_BLURRED_*** initCmdBuf и LateUpdate отличается?

Правка: 22 апр. 2018 23:24

Помогите загрузить sponza через Assimp22 апр. 201820:53IBets
+ Показать
ModelLoader::ModelLoader(D3D11::Device const& device, D3D11::Context const& context, std::string filename)
  : m_Directory(filename.substr(0, filename.find_last_of('/'))) {

  Assimp::Importer importer;

  const aiScene* pScene = importer.ReadFile(filename, aiProcess_FlipWindingOrder | aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_CalcTangentSpace | aiProcess_GenNormals | aiProcess_GenSmoothNormals);

  if (pScene == NULL)
    throw std::runtime_error("Dont't load file: "+ filename);


  std::vector<Vertex>   vertices;
  std::vector<uint32_t> indices;

  auto g_CountVertices = 0u;
  auto g_CountIndices  = 0u;

  for (auto index = 0; index < pScene->mNumMeshes; index++) {
    g_CountVertices += pScene->mMeshes[index]->mNumVertices;
    g_CountIndices  += pScene->mMeshes[index]->mNumFaces * 3;
  }

  m_Meshes.reserve(pScene->mNumMeshes);
  m_Materials.reserve(pScene->mNumMaterials);
  vertices.reserve(g_CountVertices);
  indices.reserve(g_CountIndices);


  auto filenameDiffuse  = m_Directory + "/sponza/dummy.dds";
  auto filenameNormal   = m_Directory + "/sponza/dummy_ddn.dds";
  auto filenameSpecular = m_Directory + "/sponza/dummy_specular.dds";

  auto diffuseDefaultSRV  = LoadTexture(device, context, filenameDiffuse);
  auto normalDefaultSRV   = LoadTexture(device, context, filenameNormal);
  auto specularDefaultSRV = LoadTexture(device, context, filenameSpecular);

  for (auto indexMaterial = 0u; indexMaterial < pScene->mNumMaterials; indexMaterial++) {

    aiString strDiffuse;
    aiString strSpecular;
    aiString strNormal;
  
    pScene->mMaterials[indexMaterial]->GetTexture(aiTextureType_DIFFUSE, 0, &strDiffuse);
    pScene->mMaterials[indexMaterial]->GetTexture(aiTextureType_SPECULAR, 0, &strSpecular);
    pScene->mMaterials[indexMaterial]->GetTexture(aiTextureType_NORMALS, 0, &strNormal);
  

    bool flagLoadDiffuse  = false;
    bool flagLoadNormal  = false;
    bool flagLoadSpecular = false;
    
    if (pScene->mMaterials[indexMaterial]->GetTextureCount(aiTextureType_DIFFUSE) > 0) {
      filenameDiffuse = m_Directory + strDiffuse.C_Str();
      flagLoadDiffuse = true;
    }

    if (pScene->mMaterials[indexMaterial]->GetTextureCount(aiTextureType_SPECULAR) > 0) {
      filenameSpecular = m_Directory + strSpecular.C_Str();
      flagLoadSpecular = true;  
    }
    
    if (pScene->mMaterials[indexMaterial]->GetTextureCount(aiTextureType_NORMALS) > 0) {
      filenameNormal = m_Directory  + strNormal.C_Str();
      flagLoadNormal = true;
    }

    
    m_Materials.push_back(Material{
      flagLoadDiffuse  ? LoadTexture(device, context, filenameDiffuse)  : diffuseDefaultSRV ,
      flagLoadSpecular ? LoadTexture(device, context, filenameSpecular) : specularDefaultSRV,
      flagLoadNormal   ? LoadTexture(device, context, filenameNormal)   : normalDefaultSRV});
    
  }

  g_CountVertices = 0u;
  g_CountIndices  = 0u;

  for (auto indexMesh = 0u; indexMesh < pScene->mNumMeshes; indexMesh++) {
  
    auto base = static_cast<uint32_t>(vertices.size());
    for (auto indexElement = 0u; indexElement < pScene->mMeshes[indexMesh]->mNumVertices; indexElement++) {
      Vertex vertex;
      vertex.position = { 
        pScene->mMeshes[indexMesh]->mVertices[indexElement].x,
        pScene->mMeshes[indexMesh]->mVertices[indexElement].y,
        pScene->mMeshes[indexMesh]->mVertices[indexElement].z };
      vertex.normal = {
        pScene->mMeshes[indexMesh]->mNormals[indexElement].x,
        pScene->mMeshes[indexMesh]->mNormals[indexElement].y,
        pScene->mMeshes[indexMesh]->mNormals[indexElement].z };
      vertex.tangent = {
        pScene->mMeshes[indexMesh]->mTangents[indexElement].x,
        pScene->mMeshes[indexMesh]->mTangents[indexElement].y,
        pScene->mMeshes[indexMesh]->mTangents[indexElement].z,
      };
      vertex.texcoord = { pScene->mMeshes[indexMesh]->mTextureCoords[0][indexElement].x, pScene->mMeshes[indexMesh]->mTextureCoords[0][indexElement].y };
      
    
      
      vertices.push_back(vertex);
      g_CountVertices++;
    }
    
    for (auto indexElement = 0u; indexElement < pScene->mMeshes[indexMesh]->mNumFaces; indexElement++) {  
      aiFace face = pScene->mMeshes[indexMesh]->mFaces[indexElement];    
      indices.push_back(face.mIndices[0]);
      indices.push_back(face.mIndices[1]);
      indices.push_back(face.mIndices[2]);
      g_CountIndices += 3;
      
    }

  
    m_Meshes.push_back(Mesh{ m_Materials[pScene->mMeshes[indexMesh]->mMaterialIndex],
                           3 * pScene->mMeshes[indexMesh]->mNumFaces,
                           g_CountIndices - 3 * pScene->mMeshes[indexMesh]->mNumFaces, base});
  }

  m_VertexBuffer = device.CreateVertexBuffer(vertices.data(), vertices.size() * sizeof(Vertex), D3D11_USAGE_IMMUTABLE);
  m_IndexBuffer  = device.CreateIndexBuffer(indices.data(), indices.size() * sizeof(uint32_t),  D3D11_USAGE_IMMUTABLE);
  

}

Правка: 23 апр. 2018 23:12

Найти Rotation и Translation между разными системами координат22 апр. 201813:25CVBNTHC
Здрасьте !
Вопрос чисто по картинке.

Что известно:
1. У меня есть три системы координат условно говоря. (на картинке 1, 2, 3)

2. У меня известны матрица R(вращение) и вектор T(перемещение):
    а) Из 1ой системы (у неё R = I и T = 0) во 2ую систему(R|T)
    б) Из 2ой системы (у неё R = I и T = 0) в 3ью систему (R|T)'
Т.е. тут можно сказать, что я знаю R|T относительно другой системы координат.

Вопрос:
Как мне с помощью этих данных найти (R|T)'' где 1ая система (I|0), а 3ья (R|T)'', т.е. найти R|T относительно первой системы координат, чтобы с помощью этих R|T я смог найти точку P через 1ую систему.

А точка P лежит в 3ей системе.

P.s. извините за грамотность :)

linalg | Анонс Unity 5

Assimp21 апр. 201821:16IBets
Дайте собранный assimp.dll под x64 с заголовочными файлами
2001—2018 © GameDev.ru — Разработка игр