The Ray-Trace Game
09.06.2009 00:28
Автор eustas

Лучшая игра для мобильных ПК , Лучшая многопоточная игра
Рейтинг
 
Описание работы
Тип: аркадно-логическая игра.

Краткое описание: на каждом уровне есть источник лазерного луча, приёмник, зеркала, "фишки", стены и другие объекты. Цель – поворачивая зеркала необходимо "поразить" лучом все фишки (пораженная фишка исчезает с поля), после этого исчезает объект препятствующий прохождению луча к приёмнику. Для завершения уровня необходимо направить луч в приёмник. Сложности: лазер имеет ограниченный заряд (по времени); установка может выйти из строя из-за перегрева (когда отраженный луч возвращается в источник) и другие.

Интерфейс: на основном экране изображена схема установки и параметры (заряд, температура). Можно включить дополнительный экран – "Микроскоп" – на этом экране будет отображаться (render) участок схемы методом трассировки лучей (ray-tracing).

Категория – многопоточность: трассировка лучей – ресурсоёмкая задача, которая получает огромный выигрыш при использовании многоядерных систем. Для реализации многопоточной обработки используется библиотека Intel TBB.
Задействованы неделимые (atomic) операции для синхронизации данных основного цикла игры и главного потока визуализации.
Параллельные потоки занимаются визуализацией строк, память под строчки результатов выделена с выравниванием на строки кэша (cache aligned). Таким образом, выполнение потоков не сопровождается накладными расходами на поддержание когерентности кэша.
Для уменьшения времени "холостого хода" (когда нет новых задач, и некоторые потоки уже закончили работу) использована особенность "микроскопа". Микроскоп имеет круглое поле отображения. То есть строки имеют длину. Если раздавать задачи потокам в порядке уменьшения длины строки (и, в среднем, объёма вычислений), то разброс времени окончания вычислений заметно сокращается.
Для поиска объектов пересекающихся с лучом отображения использована особенность расположения объектов. Объекты располагаются в одномерном слое смежных кубов, что даёт хорошее разбиение пространства даже без построения дополнительных структур (kd-tree, …).
Библиотека Intel TBB скомпилирована и слинкована статично, чтобы избежать зависимостей выполняемого файла от других продуктов (MSVC redistributable).

Категория – мобильность: для уменьшения энергопотребления устройства – "Микроскоп" будет отключаться отключении питания ноутбука от сети.
Изначально предполагалось использование Intel TDK, но анализ исходного кода показал, что требуемые функции не содержат специфических вставок кода и являются лишь обёрткой для Windows API.

Установка: игра не требует установки, можно запускать сразу после распаковки. Для работы не требуется наличия DirectX, OpenGL и других дополнительных библиотек.

Оптимизация: в основном меню игры, в схематическом отображении поля, в таблице рекордов, на экране "о лаборатории" используются различные графические эффекты (полупрозрачность, "частицы"). Процесс оптимизации показал, что чёткое указание компилятору к использованию "неотрицательных" (unsigned) типов и объединение однотипных операций в группы (когда в одной переменной хранятся более одного результата) позволяет добиться 20-кратного прироста производительности.

Процесс разработки:
Разработка была начата 9 июня, велась, в основном, по вечерам после работы. На разработку “микроскопа” ушло всего 5 вечеров. Как рабочие инструменты использованы Intel C++ Compiler, FAR Manager, MSVC, Paint.Net, Blender, Adobe Audition. Использованы звуковые материалы с сайта freesound.org и композиции группы Pink Floyd (что придаёт особый колорит).

О технологии:
Главным желанием в процессе разработки было продемонстрировать технологию ray-tracing (которая используется при создании мультфильмов и спецэффектов в кинофильмах), и проверить, готовы ли современные процессоры к широкому её внедрению. Оказалось, что для несложных сцен (как в данной игре), процессорной мощности современных компьютеров вполне достаточно. Основной плюс технологии – реалистичное освещение, блики и тени, корректное отображение прозрачных (линз) и зеркальных тел (обязательно нажмите F1 для переключения в режим отображения прозрачных объектов!).

Что дальше:

В плане развития игры:
– отображение недостающих объектов, имеющих в своём составе тор;
– сглаживание (anti-aliasing), для улучшения картинки на мощных системах;
– управление светом и опциями отображения.

Материалы для скачивания.

Последняя версия игры: ray-trace-010709.exe (1.6 Мб)

Видео демонстрация: ray-trace-demo (swf + html, 30 Мб)
В концовке видео продемонстрирована ситуация отключения сетевого питания ноутбука и обратное подключение.

Инструкция: manual.doc (135 Кб)


Комментарии (6)

01.07.2009 21:35

eustas
Всего баллов:
1,625
Статусных баллов:
1,125
коричневый пояс
Почему-то видео не встало на место. Вот прямая ссылка http://software.intel.com/file/20853
02.07.2009 00:17

eustas
Всего баллов:
1,625
Статусных баллов:
1,125
коричневый пояс
На видео лишь вскользь показана изюминка ray-tracing'a - прозрачные объекты. Вот несколько более подробных снимков.

http://software.intel.com/file/20856

http://software.intel.com/file/20857

http://software.intel.com/file/20858

http://software.intel.com/file/20859

http://software.intel.com/file/20860
06.07.2009 06:01

eustas
Всего баллов:
1,625
Статусных баллов:
1,125
коричневый пояс
Несколько дней отдыха и я снова вернулся к добавлению фич. Итак - теперь тень у линз - настоящая!
Видео-демонстрация: http://software.intel.com/file/20997
09.07.2009 05:50

eustas
Всего баллов:
1,625
Статусных баллов:
1,125
коричневый пояс
Вышла новая версия: ray-trace-090709.exe (1.6Мб) http://software.intel.com/file/21123

Добавлен анти-алиасинг. Картинка получается намного приятнее для глаза. Но и работает в 4 раза медленнее. Кнопки включения/выключения антиалиасинга / прозрачности вынесены на игровую панель.

Антиалиасинг включается по клавише F2.

В дистрибутиве картинки теперь сжаты png -> размер распакованного дистрибутива уменьшился до 2Мб (примерно в 4 раза).

Have fun. Stay tuned.
25.08.2009 02:17

ksili
Всего баллов:
4,108
Статусных баллов:
3,608
коричневый пояс
Я прошёл демку! )))

Идея ничего. Сделать бы графику ещё лучше и этапы посложнее. Микроскопом к сожалению пользоваться времени вообще нет - иначе не успеваешь пройти.
25.08.2009 02:26

eustas
Всего баллов:
1,625
Статусных баллов:
1,125
коричневый пояс
Этапы - это конечно, будет их побольше, будут и посложнее/интереснее =)
Кстати - этапы можно и самому добавлять - это простые текстовые файлики...

Когда только прикрутил микроскоп, тоже начал проигрывать... Это для хардкорщиков - одим глазом туда, другим сюда ;-)

Обратная ссылка (0)


Оставить комментарий  

To obtain technical support, please go to Software Support.
Имя (обязательно)*

Электронная почта (обязательно; не будет отображено на этой странице)*

Ваш URL-адрес (необязательно)


Комментарий*