Video games are awesome, but not enough people know how to make them.
I believe society should invest in teaching how to make video games. The experience of playing video games and watching others play them is an intensive source of diversified cognitive and social experience. This experience advantageously replaces endless hours idling in a traditional classroom. Instead of wasting 15 years at school, future generations could walk an accelerated path through the begin of life via virtual activities tailored automatically to their interests and abilities. I believe that instead of investing in the traditional education infrastructures, and instead of churning out teachers whose work is both physically exhausting and mentally numbing, society should produce video game creators and facilitate access of every child to a diversified supply of video games.
There will be some thinking involved, of course. The right combination of gamers, teachers and hackers need to accrue before anything like this happens.
Most likely, we need a transition. Existing teaching organizations, for example universities, do not use video games to teach; but we can assume they will bootstrap the process by producing the first generation of advanced video game creators.
Assuming a university was interested to teach how to make video games, what would its teaching program look like? What education would best catalyse video game creation at this day and age?
I was toying with this idea yesterday. Check out what I’ve got.
- CS theory: graph algorithms, data structures (incl. hash maps and quad trees).
- Mathematics: numerical analysis, linear algebra, probability and statistics
- Applications of maths and CS theory: neural networks, genetic algorithms, finite state automata, Markov chains, Petri networks
- Biology and psychology of human perception (incl. neurology of focus and reflexes, color theory, reaction time)
- Economy and politics in virtual environments
- Basics of music theory and music cognition/psychology
- History of video games
- Hardware architecture of audio and video output
- Graphical rendering: sprites/blits, z-buffers, raycasting/raytracing, tesselation
- Signal processing: domain transforms, convolutions, filters, pattern recognition
- Digital music and sound effects: sample merging vs. synthesis, encoding, reproduction and fidelity
Art and design
- Practice of drawing and photography
- Practice of playing music (incl. individually and in groups)
- Animation styles and techniques
- Techniques of storytelling: outlines, scripts, storyboards
- Digitization: acquisition, modelling, visual/acoustic pre- and post-processing
- Physics simulation (incl. trade-offs in accuracy/performance)
- Automated world generation (incl. value noise, hill algorithm, etc.)
- Process networks and agent systems
System design and programming
- Aspect-oriented and functional programming
- Distributed systems and networks (incl. locality & consistency issues in distributed storage)
- Concurrent and parallel programming
- Dynamic and interpreted languages (incl. integration thereof in existing frameworks)
- Study of existing state-of-the-art engines: Unity, id Tech, etc.
- Software development methodologies: waterfall, agile, scrum, xp, etc.
- Software validation and testing
- Legal frameworks: copyright and licensing, intellectual property, business partnerships
- Basics of marketing
- Setting up a business: writing a business plan, pitching to investors, bootstrapping, basics of accounting
This is probably about five years of learning, interleaved with hands-on practice.
(Can you see any topic that’s missing from this program?)
Maybe someone will gather the right combination of contents and propose them in some form of on-line course. Maybe a university will invest in such a teaching program of sorts. Or we could build an organization that helps students achieve the same on their own. Who wants to join?