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 courses. You can follow him on Twitter @Xelnath or LinkedIn.
Skip To...

How to Code a Game from Scratch (Beginner’s Tutorial)

How to Code a Game from Scratch (Beginner's Tutorial)
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 courses. You can follow him on Twitter @Xelnath or LinkedIn.

Coding refers to writing instructions that make a game function in a language that the game engine understands. Code a game by choosing the easiest way to learn coding while making progress on the game. Choose a programming language, then find a game engine that supports it, or choose a game engine, then learn its programming language. Decide if the team wants to use a no-code engine, coding, or a hybrid model.

Game development is complex and requires a lot of work. Focus on the main goal behind the game first. Some games are purely for entertainment, while others seek to educate or simply make money. After establishing the game’s vision, the team has a cohesive understanding of what they’re building toward. Remember that programmers start from zero, but little by little, they create incredible experiences and worlds.

How code translates into gameplay

Design and implement visual rendering systems and audio rendering systems to bring a level to life. Focus on developing motion systems to allow players to navigate the world. Write control schemes to give players the ability to interact with the world and AI. Establish progression systems, including designing rewards and challenges, to create exciting and satisfying gameplay loops. Test and iterate repeatedly until the finished product is ready.

1. Design the main loop

Design the main loop to begin coding the game. The main loop is the engine behind the gameplay. It updates the world, processes player input, and renders each frame according to several conditions. The main loop runs from the start of the game until the player exits, ensuring everything remains in sync. Without it, game systems like physics, animations, and audio wouldn’t function in real time. Design the main loop from the start to understand the steps needed to code the game.

Choose between real-time and turn-based system structures based on the game design’s goals. Real-time loops update the game continuously, even when the player is idle in the world. Turn-based loops wait for input before progressing, which allows players to have time to think and plan their next move. Use real-time structures for responsiveness and urgency, and turn-based structures for control and clarity. Some games even blend both, which will make the coding effort significantly harder.

Clair Obscur: Expedition 33's turn-based battle system

Decide how the game handles time, with either a fixed or variable time step. A fixed time step updates the simulation at regular intervals, which helps maintain consistent and predictable behavior. A variable time step adjusts based on actual time frames, which results in smoother visuals and higher frame rates on powerful systems. Use fixed steps for accuracy and variable steps for responsiveness. Balance performance and consistency by choosing the method that best fits the game’s needs.

Run a sequence of operations every frame to keep the game world alive and immersive. Start by computing the time step or waiting for the next update slot. Process player input, simulate physics, and update game logic like AI or rules. The goal is to ensure the main loop is working, especially with more operations added to each frame. Repeat this cycle continuously to create the illusion of motion and interactivity with the world. Evaluate animations to see if they’re smooth and functional or require refinement, then render visuals and audio to make the main loop feel real.

Fluid animation presentation at GDC

Optimize the main loop to balance performance, accuracy, and visual quality. Limit rendering to only what the player can see, and prioritize the most important sounds to play. Overlay the user interface after the game world is drawn, if possible. Consider multithreading for expensive tasks. Tailor the loop to the game’s needs, but keep the core structure predictable and efficient. Build out the code from there.

2. Implement visual rendering systems

Implement visual rendering systems to bring the game loop, game objects, and other visual aspects of the game to life. A rendering game engine is a part of a game engine that takes game data, such as geometry, textures, text, and many others, and converts it into visuals. Determine the rendering engine architecture beforehand since it impacts the entire project. Architecture refers to how the engine is structured and organized, which is vital for allowing render engine modularity down the line. Modularity enables developers to modify the system as needed.

Determine the render pipeline configuration to create an ordered sequence of steps to take 3D game data and convert it into a finalized 2D image on a screen. Decide which file formats to use, like GLTF and FBX. Or DDS, TGA, or PNG for textures. Focus on rendering engine optimization by aligning the scope and scale of the pipeline with the team’s size. A game with ultra-realistic graphics will need a more complex render pipeline, and thus a bigger team, than a game with simple graphics, for example. Below is an example of a render pipeline configuration.

Stage What It Does Example
Input Assembly Collects vertices Reads the model’s mesh data
Vertex Shader Moves (transforms) the vertices into the right place in 3D space Applies position, scale, rotation
Tesselation / Geometry Adds detail or modifies geometry Adds more triangles for smoother surfaces
Rasterization Converts 3D shapes into 2D fragments (pixels) Turns a triangle into pixels on the screen
Fragment (Pixel) Shader Calculates final color for each pixel, applying lighting, textures, and effects Makes a game object look shiny, transparent, or glowing
Output Merger / Frame Buffer Combines all pixels and writes the final image on the screen Blends multilayers, handles depth, transparency, and holds them ready, if necessary

Decide how video fits into the render pipeline configuration. Implement real-time video rendering through APIs such as Media Foundation on Windows or Core Media/Video on OS X. Several aspects of the game typically utilize video, including cutscenes, certain UI elements, or in-game screens. Real-time video rendering isn’t always necessary, however. Use smaller videos by storing them as frames, which act like textures, and pass them through the render pipeline configuration like other visual aspects. Compress large files to improve the pipeline’s efficiency.

Consider how text fits into the rendering engine’s architecture and which fonts to use. Bitmap fonts benefit single-language games and don’t take up much vertex buffer storage, making them fast to draw. TrueType fonts (rendered via the FreeType 2 library) utilize Unicode, a crucial component for localized games. SVG rendering, which allows the use of emojis, requires shader flexibility to implement at its most polished state. Consider using libraries like HarfBuzz to assist with glyph positioning, kerning, and ligatures to improve readability. Finally, determine the language directionality for text to be read left-to-right, right-to-left, or bidirectional for localization.

Zelda: Tears of the Kingdom font style

Choose whether to use an existing graphics engine or develop a new one. Using an existing graphics engine or library is beneficial for new developers since the hard work is already done. These engines have already configured the render pipeline and many support graphics API compatibility, too. However, they’re a one-size-fits-all solution, which means they may not support the shader flexibility or rendering engine modularity developers need for specific systems. Research other games similar to the one in development to see which engine they used. Consider using the engine if it solves most of the team’s problems.

Audio rendering systems are a component of a game engine that focuses on generating, processing, and outputting sound. They include elements like sound effects, dialogue, music, ambient noise, and spatial (3D) audio. Audio rendering systems function similarly to visual rendering systems, in that developers must input files through a pipeline to achieve the final outcome, which is the sounds a player hears during specific game aspects.

Recording Starfield's soundtrack with an orchestra and choir

Decide whether to use an available library like OpenAL, FMOD, or Wwise, or to develop an original library. Consider which file types to use for audio, including OGG, MP3, or AAC, and how the data will be authored. New developers will benefit from an existing library since learning about discrete sine/cosine transforms and fast Fourier transforms will eat into resources if not already well-known by the team. Research audio databases to avoid licensing problems and patents related to AAC files.

3. Develop motion systems

Develop motion systems to allow players to navigate the game. Games are made up of thousands of animations, which means that games using movement or any type of navigation will need motion systems. These systems span everything from kinematic trajectories, often used for animations, to physics engine dynamics, often used to simulate gravity or momentum. An example of a motion system is a player pressing a specific input on the character controller, which then calls the appropriate animation to play.

Understand how kinematic animation and inverse kinematic animation work together to create smooth animation blending. Kinematic animation refers to the movement of objects or characters based on predefined motion paths. Some examples include walk, jump, or attack animations. Kinematic animation often relies on collision detection and hitboxes to determine if the player runs into or hits something. Develop collision detection bounds to determine how close a player or object can get to the element to trigger the collision effect. This area, where the player or object intersects with the collision box, is referred to as the collision detection overlap.

Implementing attack animations and hitboxes

The easiest way to make a game is to choose a well-known physics engine to generate simulated physics in the game world. Common examples include PhysX, Bullet, and ODE. Physics engines simulate Newtonian forces in a game, like gravity, momentum, and friction. Not every game has the same requirements. A space game will have a more complex relationship with gravity than one set on an Earth-like world, for instance. Create VFX and SFX to enhance the visual appearance of physics in the game. Add particle effects like a dust cloud to show impact if a character lands hard on the ground, for example.

Create a navigation mesh to allow easy AI pathing. A navigation mesh is a collection of polygons that define where the AI will traverse. A common way to set up a navmesh is by using Recast, a tool that simplifies navmesh building. It allows developers to build a single navmesh or tiled navmesh, which is more complex but supports larger environments with greater complexity. Determine the path planning of NPCs to set up enemy patrol routes, wildlife migration, or simply to have villagers walk around town. Pathing occurs when the NPC moves along the predetermined path, which often exists within the NPC’s state machine or behavior tree.

AI pathing for flying models

Refine real-time motion control responsiveness to optimize motion systems. Debug the controller inputs if they lag or fail to provide sharp responsiveness. When the real-time motion control update rate is slow, the responsiveness feels sluggish. The update rate determines how fast the logic updates. Enhance real-time motion control precision to deliver a satisfying gameplay experience and game feel. Revisit animation blending if certain animations look too choppy to smooth them and make them more realistic, too.

4. Write control schemes

Write control schemes by planning out a control scheme layout and then implementing control scheme mapping. A vital part of game programming is determining game controls. Determine the type of control schemes the game needs during game design. A racing simulation needs control schemes and inputs related to car acceleration, steering, and braking, for example. Games are all about how players interact with the world, and control schemes are the gateway to interaction.

Build player interactivity by linking game logic, like walking or attacking, to an input. Check for input handling responsiveness by testing the input. Poll input devices with one frame of history if it feels sluggish or the input doesn’t fire immediately.  Polling means that the game checks the state of the input devices, like a keyboard or controller. It checks once per frame, but this can sometimes be too slow, especially if a player quickly mashes a button. The input’s frame history fixes this problem by checking the input’s recent past and present. Determine which inputs to use for certain interactions, like the following.

  • Binary Inputs: Simple on/off inputs, often used for attack interactions or jumping, like in the image below of a player jumping in Dragon Age: Inquisition.
Jumping with a binary input in Dragon Age: Inquisition
  • Linear Inputs: Rely on signal strength, like pressing a joystick all the way forward to make a character run, like in the image below of a player making their character transition from a walk input to a run input.
Using linear inputs to run faster in Assassin's Creed Odyssey
  • Gesture Inputs: Patterns of movement inputs or multi-touch events like pinching to zoom in on a screen or drawing shapes or symbols onto the screen, as seen in the following image for a level in Fruit Ninja.
Playing Fruit Ninja with gesture inputs

Implement key binding configuration to allow players to assign different inputs to different buttons or keys. Button mapping customization is a quality-of-life feature that players enjoy. Each player has a different preference for how they like to make a character move, crouch, or attack. Key binding customizability makes games more accessible, too. Create a data structure that enables the game to translate a button press from its old input to the new one. Develop a UI that displays the controller layout, so players can easily see and change inputs as needed. Finally, ensure the new inputs are stored persistently and that the player’s preferred inputs load at the game’s start.

Design inputs with game controller ergonomics in mind. Ensure the player is comfortable when pressing buttons for certain interactions if the game is playable with a gamepad controller. Gamepad design is more rigid than keyboard and mouse design. Certain buttons are routinely used for the same mechanic, regardless of the game. The “O” button on the PlayStation controller is often used to crouch, for example. Test gamepad sensitivity to check that linear inputs are working properly.

Controller layout in Kingdom Come: Deliverance

Determine if the game requires an Undo/Redo stack. Certain games, like city builders or simulation games, require the player to design and build something. An undo input completely negates the previous input, while a redo input reverts the previous undo input. Undo and Redo inputs use command objects to recall previous actions and then undo them, if required by the player. Command design reusability enables the developer to trigger, store, and reverse actions used across different game objects or systems. The image below shows the use of the Undo mechanic in The Sims 4.

The Undo function in The Sims 4

Set state machines for NPC “AI” to govern their behavior. Certain state machines perform specific tasks more effectively than others. A Finite State Machine (FSM) has a set of states and a set of transitions between those states. An NPC with a patrol state machine sees the player and transitions to a chase state machine instead, for example. FSM is easier to understand and implement than other state machines, but it becomes difficult to scale when there are numerous state machines and transitions for the AI to consider.

Consider Hierarchical Finite State Machines (HFSM) for more complex AI behavior. It’s different from FSM because it has sub-states, which allows developers to have more structure and reusable behavior trees. An enemy AI may have the attack state, but underneath the state, it also has sub-states like block, dodge, or counter-attack, for instance. HFSM offers more modular behavior, but it is more challenging to implement.

Character switching to parry state in Clair Obscur: Expedition 33

Try the Markov Model for state machines that require probability. It’s a probabilistic state machine, rather than using deterministic transitions, where X means that Y happens. There’s a 60% chance that the AI will transition from an idle state machine to a chase state machine if it sees the player, for example. The Markov Model is ideal for civilian NPC behavior. It makes them act and behave more realistically. The model isn’t suitable for goal-oriented AI, like guards protecting a door, for example. It’s also harder to debug due to its predictive behavior.

5. Program interaction logic

Program interaction logic to define how the game’s systems communicate with each other. A key element of how to create a game is determining how it reacts to player input and manages changes in state over time. Develop game state transitions between key player actions, like pausing, playing, or game over states. Game state management controls the transitions, ensuring that when the player presses the pause button, the game state changes from “playing” to “paused.”

Program state machine logic to handle transitions and logic branching. State machine transitions commonly occur with player characters and AI. A player engages in combat with an enemy, transitioning from an idle state to a combat state, for example. Consider if certain world events also transition or change the state machine. State machines change based on day/night cycles, too. An NPC switches from a working to a sleeping state, for example. Avoid using callbacks when possible, as changing the state machine outside of the update phase can cause bugs.

Floating bug in Plants vs Zombies

Develop the game loop next as this acts as the engine allowing players to interact with and play the game. Game loops consist of several elements, such as processing inputs, updating game logic, and rendering frames. It’s the code that allows a player to swing a sword and attack an enemy, for instance. Since game loops run with each frame, systems that have more power than others provide smoother performance. Test the game loop on different platforms and PC specifications to determine whether the game is playable on low-end systems.

Set up an input manager to handle all inputs in the game. Inputs allow players to interact with the game. They revolve around everything from picking up an objective to shooting a gun. An input manager defines all the different inputs and how they relate to certain game actions. Defining inputs early in the development process helps everyone know which inputs are already claimed for specific actions. It avoids the problem of developers using the “X” button for several different inputs and creating confusion, for instance.

Marvel's Spider-Man indicates the R2 input to swing

Create Command Patterns when making input events to optimize the code. A Command Pattern turns player actions into objects. The advantage is that these objects are storable, replayable, and are even capable of undoing themselves. A Command Pattern avoids hardwiring a button press to a specific action. As a result, it allows developers to have more flexibility with the input system because the input system is easier to extend in the future. Below is an example of how a Command Pattern works.

  • Input manager binding links “Left Mouse Button” to the “Fire” action.
  • Input manager mapping routes “Fire” to the combat system.
  • Input manager interpretation checks if the player can currently fire.
  • A FireCommand object is created (Command Pattern encapsulation).
  • The command is either:
    • Invoked immediately (Command Pattern Invocation) or
    • Sent to an event system queue
  • The event system dispatches it to the right handler.
  • Optional: If using the Command Pattern undo, that command is stored for possible reversal.

Determine whether using an Entity-Component-System (ECS) is the right type of game architecture for the project. ECS improves performance by optimizing the flow of logic between player actions and components. They don’t rely on object-oriented programming, which sometimes provides inheritance hierarchical problems that reduce the flexibility in scaling and modifying. They’re compromised of three elements as seen below.

  • Entities: Unique IDs that represent a game object.
  • Components: The data of a specific entity such as Health.
  • System: The logic that links entities and components together such as collision detection.

Choose between using either a Server-Authoritative networking system or a Peer-to-Peet networking system when coding a multiplayer game. A Server-Authoritative system works by taking player inputs and sending them to a server. The server then reads the inputs, determines what is happening, and then sends a signal back to the player and other clients with its decision.

In a multiplayer shooting game such as Overwatch, the Server-Authoritative system works as such. A player shoots a target, sending the input to the server. The server then gathers all the necessary information to determine if the player hit the target. It makes its decision, then sends the result back to the player, which shows their target getting hit by their attack and taking damage.

Overwatch let players create servers and game modes

Peer-to-Peer networking systems are different. The processing of inputs is done on a player’s system instead. The player’s system, known as a client, runs its own simulation. When it makes a decision about what’s happened, it then shares the update with the other players also connected to the client. Peer-to-Peer affects determinism, which is when the same initial state and the same input give the same result. It makes it easier for players to cheat or exploit the system. Take a look at the table below to determine which networking system is ideal for the project.

Feature Server-Authoritative (Fortnite) Peer-to-Peer (Borderlands 3)
Control Server owns game logic Host or shared clients
Cheating risk Low Higher
Desync risk Low Medium – High
Multiplayer type Competitive / Large-scale Co-op / Casual
Scalability Very high Moderate

 

6. Establish progression systems

Establish progression systems that determine how players advance in the game. A progression system covers the way in which a player becomes stronger. It covers aspects such as getting new equipment, new skills, and other types of advancement rewards. There are several different types of progression systems to implement when coding a game. Determine which progression systems below are suitable to implement for the project.

  • Horizontal Progression System: A selection of different skills, equipment, and abilities for players to choose as they grow stronger. An example is new weapon types in the Far Cry franchise or spells/abilities in the Final Fantasy franchise.
Horizontal progression system
  • Vertical Progression System: An upgrade of an existing weapon, player statistic, spell, or ability. An example is an uncommon sword that gets upgraded into a rare sword, like in Assassin’s Creed Odyssey.
Vertical progression system
  • Player-Character-Based Progression System: Progression that deals with the player character specifically, most often when they expend XP to improve stats or gain/lose reputation with a faction. An example is gaining reputation with a faction in the Fallout franchise.
Player-character-based progression system
  • World Progression: Progression that covers levels, quests, narrative, and enemy difficulty balance. An example of enemy difficulty balance is when the enemies in a new zone or level start wearing armor that soaks more damage.
Fighting tougher enemeis in Assassin's Creed Odyssey

Define and develop leveling systems to establish when players advance in the game. Begin by determining the leveling system thresholds. These are the XP requirements to advance to a new level, for example. Be cautious about setting low threshold values to prevent players from advancing too quickly. Experience point accumulation should match the difficulty curve of the game. Develop and test the level system scaling to ensure that the amount of XP players receive makes sense for the type of enemies or challenges they’re facing.

Create skill tree branches to give players new ways of handling tougher challenges. Design the skill tree branches with a simple sketch. Players must have starting abilities that grow stronger over time. Implement skill tree specializations when players hit major level milestones. Specializations allow players to create unique builds that improves both player satisfaction and increases the chances of replayability. Keep skill trees and specializations organized by using a database. The database must hold key information such as the player’s skills, abilities, and how they advance over time.

Creature attack and ability database

Determine the type of rewards that players receive throughout the game. Plan reward system incentives that revolve around player advancement and story advancement. After a player defeats a major boss in a region, the player advances to the next region, for instance. Test player satisfaction with reward incentives to determine if they’re valuable enough. A challenging boss fight or dungeon must have rewards that match the effort players use to defeat them.

Balance the difficulty curve of the game to improve player enjoyment. Complex challenges must match the player’s ability level. The last thing the design team must do is throw an impossible boss at a player as soon as they enter the game. Match the player’s progressive curve with the difficulty curve. As players gain more powers or more powerful gear, the challenge of enemies and obstacles must match. Challenges that are too difficult impacts the core loop engagement. Players won’t want to engage with the game if it’s unfairly difficult.

Balancing challenge and fun through the difficulty curve

Listen to player feedback on progression systems. Player feedback tells the team whether the progression system is satisfying or not. An example of feedback is that players feel that it takes too long to reach a certain milestone. The team needs to review the requirement to reach the milestone and determine whether lowering or removing a requirement yields a more satisfying experience. Iterate the progression system if it fails to meet expectations.

Monitor and fix bugs found in game events. Game events are specific conditions that trigger an event. An example is when a player defeats an enemy or boss. After defeating the boss, the game updates and provides the next challenge. The game state changes in some way. A way to implement game events in a meaningful way is to use Command Patterns. They allow the game to simultaneously execute VFX and SFX elements to make the game event even more impactful. When a player levels up, there’s a sound and visual element to make that moment more exciting, for instance.

Multiple commands executing on the Baldur's Gate 3 level-up screen

Implement New Game + features to encourage players to continue to progress after completing the game. Not every project has the budget to support New Game + features. Adding them increases player satisfaction and engagement, though. It encourages the player to stick with the game and try out new builds or handle encounters in a different way. Define what data must be saved and moved forward to support a New Game + playthrough. Cloud syncing is a possible method to keep the data protected and stored without eating into too much memory.

8. Implement challenge systems

Implement challenge systems to make the game engaging to players. Design challenge system rules first as this creates a structured guideline that all future challenges draw from. It determines just how challenging the game is going to be on its default difficulty mode. Choosing to have players drop their loot boxes upon death is an example of deciding how challenging to make the game. Lay out the challenge system mechanics that the team uses in the future to create different challenges and obstacles for players to overcome. The Portal Gun in Portal 2 uses specific traversal mechanics to complete challenges, for example.

Challenge system mechanics and obstacles in Portal 2

Scale challenges by implementing difficulty settings. Difficulty settings are structured modes that use specific parameters to make certain aspects of the game more challenging. These parameters are also known as difficulty modifiers, like increasing enemy health by 50% on Hard Mode. Organize the parameters and modifiers into difficulty setting graduations, which are typically Easy, Medium, Hard, and Nightmare Mode. Design levels with difficulty settings in mind, implementing or removing certain obstacles in the level based on the difficulty setting.

Difficulty modes in Marvel's Spider-Man

Build a progression system that balances with the challenge system. A progression system uses progression stages that determine how strong a character is during a specific part of the game. An early progression stage focuses on basic movement, while a later progression stage focuses on more complex mechanics, for instance. Design each progression tier to feel like it’s a step forward. Progression tiers must feel easy at first, but the introduction of new challenge systems must continue to test players as the game continues. Think of how Super Mario Bros. starts with flat terrain, then adds more obstacles, like pits and enemies, to continue challenging the player, for example.

Increasing the challenge system in Super Mario Bros.

Create achievement and reward systems to reinforce challenge systems. An effective challenge system doesn’t provide challenge obstacles alone just for the sake of giving the player something to do. A reward system motivates the player to dig in and overcome challenges. Implement an achievement system to provide players with even more motivation to overcome specific challenges. Set achievement milestones or reward bonuses for players who like to go above and beyond what a challenge typically requires of them. Players receive an achievement on Steam if they defeat a boss on Nightmare mode, for example.

Stardew Valley unlocked Steam achievements

Test challenge systems for player satisfaction and engagement. Playtesting reveals whether challenge systems are fair and whether difficulty settings scale as intended. Use feedback to develop smoother progression system tiers. Refer to the original challenge system design to ensure that every challenge matches the overall game design. If players skip an entire level or boss, then it signals that something is broken, the challenge is too tough, or the reward isn’t satisfying enough.

9. Define objective frameworks

Define objective frameworks to create clear objectives for players, helping them to feel a sense of direction and motivation within the game. Learn how to make video games and code them by examining open-source projects. Look for games with a similar game design to make the research effective. See how those games use game objects, mechanics, and systems to create quests, achievements, and rewards. Examine their victory condition requirements and how they’re implemented to understand how progression is structured.

Design clear, objective criteria to create measurable goals that the player must achieve, such as collecting a specific number of items. Tie the objective criteria to a progression system advancement that tracks the player’s growth and skill level. Use progression system scaling to increase the challenge over time. Redefine the objective criteria as the difficulty rises to keep quests fresh and to keep pace with the game’s difficulty curve.

Kingdom Come: Deliverance quest objectives

Choose a framework architecture that best fits the game. Skyrim utilizes a quest framework with a branching system, where player choices influence quest outcomes, for example. Determine which objectives require task hierarchy, which breaks objectives into smaller tasks. Tie the objectives into the game’s narrative structure to enhance immersion and make every objective feel like it matters to the overall story. Determine the type of script used to create the objectives. Here are some types of scripts and systems used to create objective frameworks.

  • Level Scripts: Monitor player actions and world states to check if certain objectives have been met. They offer greater flexibility but more development time and effort.
  • Stats Matching System: Keeps track of a player’s statistics, then triggers objectives and events when conditions align, for example. This method simplifies implementation but also limits the use of complex frameworks.
  • Goal System: Responds to world events and checks for certain objectives having been met. A simplistic method that doesn’t offer modularity.

Research SDK APIs and SDK toolsets to create objective frameworks faster. Certain SDKs, like Unreal Engine, provide powerful built-in tools to make frameworks easier. Create a data table or structure, fill in the information, and then use it as needed, eliminating the need to develop code solely to create the structure in the first place. Consider using the object/component model structure, which allows each quest or achievement to be an independent object with defined interactions and relationships. Unity’s component-based architecture allows developers to attach scripts for objectives directly to game objects, for example.

Make the reward system clear when designing objectives. The objective framework must include a clear reward system incentive. An NPC might tell the player the type of reward they’ll offer if the player completes a quest for them, for example. Include any additional information to the player so they know the victory conditions they need to meet to get a full reward. Implement victory condition completion, where the player receives their rewards, and test the entire quest to see if the code works.

Medieval Dynasty quest with a clear reward incentive

10. Execute iterative development

Execute iterative development to catch bugs early and alter build systems as needed. Game design has several design phases, with game coding taking the longest. Practice iterative design as the game is being made to save time. Otherwise, the team might spend just as much time trying to find all the bugs that break the game or redesign it from scratch after it fails to impress the player base. Expect to repeat several of the steps previously throughout the game’s development. Even incremental improvements will lead to an overall better game in the end.

Build flexible and replaceable architecture that enables modifying existing systems instead of having to do everything over again from scratch. Avoid rigid structures like extending behavior through OO inheritance when possible, as it leads to fragile systems and technical debt. Consider using Command Patterns instead, which are more flexible and are capable of execution one after the other through flush queueing.

A Command Pattern in Unity

Test ideas early with simple prototypes before committing to full implementations. Rapid prototyping helps validate concepts and exposes flaws while changes are still cheap and easy to implement. Run frequent playtests to observe how players actually interact with the systems. Actual, quantifiable behavior reveals more than just assumptions made during game coding. Integrate user feedback continuously to refine mechanics, pacing, and progression. Remove any code that doesn’t add to the value of the game.

Use bug reporting tools to log issues clearly. Prioritize which bugs require the most urgent fix. Continue to update the bug reporting log to keep everyone on the same page. It’s easy for developers to become siloed during the game development process, so ensure that everyone practices continuous integration testing to validate each new code with every commit. Keep the bug reporting log up to date so that everyone is aware of the latest status of specific bugs.

Pathing code bug

Consider using external code when possible, but always practice due diligence. Third-party software has its limitations, so always test, refine, and iterate when using new software to take some of the load off from writing code. Form contingency plans in the event that the software doesn’t perform well or leads to more problems than it is worth. Check to see if the external code is as detailed as it needs to be, as this can lead to more problems down the line. Allow the use of external code to support developers, but always rely on iterative development to catch its flaws.

How to create a game without coding?

To create a game without coding, you’ll need to use an engine that supports visual scripting, like Unreal Engine’s Blueprints system, or an engine that uses drag-and-drop features from pre-existing assets, like RPG Maker or Core. Engines that use drag-and-drop interfaces or event-based systems allow you to make anything from puzzle games to polished RPGs. Learn how to make your own video game and even learn how to code by understanding the logic behind the visual scripting tools. Games using no-code engines are out there and even successful, but they take work to get right.

Code in Unreal Engine vs Blueprints

Focus on learning game logic as you go, since understanding what the nodes are doing will help you cut down on code bloat. Visual scripting replaces traditional methods of game programming. You won’t be writing code and instead will be linking or connecting different nodes together to create logic, such as in Unreal Engine’s Blueprint system. I’ve used Blueprints to create standard RPG systems, such as player health, inventory, and others. Use these engines to generate visual mock-ups or quick prototypes to test gameplay loops or other aspects of the game.

Create visually from day one. Making a game without code has the advantage of using pre-built systems. They save time since you don’t have to develop a lot of systems yourself. You only need to fill in the details. Unreal Engine enables you to achieve high-end results quickly, particularly in showcasing polished visuals, for example. I’ve also found that it’s easier to learn how to code while using visual scripting. Understanding how each node functions and how it influences others reinforces what I’ve learned about coding through traditional educational sources.

Blueprint vs C++ coding in Unreal Engine

Expect limitations as your game grows. No-code tools struggle when it comes to complex projects. As the logic scales, you’ll find a whole network of nodes growing, too. Without proper documentation and commenting, as is the case in Unreal Engine, understanding which branch does what can be confusing. Visual scripting also adds more code than is necessary at times. There are more elegant and cleaner solutions you can use when you write and use code directly. Remember that even no-code engines still require you to think like a programmer.

What engines are used to create games without programming?

Engines used to create games without programming rely on visual scripting or other visual elements to generate game logic. Game engines like GDevelop, Buildbox, PlayCanvas, and Modd.io enable you to construct 2D and 3D games of various genres. Each engine has its advantages and disadvantages, so take time to go through them all and choose the one that fits the genre of your game the best. Then, determine which engine is the easiest for you to use. Focus on the following beginner-friendly engines to get started.

Explore GDevelop’s intuitive event system. GDevelop is a no-code game engine designed to make game creation accessible. You can use GDevelop’s drag-and-drop interface to take objects and visuals and place them directly into a level. GDevelop uses an event system, which defines game logic as “if this, then that.” When a player collides with an enemy, subtract health, for example.

Creating a level in GDevelop's editor

Design with Buildbox’s visual workflow. I used Buildbox when I first started getting into game development, and I found it to be an excellent source for introducing basic concepts of game design and development. Buildbox is a no-code engine built for rapid prototyping, and I believe that’s its best use case for professional developers. The visual interface supports drag-and-drop in Builbox, and it has a node system, allowing you to go a little deeper with game logic. Remove technical barriers to get started learning and prototyping with Buildbox immediately.

Drag-and-drop animations in Buildbox

Create with Construct 3’s event-driven logic. Construct 3 also uses an event-driven system that makes game logic easy to manage without code. Define behavior through Construct 3’s visual scripting tools, where conditions and actions are laid out in an easy-to-read format. Construct 3 also uses drag-and-drop interfaces, allowing you to easily select what assets you want in a level. Construct 3 is particularly useful for 2D games, but it supports 3D games, too. It supports JavaScript, which means you can start to dabble with coding when you’re ready.

Creating an event in Construct 3's engine

Learn coding while using no-code tools with Game Maker Studio’s hybrid approach to making video games. Game Maker Studio offers a flexible entry point for new developers since it offers drag-and-drop interfaces with visual scripting tools. Game Maker Studio focuses on 2D games, so if you want to make a 3D game, you’ll want to look for another no-code game engine that supports it. Game Maker Studio also allows you to switch between using its own code language, GML, and visual scripting, which helps you learn how to code with the engine in the process.

Game Maker Studio's GML code vs GML script

Use Stencyl’s block-based game engine to create 2D games. The game engine was inspired by MIT’s Scratch, another game engine geared toward helping kids make games. Stencyl works by dragging and dropping blocks onto a scene to create a level. You can also use event-based systems to create game logic. Stencyl focuses on beginner-friendly, visual scripting, but it also allows certain users to create their own logic blocks from scratch.

Stencyl's block-based programming interface

Build games with Clickteam Fusion 2.5’s event editor. Clickteam replaces traditional coding with a grid-based event editor. Creating logic is as simple as toggling on and off specific values to either true or false. The engine also supports physics, with developers able to apply physics to most objects in the game. Learn Clickteam Fusion 2.5’s grid-based game editor fast and receive support from its community to help troubleshoot problems.

Clickteam Fusion 2.5's grid-based event editor

Create RPGs with RPG Maker MZ. RPG Maker is a well-known no-code engine that makes creating 2D RPGs easy. It specializes in RPGs, so all of its systems are built around RPG mechanics. RPG Maker has an asset store, which developers can use to purchase sprites or other assets. There are also free assets to help developers get started. Making RPGs is simpler with RPG Maker due to its database system. Developers simply type in the names of the entities, and the engine updates the logic.

Designing original sprites in RPG Maker

Try GameSalad for mobile-focused game creation. GameSalad offers no-code development that uses a clean visual interface and drag-and-drop tools. You define game behavior by setting rules and conditions through its visual interface. GameSalad is designed for kids 12 years and older to use, so it keeps its programming simplistic. It supports mobile games and helps ship out to major app stores.

GameSalad's visual interface script editor

Build directly in your browser with FlowLab. FlowLab is a browser-based engine that makes game development accessible anywhere. It uses both a drag-and-drop system and visual scripting tools to bring the game to life. Simply connect nodes to create game behavior. FlowLab also encourages learning, allowing you to open up any game on its site to see how the developers made it. It also handles everything from sprite creation to game logic.

FlowLab's node-based visual scripting editor

Create story-driven games with Adventure Game Studio. Adventure Game Studio focuses on narrative-rich, point-and-click, adventure games. It provides tools for creating dialogue trees, inventory systems, and scene transitions. Game behavior is handled by creating event systems, which allow you to make interactions without having to write code traditionally. It also uses open-source software, so it’s completely free to use and share.

FlowLab's node-based visual scripting editor

Where to learn game design and development?

Learn game design and development by taking courses, going through tutorials, and joining communities. Game Maker’s Toolkit is a YouTube channel that covers design concepts and even provides tutorials. The channel examines a game, such as The Legend of Zelda, and tries to improve it in some way. In The Legend of Zelda’s case, it was improving its UI. Follow the channel’s tutorials to learn how to design and develop certain aspects in the game, especially in Unity.

Improve your technical skills by taking part in courses such as Codecademy’s Programming Fundamentals. Codecademy has hundreds of courses related to game development, particularly in learning a programming language. For free online courses, check out Khan Academy. It offers similar lessons to Codecademy, allowing its users to learn programming languages such as Python, JavaScript, and others. Some popular courses from Codecademy and Khan Academy to get started are found below.

  • Codecademy: Learn Java: Object-Oriented Programming
  • Codecademy: Learn C++
  • Codecademy: Learn Intermediate C#
  • Khan Academy: Computer Science Principles
  • Khan Academy: Intro to Computer Science – Python
  • Khan Academy: Computer Programming – JavaScript and the Web

I taught myself how to program by reading documentation from the engine I was using, Unreal Engine. Engines such as Unreal Engine, Godot, and Unity have a wealth of documentation that explains how to use it. Mixing tutorials with reading the documentation helps explain concepts and also provides use-case examples. Watch online conferences, such as the Game Developer’s Conference, to learn about game design and game development concepts, too.

Image27

Take Coursera lessons on programming from accredited institutions such as The University of Michigan, IBM, and The University of Edinburgh. These courses are led by professionals and approved by the institution, providing in-depth lessons that teach a specific coding language. Search GameDev.tv for courses related to specific coding needs, such as learning how to code an action game on Unity. These courses offer a complete tutorial, teaching you basic and advanced code, with the goal of having a playable game prototype by the end of the course.

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