AI layer for XR: content generation and intelligent NPCs

We develop a turnkey AI layer for AR/VR: content generation and character behavior are embedded into your product as a ready-made module. Scenes and lines are prepared much faster, and characters respond to user actions instead of repeating the same scene. We will discuss the task and come back with an estimate and work plan.
Frequently Asked Questions

Why AR/VR AI runs into latency and content cost limits

A scene with a product showcase, three characters, and dialogue branches is still assembled by hand: object placement, lighting, animations, lines.

Every edit—from replacing a mannequin to adding a new character response—triggers a scene rebuild and re-testing on all target devices.

In an editor like Unity, this looks like a harmless “tweak the prefab,” but in practice it stops work: the edit takes not a minute, but hours of approvals and test runs.

The second bottleneck is system response latency. While an intelligent character’s behavior is described by hard-coded scripts, at peak concurrent participants the state recomputation falls out of sync with the frame rate, and the reaction arrives late.

In VR, this breaks presence faster than low detail does: the user turns their head, and the character answers them in the past.

Content generation for scenes removes part of the manual assembly—layouts, environment variations, and draft lines are produced by rules and templates.

But without a unified asset format and checks, it adds work: generated output must be rejected or filtered, aligned to the common scene grid, and re-tested for behavior.

The limitation here is not hardware, but the volume of manual operations the support team can sustain. So below we break down how this is addressed: where generation replaces assembly, and where a controllable response on the system side is needed.

What the AI layer provides: content generation and character behavior

The AI layer over the XR scene divides the work into three parts: assemble the space, bring characters to life, and keep the scenario tailored to a specific user. Below is what exactly changes compared with manual object placement and logic written for each case in Unity.

Scene preparation speed

Procedural scene generation assembles a location from rules: room dimensions, points of interest, object density, permissible furnishing options. Instead of manually placing each model, the engineer sets constraints, and the system produces 8–12 layout variants per iteration. Scene assembly is reduced from weeks to 2–3 days, and moving to a new venue takes several hours.

Lifelike behavior of non-player characters

Behavior is built as a priority tree plus a situation assessment model: the character reacts to approach, gaze, and voice rather than playing back a recorded animation.

Dialogue branches are selected based on scenario state, so the same character responds differently at the beginning and at the finale of a playthrough. In 15–20 minute runs, the scene maintains its rhythm without repeating lines.

Reduction of manual edits

Scenario adaptation for the user goes through parameters rather than rewriting logic: the playthrough map shows where guests abandon the scene, and editing one rule changes behavior across all branches at once.

The share of manual edits after launch drops severalfold—a typical change is made without developer involvement.

Options for building the layer: cloud, local deployment, hybrid

The layer’s operating mode determines where content generation and character logic are computed—hence the requirements for privacy and response time.

At the first stage, the options look interchangeable; at scale, the difference is visible in reaction latency and in which data leaves the user’s device.

Option When it fits Limitations
Cloud generation Frequent scene changes, heterogeneous device fleet, fast start Requires a stable channel; scene data leaves to an external environment
Local deployment Closed facilities, sensitive data, offline operation Models are reduced in size, content updates are manual deployments
Hybrid scheme Mass-scale scenes where some data cannot be taken outside More complex version synchronization and stream separation

Privacy: where the data boundary lies

The boundary is set not by the mode, but by data classification: faces, documents, facility layouts. The local option closes the issue physically—data does not leave the device, but this comes at the cost of reduced models.

In a hybrid scheme, streams are separated: sensitive fragments are computed on site, while depersonalized data goes to heavy generation.

Response and device load

The delay between user action and character reaction becomes noticeable and breaks immersion. Local inference shortens the path to a minimum, but consumes device resources and competes with scene rendering—the number of active characters has to be limited.

A hybrid removes this: short reactions are computed on site, while heavy generation goes to the cloud with preloading of typical responses.

How we implement the intelligent layer: engineering stages

Work on the intelligent layer proceeds in short iterations: first we record what already exists in the project, then we assemble character behavior and test it on live scenarios.

This order keeps the model from drifting away from the product—each iteration ends with a verifiable result.

  1. Audit of the current project. We examine scenes, navigation, interaction points, ready-made models, and animations; we note which character reactions and which generation the scenario needs, and which are unnecessary.
  2. Integration scheme. We determine where behavior is computed, how it receives scene state, and what it returns to the application: event list, response format, boundary between game logic and the model.
  3. Behavior model setup. We assemble states, transitions, reaction priorities, and character memory; we set the tone of lines and the boundaries generation does not cross.
  4. Testing on user scenarios. We run typical routes—approach, dialogue, refusal, repeat contact—and see where behavior loses coherence or slows response.
  5. Acceptance. We compare the result against criteria agreed before work starts and show what confirms each check.
  6. Handover and support. We provide documentation and edit rules, and train the customer’s team to change lines and reactions without our involvement.

Readiness criteria

We consider the layer ready when the character correctly completes the entire agreed set of scenarios, response time stays within the target, and behavior is preserved across repeated runs.

We separately test failures: if generation is unavailable, the scene does not break but switches to pre-described reactions.

Quality control

Each iteration is reviewed by an engineer who did not participate in the setup: they reproduce the scenarios anew and record discrepancies in the check log.

We review disputed cases with the customer and add them to the scenario set—this way acceptance criteria remain the same for us and for the accepting party.

Handover kit: configurations, integration schemes, regulations

Handing over the AI layer is not an archive with a model, but a set of artifacts your team can use to assemble, update, and troubleshoot incidents on its own. Everything we configure in the project lives in the repository and is delivered with the solution.

  • Layer configuration: generation parameters, quality profiles for different devices, binding of models to scenes.
  • Integration scheme: connection points to the scene and credential services, call order, behavior when an external service is unavailable.
  • Content update procedure: who adds assets and request templates, how pre-publication checks are performed, and how a version is rolled back.
  • Data access rights: role matrix by data type, rules for storing and deleting records.
  • Deployment and rollback schemes: environments, procedure for rolling out a new model version, and conditions for automatic return to the previous one.
  • Reference scenario set: checks that show character behavior has not changed after an update.

Maintenance documentation

We describe the layer architecture, data schema, and entity dictionary—a new engineer joins the project via the document, not via chat history.

We separately define logging: which events are written, where to view them, and how to reconstruct the “request—generation—response” chain from the log.

Data and model access policies

The role matrix separates access to source data, generation settings, and log export. For sensitive data, we define masking and retention periods, and describe model ownership transfer as a procedure recorded in the change log.

Case study: reduced content preparation and brought characters to life

The project is an interactive product showcase in AR/VR: several dozen objects, AI consultant characters, and a scenario that adapts to guest actions. Content and lines were assembled manually, so each new model triggered a rebuild of neighboring scenes. Metrics were captured before and after on the same set of ten scenes.

Before

Models and textures were prepared in Blender, placement, lighting, and interaction points were set by eye, and character dialogues were described with a separate script for each branch state.

Preparing one scene took up to three weeks, and almost half of that time went to repeat edits after feedback. Any change in the catalog broke references in neighboring scenes—this was a separate class of failures caught only at build time.

What changed after

Content was divided into a scene template and data: geometry, materials, and character behavior rules are assembled from a description, while the scene itself is assembled from validated blocks.

Preparation dropped from three weeks to four days, and the share of manual edits fell from about 60% to 15%—only artistic polish remains manual.

The character responds to free-form question wording rather than selecting from a fixed tree, so failures like “line outside the scenario” are gone: data consistency is checked before assembly, not after.

As a result, updating the catalog is no longer a rebuild of the entire project—one data block changes, and the other scenes remain operational.

How does the generative approach differ from pre-assembled scenes?

Pre-assembled content is a fixed set: the scene, resources, states, and transitions are described before launch, and the user in the headset sees exactly what was put into the build.

The generative approach assembles a scene or character line on the fly: input includes session parameters, user profile, and world rules; output is an artifact that was not in the original build.

The difference is visible not in “picture beauty,” but in how you manage risk and how much each change costs.

Criterion Pre-assembled content Generative approach
Predictability of result Complete: the same input produces the same scene Probabilistic: thresholds, repetitions, and selection are needed
First working version Slower—each variant is assembled manually Faster—rules cover dozens of scenarios at once
Support as volume grows Grows linearly: a new scenario means a new build Grows more slowly: edits in rules and the dataset
Artifact validation Inspection and scenario run-through Automatic filters plus selective acceptance
New requirement Rebuild and redeployment Constraint setup without rebuilding the scene

Artifact validation is where the generative approach demands discipline. We define exactly what counts as an acceptable result and validate it automatically before it enters the scene, while disputed cases go to manual acceptance.

When generation loses to fixed content

If strict reproducibility is required—a repeatable show, training with certification, a demonstration where the same frame must match from run to run—pre-assembled scenes are more reliable.

The same applies with a strict rendering time budget at peak and when there is no data against which to validate the result: without a set of rules and examples, generation produces unstable quality, and there is no way to measure it.

Technical concerns: integration, limitations, support

The generation layer does not rewrite what already works: it connects to existing scene events and rules while preserving states and authoring logic. Below are five questions most often raised by a team adopting such a layer into its project.

Is it compatible with the existing scene logic?

Yes, if you integrate through extension points rather than modifying the core. Generation binds to existing triggers and states—a new line or object appears on the same events, while the previous logic remains operational.

What limitations does generation have?

The model operates within a prepared set of objects, style constraints, and a volume budget. The result is validated against a schema: an out-of-bounds element is discarded or replaced with a fallback, not sent to the device.

How predictable is the result?

We fix the parameters and style profile, so one request produces a reproducible response. Before handover, we run a regression set of scenes and compare metrics: share of correct responses, response time, number of failures.

Can content be updated without rebuilding?

Yes. Content packages and generation rules are moved to a separate configuration layer and published independently of the application build. The new version is picked up at launch; rollback is done by returning the previous package.

How is the layer handed over to our team?

We hand over documentation, interaction schemes, access rights, and policies, and train on real scenarios. Support continues for an agreed period: incident analysis, model and configuration updates without losing the assembled logic.

Let’s discuss the task and come back with an estimate and work plan

To come back with a task estimate and a staged plan, rather than generalities, we need initial inputs. Below is what is sufficient to tell us or send during the first call: it is enough to estimate effort and propose a team composition.

  • Scenario: where exactly the AI layer operates—environment and asset generation, dialogue NPCs, content adaptation for different XR devices, or all together.
  • Input data composition: current models and skeletal animations, export formats, texts and speech recordings, training datasets and rights to them.
  • Platform constraints: standalone headsets or a link with an external server, allowable NPC response latency, offline operation requirements.
  • Existing code and build pipeline: what is already ready, at what point the AI layer is embedded, which parts must not be touched.
  • Acceptance criteria: how you verify that a scene or dialogue is correct, and who on the customer side accepts the result.
  • Timeline and staging: whether there are event-bound releases, and what must work in the first delivery.
  • Access: test stands, repositories, and the person making content decisions.

Using this list, we estimate effort by block, show who will be on the team—machine learning engineers, XR developers, a data specialist—and break the work into stages with a verifiable result at each.

Then we state the implementation timeline and the point where you can pause and assess the interim result. Describe the task in free form—we will come back with an estimate and plan.

AI Development Areas

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1393
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1368
  • B2B Advance company logo design
    B2B Advance company logo design
    815
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1139
  • AIDER company logo development
    AIDER company logo development
    1057
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1152