Ниже — компактный, но полный опросник тем для 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 и похожие