<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: OP-Bright</title>
    <description>The latest articles on DEV Community by OP-Bright (@opbright).</description>
    <link>https://dev.to/opbright</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2115499%2F04e40f16-4d6a-4158-b547-7e7a2e417b70.png</url>
      <title>DEV Community: OP-Bright</title>
      <link>https://dev.to/opbright</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/opbright"/>
    <language>en</language>
    <item>
      <title>How to Think About Games: Construct</title>
      <dc:creator>OP-Bright</dc:creator>
      <pubDate>Mon, 09 Feb 2026 12:23:23 +0000</pubDate>
      <link>https://dev.to/opbright/how-to-think-about-games-construct-4h16</link>
      <guid>https://dev.to/opbright/how-to-think-about-games-construct-4h16</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hello, and welcome to the final installment in the ‘How to Think About Games’ series. All of the articles up to this point have focused on trying to dissect the philosophy, structure, and vocabulary a game engine expects you to use, ideally without comparison up until the end. This article will be no different. Today we’re talking about Construct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background on Construct
&lt;/h2&gt;

&lt;p&gt;Construct considers itself an entry level game engine, tailored towards non-developers, to help them make their ideas reality. Although it is not as big in the market as the others, it still has a lot of appeal amongst people trying to learn game design, and some compelling games have been made with it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Construct supports 2D games specifically. Although you can do some trickery to make games that are kind of 3d, support seems to still be limited.&lt;/li&gt;
&lt;li&gt;There have been 3 versions of the Construct engine, but the most recent version is Construct 3, receiving support still. Construct 3 was released on December 4th, 2017.&lt;/li&gt;
&lt;li&gt;It’s particularly popular for making web-games, but users can pay for a professional subscription to publish for PC, or an enterprise one for some consoles.&lt;/li&gt;
&lt;li&gt;Although the user is able to insert some JavaScript code for more fine control, the main ‘programming’ is done with their ‘eventing’ system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, with some context, let’s get on to how it thinks about games.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Think About Construct
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Layouts
&lt;/h3&gt;

&lt;p&gt;Layouts are the canvas you use to place down Objects. Layouts have various settings that can be adjusted, such as resolution, and the ability to use tile sets. All Layouts have an Event Sheet related to them, which determines how the scene runs, and how objects in the scene interact. Layouts represent the different ‘scenes’ in your game, so they can be menus, or levels, or just pieces of levels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98deiik27kt3exvlam52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98deiik27kt3exvlam52.png" alt="A screenshot of different layout settings in the Construct Editor." width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A screenshot of different layout settings in the Construct Editor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Event Sheets
&lt;/h3&gt;

&lt;p&gt;Event sheets are the primary core of functionality in Construct. With their visual language, you select which event you want the layout to wait for, and what happens when that event occurs. Events can also have sub-events, to check for different things. Some events can be inverted, so you can check that something ISN’T happening, rather than something that is, although this only applies to certain events.There can be System events, that can wait for things like key-presses, or just that a layout has loaded in, but there’s also more game-ish events, like what to do in the case of collision.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqaap08reittrct517i9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqaap08reittrct517i9.png" alt="The Anatomy of a Construct Event, sourced from the Construct Manual." width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Anatomy of a Construct Event, sourced from the Construct Manual. The Event Block lets you set conditions that the event is waiting for. In this case, when the layout loads in. Then, you add Actions to set what to do in response. In this case, they’re displaying Text, but you could do a lot more, like change variables, and move or destroy objects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Object Types
&lt;/h3&gt;

&lt;p&gt;Object Types are what you create to populate your layouts, and create things that can interact with your events. As the name implies, you’re defining a type of object, but not the actual objects that are in the scene. Objects can be used to represent almost anything, they’re something visual that can interact with the event-sheet. When creating a new object, you can create it from a base, or from scratch. You can import in plugins to create more easy bases for you to quickly build out events.&lt;/p&gt;

&lt;p&gt;Not that it will generally be relevant, but every Layout does have a System Object that ensures that Construct is doing what it needs to do. It’s unlikely that a user will need to create an object to handle game-logic otherwise, as that’s mostly handled by the Event Sheet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qumrm00p0p4yzqjsynt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qumrm00p0p4yzqjsynt.png" alt="A screenshot of a view of all the Object Instances in a layout." width="530" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A screenshot of a view of all the Object Instances in a layout. You can organize them into folders for easier organization. Certain instances can be next if they’re related.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I think this engine is interesting and has a lot of potential. Its structure is similar to some of the other higher profile game engines covered in this series, which could be something valuable to learn. It seems very good for smaller games or prototypes, but its hard to comment on its efficacy for making larger games. There are simply not that many made with them, although not 0. But even then, most of the ones I could find were made in Construct 2, not 3. Still, Iconoclasts, Small Saga, and Cyber Shadow are very ambitious games, some of them gaining a cult following. I think if you want to make a small 2D game, it seems perfect for that. The structure will not get in the way, and will transfer pretty well to other game engines. &lt;/p&gt;

&lt;p&gt;Thanks for reading my little series! I had some fun putting it together feel like I learned a lot, I hope you got as much out of it as I have. Happy Game Development!&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=NSj7k54xVwA&amp;amp;" rel="noopener noreferrer"&gt;A Beginner's Guide to Construct 3 (Part 2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Construct_(game_engine)" rel="noopener noreferrer"&gt;Construct Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.construct.net/en/make-games/manuals/construct-3/overview/project-structure" rel="noopener noreferrer"&gt;Construct 3 Project Structure&lt;/a&gt; - Very helpful article in my research, practically was my biggest breakthrough. I recommend using this article as a starting point if you want to look more into Construct.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.construct.net/en" rel="noopener noreferrer"&gt;Construct Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.construct.net/en/make-games/manuals/construct-3/project-primitives/objects/object-types" rel="noopener noreferrer"&gt;Object Types, Construct Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.construct.net/en/make-games/manuals/construct-3/project-primitives/events/how-events-work" rel="noopener noreferrer"&gt;How Events Work, Construct Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.construct.net/en/make-games/manuals/construct-3/interface/event-sheet-view" rel="noopener noreferrer"&gt;The Event Sheet View, Construct Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.construct.net/en/make-games/manuals/construct-3/project-primitives/layouts" rel="noopener noreferrer"&gt;Layouts, Construct Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.construct.net/en/animation-software/manual/interface/dialogs/create-new-object" rel="noopener noreferrer"&gt;Create New Object Interface, Construct Manual&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>design</category>
      <category>gamedev</category>
      <category>learning</category>
    </item>
    <item>
      <title>How to Think About Games: GameMaker</title>
      <dc:creator>OP-Bright</dc:creator>
      <pubDate>Mon, 26 Jan 2026 04:31:55 +0000</pubDate>
      <link>https://dev.to/opbright/how-to-think-about-games-gamemaker-35fm</link>
      <guid>https://dev.to/opbright/how-to-think-about-games-gamemaker-35fm</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome to yet another installment in the ‘How to Think About Games’ series. This is the fourth article focusing on the philosophy of different engines on the market, and today we’re talking about GameMaker. Each game engine has its own idea of how to structure a game behind the scenes. This structure, and the specialties of each engine, are really important to consider when choosing which engine to make your game in. The article attempts to look at each game engine with as little comparison as I think is possible, and focuses on the mindset a developer should have when planning out their game. This should allow you to see the advantages of each for yourself, and make an informed choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background on GameMaker
&lt;/h2&gt;

&lt;p&gt;GameMaker was originally conceived to make game creation more approachable to beginners, it has continued to add more robust features to make it appealing for experienced developers as well. It’s an incredibly popular pick amongst indie teams, and has a lot of incredibly successful games developed through it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gamemaker is an engine primarily made for 2D games. It has robust features to support 2d animation, collision, and logic. &lt;/li&gt;
&lt;li&gt;Previously known as Animo Game-Maker, and GameMaker Studio, the software has gone through a lot of iterations over time. The most recent one released in 2022 is still maintained and what most users are familiar with now.&lt;/li&gt;
&lt;li&gt;GameMaker is not available for commercial use for free, but is useful for personal projects or learning. The rest of the engine itself is a one time purchase, although launching to consoles requires their Enterprise subscription. Although some places come at a price, it seems to generally have coverage of most things you could want to publish to.&lt;/li&gt;
&lt;li&gt;GameMaker supports a drag and drop beginner friendly visual language, but also allows use of GML for more advanced scripting. GML is somewhat similar to Javascript.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that you have some background, let’s get on to how it thinks about games!&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Think About GameMaker
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Rooms
&lt;/h3&gt;

&lt;p&gt;GameMaker games are built up of assets, these assets are defined by the user. Across a game, the ones you’re most likely to use consistently are Rooms and Objects, but you’ll likely constantly be dipping into the large variety of other ones.&lt;/p&gt;

&lt;p&gt;Rooms are the space in which a game takes place, and are filled up with Objects. A game must have at least one Room, but a larger game can use Rooms to represent what they sound like, different levels, or just different screens, like a title screen Room, for example. &lt;/p&gt;

&lt;p&gt;Sometimes Rooms can be something invisible to a user, like a loading screen that takes in values from the computer like screen resolution to size the experience properly.&lt;/p&gt;

&lt;p&gt;Rooms have a robust layering system for placing objects, not necessarily just to handle z-fighting, but also to allow for greater organization and ease of editing. There’s support for building with tile-sets built in, tile-sets actually being one of the many kinds of assets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fwx821d3qjwlkdqz0o1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fwx821d3qjwlkdqz0o1.png" alt="A screenshot of the Room editor. You can see the visible tile-grid in the background. Sourced from the GameMaker Manual." width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A screenshot of the Room editor. You can see the visible tile-grid in the background. Sourced from the GameMaker Manual.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Objects and Object Events
&lt;/h3&gt;

&lt;p&gt;Objects are less of the actual entities in the game, rather, when you create an object, you basically create a template that can have many instances of it created multiple times.These templates can be used to build anything. Objects can be entities that populate a room. They can do things around the scene, or a player, or even just things that run background logic and are fully invisible (sometimes referred to as controllers). Since when you ‘put an Object in the scene’ you’re really putting in an instance, updating the object doesn’t update the instance.&lt;/p&gt;

&lt;p&gt;To make an object act a certain way, you have to have it react to events. There are many types of events provided, Create which runs when the object is created by the engine, Collision which runs when it collides with something, and also Step which runs every step of the game, which can be defined by the user how many steps should be in a second. There are many more event types, but even if you aren’t satisfied users can create their own events as they need it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvn6sjugiegfgzs1jcsy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvn6sjugiegfgzs1jcsy.png" alt="An example of a new empty object in the object editor. Sourced from the GameMaker Manual.&amp;lt;br&amp;gt;
" width="600" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An example of a new empty object in the object editor. Sourced from the GameMaker Manual.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Other Common Assets
&lt;/h3&gt;

&lt;p&gt;Rooms and Objects are your primary assets in GameMaker, but it comes with a lot more, and many of them are incredibly useful, and still very commonly used.&lt;/p&gt;

&lt;p&gt;Sprites, for example, are incredibly powerful assets. You can assign sprites to an object to make them visible. Sprites are also created with masks, which you can use to define the bounds and collision of a sprite. Creating a sprite lets you also set things like animations, and the speed of it, which GameMaker can handle for you from there. GameMaker has a native image editor, best for smaller pixel art or testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6fn0ex8xogf4x36iusr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6fn0ex8xogf4x36iusr.png" alt="An example of a sprite in the Sprite editor. You can see the different frames of animation and how they set up the fps of the animation. Sourced from the GameMaker Manual.&amp;lt;br&amp;gt;
" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An example of a sprite in the Sprite editor. You can see the different frames of animation and how they set up the fps of the animation. Sourced from the GameMaker Manual.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you’re making a game with a grid based map, such as an old styled platformer or RPG, the Tile-Set asset will be hugely useful for you. Creating Tile-Sets allows you to use them in GameMaker's tile editor, an example of how many common 2D game problems that GameMaker has solutions built for.&lt;/p&gt;

&lt;p&gt;You can create Sequences, sets of other assets that do things over time, and a record of what they do. This can be useful for cut-scenes, or simple animations, such as setting up a Title Screen. Sequences can even contain other Sequences.&lt;/p&gt;

&lt;p&gt;GameMaker allows you to use Scripts to create common functions that can be used across your game, or even other games. The assets are very flexible which allows creators to share Scripts they’ve made to handle different pieces of common game logic, and make it so developers do not need to re-invent the wheel.&lt;/p&gt;

&lt;p&gt;From what I can see, overall that seems to be the power of GameMaker. Most challenges, as long as they’re in 2D, have been streamlined as much as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I will admit here at the end that I definitely have a bias towards this engine after learning about it. I found a lot of really good resources, a handful of my favorite games such as Katana Zero and Rivals of Aether were made in it, and I really am a fan of 2D games. I would definitely encourage you to look a little bit more into it yourself, but I still tried to represent the structure as fairly as I did the others. &lt;/p&gt;

&lt;p&gt;As for my opinion, I find the system to make a lot of sense, albeit maybe a bit too granular. At least on the surface, there’s a lot of things that look like they could just be objects, and it's nice that they’re simplified down, but there are so many options that you may accidentally waste time trying to implement it yourself instead of running into one of their pre-built solutions if you do not know what it is called already, but that’s relatively minor and solvable by just getting more experience in the engine. Unless your game idea is in 3D, GameMaker seems incredibly likely to be able to handle whatever you might want to throw at it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=SaJtGB_10_Q" rel="noopener noreferrer"&gt;A Beginner's Guide to GameMaker's Core Building Blocks. &lt;/a&gt;(I cannot recommend this video enough. It is incredibly thorough and useful. I am very surprised it does not have more views.)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=XxxyGELApuQ" rel="noopener noreferrer"&gt;Why I Chose GameMaker For My Indie Game&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/GameMaker" rel="noopener noreferrer"&gt;GameMaker Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://manual.gamemaker.io/lts/en/Quick_Start_Guide/Rooms.htm" rel="noopener noreferrer"&gt;Rooms, GameMaker Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://manual.gamemaker.io/beta/en/Quick_Start_Guide/Creating_Tile_Sets.htm" rel="noopener noreferrer"&gt;Creating Tile Sets, GameMaker Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://manual.gamemaker.io/beta/en/Quick_Start_Guide/Objects_And_Instances.htm" rel="noopener noreferrer"&gt;Objects and Instances, GameMaker Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://manual.gamemaker.io/beta/en/The_Asset_Editors/Object_Properties/Object_Events.htm" rel="noopener noreferrer"&gt;Object Events, GameMaker Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://manual.gamemaker.io/beta/en/The_Asset_Editors/Object_Properties/Other_Events.htm" rel="noopener noreferrer"&gt;Other Events, GameMaker Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://manual.gamemaker.io/lts/en/Quick_Start_Guide/Creating_Sprites.htm" rel="noopener noreferrer"&gt;Creating Sprites, GameMaker Manual&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>architecture</category>
      <category>gamedev</category>
      <category>learning</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>How to Think About Games: Unity</title>
      <dc:creator>OP-Bright</dc:creator>
      <pubDate>Mon, 12 Jan 2026 10:57:27 +0000</pubDate>
      <link>https://dev.to/opbright/how-to-think-about-games-unity-2a2d</link>
      <guid>https://dev.to/opbright/how-to-think-about-games-unity-2a2d</guid>
      <description>&lt;p&gt;This is the third installment of the “How to Think About Games” series. Here, we explore the philosophy behind a game engine, and how it structures a game. The goal is to get a sense for the abstraction of what will make up your game. I try to avoid comparison, and instead focus on the headspace you should be in as the one making a game in the software. From there, you can evaluate the pros and cons for yourself, and make an educated choice of which engine to choose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background on Unity
&lt;/h2&gt;

&lt;p&gt;The focus of this article is the Unity Engine, another huge player in the game engine space. With a goal to ‘democratize game development’, they seem to have succeeded, as Unity was very popular among small developers, and still seems to be despite some semi-recent controversy. (It’s outside of the scope of this article, but you can read about the &lt;a href="https://en.wikipedia.org/wiki/Unity_(game_engine)#Runtime_fee_controversy" rel="noopener noreferrer"&gt;Runtime Fee controversy &lt;/a&gt;to learn more.) &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unity supports both 2D and 3D Games, seemingly equally as well, although it’s worth noting that even 2D Unity games are actually 3D behind the scenes.&lt;/li&gt;
&lt;li&gt;Unity had annual releases up until recently with the version of Unity 6. As it's still somewhat recent and has less community support. Most of what's discussed in the article will be more relevant to the yearly releases.&lt;/li&gt;
&lt;li&gt;It’s very popular for mobile game development, but also can publish well to desktop and major consoles. &lt;/li&gt;
&lt;li&gt;It’s built using C++, but users typically write in C#.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that you know what it is, let’s get on to how it thinks about games.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Think About Unity
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Scene(s)
&lt;/h3&gt;

&lt;p&gt;Unity games can be a scene, or a bunch of scenes. As a game gets more complex, you’ll likely use multiple scenes to build out a game, a scene per level, for example, or maybe a title screen scene. Scenes are the space you work in to create a game. To make something of a scene, you can put GameObjects inside of them, each able to represent different parts of the game. GameObject scripts can load different scenes, letting the game navigate between them as is seen fit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fib5tcdscz4n77br1kzpd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fib5tcdscz4n77br1kzpd.png" alt="Screenshot of the Unity Editor when you open a new scene. Scenes start with a Camera and Light GameObjects by default. Sourced from the Unity Documentation." width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Screenshot of the Unity Editor when you open a new scene. Scenes start with a Camera and Light GameObjects by default. Sourced from the Unity Documentation.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  GameObjects
&lt;/h3&gt;

&lt;p&gt;GameObjects seem to be the primary meat of Unity game development. Games tend to consist of scenes that have game objects that communicate with each other. Game objects can be almost anything. They could be a player, a piece of set dressing, a camera, a light source, or even just a script that handles game logic. What form a GameObject actually takes depends on what components it has. GameObjects can even be children of other game objects, inheriting component properties from the parent selector, which can be used to make groups of objects that all move at once, for example.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwich8aui6otfns47cai5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwich8aui6otfns47cai5.png" alt="An example of a basic cube GameObject, and some of its components. Sourced from the Unity Documentation." width="582" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;An example of a basic cube GameObject, and some of its components. Sourced from the Unity Documentation.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As we can see here with an example of a Cube GameObject, it takes a lot of components to make it up, but you get a cube that can have a position in the scene, and collide with other collidable GameObjects. We can tell that its able to do this by its various components. It has a mesh-filter, deciding what shape it takes. It has a renderer, allowing the mesh to show up in the game world, and have a material applied to it. It has a Box Collider, allowing it to collide, and a Transform component, allowing it to be moved to a specific space in the game world, or to change in size.&lt;/p&gt;

&lt;p&gt;This is but scratching the surface of what Components can do to build powerful GameObjects. &lt;/p&gt;

&lt;h3&gt;
  
  
  Components
&lt;/h3&gt;

&lt;p&gt;GameObjects are all made up of components. Components have properties which the developer can use to change them, or have script components that change these properties over time, or based on input. Components define what that GameObject is. A player component might be a simple Cube GameObject as seen above, but with a script that allows for player controls. &lt;/p&gt;

&lt;p&gt;Scripts in Unity by default have the functions Start, and Update (Sometimes FixedUpdate is preferable for physics calculations). Start runs the code involved when the scene starts, and Update runs the code involved every frame. To ensure certain game functions don’t just run faster on faster computers, Unity provides a Time.deltaTime value that can be used to make the game run on a more true clock. &lt;/p&gt;

&lt;p&gt;There are also certain components that allow for events, which can be interacted with in scripts as well. Collision allows you to run code on collide, and a button UI GameObject can let you run code on click. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy88ddbmveh54qzs6mxag.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy88ddbmveh54qzs6mxag.png" alt="A screenshot of the component browser, showing the different categories of components you can add to a GameObject. Sourced from the Unity Documentation." width="339" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A screenshot of the component browser, showing the different categories of components you can add to a GameObject. Sourced from the Unity Documentation.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Components are the real power behind GameObjects.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If Unity is to be your engine of choice, you have to see if this structure makes sense to you. If it fits your style of development, and you like the flexibility, this engine may be right for you. Undoubtedly this structure is not a limitation. Unity is a tempting option, having been so big and popular, there’s a lot of community resources out there, and the variety of games it lets you make are immense. Hollow Knight, Cuphead, Subnautica, and Valheim were all made with this engine, showing you the power that it can give you.&lt;/p&gt;

&lt;p&gt;On my opinionated note, I can see why the engine got so popular. The structure seems very free form and mostly built out by the user. Although I’m trying to avoid comparison, since I’ve been looking into these structures, it’s really interesting how similar Unity and Unreal's structure seems to be, but I believe the differences are reflected in the games made with each. A lot of the structure of a Unity game is more defined by the user. They can have as many or as few scenes as they see fit, they can write the scripts for game events in whatever way they prefer. I think this freedom may be intimidating, and could easily mess up a beginner, as it's open to a lot of holes and mistakes, but I think in the hands of a competent team, it can be used to make something great. &lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=iqlH4okiQqg" rel="noopener noreferrer"&gt;Unity in 100 Seconds&lt;/a&gt; - As usual with Fireship's content, it gives a great overview, which helped me know what I needed to start researching&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=IlKaB1etrik" rel="noopener noreferrer"&gt;How to make a Video Game in Unity - BASICS (E01)&lt;/a&gt; - If you're interested in using Unity, Brackeys is ones of the most well known for their huge number of tutorials for the community. I would definitely say their videos are 'further reading' if you're sure this is the engine for you.&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=XtQMytORBmM" rel="noopener noreferrer"&gt;The Unity Tutorial For Complete Beginners&lt;/a&gt; - However, I would start with this tutorial first. I think it really cleanly and concisely goes over the absolute core concepts in Unity very well.&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Unity_(game_engine)" rel="noopener noreferrer"&gt;Unity Wikipedia&lt;/a&gt; - Just for extra bits of information and background.&lt;br&gt;
&lt;a href="https://docs.unity3d.com/2022.3/Documentation/Manual/CreatingScenes.html" rel="noopener noreferrer"&gt;Creating Scenes Documentation&lt;/a&gt; - More about Scenes!&lt;br&gt;
&lt;a href="https://docs.unity3d.com/2022.3/Documentation/Manual/UsingComponents.html" rel="noopener noreferrer"&gt;Using Components Documentation&lt;/a&gt; - More about Components!&lt;br&gt;
&lt;a href="https://docs.unity3d.com/2022.3/Documentation/Manual/class-GameObject.html" rel="noopener noreferrer"&gt;GameObject class documentation.&lt;/a&gt; - More about GameObjects!&lt;br&gt;
&lt;a href="https://docs.unity3d.com/2022.3/Documentation/Manual/GameObjects.html" rel="noopener noreferrer"&gt;GameObjects documentation&lt;/a&gt; - (Yes, this is a different page. I got some information from both, so I wanted to ensure they were both represented.)&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>design</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>How to Think About Games: Unreal Engine</title>
      <dc:creator>OP-Bright</dc:creator>
      <pubDate>Mon, 17 Nov 2025 14:38:30 +0000</pubDate>
      <link>https://dev.to/opbright/how-to-think-about-games-unreal-engine-2l83</link>
      <guid>https://dev.to/opbright/how-to-think-about-games-unreal-engine-2l83</guid>
      <description>&lt;p&gt;Welcome! This article is the second in the series of  “How to Think About Games”. Each article focuses on the philosophy of different game engines. We explore each engine in isolation, attempting to avoid comparison where possible, and focus more on just how it works, and where the head of a developer working on the software should be at. You won’t know how to make a game by the end of it, but you’ll know how one would be structured, so you can start imagining how to apply your ideas to this framework. The goal is to give you a better idea of how each engine works behind the scenes so you can decide which one makes the most sense for you. &lt;/p&gt;

&lt;h2&gt;
  
  
  Background on Unreal Engine
&lt;/h2&gt;

&lt;p&gt;This article is about the Unreal engine, one of the longstanding powerhouses, especially for making 3d games. It is known for its high visual fidelity, being used not just in games, but by some film-making studios to create effects or full digital sets.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is heavily specialized into 3d, it’s not that it’s impossible to make 2d games, from what I can see, but it seems incredibly rare in the engine.&lt;/li&gt;
&lt;li&gt;Updates are consistently made to the newest version of unreal-engine, currently on unreal engine 5, but there are apparently talks of an unreal engine 6 in the coming few years. Unreal engine 4 seems to still be actively used but as they re-add more features to 5 people will continue to switch over.&lt;/li&gt;
&lt;li&gt;Publishes to PC and most major consoles, as well as mobile. &lt;/li&gt;
&lt;li&gt;It uses C++, but features a robust visual-coding feature called blueprints, which execute basic game functions and can be connected to each other.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that you know its basic background, let’s get into how they think about games.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Think About Unreal
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;

&lt;p&gt;A game in unreal is made up of various basic libraries and game functions that can be used in “Levels”. A level establishes its environment layout, physics, and more. I do not believe Levels are strictly actual in game levels, I believe they could be something like, for example, a title screen. Each level contains “Actors” that aren’t strictly characters in a scene, but can be. &lt;/p&gt;

&lt;p&gt;Each level should have a GameMode ‘actor’, these establish the basic rules of the game in the current “level”, like a win condition. As you play the game, the GameState is updated based on the current state of the game. Sometimes that game could also be affected by the PlayerState, which would be something like a player’s rank in a large online game.&lt;/p&gt;

&lt;p&gt;The player gets access to the scene through a PlayerController attached to an actor. Player controllers don’t just take your input, you can also populate the screen with a HUD and control how the camera follows the character with the PlayerController.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9t6l45v8rxz5eyhawc1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9t6l45v8rxz5eyhawc1u.png" alt="Game Flowchart from the Unreal Documentation." width="728" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Game Flowchart from the Unreal Documentation.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Creating Actors to Populate Your Level
&lt;/h3&gt;

&lt;p&gt;To populate your level, you’re going to want Actors. Actors can represent a lot of things, like in the last example, a character is likely to be a SkeletalMeshActor with a Controller attached. When an actor has a controller attached, whether it be an AIController that you use to build out game enemies, or a PlayerController to give the player a character to operate, this is known as a pawn.&lt;/p&gt;

&lt;p&gt;There’s a lot more than Pawns though in games. For example, you could build out level geometry with a StaticMeshActor, or a Brush if you’re still in development. You can use Triggers to cause events to occur as you move through a level, or different Lights to build up a scene. They also have a MatineeActor that lets you give characters special animations for cutscenes. You can also add AmbientSound to play music on a loop, or when a certain Trigger is activated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1vhgbdbd6mlqjewt7sh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1vhgbdbd6mlqjewt7sh8.png" alt="Icons of some of the different Actor Types discussed, sourced from the Unreal Documentation." width="162" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Icons of some of the different Actor Types discussed, sourced from the Unreal Documentation.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Actors have properties, which you can set. There are different properties for different types of actors, so it would be hard to cover them all. Using components you can establish the different properties an actor has, and you can use game code blueprints to change them over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building from Blueprints
&lt;/h3&gt;

&lt;p&gt;To give special functionality to an actor, like reacting to triggers or some kind of consistent behavior, you can code this with c++, but you can also use blueprints to build out basic behavior, like functions and objects that you want. Blueprints are built out visually, different functionality able to be connected with ‘wires’. You can connect up these functions to the GameStart trigger, or a trigger every tick of game time. You could also have them react to special placed scene triggers. &lt;/p&gt;

&lt;p&gt;Blueprints allow for incredibly basic functionality, like printing a string, but also can perform some more complex actions like determining the reactions your pawn would take to different controls or actions from the player. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9g0hl8slhp237o45fbzf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9g0hl8slhp237o45fbzf.png" alt="A screenshot of the blueprint editor from the Unreal Documentation." width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A screenshot of the blueprint editor from the Unreal Documentation.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;So, if you want to make a game in Unreal, you have to ask yourself if this abstraction makes sense. Your success will vary depending on your style of development and your game idea. It’s a big player in the scene and if you’re looking to make a visually stunning 3D game it does seem to be a good choice. Many games have been built with Unreal, most notably Fortnite in recent years, but also games that aren’t shooters, like the Live-A-Live remake with a vastly different art style. Although there certainly are limitations, they aren’t so steep that it should close off many game ideas at all, and most certainly the structure isn’t the limiting factor, as you can see with the very different types of games made. &lt;/p&gt;

&lt;p&gt;On a more opinionated note, I found Unreal to be very interesting, especially figuring out what games have been made with it made me realize there’s definitely more flexibility there than I thought. Admittedly for my personal ideas, I struggle to see how I would apply this engine to these ideas. It's less of a structural issue, I’m just less interested in making 3d games. I think if I were to make one, this would be a very tempting engine to turn to. The visuals it’s capable of are very impressive and the blueprints seem very approachable, although I’m sure it would help to understand C++ for further customization. I hope that if you are someone interested in Unreal that this article gave you an idea of how to think about making your game. Thank you for reading!&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=DXDe-2BC4cE" rel="noopener noreferrer"&gt;Unreal in 100 Seconds &lt;/a&gt;- I found entering into trying to figure out the engine behind the scenes was difficult without some background or seeing it done, and this video does an excellent job of giving you the absolute basics of how things look to make behind the scenes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-architecture?application_version=4.27#gameplayframeworkclasses" rel="noopener noreferrer"&gt;Unreal Architecture Documentation &lt;/a&gt;- They explain the structure of an unreal game well, especially with their nice chart that I used.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/common-actor-types?application_version=4.27" rel="noopener noreferrer"&gt;Common Actors Documentation &lt;/a&gt;- More detailed information on actors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/introduction-to-blueprints-visual-scripting-in-unreal-engine" rel="noopener noreferrer"&gt;Introduction to Blueprints Documentation &lt;/a&gt;- More details on Blueprints.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Unreal_Engine#Usage" rel="noopener noreferrer"&gt;Unreal Wikipedia &lt;/a&gt;- Just some extra bits for additional background on the software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Category:Unreal_Engine_games" rel="noopener noreferrer"&gt;List of Unreal Engine Games Wikipedia &lt;/a&gt;- A list to help me reference what games I know of that are made in Unreal.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>beginners</category>
      <category>learning</category>
      <category>architecture</category>
    </item>
    <item>
      <title>How to Think About Games: Godot</title>
      <dc:creator>OP-Bright</dc:creator>
      <pubDate>Mon, 10 Nov 2025 13:46:01 +0000</pubDate>
      <link>https://dev.to/opbright/how-to-think-about-games-godot-2jan</link>
      <guid>https://dev.to/opbright/how-to-think-about-games-godot-2jan</guid>
      <description>&lt;p&gt;Welcome to “How to Think About Games”. This series of articles will explore the design philosophy behind different game engines. Each article’s goal is to give you an idea of where the head of a developer using the engine should be at. This won’t necessarily tell you how to use it, but each article intended to help you find if the game engine's philosophy makes sense to you, quickly helping someone who's already a developer decide if the structure is useful to them. This should help you decide what engine to use without bias, as comparison to other engines will be avoided as much as possible. This is just about how to think about games.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background on Godot
&lt;/h2&gt;

&lt;p&gt;Godot is the topic of this article. Godot is an open-source game engine. A recent contender and popular choice. It’s free, and known for being particularly lightweight, not taking up a lot of space at all, and running on a lot of machines. &lt;br&gt;
It can do both 2d or 3d games, although from what I have seen it seems to have a particular knack for 2D games specifically. &lt;br&gt;
It is always being actively updated, and there’s a lot of community support for it as well, so it’s always changing over time. &lt;br&gt;
It’s specifically good for PC, Mobile, and Web games, but doesn’t natively support console exporting due to the console companies not wanting that code to be open source. &lt;br&gt;
It has its own native scripting language but allows for the use of many others. &lt;br&gt;
Now that you know its basic background, let’s get into how they think about games.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Think About Godot
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Scenes of Nodes
&lt;/h3&gt;

&lt;p&gt;Godot games are built up out of “scenes”. Each scene contains “nodes”. These titles are admittedly a little misleading, as a scene doesn’t necessarily have to be a “screen” or “stage” in a game. The scene can be something like a character, or a reusable collectable. Nodes are like the absolute basics. They can handle collision, audio, images, they can be the camera, they’re usually the most simple. Scenes are more complicated things made up of these nodes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdpbcrysopcyu1xvs0aya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdpbcrysopcyu1xvs0aya.png" alt="An example of a Scene being built with a Label Node." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;An example of a Scene being built with a Label Node. Sourced from GODOT Documentation&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenes of Scenes
&lt;/h3&gt;

&lt;p&gt;This is how you turn it into a game. Once you make a scene with these nodes, you can reuse this “scene” in other scenes as if it were a node. This leads to a nested structure to build your games, where you can keep going deeper into the complexities of each node in a scene if you’ve built it that way. Although scenes can be connected by being parents and children of each other, they don’t have to be strictly tied to interact.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qmhn988td2h3z2mfkvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qmhn988td2h3z2mfkvw.png" alt="An example of a Scene Tree." width="410" height="646"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;An example of a Scene Tree. Sourced from GODOT Documentation&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Signals
&lt;/h3&gt;

&lt;p&gt;Godot uses “signals” to have different game elements interact with each other. You can make a scene by letting out a signal in reaction to something. Once you do, you can have any number of other scenes react to that signal, without specifically referencing that element. This means you can also make multiple things react to or send out the same signal, allowing you to reuse logic all over the place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq39tfewhr4qo6gja5ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq39tfewhr4qo6gja5ty.png" alt="An example of setting up a Signal." width="800" height="437"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;An example of setting up a Signal. Sourced from GODOT Documentation&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;So, for your future game ideas you have to ask yourself, does this abstraction make sense? This will vary from developer to developer, but as it’s a serious contender right now, I definitely advise looking into it. A lot of games have been built with Godot, each very different, for example &lt;a href="https://godotengine.org/showcase/dome-keeper/" rel="noopener noreferrer"&gt;Dome Keeper&lt;/a&gt;, and &lt;a href="https://godotengine.org/showcase/wrought-flesh/" rel="noopener noreferrer"&gt;Wrought Flesh&lt;/a&gt;. Dome Keeper is a pixel art roguelike where you face off waves of enemies in between side-scroller mining to keep up with their rapid progression. Wrought Flesh on the other hand is a gritty fps where enemy organs can be used to upgrade your stats. Don’t feel like this structure is a limitation, the flexibility is clearly there.&lt;/p&gt;

&lt;p&gt;This being my first article on these engines I’m obviously very impressed by the engine. It’s already getting me to think about how I would adapt the various game ideas I have to this structure. But this is not the end! I want to cover more, as this ended up being incredibly interesting, and there are a lot more game engines out there. I hope this article gave you an idea about how to think about games, thank you for reading.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Godot_(game_engine)" rel="noopener noreferrer"&gt;Godot Wikipedia Article&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=lGZ4RaC4O2w" rel="noopener noreferrer"&gt;GDQuest's "The 4 Essential Building Blocks of Every Godot Game&lt;/a&gt; - I highly recommend this channel as a whole if you have further interest in the Godot engine, as they have many videos on the subject, and this was a breakthrough in understanding for me when writing this article.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.godotengine.org/en/stable/getting_started/step_by_step/nodes_and_scenes.html" rel="noopener noreferrer"&gt;Godot Nodes and Scenes Documentation &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.godotengine.org/en/stable/getting_started/step_by_step/signals.html" rel="noopener noreferrer"&gt;Godot Using Signals Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>architecture</category>
      <category>design</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Math.random, friend or foe?</title>
      <dc:creator>OP-Bright</dc:creator>
      <pubDate>Tue, 04 Nov 2025 08:16:53 +0000</pubDate>
      <link>https://dev.to/opbright/mathrandom-friend-or-foe-148o</link>
      <guid>https://dev.to/opbright/mathrandom-friend-or-foe-148o</guid>
      <description>&lt;p&gt;Math.random is flawed, as bold a claim as that may seem. It does what it sets out to do, It generates a number between 0 and 1 that’s random… Right? Wrong!&lt;/p&gt;

&lt;p&gt;Math.random doesn’t actually produce a truly random number. The number it creates is deterministic, meaning that it’s predictable. Now maybe for a quick dice roller or game feature, this won’t matter, but for security, this matters a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Computers, too smart for their own good&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;So, why is this even a problem in the first place?&lt;/p&gt;

&lt;p&gt;For one, we &lt;em&gt;can't&lt;/em&gt; generate truly random numbers, not easily at least. Computers are very bad at generating random numbers. Without some kind of outside influence, it’s hard to get anything that is truly random. Computers are good at math, but not at randomness. The problem with any kind of “outside influence”, is most of that data would need to be sent in from some other source, which we’d have to trust. If we don’t, it would be prone to being manipulated to get a desired result, for example, a previously made random number.&lt;/p&gt;

&lt;p&gt;To get around this issue and avoid needing outside data as much as can be helped, a lot of systems implement pseudorandom number generators, which although are fine in a lot of use cases, are not random, and therefore if not made securely, can be reverse engineered.&lt;/p&gt;

&lt;p&gt;Which brings us to our second problem. Even though it may on the surface be indistinguishable from a random number, it is different. A lot of services now will secure your account behind 6 digit codes. A lot of password managers give you the option to generate a random password. You likely don’t want people using your program to so easily know where data is stored, and you might want a secure hashing function or encryption. All of these could cause problems should a malicious actor know you’re using Math.random, as all it takes is a little bit of math to find all of your permutations.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Problems with Math.Random, and what is Cryptographic Security?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The problem with Math.random then, in a lot of these applications, is just that it’s not cryptographically secure, which may sound like a smart jumble of words, but is kind of meaningless without explanation. &lt;/p&gt;

&lt;p&gt;The difference between a &lt;em&gt;“cryptographically secure pseudo random number generator”&lt;/em&gt; and one that is not, are two things: &lt;/p&gt;

&lt;p&gt;One, they cannot be cracked with cryptoanalysis easily, using statistics to figure out future value.&lt;/p&gt;

&lt;p&gt;Two, even when its state is potentially compromised, they cannot backtrack to see what values were previously available and what values will be available in the future. &lt;/p&gt;

&lt;p&gt;For a long time, Math.random was actually failing at both of those, as the randomness produced collisions much more often than it does now, meaning that it would evaluate to recurring values more often (although, we’re speaking after multiple millions of invocations, but enough to be cracked easily), due to using a low quality method of getting a random number. However, despite the changes made, it still can be predicted by knowing the initial or later state of the generator.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Crypto: getRandomValue, our solution&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;So, how do we create a pseudorandom number generator that can’t so easily be cracked by a malicious actor who knows a little math? There’s a lot involved that goes into it, but one of the easiest to understand concepts is “Entropy”. As the generator creates new values, the state slowly shifts and morphs over time in unpredictable ways, making future and past values impossible to determine even with access to the state, current or initial. Usually, this consists of stacking other pseudorandom number generators on top of each other, of similarly unpredictable statistics, to seed values with good entropy.&lt;/p&gt;

&lt;p&gt;Crypto: getRandomValues, being called from an API, can handle most of this externally. It uses seeds provided by the “user” to supply these so they can also add onto the entropy quickly. Since this is built into most browsers, the “user” in this case is more so the service allowing the user to interact, rather than the person typing away at the keyboard. This allows the generator to run fast itself without needing a true random number generator. They suggest that these in-betweens use their own pseudorandom generator, seeded with outside values to produce the best entropy.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Friend, or Foe?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In most situations relating to security, you really need to watch out for the PSEUDO part of pseudorandom number generators. In other situations? It’s true, it may really not matter. As some have said in my research, it may even be better to avoid it if you don’t know what you’re doing, as you may be over complicating your code for very little gain. But the second you are handling someone’s data, or need to encrypt something, just remember that Math.random could prove to be your enemy. For that very reason, getRandomValues is your friend.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Further Reading&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This topic has a lot of depth, and even as the writer I actually feel as if I understand very little. Certainly enough to get the point of the various warnings about Math.random I see everywhere, and I hope this article helped you get there as well, rather than just having to take them for granted. Still, there's a lot more to it. To help understand this topic further, below will be the sources that I used to help write this article, and that made the most sense to me. Basically all of them contain links to even more other further sources, so I believe you'll find these to be good places to start.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=pq3x1Jy8pYM&amp;amp;t=13s" rel="noopener noreferrer"&gt;Doom’s RNG&lt;/a&gt;- An example of a pseudorandom number generator in DOOM, and unpacking how it works. I found this to be really digestible and got me interested in the topic. Trust me, it’s a good video, good enough that I was actually interested in the word salad of “cryptographically secure pseudo random number generator”&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://v8.dev/blog/math-random" rel="noopener noreferrer"&gt;There’s Math.random(), and then there’s Math.random()&lt;/a&gt; - This is an article detailing some of the problems with earlier iterations of Math.random. I found it from &lt;a href="https://stackoverflow.com/questions/20109006/how-does-math-random-work-in-javascript/52191522#52191522" rel="noopener noreferrer"&gt;this stack overflow post&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=nBq4sFg3at0" rel="noopener noreferrer"&gt;How computers generate RANDOMNESS from math&lt;/a&gt;- This video helped me understand a lot of the weird technical terms used in the above source, and how the computer handles it internally.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues" rel="noopener noreferrer"&gt;mdn_ Crypto: getRandomValues() method&lt;/a&gt; - Yes, this one is obvious, but the most interesting tidbit is how the “user-agent” seeds the entropy that will be generated. I think it's integral to understanding entropy.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator" rel="noopener noreferrer"&gt;wikipedia: Cryptographically secure pseudorandom number generator&lt;/a&gt; - This helps specify the differences between any old pseudorandom number generator and one that is cryptographically secure. &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>discuss</category>
      <category>javascript</category>
      <category>security</category>
    </item>
  </channel>
</rss>
