Lessons for Game designers from “Structure of Scientific Revolutions”

Thomas Kuhn’s “Structure of Scientific Revolutions” is a classic book in philosophy of Science. When I recently finished reading it, I learnt about the field of Scientific research in a very unexpected light. More importantly though, this model seemed relevant outside the field of Science. It could be applied to other creative endeavours like Game design projects. It helped me made sense of the difficulties I incurred in past few years while choosing the topics of my next project.

Here’s a short summary of the ideas in this book that are relevant to this topic. SOSR categorizes all the scientific research into two types - Revolutions and Normal Science.

Revolutions in scientific fields happen when a new Paradigm theory is introduced. For e.g. Newton’s theory of Gravity, Einstein’s theory of relativity, Darwin’s theory of evolution, etc. These theories are revolutionary, because they provide a framework that their predecessors failed to provide and they are able to guide future research in those field better than other competing theories at the time.

Normal science is what most of the research that we know. It’s the research that takes place in the framework defined by a Paradigm theory. SOSR defines it as the research firmly based upon one or more past scientific achievements, achievements that some particular scientific community acknowledges for a time as supplying foundation for its further practice. The new practitioners of the scientific field (students) are taught about the current Paradigm’s framework from textbooks. They become researchers, whose main job is to verify the implications of paradigm theory - thus strengthening the theory or reconciling any apparent exceptions to it. When the scienfitic field ends up with multitudes of irreconcilable facts, it’s time for another revolution (for e.g. After two centuries of Newtonian Gravity it was time for Einstein’s relativity theory). Kuhn describes this Normal Science as puzzle-solving phase. Scientists are solving difficult problems, but the shape of the possible solutions is known to some extent. This makes the problem like a puzzle and is helpful in keeping the scientist motivated in finding the solution.

Determining which game to make is a very difficult question, especially when it’s also supposed to be your principal source of income. You want to make a game that satisfies many constraints.

In my past 3 years as solo enterpreneur I’ve evaluated many different project ideas along various criteria before I started pursuing them single-mindedly. These criteria were not so clear in the beginning, but over time I’ve managed to outline the criteria more distinctly.

A new game idea has to fulfill most of the following criteria to satisfactory extent.

  1. It should be enjoyable to make
  2. It should be enjoyable to play (by me and others)
  3. It should be within the scope of my capabilities (technical/artistic)
  4. If I need outside help (technical/artistic) it should be within the financial budget
  5. It should generate revenue (i.e. it should be marketable, not too experimental/niche)
  6. It should achieve some higher level goal/principle that gives meaning to my work

(5 and 6 are always at odds with each other)

These criteria are not entirely independent. When I’m in the phase of choosing next project, I’ll start working on some idea that fits some of the above constraints; but after spending few weeks it will fall short one of the remaining constraints. This would slowly (or all of a sudden) make me loose interest in that idea. This can be very frustrating, because the time and efforts spent on that idea seems to have gone waste. (I would later realize that it’s not total waste, because the skills learnt were a great assets for future). It becomes quite depressing when this cycle repeats many times (in last such phase I went though 6-8 such cycles in span of 2-3 months). You don’t have anything tangible to show for all these efforts and it all seems to be an excercise in futility.

However in past 3 years, I’ve also had periods of time when I am not facing such uncertainty. This is the period when I’ve committed to a single project. I’ve no doubt that the project will be successful when finished (which doesn’t turn out to be completely true at the end, but it creates positive belief in future and helps focus on work at hand). In such times, I am free to dig deeper into the implementation of the project. In this phase, I can face any design challenges or technical difficulties even if they appear huge and little outside my reach. I could break them down, analyse them closely and come up with a workable solution. This requires patient and persistent efforts. The kind of self-doubt or skepticism towards the project idea that I have before I’m committed to it is absent in this phase. If it weren’t, I won’t be able to focus on difficult problems like this.

I found these two phases in my work to be very similar to the Revolutions and Normal Science phases in scientific ventures. Of course the scale of the scope is different.

The earliest phase of deciding what your next game project is going to be, is like defining a new Paradigm. It’s a revolution, as far as your individual career is concerned. The tremendous uncertainty, frustration, self doubt and apparent lack of progress are as violent as the turmoils in societies at the time of social revolutions or in scientific communities at introduction of Paradigm theories. You are going through all what you know and applying to all possible ideas that you could choose for the next project and this does require a ruthless trial-and-error work on all of them. During such process you will inevitably find some of your long-held beliefs to be utter nonsense. There will also be positive insights, something you earlier found impossible might just turn out to be feasible with your skill set. But if you loose sight of this balance in the outcome, that may lead to frustration and depression. These are not healthy emotions and you should be careful not to linger in this phase too long.

When you have spent too much time doing research, finding that new paradigm for your next game project; it’s time to start making compromises. You have to soon return to Normal Science phase, so that you could produce some tangible work. This is necessary, because you could go on infinitely trying every variation of the constraints mentioned above. There is no perfect game idea. But that prolonged phase of research will leave you exhausted with not much to show for. When you realize you’ve hit that point, it’s important to review what you’ve learnt and try to come up with compromises that will allow you to settle your doubts and come up with a tentative foundation for your game project. Then you spend few weeks developing it. In a few days you will again find yourself wondering if this is the right path. But now you can show yourself the explicit compromises that you decided to do. This will strengthen your belief in the idea and you will enter the Normal Science or Puzzle-solving phase.




Types of Art

Dimensions of Idea communication


Lessons for Game designers from "Structure of Scientific Revolutions"

Bicycle pedals

Insanity and Software

Playing games, Doing Mathematics

Violet end of spectrum

Vipassana Meditation

Why gamers like pixelated games


Collecting Vs Hoarding Netflix

Game Design tip for Programmers - Less Automation

Review Ghost In The Shell - The blinds scene

Why Electron is the best development platform?

Project Dialog


Don't Panic

The Entanglement Pattern

The flying cars analogy

Road Trip of Atlantic Canada

Having done attitude


Before fixing performance issues

No Exams, Yes Video games

Podcasts Français


Quotable Quotes



Uruguay's President

New rules for Formula 1

Software Engineering Code of Ethics and Professional Practice

Something's missing


Coffeescript: To switch or not to switch

Water from air

The single most reason that keeps me using Vim

Time travel fiction

When your git branch diverges from your remote

Something like Olivia - John Mayer

Online courses - New technology, Old rules

Kelsey Grammer is spectacular

Why Patriotism doesn't make sense

Why sea steading is important to pursue?


Rolling back latest git commit

Google Lunar X Prize

iTunes Download stopped (err =9006)

Good essay on user centric software design

Why we need to explore Seasteading?


Master pieces from screen

How to write interactive CLI utility in node.js

The Gods Themselves by Isaac Asimov

Why OpenGL ES is so hard?

How to print stack trace anywhere in Javascript

It's not fair to compare Android with Internet Explorer

How to debug WebWorker threads?

Why can't I criticize Government if I don't vote? I sure can.

Elon Musk quote

Don't label yourself

Why the hi-tech minds are writing Social apps?

Truce with exercise

JavaScript is the next C

Ever growing todo list is a good sign for creative projects

Lesser women in tech... So what?

HTML5 offline cache - use swapCache carefully

How Wikipedia and Flattr can together change the World


Discovering LastPass

Functional programming in Javascipt using Underscore.js

Youtube ETA - Chrome extension

Why secure airports when it's planes that fly?

Mac book red light audio jack problem on Linux

How to save HTML5 canvas image to Google App Engine

Why don't they publish eBooks for free but with embedded ads?

Silicon Valley and Hi-tech

Reality distortion field around

Indirect experiments

Music sharing

ReaderScope 2.0.6 - Find Comments

ReaderScope 2.0

predictably irrational

ReaderScope upcoming changes


Why "Open" is not the first concern of user?

Mutt, Gmail, gdata, notify-send: A Perfect Email solution

Are you the Matt Damon of your game?

ReaderScope 1.9 - OAuth

New app "Find Comments"


ReaderScope 1.8.{2,3} - new authentication and global share

Portable apps for iPhone, Android, Pre, n900 - Can Processing.js help?

ReaderScope 1.8.1 - rethinking features

ReaderScope 1.8 - Random

Android fragmentation : How big a deal is it?

on Dropbox


ReaderScope v1.7 - Widget, new Icons and .... Ads

on Git: tips for SVN users and Git in Dropbox cloud

How to do an online IDE for Android app development

Anti Asserts

Bono's top ten list

Make Android speak your Twits with "TwitSpeak"


Reality of colors

Talking Twitter client

ReaderScope 1.5 - quicker, better, prettier

Preview android.R.drawable.* images

Is definition of "Evil" changing?

on Music: Battle Studies

ReaderScope 1.4 (with a Theme Pack)

On Chrome OS

Black on White

Android AsyncTask template

The AND-OR problem of laptop and mobile phone

ReaderScope v1.3.3 - offline podcasts

ReaderScope v1.3.2 - Social Channels

ReaderScope v1.3 - Beyond Google Reader

Frets on Fire for Maemo - Update

ReaderScope 1.2.7 - Podcasts, Expanded View

Sprint HTC Hero problems with ReaderScope

ReaderScope 1.2.3 - Search

ReaderScope 1.2.1 - Auto Login

ReaderScope v1.2

ReaderScope 1.1.3 - SDCard storage

Crash report for Android App

Wifi and Battery

ReaderScope 1.1.2

ReaderScope 1.1.1 quick-n-easy features

ReaderScope 1.1 - Social Beacons

ReaderScope 1.0.2 - making deep cache simple

ReaderScope 1.0.1

ReaderScope 1.0

Detecting HTC magic on Fedora

ReaderScope beta4 - offline fun

ReaderScope beta3 - Tweet the news

ReaderScope Beta2

ReaderScope beta1 is out

Intercepting Up/Down keys from bash script

Makeshift XML beautifier in python

HTC Magic (Indian version) - expectations and facts

using android AsyncTask

Android development with Vim + Eclim

Cutewit (preview)

Einstein's Dreams

Preprocessing the GUI

Evas + Inkface in v0.2.5

easy source

FoF - PyOpenGL = miniFoF (possibly for n810)

FoF update

Twitter client with inkface-pygame v0.2.2

Frets on Fire on Maemo 5 (Fremantle)

Static IP configuration on Fedora 10

Inkface+pygame v0.2.0

Smooth scrolling with Inkface+pygame

Inkface v0.2 update and automated GUI testing

Testing Android (Koolu Beta 3) on Openmoko Freerunner

Clutter animation paths with Inkscape+Inkface (v0.1.3)

Turning a page

Planning Inkface v0.2

Debian repository on Google App Engine

Inkface + Clutter

Inkface v0.1.2, Twitter-inkface client


Inkface update

Debugging python reference counts

Paul Graham nails it again!

Fedora 10 on MacBook 2,1

A great essay

Thanksgiving at Crater Lake

Digital SLR buyer's guide

more fun with notify-send

(k)ubuntu 8.10 - not ready for my home yet

Migrating to Google App Engine

Android opened - first looks inside

Has it started?

Inkface v0.1

Musical discovery of the week

Die Berlin-Affäre

aus Berlin

Inkface - SVG based GUI design

Script fun

Visualizing source code

OpenMoko photo tour

New connection with the past

George Carlin - favorite clip


80-20 rule

Python fun

OSiM'08 Berlin, Germany

Of games

"Wine" tasting

Today's slashdot and open source

Cost of Open Source

Lions for Lambs

Ubuntu reviewed

Flickr uploads from n810

Cringely and Paul Graham

Accelerometer brainstorming

Clutter Webkit

OSiM USA 2008 - Day 2

OSiM USA 2008 - Day 1

Google code

Gr8 commercial

OSiM USA 2008, see you there

OpenMoko, Android and a great hacking post

two great videos

Blog from nokia tablets


cool n770 hack


Colbie Caillat

Firefox 3 is brilliant!!!

XML RPC server inside apache mod_python

best effort technologies

coding Monalisa

formula of a horror movie

next desktop jump

The "Screen"

Nice review article on virtualization technologies

Once again... a quote from 'Troy'

Story of a random number

quotes from George Carlin

"from time import sleep"

Sea surfing under the Golden Gate

Trip videos


across two hours

What I read...

How do I backup to Amazon S3 storage service

Stranger than fiction

Gas prices... seems like big scam

Another nice quote

Hilarious nerd comment

Programming & Painting

Why do we like fiction?


If Harry Potter were a computer hacker ...

Gentoo, XGL, HGG

Henry Ford

VI - A capable IDE

New blog

Safari Bookshelf


Back to the L4


GCC 2.95 rpms

repeat (ps | grep) = filtered top

Halo fixed on ATI Mobility Radeon 9000

DirectX Installation Problem

Warning: const is a keyword in ANSI C

Not much on L4 front

Last two weeks


Stumbled on HURD

Installed HURD console

Make problem solved


Handy way to create stack trace