Little Idea Elves

Do you know the story of the Elves and the Shoemaker?

Here it is, in a nutshell:


A poor shoemaker generously gives away his last pair of shoes to a person in need, even though he only has enough leather remaining to make a single pair of shoes. 

That night, tired and worried, he cuts out the leather, arranges all the pieces, and then goes to bed.

Upon waking, he finds that elves had assembled the leather pieces into a fine pair of shoes. 

He is able to sell the shoes for enough money to make TWO pairs of shoes the next day: one pair to sell at a nice profit, and one pair to give away. 

The cycle continues, night after night.  With the aid of the elves, he continues to expand his business and also help the needy.

Eventually, with his vast resources and know-how, he constructs a pair of high-tech boots, and uses them fight crime as Doctor Dropkick, a vigilante super-hero.  

(okay, maybe not that last part)


 

I’ve found that the same thing happens to me, where I get a kind of “magical help” working on creative problems. 

During the evening, I will mull over a design or coding problem — running into dead ends, going around in circles, etc.  After I’ve broken apart the problem and have all of the pieces of the mental puzzle listed out (on a notepad or in a text file), I give up and go to bed.

The next morning, when I wake up, grab a coffee, and sit down in front of my laptop, I get unstuck — without fail! — usually within the first 10 minutes. 

If it’s a small problem or a coding bug, a good solution will appear.  For bigger problems, I might not have a complete answer yet, but I will see a new path forward that didn’t occur to me before. 

Some might call this divine inspiration.  But in my opinion, the human brain is so complex (about 100 billion neurons), that I believe it’s perfectly capable of working on sticky problems as a “background task”.  We just don’t know what the subconscious mechanisms of creativity are yet.

I’m fine with not knowing how it works.  I’m just happy that I can rely on it.

By the way, that’s why I often say that I work on things in calendar time, not clock time.  Clock time is all about the hours you put in.  Like chopping wood — the longer you keep at it, the more you get done. 

In my experience, that’s not the way creative work works.  Like the shoemaker, you take some time to collect and organize the raw material (e.g. a rough draft, possible solutions, unknowns, worries), then wait and trust that the answers will come.  And that usually happens on a daily rhythm, or calendar time.

By the way, never leave chocolate treats out for Idea Elves.  Like dogs, they are allergic to chocolate.  Trust me, there’s nothing sadder than waking up to find a heap of poisoned elves on your kitchen floor.

How to Learn Game Coding (for kids)

I recently got a list of questions from a friend’s elementary school-aged son, asking about game programming (or “coding”, as the kids call it nowadays 🙂 )

I’m posting my answers here because I know that it’s a popular topic for a lot of young people.  

Q: How do you make a game from scratch?

There are a lot of ways to make a game nowadays, but I would recommend PICO-8.  It has everything you need to make small, fun games using code.

By using it, you’ll learn about the different parts that make up a game.  For example, “sprites” are the images for things like spaceships, characters, and explosions.  You can program them to move around and animate when you press a button.  You will also learn how “collisions” work, like how to make a ship explode when a bullet runs into it.

Once you learn those things, you can try making bigger games using more advanced languages, or just keep getting better at making cool PICO-8 games.

Also, making a game involves other fun things aside from coding — like art, storytelling, music, sound effects, and interaction design (making a program easy to use).  You can learn all of those things just by making games.  You might even find out that you like them better than coding.

Q: How do you learn to code?

I believe the best way to learn to code is:

   1) Pick a language that is easy for beginners (like PICO-8 or Python), and

   2) Make a small program or game that interests you

Programming takes a LOT of trial and error.  Bit by bit, you add new lines of code to your program and you have to keep checking to see if it still works.  It’s like a snowball that gets bigger and bigger as it rolls down a hill.  You start with a tiny program and add more as you go.  

This takes a lot of patience, because you’ll spend a lot of time fixing mistakes (also known as bugs).  That’s why it’s important to learn by working on a project you like!  If you just learn coding from a book, you might get bored and give up more quickly.

It’s also important to pick a project that is small.  A lot of people try to make games that are too big, so they spend a lot of time and never finish them.  Even a small game can take many days or weeks to finish, but it will teach you a lot.

Q: Why did you start coding?

I started learning the BASIC programming language when I was about 7.  Like most kids, I did it because I wanted to make games.  When I got older, I became interested in making cool web sites and that’s where I learned more advanced programming.

I still write code because programming lets me be creative and I can make things that other people can use.

Q: What kind of code do you like the best?

I try to write code in a way that is easy for me to understand when I come back to it later.  Sometimes it’s not easy to figure out what code does, even if I wrote it myself!  Writing code is a bit like writing in English.  You want to be as clear as possible.

There is no one programming language that is the best, but I prefer languages that are easy to use.  Nowadays I program in JavaScript and PHP.  In the past, I have programmed in Java, Perl, BlitzMax, HaXe, and CoffeeScript. I even created my own programming language called THT so that I could use it to make websites more quickly.

Good luck!

Creating with Concept

When you hear someone talk about the “concept” behind their work, you might be skeptical that they are hiding behind… well, intellectual bullshit.

Like this painting, for example:

modern_art

Melancholy Paradox & Metamorphosis II

by Joe Lesko (Price: $3,500,000)

Regardless of how you feel about modern art, I have found concept to be one of my most powerful tools for all kinds of creative work.

I was personally inspired by the book Basic Design Index, by Jim Krause:

Concept is abstract, intangible, and untouchable — and yet, without its binding influence, the elements of a design fall from the page and land in the gutter.

Concept is notion; idea; direction; look-and-feel; the point behind the point.

In other words, concept gives a creation — whether it’s an app, a story, or a game — a sense of wholeness. It pulls all of the parts together into a clear sense of identity that the viewer can connect with.

Concept is that intangible quality that makes something feel well-designed.

Imagine a spiral galaxy like the Milky Way.   There is a massive black hole in the center, which is completely invisible (by definition!). Yet, it’s so powerful that you can see its presence on the billions of stars swirling around it.

spiral_galaxy

Concept is the gravity of design.

So for any given element of a design, I always ask:  “How can I make this relate to the central concept?”

I first applied this approach when I was designing Totally Tiny Arcade.  I had planned around 30 arcade minigames, all tied together with a meta-game that involved navigating the arcade itself.  I was overwhelmed with hundreds of design decisions that I had to make on my own.

How was I to know if I was making a good decision at each point?

I kept going back to the concept, which I imagined as “A wonderland of 80’s arcade games.”

From that idea, I had the main character literally fall inside each minigame, like Alice falling into her imaginary world.  I filled each game with absurd enemies, hidden treasures, crunchy 8-bit bleeps, and 80’s synth music.  Everything – from the screen transitions to the pattern on the carpeting – was informed by (and in turn reinforced) this one idea.

tta

Totally Tiny Arcade (PC, 2007)

The danger of designing without a concept is that you often end up with a Frankenstein of ideas, all mish-mashed together.

You often see this with new game designers who want to throw all of their favorite mechanics into a single game. e.g. “A massively multiplayer side-scrolling arcade platformer with RPG elements. And a crafting system.  And a puzzle-based tactical combat system.”

When you describe something simply as a list of features, that’s a warning sign that there is no clear concept.

A good concept will help you decide which features or ideas belong in the design, and which ones should be cut.  Sometimes that means cutting something that you really like.

But in return, it will help narrow your focus to something you are more likely to finish, and the final design is more likely to click with your audience.

How to Name Things

Coming up with a name for a project, game, or business can be really difficult.

I used to get attached to the first clever idea I came up with, as if it came from divine inspiration.  But I eventually noticed that my first ideas were often very similar to the ideas that everyone else comes up with.

For example, if I were naming a Pet Grooming company, my first idea would probably be something like this:

wnw

But if I were to take a step back and do a search for “pet grooming” in the local area, I would see a list of companies like:

  • Bow-Wow Bath Time
  • K-9 Kleaning Krew
  • Purrfect Pawlish
  • etc.

It’s clear that “Wash-N-Whiskers” would probably get lost in the crowd of other pet puns.

So nowadays, here’s how I avoid coming up with “samey” names:

  • Make a list of the names that are already out there in the same category.
  • Put them in groups, to figure out what the common themes are.
  • Think of ways to break from those patterns in an interesting way.

For example, when I was coming up with a name for my tabletop roleplaying app, a lot of the existing apps had techy sounding names like MapTool and D20Pro.

I named mine Fabletop — to capture the storytelling side of tabletop roleplaying.

What would I have called my hypothetical pet grooming company?

I would avoid pet puns and maybe try something more serious, like “J Lesko, Expert Pet Stylist“.

Or maybe something that sounds like a high-end salon, like “Animalé“:

animale

In this case, the name itself would help me re-think how I could make my pet grooming company unique. That’s what the art of positioning is all about.

For more about naming, I highly recommend this guide:

The Igor Naming Guide