Picture of Alexander Brazie
Alexander Brazie
Alexander is a game designer with 25+ years of experience in both AAA and indie studios, having worked on titles like World of Warcraft, League of Legends, and Ori and The Will of The Wisps. His insights and lessons from roles at Riot and Blizzard are shared through his post-mortems and game design course. You can follow him on Twitter @Xelnath or LinkedIn.
Skip To...

Game Programming: How to Learn, Coding Languages, Books

Game Programming: How to Learn, Coding Languages, Books
Picture of Alexander Brazie
Alexander Brazie
Alexander is a game designer with 25+ years of experience in both AAA and indie studios, having worked on titles like World of Warcraft, League of Legends, and Ori and The Will of The Wisps. His insights and lessons from roles at Riot and Blizzard are shared through his post-mortems and game design course. You can follow him on Twitter @Xelnath or LinkedIn.

Game programming is the process of writing the code that runs video games, game-making tools, or game services. Programmers create the foundational tools and features that other designers and creatives build on top of.

Programmer role in game development

Aspiring game programmers have many options to learn to write code for video games. Numerous books and edX courses cover the fundamental knowledge every programmer needs. Online platforms and tutorials offer a wealth of practical experience with coding specific games and features. One of the fastest ways for beginners to learn is by creating mods for existing games. Roblox is a common starting point for new programmers, thanks to its accessible yet powerful creation tools and vast library of community resources to draw from.

Roblox Studio intro to game programming

Learn more about what game programming entails, including how to choose the engine and languages to focus on, explore free online tutorials and courses designed for beginners like Coursera and Udemy, follow a step-by-step process for starting out in video game programming, compare when to use C++ vs. C# vs. Lua vs. Javascript, discover the reason that a language like Python is ideal for beginner programmers, and choose from a collection of books for learning to code specifically for video games.

What is game programming?

Game programming is a subset of game development defined by writing computer programming code. Game programmers create imaginative worlds using algorithms and math expressions, so coding a video game is a mixture of art and science. Game programming is a skill that’s built up gradually through frequent practice.

Programming is communicating to a computer or device the exact steps to follow and rules to enforce. Learning to code specifically for video games is really about mastering a set of smaller related proficiencies: performance optimization, debugging, code architecture, third-party library integration, vector math, and building machine-learning (ML) models. If it’s difficult to picture what this looks like, the finished product resembles the prototype in-game code below.

Prototype game code

There are many ways for beginner programmers to hone their coding skills. Try creating a custom map or a mod for an existing game. Roblox makes it especially simple for would-be programmers to become familiar with the basics and share their work easily. Game programming courses and online platforms tailored to specific languages help build more specific expertise that translates directly to game engine work.

How to learn video game programming?

To learn video game programming, first choose a game engine to focus on. Research the programming languages each game engine uses to help pick between the options. Every game engine has an engine language and a tools/scripting language. All programmers need to know at least one of each.

C++ is the industry standard, used by most studios for the widest range of projects. Javascript is ideal for developing web-based games. Lua is perfect for quickly iterating on features within a game engine. Python is easy to work with, especially thanks to its supportive community and the open-source Pygame library. Comparing each language’s strengths and weaknesses makes it easier to pick the most fitting option for a particular project.

PyGame is a free, open-source library for coding games in Python

After picking a language, start exploring the wide world of free online tutorials. YouTube has a wealth of informative and fun series that serve as many people’s first introduction to each programming language.

Next, it’s time to actually start coding simple features. Find a small and achievable initial project, like creating a tic-tac-toe game. Focusing on one small feature at a time helps to consistently refresh programmers’ motivation and build confidence with each completed project.

Work on mastering the fundamentals after gaining enough skill to “become dangerous” (able to do a few things with minimal understanding of their inner workings). Avoid the trap of overconfidently skipping ahead—the far more complex problems down the road demand a solid foundation of programming knowledge. Figure out the reasoning behind specific coding processes, the way computer hardware works, and the differences between functions, objects and data. Above all else—make a playable prototype of a game, then get someone to play it!

Prototypes let devs test features or games and iterate repeated;y

Ask another person to make adjustments to the system once the first prototype is ready. Watch the kind of decisions they make and consider how to make the system mesh more closely with their instinctive behavior. Any direct feedback they have to offer is especially useful. The discussion between former Sony/Blizzard game test lead Rian Trost and Alex Brazie below goes over some of our experiences working directly with QA testers.

Research how other programmers tend to respond to these roadblocks, too. Chances are that whatever is vexing a newer programmer, their peers already had to solve that problem long ago. Most programming communities (like the Funsmith Club Discord) are happy to offer advice and guidance to beginners.

Taking each perspective into account, adjust the feature to make it more intuitive, fun, and/or responsive. Look how different the same place in Ori and the Will of the Wisps looks in the rough prototype vs. the final game.

Ori and the Will of the Wisps: prototype vs. finished game

Finally, repeat the whole process with a new feature concept. Taking several projects from start to finish tends to highlight any significant gaps in programming knowledge. Work up to increasingly complex features as a sort of self-imposed trial by fire. Learning to code in multiple languages is another way for beginner programmers to become more flexible and capable of working on a wider range of games and features.

Long story short: learn the basics through guides and more experienced programmers, then practice implementing them with different features until it becomes second nature.

What are effective ways to learn game programming online?

Effective ways to learn game programming online are found throughout the vast library of free learning resources available on the internet. Online game development courses from e-learning sites like Coursera, edX, and Udemy cover the core principles in programming, design, art, and animation. Platforms like Codecademy offer more hands-on, interactive lectures with practical exercises.

Codecademy interactive game programming courses

Below are the most effective ways to learn game programming. Feel free to mix and match these strategies to find the most useful combination.

  • Practice with interactive online platforms: Codecademy, Khan Academy and freeCodeCamp each offer a range of basic coding lessons. Each platform emphasizes practical exercises to help solidify new concepts through experience.
  • Complete online tutorials: There are numerous free resources about game engines available online. Use tutorials to gain practical experience while following a guide, ensuring nothing important is missed. Unity Learn offers a series of tutorials and courses focused on 3D game dev topics, and Unreal Sensei’s channel is a very straightforward introduction to Unreal Engine 5.
  • Take online game development courses: Game dev courses on e-learning sites offer a more structured approach to learning to write codes for games. Check whether local colleges or universities offer an intro to game development course.
  • Read books on game programming: Study game programming books to learn C and other programming languages prior to actually writing code. Search online for free resources about game engines to review the same information from a different perspective.
  • Learn game design: Master the foundational principles of designing games to understand more about what game programming can accomplish. Learning to see from a game designer’s perspective helps programmers envision the final product that their code pieces together.
  • Download a game engine: Choose a game engine and practice writing simple programs or games. For 2D games, Gamemaker, Godot, Unreal Engine, Unity, and smaller engines like LOVE2D or PICO8 are all viable options.
Godot is perfect for coding lightweight 2D games

What platforms provide game programming courses?

Platforms that provide game programming courses are listed below.

  • Coursera, edX, Udemy, Pluralsight, and GameDev.tv courses each dive deeper into a specific aspect of game programming.
  • Boot.dev has a series of practical courses dedicated to teaching students through actual coding practice rather than by reviewing the background theory.
  • MIT’s OpenCourseWare offers many completely free courses teaching different program languages, like “Introduction to Computer Science and Programming in Python”.
  • Harvard offers free online courses for several game programming languages, ranging from language-specific options to more wide-reaching, generalist courses like Introduction to Computer Science.

Game programming courses on edx and MIT OpenCourseWare

How to start in video game programming as a beginner?

To start in video game programming as a beginner, follow the steps below.

  1. Choose a basic game engine: Game development is a massive field with numerous engines to choose from. Pick one engine to become consistent with to avoid complicating the coding process as a beginner.
  2. Acquire experience through practice: Learn to code while becoming more familiar with the engine. Explore its limits and get more comfortable being creative. The point of playing with anything is to learn through subjective experience, so play around until the tools become intuitive.
  3. Complete online tutorials: Tutorials offer a more guided experience that complements the free-form knowledge gained through practice. Game programming tutorials teach both basic skills for beginners and more specific, advanced processes that build onto the initial coding skill set. Watch other creators’ videos for further guidance and inspiration.
  4. Create a feature prototype: Complete an early playable version of one little fleshed-out piece of a game. Use this proof of concept to showcase what makes the feature fun or intuitive.
  5. Iterate on the feature repeatedly: Get another person, ideally another dev, to play the prototype and offer feedback. Choose where to make changes based on all their suggestions. Find more playtesters with different perspectives to zero in on the game’s biggest issues. Review, iterate, rinse, repeat.
  6. Network with fellow devs at gaming events: Connect with other programmers in person at game jams and other large dev gatherings, like itchi.io/jams. Participate in the larger game dev community to share ideas, meet potential future friends or coworkers and get expert advice firsthand. Networking events are full of opportunities to get feedback on feature prototypes from many different perspectives.
  7. Work with other programmers: Collaborate with peers on their projects whenever possible. Learn from each other and contribute more to both games by involving multiple skill sets and perspectives.

What are the most popular video game programming languages?

The most popular video game programming languages are C# (Unity/Godot), C++ (Unreal Engine), Python (Pygame/Ursina), Lua, and JavaScript. C# and C++ are the most reliable choices for  in terms of job prospects in the industry.

Dev programming language uses

The 5 most popular programming languages used in game development are outlined below.

  1. C#: Deeply integrated with and mainly used with Unity. Considered an easier alternative to C++ but still quite powerful and versatile.
  2. C++: The most popular language for coding games. Object-oriented, highly customizable, swift and efficient due to being statically typed and compiled. Huge online community. Relatively complex and hard to learn, but obviously worth the effort. The coding language for Unreal.
  3. Python: Easy to write in and useful for quick iteration and prototyping. Large support community, including the free, cross-platform Pygame game dev library. Not ideal for resource-intensive projects requiring high performance; use C++ in that case.
  4. Javascript: Most useful option for developing web-based/browser games and simulations, usually packaged into HTML5 with HTML and CSS. Large support community, including the WebGL graphics library and Phaser, an HTML game framework.
  5. Lua: Versatile, lightweight scripting language that’s embeddable within a game engine. Flexible and easy to integrate with many other applications. The language used with Roblox.

What game programming language is recommended for beginners?

The game programming language recommended for beginners is Python. Python is more accessible to new users than many of the industry-standard game dev languages. Pygame has tons of Python tutorials and modules to help beginner devs learn through practice. After becoming familiar with Python, switch over to learning the language of the chosen engine. Javascript is well-suited to developing web games. Use C# for Unity or Godot projects. Code Unreal Engine games in C++.

What books are most effective at teaching game programming?

The most effective books for teaching game programming vary based on each student’s skill level. Any of the introductory books below is a solid jumping off point for novice game programmers.

For a general introduction to game development, start with one of the books below.

  • Masters of Doom by David Kushner
  • Smart & Gets Things Done by Joel Spolsky
  • Level Up! The Guide to Great Video Game Design by Scott Rogers
  • Beginning Game Programming by Jonathan S. Harbour
  • Game Programming Patterns by Robert Nystrom
  • 3D Math Primer for Graphics and Game Development by Fletcher Dunn
  • A Playful Production Process by Richard Lemarchand

To learn about creating a game engine, read through one of these books next.

  • Game Engine Architecture by Jason Gregory (lead programmer at Naughty Dog)
  • Dragonfly – Program a Game Engine from Scratch by Mark Claypool
  • Game Programming in C++ by Sanjay Madhav
  • Beginning C++ Through Game Programming by Michael Dawson
  • Unity in Action: Multiplatform Game Development in C# by Joe Hocking and Joseph Hocking
  • Unity from Zero to Proficiency by Patrick Felicia
  • Multiplayer Game Programming by Josh Glazer and Sanjay Madhav
  • Killer Game Programming in Java by Andrew Davison

Game Mechanics: Advanced Game Design by Ernest Adams is ideal for programmers more focused on gameplay and not as concerned with the nuts and bolts of how computers work. Finally, if the goal is to learn to mod games, try Coding Roblox Games Made Easy by Zander Brumbaugh.

Beginner vs. advanced game programming books

Join the Funsmith Tavern to get exclusive game dev tips that we don't share anywhere else

Each Friday, get a shot of 2-min TL:DR update in your inbox on the latest
Actionable tips, templates, or in-depth guides by game dev experts
— Entry-level Game design job listings(+ playtesting and internships)
— Private community workshops, events, and discussions

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Tweet
    Post
    Share
    Send

    The Funsmith Tavern

    Weekly Game Design Newsletter

    Level-up your game design knowledge, skills, career, and network

    Bi-weekly on Tuesday, get a shot of 2-min TL:DR update in your inbox on the latest

      All tactics. No fluff. Pro advice only. Unsubscribe any time

      Get Exclusive Game Design Tips that I Share Only with Funsmith Tavern Subscribers

      Weekly Game Design Newsletter

      Level-up your game design knowledge, skills, career, and network

      Bi-weekly on Tuesday, get a shot of 2-min TL:DR update in your inbox on the latest

        All tactics. No fluff . Pro advice only. Unsubscribe any time

        EXPERIENCE & BACKGROUND:

        [STUDIO] Blizzard Entertainment: Content, mechanics, and systems designer

        (Creator of Apex Legends & former Creative Director at Respawn)

        [GAME] World of Warcraft: MMORPG with 8.5 million average monthly players, won Gamer’s Choice Award – Fan Favorite MMORPG, VGX Award for Best PC Game, Best RPG, and Most Addictive Video Game.

        • Classic:
          • Designed Cosmos UI
          • Designed part of Raid Team for Naxxramas
        • Burning Crusade:
          • Designed the raid bosses Karazhan, Black Temple, Zul’Aman
          • Designed the Outlands content
          • Designed The Underbog including bosses:
            • Hungarfen, Ghaz’an, Swamplord Musel’ik, and The Black Stalker
          • Designed the Hellfire Ramparts final bosses Nazan & Vazruden
          • Designed the Return to Karazhan bosses: Attumen the Huntsman, Big Bad Wolf, Shades of Aran, Netherspite, Nightbane
        • Wrath of the Lich King:
          • Designed quest content, events and PvP areas of Wintergrasp
          • Designed Vehicle system
          • Designed the Death Knight talent trees
          • Designed the Lord Marrowgar raid
        • Cataclysm:
          • Designed quest content
          • Designed Deathwing Overworld encounters
          • Designed Morchok and Rhyolith raid fights
        • Mists of Pandaria: 
          • Overhauled the entire Warlock class – Best player rated version through all expansion packs
          • Designed pet battle combat engine and scripted client scene

        [GAME] StarCraft 2: Playtested and provided design feedback during prototyping and development

        [GAME] Diablo 3: Playtested and provided design feedback during prototyping and development

        [GAME] Overwatch: Playtested and provided design feedback during prototyping and development

        [GAME] Hearthstone: Playtested and provided design feedback during prototyping and development

        [STUDIO] Riot Games: Systems designer, in-studio game design instructor

        (Former Global Communications Lead for League of Legends)
        (Former Technical Game Designer at Riot Games)

        [GAME] League of Legends: Team-based strategy MOBA with 152 million average active monthly players, won The Game Award for Best Esports Game and BAFTA Best Persistent Game Award.

        • Redesigned Xerath Champion by interfacing with community
        • Reworked the support income system for season 4
        • Redesigned the Ward system
        • Assisted in development of new trinket system
        • Heavily expanded internal tools and features for design team
        • Improved UI indicators to improve clarity of allied behaviour

        [OTHER GAMES] Under NDA: Developed multiple unreleased projects in R&D

        Game Design Instructor: Coached and mentored associate designers on gameplay and mechanics

        [STUDIO] Moon Studios: Senior game designer

        (Former Lead Game Designer at Moon Studios)

        [GAME] Ori & The Will of The Wisps: 2m total players (423k people finished it) with average 92.8/100 ratings by 23 top game rating sites (including Steam and Nintendo Switch).

        • Designed the weapon and Shard systems
        • Worked on combat balance
        • Designed most of the User Interface

        [GAME] Unreleased RPG project

        • Designed core combat
        • High-level design content planning
        • Game systems design
        • Game design documentation
        • Gameplay systems engineering
        • Tools design
        • Photon Quantum implementation of gameplay

        [VC FUNDED STARTUP] SnackPass: Social food ordering platform with 500k active users $400m+ valuation

        [PROJECT] Tochi: Creative director (hybrid of game design, production and leading the product team)

        • Lead artists, engineers, and animators on the release the gamification system to incentivize long-term customers with social bonds and a shared experience through the app

        [CONSULTING] Atomech: Founder / Game Design Consultant

        [STUDIOS] Studio Pixanoh + 13 other indie game studios (under NDA):

        • Helped build, train and establish the design teams
        • Established unique combat niche and overall design philosophy
        • Tracked quality, consistency and feedback methods
        • Established company meeting structure and culture

        Game Design Keynotes:

        (Former Global Head of HR for Wargaming and Riot Games)
        • Tencent Studio
        • Wargaming
        • USC (University of Southern California)
        • RIT (Rochester Institute of Technology)
        • US AFCEA (Armed Forces Communications and Electronics Association)
        • UFIEA (University of Florida Interactive Entertainment Academy)
        • West Gaming Foundation
        • Kyoto Computer Gakuin – Kyoto, Japan