Войти

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

Статьи

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

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

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

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

Подсказки

Подсветка кода и 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)

Подробнее…

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

Форум

Опять SMD13 дек. 20199:18K41n
Здравствуйте всплыл вопрос по smd файлам из первой Half-life.
На Qt в OpenGL реализовал загрузку smd файла модель отлично отрисовывается.
А вот со скелетом возникли проблемы.
В файле в описании кости написано
Номер кости /Х/Y/Z/УголX/УголY/УголZ
В интернете нашел информацию что углы поворотов вокруг осей являются углами Эйлера.
Пользуясь матрицами поворотов. Сделал следующий порядок.
1 Сначала бегу по массиву костей.
2 У каждой кости есть параметр в виде массива дерева костей, его загружаем
3 бежим по массиву родителей костей и пользуясь их углами и перемножением матриц поворотов поворачиваем Нашу кость
4 записываем новые координаты Нашей кости и опять поворачиваем и так до последней родительской кости.
5 в конце, так как мы бежим в основном массиве, прибавляем к Нашей кости координаты предыдущей кости родителя
6 Отрисовываем

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

Собственно просьба пояснить в какой последовательности перемножать матрицы поворотов, или в какой последовательности их применять.
На текущий момент ближайший к оригиналу результат комбинация углов вокруг X(Roll),-Y(Yaw),Z(Pitch) в следующем порядке применения X,Y,Z.
Получаю вот такой результат. Ссылки на форум не давайте уже видел, и в интернете видел загрузки, используют во многом Кватернионы. Кто может пояснить процесс , порядок перемещения и поворотов костей, буду благодарен.
M | Sony расширяет программу PSM Dev Program на 12 стран, включая РоссиюS | Sony расширяет программу PSM Dev Program на 12 стран, включая Россию

[Unity] Не удаляется система частиц, если есть потомок12 дек. 201920:33smartxp
Потомок удаляется, а родитель - нет.

У потомка пробовал настроить Start Lifetime и Duration меньше, чем у родителя - не помогло.

Есть еще идеи кроме, как повесить свой скрипт на родителя?

Stop Action у обоих Destroy.

Проблема со спауном ректенглов12 дек. 201919:48BBadger
Привет, форумчане) Как видите я новичок в юнити и разбирая механику работы скриптов по одному курсу наткнулся на одну проблему. Я  специально заснял для этого ролик Спаун Ректенглов

По ролику вы наверное, уже догадались что речь идет о случайном спауне объектов, и как видите некоторые белые ректенглы появляются в середине поля, когда теоритически должны появляться рандомно всегда возле бордовых квадратов, которые, собственно говоря, являются спаунерами.


Прилагаю и сам скрипт, чтобы вам легче было разобраться, заранее благодарю за помощь.

public class SpawnWalls : MonoBehaviour
{
    public bool SameDelay;
    public bool RandomObject;
    public GameObject Block;
    public GameObject[] Blocks;
    public float TimeBeforeSpawn;
    public float SpawnDelay;



    public float minDelay;
    public float maxDelay;


    // Start is called before the first frame update
    void Start()
    {
        if(SameDelay)
        {
            InvokeRepeating("SpawnBlock", TimeBeforeSpawn, 2);
        }
        else
        {
            StartCoroutine(Spawn());
        }
       
        
    }
    IEnumerator Spawn()
    {
        yield return new WaitForSeconds(Random.Range(minDelay, maxDelay));
        SpawnBlock();
    }

    void SpawnBlock()
    {
        if(RandomObject == false)
        {
            GameObject Object = Instantiate(Block, transform.position, Quaternion.identity) as GameObject;
        }

        if(RandomObject == true)
        {
            GameObject Object = Instantiate(Blocks[Random.Range(0, Blocks.Length)], transform.position, Quaternion.identity) as GameObject;
        }
        if(SameDelay == false)
        {
            StartCoroutine("Spawn");
        }
        
    }


    // Update is called once per frame
    void Update()
    {
        
    }
}

Правка: 19:50

C# Передача типа класса через параметры12 дек. 201917:25Vogd2
Задача:
Есть несколько префабов с разными скриптами в Resources
Есть менеджер, который должен хранить в очереди структуру данных, на основе которой потом создаются эти префабы.
Мне нужно таким образом сохранить информацию о префабе, чтобы можно было его создать не используя строковых имен.

Я могу создать префаб из ресурсов с помощью Resources<ScriptName>.LoadAll(FolderName)
Но для этого нужно как-то передать ScriptName в сохраненной структуре, я не знаю как.

Я могу сделать типы префабам, и при создании делать switch по типу, но хочется более элегантно как-то.

Какие есть варианты?

Свечение, как в переходах между локациями в Диабло 312 дек. 201915:37Robotex
Нравится очень свечение как в Диабло 3 на входах/выходах из локации. Как это реализовано? Реально такое в 2Д в изометрии сделать?
HappyGames Studio_JavaScript разработчик12 дек. 201911:21HG Studio
HappyGames Studio — команда разработчиков free-to-play игр, работающая в индустрии с 2016 г.

У нас распределенная команда с офисами в Челябинске и Минске, а также часть наших сотрудников работает удаленно из разных городов и стран. В компании - 21 человек, мы расширяемся, но при этом стараемся сохранить комфортную атмосферу, доверие, открытость и честность внутри команды.

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

Наш флагманский проект Ranch Adventures (Любимая дача: 3-в-ряд) представлен на трех крупных платформах - Ok, Vk, Fb и нескольких более мелких соц.сетях, а также доступен для скачивания на iOS и Android. У нас нет внешних издателей, мы - независимая студия.

И сейчас мы ищем тебя, JavaScript разработчик! Удаленно или в один из наших офисов - г. Челябинск и г. Минск.

Откликайся, если узнаешь в этом описании себя!

Твоими задачами будут:

- Повышение интересности текущих игр за счет разработки новых игровых механик и внутри-игровых ивентов;

- Поддержка качества и стабильности текущих проектов, которые находятся в оперировании.


Требования:

- Знание JavaScript на уровне middle/senior;

- Релевантный опыт работы на JavaScript - не менее 2-х лет;

- Отличная самоорганизация и способность к работе в распределенной команде;

- Мотивация работать в геймдев индустрии, желателен интерес к мобильным играм;

- Внимание к деталям, аккуратность, ответственность.


Будет плюсом:

- Опыт работы в команде от 3-х человек;

- Опыт менторства других разработчиков;

- Опыт работы в геймдеве, в частности с pixiJS - фреймворком;

- Знание дополнительных языков и технологий, например: ActionScript3, HTML5, Webpack;

- Опыт работы в распределенной команде.


Мы предлагаем:

- Удобный гибкий график;

- Официальное трудоустройство;

- Обучение за счет компании после прохождения испытательного срока;

- Профессиональный, карьерный и финансовый рост при ваших высоких показателях;

- Возможность работать удаленно или в одном из двух офисов компании в г. Минск или г. Челябинск.


Не забудь приложить ссылку на свои проекты на GitHub и отдельные примеры особенно удачных коммитов. Если нет чего-то интересного на GitHub, обязательно пришли примеры сложного или красивого кода из рабочих проектов, которыми ты гордишься.

Будет здорово, если ты укажешь свои финансовые ожидания в графике работы full-time.

Ждем твое резюме на !

Разбивание физического мира Bullet Physics на octree12 дек. 20197:38Crazy Gamer
Каким образом физический мир разбивается на октодерево? Для каждого создаётся свой btDiscreteDynamicsWorld?
Если так, то как различные btDiscreteDynamicsWorld взаимодействуют между собой, если потребуется?
Главным образом это требуется для потоковой загрузки локаций и организации их бесшовности.

Правка: 7:48

OpenGL перевод бленда в GL_texture_combine12 дек. 20193:18mingw

Есть такая таблица блендинга текстур:
glblend | Sony расширяет программу PSM Dev Program на 12 стран, включая Россию

Тут метки, которые надо указывать в функции glBlendFunc().

Собственно вопрос : может у кого есть реализация этой таблицы через мультитекстурирование GL_combine_texture ? Или может кто поможет ссылкой...

Механика поворота ровно на 90 градусов11 дек. 201921:19Разер
Тупейший вопрос, я знаю.

Есть управление машинкой — тапаешь слева, поповаричает налево, тапаешь справа, поворачиваешь направо:

private void TurnModelByTouch() {

            if (Input.GetMouseButton(0)) {

                vpMousePosition = Camera.main.ScreenToViewportPoint(Input.mousePosition);
                turnDirection = vpMousePosition.x <= 0.5 ? -1 : 1;

                //Rotate along the y-axis
               
                carRb.angularVelocity = transform.up * turnDirection * turnSpeed;

...

А надо, чтобы после одного тапа, она повернула ровно на 90 градусов, но не резко, а как если бы я держал тап ровно то количество времени, которое надо для поворота на 90 градусов.

Что надо дописать?

Определение выпавшего лута.11 дек. 201918:45Robotex
Суть такая. У вражины есть вероятность выпадения предмета при убийстве. Ну например: 0.2. Это значит, что когда мы его убьем, у нас бросятся кости, чтобы проверить выпало что-то или нет (возьмется рандом от 1 до 1000 и если результат в диапазоне от 0 до 0.2 * 1000, то что-то выпало)

Если что-то выпало, то нужно взять рандом еще раз, чтобы определить вероятность выпадения какого-то конкретного предмета. Ну например, есть 1000 предметов с вероятностью выпадения от 0.01 до 0.95. Но выпасть должен какой-то один, причем чем больше его вероятность, тем чаще он будет выпадать.

И вот тут я в ступоре: а как правильно посчитать какой именно предмет выпал? Подскажите формулу. Какой диапазон рандома взять и как преобразовать выпавшее число в конкретный айдишник выпавшего предмета?

Зеркало казино Украины http://casino-cleopatra.net/zerkalo , Рокс казино зеркало , Букмекерские конторы по материалам http://winline.ru.