VR-Engage  2.2
Loading...
Searching...
No Matches
Toolkit Development

The VR-Engage Toolkit enables developers to extend the application with custom vehicle logic, hardware integration, and specialized simulation behaviors. This section covers environment setup, component development, and plugin deployment.

Documentation organization

The toolkit development documentation is organized into interconnected sections that mirror the typical development workflow. Each section builds upon concepts introduced in previous sections, though experienced developers can navigate directly to specific topics as needed.

Toolkit fundamentals

The Toolkit Fundamentals section establishes the foundation for all toolkit development. It covers the development environment setup, architectural concepts, and plugin system that underlies VR-Engage extensibility. Start here if you are new to VR-Engage development or need to configure your build environment.

Frontend development

Frontend development focuses on the player-facing aspects of VR-Engage: user interface, input handling, and visualization. The frontend process (vrEngage.exe) handles real-time rendering and user interaction.

Page Description
Player Station Framework Component architecture, lifecycle management, and player station organization
Input and Control Device abstraction, input mapping, action handling, and hardware integration
UI and Visualization QML overlays, GL Studio integration, and HUD development

Backend development

Backend development covers simulation logic, physics, and network interoperability. The backend process (vrEngageSim.exe) maintains authoritative simulation state and communicates with external federates.

Page Description
VR-Forces Integration Entity modeling, physics calculations, damage models, VR-Forces extensions, and simulation components

Inter-process communication

The Inter-Process Communication section covers how frontend and backend processes exchange data. This includes the messaging framework for event-driven communication, DIS/HLA networking for interoperability with external federates, and guidance on choosing the right communication mechanism. Understanding IPC is important for features that span both processes.

Role configuration

The Role Configuration section explains how to package components into deployable roles. Role configuration connects compiled C++ components to the runtime system, enabling users to select roles and allowing configuration without recompilation. This section also covers input mapping configuration and entity integration.

Development workflow

Developing a new capability typically requires work across multiple architectural layers. The frontend handles user interaction and visualization, while the backend manages authoritative simulation state. These processes communicate through a messaging layer, and configuration files assemble components into deployable roles.

A typical workflow progresses through these stages: design the feature and identify process responsibilities, implement backend simulation logic, create frontend UI components, define inter-process communication, configure roles and parameters, then test across the full stack. The Toolkit Fundamentals section provides detailed guidance for each stage.

Architectural principles

VR-Engage follows several architectural principles that inform toolkit development. The System Overview provides detailed coverage of these concepts.

Separation of concerns: The frontend owns the user experience (rendering, input, feedback) while the backend owns simulation truth (physics, damage, network). Visual effects belong in the frontend; authoritative state calculations belong in the backend.

Component-based architecture: Vehicles are assembled from discrete components rather than monolithic classes. A tank might combine driver, gunner, weapon, and sensor components. Frontend components inherit from DtPlayerComponent; backend components integrate with VR-Forces through documented extension points.

Configuration-driven behavior: Components read parameters from configuration files rather than hardcoding values. The Role Configuration section covers the hierarchical parameter system.

Getting started

New developers should begin with Toolkit Fundamentals to understand the development environment and plugin loading mechanism. Developers familiar with the architecture can proceed directly to the relevant section: Player Station Framework for HUDs and input, VR-Forces Integration for entity behavior, or Inter-Process Communication for custom PDUs and networking.

The Code Examples section documents working examples from the examples/ directory, providing practical context for the concepts discussed here.

Prerequisites

Toolkit development requires Visual Studio 2022 with MSVC v143 toolset, CMake 3.16 or later, Qt 5.15.x (matching the VR-Engage distribution), and the VR-Engage Toolkit installation with headers and libraries. Developers should be proficient with C++14/17 and familiar with CMake build configuration. The Toolkit Fundamentals section provides detailed environment setup instructions.

Quick reference

For experienced developers returning to the documentation, here are direct links to commonly needed topics:

Topic Location
Environment setup Toolkit Fundamentals
Component lifecycle Player Station Framework
Input mapping and devices Input and Control
QML overlays UI and Visualization
Entity modeling VR-Forces Integration
Physics implementation VR-Forces Integration
DIS/HLA networking Inter-Process Communication
Message system Inter-Process Communication
Role parameters and entity integration Role Configuration
Working examples Code Examples

See also

For end-user documentation including default controller mappings and operational procedures, see the VR-Engage User Guide.