Что такое “движок” в принципе и как делаются игры и 3D приложения
3D applications, areas of use, platforms3D приложения, области применения, платформы#
When working at the computer, we often interact with three-dimensional graphics without even realizing it. ideal design elements, animated 3D models — well-known components of advertising and Internet applications, and of course sophisticated computer games that immerse us in their worlds and allow us to do a lot of things that are impossible in real life.Каждый из нас при работе за компьютером взаимодействует с трехмерной графикой, зачастую даже не обращая на это внимания: идеальные элементы оформления, анимированные 3D-модели – это уже привычные составляющие рекламы и Интернет-приложений, а что уж говорить о навороченных компьютерных играх, погружающих нас в свои миры и позволяющие делать там многое из того, что в реальной жизни просто невозможно.
3D visualization is the process of creating a three-dimensional image that can be fictional or as close to reality as possible. An important aspect of this process is the ability to create a virtual environment, which is an entire artificial world modeled with the help of modern technologies and transmitted to a person through their senses — sight, hearing, touch, emotions, or their imitation. This world can recreate different areas of human activity, allowing individuals to perform the same actions as they would in real life, or it can embody an imaginary fantasy world.3D визуализация – это процесс создания объемного изображения, вымышленного или максимально приближенного к реальности. Важным аспектом здесь является возможность создания виртуальной среды — целого искусственного мира, моделируемого с помощью современных технологий и передаваемого человеку через: зрение, слух, осязание, эмоции или их имитацию. Этот мир может воссоздавать ту или иную область жизнедеятельности человека (позволяя совершать те же действия, что и в реальной жизни) или воплощать какой-то выдуманный, фантазийный мир.
3D visualization has become an integral part of modern life, with a wide range of applications such as virtual reality (VR), augmented reality (AR), and mixed reality (MR) systems being used in various fields. These technologies are constantly expanding and have already found their place in:3D-визуализация прочно вошла в современную жизнь, многочисленные 3D-приложения, а также системы виртуальной (VR), дополненной (AR) и смешанной реальности (MR) уже применяются во многих областях (сфера их применения постоянно расширяется):
Simulators and training equipment. 3D images are generated in real-time to provide a comprehensive immersive experience for training and skill testing processes. This approach is particularly useful in industries where mistakes can have serious consequences, such as vehicle driving, team training, tactical operations, health and safety briefings, and maintenance. It allows for safe operator training and enhances the overall learning experience.Симуляторы и тренажеры. Генерация трехмерных изображений для каналов визуализации закабинной обстановки, камеры и сенсоров в режиме реального времени позволяют добиться полного погружения и усовершенствовать процессы обучения и проверки навыков. Абсолютно безопасное обучение операторов в отраслях, где ошибки могут привести к серьезным последствиям: управление транспортным средством, подготовка команды, тактические операции, инструктажи по охране труда и технике безопасности, техническое обслуживание.
Digital twins. 3D visualization that allows for the creation of digital doubles with complex structures. This technology has numerous applications across industries, including improving decision-making, visualizing predictive analytics, and accelerating maintenance processes using virtual reality technologies. Additionally, digital twins can facilitate real-time visualization of data collected from IoT devices at industrial sites and rapid updates from corporate Big Data lakes.Цифровые двойники. Трехмерная визуализация цифровых двойников со структурой любой сложности позволяет улучшить качество принятия решений, визуализации прогнозной аналитики и помогает ускорить процесс технического обслуживания с помощью технологий виртуальной реальности. Платформа позволяет в режиме реального времени визуализировать данные, собираемые с устройств Интернета вещей (IoT), на промышленных площадках и оперативно обновлять их из корпоративного озера больших данных (Big Data).
Machine Learning. Training computer vision systems using automated labeling of photorealistic datasets. The ability to modify artificial environments enables variability in machine learning, such as different lighting conditions, surrounding objects, and observer positions. This enhances the efficiency of training and verifying AI systems.Машинное обучение. Обучение систем компьютерного зрения с автоматически промаркированными фотореалистичными наборами данных. Простота перенастройки искусственного окружения позволяет обеспечить вариативность машинного обучения (различные условия освещения, окружающие объекты, положение наблюдателя), повышая эффективность обучения и верификации систем ИИ.
Smart City Systems. Utilizing the building information model (BIM) concept to create a digital twin of the city on a detailed 3D model. Real-time data updates for each layer, such as transportation, power supply, and geo-information layers, can be incorporated into the model.Системы «Умный город». Применение концепции информационной модели зданий (BIM) к городским масштабам позволяет создавать по сути цифровой двойник города с обновлением данных в режиме реального времени для каждого из слоев (транспортное сообщение, электроснабжение, геоинформационные слои и т.д.) поверх детализированной трехмерной модели.
Entertainment Industry. Developing computer games, movies, animation, visual effects (VFX), virtual exhibitions, and museums that recreate long-lost historical and cultural artifacts using advanced technologies.Индустрия развлечений. Создание компьютерных игр, фильмов, мультипликации, спецэффектов (VFX), а также виртуальные выставки и музеи с воссозданием давно утраченных исторических и культурных артефактов.
Training. Utilizing VR applications in the educational sphere to enhance visibility, engagement, full immersion in the material being studied, and safety of the learning process.Образование. VR-приложения в образовательной сфере обеспечивают наглядность, вовлечение, полное погружение в изучаемый материал и безопасность процесса.
Medicine. Creating virtual operating rooms, applications for rehabilitation medicine and functional training, as well as psychological help for fighting phobias.Медицина. Виртуальные операционные, приложения для реабилитационной медицины и функциональных тренировок, психологическая помощь (борьба с фобиями).
Architectural visualization. Designing and visualizing buildings, structures, and interiors before they are constructed or renovated.Архитектурная визуализация. Разработка зданий, сооружений и интерьеров до начала строительства или ремонта.
Computer-aided design systems (CAD). Visualizing CAD data in VR, analyzing ergonomics, optimizing the design, and providing opportunities for collaborative development in a remote format.Системы автоматизированного проектирования (САПР). Визуализация CAD-данных в VR, анализ эргономики, оптимизация, совместная разработка в дистанционном формате.
Product marketing. Creating realistic 3D visualizations of any product, including high-quality presentations, optimizing product displays, creating virtual product configurators, and facilitating virtual test drives.Товарный маркетинг. Реалистичная визуализация любого продукта в 3D: высококачественные презентации, оптимизация экспозиции товара, виртуальный конфигуратор продукции, виртуальный тест-драйв.
Considering the wide range of 3D applications available, it is clear that they operate on various hardware and platforms, including specialized workstations, desktop computers, game consoles, tablets, smartphones, and more. These systems run on different operating systems such as Windows, Linux, Android, iOS, and others. Cross-platform refers to the software's ability to run on different hardware and software systems or platforms. UNIGINE currently supports Windows and Linux operating systems, as well as PlayStation5 and Series X game consoles.Учитывая такую широкую сферу применения 3D-приложений, становится очевидно, что функционируют они на большом количестве всевозможных аппаратных средств и платформ (специализированные рабочие станции, десктопные компьютеры, игровые консоли, планшеты, смартфоны и так далее), под управлением разных операционных систем (Windows, Linux, Android, iOS, и других). Кроссплатформенность – это способность ПО работать на различных программно-аппаратных системах или платформах. UNIGINE в настоящее время поддерживает операционные системы семейств Windows, Linux, а также может работать на игровых консолях PlayStation5 и Series X.
Definition of EngineОпределение “движка”#
The term game engine implies a whole complex of application software modules that provide graphic visualization, sound, movement of objects and characters, their actions in accordance with scripts, as well as network interaction, compliance with physical effects and laws, and much more. Simply put, these modules bring three-dimensional worlds to life.Термин игровой движок – по сути дословный перевод английского «Game Engine». Это простое словосочетание скрывает в себе целый комплекс прикладных программных модулей, которые обеспечивают графическую визуализацию, звуковое сопровождение, перемещение объектов и персонажей, их действия в соответствии со скриптами, а также взаимодействие по сети, соблюдение физических эффектов и законов и многое другое. Проще говоря, эти модули «оживляют» трехмерные миры.
The term first appeared in the mid-nineties of the last century. It was associated with games in the first-person shooter genre, and more specifically with Doom, the most popular one at that time. The source code of Doom was well-thought-out, with clearly marked out main components: 3D graphics system, sounds, collision calculations, scripts, etc. Thus, instead of writing their own code, other programmers re-used the Doom creators work: they made some changes in the code, changed graphics and appearance of weapons, designed new levels, adjusted the rules and released new games with the same code from Doom as the basis.Впервые этот термин появился в середине 90-х годов прошлого века. Связан он был с играми в жанре «шутер от первого лица», а точнее, с самым популярным на тот момент – Doom. Исходный код Doom был построен очень продуманно, с четко выделенными основными компонентами: системой трехмерной графики, звуками, расчетами столкновений, скриптами и т.д. Это привело к тому, что игровые программисты не стали писать свой код, а использовали наработки создателей Doom: вносили в код какие-то изменения, меняли графику и внешний вид оружия, рисовали другие уровни, корректировали правила и выпускали новые игры, основой которых оставался все тот же код из Doom.
The engine of a game is its core, the basic software on which all other components of the game are built. It's software code that can be used to create variations of the game, add-ons to it, or even other games with their own worlds.Движок игры – это ее основное ядро, базовое программное обеспечение, на основе которого строятся все остальные составляющие игры. Программный код, который может использоваться для создания вариаций игры, дополнений к ней или даже других игр со своими собственными мирами.
In the 1990s, more game engines with free access began to appear. These engines allowed both third-party developers and common users to try writing their own games. As time passed, engines became more and more advanced and voluminous in terms of program code.В те же 90-е в свободном доступе стали появляться игровые движки, на основе которых и сторонние разработчики, и обычные пользователи могли пробовать писать собственные игры. Со временем движки становились все более совершенными, сложными технически, и весьма объемными в части программного кода.
Using a ready-made game engine saves developers time by providing typical code elements that can be used to build a base for the game. This allows developers to focus on implementing ideas, developing graphics and sound, refining mechanics, and adding new features.Готовый игровой движок полезен тем, что экономит разработчику время. Такие системы содержат типовые элементы кода, позволяя собрать базу под игру, не начиная все с нуля. Таким образом, еще остаются время и ресурсы для того, чтобы реализовать идеи, наработки, разобраться с графикой, звуком, доработать механику и добавить новое.
Thus, from a developer's point of view, an engine is a software platform on which applications can be developed, not just games. Engines are actively used in the development of applications with virtual and augmented reality, including guides, reference books, encyclopedias, and more.Получается, что движок с точки зрения разработчика является программной платформой, на которой ведется разработка приложения, и это совсем не обязательно игра. Движки активно используются в работе над приложениями с виртуальной и дополненной реальностью. А это уже не только игры, но и путеводители, справочники, энциклопедии и многое другое.
The image below is the simplified structure of the UNIGINE engine to demonstrate the relationships between internal components and external objects:В упрощенном виде структура движка UNIGINE, демонстрирующая взаимосвязи между внутренними компонентами и различными внешними объектами выглядит так:
Typical project structureТиповая структура проекта#
When you start developing a 3D application, you create a project. A project contains content (models, textures, scenes, settings, sounds, etc.), program code or logic (what breathes life into the content and makes it perform the task at hand), and metadata about the application (target platform, architecture, programming language used, and other additional information).Когда вы приступаете к разработке 3D-приложения, вы создаете проект. Проект содержит в себе контент (модели, текстуры, сцены, настройки, звуки и т.д.), программный код или логику (то, что вдыхает в контент жизнь и заставляет его выполнять поставленную задачу) и метаданные разрабатываемого приложения (целевая платформа, архитектура, используемый язык программирования и другая дополнительная информация).
A project may include one or more multi-component 3D scenes called worlds.Проект может включать одну или нескольких многокомпонентных 3D сцен, которые называются мирами (worlds).
Projects are created and managed through the SDK Browser.Создание проектов и управление ими осуществляется через SDK Browser.
Main stages of project developmentОсновные этапы разработки проекта#
The general workflow for developing 3D applications such as computer games, simulators, trainers, and other virtual environments is as follows:Общая схема технологии разработки 3D-приложений (компьютерных игр, тренажеров, симуляторов и других виртуальных сред) выглядит так:
- Collecting and analyzing data about the objects and processes of the system and requirements.Сначала осуществляется сбор и анализ данных об объектах и процессах системы и требований.
- Creating a technical assignment or design document based on the collected data. This document provides a detailed description of the application to be used in the development process (concept, scheme, interface, graphics, virtual environment, and other relevant details).На основе полученной информации создается техническое задание (ТЗ) или дизайн-документ (он же диздок), представляющий собой подробное описание приложения, используемое в процессе разработки (концепция, схема, интерфейс, графика, виртуальная среда и т.д.).
The iterative cycle, with stages 3-4 executed in parallel:Итерационный цикл (этапы 3-4 выполняются параллельно):
- Creating content (3D models, textures, animations, assembling and customizing 3D scenes, materials, lighting, physics).Создается контент (трехмерные модели, текстуры, анимации, сборка и настройка трехмерных сцен, материалов, освещения, физики).
- Implementing the application logic (writing and debugging code).Осуществляется реализация логики приложения (написание кода и его отладка).
- At the final development stages, testing of the project is performed along with improvements and performance optimization.На заключительных этапах выполняется тестирование проекта, а также его доработка и оптимизация производительности.
- Final build and release.После чего следуют финальная сборка и выпуск.
During this course, we will discuss the main stages of 3D application development in more detail as we work on our own projects.Основные этапы мы подробнее разберем в процессе разработки проектов в рамках данного курса.