# Game engine

A game engine is a software framework that provides libraries and tools for game development.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Playco cut manual fixes 50% prototyping games with GPT-6 Astra

DevFeed: [Playco cut manual fixes 50% prototyping games with GPT-6 Astra](<https://devfeed.tech/articles/playco-cut-manual-fixes-50-prototyping-games-with-gpt-6-astra-6609.md>)

Original publisher: [Read original article](<https://openai.com/index/playco-game-prototyping-with-astra>)

Published: 2026-09-03T12:00:00Z

Content type: article

Language: en

Sources: [OpenAI News](<https://devfeed.tech/sources/openai-news.md>)

Topics: [Game engine](<https://devfeed.tech/topics/game-engine.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-models](<https://devfeed.tech/tags/ai-models.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [gpt](<https://devfeed.tech/tags/gpt.md>), [ide](<https://devfeed.tech/tags/ide.md>), [performance](<https://devfeed.tech/tags/performance.md>), [prototypes](<https://devfeed.tech/tags/prototypes.md>), [prototyping](<https://devfeed.tech/tags/prototyping.md>), [reasoning](<https://devfeed.tech/tags/reasoning.md>), [startup](<https://devfeed.tech/tags/startup.md>), [ui](<https://devfeed.tech/tags/ui.md>), [vision](<https://devfeed.tech/tags/vision.md>)

### AI overview

Playco reports that GPT-6 Astra helped it create three themed game prototypes from a shared grey-box foundation, with 50% fewer manual fixes than its previous model. The company uses the model in Playbot, an AI-powered IDE connected to game engines for editing, testing, validation, and bug finding.

### Source excerpt

Using GPT-6 Astra, Playco built three themed game prototypes from one grey box foundation and reported 50% fewer manual fixes than with the previous model.

## Relative velocity and closing speed

DevFeed: [Relative velocity and closing speed](<https://devfeed.tech/articles/relative-velocity-and-closing-speed-35144.md>)

Original publisher: [Read original article](<https://eli.thegreenplace.net/2026/relative-velocity-and-closing-speed/>)

Author: Eli Bendersky

Published: 2026-08-04T03:01:00Z

Content type: tutorial

Language: en

Sources: [Eli Bendersky](<https://devfeed.tech/sources/eli-bendersky.md>)

Topics: [Simulation](<https://devfeed.tech/topics/simulation.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [3D](<https://devfeed.tech/topics/3d.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [game](<https://devfeed.tech/tags/game.md>), [math](<https://devfeed.tech/tags/math.md>), [misc](<https://devfeed.tech/tags/misc.md>), [physics](<https://devfeed.tech/tags/physics.md>)

### AI overview

A tutorial on closing speed, defined as the normal component of the relative velocity between two objects. It explains vector projection, the role of the connecting line between the objects, and how the sign indicates whether they are approaching or separating.

### Source excerpt

In Physics simulations or game engines it's sometimes useful to determine the speed with which two objects are approaching each other. This post will discuss the concept of closing speed, which is the normal component of the relative velocity of two objects. Relative velocity and its components Suppose we ...

## Technical Development of The Incident at Galley House

DevFeed: [Technical Development of The Incident at Galley House](<https://devfeed.tech/articles/building-galley-house-40648.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2026-07-28-building-galley-house/>)

Published: 2026-07-28T00:00:00Z

Content type: article

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [development](<https://devfeed.tech/tags/development.md>), [game](<https://devfeed.tech/tags/game.md>), [html](<https://devfeed.tech/tags/html.md>), [interface](<https://devfeed.tech/tags/interface.md>), [steam](<https://devfeed.tech/tags/steam.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

A technical development post about The Incident at Galley House, covering its origins as a Twine and HTML prototype, iterative content and puzzle testing, and adaptation of its typing-based gameplay for a controller interface.

### Source excerpt

Evil Trout's second game, The Incident at Galley House, is out now on Steam! Last year, after The Roottrees are Dead shipped, I wrote a technical blog post about its development, which was well received, so I decided to do the same thing for this game. Note: The images in this post have minor spoilers for the beginning of the game. If you want to be 100% spoiler free, now's your chance to run away.

## Q&A: How Capcom Brought Path Tracing to RE ENGINE Across PRAGMATA and Resident Evil Requiem

DevFeed: [Q&A: How Capcom Brought Path Tracing to RE ENGINE Across PRAGMATA and Resident Evil Requiem](<https://devfeed.tech/articles/q-a-how-capcom-brought-path-tracing-to-re-engine-across-pragmata-and-resident-evil-requiem-6923.md>)

Original publisher: [Read original article](<https://developer.nvidia.com/blog/qa-how-capcom-brought-path-tracing-to-re-engine-across-pragmata-and-resident-evil-requiem/>)

Author: Michelle Horton

Published: 2026-07-16T22:59:09Z

Content type: article

Language: en

Sources: [NVIDIA Developer](<https://devfeed.tech/sources/nvidia-developer.md>), [NVIDIA Technical Blog](<https://devfeed.tech/sources/nvidia-technical-blog.md>)

Topics: [Game Development](<https://devfeed.tech/topics/game-development.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [Nvidia](<https://devfeed.tech/topics/nvidia.md>)

Tags: [content-creation-rendering](<https://devfeed.tech/tags/content-creation-rendering.md>), [development](<https://devfeed.tech/tags/development.md>), [featured](<https://devfeed.tech/tags/featured.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [nvidia](<https://devfeed.tech/tags/nvidia.md>), [nvidia-rtx](<https://devfeed.tech/tags/nvidia-rtx.md>), [pc](<https://devfeed.tech/tags/pc.md>), [ray-tracing](<https://devfeed.tech/tags/ray-tracing.md>), [ray-tracing-path-tracing](<https://devfeed.tech/tags/ray-tracing-path-tracing.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [technology](<https://devfeed.tech/tags/technology.md>), [unreal-engine](<https://devfeed.tech/tags/unreal-engine.md>)

### AI overview

Capcom's RE ENGINE team developed and integrated a real-time path tracer for PRAGMATA and Resident Evil Requiem. Built on the NVIDIA RTX Kit and optimized for DLSS, the renderer replaces shadow-map direct lighting, improves continuity between gameplay and cutscenes, and enables more cohesive indirect lighting, reflections, and strand-hair light transmission.

### Source excerpt

Capcom's RE ENGINE team set out to bring path tracing into two shipping titles at once, Resident Evil Requiem and PRAGMATA, each with a different visual...

## Building a Simple Tetris Game with Phaser, React, and Zustand

DevFeed: [Building a Simple Tetris Game with Phaser, React, and Zustand](<https://devfeed.tech/articles/really-easy-tetris-40770.md>)

Original publisher: [Read original article](<https://eieio.games/blog/really-easy-tetris>)

Author: Nolen Royalty (eieiogames@gmail.com)

Published: 2026-02-27T00:00:00Z

Content type: opinion

Language: en

Sources: [eieio.games](<https://devfeed.tech/sources/eieio-games.md>)

Topics: [Phaser](<https://devfeed.tech/topics/phaser.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [React](<https://devfeed.tech/topics/react.md>), [Zustand](<https://devfeed.tech/topics/zustand.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [game](<https://devfeed.tech/tags/game.md>), [games](<https://devfeed.tech/tags/games.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [react](<https://devfeed.tech/tags/react.md>), [updates](<https://devfeed.tech/tags/updates.md>)

### AI overview

The author describes making a simplified Tetris game using only I-block pieces to explore the Phaser game engine. The article explains how Phaser handles gameplay while React renders the surrounding UI, with Zustand sharing state between them, and reflects on Phaser's trade-offs compared with larger engines such as Godot and Unity.

### Source excerpt

tetris, but you only get the good pieces

## How Figma draws inspiration from the gaming world

DevFeed: [How Figma draws inspiration from the gaming world](<https://devfeed.tech/articles/how-figma-draws-inspiration-from-the-gaming-world-9760.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/how-figma-draws-inspiration-from-the-gaming-world/>)

Author: Alice Ching

Published: 2023-05-03T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Figma](<https://devfeed.tech/topics/figma.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [systems](<https://devfeed.tech/topics/systems.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [figma](<https://devfeed.tech/tags/figma.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [tech-stack](<https://devfeed.tech/tags/tech-stack.md>)

### AI overview

Figma Engineering Manager Alice Ching explains how Figma and FigJam draw inspiration from video game engines. The article compares their collaborative, creative interfaces and technical architecture with game-engine systems such as graphics rendering, controls, multiplayer collaboration, physics, and animation.

### Source excerpt

Engineering Manager Alice Ching discusses the parallels between developing gaming interfaces and building Figma and FigJam, and why our tech stack is more similar to a game engine's tech stack than a web stack.

## How to Use GPT-4 to Create Interactive Text-Based Adventure Games

DevFeed: [How to Use GPT-4 to Create Interactive Text-Based Adventure Games](<https://devfeed.tech/articles/make-a-fun-infinitely-replayable-game-in-5-minutes-with-gpt-4-35239.md>)

Original publisher: [Read original article](<http://matt.might.net/articles/make-a-text-game-with-generative-ai/>)

Published: 2023-04-01T15:48:44Z

Content type: tutorial

Language: en

Sources: [Matt Might](<https://devfeed.tech/sources/matt-might.md>)

Topics: [Generative AI](<https://devfeed.tech/topics/generative-ai.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [game](<https://devfeed.tech/tags/game.md>), [generate](<https://devfeed.tech/tags/generate.md>), [gpt](<https://devfeed.tech/tags/gpt.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interactive](<https://devfeed.tech/tags/interactive.md>), [make](<https://devfeed.tech/tags/make.md>), [save](<https://devfeed.tech/tags/save.md>), [text](<https://devfeed.tech/tags/text.md>)

### AI overview

This tutorial explains how to use GPT-4 as a game engine for interactive text-based adventure games by defining a fictional universe and designing a prompt to simulate gameplay. It also describes adding a save-game feature so players can save and resume the game state.

### Source excerpt

Compared to prior versions, GPT-4 is more capable at writing fiction. Combined with its advances in reasoning, this allows it to maintain a consistent state in a fictional universe as it emulates a text-based adventure game like the classic Zork. In this article, I'll explain how to convert GPT-4 into a game engine for interactive text-based adventure games with just two simple steps: Create a descriptive lore to define the universe and the player Engineer a prompt to simulate a text-based adventure game You can even add a save game feature that allows you to save the state and resume play later. While GPT-3 works with these techniques, it tends to create worlds with less coherent states and the game has shallower narratives compared to GPT-4. The backstory Figuring out how to create these games emerged from my kids' bedtime. Before they go to bed, I like to spend 15-30 minutes doing something educational and entertaining, such as: reading a book or a graphic novel; doing simple crafts like paper airplanes; asking a question on their mind and searching for the result; choosing an object to have 3D printed by morning; or writing a small program or part of a larger program. Not surprisingly, generative AI expands what you can do in 15-30 minutes! For instance, this image took about 30 minutes from start to finish, combining Midjourney to generate a base image, Lensa to do touch-ups and change the background and then DALL-E to tweak parts of it and extend the borders: The opportunities for text-based gaming turn out to the just as rich! My daughter had created a fictional universe with friends at school, complete with its own lore. So, we dropped in the lore and then asked it to act like a role-playing game in that world. We ended up spending an hour exploring this world brought to life, completing the first "quest" it had imagined for us. Click here to read the rest of the article

## Monthly Update on a Haskell Game Engine

DevFeed: [Monthly Update on a Haskell Game Engine](<https://devfeed.tech/articles/monthly-update-on-a-haskell-game-engine-27910.md>)

Original publisher: [Read original article](<http://alt-romes.github.io/posts/2023-01-01-monthly-update-on-a-haskell-game-engine.html>)

Published: 2023-01-01T00:00:00Z

Content type: opinion

Language: en

Sources: [Romes' Musings](<https://devfeed.tech/sources/romes-musings.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [shaders](<https://devfeed.tech/topics/shaders.md>), [glsl](<https://devfeed.tech/topics/glsl.md>), [Graphics](<https://devfeed.tech/topics/graphics.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [programming](<https://devfeed.tech/tags/programming.md>), [render](<https://devfeed.tech/tags/render.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [technical](<https://devfeed.tech/tags/technical.md>), [vulkan](<https://devfeed.tech/tags/vulkan.md>)

### AI overview

A monthly development update on Ghengin, an unreleased Haskell game engine. It describes a procedural-planets demo and outlines the engine's Vulkan renderer, FIR shaders embedded in Haskell, entity management, scene graph, render queue, and supporting libraries.

### Source excerpt

Contents 1 Ghengin 1.1 Bullets on Technical Details 1.2 The Small Victories 1.3 A peek into the code 1 Ghengin I've been working the past month or two in a game engine titled Ghengin (pronounced /ɡɛn-ʤɪn/, never /ɡɛn-ɡɪn/). This is not yet a release, and version 0.1.0 is far into the future. However, I've come a long way and I'd like to share a few pictures of my progress. This post was migrated from the discussion at the Haskell Discourse The demo I've been working on is based on Sebastian Lague's series Procedural Planets. It is a showcase of procedurally generated planets you can move around in and tweak the procedural generation parameters of the planets to create oceans and continents. Fig 1. Screenshot of planets demo 1.1 Bullets on Technical Details I hope to, soon enough, write a more substantial explanation of the engine's technical challenges and overall design decisions so far, and on the game developer's facing side of the engine. In the meantime, here are a few key points regarding the technical feats of the engine along with the main libraries it currently depends on, which help create a picture of how it is working: The renderer is written using the great bindings to the Vulkan API The shaders are crucial in the overall design, and a lot of code depends on their definition (e.g. preparing render pipelines, allocating descriptor sets and textures, everything materials related ...). The shaders are written using FIR, an amazing shader language embedded in Haskell! The entity management, scene graph and render queue are done/created through the apecs entity component system. Vectors and matrices are from geomancy GLFW-b for window management and user input (used as the window backend for vulkan) The dear-imgui bindings for the GUI JuicyPixels for loading textures FIR is a really cool shader library and unlike any you've likely tried before (it's embeded in Haskell, but that's just the start). The shader's "interfaces" are defined at the type level, and in

## Flap Hero Code Review

DevFeed: [Flap Hero Code Review](<https://devfeed.tech/articles/flap-hero-code-review-21019.md>)

Original publisher: [Read original article](<https://preshing.com/20201210/flap-hero-code-review>)

Author: Jeff Preshing

Published: 2020-12-10T20:23:00Z

Content type: article

Language: en

Sources: [Jeff Preshing](<https://devfeed.tech/sources/jeff-preshing.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Code](<https://devfeed.tech/topics/code.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [OpenGL](<https://devfeed.tech/topics/opengl.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [macOS](<https://devfeed.tech/topics/macos.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [build](<https://devfeed.tech/tags/build.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code](<https://devfeed.tech/tags/code.md>), [framework](<https://devfeed.tech/tags/framework.md>), [general](<https://devfeed.tech/tags/general.md>), [github](<https://devfeed.tech/tags/github.md>), [ios](<https://devfeed.tech/tags/ios.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>)

### AI overview

This code review examines Flap Hero, a small C++ game built without an existing game engine. It explains the project's architecture, reusable modules, dependencies, gameplay state management, platform-specific projects, and deliberately limited subsystem design. The article also discusses the use of Plywood, OpenGL, and advanced C++ features in lower-level modules.

### Source excerpt

Flap Hero is a small game written entirely in C++ without using an existing game engine. All of its source code is available on GitHub. I think it can serve as an interesting resource for novice and intermediate game developers to study. In this post, I'll explain how Flap Hero's code is organized, how it differs from larger game projects, why it was written that way, and what could have been done better. Very little information in this post is specific to C++. Most of it would still be relevant if Flap Hero was written in another language like C#, Rust or plain C. That said, if you browse (or build) the source code, you will need some fluency in C++. Learn C++ and Learn OpenGL are two great resources for beginners. For the most part, Flap Hero's source code sticks to a fairly straightforward subset of C++, but the deeper you go into its low-level modules (like runtime), the more you'll encounter advanced C++ features like templates and SFINAE. General Architecture Flap Hero was developed using Plywood, a C++ framework that helps organize code into reusable modules. Each yellow box in the diagram below represents a Plywood module. The blue arrows represent dependencies. platform runtime image math plywood repo flapGame glfwFlap GameFlow.cpp GameState.cpp Collision.cpp Text.cpp FlapHero repo Public.h glfw soloud glad assimp Main.cpp iOS project Android project iOS project iOS project Windows,Linux& macOS Assets.cpp GLHelpers.cpp The biggest chunk of Flap Hero's game code is located in the flapGame module, which contains roughly 6400 physical lines of code. The two most important source files in the flapGame module are GameFlow.cpp and GameState.cpp. All the state for a single gameplay session is held inside a single GameState object. This object is, in turn, owned by a GameFlow object. The GameFlow can actually own two GameState objects at a given time, with both gameplay sessions updating concurrently. This is used to achieve an animated "split screen" effect during

## A Flexible Reflection System in C++: Part 1

DevFeed: [A Flexible Reflection System in C++: Part 1](<https://devfeed.tech/articles/a-flexible-reflection-system-in-c-part-1-21013.md>)

Original publisher: [Read original article](<https://preshing.com/20180116/a-primitive-reflection-system-in-cpp-part-1>)

Author: Jeff Preshing

Published: 2018-01-16T14:21:00Z

Content type: article

Language: en

Sources: [Jeff Preshing](<https://devfeed.tech/sources/jeff-preshing.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [JSON](<https://devfeed.tech/topics/json.md>), [OpenGL](<https://devfeed.tech/topics/opengl.md>), [3D rendering](<https://devfeed.tech/topics/3d-rendering.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [3d-rendering](<https://devfeed.tech/tags/3d-rendering.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code](<https://devfeed.tech/tags/code.md>), [github](<https://devfeed.tech/tags/github.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [json](<https://devfeed.tech/tags/json.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This article presents a small runtime reflection system for C++11. It explains how runtime-created type descriptors represent C++ type metadata and support serialization, rendering, graphics programming, and JSON-based asset importing in a custom game engine.

### Source excerpt

In this post, I'll present a small, flexible system for runtime reflection using C++11 language features. This is a system to generate metadata for C++ types. The metadata takes the form of TypeDescriptor objects, created at runtime, that describe the structure of other runtime objects. I'll call these objects type descriptors. My initial motivation for writing a reflection system was to support serialization in my custom C++ game engine, since I have very specific needs. Once that worked, I began to use runtime reflection for other engine features, too: 3D rendering: Every time the game engine draws something using OpenGL ES, it uses reflection to pass uniform parameters and describe vertex formats to the API. It makes graphics programming much more productive! Importing JSON: The engine's asset pipeline has a generic routine to synthesize a C++ object from a JSON file and a type descriptor. It's used to import 3D models, level definitions and other assets. This reflection system is based on preprocessor macros and templates. C++, at least in its current form, was not designed to make runtime reflection easy. As anyone who's written one knows, it's tough to design a reflection system that's easy to use, easily extended, and that actually works. I was burned many times by obscure language rules, order-of-initialization bugs and corner cases before settling on the system I have today. To illustrate how it works, I've published a sample project on GitHub: This sample doesn't actually use my game engine's reflection system. It uses a tiny reflection system of its own, but the most interesting part - the way type descriptors are created, structured and found - is almost identical. That's the part I'll focus on in this post. In the next post, I'll discuss how the system can be extended. This post is meant for programmers who are interested in how to develop a runtime reflection system, not just use one. It touches on many advanced features of C++, but the sample project

## How to Write Your Own C++ Game Engine

DevFeed: [How to Write Your Own C++ Game Engine](<https://devfeed.tech/articles/how-to-write-your-own-c-game-engine-21012.md>)

Original publisher: [Read original article](<https://preshing.com/20171218/how-to-write-your-own-cpp-game-engine>)

Author: Jeff Preshing

Published: 2017-12-18T12:54:00Z

Content type: article

Language: en

Sources: [Jeff Preshing](<https://devfeed.tech/sources/jeff-preshing.md>)

Topics: [Game engine](<https://devfeed.tech/topics/game-engine.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Game Development](<https://devfeed.tech/topics/game-development.md>), [Development](<https://devfeed.tech/topics/development.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [building](<https://devfeed.tech/tags/building.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code](<https://devfeed.tech/tags/code.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [console](<https://devfeed.tech/tags/console.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [games](<https://devfeed.tech/tags/games.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [iphone](<https://devfeed.tech/tags/iphone.md>), [pc](<https://devfeed.tech/tags/pc.md>), [serialization](<https://devfeed.tech/tags/serialization.md>)

### AI overview

A practical article about writing a custom C++ game engine, based on the author's work on the mobile game Hop Out. It focuses on managing engine complexity through iteration, careful decisions about unification, and attention to serialization.

### Source excerpt

Lately I've been writing a game engine in C++. I'm using it to make a little mobile game called Hop Out. Here's a clip captured from my iPhone 6. (Unmute for sound!) Hop Out is the kind of game I want to play: Retro arcade gameplay with a 3D cartoon look. The goal is to change the color of every pad, like in Q*Bert. Hop Out is still in development, but the engine powering it is starting to become quite mature, so I thought I'd share a few tips about engine development here. Why would you want to write a game engine? There are many possible reasons: You're a tinkerer. You love building systems from the ground up and seeing them come to life. You want to learn more about game development. I spent 14 years in the game industry and I'm still figuring it out. I wasn't even sure I could write an engine from scratch, since it's vastly different from the daily responsibilities of a programming job at a big studio. I wanted to find out. You like control. It's satisfying to organize the code exactly the way you want, knowing where everything is at all times. You feel inspired by classic game engines like AGI (1984), id Tech 1 (1993), Build (1995), and industry giants like Unity and Unreal. You believe that we, the game industry, should try to demystify the engine development process. It's not like we've mastered the art of making games. Far from it! The more we examine this process, the greater our chances of improving upon it. The gaming platforms of 2017 - mobile, console and PC - are very powerful and, in many ways, quite similar to one another. Game engine development is not so much about struggling with weak and exotic hardware, as it was in the past. In my opinion, it's more about struggling with complexity of your own making. It's easy to create a monster! That's why the advice in this post centers around keeping things manageable. I've organized it into three sections: Use an iterative approach Think twice before unifying things too much Be aware that serialization is

## My Multicore Talk at CppCon 2014

DevFeed: [My Multicore Talk at CppCon 2014](<https://devfeed.tech/articles/my-multicore-talk-at-cppcon-2014-20996.md>)

Original publisher: [Read original article](<https://preshing.com/20141024/my-multicore-talk-at-cppcon-2014>)

Author: Jeff Preshing

Published: 2014-10-24T10:40:00Z

Content type: article

Language: en

Sources: [Jeff Preshing](<https://devfeed.tech/sources/jeff-preshing.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [MSVC](<https://devfeed.tech/topics/msvc.md>), [x86](<https://devfeed.tech/topics/x86.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [concurrent](<https://devfeed.tech/tags/concurrent.md>), [cppcon](<https://devfeed.tech/tags/cppcon.md>), [development](<https://devfeed.tech/tags/development.md>), [games](<https://devfeed.tech/tags/games.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [talk](<https://devfeed.tech/tags/talk.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

The article recaps a CppCon 2014 talk about how Ubisoft Montreal develops multicore game engines using threading patterns, custom concurrent objects, and atomic operations. It compares portable game-engine atomics with the low-level C++11 atomic library and discusses compiler ordering behavior on x86, including Microsoft's compiler and the risks associated with GCC or Clang.

### Source excerpt

Last month, I attended CppCon 2014 in Bellevue, Washington. It was an awesome conference, filled with the who's who of C++ development, and loaded with interesting, relevant talks. It was a first-year conference, so I'm sure CppCon 2015 will be even better. I highly recommend it for any serious C++ developer. While I was there, I gave a talk entitled, "How Ubisoft Montreal Develops Games For Multicore - Before and After C++11." You can watch the whole thing here: To summarize the talk: At Ubisoft Montreal, we exploit multicore by building our game engines on top of three common threading patterns. To implement those patterns, we need to write a lot of custom concurrent objects. When a concurrent object is under heavy contention, we optimize it using atomic operations. Game engines have their own portable atomic libraries. These libraries are similar to the C++11 atomic library's "low level" functionality. Most of the talk is spent exploring that last point: Comparing game atomics to low-level C++11 atomics. There was a wide range of experience levels in the room, which was cool. Among the attendees were Michael Wong, CEO of OpenMP and C++ standard committee member, and Lawrence Crowl, who authored most of section 29, "Atomic operations library," in the C++11 standard. Both of them chime in at various points. (I certainly wasn't expecting to explain the standard to the guy who wrote it!) You can download the slides here and grab the source code for the sample application here. A couple of corrections about certain points: Compiler Ordering Around C++ Volatiles At 24:05, I said that the compiler could have reordered some instructions on x86, leading to the same kind of memory reordering bug we saw at runtime on PowerPC, and that we were just lucky it didn't. However, I should acknowledge that in the previous console generation, the only x86 compiler we used at Ubisoft was Microsoft's. Microsoft's compiler is exceptional in that it does not perform those particular ins