Hedberg Games Blog

Archive of blog posts (in reverse chronological order)

2024-12-02

Looking At An Old Game With Fresh Eyes

2024-11-04

Breaks Happen

2024-10-07

Lessons From A (Good) Mystery

2024-09-02

Programming Pattern: Event Sourcing

2024-08-05

Abstraction And Iteration

2024-07-01

Planning To Write

2024-06-03

Three Kinds of Stuck

2024-05-06

Status Update: May 2024

2024-04-01

Beyond Weekly Plans

2024-03-04

Good Code Versus Working Code

2024-02-05

Rendering Curves In Godot

2024-01-08

Planning Retrospective: Weekly Plans Are Not Enough

2024-01-01

Happy New Year 2024

2023-12-04

A Language for Stage Directions

2023-11-06

Three Advantages to Using Godot

2023-10-02

5 Years, 5 Phases

2023-09-04

Old Prototype's Source Available (Under New Name)

2023-08-07

"Table Flip" Ported to Html5

2023-07-03

Multiple Points of View In Storytelling

2023-06-05

Strategies for Cutting Work

2023-05-01

Successes Of The Past Four Months

2023-04-03

Parallel Development Using Git Clone

2023-03-01

Site Status Update: Intermittent Outages

2023-02-06

Better Feedback

2023-01-02

Reflecting On Annual Planning

2022-11-28

4 Years - Part 2

2022-11-14

4 Years - Part 1

2022-10-31

Rewriting the Save System

2022-10-17

Analyzing FFRK: From Self Expression to Open Puzzle

2022-10-03

Open Puzzle As Elemental Genre

2022-09-19

Introduction To Burst

2022-09-05

Happy Labor Day (2022)

2022-08-22

Elemental Genres: Why We Play

2022-08-08

Simulating With Integers

2022-07-25

Deep Diving Versus Pivoting Away

2022-07-11

Programming Concept: Events

2022-06-27

Importance of Serialization

2022-06-13

Efficiency Versus Maintainability

2022-05-30

Code Messy, Commit Clean

2022-05-16

Programming Concept: Abstraction

2022-05-02

Autonomous Agent Movement Part 4: Triumph

2022-04-18

Victory Conditions: Fixed Versus Flexible

2022-04-04

Building Better Random Encounters

2022-03-21

Autonomous Agent Movement Part 3: Challenges

2022-03-07

Autonomous Agent Movement Part 2: Purpose

2022-02-21

Tune In Next Time

2022-02-07

Autonomous Agent Movement Part 1: Introduction

2022-01-24

Planning 2022

2022-01-10

Postmortem: 2021 Holiday Outage

2021-12-27

Technical Issues And Holiday Cheer

2021-12-13

Writing Month Retrospective

2021-11-29

Tips For Introductions

2021-11-15

Storytelling And Player Experience

2021-11-01

Status Update: A Month of Writing

2021-10-18

Have You Seen: Shadertoy

2021-10-04

Three Year Retrospective

2021-09-20

Programming Concept: Wrapper Objects

2021-09-06

Editor Windows to the Rescue

2021-08-23

Schedule Change Strategy

2021-08-16

Update: Schedule Change

2021-08-09

Flying Into Problems

2021-08-02

Lessons From Using Clipper

2021-07-26

Expressing Game Feel

2021-07-19

Easier If Everyone Flies: Part 2

2021-07-12

Easier If Everyone Flies

2021-07-05

Programming Basics: Learning to Switch Languages

2021-06-28

Too Many Games: Post-Jam Update

2021-06-21

Jam Game Retrospective

2021-06-14

New Jam Game

2021-06-07

Ink vs Yarn

2021-05-31

Sometimes... Breaks

2021-05-24

Why Developers Sometimes Use Finite State Machines

2021-05-17

Flipping the Frame

2021-05-10

Blog Navigation Improvements

2021-05-03

Island in a Sea of Rework

2021-04-26

Legacy PDB Warnings In Unity

2021-04-19

Sharing With Enemies

2021-04-12

Design Thinking: Stamina in Action Games

2021-04-05

Stamina in Three Genres

2021-03-29

The Language of Unity 3D

2021-03-22

Tutorials for Machines

2021-03-15

Unpacking a Problem

2021-03-08

Pitfalls of Alternate String Implementations

2021-03-01

Programming Concept: C# Expressions - part 2

2021-02-22

Programming Concept: C# Expressions - Part 1

2021-02-15

Learning From Other Works

2021-02-08

Applying Agile to Writing

2021-02-01

Why Not RSS?

2021-01-25

Lifting a Rock

2021-01-18

Building Better Analogies

2021-01-11

Lessons From A Bad Story

2021-01-04

Planning 2021

2020-12-28

Happy Holidays (2020)

2020-12-21

How Not To Make A 2D Mirror

2020-12-14

Salience As A Routing Tool

2020-12-07

Consistently Configuring Collision

2020-11-30

Unity Dependency Locator

2020-11-23

Automated Testing in Unity 3D - Part 3

2020-11-16

Automated Testing in Unity 3D - Part 2

2020-11-09

Automated Testing in Unity 3D - Part 1

2020-11-02

Steps to Replicate

2020-10-26

Goals of Programming

2020-10-19

Leveraging Tooltips for Narrative Value

2020-10-12

Reusing 2D Sprite Animations in Unity

2020-10-05

Two Year Retrospective

2020-09-28

Three Approaches to Game Balance

2020-09-21

Using Content Backlogs

2020-09-14

Overcoming Differences with Curiosity

2020-09-07

Narrative Deadlines and Interactivity

2020-08-31

Creating UI Tabs in Unity: Part 4

2020-08-24

Creating UI Tabs in Unity: Part 3

2020-08-17

Creating UI Tabs in Unity: Part 2

2020-08-10

Creating UI Tabs in Unity: Part 1

2020-08-03

What Else Have You Tried?

2020-07-27

Continuous Improvement

2020-07-20

Catching Player Disappointment Early

2020-07-13

A Tale of Testing

2020-07-06

Analyzing Assumptions

2020-06-29

Site Update: Glossary Added

2020-06-22

Validation Through Use

2020-06-15

Exceptions Are Not Errors

2020-06-08

Why Use JSON?

2020-06-01

The Impact of Choosing Tools

2020-05-25

Programming and Understanding "Why"

2020-05-18

Software Compromise

2020-05-11

Data, Algorithms, and Philosophy

2020-05-04

Almost

2020-04-27

Software Optimism

2020-04-20

State, Writing, and Scope

2020-04-13

A Key Problem

2020-04-06

When to Change Tools?

2020-03-30

Solving Problems with Unity's Audio Mixer

2020-03-23

Debugging a Mysterious Crash

2020-03-16

A Break as a Tool

2020-03-09

Feature Expectations

2020-03-02

Yarn Command Attributes - Part 4

2020-02-24

Yarn Command Attributes - Part 3

2020-02-17

Yarn Command Attributes - Part 2

2020-02-10

Yarn Command Attributes - Part 1

2020-02-03

Persistence In Scenes

2020-01-27

Flexibility and Replanning

2020-01-20

Scene To Blank

2020-01-13

Planning 2020: Part 2

2020-01-06

Planning 2020

2019-12-30

Happy Holidays (2019)

2019-12-23

Diagnosing Early Performance Problems

2019-12-16

Paper Prototyping

2019-12-09

Input Retrospective

2019-12-02

Game Genre Problems

2019-11-25

Input Actions

2019-11-18

Accidental Pitch Polish

2019-11-11

Challenges of Vertical Slices

2019-11-04

Programming Concept: Race Condition

2019-10-28

Insurmountable, Easy, and Nuanced

2019-10-21

ECS Architecture

2019-10-14

The Missing Constraints

2019-10-07

Programming Concepts: Caching

2019-09-30

One Year Retrospective

2019-09-23

Writing as Curation

2019-09-16

Status Update: Ailments and AI

2019-09-09

Iteration and Improvisation

2019-09-02

Avoiding Overflowing Text

2019-08-26

Quality of Life Improvements

2019-08-19

Looping Natural Sounds

2019-08-12

Musings About Opinions

2019-08-05

Game Jam Retrospective: GMTK 2019

2019-07-29

Approaching Jam

2019-07-22

Save Architecture Part 2: Loading

2019-07-15

Save Architecture Part 1

2019-07-08

Lessons in Structure

2019-07-01

Too Early to Be Technical

2019-06-24

User Experience Everywhere

2019-06-17

A Measure of Progress

2019-06-10

Salient Branches

2019-06-03

Blogging Cadence

2019-05-31

Feedback Friday Followup

2019-05-27

Blog Post Next Friday

2019-05-20

Goals of Prototyping

2019-05-13

Software Architecture Planning

2019-05-06

Announcement: New Prototype Available

2019-04-29

Announcement: New Prototype Next Week

2019-04-22

Fixing the Present, Planning the Future

2019-04-15

Input Challenges

2019-04-08

Six-Month Retrospective

2019-04-01

Upcoming Retrospective

2019-03-25

Prioritization

2019-03-18

Accidental Reuse

2019-03-11

Input Decisions

2019-03-04

Planning - March 2019

2019-02-25

Asynchronity in Unity

2019-02-18

Status Update: Gameplay Prototype

2019-02-11

Opinion: Meaningful Moral Choice in Games

2019-02-04

Art Pipeline Part 3

2019-01-28

Art Pipeline Part 2

2019-01-21

Art Pipeline Part 1

2019-01-14

Design of Movement

2019-01-07

Planning 2019

2018-12-31

Prelude To Planning

2018-12-24

Normal Maps

2018-12-17

Planning The Aesthetics

2018-12-10

LiteDB And Unity

2018-12-03

Retrospective of A Notebook Prototype

2018-11-29

Sunk Cost Lessons

2018-11-19

Notebook Prototype

2018-11-12

Planning the Mechanics

2018-11-05

Automated Deployments

2018-10-29

Site Updates Coming Soon

2018-10-22

Yarn Spinner Extras Part 2: Return Values

2018-10-15

Yarn Spinner Extras Part 1: Variables in Text

2018-10-08

Planning the Theme

2018-10-01

Beginnings and Planning

2018-09-03

Vision and Focus Part 2

2017-05-24

Vision and Focus

2017-05-06

Time and Hobbies

2017-03-02

Beams of light

2017-02-13

Updated Site and Extended Robot

2017-01-30

Almost an update

2017-01-16

Approach to Prototyping

2017-01-02

Happy New Year (2017)

2016-12-18

New Prototype: "Falling"

2016-12-04

On Representing Data

2016-11-20

Current Prototype Status Update

2016-11-06

Developer workflow

2016-10-23

Programming Concepts: Reflection

2016-10-09

Build Tomorrow Now Working

2016-09-25

Update Schedule

2016-09-10

New Site!