Case StudiesКейси

Systems I designed and built, explained at the architecture level. The common thread is Unreal Engine C++ — gameplay and runtime systems — and connecting the engine to the browser (pixel streaming). NDAs are fully respected: no client names, materials or footage — only my own architectural decisions, described in generalized form. Each case opens with a plain-language summary. Системи, які я спроєктував і збудував, — на рівні архітектури. Спільна нитка — C++ в Unreal Engine (геймплей і рантайм-системи) та зв’язок движка з браузером (pixel streaming). NDA дотримуються повністю: без назв клієнтів, матеріалів чи відео — лише мої власні архітектурні рішення в узагальненій формі. Кожен кейс починається з опису простими словами.

Hiring for games?Наймаєте в геймдев? Start with 02 · GAS gameplay, 04 · HLSL shader and 07 · UI/UX & Quest VR. Почніть з 02 · GAS-геймплей, 04 · HLSL-шейдер та 07 · UI/UX і Quest VR.

Case Study 01 · UE 5.3 · C++

Cloud Pixel-Streaming Runtime for ArchvizХмарний Pixel-Streaming рантайм для archviz

C++Pixel StreamingWebRTC DataChannel .pak mountingHTTP caching
In plain termsПростими словами

One Unreal app runs in the cloud and streams a photoreal 3D building to any browser — no install, no gaming PC. New buildings are added as files, without rebuilding or redeploying the app. I wrote the Unreal C++ that lets one app serve a whole catalog of scenes and run stably for hours. Один Unreal-застосунок працює в хмарі й транслює фотореалістичну 3D-будівлю у будь-який браузер — без інсталяції та ігрового ПК. Нові будівлі додаються як файли, без перезбірки й передеплою застосунку. Я написав Unreal C++, який дає одному застосунку обслуговувати весь каталог сцен і стабільно працювати годинами.

Browser React UI Unreal · Cloud GPU one app · all scenes pixel-streamed Scenes .pak files commands video stream load on demand
One deployed app streams any scene to the browser; content ships as files.Один задеплоєний застосунок стрімить будь-яку сцену в браузер; контент — це файли.

ProblemЗадача

Real-estate clients need photoreal, interactive 3D scenes in the browser — no installs, no gaming hardware. One Unreal application has to serve many different architectural scenes, and new scenes arrive weekly from the art team. Rebuilding and redeploying the app for every scene would not scale. Клієнтам з нерухомості потрібні фотореалістичні інтерактивні 3D-сцени в браузері — без інсталяцій і ігрового заліза. Один Unreal-застосунок має обслуговувати багато різних сцен, і нові сцени приходять від артистів щотижня. Перезбирати і передеплоювати апку під кожну сцену — не масштабується.

Solution shapeФорма рішення

Browser (React UI) │ JSON commands over WebRTC DataChannel ▼ UE 5.3 Runtime (single deployed app, pixel-streamed) │ downloads scene on demand ▼ HTTP scene storage (.pak per scene, versioned)
C++ · Runtimeillustrative
// One entry point for every browser message over the DataChannel
void UStreamBridge::OnDataChannelMessage(const FString& Json)
{
    FSceneCommand Cmd;
    if (!FJsonObjectConverter::JsonObjectStringToUStruct(Json, &Cmd))
        return;                              // ignore malformed input

    switch (Cmd.Type)
    {
    case ESceneCmd::LoadScene:   RequestPakMount(Cmd.SceneId);           break;
    case ESceneCmd::MoveCamera:  CameraDirector->Apply(Cmd.Camera);      break;
    case ESceneCmd::SetMaterial: Variants->Swap(Cmd.Actor, Cmd.Variant); break;
    case ESceneCmd::SaveState:   History->Snapshot(FDateTime::UtcNow());  break;
    default: break;
    }
}

The web UI owns the UX; the engine exposes a small, typed command surface.Інтерфейс володіє UX; движок надає малу типізовану поверхню команд.

Key engineering decisionsКлючові інженерні рішення

Spline network paths · POIs · dwell points Population pool MetaHuman variety · LOD instancing · animation reuse budgeted per scene Ambient scene idle · walk · linger
Ambient crowd system: NPCs follow a spline network at budgeted density, drawn from a pooled, LOD'd population instead of one-off placed actors.Фонова crowd-система: NPC рухаються мережею сплайнів з бюджетованою щільністю, з пулу населення з LOD, а не поодинокими розставленими акторами.

OutcomeРезультат

A single deployed Unreal application serves an entire catalog of client scenes; new content ships as files, with no engine-side code changes. Tagged stable v2.0, running in production. Один задеплоєний Unreal-застосунок обслуговує весь каталог клієнтських сцен; новий контент їде файлами, без змін у коді движка. Тег stable v2.0, працює в продакшні.

Product branding omitted (NDA). Architecture described from my own implementation. Назви продукту прибрані (NDA). Архітектура описана з моєї власної імплементації.

Case Study 02 · UE5 · C++ · GAS

Gameplay Systems in C++ (GAS)Геймплейні системи на C++ (GAS)

C++Gameplay Ability SystemAttribute Set Damage ExecutionDialogue & QuestsStealth Detection Enhanced InputFull-Body IK
In plain termsПростими словами

I built the core gameplay of an in-development action game: the combat and ability system in Unreal C++ (health and damage, abilities designers tune as data, working correctly in multiplayer), plus the systems around it — dialogues with cutscene cameras, a quest system with objectives and saves, and stealth detection with an on-screen meter. The game didn't ship (development stopped at the start of the full-scale war), but the engineering stands as production-grade Unreal gameplay code. Я зробив ядро геймплею екшн-гри в розробці: систему бою і здібностей на Unreal C++ (здоров’я й урон, здібності, які дизайнери крутять як дані, з коректною роботою в мультиплеєрі), плюс системи навколо — діалоги з кат-сценними камерами, квестову систему з цілями й сейвами і стелс-детекцію з метром на екрані. Гра не вийшла (розробку зупинено з початком повномасштабної війни), але інженерія — продакшн-рівень UE-геймплею.

Combat · GAS abilities as data replicated attributes Dialogue cutscene cameras per-line shot switching Quests objectives · saves announce / HUD widgets Stealth detection meter awareness states shared layer: interaction actors (doors, pickups, ladders) · footstep FX · gamepad-first UI
Four gameplay systems by one programmer, on a shared interaction layer.Чотири геймплейні системи одного програміста на спільному шарі інтеракцій.

ProblemЗадача

An in-development action game needed a combat and ability layer designers could tune without touching C++: stats and abilities as data, networked so they behave correctly in multiplayer, and responsive input driving animation. Hard-coding abilities and damage math would not scale as the game grew. Екшн-грі в розробці потрібен був шар бойовки і здібностей, який дизайнери можуть налаштовувати без C++: характеристики й здібності як дані, репліковані для коректної роботи в мультиплеєрі, і чутливий інпут, що керує анімацією. Хардкодити здібності й математику урону — не масштабується з ростом гри.

Solution shapeФорма рішення

Enhanced Input → Gameplay Ability (activate) │ ▼ Gameplay Effect → Damage Execution (attack vs defense) │ ▼ Attribute Set (replicated: Health, Attack/Defense, Damage) │ ▼ Character + Full-Body IK · montage-and-wait task
C++ · Damage Executionillustrative
// Mitigate incoming damage by the target's defense, then apply to Health
void UTBOCHDamageExecution::Execute_Implementation(
    const FGameplayEffectCustomExecutionParameters& Exec,
    FGameplayEffectCustomExecutionOutput& Out) const
{
    float Damage  = GetCaptured(Exec, DamageDef);
    float Defense = GetCaptured(Exec, DefenseDef);

    const float Final = FMath::Max(Damage - Defense, 0.f);
    Out.AddOutputModifier({ HealthProperty, EGameplayModOp::Additive, -Final });
}

Abilities and effects are data assets; the C++ execution only owns the math and the network-safe application.Здібності й ефекти — data-ассети; C++-виконання володіє лише математикою і мережево-безпечним застосуванням.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

The gameplay layer was built end to end and worked in multiplayer: the ability framework, replicated attributes, damage execution, and the character / input / animation glue — the same GAS architecture shipped games use, written by hand rather than assembled from a template. Around it, the dialogue, quest and stealth systems ran in-game with their full UI — playable content, not prototypes. Геймплейний шар збудовано від початку до кінця, з робочим мультиплеєром: фреймворк здібностей, репліковані атрибути, damage execution і зв’язка персонаж / інпут / анімація — та сама GAS-архітектура, що й у випущених іграх, написана руками, а не зібрана з шаблону. Навколо неї в грі працювали діалоги, квести і стелс із повним UI — граючий контент, не прототипи.

Case Study 03 · UE Editor Plugin · C++ / Python

One-Click Datasmith → .pak Content PipelineDatasmith → .pak пайплайн в один клік

DatasmithEditor toolingNanite Master materialsRunUATpymxs / PySide
In plain termsПростими словами

Turning an architect's raw 3D model into a game-engine-ready scene used to take 2-3 days of manual cleanup per scene. I built a near one-click pipeline — a tool inside 3ds Max plus an Unreal plugin — that does it automatically: it rebuilds the materials, optimizes the geometry, and packages the scene, unattended, in under 30 minutes. Days of work became a button. Перетворення сирої 3D-моделі архітектора на готову для рушія сцену раніше займало 2-3 дні ручної чистки на кожну сцену. Я зробив пайплайн майже в один клік — інструмент у 3ds Max плюс Unreal-плагін — який робить це автоматично: перезбирає матеріали, оптимізує геометрію й пакує сцену без нагляду менш ніж за 30 хвилин. Дні роботи стали кнопкою.

3ds Max scene raw, messy Automated pipeline clean · bake · optimize · cook one unattended run Ready scene optimized .pak
Raw model in, shippable optimized scene out — automatically.Сира модель на вході, готова оптимізована сцена на виході — автоматично.

ProblemЗадача

Artists model in 3ds Max. Turning a raw archviz scene into a shippable, optimized Unreal level used to take days of manual work per scene: import, fix pivots, dedupe meshes, rebuild materials, set up rendering, cook, package. At a weekly scene cadence this was the bottleneck of the whole platform. Артисти моделюють у 3ds Max. Перетворення сирої archviz-сцени на готовий оптимізований Unreal-рівень займало дні ручної роботи: імпорт, півоти, дедуплікація, перезбірка матеріалів, налаштування рендера, cook, пакування. За тижневого темпу сцен це було вузьким місцем усієї платформи.

Solution shapeФорма рішення

3ds Max ──(Python exporter: pymxs + PySide GUI / headless)──▶ .udatasmith cleanup · material baking · camera export .udatasmith ──(UE editor plugin, one run)──▶ cooked .pak import → dedupe meshes → center pivots → Nanite → swap to master-material instances → extract scene to Data Assets → rebuild level → RunUAT cook/package
Python · UE Editor pluginillustrative
# One stage: dedupe meshes before Nanite so instancing survives
def dedupe_static_meshes(scene):
    seen = {}
    for actor in scene.static_mesh_actors():
        key = mesh_fingerprint(actor.mesh)   # verts + tris + material set
        if key in seen:
            actor.replace_mesh(seen[key])    # reuse the canonical asset
        else:
            seen[key] = actor.mesh
            center_pivot(actor.mesh)         # normalize for instancing
    return len(seen)                       # unique meshes kept

Thousands of duplicated exports collapse to a handful of instanced assets — smaller cook, stable memory.Тисячі дубльованих експортів згортаються в кілька інстансованих ассетів — менший cook, стабільна пам’ять.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

Scene preparation went from 2-3 days of manual editor work to a largely unattended pipeline run under 30 minutes, with the packaged .pak typically shrinking to roughly half the raw export size after dedup and Nanite. Artists ship scenes without touching engine internals; engineering time goes to the platform, not per-scene fixes. Підготовка сцени скоротилася з 2-3 днів ручної роботи в редакторі до майже автономного прогону пайплайна менш ніж за 30 хвилин, а запакований .pak зазвичай стискається приблизно вдвічі відносно сирого експорту після дедуплікації й Nanite. Артисти здають сцени, не торкаючись движка; час інженерів іде на платформу, а не на разові фікси.

Product branding omitted (NDA). Architecture described from my own implementation. Назви продукту прибрані (NDA). Архітектура описана з моєї власної імплементації.

Case Study 04 · Personal R&D · UE Material Editor · HLSL

Custom HLSL Interior Mapping ShaderКастомний HLSL-шейдер Interior Mapping

HLSLCustom NodeMaterial Editor TextureCubeArrayPython tooling
In plain termsПростими словами

Studios keep asking for commercial custom-shader-code experience, not just Material Editor node graphs. So I wrote a real HLSL library implementing Interior Mapping, the technique that fakes furnished rooms behind windows without modeling a single one, and proved it compiles for real inside the engine, with real instruction counts, not just "looks right in the graph." Студії раз у раз запитують саме комерційний досвід із власним шейдерним кодом, а не тільки графи в Material Editor. Тож я написав реальну HLSL-бібліотеку, що реалізує Interior Mapping, техніку, яка імітує мебльовані кімнати за вікнами без жодного змодельованого інтер'єру, і довів, що вона реально компілюється в рушії, з реальною кількістю інструкцій, а не просто "виглядає правильно в графі".

InteriorMapping.ush ray/box in tangent space real .ush, not Custom Node body Material · Custom Node procedural · cubemap · atlas built headless via Python (MaterialEditingLibrary) Baked rooms SceneCapture → TextureCubeArray per-instance random room index verified: 156 pixel-shader instructions, 0 errors — real RHI compile, not NullRHI
A real .ush library feeding a Custom Node material, verified by an actual headless compile, not a diagram.Реальна .ush-бібліотека живить матеріал через Custom Node, перевірено справжньою headless-компіляцією, а не діаграмою.

ProblemЗадача

Several studio rejections named the same gap explicitly: commercial experience writing actual shader code (HLSL/GLSL, Custom Node internals at the engine level), not just building look-dev materials from stock nodes. The honest answer at the time would have been "touched it without a real need to." I wanted a real answer instead: a genuine technique, implemented, and provably compiling. Кілька відмов від студій прямо називали один і той самий геп: комерційний досвід написання саме шейдерного коду (HLSL/GLSL, внутрішня робота Custom Node на рівні рушія), а не лише збірка look-dev матеріалів зі стокових нод. Чесна відповідь на той момент була б "торкався, але справжньої потреби не було". Я хотів натомість справжню відповідь: реальну техніку, реалізовану і доведено робочу.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

A real, verified custom-shader technique end to end: from researching the original technique to a working material that compiles with honest, engine-reported numbers. It closes the exact gap studios named, with a concrete example instead of a qualifier. Реальна, перевірена шейдерна техніка від початку до кінця: від дослідження оригінальної техніки до робочого матеріалу, що компілюється з чесними, зі статистики рушія, цифрами. Це закриває саме той геп, який називали студії, конкретним прикладом, а не застереженням.

Case Study 05 · Houdini · VEX · Simulation

Houdini VFX & Procedural R&DHoudini VFX і процедурний R&D

HoudiniVEXPyro / Dust ProceduralSimulationHoudini Engine / HDA
In plain termsПростими словами

I keep a Houdini practice to build the two skills most archviz artists skip: believable simulation (fire, dust, destruction) and procedural generation (geometry from rules, not hand-modeling). It's the muscle that feeds real-time VFX (Niagara) and tooling in Unreal. Personal studies, not client work. Я тримаю Houdini-практику, щоб розвивати дві навички, які більшість archviz-артистів оминають: правдоподібну симуляцію (вогонь, пил, руйнування) і процедурну генерацію (геометрія з правил, а не ручним моделінгом). Це база, що живить real-time VFX (Niagara) і тулінг в Unreal. Особисті дослідження, не клієнтська робота.

Houdini · VEX procedural rules Simulation pyro · dust · RBD Unreal Niagara · Houdini Engine · HDA
A Houdini R&D practice that feeds real-time work: simulation and procedural generation into Unreal.Houdini R&D-практика, що живить real-time: симуляція і процедурка в Unreal.

ProblemЗадача

Studios hiring for real-time VFX want simulation and procedural thinking, and an archviz career gives you neither by default: client work rewards clean stills, not solvers. These studies exist to close that gap deliberately — each one picks a technique with a clear production application and works it until it's understood, not just reproduced from a tutorial. Студії, що наймають під real-time VFX, хочуть симуляцію і процедурне мислення, а archviz-кар'єра сама по собі не дає ні того, ні іншого: клієнтська робота винагороджує чисті кадри, а не солвери. Ці дослідження існують, щоб свідомо закрити цей геп — кожне бере техніку з чітким продакшн-застосуванням і працює з нею, доки вона зрозуміла, а не просто відтворена з туторіалу.

The studiesДослідження

Color Dust Explosion → pyro / dust solver, color advection, budgeted sim Creating Geometry / VEX → procedural geometry authored in VEX (points, attributes, wrangles) Differential Line Growth→ reaction/repulsion growth solver → organic patterns Shortest Path Growth → graph shortest-path as a generative growth system Night Kiev → procedural city-light network, emissive look-dev

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

A VFX and procedural capability alongside the engineering — the side that makes me useful on real-time VFX and tech-art teams, not only pipeline and runtime work. VFX- і процедурна компетенція поруч з інженерією — та сторона, що робить мене корисним у командах real-time VFX і tech-art, а не лише в пайплайні й рантаймі.

Case Study 06 · React / TypeScript · WebRTC

Web ↔ Engine: Driving Unreal from the BrowserWeb ↔ Engine: керування Unreal з браузера

ReactTypeScriptWebRTC State sync360° tours
In plain termsПростими словами

The 3D stream is just a video — a real sales website needs buttons, filters, saved views, and two people exploring together. I built that website in React/TypeScript and wired it to the Unreal stream: the browser sends actions, the engine stays the single source of truth. This is the pixel-streaming-into-a-website integration — the glue between the engine and the product. 3D-стрім — це просто відео, а справжньому сайту продажів потрібні кнопки, фільтри, збережені вигляди й спільний перегляд удвох. Я зробив цей сайт на React/TypeScript і зв’язав його з Unreal-стрімом: браузер шле дії, а движок лишається єдиним джерелом правди. Це і є інтеграція pixel streaming на сайт — зв’язка між движком і продуктом.

several viewers · one session Website · React / TS buttons · filters · saved views the product UX Unreal engine single source of truth actions (typed commands) live video + scene state
Product UX lives in the browser; the engine owns the visual state. Several people share one live session.Продуктовий UX — у браузері; движок володіє візуальним станом. Кілька людей ділять одну живу сесію.

ProblemЗадача

The pixel stream delivers pixels — but a sales tool needs real product UX on top: browsing units with filters, saving looks, sharing a session with a colleague, switching interior styles. That UX must live in the web app, while the source of visual truth stays in the engine. Pixel stream доставляє пікселі — але інструменту продажів потрібен справжній продуктовий UX: перегляд квартир з фільтрами, збереження виглядів, спільна сесія з колегою, перемикання стилів інтер’єру. Цей UX має жити у веб-застосунку, а джерело візуальної правди — в движку.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

Non-technical buyers use a photoreal UE scene like a normal website. The pattern — capabilities in the engine, product UX in the web — decoupled the two teams and their release cycles. Нетехнічні покупці користуються фотореалістичною UE-сценою як звичайним сайтом. Підхід "можливості в движку, продуктовий UX у вебі" розділив роботу команд і їхні релізні цикли.

Product branding omitted (NDA). Architecture described from my own implementation. Назви продукту прибрані (NDA). Архітектура описана з моєї власної імплементації.

Case Study 07 · UI/UX · UMG · Blueprints · Meta Quest

Technical UI/UX & Runtime UX SystemsТехнічний UI/UX і runtime UX-системи

UI/UXUMGBlueprintsPost-process Meta QuestOptimization
In plain termsПростими словами

The same 3D scenes had to work on an exhibition touchscreen, in a browser, and in a standalone VR headset. I built one UI system that adapts to each input, a runtime photo mode, and the optimization that keeps VR smooth. 20+ scenes delivered across these targets. Ті самі 3D-сцени мали працювати на виставковому тачскріні, у браузері й у автономному VR-шоломі. Я зробив одну UI-систему, що адаптується під кожен ввід, runtime фото-режим і оптимізацію, яка тримає VR плавним. 20+ сцен здано на ці платформи.

One content base 20+ scenes Touchscreen kiosk Browser stream VR · Meta Quest
One scene base adapts to touch, browser and VR, each with its own input and performance budget.Одна база сцен адаптується під тач, браузер і VR — кожен зі своїм вводом і бюджетом продуктивності.

ProblemЗадача

The same archviz content had to work in radically different contexts: a sales manager's touchscreen at an exhibition, a client's browser, and a standalone Meta Quest headset. Each context needs its own input model, UI scale and — hardest — its own performance envelope. Той самий archviz-контент мав працювати в радикально різних контекстах: тачскрін менеджера на виставці, браузер клієнта і автономний шолом Meta Quest. Кожен контекст — своя модель вводу, масштаб UI і, що найважче, свій бюджет продуктивності.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

20+ interactive scenes delivered across desktop, web-stream, touch and VR from one content base — including VR-ready builds (APK) delivered to clients. 20+ інтерактивних сцен здано на десктоп, веб-стрім, тач і VR з однієї контентної бази — включно з VR-ready білдами (APK) для клієнтів.

Product branding omitted (NDA). Architecture described from my own implementation. Назви продукту прибрані (NDA). Архітектура описана з моєї власної імплементації.

Case Study 08 · UE5 · Blueprints · Interaction

Real-Time Product Configurator — Variant & Interaction SystemReal-time конфігуратор — система варіантів і взаємодій

UE5VariantsBlueprints InteractionWeb checkout
In plain termsПростими словами

Let a buyer change materials, furniture and devices in real time and see a photoreal result, and in the commercial version drive a cart and checkout. One configuration state feeds the 3D view, the live floor plan and the price, so what you see and what you buy never disagree. Дозволяє покупцю міняти матеріали, меблі й техніку в реальному часі й бачити фотореалістичний результат, а в комерційній версії ще й керує кошиком і оплатою. Один стан конфігурації живить 3D-в’ю, живий план і ціну, тож візуал і покупка не розходяться.

Configuration state single source of truth 3D real-time view Live floor plan Pricing & checkout
One configuration state feeds the 3D view, the floor plan and checkout, so visual and transaction never disagree.Один стан конфігурації живить 3D-в’ю, план і оплату — візуал і транзакція не розходяться.

ProblemЗадача

The hard part of a configurator isn't showing one pretty option — it's the combinatorics. Hundreds of material, geometry and device combinations have to stay photoreal and performant in a single scene, and in the commercial version the price and cart must always match what's on screen. A personal take on the pattern is published on Behance. Найважче в конфігураторі — не показати один гарний варіант, а комбінаторика. Сотні комбінацій матеріалів, геометрії і техніки мають лишатись фотореалістичними й продуктивними в одній сцені, а в комерційній версії ціна і кошик мусять завжди відповідати тому, що на екрані. Особисту версію патерна опубліковано на Behance.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

A configurator pattern I've built both as a personal project and in production — the same variant/interaction/state architecture, scaled from a kitchen to a modular house with e-commerce on top. Патерн конфігуратора, який я будував і як особистий проєкт, і в продакшені — та сама архітектура варіантів/взаємодій/стану, масштабована від кухні до модульного будинку з e-commerce поверх.

Product branding omitted (NDA). Architecture described from my own implementation. Назви продукту прибрані (NDA). Архітектура описана з моєї власної імплементації.

Case Study 09 · Personal project · UE5 · OpenXR

Immersive VR Interior Tour — Any HeadsetІмерсивний VR-тур інтер’єром — під будь-який шолом

UE5OpenXRMeta Quest InteractionOptimization
In plain termsПростими словами

A VR walk-through of an interior that runs on any headset and stays comfortable for first-time users. You don't just look, you grab objects, flip lights, change the time of day. A published personal project showing my full VR loop: art, interaction and the optimization that makes it run. VR-прогулянка інтер’єром, що працює на будь-якому шоломі й лишається комфортною для новачків. Ти не просто дивишся, а береш предмети, вмикаєш світло, міняєш час доби. Опублікований особистий проєкт, що показує весь мій VR-цикл: арт, взаємодію й оптимізацію.

OpenXR one build path Meta Quest PC VR future headsets interaction grab propsswitch lightstime · weather
One OpenXR build runs on any headset; interaction, not just viewing, creates presence.Один OpenXR-білд працює на будь-якому шоломі; presence дає взаємодія, а не лише перегляд.

ProblemЗадача

Architects and developers want clients to feel a space before it's built. A video doesn't do that — presence does. The tour had to run on any VR headset, including standalone Meta Quest, and stay comfortable for people who have never worn VR before. This is a personal project, published openly on Behance. Архітектори й забудовники хочуть, щоб клієнт відчув простір до того, як його збудують. Відео цього не дає — дає presence. Тур мав працювати на будь-якому VR-шоломі, включно з автономним Meta Quest, і лишатися комфортним для людей, які вперше вдягли VR. Це особистий проєкт, опублікований відкрито на Behance.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

A published, headset-agnostic VR tour that demonstrates the full loop I bring to VR work: art, interaction design, and the optimization that makes it run on the headsets clients actually own. Опублікований VR-тур, незалежний від шолома, який показує повний цикл моєї VR-роботи: арт, дизайн взаємодій і оптимізацію, завдяки якій це працює на шоломах, які реально є в клієнтів.

Case Study 10 · UE5 · Motion · Marketing

Rendering Mobile Ad Creatives in UnrealРендеринг мобільних рекламних креативів в Unreal

UE5SequencerVertical 9:16 Houdini simPost-production
In plain termsПростими словами

Mobile-game ads need many variants, fast, and live or die in the first two seconds. I use Unreal as the ad-render pipeline: stage the action and render vertical 9:16 variants in hours instead of render-farm days. The CGI craft I built over years, pointed at a marketing KPI. Реклама мобільних ігор потребує багато варіантів швидко й живе або вмирає в перші дві секунди. Я використовую Unreal як пайплайн рендера реклами: ставлю дію й рендерю вертикальні 9:16 варіанти за години, а не дні на фермі. Роками напрацьоване CGI-ремесло, спрямоване на маркетинговий KPI.

Unreal · staged gameplay Sequencer capture 9:16 A9:16 B9:16 C variants in hours
Real-time engine as an ad-render pipeline: many vertical A/B variants in hours, not render-farm days.Real-time движок як пайплайн рендера реклами: багато вертикальних A/B-варіантів за години, а не дні.

ProblemЗадача

User-acquisition ads for mobile games live and die on the first two seconds, ship in high volume, and need many A/B variants fast. Pre-rendered CG is too slow to iterate. The answer: stage the "gameplay", render and iterate inside a real-time engine. UA-реклама мобільних ігор живе або вмирає в перші дві секунди, виходить великими обсягами і потребує швидких A/B-варіантів. Пре-рендер CG надто повільний для ітерацій. Рішення: ставити «геймплей», рендерити й ітерувати всередині real-time движка.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

A niche most UE developers don't cover: real-time engine skills applied to performance marketing. Client work, shown as craft — it widens where I'm useful, from product teams to growth teams. Ніша, яку більшість UE-розробників не закриває: навички real-time движка в performance-маркетингу. Клієнтська робота, показана як ремесло — вона розширює, де я корисний: від продуктових команд до команд росту.

Game titles and campaign details omitted (NDA). Workflow described from my own production work. Назви ігор і деталі кампаній прибрані (NDA). Процес описано з моєї власної продакшн-роботи.

Case Study 11 · Side Project · Astro / TypeScript / Cloudflare

Prismix: Shipping an AI Product Solo with an Agent WorkflowPrismix: соло-запуск AI-продукту з агентним воркфлоу

Astro 5TypeScriptCloudflare KV CI / VitestClaude Code
In plain termsПростими словами

A live web product I built, tested and launched entirely solo with an AI-agent workflow. It monitors 77 AI services and runs on cheap edge infrastructure for about $10 a year. Proof I can own a whole system end to end, and that my AI-assisted workflow scales past toy projects. Живий веб-продукт, який я збудував, протестував і запустив повністю соло з AI-агентним воркфлоу. Моніторить 77 AI-сервісів і працює на дешевій edge-інфраструктурі за ~$10/рік. Доказ, що я веду систему end-to-end і що мій AI-воркфлоу масштабується за межі іграшок.

1 engineer + AI agent Claude Code workflow Prismix · live product prismix.dev 437 pages · 90 APIs · 77 services monitored ~1,100 tests · 673 commits in 10 weeks · ~$10/yr
A production web product built, tested and shipped solo with a heavy AI-agent workflow.Продакшн веб-продукт, збудований, протестований і випущений соло з інтенсивним AI-агентним воркфлоу.

ProblemЗадача

Developers using several AI providers juggle a dozen status pages, news feeds and MCP-server lists. I wanted one hub — and, as importantly, a testbed for how far a single engineer can go with an AI-agent development workflow. Live at prismix.dev. Розробники, що працюють з кількома AI-провайдерами, мусять тримати відкритими десяток status-сторінок, стрічок новин і списків MCP-серверів. Я хотів один хаб — і, що не менш важливо, полігон: як далеко може зайти один інженер з AI-агентним воркфлоу розробки. Працює на prismix.dev.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

Live at prismix.dev: 437 pages, 90 API routes and a status monitor for 77 services, running unattended on edge infrastructure for about $10 a year — built, tested, deployed and marketed by one person. Живе на prismix.dev: 437 сторінок, 90 API-роутів і монітор статусу 77 сервісів, працює без нагляду на edge-інфраструктурі за ~$10 на рік — збудовано, протестовано, задеплоєно й просунуто однією людиною.

Case Study 12 · Side Project · Docker / LLM Infra

Time-Room: A Self-Hosted Multi-Agent AI PlatformTime-Room: власна мульти-агентна AI-платформа

Dockerllama.cpp / CUDAQdrant MCPAgent orchestrationUnreal Engine MCP
In plain termsПростими словами

Most people rent their AI. I built and run mine: a self-hosted, multi-agent LLM platform on my own GPU — a small model routes each request, a large reasoning model takes the hard ones, a vision model reads images, a coder model writes code — with vector memory and tool access wired in. Proof that "AI-accelerated workflow" isn't a buzzword for me; I've architected the infrastructure myself. Більшість людей орендують свій AI. Я збудував і тримаю свій: власну мульти-агентну LLM-платформу на своєму GPU — маленька модель маршрутизує кожен запит, велика reasoning-модель бере складні задачі, vision-модель читає зображення, coder-модель пише код — з векторною пам'яттю і доступом до інструментів. Доказ, що "AI-прискорений воркфлоу" для мене не баззворд — я сам спроєктував цю інфраструктуру.

Telegram / CLI entry point Tiered model router router → reasoner → vision → coder llama.cpp / CUDA · Docker Memory · tools Qdrant · MCP
One entry point, a role-tiered model stack, and persistent memory/tools behind it.Одна точка входу, рольовий стек моделей і постійні памʼять/інструменти за ним.

ProblemЗадача

Running specialized AI agents reliably isn't a prompt-engineering problem, it's a systems one: cost-tiered routing between models of different size and skill, session lifecycle, persistent memory, and safe tool access. I wanted to prove I could own that stack end to end, on my own hardware, not just consume someone else's hosted one. Надійно запускати спеціалізованих AI-агентів — це не задача промпт-інженерії, а системна: маршрутизація за вартістю між моделями різних розмірів і спеціалізацій, життєвий цикл сесій, постійна пам'ять і безпечний доступ до інструментів. Я хотів довести, що можу вести цей стек end-to-end, на власному залізі, а не просто споживати чийсь хостинговий.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

A working, self-hosted alternative to a rented multi-agent platform, running on my own GPU. The same instinct I bring to automating a client's pipeline, pointed at my own infrastructure. Personal project; source private. Робоча власна альтернатива орендованій мульти-агентній платформі, на моєму власному GPU. Той самий інстинкт, що я приношу в автоматизацію клієнтського пайплайна, спрямований на власну інфраструктуру. Особистий проєкт, джерело приватне.

Case Study 13 · Architecture over time

From a Template to a Typed C++ PlatformВід шаблону до типізованої C++ платформи

IterationC++ migrationWorld Partition Architecture
In plain termsПростими словами

Big products aren't designed perfectly on day one, they're grown. I carried an archviz platform from a bought marketplace template to a maintainable, typed Unreal C++ system serving hundreds of scenes, without a risky all-at-once rewrite. The hard part isn't building a system, it's evolving a live one without breaking it. Великі продукти не проєктуються ідеально з першого дня, вони виростають. Я провів archviz-платформу від купленого маркетплейс-шаблону до підтримуваної типізованої Unreal C++ системи на сотні сцен, без ризикованого переписування «за один раз». Найважче — не збудувати систему, а розвивати живу, не зламавши її.

Marketplace template ship first, prove it Reflection bridge stringly-typed FE↔UE Typed C++ platform + World Partition · 100s of scenes grown over time, without a risky big-bang rewrite
Evolving a live product from a template to a typed platform, without breaking it.Еволюція живого продукту від шаблону до типізованої платформи, не зламавши його.

ProblemЗадача

The archviz platform started the way real products often do: on a marketplace ArchViz template with a thin reflection bridge to the web — fast to ship, fragile to grow. It then had to become a maintainable, typed C++ system serving hundreds of scenes without collapsing under its own weight. Платформа archviz почалась так, як часто починаються реальні продукти: з маркетплейс-шаблону ArchViz з тонким reflection-мостом до вебу — швидко для запуску, крихко для росту. Далі вона мала стати підтримуваною типізованою C++ системою на сотні сцен, не завалившись під власною вагою.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

The part of engineering that's hard to fake: not just building a system, but evolving a live one without breaking it. I've carried a product from a template to a typed platform — and I know which refactors are worth the risk and which aren't. Та частина інженерії, яку важко зімітувати: не просто збудувати систему, а розвивати живу, не зламавши її. Я провів продукт від шаблону до типізованої платформи — і знаю, які рефактори варті ризику, а які ні.

Case Study 14 · Personal Infrastructure · Perforce · UE Source

Studio-Grade Infrastructure for Solo UE DevelopmentІнфраструктура студійного рівня для соло UE-розробки

PerforceUE source buildsHeadless tooling Reproducibility
In plain termsПростими словами

Working solo, I run the setup a studio would: versioned Perforce for heavy binary content, custom engine builds from source when needed, and headless automation. It's the reproducibility and discipline I bring to a team from day one. Працюючи соло, я тримаю студійний сетап: версійований Perforce для важкого бінарного контенту, власні збірки движка з сирців за потреби і headless-автоматизацію. Це відтворюваність і дисципліна, яку я приношу в команду з першого дня.

Self-hosted Perforce · versioned binaries Custom UE builds from source Headless tooling · build machine Documented, reproducible setup
One person operating with a studio's reproducibility: versioning, engine source, automation, documentation.Одна людина з відтворюваністю студії: версіювання, сирці движка, автоматизація, документація.

ProblemЗадача

Unreal projects are heavy: tens of gigabytes of binary content that Git handles poorly, engine behavior you sometimes need to change at the source level, and repetitive export/cook/package work that eats evenings. Working solo is not a reason to work without infrastructure — it's a reason to automate it. Unreal-проєкти важкі: десятки гігабайтів бінарного контенту, з яким Git справляється погано; поведінка движка, яку іноді треба міняти на рівні сирців; повторювана робота з експорту/куку/пакування, що з’їдає вечори. Працювати соло — не привід працювати без інфраструктури, це привід її автоматизувати.

Key engineering decisionsКлючові інженерні рішення

OutcomeРезультат

One person operating with a studio's reproducibility: versioned binaries, rebuildable engine, automated pipelines. Joining an existing team's infrastructure is a downhill move, not a learning curve. Одна людина працює з відтворюваністю студії: версійовані бінарники, движок, який можна перезібрати, автоматизовані пайплайни. Вхід в інфраструктуру наявної команди для мене спуск, а не крива навчання.