Скиллы программиста (разработчика игр) по уровню абстракции, снизу вверх
- 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 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-код, техники оптимизации, инфраструктура 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 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 languagesThe 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-bodiesNature of Code
Physics for game developers
Графика - растеризация, рейтрейсинг, графический пайплайн, сэмплинг, шейдеры, pbr, отражения, текстирирование, графические api, освещение/тени, эффекты, куллинг, окклюдеры, прозрачность, stencil/blenging, gpu-drivenReal-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, 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 action
Concurrency 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 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Игра как бизнес от мечты до релиза
Маркетинг игр (Галёнкин)