Spiiin's blog

The Abstraction Layers of Game Developer Skills

Скиллы программиста (разработчика игр) по уровню абстракции, снизу вверх

1. Архитектура компьютера#

Устройство CPU/GPU/Память/Кеши/Network/IO
Intel® 64 and IA-32 Architectures Software Developer’s Manual (ISA)
System V AMD64 ABI
What every programmer should know about memory
The microarchitecture of Intel, AMD and VIA CPUs (Agner Fog)
Modern X86 Assembly Language Programming
A trip through the Graphics Pipeline 2011

2. Операционные системы#

Процессы, IPC, потоки, память, файловая система, сокеты, файлы, права, исполнимые файлы
Modern Operating Systems
Внутреннее устройство Windows (Русинович)
Linux system programming
Системное программирование. Лаборатория Tarantool

Администрирование

3. Устройство языков программирования#

Компиляция, интерпретация, виртуальные машины, байт/intermediate-код, техники оптимизации, инфраструктура llvm
Compilers: Principles, Techniques, and Tools
My First Language Frontend with LLVM Tutorial
Crafting Interpreters
What Every C Programmer Should Know About Undefined Behavior
C++ programmer’s guide to undefined behavior

Типизация, абстракции данных и функций, энергичные/ленивые вычисления
Elements of programming
Structure and Interpretation of Computer Programs

Декомпиляция C++
Optimizing software in C++: An optimization guide (Agner Fog)
Itanium C++ ABI
Compiler explorer

Уникальные свойства языков программирования
Mindstorms (Seymour Papert)
Семантические процессы в C++
Память как концепция в гетерогенных системах
Bicameral, Not Homoiconic
Vectorized Interpreters
Learnable Programming
What next
Ideas for a Programming Language

4. Использование языков программирования#

Синтаксис, идиомы, семантические процессы, стандартная библиотека, работа с памятью, метапрограммирование
The Definitive C++ Book Guide and List
Boost

Общие практики
Совершенный код
Приемы объектно-ориентированного проектирования. Паттерны проектирования

Документация/стандарт, best practices
Working Draft Programming Languages — C++
Магистерский курс C++ МФТИ

Other languages
The C programming language
Expert C Programming
CLR via C#
Leaving Rust gamedev after 3 years
The Next Mainstream Programming Language : A Game Developer’s Perspective

5. Environment и тулзы вокруг компилятора#

Модули/пакеты, опции компилятора, системы сборки, тесты, документация, отладчики, линтеры, анализаторы, контроль версий
LLVM
CMake

Профилирование
Profile, measurement and analysis

Системы вокруг CI/CD
Jenkins
CI/CD в Playrix: как мы собираем и тестируем наши игры

6. Алгоритмы (общее)#

Сложность, сортировка и поиск, арифметика, комбинаторика, динамическое программирование, рекурсия, структуры данных, случайные числа, хеширование

Algorithms (Robert Sedgewick, Kevin Wayne)
Introduction to Algorithms (Kormen)
The Art of Computer Programming
leetcode

Численные методы, представление чисел, оптимизации
Three Algorithmic Journeys
Programming pearls
Floating Point Tricks/Notation, notation, notation (Jim Blinn)
What every programmer should know about floating-point arithmetic

7. Алгоритмы предметной области#

Общее
Game programming patterns
Gamedev.ru статьи

Математика - Вектора, матрицы, линейные трансформации, геометрия, квантерионы, проекции и преобразования, кривые
Mathematics for 3D Game Programming and Computer Graphics

Физика - масса, инерция, силы, скорости, джоинты, коллижены и контакты, sat/gdk/epa, bhv, bounding volumes, spatial partitioning, жидкости, soft-bodies
Nature of Code
Physics for game developers

Графика - растеризация, рейтрейсинг, графический пайплайн, сэмплинг, шейдеры, pbr, отражения, текстирирование, графические api, освещение/тени, эффекты, куллинг, окклюдеры, прозрачность, stencil/blenging, gpu-driven
Real-Time Rendering
Physically based rendering
API docs
ShaderX/GPU gems/GPU zen/Raytracing gems series

AI - state machines, behavior trees, desicion trees, goal-oriented behavior, desicion making, pathfinding
Game AI Pro

Анимация - скелетная, инверсная кинематика, блендинг анимаций, графы анимаций/поведения, кастомизация, бленд-шейпы, non-uniform animations, tools/pipelines, процедурная, морфинг, ml
Animation Programming Basics (Bobby Aguelov)

Network - сокеты, osi модель, асинхронное программирование, игровые протоколы, mmo/fast-paced особенности, сериализация, детерминизм/дискретизация/сжатие, шифрование, прогнозирование/компенсация лагов
Многопользовательские игры. Разработка сетевых приложений
TCP/IP illustrated

UI - mvc/mvvm/mvp, реактивное программирование, usability

Геймплей/скриптинг - ecs/dod, визуальные языки, скриптовые языки, dsl, domain-oriented-design, cериализация/кодогенерация
Game programming games series
Visual Programming Languages - Snapshots
Продуктивность и производительность в новых скриптовых языках
Blueprints vs. C++

Sound
Principles of Game Audio and Sound Design

Многопоточность - поддержка в языке, модели памяти, lock-free структуры/алгоритмы, мьютексы/атомики/fibers, thread pools/dispatches/executors/системы задач, gpgpu
C++ concurency in action
Concurrency with Modern C++
The Art of Multiprocessor programming

8. Использование и дизайн библиотек/компонентов/модулей#

Orthodox C++
EASTL
Unreal 3rdPartyLibs
DagorEngine 3rdPartyLibs
API Design for C++

9. Среды разработки / движки / архитектура систем#

движки, общий дизайн, unity/unreal/godot
Game Engines with Source: Learning from the best
Hobby engine to game engine
Scripting language? Engine language?
Development and Deployment of Multiplayer Online Games: from social games to MMOFPS
Архитектура игровых движков
Game Engine Gems series

редактор/тулзы, git/серверы сборки/системы задач/cd-ci
Game Development Tools (Marwan Ansari)
Making tools for big games
Building Tools Quickly: Blueprints, Menus, Utilities, and Widgets

паттерны проектирования
Pattern-oriented software architecture
Large-Scale C++ Software Design

10. Процессы и технологии разработки#

стадии разработки, особенности milestones/взаимодействие с издателями, прототипирование/soft/live

пайплайны работы, project management, agile/lean/scrum
Метод Lean Startup
Экстремальное программирование
Scrum и Канбан: выжимаем максимум
The mythical man-month
Peopleware

gamedesign

11. Бизнес процессы#

Game Studio Leadership: You Can Do It
Игра как бизнес от мечты до релиза
Маркетинг игр (Галёнкин)