Скиллы программиста (разработчика игр) по уровню абстракции, снизу вверх
- 1. Архитектура компьютера
- 2. Операционные системы
- 3. Устройство языков программирования
- 4. Использование языков программирования
- 5. Environment и тулзы вокруг компилятора
- 6. Алгоритмы (общее)
- 7. Алгоритмы предметной области
- 8. Использование и дизайн библиотек/компонентов/модулей
- 9. Среды разработки / движки / архитектура систем
- 10. Процессы и технологии разработки
- 11. Бизнес процессы
1. Архитектура компьютера#
Устройство CPU/GPU/Память/Кеши/Network/IOIntel® 64 and IA-32 Architectures Software Developer’s Manual (ISA)System V AMD64 ABIWhat every programmer should know about memoryThe 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-код, техники оптимизации, инфраструктура llvmCompilers: 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 programmingStructure 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 languagesThe C programming languageExpert C ProgrammingCLR 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 JourneysProgramming pearlsFloating 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 GraphicsReal-time collision detection
Физика - масса, инерция, силы, скорости, джоинты, коллижены и контакты, sat/gdk/epa, bhv, bounding volumes, spatial partitioning, жидкости, soft-bodiesNature of CodePhysics for game developers
Графика - растеризация, рейтрейсинг, графический пайплайн, сэмплинг, шейдеры, pbr, отражения, текстирирование, графические api, освещение/тени, эффекты, куллинг, окклюдеры, прозрачность, stencil/blenging, gpu-drivenReal-Time RenderingPhysically based renderingAPI docsShaderX/GPU gems/GPU zen/Raytracing gems series
AI - state machines, behavior trees, desicion trees, goal-oriented behavior, desicion making, pathfindingGame 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++
SoundPrinciples of Game Audio and Sound Design
Многопоточность - поддержка в языке, модели памяти, lock-free структуры/алгоритмы, мьютексы/атомики/fibers, thread pools/dispatches/executors/системы задач, gpgpuC++ concurency in actionConcurrency with Modern C++The Art of Multiprocessor programming
8. Использование и дизайн библиотек/компонентов/модулей#
Orthodox C++
EASTL
Unreal 3rdPartyLibs
DagorEngine 3rdPartyLibsAPI 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-ciGame Development Tools (Marwan Ansari)
Making tools for big games
Building Tools Quickly: Blueprints, Menus, Utilities, and Widgets
паттерны проектированияPattern-oriented software architectureLarge-Scale C++ Software Design
10. Процессы и технологии разработки#
стадии разработки, особенности milestones/взаимодействие с издателями, прототипирование/soft/live
пайплайны работы, project management, agile/lean/scrumМетод Lean StartupЭкстремальное программированиеScrum и Канбан: выжимаем максимумThe mythical man-monthPeopleware
gamedesign
11. Бизнес процессы#
Game Studio Leadership: You Can Do ItИгра как бизнес от мечты до релизаМаркетинг игр (Галёнкин)