Tools Engineer: Core Software Development - Computer Science, Operating Systems
- Engines and their tools
- Game Tools History
- The Toolsmiths GDC Codex
- The Toolsmiths Glossary
- The Toolsmiths Learning Paths
- ◍ Tools Engineer Learning Path
- ◎ Tools Engineer: Core Game Development
- ◎ Tools Engineer: Core Game Tools Development
- ◎ Tools Engineer: Core Software Development
- ◌ Computer Science, Algorithms/Data Structures
- ◌ Computer Science, Computer Architecture
- ◌ Computer Science, Databases
- ◌ Computer Science, Computer Networks
- ◌ Computer Science, Operating Systems
- ◌ Programming Language, C
- ◌ Programming Language, C++
- ◌ Programming Language, C#
- ◌ Programming Language, Python
- ◌ Software Engineering, Debugging/Troubleshooting
- ◌ Software Engineering, Version Control
- ◌ Software Engineering, Writing Code/Unit Testing/Refactoring
- ◎ Tools Engineer: Game Tools Development Disciplines
- The Toolsmiths Knowledge Base
- Tools Development Wisdom and Best Practice
- The Toolsmiths Arsenal
- The Toolsmiths Toolbox
Codex navigation
Knowledge
list reference from tools-engineer-checklist.md by Geoff Evans
Concepts
- File descriptors, HANDLEs
- Blocking vs. non-blocking I/O requests
- The fundamental sync primitives and wait functions
- Manual and automatic condition/event primitives
- Syscall overhead
- Memory protection and superuser instructions
- Exceptions and interrupt service routines
Threads
- Memory contention and the basic dangers of threads
- OS-implemented mutex objects and the thread/process scheduler
- Thread local storage
Sockets
- TCP vs. UDP
- Network order
- Latency with select-polling vs. blocking waits vs. async
Virtual Memory
- How virtual memory is related to physical memory, swap
- How CPU hardware makes virtual memory performant
Modules
- Shared objects vs. static libraries
- Styles of "dynamic linking" on windows
- Practicality of code unloading
- Jump tables
- Process loading and the dynamic loader
- Pages inherently shared vs. non-shared across processes
- Page protections, JIT
Resources
Book links
- Operating System Concepts Essentials
- Operating System Concepts
- Operating Systems: Internals and Design Principles
- Modern Operating Systems