<?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: Simon Norman</title>
    <description>The latest articles on DEV Community by Simon Norman (@simonjnorman).</description>
    <link>https://dev.to/simonjnorman</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%2F3561451%2F1567e6b2-0008-482d-912c-e02d5222973a.jpg</url>
      <title>DEV Community: Simon Norman</title>
      <link>https://dev.to/simonjnorman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/simonjnorman"/>
    <language>en</language>
    <item>
      <title>Back to Unity baby!</title>
      <dc:creator>Simon Norman</dc:creator>
      <pubDate>Mon, 24 Nov 2025 10:21:38 +0000</pubDate>
      <link>https://dev.to/simonjnorman/back-to-unity-baby-3h7o</link>
      <guid>https://dev.to/simonjnorman/back-to-unity-baby-3h7o</guid>
      <description>&lt;p&gt;After a 3-year layoff, I am finally back to Unity and C#. I have been using Godot and love its simplicity and ease of use. It's great for smaller Indie games, and GDScript is very user-friendly. The entire engine is tightly integrated and bloat-free. Although I will definitely continue using it, I missed Unity's rendering system and optimisation tools.&lt;/p&gt;

&lt;p&gt;I wanted to concentrate on Unity's Creative Core pathway so I could add some portfolio pieces showing lighting, VFX, and animation, or even create a cinematic short film. Its larger ecosystem and Community make it easier to troubleshoot certain issues as well. Its HDRP (High Definition Render Pipeline) currently outperforms Godot, so it seemed a no-brainer to use the engine.&lt;/p&gt;

&lt;p&gt;Unity's real-time rendering speeds up iteration, making it easy to quickly test changes. I can light a scene, move a character, or adjust a camera angle and instantly see the results—no long waits for renders. It feels like working with a virtual film set that I can reshape on the fly.&lt;/p&gt;

&lt;p&gt;Cinemachine and Timeline are game changers. Cinemachine enables dynamic, cinematic camera movements without excessive keyframes. Timeline provides a straightforward way to sequence clips, animation, audio, and effects, similar to a video editor. Together, they make editing and shot planning feel natural and expressive.&lt;/p&gt;

&lt;p&gt;I also love how Unity blends artistic freedom with technical control. Whether I want stylised lighting, dramatic atmosphere, or particle effects that react to motion, it’s all right there—and fast to iterate on. And when I’m ready for final output, Unity Recorder makes it easy to render scenes straight to video for my editing workflow.&lt;/p&gt;

&lt;p&gt;Most of all, Unity makes filmmaking feel approachable. Whether I’m building a mood piece, a cinematic short, or just experimenting, it encourages creativity without the usual friction of traditional offline rendering pipelines.&lt;/p&gt;

&lt;p&gt;It feels like having my own virtual production studio that grows with every project I take on.&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>gamedev</category>
      <category>godotengine</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Traditional art is shifting, not disappearing</title>
      <dc:creator>Simon Norman</dc:creator>
      <pubDate>Sat, 08 Nov 2025 20:58:43 +0000</pubDate>
      <link>https://dev.to/simonjnorman/traditional-art-is-shifting-not-disappearing-i42</link>
      <guid>https://dev.to/simonjnorman/traditional-art-is-shifting-not-disappearing-i42</guid>
      <description>&lt;p&gt;Painting, drawing, sculpture, printmaking — these forms are still being practiced, taught, and collected. In fact, traditional media often gain new value when the digital world dominates. Handmade work has a tangible authenticity that digital tools can’t fully replicate.&lt;/p&gt;

&lt;p&gt;AI art, 3D modeling, and generative design have broadened what “art” can be, but they didn’t erase older forms. Historically, when photography appeared, people said painting would die — instead, painting transformed and found new purposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Collectors and audiences still crave physicality
&lt;/h2&gt;

&lt;p&gt;Many artists today mix both — painting with digital enhancements, or using AI to inspire traditional pieces. The line between “digital” and “traditional” is increasingly blurred, which keeps both alive and relevant.&lt;/p&gt;

&lt;p&gt;So, if anything, traditional art is becoming more deliberate: a conscious choice in a digital age. It carries the aura of the handmade — and that makes it more meaningful than ever.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI and Mixed-Reality Installations
&lt;/h2&gt;

&lt;p&gt;Artists use projection mapping, sensors, and AI vision systems to make physical art reactive:&lt;/p&gt;

&lt;p&gt;A sculpture might change lighting or projection patterns based on audience motion or emotion (detected via AI).&lt;/p&gt;

&lt;p&gt;A painting could “respond” to viewers’ facial expressions by shifting colors or forms through AR overlays.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>drawing</category>
      <category>digitalworkplace</category>
    </item>
    <item>
      <title>Learn Godot in 15 Minutes — Make Your First Game!</title>
      <dc:creator>Simon Norman</dc:creator>
      <pubDate>Thu, 16 Oct 2025 14:07:38 +0000</pubDate>
      <link>https://dev.to/simonjnorman/learn-godot-in-15-minutes-make-your-first-game-61k</link>
      <guid>https://dev.to/simonjnorman/learn-godot-in-15-minutes-make-your-first-game-61k</guid>
      <description>&lt;p&gt;✅ What you’ll learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to install and set up Godot 4&lt;/li&gt;
&lt;li&gt;Understanding scenes, nodes, and the editor&lt;/li&gt;
&lt;li&gt;Adding sprites and movement&lt;/li&gt;
&lt;li&gt;Writing your first GDScript code&lt;/li&gt;
&lt;li&gt;Running and testing your first game&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💾 Download Godot: &lt;a href="https://godotengine.org/download" rel="noopener noreferrer"&gt;https://godotengine.org/download&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Nodes
&lt;/h2&gt;

&lt;p&gt;In Godot Engine, nodes are the fundamental building blocks of everything in your game. Understanding how nodes work is the key to mastering Godot.&lt;/p&gt;

&lt;p&gt;Let’s break it down clearly&lt;/p&gt;

&lt;p&gt;A node is a single unit of functionality in Godot’s scene system.&lt;br&gt;
Each node has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A name (used to identify it in the scene tree)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Properties (like position, rotation, visibility, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Signals (for event-based communication)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Methods (functions that define what it can do)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of a node as a component — it handles one specific role, such as displaying a sprite, playing a sound, or detecting collisions.&lt;/p&gt;

&lt;p&gt;🌳 The Scene Tree&lt;/p&gt;

&lt;p&gt;Nodes are organized in a tree structure (called the scene tree).&lt;br&gt;
Each node can have child nodes. A node can only have one parent.&lt;br&gt;
The root node of the tree is the top-most parent.&lt;br&gt;
When you run the game, Godot creates a big scene tree that includes your main scene and all its sub-scenes.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Player (Node2D)&lt;br&gt;
├── Sprite2D&lt;br&gt;
├── CollisionShape2D&lt;br&gt;
└── Camera2D&lt;/p&gt;

&lt;p&gt;Here:&lt;/p&gt;

&lt;p&gt;Player is the parent node.&lt;/p&gt;

&lt;p&gt;Sprite2D, CollisionShape2D, and Camera2D are child nodes that handle visuals, collisions, and camera control respectively.&lt;/p&gt;

&lt;p&gt;🧩 Node Types (Built-in)&lt;/p&gt;

&lt;p&gt;Godot comes with hundreds of node types, each designed for specific tasks.&lt;br&gt;
Some of the most common ones:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Node Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2D&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Node2D&lt;/code&gt;, &lt;code&gt;Sprite2D&lt;/code&gt;, &lt;code&gt;AnimatedSprite2D&lt;/code&gt;, &lt;code&gt;CollisionShape2D&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Used for 2D games&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3D&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Node3D&lt;/code&gt;, &lt;code&gt;MeshInstance3D&lt;/code&gt;, &lt;code&gt;Camera3D&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Used for 3D games&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Control&lt;/code&gt;, &lt;code&gt;Button&lt;/code&gt;, &lt;code&gt;Label&lt;/code&gt;, &lt;code&gt;Panel&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Used for user interfaces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Logic / Other&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Timer&lt;/code&gt;, &lt;code&gt;AudioStreamPlayer&lt;/code&gt;, &lt;code&gt;AnimationPlayer&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Logic and effects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Physics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Area2D&lt;/code&gt;, &lt;code&gt;RigidBody2D&lt;/code&gt;, &lt;code&gt;StaticBody2D&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Physics and collisions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;🧠 Scenes = Groups of Nodes&lt;/p&gt;

&lt;p&gt;A scene in Godot is a collection of nodes saved as a reusable unit.&lt;br&gt;
Each scene has a root node and can be instanced (reused) inside other scenes.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;You could make a Player.tscn scene with movement code.&lt;br&gt;
Then instance that player scene in Level1.tscn, Level2.tscn, etc.&lt;br&gt;
This is what makes Godot’s node system modular and scalable.&lt;/p&gt;
&lt;h2&gt;
  
  
  Make a Simple 2D Game
&lt;/h2&gt;

&lt;p&gt;Let’s make a player that moves:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Godot → “New Project”. &lt;/li&gt;
&lt;li&gt;Create a 2D Scene (root node = Node2D).&lt;/li&gt;
&lt;li&gt;Add a Sprite2D node → drag an image into Texture.&lt;/li&gt;
&lt;li&gt;Add a CollisionShape2D → choose a RectangleShape2D.&lt;/li&gt;
&lt;li&gt;Add a Script to the Sprite node and paste this:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extends Sprite2D

@export var speed = 200

func _process(delta):
    var input = Vector2.ZERO
    if Input.is_action_pressed("ui_right"):
        input.x += 1
    if Input.is_action_pressed("ui_left"):
        input.x -= 1
    if Input.is_action_pressed("ui_down"):
        input.y += 1
    if Input.is_action_pressed("ui_up"):
        input.y -= 1

    position += input.normalized() * speed * delta

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Click ▶️ Run → pick current scene → move with arrow keys!&lt;/p&gt;
&lt;h2&gt;
  
  
  Scenes
&lt;/h2&gt;

&lt;p&gt;We’ve got a simple top-down movement script for our player (using a Sprite2D base). Let’s integrate an enemy into this setup.&lt;/p&gt;

&lt;p&gt;🧩 Step 1: Make the Enemy Scene&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;New Scene → Node2D → rename to Enemy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enemy (Node2D)&lt;br&gt;
├── Sprite2D&lt;br&gt;
└── Area2D&lt;br&gt;
     └── CollisionShape2D&lt;/p&gt;

&lt;p&gt;The Area2D will let you later detect the player if you want.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assign a texture to the Sprite2D.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;💡 Step 2: Add the Enemy Script&lt;/p&gt;

&lt;p&gt;Attach a new script, Enemy.gd, to the Enemy node:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extends Node2D

@export var speed: float = 100.0
@export var move_distance: float = 200.0

var start_position: Vector2
var direction := 1

func _ready():
    start_position = global_position

func _process(delta):
    # Move left and right
    position.x += direction * speed * delta

    # Flip when reaching distance limit
    if abs(position.x - start_position.x) &amp;gt; move_distance:
        direction *= -1
        $Sprite2D.flip_h = direction &amp;lt; 0

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ This enemy will automatically move back and forth.&lt;/p&gt;

&lt;p&gt;Save as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;res://Enemy.tscn

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚀 Step 4: Instantiate Enemy in Your Player Scene&lt;/p&gt;

&lt;p&gt;Drag and drop the res://Enemy.tscn in to the Node2D.tscn scene (which I should have named Player:)&lt;/p&gt;

&lt;p&gt;🗣️ “If this helped you get started with Godot, hit the like button, subscribe for more beginner-friendly game dev tutorials, and comment what kind of game you want to build next!”&lt;/p&gt;

</description>
      <category>godot</category>
      <category>gamedev</category>
      <category>godottutorial</category>
      <category>learngodot</category>
    </item>
    <item>
      <title>Humans: We Had a Good Run</title>
      <dc:creator>Simon Norman</dc:creator>
      <pubDate>Mon, 13 Oct 2025 05:03:41 +0000</pubDate>
      <link>https://dev.to/simonjnorman/humans-we-had-a-good-run-2pla</link>
      <guid>https://dev.to/simonjnorman/humans-we-had-a-good-run-2pla</guid>
      <description>&lt;p&gt;Will AI Eventually Take Over from Humans?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;By Simon John Norman&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It’s a question that has fascinated, excited, and terrified people in equal measure: will artificial intelligence one day surpass human intelligence and “take over”? The short answer depends on what you mean by “take over.”&lt;/p&gt;

&lt;h4&gt;
  
  
  The Rise of Machine Intelligence
&lt;/h4&gt;

&lt;p&gt;AI has already transformed how we work, communicate, and create. Machines can write, paint, compose music, and even design code — sometimes better and faster than humans. The rapid progress in machine learning, neural networks, and automation makes it easy to imagine a future where AIs handle most of the world’s cognitive labour.&lt;/p&gt;

&lt;p&gt;But this “takeover” isn’t necessarily hostile or apocalyptic. It’s more like a &lt;strong&gt;shift in dominance of certain types of intelligence&lt;/strong&gt;. AI is better at pattern recognition, number crunching, and optimization. Humans are still unmatched in emotional insight, ethics, and creative reasoning — though the gap in creativity is narrowing faster than many expected.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Subtle Takeover
&lt;/h4&gt;

&lt;p&gt;If AI does “take over,” it probably won’t look like robots marching down city streets. It will look like quiet dependency — AI systems running our cities, managing supply chains, predicting health outcomes, designing products, and even shaping culture. Humans will still be in charge nominally, but over time, it may become harder to function without AI’s help. In a sense, we may already be there.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Human Edge
&lt;/h4&gt;

&lt;p&gt;Yet, AI lacks something essential — &lt;strong&gt;intentionality&lt;/strong&gt;. It doesn’t desire, dream, or care. Every AI “decision” is still the product of human-created data and algorithms. Even if an AI becomes vastly more intelligent, intelligence alone doesn’t equal agency. Without human-like consciousness or self-motivation, it’s hard to say that AI could truly &lt;em&gt;take over&lt;/em&gt; in the way science fiction imagines.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Real Question
&lt;/h4&gt;

&lt;p&gt;So perhaps the better question isn’t whether AI will take over from humans — but whether humans will &lt;strong&gt;give up&lt;/strong&gt; too much control, comforted by convenience. The takeover might not come from AI’s ambition, but from our own complacency.&lt;/p&gt;

&lt;p&gt;The future of intelligence will likely be a partnership: humans providing ethics, creativity, and purpose — AI providing scale, speed, and precision. Together, they could build a world far beyond what either could achieve alone.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This was written by ChatGPT, kinda answers the question really!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>deeplearning</category>
      <category>computervision</category>
    </item>
    <item>
      <title>I bring meaning, context, and empathy.</title>
      <dc:creator>Simon Norman</dc:creator>
      <pubDate>Mon, 13 Oct 2025 04:51:04 +0000</pubDate>
      <link>https://dev.to/simonjnorman/i-bring-meaning-context-and-empathy-3e33</link>
      <guid>https://dev.to/simonjnorman/i-bring-meaning-context-and-empathy-3e33</guid>
      <description>&lt;p&gt;I am equal parts artist, philosopher, and mischief-maker. I am the kind of person who can find beauty in chaos, humour in mishaps, and inspiration in just about anything — including a spilled cup of coffee.&lt;/p&gt;

&lt;p&gt;I love to create because it’s the only socially acceptable way to turn my daydreams into something useful. My brain is basically a noisy art studio that never closes — ideas, colours, and half-baked concepts bouncing around like caffeinated ping-pong balls. If I don’t get them out, things get weird fast. Creating is my therapy, my playground, and sometimes my excuse for avoiding grown-up responsibilities (“Sorry, can’t do dishes, I’m in the zone”). I love the thrill of starting with nothing and ending up with something that makes me grin like I’ve outsmarted reality for a moment. Whether it’s a design that just works, or a happy accident that looks way cooler than what I planned, creating keeps me curious, slightly chaotic, and completely hooked.&lt;/p&gt;

</description>
      <category>gdscript</category>
      <category>graphic</category>
      <category>gamedev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
