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

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

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

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

Frustum Culling _Wizard_

Одной из важных оптимизаций в компьютерных играх является отсечение геометрии, не видимой на экране (Frustum Culling, далее фрустум кулинг). Раз мы все равно не увидим объект, то и не зачем тратить ресурсы компьютера на его подготовку и отрисовку.

Читать | Комментарии [65]
8 фев. 2017

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

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

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

Читать | Комментарии [58]
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
О дизайне игровых подсистем в 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

Опубликованы исходники игрового движка-конструктора godot Feo
Разработчики игрового конструктора godot опубликовали исходники под лицензией MIT. Делать игры на движке godot можно под Mac OS, Windows, Linux. Как заявлено на сайте, деплой на большинство платформ делается в один клик. В списке поддерживаемых платформ: iOS, Android, Web, Windows, Mac, Linux, Blackberry.

Сайт проекта
Список фич
Исходники на github

jpeg | Опубликованы исходники игрового движка-конструктора godot

Ссылка | Комментарии [1]
11 фев. 2014

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

Форум

Создание игры StackJump20 фев. 201815:31Macmep_Uoga
Привет. Я только начинаю учить Unity и поэтому прошу простить некоторые ошибки. Я хочу создать игру вроде StackJump (ссылки ниже). Ну и вот никак не могу понять, что именно и как я должен использовать для создания такой игры. Должен ли я использовать физику (что вроде как логичнее), или лучше перемещать объекты, изменяя их позиции вручную в Update () и FixedUpdate().

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

[url = https://play.google.com/store/apps/details?id=io.voodoo.stackjump] Игра на PlayMarket[/url]

Видео игры

[Unity] С какой стороны объект попал в триггер при нефиксированной deltaTime20 фев. 201812:09Zackary
Привет.

Столкнулся с такой проблемой. Не могу определить, с какой стороны заход в триггер происходит: сверху вниз или [любой другой вариант]. Фактически можно считать, что эта задача из Марио, когда нужно четко определить, прыгнул ли Марио сверху на врага, тогда враг убит, иначе Марио сам получает урон. Проблема в том, что иногда вызов триггера происходит слишком поздно (скачек фпс или хрен знает что ещё), и несмотря на то, что визуально игрок точно прыгнул сверху, внутри OnTriggerEnter2D это не определяется.

Определяю сверху или нет пока довольно топорно: в OnTriggerEnter2D смотрю, что бы velocity.y была меньше нуля у игрока (значит падаем вниз), и если это так, то сравниваем центры бокс коллайдеров: если центр бокс-коллайдера игрока выше центра бокс-коллайдера враг, то можем считать, что игрок прыгнул сверху. И вот иногда OnTriggerEnter2D вызывается слишком "поздно", когда игрок уже пролетел своим центром центр врага.

На игроке висит Rigidbody2D кинематик сугубо для вызовов тригггер-сообщений. Коллизии свои через рейкасты.

Пробовал предыдущую позицию запоминать, и в момент OnTriggerEnter2D сравнивать, была ли она выше коллайдера врага - всё равно OnTriggerEnter2D иногда настолько поздно срабатывает, что даже предыдущая позиция оказывается внутри.

Я думаю, что всё из-за асинхронных вызовов Update и physics cycles (где и определяются пересечения коллайдеров), которые иногда происходят сильно "поздно" в сравнении с Update, если был скачек fps и персонаж за кадр преодалел слишком большое расстояние.

Подскажите, пожалуйста, как разрулить? Поможет ли перенос всей логики движения персонажа в FixedUpdate? Ну или в обычном Update в цикле сделать привязку к фиксированной дельта и при этом руками проверять все пересечения?
Есть ли более грамотный вариант?

Правка: 20 фев. 2018 12:11

Индексирование массивов в пиксельном шейдере20 фев. 201811:48Bonus
Я выяснил, что не все массивы одинаково полезны. В dx9 в пиксельном шейдере их нельзя просто так взять и проиндексировать. Они раскладываются компилятором в регистры, которые очень быстро заканчиваются. Я работаю на Unity и поэтому не долго думая пересобрал тестовый проект под dx11 и shader model 4.0
Так вот, в этом режиме в зависимости от видео карты проект может запустится в режиме dx11 или в dx11 level 10 (или что-то типа того, от карты зависит). И если это не dx11, то в пиксельном шейдере возникает та же проблема, что и в dx9.
Вопрос в том, как узнать ТОЧНО, можно ли индексировать или нет? С какой версии API пиксельный может работать с массивами? Гугл не помог, буду рад хотя бы ссылкам на документацию.
Unity. ИИ космического корабля20 фев. 20183:43Master_Yoda
Всем доброго.
Столкнулся с проблемой: стандартный навмешагент сыпет ошибками, если у него под ногами нет пола. Пробовал ли кто-то применять его для космического или подводного пасфайндинга?
Ошибка: Failed to create agent because it is not close enough to the NavMesh
Преобразование мировых координат в экранные20 фев. 20181:49rottor
Уже неделю ищу решение как из мировых координат объекта получить экранные координаты. Да, в интернете есть много информации по матрицам преобразования, но доступа к коду игры нет, я делаю модификацию интерфейса, и в коде который мне доступен нет функции с помощью которой я смогу получить координаты объекта на мониторе.
Данные которые я могу получить: TargetLocation (x, y, z) - вектор мировых координат цели/объекта; CameraLocation (x', y', z') - вектор мировых координат камеры; CameraRotation (Pitch, Yaw, Roll). И вот как с этих данных получить координаты объекта (x, y) на мониторе к примеру 1920x1080? Я просто не знаю какие матрицы создать, что и куда подставлять, и как перемножать.. очень прошу знающих помочь.
Трава.19 фев. 201818:19Ivashka
Ребят, облазил сеть и сайт но не видать толковой инфы о траве. Задача такая:
- сделать траву на ландшафте и обязательно моделькой.
- травка раставляется по маске (текстура rgb, цветовые диапзоны - типы травы(моделька))
Пытался изобретать велосипед, но всё сводиться к расчёту на CPU, а это ведь бред. В общем ребят вдруг есть нормальные описания техник растановки травы на гпу, ссылки кстате.
OpenGL. Constant Buffer для бедных.19 фев. 201816:17Dampire
Хочу загружать данные за один вызов. ©™ Но опенжл не хочет, потому что вектора у него столбцами. Или матрицы неправильно работают.

Суть.
Заменяем это

layout (std140) uniform PerFrame
{
    mat4 view;
    mat4 projection;
    mat4 invProjView;
    vec4 fogColor;
    vec4 ambientColor;
    // data[0] = zNear, data[1] = zFar, data[2] = fogStart, data[3] = fogEnd
    vec4 data;
    // data2[0] = r addition, data2[1] = g addition, data2[2] = b addition data[4].brightness
    vec4 data2;
    vec2 resolution;
};
На это (структура разумеется выровнена как положено до кратной 64 байтам)
// PER FRAME
#define VIEW per_frame[0]
#define PROJ per_frame[1]
#define INV_PROJ per_frame[2]
#define FOG_COLOR per_frame[3][0]
#define AMBIENT_COLOR per_frame[3][1]
#define ZNEAR per_frame[3][2].x
#define ZFAR per_frame[3][2].y
#define FOG_START per_frame[3][2].z
#define FOG_END per_frame[3][2].w
#define POST per_frame[3][3]
#define RESOLUTION per_frame[4][0]
uniform mat4[5] per_frame;

Разумеется оно не работает. Как малой кровью заставить это работать? Особенно при условии, что часть рендера останется на UBO, часть на почтиUBO. Перелопачивать весь рендер не очень хочется.

Правка: 19 фев. 2018 16:19

Как в UE4 подключать библиотеки?19 фев. 201811:16dmitrykozyr
Я сейчас учусь программировать под UE4 по видеоурокам. Посмотрел много уроков и везде замечал одну странность.
Они не подключают никакие библиотеки. То есть у меня для использования
Mesh
должна быть подключена библиотека
Components/StaticMeshComponent.h
, а видеоуроках ее не подключают.
И так с разными бибиотеками. У меня все время выдает ошибку, что нельзя использовать неполный тип и все время приходится гуглить, какую библиотеку нужно подключить.
Почему в видеоуроках их не подключают и у них ошибки не выдает?

Изображение

UE4 крашится из-за простого скрипта19 фев. 20189:34dmitrykozyr
Хочу сделать простой скрипт, который вращает объект в UE4. Если добавить выделенные строки и скомпилировать проект через UE4, то он закрывается с ошибкой и не открывается до удаления этих строк.
Это нормально, так часто бывает? А то я уже думаю перейти на другой движок..

Изображение

Правка: 19 фев. 2018 9:35

Сборка под nix18 фев. 201823:39fsmoke
Тема не относящаяся к геймдеву. Нашел у себя сетевую железяку и решил поиздеваться, а именно собрать кастомную прошивку на базе wive-ng(linux короче) и портировать reaver(wps долбилка) под нее. дык вот вроде всё удачно портировалось. Правда потребовалась портировать libpcap, но оно собралось кросскомпилем с мелкими правками Makefile.in. И тут возник капец!

reaver при сборке(точнее на configure) чекает libpcap - причем любое либо libpcap.so либо libpcap.a. Первое шаред второе статик. Сама libpcap собирается в libpcap.so.1.8.1 и libpcap.a(статик). Гамно вопрос - сделал симлинк libpcap.so->libpcap.so.1.8.1. Reaver схавал это и собрался.
Но после заливки прошивки и дальнейшему подключению по ссш - выполнять reaver отказывается грит can't load library '1'. Немного прифигев - начал ковырять. Оказалось reaver собирается - но в его зависимостях вместо 'libpcap.so.1.8.1' стоит '1'. Ради прикола переименовал (маразм крепчал) libpcap.so.1.8.1 в единичку - и он запустился. Начал ковырять дальше - собрал reaver c libpcap.a он стал в 2 раза больше и не влез в прошивку. Но при копировании через scp в tmp запустился(все верно статик же).

Собрал reaver под обычный mint x86 - сделал readelf -d reaver - всё норм в зависимостях 'libpcap.so.1.8.1', чекаю после кросскомпиля - '1'.

Вопрос: как собрать шаред с нормальными зависимостями. Я в линухе нуб - можт кто нить сходу поёмёт что за хрень творится? откуда берется единичка вместо нормального имени библиотеки внутри бинарника?

PS
Я виндузятник всё же.. мож пургу порю по никсовой теме

2001—2018 © GameDev.ru — Разработка игр