Case StudiesКейси

Ten systems I designed and built, explained at the architecture level. Client names and product branding are omitted under NDA — the engineering is described as-is. Десять систем, які я спроєктував і збудував, — на рівні архітектури. Назви клієнтів і продуктів прибрані через NDA, інженерія описана як є.

Case Study 01 · UE 5.3 · C++

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

C++Pixel StreamingWebRTC DataChannel .pak mountingHTTP caching

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)

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

OutcomeРезультат

A single deployed Unreal application serves an entire catalog of client scenes; content updates require zero engineering involvement. 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 · UE Editor Plugin · C++ / Python

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

DatasmithEditor toolingNanite Master materialsRunUATpymxs / PySide

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

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

OutcomeРезультат

Scene preparation went from days of manual editor work to a largely unattended pipeline run. Artists ship scenes without touching engine internals; engineering time goes to the platform, not per-scene fixes. Підготовка сцени скоротилася з днів ручної роботи в редакторі до майже автономного прогону пайплайна. Артисти здають сцени, не торкаючись движка; час інженерів іде на платформу, а не на разові фікси.

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

Case Study 03 · React / TypeScript · WebRTC

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

ReactTypeScriptWebRTC State sync360° tours

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 04 · UMG · Blueprints · Meta Quest

Runtime UX Systems & VR OptimizationRuntime UX-системи та VR-оптимізація

UMGBlueprintsPost-process Meta QuestOptimization

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 05 · Side Project · Astro / TypeScript / Cloudflare

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

Astro 5TypeScriptCloudflare KV CI / VitestClaude Code

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Результат

A production web product built, tested, deployed and marketed by one person — proof that I can own systems end-to-end and that my AI-assisted workflow scales beyond toy projects. Продакшн веб-продукт, збудований, протестований, задеплоєний і просунутий на ринок однією людиною — доказ, що я веду системи end-to-end і що мій AI-воркфлоу масштабується за межі іграшкових проєктів.

Case Study 06 · Personal project · UE5 · OpenXR

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

UE5OpenXRMeta Quest InteractionOptimization

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 where clients actually are. Опублікований VR-тур, незалежний від шолома, який показує повний цикл моєї VR-роботи: арт, дизайн взаємодій і оптимізацію, завдяки якій це працює там, де реально є клієнти.

Case Study 07 · Personal Infrastructure · Perforce · UE Source

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

PerforceUE source buildsHeadless tooling AI workflow

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. This is the discipline I bring to a team from day one. Одна людина працює з відтворюваністю студії: версійовані бінарники, движок, який можна перезібрати, автоматизовані пайплайни. Саме цю дисципліну я приношу в команду з першого дня.

Case Study 08 · UE5 · Blueprints · Interaction

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

UE5VariantsBlueprints InteractionWeb checkout

ProblemЗадача

A configurator has to let a buyer change materials, geometry and devices in real time and see an accurate, photoreal result — while the same scene stays performant and, in the commercial version, drives a cart and checkout. A personal take on this is published on Behance. Конфігуратор має дозволяти покупцю змінювати матеріали, геометрію і техніку в реальному часі та бачити точний фотореалістичний результат — при цьому сцена лишається продуктивною, а в комерційній версії ще й керує кошиком і оплатою. Особисту версію опубліковано на Behance.

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

  • A variant system, not duplicated scenes. Materials and geometry are swappable options driven by data, so one scene expresses hundreds of combinations without re-authoring — and adding a new finish is a data change, not a new level.
  • Система варіантів замість дубльованих сцен. Матеріали й геометрія — це змінні опції, керовані даними, тож одна сцена виражає сотні комбінацій без переробки, а нове оздоблення — це зміна даних, а не новий рівень.
  • Interactive devices as reusable components: lights, TV and appliances toggle through a shared interaction interface; time-of-day switching re-lights the space live.
  • Інтерактивні пристрої як перевикористовувані компоненти: світло, ТВ і техніка вмикаються через спільний інтерфейс взаємодії; перемикання часу доби переосвітлює простір наживо.
  • Configuration state is the single source of truth — it feeds the 3D view, the live floor plan and (commercially) pricing and checkout, so the visual and the transaction never disagree.
  • Стан конфігурації — єдине джерело правди — він живить 3D-в’ю, живе планування і (комерційно) ціну та оплату, тож візуал і транзакція ніколи не розходяться.

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 поверх.

Case Study 09 · UE5 · Motion · Marketing

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

UE5SequencerVertical 9:16 Houdini simPost-production

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Ключові інженерні рішення

  • Unreal as the ad-render pipeline: staged gameplay beats, Sequencer camera and event tracks, and fast in-engine capture — new creative variants in hours, not render-farm days.
  • Unreal як пайплайн рендера реклами: поставлені геймплейні біти, камера й треки подій у Sequencer і швидке захоплення в движку — нові варіанти креативів за години, а не дні на рендер-фермі.
  • Vertical-first framing (9:16) with on-screen guidance overlays tuned to the hook, plus simulation work (a Houdini bubble/particle sim) dropped in where a creative needs a "wow" beat.
  • Вертикальний кадр (9:16) з екранними підказками під хук, плюс симуляція (Houdini-бульбашки/частинки) там, де креативу потрібен «вау»-момент.
  • Motion-design finish in post — the CGI background I'd built for years now feeds a marketing funnel: the same craft, a different KPI (install rate instead of a beauty shot).
  • Моушн-фініш у пості — CGI-бекграунд, який я напрацьовував роками, тепер живить маркетингову воронку: те саме ремесло, інший KPI (install rate замість красивого кадру).

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-маркетингу. Клієнтська робота, показана як ремесло — вона розширює, де я корисний: від продуктових команд до команд росту.

Case Study 10 · Architecture over time

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

IterationC++ migrationWorld Partition Architecture

ProblemЗадача

Big real-time products aren't designed perfectly on day one — they're grown. The archviz platform started on a marketplace ArchViz template with a thin reflection bridge to the web, then had to become a maintainable, typed C++ system serving hundreds of scenes without collapsing under its own weight. Великі real-time продукти не проєктуються ідеально з першого дня — вони виростають. Платформа archviz почалася з маркетплейс-шаблону ArchViz з тонким reflection-мостом до вебу, а далі мала стати підтримуваною типізованою C++ системою на сотні сцен, не завалившись під власною вагою.

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

  • Ship first on a template, then earn the rewrite. The first iteration proved the product on a stock base; only once the shape was clear did it get a typed C++ framework — the legacy version kept in the repo as reference, not deleted in a risky big-bang.
  • Спочатку релізимо на шаблоні, потім заслуговуємо переписування. Перша ітерація довела продукт на стоковій базі; лише коли форма стала зрозумілою, з’явився типізований C++ фреймворк — легасі-версія лишилась у репо як довідка, а не видалена ризикованим big-bang.
  • Reflection bridge → typed contract. The fragile stringly-typed FE↔UE bridge became a typed command protocol; the same move that made the code safe made the frontend and engine changeable in one commit.
  • Reflection-міст → типізований контракт. Крихкий stringly-typed міст FE↔UE став типізованим протоколом команд; той самий крок, що зробив код безпечним, зробив фронтенд і движок змінюваними одним комітом.
  • World Partition to break the scale ceiling — moving from monolithic levels to streamed cells is what let a single app hold hundreds of scenes with flat memory.
  • World Partition, щоб зняти стелю масштабу — перехід від монолітних рівнів до стрімлених комірок — це те, що дозволило одному застосунку тримати сотні сцен зі стабільною пам’яттю.

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. Та частина інженерії, яку важко зімітувати: не просто збудувати систему, а розвивати живу, не зламавши її. Я провів продукт від шаблону до типізованої платформи — і знаю, які рефактори варті ризику, а які ні.