Личные проекты Personal Projects
Too Late for Valhalla
Ключевая задача: Core Task: Создать аудио-центричную архитектуру, где музыкальный трек в FMOD является "дирижером", управляющим геймплеем, генерацией уровней, шейдерами и UI. To create an audio-centric architecture where the FMOD music track acts as a "conductor," controlling gameplay, level generation, shaders, and UI.

1. Аудио-реактивность на DSP 1. DSP-Based Audio Reactivity
Система анализа звука в реальном времени через DSP с FFT. "Энергия" музыки управляет Post-FX, тряской камеры и параметрами шейдеров. A real-time audio analysis system using DSP with FFT. The music's "energy" controls Post-FX, camera shake, and shader parameters.
2. Процедурная анимация караоке 2. Procedural Karaoke Animation
Полноценный аниматор текста, управляемый из FMOD через timeline-маркеры. Анимирует десятки параметров материала (`AnimationCurve`). A full-fledged text animator controlled by FMOD via timeline markers, animating dozens of material parameters with `AnimationCurve`.
3. Динамическая генерация уровней 3. Dynamic Level Generation
Бесконечный раннер, где структура и сложность уровня полностью синхронизированы с FMOD-маркерами в музыкальной композиции. An endless runner where the level structure and difficulty are fully synchronized with FMOD markers in the music track.
4. Комплексный процедурный шейдер воды 4. Complex Procedural Water Shader
Шейдер воды, управляемый через систему состояний. Плавно переключается между состояниями ("меню", "геймплей"), меняя десятки параметров. A state-driven water shader that smoothly transitions between states ("menu," "gameplay"), changing dozens of parameters.
5. Кастомный Post-Processing в URP 5. Custom Post-Processing in URP
Собственный `ScriptableRendererFeature`, который инъецирует полноэкранный шейдер в URP. Параметры контролируются состоянием игрока, событиями и музыкой. A custom `ScriptableRendererFeature` that injects a fullscreen shader into URP. Parameters are controlled by player state, events, and music.
6. Глубокая интеграция камеры и UI 6. Deep Camera & UI Integration
Живая, отзывчивая система обратной связи. Камера использует стейт-машину Cinemachine и `Impulse`, а UI — объект с кастомным шейдером. A living, responsive feedback system. The camera uses a Cinemachine state machine and `Impulse`, while the UI is an object with a custom shader.
7. Динамический саундтрек и процедурная генерация SFX 7. Dynamic Soundtrack & Procedural SFX
Продвинутая звуковая система. В реальном времени управляет количеством музыкальных слоев. SFX урона и подбора еды генерируются процедурно через фильтры и наложение слоев, что гарантирует уникальность каждого звука. An advanced sound system. It controls the number of music layers in real-time. Damage and item pickup SFX are generated procedurally via filters and layer blending, ensuring each sound is unique.
Шейдеры Shaders






HOLODOG
Ключевая задача: Core Task: Создать полностью модульную, управляемую физикой систему процедурной анимации для 2D-меха, позволяющую "собирать" персонажа из независимых частей по рецепту. To create a fully modular, physics-driven procedural animation system for a 2D mech, allowing character assembly from independent parts based on a recipe.

1. Модульная процедурная анимация 1. Modular Procedural Animation
Создана система, позволяющая собирать мех "по рецепту". Ядро `ChassisController` через события управляет модулями: процедурной локомоцией, кастомным IK для рук, физикой отдачи и `JiggleBone`. A system for assembling a mech "by recipe". The `ChassisController` core manages modules via events: procedural locomotion, custom arm IK, physics-based kickback, and `JiggleBone`.
2. Продвинутый 2D-шейдер освещения 2. Advanced 2D Lighting Shader
Разработан шейдер, формирующий собственную систему освещения, смешивая до двух источников света через режимы Overlay, Hard Light и Burn для создания сложного стилизованного 2D-освещения. A custom shader that forms its own lighting system, blending up to two light sources using Overlay, Hard Light, and Burn modes to create complex, stylized 2D lighting.
3. Эффективная кастомизация 3. Efficient Customization
Реализована система `MaterialOverrideController`, позволяющая на лету через `MaterialPropertyBlock` изменять параметры шейдера для отдельных частей, не создавая новых экземпляров материала. Implemented `MaterialOverrideController` to change shader parameters on-the-fly for individual parts via `MaterialPropertyBlock`, avoiding new material instances.
4. Динамический шейдерный щит 4. Dynamic Shader Shield
Эффект энергетического щита с имитацией объема на 2D-спрайте. Шейдер анализирует карту глубины и процедурно рассчитывает нормали, позволяя щиту корректно реагировать на свет. An energy shield effect that fakes volume on a 2D sprite. The shader analyzes the depth map and procedurally calculates normals, allowing it to react correctly to light.
5. Архитектура, управляемая событиями 5. Event-Driven Architecture
В основе проекта лежит гибкая архитектура, где компоненты общаются через систему событий (`Action`). Это обеспечивает низкую связанность кода и упрощает добавление новых механик. The project is based on a flexible architecture where components communicate via an event system (`Action`), ensuring low code coupling and easy addition of new mechanics.
6. Физически-корректное взаимодействие 6. Physics-Based Interaction
Особое внимание уделено ощущению "веса". Движение управляется через `Rigidbody2D` с инерцией, а оружие генерирует физический импульс (`blowbackForce`), который толкает персонажа назад. Special attention is paid to the feeling of "weight". Movement is controlled via `Rigidbody2D` with inertia, and weapons generate a physical impulse (`blowbackForce`) that pushes the character back.
Шейдеры Shaders


Галерея Gallery






























Контрактная работа Contract Work

Blast Bit ZeroBlast Bit Zero
Разработал бесконечный shoot 'em up. Ключевой особенностью проекта является кастомная система на базе Scriptable Objects, которая значительно упрощает и ускоряет создание новых волн противников и боссов.Developed an endless shoot 'em up. The project's core feature is a custom system based on Scriptable Objects, designed to significantly simplify and accelerate the creation of new enemy waves and bosses.

Temple of PatienceTemple of Patience
Создал сингл-скрин платформер. Основной задачей была разработка архитектуры на основе тайловых карт и префабов, позволяющей собирать новые уровни прямо в редакторе Unity за считанные минуты.Created a single-screen platformer. The main goal was to develop an architecture using tilemaps and nested prefabs, enabling the assembly of new levels directly in the Unity editor in minutes.

Argon FlightArgon Flight
Разработал короткий рельсовый шутер, стилистически вдохновлённый техно-демо 90-х. В основе проекта лежит система событий, привязанных к таймлайну, которая управляет всеми игровыми моментами.Developed a short on-rails shooter, stylistically inspired by 90s tech demos. The project is built upon a timeline-based event system that drives all in-game moments.

Don't press X to free the pirateDon't press X to free the pirate
Создал сатирическую мета-игру, построенную вокруг простой концепции: не нажимать кнопку Х. Основной технической задачей стала разработка гибкой системы ветвящихся диалогов на Scriptable Objects, включающей озвучку каждого печатаемого символа.Created a satirical meta-game built around a simple concept: don't press X. The main technical challenge was developing a flexible, branching dialogue system using Scriptable Objects, which included per-character audio feedback as text is typed.

Рендер-фича: Dissolve EffectRender Feature: Dissolve Effect
Разработал кастомную рендер-фичу (URP Render Feature) для создания эффекта, имитирующего датамошинг, который "распыляет" пиксели предыдущего кадра на текущий. Дополнительно реализовал ряд других шейдерных эффектов.Developed a custom URP Render Feature to create a datamoshing-inspired effect that "atomizes" pixels from the previous frame onto the current one. Additionally implemented several other shader effects.

Эффекты для мобильной игрыEffects for a Mobile Game
Разработал серию эффектов частиц, оптимизированных для работы без VFX Graph. Управление параметрами Shuriken реализовано через передачу данных в кастомных UV-каналах для высокой производительности.Developed a series of particle effects optimized to run without VFX Graph. Instead, Shuriken parameters are controlled by passing data through custom UV channels, ensuring high performance.

Разработка фичей для VRVR Feature Development
Реализовал комплекс фичей для VR-проекта: высокооптимизированные шейдеры, кастомную физическую систему для интерактивных объектов (двери, ящики) и ивентовую систему SFX на Scriptable Objects.Implemented a suite of features for a VR project: highly-optimized shaders, a custom physics-based interaction system for objects like doors and drawers, and an event-driven SFX management system using Scriptable Objects.

Настраиваемый взрыв (VFX Graph)Configurable Explosion (VFX Graph)
Создал конфигурируемый эффект взрыва при помощи VFX Graph как гибкий ассет с множеством вынесенных параметров (цвет, размер, интенсивность) для легкой кастомизации.Created a configurable explosion effect using VFX Graph, designed as a flexible asset with numerous exposed parameters (e.g., color, size, intensity) for easy customization.
Пока вы думаете... While you're thinking...
Нажмите Пробел или тапните, чтобы прыгнуть Press Space or tap to jump