Ниже — компактный, но полный опросник тем для Unity-разработчика: от базы CS до сугубо Unity.
Формат: для каждой темы поставьте оценку 0–5 (0 — не знаю, 5 — отлично знаю).
### Как заполнять
- 0: впервые слышу
- 1: базовое представление
- 2: делал(а) под руководством
- 3: уверенно применяю в типовых задачах
- 4: глубоко понимаю, оптимизирую
- 5: эксперт, обучаю других, решаю нетиповые кейсы
---
# База Computer Science
## Алгоритмы и структуры данных
- Сложность алгоритмов, O-нотация (Big-O)
- Array, list, linked list
- Stack (как структура)
- Queue, Deque
- Hash table (хеш-таблица)
- Деревья (BST, AVL, Red-Black), B-Tree
- Binary heap, d-heap
- Графы и обходы (BFS, DFS), представления (adjacency list/matrix)
- Сортировки (Quicksort, Mergesort, Heapsort), стабильность (stability)
- Поиск кратчайшего пути (Dijkstra, A*, эвристики)
## Архитектура компьютера и память
- Stack/heap (как память процесса)
- Иерархия кэшей (L1/L2/L3 cache)
- Локальность данных (data locality)
- Кэш-эффективность доступа (cache-friendliness, prefetch/stride)
- Выравнивание и паддинги (alignment, padding), AoS vs SoA layout
- SIMD/векторизация
- Аллокаторы и пулы (allocators, pool/arena, фрагментация)
## Параллелизм и потоки
- Модель памяти (memory model) и атомарность: happens-before, reordering, memory barriers, SC / AR / relaxed, compare-and-swap (CAS).
- Потоки и задачи, пул потоков
- Синхронизация: mutex/semaphore/monitor/lock, атомики (Interlocked)
- Гонки данных, deadlock, livelock
- Lock-free/wait-free алгоритмы и структуры (CAS, ring buffer)
- Параллельные алгоритмы (map/reduce/partitioning, work stealing)
- False sharing, cache lines
## Сети и протоколы
- TCP vs UDP (надёжность/порядок/задержка)
- Сокеты (sockets): blocking, non-blocking, async I/O
- HTTP/1.1–HTTP/2–HTTP/3 и WebSocket
- NAT-обход: STUN/TURN/ICE
- Базовые метрики: MTU, packet loss, jitter, QoS
## Математика для игр
- Вектора
- Матрицы
- Кватернионы
- Матрицы 4×4 преобразований: world/local/view/projection
- Геометрия: плоскости/пересечения, AABB/OBB
- Тригонометрия (sin/cos/tan), углы/радианы
- Интерполяции (lerp/slerp/smoothstep, easing)
- Вероятность/статистика (распределения, дисперсия, RNG)
- Численные методы: интегрирование ОДУ, устойчивость шага
- Плавающая точка (floating-point, IEEE-754, денормалы, накопление ошибок)
## Физика (общая)
- Кинематика/динамика
- Интеграторы: Explicit Euler, Semi-Implicit(Symplectic), RK2/RK4
- Столкновения: broad-phase, narrow-phase
- Непрерывная детекция (CCD)
- Контакты/трение/упругость (friction/restitution), решатели ограничений (constraint solvers)
---
# Язык C# и .NET
## Основы и продвинутое C\#
- Типы: значимые/ссылочные, `class`/`struct`/`record`, nullable reference types
- Обобщения (generics): `where`-ограничения, ковариантность/контравариантность
- Коллекции .NET: `List<T>`/`Dictionary<TKey,TValue>`/`HashSet<T>`/`Queue<T>`/`Stack<T>`, `Concurrent*`, `Immutable*`
- LINQ
- Исключения (exceptions)
- Атрибуты и рефлексия
## Память и производительность
- Управление аллокациями и GC (garbage collector): поколения, LOH/POH, режимы (Server/Workstation), давление на GC
- Пулы (pools): `ArrayPool<T>`/`ObjectPool<T>`/`MemoryPool<T>`, аренда/возврат, утечки
- Низкоуровневая память: `Span<T>`/`ReadOnlySpan<T>`/`Memory<T>`, `stackalloc`, slicing, `ReadOnlySequence<T>`
- Модификаторы параметров: `in`, `ref`, `out`
- Структуры: `struct`, `readonly struct`, `readonly ref struct`
- Boxing/unboxing: распознавание неявных упаковок, влияние на аллокации и виртуальные вызовы
- Unsafe/указатели: `unsafe`, `fixed`/pinning, blittable-типы, marshalling (interop)
- Диагностика производительности: BenchmarkDotNet, EventPipe/ETW, `dotnet-trace`/`dotnet-counters`, PerfView/VS Profiler
## Асинхронность и многопоточность
- `async`/`await` и `SynchronizationContext`: deadlock-паттерны, `ConfigureAwait`, CancellationToken
- Модель задач: `Task` vs `ValueTask`, правила использования `ValueTask`, ThreadPool/`TaskScheduler`
- Примитивы синхронизации: `lock`/`Monitor`, `Interlocked`, `SemaphoreSlim`, `ReaderWriterLockSlim`, спинлоки (spinlocks)
- Паттерны конкурентности: `System.Threading.Channels`, `System.IO.Pipelines`, конкурентные коллекции, backpressure
- Memory model: `volatile`, барьеры, гонки данных
## Ввод-вывод и сериализация
- Потоки: `FileStream`/`MemoryStream`/`BufferedStream`, async I/O, `MemoryMappedFile`, `PipeReader`/`PipeWriter`
- JSON (System.Text.Json \/ Newtonsoft.Json)
- Бинарные форматы/сжатие: `BinaryWriter/Reader`, protobuf/MessagePack/MemoryPack, сжатие (GZip/Brotli), endianness/encoding
## Тестирование и качество
- Unit/Integration/PlayMode tests
- Моки и DI (dependency injection): Сквозная конфигурация, жизненные циклы
- Статический анализ/анализаторы: .NET analyzers (CA*), StyleCop, Roslyn-анализаторы, nullable-строгий режим, TreatWarningsAsErrors
- Отладчик Rider/VS: attach к процессу, пошаговая отладка (step over/into/out), breakpoints (условные/по счётчику), logpoints
---
# Архитектура и геймдев-практики
- SOLID/GRASP
- Паттерны GoF
- Событийная архитектура (event-driven)
- Реактивный подход (reactive)
- Состояния/машины состояний (FSM/HFSM)
- DDD, модульные границы
- Data-Oriented Design (AoS vs SoA)
- ECS (Entity Component System)
- Собственные подсистемы движка (custom engine): физика, поиск пути, etc
- Engine-agnostic: Core↔Unity
---
# Unity — основы движка
## База Unity
- GameObject/Component и жизненный цикл
- Prefab/Variant, Prefab Overrides
- Сцены, аддитивная загрузка
- Теги/слои (tags/layers) и маски (layer masks)
- Время (`Time.deltaTime`, `fixedDeltaTime`, `timeScale`)
- Сериализация Unity (`[SerializeField]`, `SerializeReference`, ограничения Unity-сериализатора)
- ScriptableObject, asset-based архитектура
- Coroutines/StartCoroutine
- События: C# `event` vs `UnityEvent`
- Gizmos/Handles (визуализация в редакторе)
## Редактор и пайплайн
- Editor scripting: `CustomInspector`, `PropertyDrawer`, `EditorWindow`, `MenuItem`
- UI Toolkit в редакторе (UXML/USS, `EditorWindow`, data binding)
- `AssetDatabase`, импорт/реимпорт (reimport), GUID/мета-файлы
- BuildPipeline, скриптуемые сборки
## Управление ресурсами
- Addressables/AssetBundles
- Импорт ассетов (мэш/текстуры/аудио)
- Форматы сжатия (ASTC/BC/ETC)
- Streaming, On-Demand ресурсы
- Open-world: стриминг мира (world streaming), чанки (chunks), бесшовные переходы
---
# Графика и рендеринг
- SRP (Scriptable Render Pipeline)
- URP
- Материалы/шейдеры (Shader Graph/HLSL)
- Освещение (baked/mixed/realtime)
- Lightmapping, Light Probes, Reflection Probes
- Post-Processing
- Камеры, слои и culling (frustum/occlusion)
- LOD/импостеры
- Батчинг/инстансинг (batching/instancing)
- GPU-профилинг и «узкие места»: CPU→GPU sync, overdraw, tile-based GPU (mobile), shader variants
- VFX Graph, частицы (Shuriken)
---
# Анимация и таймлайн
- Animator Controller/State Machine
- Blend Trees/Transitions
- Root Motion/Retargeting
- Animation Rigging/IK
- Timeline/Playable API
- Constraints (Aim/Parent/etc.)
---
# Аудио
- AudioSource/AudioMixer (группы/эффекты)
- Пространственный звук (spatialization)
- Импорт/сжатие аудио
- Оптимизация аудио (стриминг/память)
---
# UI
- UI Toolkit (USS/UXML/Events)
- UGUI/Unity UI (Canvas/RectTransform)
- IMGUI
- World-Space UI/экранные координаты
- События и фокус (EventSystem)
- Модель событий (Event Dispatcher)
- Текст/шрифты (TextCore/SDF, dynamic fonts, fallback)
- Производительность UI (батчинг/перерисовка, dirty flags, atlases)
---
# Ввод и устройства
- Новый Input System (actions/bindings, control schemes)
- Старый Input (Input.\*)
- Сенсоры/геймпады/хаптика
- Кроссплатформенный маппинг
---
# Сеть и мультиплеер (Unity)
- Транспорт/топологии (client-server/P2P)
- Netcode for GameObjects/Mirror/FishNet
- RPC/NetworkVariable/сериализация
- Авторитет сервера (server authority)
- Предсказание/восстановление (prediction/reconciliation)
- Snapshot/rollback/lag compensation
- Interest Management/area of interest
- Matchmaking/Relay/Services
- Античит/валидация
---
# Данные, конфиги и сохранения
- Версионирование сохранений (migrations, schema evolution)
- Шифрование/целостность (encryption)
- Локализация (Localization)
- Табличные данные (Google Sheets/CSV)
---
# Платформы и сборки
- Mono vs IL2CPP/AOT
- iOS/Android особенности (Gradle/Xcode)
- Консоли / Windows / macOS / Linux — различия
- Управление бюджетами памяти (memory budgets) в мобильных играх
- Настройки качества/рендера по платформам
- Нативные плагины (C/C++/Swift/Java, marshalling)
- XR (AR/VR, OpenXR)
---
# Производительность и профилирование
- CPU профайлинг (Timeline/Markers, Profiler)
- GPU профайлинг (Frame Debugger)
- Память (managed/unmanaged), утечки/retained refs, Memory Profiler
- Снижение GC (alloc-free, pooling)
- Jobs/Burst (C# Jobs, Burst)
- RenderDoc
- Android GPU Inspector (AGI)
- Проектирование высоконагруженных игр (high-load): CPU/GPU бюджеты, фрейм-тайм, узкие места
- Создание бенчмарка для CPU
- Создание бенчмарка для GPU
- Создание бенчмарка для RAM
- Создание бенчмарка для IO
---
# Инструменты и процесс разработки
- Git
- Git LFS
- Unity Version Control
- Подходы к организации git-веток (Branching)
- CI/CD
- Кодстайл/анализаторы/PR-ревью
- UPM (Unity Package Manager)
- Документация/ADR/диаграммы
- Создание плагинов для Rider IDE
- С++
- Написание собственного кодогенератора
- Source Generators, Roslyn
---
# Продукт, аналитика и операции
- Аналитика (events/funnels)
- Экономика игры, баланс
- Монетизация (IAP/Ads)
- Телеметрия/логирование/сбои
- GDPR/CCPA/конфиденциальность
- LiveOps/обновления/совместимость
- A/B-тесты/эксперименты
- Жанровый опыт: RTS/городостроительные симуляторы (city-builder)/Tycoon и похожие