Conference
2017 TGDF Notes: Survival Rules for Game Software Engineers

Speaker | Rayark Games | Alvin Chung
Alvin Chung is the CTO and co-founder of Rayark. He worked on front-end and back-end development for games including Implosion, VOEZ, Sdorica, and Soul of Eden. He also helped plan development processes and build internal infrastructure for Rayark’s game software development.
─ Excerpted from TGDF official
These are personal notes and may not fully represent the original speaker’s intent.
Other articles in this series
- 2017 TGDF Notes: Creating 3D Japanese Animation Quality in a Small Indie Studio
- 2017 TGDF Notes: Game AI and Level Difficulty
- 2017 TGDF Notes: Finding a Path in a Crowded Market
- 2017 TGDF Notes: Making the Future Present Through Rez Infinite
- 2017 TGDF Notes: Lanota Development Experience
- 2017 TGDF Notes: Postmortem on What Went Right and Wrong
- 2017 TGDF Notes: The Art Direction of Detention
- 2017 TGDF Notes: Visual Design Notes from Qubot
- 2017 TGDF Notes: Survival Rules for Game Software Engineers
Responsibilities
- Ensure code quality
- Build an efficient and friendly development environment
- Recruit and train talent
Programmer ratio
Roughly 3X programmers out of 14X total staff, or about 20%.
Deemo program architecture

Engineering career
- Coding skill
- Knowledge
- Direction
Coding skill
- Object-oriented programming (Java / C# / C++)
- Single Responsibility Principle
- Open Close Principle
- Liskov’s Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Functional programming (Python / JavaScript / Go)
- Pure Function
- Immutable State
- Function Composition
- Avoid shared state
- Avoid side effects
- Onion design

- Abstract design: interfaces should express intent, not implementation.

Knowledge
- GC (Garbage Collection)
- Heap
- Boxing
- Value type
- Reference type
- Trial and error vs. best solution
- Systematic learning
- Algorithms/data structures
- Computer architecture
- Operating systems
- Network architecture
- Graphics rendering
- Software engineering
- Systems and signals
- Learning on the job
- Engine familiarity
- Learning new things

Direction
- Do not forget the nature of engineering work.
Being passionate about games is a double-edged sword. If you are not careful, you end up only discussing game content and neglecting engineering fundamentals.

- Become an expert.

Other notes
- Time must be spent on program architecture planning, project maintenance, function expansion, and team understanding.
- Architecture planning process: sample code -> architecture documentation -> code review.
Attribution
Please credit ARKAI Studio and link back to this article when quoting or reposting.