Программирование игр, создание игрового движка, 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 (поддержка последнего находится в разработке).

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

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

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

Форум

Unity. Работа с UI. Автоматическое изменение размеров10 дек. 201712:47s3dworld
Всем доброго времени суток!

Хочу сделать окно с информацией. Делаю для этого заготовку:

+ Показать

Иерархия следующая:

+ Показать

Window имеет определённый размер и отображается ровно по центру (то есть pivot установлен в (0.5f,0.5f), а Pox X и Pos Y в 0). Собственно ширину окна мне можно сделать всегда определённого значения, а вот высоту окна мне нужно будет менять в зависимости от содержимого в текстовом поле для информации (на примере это "Window text").

CaptionPanel я растягиваю на всю ширину, а позиционирование устанавливаю в самый верх. Pivot устанавливаю в координаты (0.5f,1.0f). В общем заголовок будет всегда привязан к верху окна. Собственно кнопка (ButtonPanel) всегда будет привязана к низу окна и имеет pivot с координатами (0.5f,0.0f). Область для изображения (ImagePanel) у меня привязано к верху окна но сдвинута вниз на высоту CaptionPanel.

Далее идёт объект TextPanel. Он привязан тоже к верху окна, только сдвинут вниз на значение суммы высоты CaptionPanel и ImagePanel. Внутри него есть объект Text, который растянут по ширине и высоте на весь объект TextPanel, с указанием смещений от всех краёв на определённые значения.

Мне нужно чтобы при изменении содержимого в текстовом поле Text для объекта TextPanel изменялся размер объекта TextPanel и размер объекта Window. Изменение размера объекта TextPanel приведёт к тому, что не будет не нужного пространства, а изменение размера объекта Window приведёт к тому, что всё окно будет ровно по центру экрана.

Сейчас же я всё это дело реализовал в скрипте. Определяю сколько занимает места текст. Нахожу разницу в высоте и на эту разницу изменяю сам объект TextPanel по высоте. И на эту же разницу изменяю объект Window. Но может быть в Unity уже есть средства всё это сделать без скрипта? Например сразу при наборе текста в редакторе, чтобы изменялся размер окна.

[C++] Как правильно рендерить?9 дек. 201721:24IIIarp
В общем, есть у меня такой родительский класс как Object.
Он содержит в себе лист ссылок на дочерние объекты и имеет методы onRender, onUpdate и т.д.

Выглядит это примерно так:

clas Object
{
public:
  list<Object*> childs;
  void Init();
  void Update();
  void Render();
private:
  void onInit();
  void onUpdate();
  void onRender();
}

При вызове методов Update, Render и прочих подобных вызывается аналогичный "on" метод, после чего он тригерится для всех детей:

  Render(){
    this->onRender();
    for(Object* target : this->childs)
    {
      target->Render();
    }
  }

Таким образом, я вызываю метод Render у объекта сцены (Она же наследуется от Object'а) и по цепочке рендерю всю сцену.

Если сцена без объектов дает мне в среднем 3000 - 4000 fps
То с 200 объектами - падает до 200 - 250 кадров
Объекты - кубы, точнее даже ссылка на один и тот же куб(EBO), что-бы не засирать память на данном этапе.
Рисуется через дефолтный шейдер который принимает самый минимум(Вершины и цвета)
Сам шейдер врубаю перед тем как вызываю рендер у сцены и вырубаю после него.

Если я так же делаю проход по onUpdate методам (Аналогичным образом), то fps меня угнетает еще сильней -> 60 - 100 кадров
Мягко говоря и вертикальная синхронизация не нужна....

Каким образом вы организовывали игровой цикл или где об этом можно прочесть?
Может я не ту структуру для хранения использую? слышал std::vector не плох в этом плане...
Хотя Java в этом плане мне выдает стабильно 400 кадров при такой же схеме + 3 прохода (Глубина, отрисовка + тень, постпроход)

Правка: 9 дек. 2017 21:55

Демо видео моего ИИ9 дек. 201719:54sg_afanasev
Мой первый пост в сообществе игроделов.
Хочу показать вашему вниманию мой ии в сравнении с navmesh unity.
Основные задачи.
1) Если 1000 юнитов ищет путь к цели то фпс должен сохранятся в пределах 60 и выше
2) Юниты должны стараться отрезать возможные пути отступления игроку.

[РЕШЕНО]Как определить ширину кириллобукв? wglUseFontOutlines глючит? или покажите, как правильно её готовить...9 дек. 201719:45Клапауций
wglUseFontOutlines(  hDC,
                        0,
                        255,
                        base,
                        0.1f, 
                        0.2f,
                        WGL_FONT_POLYGONS,
                        gmf);
где:
GLYPHMETRICSFLOAT gmf[256];
для латиницы все ок, а вот
для русских букв в сим массиве нули
Как исправить?
моношириный не предлагать, и так им закостыливаю.
и ручной метод тож
Автоматически просчитывать индексы вершин?9 дек. 201719:10s2sk
Привет всем.

Знаю что очень боянистый вопрос, но все же...

Делаю редактор моделек внутри движка... И интерисует как автоматически просчитывать индексы вершин? Всегда удивляли 3Ds MAX и прочие редакторы насчет этого... Где есть функции соединения вершин рядом... Это же нужно полностью пересчитывать все индексы. И потом... Как можно редактировать буффер вершин и индексов в реал тайме чтобы в редакторе можно было тянуть мышкой вершину и она изменялась?

Ключи для twitch8 дек. 201718:44dmitrykozyr
Не нашел подходящий раздел, поэтому пишу сюда.
Вчера выпустил свою игру и мне начали писать люди с просьбой прислать ключ, якобы они хотят сделать видеопрохождение на twitch, или написать ревью.
Для меня это в новинку. Подскажите, это такой развод?
Вызов OnTrigger в Unity8 дек. 201711:13Navat
Добрый день всем.

Unity.

Подскажите пожалуйста:
Создаю динамически уровень.
В Awake() генерирую сначала землю, потом деревья.
На каждую клетку земли вешаю BoxCollider и скрипт который при OnTriggerEnter изменяет переменную bool на true.
Далее создаются деревья, рандомных размеров.

В чем мой вопрос, необходимо при размещении дерева проверить свободна ли клетка земли.
Т.к. OnTriggerEnter вызывается гораздо позже Awake, получается клетки всегда свободны.
Можно ли при размещении дерева, сразу вызвать OnTriggerEnter у всех клеток которые столкнулиь с коллайдером дерева?

Правка: 8 дек. 2017 11:19

3d Clouds7 дек. 201717:14Werq
Всем привет!
Делаю облака, возникли некоторые проблемы, прошу помощи.
Форму генерирую шумом Перлина. Получаю набор вершин, затем скармливаю их движку, генерирую из них билборды, после чего применяю к ним текстурку части облака.
блендмод = { One, OneMinusSrcAlpha }
Вот какая получается форма
+ Показать

вот так они выглядят с одной стороны(вполне себе правильно)
+ Показать

а вот так выглядят с другой стороны
+ Показать
, просвечивают себя , собственно первый вопрос как от такого избавиться?
а вот так они выглядят когда включен запись в глубину
+ Показать

пытался делать сортировку, но тогда фпс падает до 0,6.

Правка: 7 дек. 2017 17:18

про особенности OIT11 и прозрачности в целом7 дек. 201713:19Berns
когда впервые реализовывал данный алгоритм, несколько охренел от его низкой производительности. пример мелкософта выдавал жалкие 30 кадров при сцене с 4-мя неплоноэкранными перекрытиями, минимуме полигонов и эффектов, в разрешении 640x480. недавно копнул сам, использовав два буфера RWByteAddressBuffer и RWStructuredBuffer, добился производительности в 300-600 кадров (пустая сцена с отложенным освещением выдает 800- 1100 кадров) в разрешении 1600x900. причины тормозов примерно осознаю. больше всего жрет ClearUnorderedAccessViewUint, что сажает фреймрейт с 1000 кадров до 600. в целях оптимизации не применял его для очистки структурированного буфера, а просто клэмпил по маске из счетчика. почему очистка UAV такая затратная?
есть подозрения, что после OMSetRenderTargetsAndUnorderedAccessViews глубина сцены начинает работать несколько иначе. пока не разобрался, но ни сохраненная в текстуру, ни хардварная глубина не совпадает. прозрачные объекты без отсечения адекватно отрисовываются только тогда, когда убран [earlydepthstencil]
и есть еще один момент, в котором, OIT не является решением, рефракция. до этого я использовал для реализации прозрачности пилинг глубины + отложенный расчет. полагаю, многие просто миксят рефракцию из непрозрачной сцены игнорируя всю прозрачность.
Масштаб игрового мира и моделей6 дек. 201717:39bykabak
По каким критериям выбирают масштаб в целом понятно, но как конкретно ?

1) Модели создаваемые в 3D редакторах имеют привязку к какой-нибудь системе координат и хранят эти данные в своём теле, или они абстрактно рисуются в диапазоне от 0.0f до 1.0f, или от -1.0f до 1.0f и при импорте с их масштабом обычно что-то делают ?
2) Как глобально устанавливать масштаб для всех моделей и учитывать их при импорте в игровой движок ? ( или каждая модель подгоняется вручную )
3) Какой оптимальный шаг точкам вертексного буфера Terrain в мире игры и какая их привязка, например, к метрической системе, если игра обычный шутер на открытом пространстве и т.д. ?
4) Как правильно выбрать шаг между точками вертексного буфера Terrain ? Есть ли какие-то критерии ? ( понятно, что для больших холмов, гор и равнин могут быть разные подходы и расстояния между вертексами Terrain )

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