<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Game-Design on Games From Within</title><link>https://gamesfromwithin.com/category/game-design/</link><description>Recent content in Game-Design on Games From Within</description><generator>Hugo</generator><language>en-us</language><copyright>2004–2026 Noel Llopis</copyright><lastBuildDate>Wed, 23 May 2018 00:00:00 +0000</lastBuildDate><atom:link href="https://gamesfromwithin.com/category/game-design/index.xml" rel="self" type="application/rss+xml"/><item><title>Dealing Cards</title><link>https://gamesfromwithin.com/dealing-cards/</link><pubDate>Wed, 23 May 2018 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/dealing-cards/</guid><description>&lt;p&gt;Most of my games and prototypes lately are very board gamey and almost always involve dealing random &amp;ldquo;cards&amp;rdquo; to create a hand of cards. For example, in &lt;a href="http://subterfuge-game.com/"&gt;Subterfuge&lt;/a&gt; players have the choice of one of three specialists every few hours, which is similar to dealing 3 random cards and having the player pick one.&lt;/p&gt;
&lt;p&gt;You would think that dealing cards at random would be trivially easy to implement. You would also be wrong.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Deal" loading="lazy" src="https://gamesfromwithin.com/dealing-cards/images/deal.png"&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>Most of my games and prototypes lately are very board gamey and almost always involve dealing random &ldquo;cards&rdquo; to create a hand of cards. For example, in <a href="http://subterfuge-game.com/">Subterfuge</a> players have the choice of one of three specialists every few hours, which is similar to dealing 3 random cards and having the player pick one.</p>
<p>You would think that dealing cards at random would be trivially easy to implement. You would also be wrong.</p>
<p><img alt="Deal" loading="lazy" src="/dealing-cards/images/deal.png"></p>
<h3 id="truly-random">Truly Random</h3>
<p>Always the eternal optimist (and devout follower of the <a href="https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it">YAGNI principle</a>), I start by implementing dealing cards by simply picking randomly among the types of cards available. Something along these lines:</p>
<pre tabindex="0"><code>for (int i=0; i&lt;HandSize; ++i)
    hand[i] = Random_GetInt(0, CardType::COUNT-1);
</code></pre><p>The best part of this approach is that it&rsquo;s simple. The bad part is&hellip; everything else.</p>
<p>Maybe that works for your game, and if so, congratulations, you can stop now and move on with the rest of the game. Unfortunately, this doesn&rsquo;t cut it for most card games. The player might get a hand all of the same card. Or maybe never get a card type that she really needs. Most of the time, an algorithm like this will frustrate players quite a bit and get in the way of the enjoyment of the game.</p>
<h3 id="deck-of-cards">Deck of Cards</h3>
<p>The next approach I usually try is to simply copy physical games and build an actual deck. Remember that we&rsquo;re talking about internal structures, so this doesn&rsquo;t mean that the concept of a deck is exposed to the player at all. As far as they know, they&rsquo;re just getting cards at &ldquo;random&rdquo;.</p>
<p><img alt="Deck" loading="lazy" src="/dealing-cards/images/deck-1.jpg"></p>
<p>In this case, you create an array of card types, shuffle it, and give cards from the top to the player.</p>
<pre tabindex="0"><code>const int cardsPerType = 3;
for (int i=0; i&lt;CardType::COUNT; ++i)
    for (int j=0; j&lt;cardsPerType; ++j)
        Deck_Add(deck, i);

Deck_Shuffle(deck);

for (int i=0; i&lt;HandSize; ++i)
    hand[i] = deck[i];
</code></pre><p>This is quite an improvement over our first approach. To start with, we&rsquo;re guaranteed never to get more than a certain amount of cards of each type in the deck. That will prevent ridiculous hands of all cards of the same type that make the game unplayable.</p>
<p>It also allows us to vary the amount of cards of each type in the deck. That way we can make some cards more rare than others, or even enforce unique cards by only adding one of each of those types.</p>
<p>You may argue that this approach is perfect since this is how &ldquo;true&rdquo; (meaning &ldquo;physical) card games are designed most of the time. While that is true, physical card games often involve just randomly shuffling a deck because the alternative would be very time consuming (or might need a third-party who isn&rsquo;t playing to set up the deck). Because of that, most games need to be able to deal with very uneven distribution of cards, which might be too limiting for your designs.</p>
<p>A lot of games games will benefit of having a more controlled deck, and since we&rsquo;re running on a computer, we can afford to do a lot more than just shuffle cards together. We can take advantage of the digital medium and do things we couldn&rsquo;t easily do with physical cards.</p>
<h3 id="aside-shuffling-a-deck">Aside: Shuffling a Deck</h3>
<p>Shuffling a deck might seem like a trivial algorithm, but as usual the details can get a bit tricky.</p>
<p>If you wanted to get very physical, you could try to simulate real riffle shuffling of a deck: randomly split the deck into more-or-less equal parts, and interleave them with each other with some randomness. Then you&rsquo;d have to run it <a href="https://www.math.hmc.edu/funfacts/ffiles/20002.4-6.shtml">several times</a> and even so I think you&rsquo;d get very suspect results.</p>
<p><img alt="Shuffling" loading="lazy" src="/dealing-cards/images/shuffling.gif"></p>
<p>A simplified algorithm is to randomly grab two cards in the deck and swap their positions. Is that good enough? How many times do you need to run that loop in order to get a proper (i.e. fully randomized) shuffle? I haven&rsquo;t analyzed that algorithm, but I get the feeling it would have to be done many times in order to get something acceptable (especially considering the not-very-random nature of computer &ldquo;random&rdquo; number generators).</p>
<p>The best and simplest approach I have found to shuffle a deck is the following: assign a random number to each card in the deck, then sort the cards based on that random number. It&rsquo;s easy to understand how a single sort will shuffle the deck properly and works the same for any number of cards (and runs in O(n log n) if we want to get pedantic about it).</p>
<h3 id="multiple-decks">Multiple Decks</h3>
<p>One way to have more control over the deck composition is to have multiple decks. We don&rsquo;t need to communicate to the player that there are in fact multiple decks, this is something that happens under the hood.</p>
<p>This is the approach we took in Subterfuge. Players are presented with a choice of 3 specialists every X hours. Initially those specialists were completely random, but the results were very underwhelming. <a href="https://blog.subterfuge-game.com/post/104851367166/luck-in-subterfuge">The approach we ended up settling on</a> involved classifying each specialist as being in the categories of attack, defense, or other. The game prepares 3 decks, one of each category with 3 of each of the specialists in each category. Additionally, we make sure that we never have 2 of the same specialist in a row.</p>
<p>When it comes time to generate 3 &ldquo;random&rdquo; specialists for the players to choose from, we pick the top one from each of the decks.</p>
<h3 id="blocks">Blocks</h3>
<p>In my current prototype, the player has a hand of 4-5 &ldquo;cards&rdquo;, and as soon as they use one, a new one is drawn and their hand refilled. Cards can be roughly classified in 6 different categories, and it&rsquo;s important that the player gets access to one of those categories within a few turns.</p>
<p>I wanted to come up with an approach that guaranteed access to tiles of all categories, but without making the pattern too obvious. For example, I didn&rsquo;t want to have the deck be one card of each category.</p>
<p>The solution I can up with was to break up the deck in blocks of 10 cards. Within each of those blocks, I can make some guarantees about its composition. This approach was inspired by the composition of boosters in collectable card games like Magic: The Gathering, or even in the way the deck is prepared in <a href="https://boardgamegeek.com/boardgame/30549/pandemic">Pandemic</a>.</p>
<p><img alt="Boosters" loading="lazy" src="/dealing-cards/images/boosters.jpg"></p>
<p>The way I implemented it, each block of 10 cards will contain one card of each category, plus 4 other random cards (as long as they are not already in the block). Then all the cards in the block are shuffled and added to the deck. This results in apparently &ldquo;random&rdquo; draws without feeling predictable, and yet players are never left without a key resource they may need.</p>
<p>This kind of enforced structure can also add some depth to the game. Expert players might notice this pattern (or read this, which is a lot easier) and use it to their advantage when they&rsquo;re trying to make decisions based on what cards might appear in future terms.</p>
<p>Any of you out there use a different method for creating random-but-not-quite-random draws in your games?</p>]]></content:encoded></item><item><title>Lasting Legacy Rulebook</title><link>https://gamesfromwithin.com/lasting-legacy-rulebook/</link><pubDate>Tue, 31 Oct 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/lasting-legacy-rulebook/</guid><description>&lt;p&gt;There&amp;rsquo;s nothing like writing down all the rules for a game to keep yourself honest. You can quickly see if complexity is spiraling out of control, and, most importantly, you get to see if your expectations of the design match the reality of the game.&lt;/p&gt;
&lt;p&gt;So I decided to write a &amp;ldquo;rulebook&amp;rdquo; for Lasting Legacy. I put rulebook in quotes because Lasting Legacy isn&amp;rsquo;t 100% a board game. There&amp;rsquo;s a light simulation component behind the scenes that is opaque to the player, but everything else can be treated like a board game. I figured it would be a good exercise for me, and maybe a good reference for early testers so they know what&amp;rsquo;s going on without a fancy tutorial.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Family tree" loading="lazy" src="https://gamesfromwithin.com/lasting-legacy-rulebook/images/family_tree.png"&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m happy with the final result. It&amp;rsquo;s about three pages of generously-spaced rules without any images, which beats a lot of board games out there.&lt;/p&gt;
&lt;p&gt;A word of caution: This is not trying to be a funny, engaging rulebook. It&amp;rsquo;s a dry, to the point, description of &lt;strong&gt;all&lt;/strong&gt; the rules in the game, arranged in the best way to understand all the concepts in a single read. It&amp;rsquo;s also not a &amp;ldquo;How to play&amp;rdquo; document. I think that could be another interesting exercise for down the line, where I just focus on the bare minimum to get a player playing.&lt;/p&gt;</description><content:encoded><![CDATA[<p>There&rsquo;s nothing like writing down all the rules for a game to keep yourself honest. You can quickly see if complexity is spiraling out of control, and, most importantly, you get to see if your expectations of the design match the reality of the game.</p>
<p>So I decided to write a &ldquo;rulebook&rdquo; for Lasting Legacy. I put rulebook in quotes because Lasting Legacy isn&rsquo;t 100% a board game. There&rsquo;s a light simulation component behind the scenes that is opaque to the player, but everything else can be treated like a board game. I figured it would be a good exercise for me, and maybe a good reference for early testers so they know what&rsquo;s going on without a fancy tutorial.</p>
<p><img alt="Family tree" loading="lazy" src="/lasting-legacy-rulebook/images/family_tree.png"></p>
<p>I&rsquo;m happy with the final result. It&rsquo;s about three pages of generously-spaced rules without any images, which beats a lot of board games out there.</p>
<p>A word of caution: This is not trying to be a funny, engaging rulebook. It&rsquo;s a dry, to the point, description of <strong>all</strong> the rules in the game, arranged in the best way to understand all the concepts in a single read. It&rsquo;s also not a &ldquo;How to play&rdquo; document. I think that could be another interesting exercise for down the line, where I just focus on the bare minimum to get a player playing.</p>
<h2 id="lasting-legacy-rulebook">Lasting Legacy Rulebook</h2>
<h3 id="1-overview">1. Overview</h3>
<h4 id="goal">Goal</h4>
<p>Gain the highest <img loading="lazy" src="/lasting-legacy-rulebook/images/LegacyIcon.png"><strong>Legacy</strong> possible.</p>
<p><img alt="Legacy" loading="lazy" src="/lasting-legacy-rulebook/images/legacy-1.png"></p>
<h4 id="setting">Setting</h4>
<p>Guide a European family around the 19th century through several generations. Socialize and find suitable marriage partners to grow you family, so you can earn <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong>, <img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong>, and ultimately, <img loading="lazy" src="/lasting-legacy-rulebook/images/LegacyIcon.png"><strong>Legacy</strong>.</p>
<p><img alt="Family" loading="lazy" src="/lasting-legacy-rulebook/images/family-1.png"></p>
<h3 id="2-concepts">2. Concepts</h3>
<p>Note: Any numbers shown here are just the defaults. There are always effects in the game that can modify those numbers up or down.</p>
<h4 id="family-members">Family members</h4>
<p>People in the family tree are called family members. Family members under 14 years old are considered children. They&rsquo;re represented with round frames and don&rsquo;t have any special abilities. Once they become adults they can choose between one or more occupations, depending on their education level. Adult family members will have children based on their age and fertility.</p>
<p><img alt="Family members" loading="lazy" src="/lasting-legacy-rulebook/images/family_members.png"></p>
<p>The head of the family, indicated with a special frame, defines which family members can be used at any given time. Only the head of the family, their spouse, and people under them (children and heirs) are enabled. Other family members are disabled and can&rsquo;t be used.</p>
<p><img alt="Head explained" loading="lazy" src="/lasting-legacy-rulebook/images/head_explained.png"></p>
<h4 id="occupations">Occupations</h4>
<p>Every adult member can have an occupation. The clothes and items people have represents their occupation. Occupations can be passive or active:</p>
<ul>
<li>Passive occupations have a permanent effect on the game. All the current effects are shown in the effect window.</li>
<li>Active occupations provide you with a potential action you can perform by clicking on the occupation button.</li>
</ul>
<p>Some occupations require a minimum education to appear as a choice. Occupations come in 4 rarities: common, uncommon, rare, and unique. Unique occupations will appear at most once per game. Occupations also could have one or more time periods during which they can appear: early, middle, or late in the game.</p>
<p><img alt="Occupation" loading="lazy" src="/lasting-legacy-rulebook/images/occupation-3.png"></p>
<h4 id="personality">Personality</h4>
<p>Every adult family member and friend has personality traits that consists of a series of likes and dislikes.</p>
<p><img alt="Likes" loading="lazy" src="/lasting-legacy-rulebook/images/likes-1.png"></p>
<h4 id="friends">Friends</h4>
<p>Your family friends are shown along the bottom of the screen, in oval frames. The smiley face shows their friendship level towards the family. Each year friendships drop a fixed amount. When the friendship level for a friend drops to 0, the face turns blue, and the following year that friend leaves.</p>
<p><img alt="Friends" loading="lazy" src="/lasting-legacy-rulebook/images/friends-1.png"></p>
<p>Friends can join your family through marriage. The heart in the friend&rsquo;s frame represents how much they love someone in your family. Love is determined by many factors, including personality match, sexual preference, age similarity, and friendship amount. If that love level is above a certain threshold, it means they&rsquo;re in love with someone and they&rsquo;re willing to marry that person (see section 3: Proposing and Accepting Proposals).</p>
<h4 id="gold">Gold</h4>
<p><img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong> is one of the primary resources in the game. It can be earned through actions and effects of people. Additionally, you may have a recurring <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong> income (shown in the green arrow), and a recurring <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong> payment (shown in the red arrow) that happen every year.</p>
<p><img alt="Gold" loading="lazy" src="/lasting-legacy-rulebook/images/gold-1.png"></p>
<p>You can spend more <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong> than you have, automatically taking a loan. Every year your <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong> is negative, your family pays 10% of that negative amount in interest payments. 200 <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong> is the debt limit. If you ever owe more that amount, the game ends in bankruptcy.</p>
<h4 id="prestige">Prestige</h4>
<p><img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> is the other primary resource of the game. It represents your social standing, and the more <img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> you have, the more friend slots you have available. You always have at least one friend slot. For every 10 <img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> you accumulate, you gain an additional friend slot up to a maximum of 10. Beyond that, you can accumulate more <img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> but you won&rsquo;t gain any more slots.</p>
<p><img alt="Friends" loading="lazy" src="/lasting-legacy-rulebook/images/friends.png"></p>
<p>If at any point you gain a friend but you have no empty slots available, the friend with the lowest friendship leaves and the new one takes its place.</p>
<p><img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> can also be spent to do actions that are usually associated with negative social implications. Friends can leave you if your <img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> falls and you lose a slot occupied by a friend.</p>
<p>Unlike <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong>, <img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> can&rsquo;t even go below zero. However, you can still use actions that would cause your <img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> to go to zero. If you do, the person who did the action will be disowned by the family and won&rsquo;t be part of the active family anymore.</p>
<h4 id="health">Health</h4>
<p>People normally are healthy. Sometimes they will become sick due to a variety of reasons. From there, each year they can either become healthy, stay sick, or turn terminally ill. Once someone is terminally ill, unless something is done about it, they will die the following year.</p>
<p><img alt="Health" loading="lazy" src="/lasting-legacy-rulebook/images/health-1.png"></p>
<h4 id="heir">Heir</h4>
<p>A yellow line in the tree indicates the next heir to the head of the family, which is the preferred child of the current head of the family. Whenever a family member does an action that&rsquo;s related to one of those traits, their parents will change their opinion of that person, either in a positive or negative way.</p>
<p><img alt="Heir" loading="lazy" src="/lasting-legacy-rulebook/images/heir.png"></p>
<p>You can see the current opinion of someone by selecting them and looking at the smiley faces over each of their children. The more filled in that face is, the higher the parent&rsquo;s opinion of that child is.</p>
<p>When the head of the family dies, the current heir becomes the new head of the family. The new head of the family also presents you with a new family goal due to their tastes and whims. This goal will let you gain <img loading="lazy" src="/lasting-legacy-rulebook/images/LegacyIcon.png"><strong>Legacy</strong> by doing certain things during their time as head of the family.</p>
<h4 id="heirlooms">Heirlooms</h4>
<p>Heirlooms will give you <img loading="lazy" src="/lasting-legacy-rulebook/images/LegacyIcon.png"><strong>Legacy</strong> based on different criteria. You start the game with one random family heirloom in your collection.</p>
<p><img alt="Heirloom" loading="lazy" src="/lasting-legacy-rulebook/images/heirloom-1.png"></p>
<h4 id="events">Events</h4>
<p>Every 30 to 70 years, an event will happen which will affect how things normally work. You will be notified 10 years before the event becomes active.</p>
<h4 id="countries">Countries</h4>
<p>The majority of the people you&rsquo;ll encounter during a playthrough come from the country you are playing in. You might encounter a few friends that come from neighboring countries. If you manage to add those friends to your family, that country will be unlocked and available for a future playthrough.</p>
<p>Countries add variety in the form of starting conditions, tweaked rules, and some unique occupations to those countries among other things.</p>
<h3 id="3-how-to-play">3. How to play</h3>
<p>Each turn, take one of the following actions. Each action will move the year forward one year.</p>
<h4 id="socialize">Socialize</h4>
<p>Gain one friend. The new friend&rsquo;s age and education level is influenced by the person who socialized.</p>
<p><img alt="Socialize" loading="lazy" src="/lasting-legacy-rulebook/images/socialize-1.png"></p>
<h4 id="visit-friend">Visit Friend</h4>
<p>Restore one friend&rsquo;s friendship level to the maximum.</p>
<p><img alt="Visit" loading="lazy" src="/lasting-legacy-rulebook/images/visit-2.png"></p>
<h4 id="propose-in-marriage">Propose in marriage</h4>
<p>Men in the family can propose in marriage to friends. When you click on the propose in marriage button, only the friends who are willing to accept will be highlighted. Click on one of them to marry them.</p>
<p><img alt="Propose" loading="lazy" src="/lasting-legacy-rulebook/images/propose.png"></p>
<p>Women will sometimes have a dowry made out of <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong> and/or <img loading="lazy" src="/lasting-legacy-rulebook/images/PrestigeIcon.png"><strong>Prestige</strong> associated with them. When you marry a woman with a dowry, those resources are added to the family resources. On the other hand, women from the family will sometimes have to offer a dowry in order to marry a man. In that case, those resources will be taken away from the family resources.</p>
<h4 id="accept-marriage-proposal">Accept marriage proposal</h4>
<p>People in the family can receive marriage proposals from friends (indicated by the hearts above their heads). These proposals are only available for one year. If you accept it, they&rsquo;ll be married right away. Otherwise, the friend will feel rejected and their friendship will drop more than usual.</p>
<p><img alt="Choose proposal" loading="lazy" src="/lasting-legacy-rulebook/images/choose_proposal.png"></p>
<h4 id="choose-an-occupation">Choose an occupation</h4>
<p>When a family member becomes an adult, they can choose an occupation (indicated by the question marks above their heads and their lack of occupation item and clothes).</p>
<p>If you don&rsquo;t choose an occupation, they will pick one of the available ones after 5 years.</p>
<p><img alt="Choose occupation" loading="lazy" src="/lasting-legacy-rulebook/images/choose_occupation.png"></p>
<h4 id="use-occupation-action">Use occupation action</h4>
<p>You can click on the occupation action of any active family member to perform that action. Occupation actions are unique to each occupation. Sick people can&rsquo;t do any occupation actions.</p>
<p><img alt="Action" loading="lazy" src="/lasting-legacy-rulebook/images/action-1.png"></p>
<p>You can also use the occupation action of a friend. That&rsquo;s like asking them for a huge favor, so they&rsquo;ll do the action, but then leave.</p>
<h4 id="restore-heirloom">Restore heirloom</h4>
<p>Whenever someone in your family over the age of 50 dies, they will leave a family heirloom in the attic. Each heirloom in the attic has a cost associated with restoring it. You need to restore an heirloom to add it to your heirloom collection so it generates <img loading="lazy" src="/lasting-legacy-rulebook/images/LegacyIcon.png"><strong>Legacy</strong>.</p>
<h4 id="pass">Pass</h4>
<p>When there&rsquo;s nothing else better to do, you can pass the turn and earn 5 <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong>.</p>
<p><img alt="Pass" loading="lazy" src="/lasting-legacy-rulebook/images/pass-1.png"></p>
<h3 id="4-end-of-game">4. End of game</h3>
<p>The game will end when one of these conditions is true:</p>
<ul>
<li>You run out of time and the war starts. The year display will always tell you how many years you have remaining.</li>
<li>You reach your <img loading="lazy" src="/lasting-legacy-rulebook/images/GoldIcon.png"><strong>Gold</strong> debt limit.</li>
<li>The head of the family dies without an heir.</li>
</ul>
<p>The amount of <img loading="lazy" src="/lasting-legacy-rulebook/images/LegacyIcon.png"><strong>Legacy</strong> you have at the end of the game is your final score.</p>]]></content:encoded></item><item><title>Isomorphism As a Game Design Tool</title><link>https://gamesfromwithin.com/isomorphism-as-a-game-design-tool/</link><pubDate>Thu, 13 Jul 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/isomorphism-as-a-game-design-tool/</guid><description>&lt;p&gt;In the early stages of developing a game, once I have the idea and &lt;a href="https://gamesfromwithin.com/the-feelings-of-lasting-legacy/"&gt;the feelings&lt;/a&gt; of the game down solid, my approach is to throw everything I can think of at the game and see what sticks.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Bubblegum" loading="lazy" src="https://gamesfromwithin.com/isomorphism-as-a-game-design-tool/images/bubblegum.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My early-in-development creative process.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t usually bother fleshing individual ideas out in design documents because it usually takes just as long for me to implement those things and see them in the game instead. And who would want to read about an idea when you can see how it works in the game directly?&lt;/p&gt;
&lt;p&gt;During this phase I need to generate lots of different ideas because only some of them are going to stick. The more varied the better, so I like to approach my idea generation from different angles. The two most common approaches are starting from the theme, and starting from the mechanics&lt;/p&gt;
&lt;p&gt;For example, in &lt;a href="http://lastinglegacygame.com/"&gt;Lasting Legacy&lt;/a&gt;, we quickly came up with occupations like Family Doctor or Ball Organizer from the theme, and figured out what useful things they could do in the game (heal people, and attract new friends respectively).&lt;/p&gt;
&lt;p&gt;We also came up with several occupations starting from a mechanics point of view. For example, we knew we wanted someone to increase the income of other people, so we came up with the Savvy Businessman occupation.&lt;/p&gt;
&lt;p&gt;This time around I also used a third approach to generate ideas: Isomorphism.&lt;/p&gt;</description><content:encoded><![CDATA[<p>In the early stages of developing a game, once I have the idea and <a href="/the-feelings-of-lasting-legacy/">the feelings</a> of the game down solid, my approach is to throw everything I can think of at the game and see what sticks.</p>
<p><img alt="Bubblegum" loading="lazy" src="/isomorphism-as-a-game-design-tool/images/bubblegum.png"></p>
<p><em>My early-in-development creative process.</em></p>
<p>I don&rsquo;t usually bother fleshing individual ideas out in design documents because it usually takes just as long for me to implement those things and see them in the game instead. And who would want to read about an idea when you can see how it works in the game directly?</p>
<p>During this phase I need to generate lots of different ideas because only some of them are going to stick. The more varied the better, so I like to approach my idea generation from different angles. The two most common approaches are starting from the theme, and starting from the mechanics</p>
<p>For example, in <a href="http://lastinglegacygame.com/">Lasting Legacy</a>, we quickly came up with occupations like Family Doctor or Ball Organizer from the theme, and figured out what useful things they could do in the game (heal people, and attract new friends respectively).</p>
<p>We also came up with several occupations starting from a mechanics point of view. For example, we knew we wanted someone to increase the income of other people, so we came up with the Savvy Businessman occupation.</p>
<p>This time around I also used a third approach to generate ideas: Isomorphism.</p>
<p><a href="https://en.wikipedia.org/wiki/Isomorphism">Isomorphism</a> is a word that comes from the greek composed of &ldquo;isos&rdquo; (same) and &ldquo;morphe&rdquo; (shape) and it means that two concepts are equal. This concept is very useful in mathematics. Imagine you have a very tough problem that you don&rsquo;t know how to solve. Instead of having to go through the very difficult task of trying to solve that problem, you could instead show that it maps exactly (is isomorphic) to another problem you have already solved.</p>
<p>How does that help us with game design? If we can determine that our game, or at least parts of our game, map to parts of other games, we can look to see if the mechanics of those games can apply to ours.</p>
<p>I didn&rsquo;t set out to design the Lasting Legacy this way, but it turns out there is a close correspondence between a lot of concepts in Lasting Legacy and Magic: The Gathering. That&rsquo;s really good news because not only is Magic a great game, but it has been in active development for 25 years and it has explored a lot of different mechanics. So being able to draw parallels and tap into those ideas is a great resource and a very different angle of attack to a tough problem.</p>
<p>The mapping between Magic and Lasting Legacy goes something like this:</p>
<ul>
<li>Hand of cards = Friends</li>
<li>Permanents = Active family tree</li>
<li>Graveyard = Dead and inactive family members</li>
<li>Library = Upcoming friends</li>
</ul>
<p><img alt="Mapping" loading="lazy" src="/isomorphism-as-a-game-design-tool/images/Mapping.jpg"></p>
<p>I want to highlight that we&rsquo;re talking about looking at concepts from another game, mapping them to our game, and then applying them, not using them straight. Those concepts couldn&rsquo;t be used as it is, or wouldn&rsquo;t make any sense, without the mapping from game to game. For example, in Magic: The Gathering, the player has a hand of cards but Lasting Legacy doesn&rsquo;t, so the idea of discarding a card to achieve something doesn&rsquo;t apply. Once we establish the mapping between the hand of cards and available friends, we could use the idea of dismissing a friend for similar purposes.</p>
<p>These are are some of the mechanics that we were able to map and apply to Lasting Legacy.</p>
<p><strong>Bringing cards back from graveyard.</strong> Reanimating creatures has been a staple of black decks in Magic from the beginning. Thematically we could revive a dead family member, but that doesn&rsquo;t fit very well with the more realistic approach of Lasting Legacy. Instead, we created a Genealogy Researcher, who can become the same occupation as a dead family ancestor.</p>
<p><img alt="Animatedead" loading="lazy" src="/isomorphism-as-a-game-design-tool/images/animatedead.jpg"></p>
<p><strong>Looking at cards from the top of the deck.</strong> Deck searching and manipulation is a very common blue Mechanic in Magic, but Lasting Legacy doesn&rsquo;t really have the concept of a deck of cards, so we can&rsquo;t do a lot of that. We can, however, look at the &ldquo;top&rdquo; X friends that would come up and pick one, which is exactly what the Dashing Socialite does. It&rsquo;s a very useful occupation because it gives you a degree of filtering of your friends and reduces <a href="/luck-in-games/">randomness</a>.</p>
<p><img alt="Impulse" loading="lazy" src="/isomorphism-as-a-game-design-tool/images/impulse.jpg"></p>
<p><strong>Enter the battlefield effects.</strong> In Magic, many creatures have an effect that is triggered whenever they &ldquo;enter the battlefield&rdquo; (meaning, enter in play). This is a very useful tool, and we adopted it in Lasting Legacy. It gives you another reason to bring someone into the family, even if it&rsquo;s not for their occupation or even to extend the main family branch. For example, the Charismatic Musician increases your prestige whenever he enters the family.</p>
<p><img alt="Auramancer" loading="lazy" src="/isomorphism-as-a-game-design-tool/images/auramancer.jpg"></p>
<p><strong>Blinking.</strong> Several cards in Magic allow players to &ldquo;blink&rdquo; permanents. That means those permanents go away and immediately enter into play again. That&rsquo;s very useful to protect those permanents or re-triggering their enter the battlefield effects. We haven&rsquo;t added this to Lasting Legacy yet, but it&rsquo;s definitely towards the top of the lit of possibilities, especially if we end up with many other occupations that have effects when they join the family. This mechanic might make for an interesting subtheme for an expansion down the line.</p>
<p><img alt="Blink" loading="lazy" src="/isomorphism-as-a-game-design-tool/images/blink.jpg"></p>
<p> </p>
<p>There are many more mechanics that could be mapped to Lasting Legacy, but these are some of the most interesting ones we&rsquo;ve done so far. If we end up making expansions, I&rsquo;m sure we&rsquo;ll revisit this topic as a source of new ideas and mechanics.</p>]]></content:encoded></item><item><title>Using SQLite to Organize Design Data</title><link>https://gamesfromwithin.com/using-sqlite-to-organize-design-data/</link><pubDate>Tue, 16 May 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/using-sqlite-to-organize-design-data/</guid><description>&lt;p&gt;I haven&amp;rsquo;t written purely about tech in a long time, but this is a particularly interesting intersection of tech and game design, so I thought I would share it with everybody. Be warned though: This is one of those posts that&amp;rsquo;s just about the thought process I went through for something and the solution I reached. I&amp;rsquo;m most definitely &lt;strong&gt;not&lt;/strong&gt; advocating this solution for everybody. Think about it and pick the solution that works for you the best.&lt;/p&gt;
&lt;p&gt;By now you&amp;rsquo;ve probably heard of &lt;a href="http://lastinglegacygame.com/"&gt;Lasting Legacy&lt;/a&gt;: you&amp;rsquo;re managing a family around the 19th century through several generations, socializing, choosing good marrying prospects, and helping family members pick an occupation. Ah, occupations&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Tutor" loading="lazy" src="https://gamesfromwithin.com/using-sqlite-to-organize-design-data/images/tutor.png"&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>I haven&rsquo;t written purely about tech in a long time, but this is a particularly interesting intersection of tech and game design, so I thought I would share it with everybody. Be warned though: This is one of those posts that&rsquo;s just about the thought process I went through for something and the solution I reached. I&rsquo;m most definitely <strong>not</strong> advocating this solution for everybody. Think about it and pick the solution that works for you the best.</p>
<p>By now you&rsquo;ve probably heard of <a href="http://lastinglegacygame.com/">Lasting Legacy</a>: you&rsquo;re managing a family around the 19th century through several generations, socializing, choosing good marrying prospects, and helping family members pick an occupation. Ah, occupations&hellip;</p>
<p><img alt="Tutor" loading="lazy" src="/using-sqlite-to-organize-design-data/images/tutor.png"></p>
<h3 id="occupations">Occupations</h3>
<p>Occupations and the life and blood of the game. It&rsquo;s what gives the player lots of new actions and effects that can be combined in lots of different ways to achieve lots of powerful effects. The only downside of occupations is that&hellip; there are a lot of them! Right now we have about 50 and that&rsquo;s just some really basic stuff. I expect the game will ship with about 100 occupations, and possibly more once we add country-specific ones.</p>
<p>50 doesn&rsquo;t sound too bad you say. Sure, but each occupation has a lot of data that goes along with it: a name, whether it has an action or not, text for the action,text for the log, costs, whether it&rsquo;s inherited&hellip; Hang on, let me tell you <strong>exactly</strong> what an occupation has:</p>
<pre tabindex="0"><code>struct OccupationInfo
{
     Occupation::Enum occupation;
     Rarity::Enum rarity;
     const char* maleName;
     const char* femaleName;
     const char* description;
     const char* logEntry;
     IconSpriteId::Enum spriteId;
     uint32_t periodFlags;
     int goldIncome;
     bool incomeMultiplied;
     int prestigeIncome;
     int legacyIncome;
     bool action;
     int goldCost;
     int prestigeCost;
     bool educationRequired;
     int targetCount;
     bool pickable;
     bool destructive;
     bool inherited;
     Occupation::Enum childrenOccupation;
     int personLike;
     uint32_t tags;
     AccessoryType::Enum maleAccessories[MaxAccessories];
     AccessoryType::Enum femaleAccessories[MaxAccessories];
     int maleAccessoriesCount;
     int femaleAccessoriesCount;
};
</code></pre><p>How do we set all that data for 50 different occupations? Back when I was working for big game companies I&rsquo;m sure that someone&rsquo;s job would have been to create a GUI tool to let designers enter those values. Then someone else would create a fancy XML format that could be exported from the tool. Then, if we were lucky, someone else would take that XML and crunch it during the asset conversion process into something binary that could be read directly into memory. Probably someone else would work on tech that would let you hot load new data while the game was running. Sweet!</p>
<p>Except that now I&rsquo;m a lowly indie developer and I don&rsquo;t have time for any of that stuff that doesn&rsquo;t actually make the game better. Fortunately, I also don&rsquo;t have a team of 50 designers to deal with, so my solution is this:</p>
<pre tabindex="0"><code>{
	OccupationInfo&amp; info = OccupationInfos[Occupation::Banker];
	info = OccupationInfo(Occupation::Banker, &#34;Town Banker&#34;, IconSpriteId::Banker);
	strcpy(info.description, &#34;Gain 100 gold. Income decreases by 1.&#34;);
	info.logEntry = &#34;%s %s gained %d gold.&#34;;
	info.tags = OccupationTags::Gold;
}
{
	OccupationInfo&amp; info = OccupationInfos[Occupation::Poisoner];
	info = OccupationInfo(Occupation::Poisoner, &#34;Cunning Poisoner&#34;, IconSpriteId::Poisoner);
	strcpy(info.description, &#34;Kill another family member.&#34;);
	info.logEntry = &#34;%s %s poisoned %s %s.&#34;;
	info.cost = 500;
	info.tags = OccupationTags::Danger;
	info.rarity = Rarity::Uncommon;
}
{
	OccupationInfo&amp; info = OccupationInfos[Occupation::Tutor];
	info = OccupationInfo(Occupation::Tutor, &#34;Private Tutor&#34;, IconSpriteId::Tutor);
	strcpy(info.description, &#34;Another adult family member leaves their occupation and becomes educated.&#34;);
	info.logEntry = &#34;%s %s sent %s %s to school.&#34;;
	info.educationRequired = true;
	info.tags = OccupationTags::Social;
}
</code></pre><p>&ldquo;Oh the horror! Hardcoded data!&rdquo; shriek all new CS students as they recoil from the screen.</p>
<p>But it really isn&rsquo;t that bad. Actually, it&rsquo;s pretty great: I don&rsquo;t have any exporting/importing to do, I don&rsquo;t have to load anything at runtime, and the compiler does a lot of checking for me. True, I can&rsquo;t change it on the fly, but I don&rsquo;t really need to when rebuilding the whole game takes about a second.</p>
<p>Unfortunately the problem is that we have 50 of those initialization blocks. Hopefully a lot more by the time we ship. They&rsquo;re perfectly fine to work on each of them in isolation, but I&rsquo;m not able to get a big picture. Have I created a similar one to this new one I&rsquo;m thinking about? How much do other similar occupations cost? Can I get all the Social occupations together so I can compare them? How many rare occupations do we have in the late period? I can&rsquo;t answer those questions very well by looking at that code. I needed something else.</p>
<h3 id="global-view">Global View</h3>
<p>Using some kind of text file wouldn&rsquo;t help any. It would be a matter of changing that into an ini or an XML file, which would be much more painful without any of the benefits.</p>
<p>I started setting up a Google Spreadsheet, which is something we did for the specialists in <a href="http://subterfuge-game.com/">Subterfuge</a>. Spreadsheets have some nice capabilities like doing data validation on cells (for example, to enter enums), or letting you sort records based on some criteria. In Subterfuge the spreadsheet method worked reasonably well because we didn&rsquo;t have as many specialists and each of them had less data, so the spreadsheet was pretty manageable. Here we just had too much data for each occupation and the spreadsheet was getting unwieldy.</p>
<p>Miguel mentioned SQLite, but I wasn&rsquo;t too keen on linking with some extra library and loading that data at runtime. It also sounded like total overkill to have a full relational database for what amounts to a single table. Then I realized how wrong I totally was.</p>
<p>People have written GUI tools for SQLite that let you create, edit, and browse databases very easily. For example, we&rsquo;re using <a href="http://sqlitebrowser.org/">DB Browser for SQLite</a> and I think there are better ones out there (although maybe not free ones). Our main table looks something like this:</p>
<p><img alt="Table" loading="lazy" src="/using-sqlite-to-organize-design-data/images/table.png"></p>
<p>And the data itself like this:</p>
<p><img alt="Data" loading="lazy" src="/using-sqlite-to-organize-design-data/images/data.png"></p>
<p>It looks like a spreadsheet until you realize that you can very easily search any field and you can even create &ldquo;views&rdquo; with more complex queries ahead of time. So now I can quickly see how many rare occupations we have in the late period with a single click. Very sweet! It definitely gives me that global view I was hoping for.</p>
<p>How about loading this data from the database at runtime? I doubt it would be a big deal, but it&rsquo;s still something I&rsquo;m not crazy about. Fortunately, it&rsquo;s super easy to extract the data from SQLite. We have this in our make file:</p>
<pre tabindex="0"><code>@sqlite3 -header -csv $(DB_SRC) &#39;SELECT * FROM Occupations&#39; &gt; $(DB_CSV)
</code></pre><p>And that spits out a nice comma-separated file with all the data. Still, loading csv files at runtime isn&rsquo;t much of an improvement, so we do a bit more processing. Initially I started converting the csv file into an ini file (since we already have an ini-reader library), but then I realized there was no point in doing that. Unlike Subterfuge, I&rsquo;ll never want to have different versions of the game data around and load them based on different rules versions. We just want one true version. What&rsquo;s the easiest way to put that data in the game? C code!</p>
<p>So with a simple Python script, I convert that csv file into a C file that looks an awful lot like the one we started with, except that this time it&rsquo;s completely derived from the contents of the database. One of the great benefits of this is that we can let the compiler do a lot of the checking instead of having to do it in the script or (gasp) at runtime. For example, some occupations force their children to have a particular occupation (King -&gt; Prince). I don&rsquo;t even have any code that checks that the occupation you enter there is valid. We just generate code like this:</p>
<pre tabindex="0"><code>info.childrenOccupation = Occupation::XXXXX;
</code></pre><p>If XXXXX doesn&rsquo;t happen to be a valid Occupation enum, you get a build error until you fix it. And again, since the whole turnaround time between editing the database and building the game can be a second or two, it&rsquo;s really no big deal at all.</p>
<h3 id="constants">Constants</h3>
<p>I left one small detail: Constants. Look at some of the first code I put up early on:</p>
<pre tabindex="0"><code>strcpy(info.description, &#34;Gain 100 gold. Income decreases by 1.&#34;);
</code></pre><p>What&rsquo;s wrong with that? Yup, you got it. Somewhere else in the code, I have some constants like this:</p>
<pre tabindex="0"><code>const int BankerReward = 100;
const int BankerIncomePenalty = 1;
</code></pre><p>Now every time I change how much money the Banker gives, I need to change the string and the constant (let&rsquo;s not even talk about localized strings yet).</p>
<p>So instead now I use global string replacement while we&rsquo;re generating the C code. The string on the database is this:</p>
<pre tabindex="0"><code>Gain [[BankerReward]] gold. Income decreases by [[BankerIncomePenalty]].
</code></pre><p>Whenever we load the csv file, we look for any substrings with the pattern [[&hellip;]] and we try to match them from a header file with constants that we&rsquo;ve loaded. If we find them, we replace them with their values, and if we don&rsquo;t, we spit out an error and stop because clearly someone wanted to have a string replaced there and probably mistyped it.</p>
<p>Does all of that sound complicated? Not really. When I said earlier that the Python script was simple, I wasn&rsquo;t kidding. This is the bulk of it, including the constant replacement (just a couple helper functions are missing):</p>
<pre tabindex="0"><code>def main():
	dir = os.path.dirname(os.path.realpath(__file__))
	baseDir = dir + &#34;/../LastingLegacy/AssetsRaw/&#34;
	reader = csv.DictReader(open(baseDir + &#39;db/occupations.csv&#39;, &#39;rU&#39;))

	sourceCodeDir = baseDir + &#34;../src/&#34;
	globalVariables = readGlobalVars(sourceCodeDir)
	pattern = re.compile(r&#39;\b(&#39; + &#39;|&#39;.join(globalVariables.keys()) + r&#39;)\b&#39;)

	Rarities = {&#39;C&#39;: &#39;Rarity::Common&#39; , &#39;U&#39;: &#39;Rarity::Uncommon&#39;, &#39;R&#39;: &#39;Rarity::Rare&#39;, &#39;Q&#39;: &#39;Rarity::Unique&#39;}
	Periods = {&#39;E&#39;: &#39;Period::Early&#39; , &#39;M&#39;: &#39;Period::Middle&#39;, &#39;L&#39;: &#39;Period::Late&#39;}

	defFile = open(sourceCodeDir + &#34;Occupations.inc&#34;, &#39;w&#39;)
	for entry in reader:
		type = entry[&#39;id&#39;]
		defFile.write(&#39;{\nOccupationInfo&amp; info = OccupationInfos[Occupation::&#39; + type + &#39;];\n&#39;)
		defFile.write(&#39;info.occupation = Occupation::&#39; + type + &#39;;\n&#39;)
		defFile.write(&#39;info.spriteId = IconSpriteId::&#39; + type + &#39;;\n&#39;)
		defFile.write(&#39;info.maleName = &#34;&#39; + entry[&#39;maleName&#39;] + &#39;&#34;;\n&#39;)
		if entry[&#39;femaleName&#39;]:
			defFile.write(&#39;info.femaleName = &#34;&#39; + entry[&#39;femaleName&#39;] + &#39;&#34;;\n&#39;)
		else:
			defFile.write(&#39;info.femaleName = info.maleName;\n&#39;)
		
		description = multipleReplace(entry[&#39;description&#39;], globalVariables)
		defFile.write(&#39;info.description = &#34;&#39; + description +&#39;&#34;;\n&#39;)
		
		defFile.write(&#39;info.logEntry = &#34;&#39; + entry[&#39;logEntry&#39;] + &#39;&#34;;\n&#39;)
		WriteOptionalBool(defFile, entry, &#39;educationRequired&#39;, type)
		WriteOptionalKey(defFile, entry, &#39;goldCost&#39;, type)
		WriteOptionalKey(defFile, entry, &#39;prestigeCost&#39;, type)
		WriteOptionalKey(defFile, entry, &#39;goldIncome&#39;, type)
		WriteOptionalKey(defFile, entry, &#39;prestigeIncome&#39;, type)
		WriteOptionalKey(defFile, entry, &#39;legacyIncome&#39;, type)
		WriteOptionalBool(defFile, entry, &#39;incomeMultiplied&#39;, type)
		WriteOptionalBool(defFile, entry, &#39;action&#39;, type)
		WriteEnum(defFile, entry, &#39;rarity&#39;, Rarities, type)
		WritePeriodFlags(defFile, entry, &#39;periods&#39;, Periods, type)
		WriteOptionalKey(defFile, entry, &#39;targetCount&#39;, type)
		WriteOptionalBool(defFile, entry, &#39;destructive&#39;, type)
		WriteOptionalBool(defFile, entry, &#39;pickable&#39;, type)
		WriteOptionalBool(defFile, entry, &#39;inherited&#39;, type)
		if entry[&#39;childrenOccupation&#39;]:
			defFile.write(&#34;info.childrenOccupation = Occupation::&#34; + entry[&#39;childrenOccupation&#39;] + &#34;;\n&#34;)
		WriteOptionalKey(defFile, entry, &#39;personLike&#39;, type)
		WriteOptionalTags(defFile, entry, &#39;tags&#39;, type)
		WriteOptionalAccessories(defFile, entry, &#39;maleAccessories&#39;, type)
		WriteOptionalAccessories(defFile, entry, &#39;femaleAccessories&#39;, type)

		defFile.write(&#39;}\n&#39;)

	defFile.close()	
</code></pre><p><a href="/wp-content/uploads/2017/05/generateoccupations.py_.zip">Here&rsquo;s the full script</a> in case anyone is interested in the details.</p>
<p>Boom! Done!</p>
<p>Ship it.</p>]]></content:encoded></item><item><title>The Feelings of Lasting Legacy</title><link>https://gamesfromwithin.com/the-feelings-of-lasting-legacy/</link><pubDate>Fri, 27 Jan 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/the-feelings-of-lasting-legacy/</guid><description>&lt;p&gt;When I start working on a game, one of the first things I decide is how will the game make the player feel. Different designers have different ways of driving and focusing the design of their games: some will use a short elevator pitch, some will use key pieces of art, some will let the mechanics dictate the rest. I prefer to use the way I want players to feel to anchor the design, and I flesh out the rest of the game around it.&lt;/p&gt;
&lt;p&gt;Once you have defined that feel, you can run every single design decision by it. Every game feature should support those feelings in some way, if not, they&amp;rsquo;re a good candidate to cut. And if some contradict them directly, you can veto them right away and not go down that path any further.&lt;/p&gt;</description><content:encoded><![CDATA[<p>When I start working on a game, one of the first things I decide is how will the game make the player feel. Different designers have different ways of driving and focusing the design of their games: some will use a short elevator pitch, some will use key pieces of art, some will let the mechanics dictate the rest. I prefer to use the way I want players to feel to anchor the design, and I flesh out the rest of the game around it.</p>
<p>Once you have defined that feel, you can run every single design decision by it. Every game feature should support those feelings in some way, if not, they&rsquo;re a good candidate to cut. And if some contradict them directly, you can veto them right away and not go down that path any further.</p>
<p>For Lasting Legacy, we have two main feelings we want to evoke in players:</p>
<p><img alt="960" loading="lazy" src="/the-feelings-of-lasting-legacy/images/960-1.jpg"></p>
<h3 id="1-experiencing-the-drama-of-complex-family-stories">1. Experiencing the drama of complex family stories.</h3>
<p>A playthrough of Lasting Legacy lasts about 20-30 minutes and the game is intended to be played over many times (more details on this for a later post). Each of those playthroughs is completely different, and the player experiences an entirely different story of a family through the generations. The combination of the player&rsquo;s actions and the behaviors of the game characters should create funny, memorable, and sometimes bizarre situations.</p>
<p>For example, this is a recount of something that happened in just one of the generations of one of my recent plays of the game:</p>
<blockquote>
<p>The Novak family was pennyless and without any income. Mr. and Ms. Novak spent all their effort into trying to gain prestige and money to secure a place in society. They had two children, Jakab and Andrea. Jakab, unfortunately, ended up being the Town Gossipmonger and never held any real jobs. Andrea managed to become a Baker, but the income was meager.</p>
<p>Things started looking up when Andrea, caught the eye of Mr. Kende, a handsome, rich friend of the family. They were quickly married and the family felt the relief as they had access to Mr. Kende&rsquo;s fortune. The parents approved very strongly of this union and made sure that Andrea would become the heir of the family.</p>
<p>Years passed, and even though the disappointing Jakab was married and provided numerous grandchildren to Mr. Novak, Andrea and Mr. Kende didn&rsquo;t have any children of their own yet. This was a grave cause of concern for her parents, who even encouraged them to see an herbalist to increase their fertility. A few more years passed and at this point it was clear that there would be no children out of that marriage. Something had to be done or the dynasty would end right there.</p>
<p>Jakab started spreading rumors about how Mr. Kende had come by his fortune through shady means, hoping to hurt his reputation and have his parents choose him as the new heir. His attempt failed, ended up being further distanced from his parents, and Andrea was still the sole heir.</p>
<p>Mr. and Ms. Novak died after some time, and Andrea and Mr. Kende, still childless, became the new head of the family. It looked like the dynasty would end here, but that&rsquo;s when they became acquainted with Ms. Bognar, the orphanage director. She was able to facilitate the adoption of Henrietta, an adorable 6 year-old girl who would become the hope of the family&rsquo;s future for years to come.</p>
</blockquote>
<p>We want to be able to let players share their most memorable stories, but we haven&rsquo;t fleshed out exactly how we&rsquo;re going to do that. As you can see from the previous paragraphs, it&rsquo;s not a trivial matter. One possibility is to export some kind of autogenerated scrapbook that players can annotate if they want to, but there are many other ways we can go wit this (Any great ideas? Let us know in the comments).</p>
<p><img alt="Alurencombo" loading="lazy" src="/the-feelings-of-lasting-legacy/images/alurencombo-1.png"></p>
<h3 id="2-feeling-smart-for-discovering-combinations-of-occupations-that-create-really-powerful-outcomes">2. Feeling smart for discovering combinations of occupations that create really powerful outcomes.</h3>
<p>The explicit goal of Lasting Legacy is to score as many points as possible (i.e. build the largest legacy). In order to do that, players will acquire gold, prestige, and eventually turn it into legacy through different means. To get really high scores, players will have to carefully combine the actions and abilities from the different members of their family and their friends. The more outrageous the combination, the bigger the score.</p>
<p>This is an example of the kind of thinking that goes behind finding combinations of powers:</p>
<blockquote>
<p>The current head of the family likes prestige and will give 1 legacy for every 10 prestige the family earns. You have a Philantropic Benefactor in your family that gives you 5 prestige for every 50 gold you &ldquo;donate&rdquo;, but gold is running low. However, you also have access to a Ruthless Negotiator, who reduces all action costs by half, so each Philanthropic Benefactor activation gives you 5 prestige for 25 gold. This works for a few years, but you&rsquo;re almost out of money.</p>
<p>Then you notice that one of your friends is a Radical Anarchist, whose power is to get rid of all debt but he goes to jail. So you bring him to the family, rack up the debt to the maximum with the Philanthropic Benefactor, and finally send off the Radical Anarchist to erase all the debt. As a result, you gained a large amount of legacy, greatly increased your prestige, and didn&rsquo;t spend much gold in the process.</p>
</blockquote>
<p>This is very similar to the kind of combination of powers you find in games like Magic: The Gathering (<a href="/most-influential-games-on-me/">a huge influence on me in general</a>), and also reminiscent of the specialists powers in <a href="http://subterfuge-game.com/">Subterfuge</a>.</p>
<p>Those two goals are orthogonal. I could see some players enjoying one but not caring about the other, so we&rsquo;re making the game that can be enjoyable even if you just care about one of those aspects. We&rsquo;re making sure that both kinds of players can enjoy the game to the fullest. Someone who mostly cares about the stories, can just focus on growing the family and dealing with the emerging drama. On the other hand, someone who cares about maximizing their score also need to maintain the family going because it means playing longer and scoring more points, but they can ignore the in-game meaning of the actions they&rsquo;re taking and just visualize it in terms of how big of a legacy they&rsquo;re creating.</p>
<p>We hope that once players have played through the game many times and they become really good at it, that they ignore the explicit game goals and make their own constraints. The game becomes more of a toy at that point (unconstrained play) which is an aspect I love in games (we did that with <a href="http://shared.caseyscontraptions.com/">Casey&rsquo;s Contraptions</a> as well). For example, the player may want to decide to play through a family in extreme poverty that never earns any gold, or a family that is all made out of criminals and low-life characters, or maybe just try to breed the most extreme physical characteristics possible. We hope there&rsquo;s a lot of room for exploration and enjoyment beyond just getting high scores.</p>]]></content:encoded></item><item><title>Luck In Games</title><link>https://gamesfromwithin.com/luck-in-games/</link><pubDate>Tue, 06 Aug 2013 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/luck-in-games/</guid><description>&lt;p&gt;The amount and type of luck involved in a game has a profound impact on the feel of that game. Some games have no luck whatsoever, and all the variation comes from what the opponent does (chess), some of them are all about luck with not much else (roulette), and most of them fall somewhere in between, creating a wide spectrum of possible experiences.&lt;/p&gt;
&lt;p&gt;We don&amp;rsquo;t talk much about the role of luck in video games, probably because it&amp;rsquo;s hidden away under the black box of the computer simulation, but just like with board games, it can have have a large impact in the type of experience the video game provides.&lt;/p&gt;
&lt;p&gt;Thinking about luck in these terms was crucial for the game I&amp;rsquo;m working on (still unannounced!). We made some crucial decisions thinking about how luck was part of the game and kind what kind of experience it created for the player. I&amp;rsquo;m hoping this post helps people with similar design challenges.&lt;/p&gt;</description><content:encoded><![CDATA[<p>The amount and type of luck involved in a game has a profound impact on the feel of that game. Some games have no luck whatsoever, and all the variation comes from what the opponent does (chess), some of them are all about luck with not much else (roulette), and most of them fall somewhere in between, creating a wide spectrum of possible experiences.</p>
<p>We don&rsquo;t talk much about the role of luck in video games, probably because it&rsquo;s hidden away under the black box of the computer simulation, but just like with board games, it can have have a large impact in the type of experience the video game provides.</p>
<p>Thinking about luck in these terms was crucial for the game I&rsquo;m working on (still unannounced!). We made some crucial decisions thinking about how luck was part of the game and kind what kind of experience it created for the player. I&rsquo;m hoping this post helps people with similar design challenges.</p>
<p>This post should apply to any kind of game in general (board or video games). Next time, I&rsquo;ll be focusing especially on luck in video games using this as a launching point for a deeper look. Also, I&rsquo;m limiting the definition of luck to random effects built into the game system itself, and not due just to player interaction.</p>
<h2 id="no-luck-games">No-Luck Games</h2>
<p>In games with no luck, players rely completely on their skill to win. In that way, they&rsquo;re closer to sports. Games become an intense, straight competition, pitting players&rsquo; brains against each other. Right there it shows how luck (or in this case, the absence of luck) creates a very specific feel to a game.</p>
<p>Good examples of games without any luck are classics such as Chess or Go. There are also plenty of modern board games with no luck, like <a href="http://www.boardgamegeek.com/boardgame/3076/puerto-rico">Puerto Rico</a>, <a href="http://www.boardgamegeek.com/boardgame/18602/caylus">Caylus</a> (they both have a minimal amount of luck in the initial tile order), or <a href="http://www.boardgamegeek.com/boardgame/2655/hive">Hive</a>.</p>
<p>It&rsquo;s interesting that a lot of abstract games tend to have no luck, and the more thematic a game gets, the more they seem to rely on luck.</p>
<h2 id="are-you-feeling-lucky">Are You Feeling Lucky?</h2>
<p>Having some amount of luck in a game can be very beneficial for most kinds of board games. It accomplishes many things:</p>
<ol>
<li>Keeps things varied from game to game</li>
<li>Keeps players feeling they have a chance to win even if they&rsquo;re not currently ahead</li>
<li>Removes pressure from winning players (&ldquo;If someone beats me, it&rsquo;s because they had a lucky streak&rdquo;)</li>
<li>Makes players who didn&rsquo;t win feel they stand a chance next time they play (&ldquo;next time I&rsquo;ll catch a break and I can win!&rdquo;)</li>
</ol>
<p>Points 2, 3, and 4 all encourage more people to play the game and feel they&rsquo;re competitive at it, even if they didn&rsquo;t win (and even if they&rsquo;re not really competitive). One of the best examples of this is poker: Everybody feels they can do great at poker, if only they get good cards. In reality, this is not true in the long term, but poker introduces plenty of luck that it really is true in the short term.</p>
<p>A consequence of all those points is that having some amount of luck allows players of different skills to participate in the same game and enjoy it equally. For games that rely on having multiple people looking to play it, it can be a big factor.</p>
<h2 id="types-of-luck">Types of luck</h2>
<p>For games that choose to add some luck element, there&rsquo;s a whole range of amounts and types of lucks they can use for different effects. Unfortunately, it&rsquo;s also possible to mix the wrong type of luck with a given game feature and create a frustrating experience instead of an enjoyable one.</p>
<ul>
<li>Post-action luck. This is luck introduced after the player has made a decision and executed an action. It can be in the form of flipping a coin to see if you unlock a chest, or rolling a dice to see if your armies invade a territory.</li>
<li>Pre-action luck. Pre-action luck consists of the random events that happen before the player performs an action. The player is able to take them into account and make a decision based on them.</li>
<li>Hidden information. Hidden information is the third kind of luck. I was a bit hesitant to include it as its own category first, but it seemed different enough from the other two to warrant being listed on its own. Hidden information refers to things that are known only to some players and will affect other players or the game scoring.</li>
</ul>
<p><img alt="Dice troyes" loading="lazy" src="/luck-in-games/images/dice-troyes.jpg"></p>
<h2 id="post-action-luck">Post-action luck</h2>
<p>OK, I&rsquo;m going to say it: I&rsquo;m not a fan of post-action luck. The player has already made its action and the outcome is random (even if it&rsquo;s based on a probability curve the player is aware of, like <a href="http://anydice.com/program/e6">rolling 3 six-sided dice</a>). Since it doesn&rsquo;t add to the choices the player has, it&rsquo;s mostly uninteresting. This is the kind of luck that can add a bit of spice to an otherwise boring game, it doesn&rsquo;t do much to make the game more interesting.</p>
<p>When used incorrectly, this kind of luck is extremely frustrating. The player can feel they chose the &ldquo;best&rdquo; action, but they rolled double 1s and their move backfired on them. Sure, there was some tension knowing that could happen, but was it really fun? Maybe the first time or two, but probably not long term.</p>
<p>While I typically really don&rsquo;t like this kind of luck in my games, there are some situations in which even I will add it can add some interest to the game.</p>
<p>The first case is when the player can choose to perform one action or another, being aware of the different probability curves for both actions. For example, you can roll a single die and deal that damage to an enemy, or you can roll two dice, but if you roll two 1s, your character gets hit instead. In a situation like that, even though it&rsquo;s still post-action luck, the player was presented with a meaningful decision ahead of time and had to weight the risks and rewards of both options.</p>
<p>The second case where post-action luck can work is when the action is repeated many times over the course of a game. That way, the outcome of each individual action in themselves is not game-breaking, and all the actions will eventually add up to the average over the course of the game. Luck in this case introduces a bit of noise and slight excitement without affecting things much.</p>
<p>This is a good situation to combine with the ability for players to slowly change their probability curves over the course of the game. That way, they can increase their chances of success for an action as the game progresses, presenting the player with a way to feel more powerful. This is often used in RPGs and video games.</p>
<p>Having some kind of post-action luck that affects the outcome of an action can also give players hope that they can do something, even if those chances are small. Otherwise, without any luck involved, they would see the situation is hopeless and lose interest in the game. At the same time, having that luck element makes predicting every possible outcome nearly impossible, so it encourages players to make a decision without spending a long time figuring out an ideal outcome.</p>
<p>Finally, another situation where post-action luck isn&rsquo;t always a bad thing is in very short games. I love <a href="http://www.boardgamegeek.com/boardgame/70323/king-of-tokyo">King of Tokyo</a> even though it&rsquo;s a complete dice fest with lots of post-action luck. Even if you get some really bad dice rolls, a game maybe only lasts 10-15 minutes, so it didn&rsquo;t feel like a complete waste of time. On the other hand, losing a 4-hour game to a dice roll can be extremely infuriating.</p>
<p>The dark side of post-action luck is the human addition to random rewards, which is the reason why gambling or slot machines are so popular. Games can exploit that human quirk to their advantage and hook players in a game that would otherwise not be very interesting or fun.</p>
<p>A very meta post-action luck is buying &ldquo;booster packs&rdquo; of collectable card games (like Magic The Gathering). Purchasing the cards is the action, and the luck happens when you open it and see which random cards were in the pack. As most ex-Magic The Gathering players can attest, this can be extremely addictive.</p>
<h2 id="pre-action-luck">Pre-action luck</h2>
<p>This type of luck can add just as much randomness as post-action luck, but creates a very different feel for the game. Since the random event happens before the player action, even if you didn&rsquo;t get the ideal outcome you were hoping for, you can choose to do the best action given your situation.</p>
<p>To illustrate the difference, consider power-ups in a first-person shooter. You open the door to one room and there&rsquo;s a mysterious gift package power-up. You have no idea what it is, you pick it up andâ€¦ it turns out it was health. Maybe that&rsquo;s great because you were low in health. Or maybe you were maxed out and it was useless. That&rsquo;s post-action luck.</p>
<p>Alternatively, imagine you open that door and you see 3 power-ups side by side. You see what they&rsquo;re going to give you (health, ammo, or a new weapon). As soon as you take one, the others go away. Maybe neither one of them is exactly the ideal, but you can make a decision and pick the best one for your situation. That&rsquo;s pre-action luck.</p>
<p>In board games, <a href="http://www.boardgamegeek.com/boardgamedesigner/4958/stefan-feld">Stefan Feld</a> is the master of pre-action luck. A lot of his games involve some kind of luck mechanism that limits your actions. For example, in <a href="http://www.boardgamegeek.com/boardgame/84876/the-castles-of-burgundy">The Castles of Burgundy</a> or <a href="http://www.boardgamegeek.com/boardgame/127060/bora-bora">Bora Bora</a>, you roll dice, and the numbers on those dice determine which actions you can take.</p>
<p>Without going that far, just about any games that involves drawing cards from a deck and having a &ldquo;hand&rdquo; of cards uses pre-action luck. The cards you&rsquo;re dealt are the pre-action luck, and then you have to do the best you can with those cards.</p>
<p>An extreme type of pre-action luck is initial game layout. That happens only a single time during the game, and before players make any actions, so it has the potential to affect the full course of the game. Even players who are adamantly opposed to luck in games, are often willing to accept game setup randomness because it can be fully taken into account during the game without any surprises.</p>
<p>Pre-action luck isn&rsquo;t as common in games as post-action luck, but it could be used just about anywhere that post-action luck is used. Consider the classic situation of a character attack some monsters and rolling a set of dice that determine whether he hits and how much damage it does. We could change that into pre-action luck by having players roll the dice (either all at once or separately), and having the dice restrict the options of what they can do. For example, low rolls on one dice could indicate that they can only do an attack close to the ground, while high rolls means they can attack flying enemies. Then the player can choose which of those actions to take, or maybe he can instead take a defensive stance or run away.</p>
<p>The main downside of pre-action luck is that it can extend every player action. The more it&rsquo;s used, and the more possible choices it presents to the player, the longer the game might take, so it&rsquo;s best to save it for times where the decisions really matter. If not, either post-action luck or no luck at all, might be better choices.</p>
<p><img alt="Shipyard" loading="lazy" src="/luck-in-games/images/shipyard.jpg"></p>
<h2 id="hidden-information">Hidden information</h2>
<p>The most common example in board games is hidden end of game bonuses. For example, in <a href="http://boardgamegeek.com/boardgame/55600/shipyard">Shipyard</a> players get a set of goals that will score them points at the end of the game. There are two reasons for these goals: By giving each player different goals, it encourages players to focus on different aspects of the game instead of fighting over the same set of &ldquo;optimal&rdquo; actions. It also encourages players to pay attention to what other players are doing, and potentially try to anticipate or even block other players from getting too far ahead in their goals.</p>
<p>An even more interesting case is the game <a href="http://www.boardgamegeek.com/boardgame/73439/troyes">Troyes</a> (one of my favorites!). Not only does each player get a set of end-of-game goals to get extra points, but all players, not just the player holding them, will be scored based on those goals. That makes paying attention to other players and trying to guess what they&rsquo;re doing even more important.</p>
<p>At the extreme end of hidden information there are games like <a href="http://www.boardgamegeek.com/boardgame/91312/discworld-ankh-morpork">Discworld: Ankh-Morpork</a>, in which each player gets a hidden winning condition. Players go about doing their actions until someone announces at the beginning of their turn that they have won the game, and they reveal their hidden victory condition card.</p>
<p>The higher the importance of the hidden information, the more casual and random the game becomes (and so, the shorter the game should be ideally).</p>
<p>I started writing this thinking it would be a quick entry about luck in games, but now it&rsquo;s grown into something pretty large, and I didn&rsquo;t even get a chance to touch on luck in video games. I&rsquo;ll look into that next time.</p>
<p><strong>Related reading</strong> These are a couple of great writeups/presentations on the same topic:</p>
<ul>
<li><a href="http://boardgamegeek.com/blogpost/15046/2-types-of-luck">Types of Luck by Antti Karjalainen</a></li>
<li><a href="http://twvideo01.ubm-us.net/o1/vault/gdccanada09/slides/RobertGutscheraLuckSkillAndHI_GDCV050109.pptx">Luck, Skill, and Hidden Information by Robert Gutschera</a></li>
</ul>]]></content:encoded></item><item><title>My Next Game</title><link>https://gamesfromwithin.com/my-next-game/</link><pubDate>Sat, 19 Nov 2011 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/my-next-game/</guid><description>&lt;p&gt;&lt;img alt="Stick 2" loading="lazy" src="https://gamesfromwithin.com/my-next-game/images/stick_2.png"&gt;No, this is not an announcement of my next game (I wish). Rather, it&amp;rsquo;s a brain dump of my struggle with the process. It seems that in the game development community we often share the process of making a game and how it did afterwards. But it&amp;rsquo;s rare having some insight into what goes on before the project gets started. Where do ideas come from? Why do we pick one and not another? These are semi-coherent notes about the things I&amp;rsquo;m struggling with right now.&lt;/p&gt;</description><content:encoded><![CDATA[<p><img alt="Stick 2" loading="lazy" src="/my-next-game/images/stick_2.png">No, this is not an announcement of my next game (I wish). Rather, it&rsquo;s a brain dump of my struggle with the process. It seems that in the game development community we often share the process of making a game and how it did afterwards. But it&rsquo;s rare having some insight into what goes on before the project gets started. Where do ideas come from? Why do we pick one and not another? These are semi-coherent notes about the things I&rsquo;m struggling with right now.</p>
<h2 id="brewing">Brewing</h2>
<p>A new game for me starts as an idea somewhere, sometime, that got jotted down into my &ldquo;game ideas&rdquo; personal wiki page. I have that page accessible 24 hours a day on my computer, iPhone, or iPad. Only while I&rsquo;m running/cycling or in the shower am I away from that page (and unfortunately, that&rsquo;s the time when most ideas seem to spark). I make a point of not censoring any ideas: If I thought that something would be neat (not just gameplay, but a setting, a visual, a mechanic, or anything), I jot it down.</p>
<p>Over time, I accumulate quite a few ideas. Every so often I review them and I might expand on some and flesh out sub-ideas. Or they might spark different ideas of their own and I jot them down too. I never delete any of them, because I&rsquo;m consciously trying to not censor anything yet. This is purely brainstorming mode. I&rsquo;ve even sent emails to friends about possible game ideas straight out of this list, crappy ideas and all.</p>
<p>During this time I&rsquo;ll rearrange the list. I&rsquo;ll move more likely ideas up, or ones that I&rsquo;m more excited about. That has the effect of a kind of <a href="http://en.wikipedia.org/wiki/Bubble_sort">bubble sort</a>, so the better ideas somehow rise to the top (except for the brilliant ones hidden in the depths somewhere).</p>
<p>This list is particularly useful when I&rsquo;m in the middle of a project and I have what seem brilliant game ideas. Do I put the project aside to do this great idea instead? No. Instead, I add it to the list with all the others. If I&rsquo;m really excited about it, I&rsquo;ll flesh it out as much as I can, but it needs to wait its turn. As you can imagine, after a few days, the idea doesn&rsquo;t seem so shiny anymore, so it was a good thing it didn&rsquo;t derail the current project.</p>
<h2 id="struggling">Struggling</h2>
<p>Eventually the time comes when I need to pick a new project, and this is where the fun and the pain start.</p>
<p>You would think a good approach might be to read the list and start evaluating ideas. In a way, that&rsquo;s what I do, but before I evaluate ideas, I need to some frame of reference to decide what&rsquo;s a worthwhile idea and what isn&rsquo;t.</p>
<p>In the past my criteria for considering a project involved the intersection of three requirements:</p>
<ul>
<li>The game must be interesting for me to work on. I want to learn something new and be excited about what I do. Not interested in cloning something or making a derivative game.</li>
<li>A game I can realistically implement with the resources at my disposal. I&rsquo;m not an artist, so that usually means not having a content-heavy game, and relying on code as much as possible (like the procedural geometry in Flower Garden&ndash;no artist modeled those flowers by hand).</li>
<li>A game that has potential to sell well on the target platforms.</li>
</ul>
<p>Unfortunately, meeting all those three requirements at the same time isn&rsquo;t easy, especially given the astounding number of games already on iOS.</p>
<p>Before I go any further, I need to step back and ask myself a very important question: Why do I want to make this next game? This is a question we indies have the luxury of asking (and answering). I think most big (and small) studios are too busy staying afloat to be able to ask anything like that (besides, the answer is almost always &ldquo;make more money&rdquo; for them).</p>
<p>It turns out the indie life is treating me very well, so making lots money isn&rsquo;t one of the main reasons to make this next game. That means I can safely remove that requirement from my previous list, which grants me a lot more freedom.</p>
<p>I&rsquo;m probably going to spend the next 6 to 10 months working on this project, so it needs to be worthwhile. Does it need to be innovative and break new ground in a way no one has seen before? Does it need to make hard-core FPS players cry to be worth considering? Does it need to be radical, pixelated, mash up 5 different genres, an win the IGF and respect of my peers?</p>
<p>It turns out none of those are the reasons that drive me to make games. In the end, when I look deep down, the reason I want to make games is for the pleasure of taking a vision from the initial idea to something people can play. It&rsquo;s the creativity involved that drives me. I imagine it&rsquo;s the same reason people are driven to write or paint. If along the way, some of those games manage to be innovative, make money, or win an IGF award, that&rsquo;d be fantastic, but in any case, the development process is its own reward.</p>
<p>Given all those factors, I can go down the list of games and evaluate each one. Does it have potential to meet those requirements and be a satisfying project? This might not come as a surprise for those of you involved in creative activities, but this is hands-down, the most difficult time of development for me. As long as I don&rsquo;t have a project picked, my mind is constantly going over this. Anything I read, see, or hear is filtered and analyzed thinking of how it would fit in a game. During this time I&rsquo;m often moody, volatile, and prone to depression if this goes on for too long.</p>
<p>Even though it seems I&rsquo;ll never going to be able to come up with an idea worth doing, eventually something comes along, and the next phase starts.</p>
<h2 id="prototyping">Prototyping</h2>
<p>I&rsquo;ve already <a href="/prototyping-youre-probably-doing-it-wrong/">talked about prototyping</a> <a href="/prototyping-for-fun-and-profit/">at length</a> before. I take the idea I&rsquo;m considering and I try to answer the key questions in the shortest possible time. This is the time to shoot down any bad ideas, or prove why they&rsquo;re not feasible or just boring.</p>
<p>The prototyping phase is a big high for me. It often involves manic activity and I can get a prototype done in a day or two from the initial excitement on the idea. The bad part is that most prototypes prove not to be that great, and they go back to the drawer of game ideas, and I&rsquo;m left scrambling for another idea.</p>
<p>Struggle. Prototype. Discard. Repeat.</p>
<p>I usually repeat this cycle multiple times. Each time around I get more anxious, and the lows and highs are a bit more extreme.</p>
<p>Fortunately, at least so far, eventually I find a prototype that seems worth doing. Something I can see spending the next X months of my life doing. I usually run it by a few friends whose opinion I value highly, and if they&rsquo;re excited about it too, then it becomes an internal green light and I move on to the implementation phase.</p>
<h2 id="tips">Tips</h2>
<p>Apart from asking yourself why your making a game, here are a couple of things worth keeping in mind when picking a new project. They&rsquo;re not new things and I&rsquo;ve heard them before in one form or another, but they&rsquo;re worth reiterating:</p>
<ul>
<li>Don&rsquo;t compete with big companies. They can throw a lot more resources, and, most importantly, lots of marketing behind their titles. Don&rsquo;t try to take Zynga head on. Do your own thing.</li>
<li>Don&rsquo;t chase trends. Take risks. Be different. You&rsquo;re indie and have low overheard. Take advantage of that and do things the big boys would never dare risk $50 million on.</li>
<li>Keep the scope of the project small and focused. It will be bigger than you envision anyway. By being small, you can come up with new ideas faster than big companies.</li>
</ul>
<p>How about you? What&rsquo;s your process for deciding to work on something? Do you struggle until you pick the project? Do you stick with an idea, or do you change and restart?</p>]]></content:encoded></item><item><title>Designing Good Free-To-Play Games</title><link>https://gamesfromwithin.com/designing-good-free-to-play-games/</link><pubDate>Tue, 15 Nov 2011 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/designing-good-free-to-play-games/</guid><description>&lt;p&gt;It&amp;rsquo;s pretty clear that &lt;a href="http://blog.flurry.com/bid/65656/Free-to-play-Revenue-Overtakes-Premium-Revenue-in-the-App-Store"&gt;free-to-play games are the way to go&lt;/a&gt; if you care about making money from your games. And don&amp;rsquo;t give me that line about being indie and not caring about the money. On the contrary, being able to make money from the games we love to make, allows us to keep doing what we&amp;rsquo;re passionate about.&lt;/p&gt;
&lt;p&gt;I was having a discussion today about free games with other developers and I thought I would post here some random thoughts and open it up for discussion.&lt;/p&gt;</description><content:encoded><![CDATA[<p>It&rsquo;s pretty clear that <a href="http://blog.flurry.com/bid/65656/Free-to-play-Revenue-Overtakes-Premium-Revenue-in-the-App-Store">free-to-play games are the way to go</a> if you care about making money from your games. And don&rsquo;t give me that line about being indie and not caring about the money. On the contrary, being able to make money from the games we love to make, allows us to keep doing what we&rsquo;re passionate about.</p>
<p>I was having a discussion today about free games with other developers and I thought I would post here some random thoughts and open it up for discussion.</p>
<p>Free-to-play (or freemium&ndash;even if they aren&rsquo;t exactly the same, I&rsquo;m bundling them all under the same category for this discussion), have have a fairly bad reputation, and they&rsquo;ve been under fire recently from developers. It&rsquo;s true that a lot of those games have been rather poor from a game design point of view, while raking in loads of money from players who are apparently happy to play them.</p>
<p>It&rsquo;s important to separate the financial model (free with other ways for players to spend money in-game), and the quality of those early games or the intentions behind them. I am convinced that free games is the future of mass-market games (it&rsquo;s already pretty much the present, so that&rsquo;s not much of a stretch).</p>
<p>There&rsquo;s no doubt that the financial model of game affects its design. Compare arcade games, retail console games, and subscription-based games just as an example. Free-to-play has a huge impact on the design as well.</p>
<p>Free-to-play games are in their infancy. Not only are they a relatively recent happening, but they were also wildly successful, which encouraged a lot of copying and not much innovation. So they&rsquo;re stuck in a type of design that results in a local maximum of profit, while providing a not very satisfying experience for a lot of players. As game developers, we need to find out how to make great games while using the free-to-play model.</p>
<p>I&rsquo;ve been going around this quite a bit recently, because I&rsquo;m in the stages of deciding what my next game is going to be. The reality of the App Store are pushing me towards free-to-play, but I&rsquo;m not interested in making a Farm/Store/Pet game.</p>
<p>These are my random thoughts on what we can charge for in a free game and how it affects game design:</p>
<ul>
<li><strong>Reduce delays</strong>. This is very effective, but feels cheap and somewhat manipulative (yes, this is coming from the guy who did <a href="http://www.snappytouch.com/flowergarden">Flower Garden</a>&hellip; but that was before IAPs and the whole point of the game was the nurturing/waiting part). It also falls in the category of the question I often ask myself: If I remove this from the game, will it be better or worse? The answer is (almost) always &ldquo;better&rdquo; by removing those delays.</li>
<li><strong>In-game currency</strong>. This is seems like a better approach as long as there&rsquo;s no competitive multiplayer. However, it does wreck havoc with the game balance. Either it becomes too easy and not fun for those who paid, or boring and grindy for those who didn&rsquo;t. Still, especially on mobile, it&rsquo;s not a totally bad way to go. You&rsquo;re letting people make a choice how they want their experience.</li>
<li><strong>Extra content</strong>. That seems to be the traditional, developer-approved way to go. PC and console games have been doing that with DLCs for a long time. The main problem is that not many players want that content, the amount of content you can sell is limited, and it often requires a lot of extra effort to generate.</li>
<li><strong>Extra choices</strong>. This includes different characters, clothes, weapons, etc. I see this as the sweet spot between the last two options. What you buy doesn&rsquo;t completely throw off the game curve, but it&rsquo;s also not just new levels or missions. Combine that with letting players earn credits to get those choices (by grinding if they want to, but it&rsquo;s all optional) and it seems like a good way to go. You can also go the way of <a href="http://na.leagueoflegends.com/">League of Legends</a> (which I have yet to play!) and you can rotate in that extra content for limited amounts of time, so players get a taste and they have the option of buying them permanently.</li>
<li><strong>Cheats</strong>. By cheats I mean more lives, rewind/replay, invulnerability, etc. It feels like a throwback to the arcade days. Some players will be put off by it (either by the fact it exists, or by the fact that they finished the game too quickly with the help of those cheats), but it can work in the right game. You&rsquo;d probably want to do something about high scores, like putting players who used those cheats in a different leaderboard.</li>
</ul>
<p>What are your thoughts on this? What are some other ways that players can pay for in free games and still allows us to make a great game?</p>]]></content:encoded></item><item><title>Casey's Contraptions Postmortem</title><link>https://gamesfromwithin.com/caseys-contraptions-postmortem/</link><pubDate>Tue, 26 Jul 2011 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/caseys-contraptions-postmortem/</guid><description>&lt;p&gt;&lt;img alt="Banner" loading="lazy" src="https://gamesfromwithin.com/caseys-contraptions-postmortem/images/banner.png"&gt;&lt;/p&gt;
&lt;p&gt;Casey&amp;rsquo;s Contraptions is an iOS game created by the two of us, &lt;a href="http://twitter.com/#!/noel_llopis"&gt;Noel Llopis&lt;/a&gt; and &lt;a href="http://twitter.com/#!/mysterycoconut"&gt;Miguel Ã ngel Friginal&lt;/a&gt;. Noel, an industry veteran for over a decade, turned indie over four years ago and found success with microtransaction-based &lt;a href="http://www.snappytouch.com/flowergarden"&gt;Flower Garden&lt;/a&gt; on iOS. Miguel worked as a graphic designer in the advertising industry for years before becoming a web developer. Casey&amp;rsquo;s Contraptions is his first published video game, although his first paper role-playing game came out almost 20 years ago. We met through Twitter several years ago, and then finally in person at a 360iDev conference. Even thought we didn&amp;rsquo;t plan it that way, we ended up working together during a game jam, and that set us in the path to collaborate in a future project.&lt;/p&gt;
&lt;p&gt;We knew we wanted to target iOS for our next project because we love the platform from a user and a developer point of view, and because it&amp;rsquo;s a platform where it&amp;rsquo;s possible for indies to succeed financially. Beyond that, starting a new game is never easy. Even though we have page after page of possible ideas, settling on a specific game idea is always very hard. We wanted something that met three requirements: The game had to be creative in nature as opposed to using destruction as the main gameplay element, it had to be something we were excited about, and it had to be something with the potential to sell reasonably well on the Apple App Store. Easier said than done!&lt;/p&gt;</description><content:encoded><![CDATA[<p><img alt="Banner" loading="lazy" src="/caseys-contraptions-postmortem/images/banner.png"></p>
<p>Casey&rsquo;s Contraptions is an iOS game created by the two of us, <a href="http://twitter.com/#!/noel_llopis">Noel Llopis</a> and <a href="http://twitter.com/#!/mysterycoconut">Miguel Ã ngel Friginal</a>. Noel, an industry veteran for over a decade, turned indie over four years ago and found success with microtransaction-based <a href="http://www.snappytouch.com/flowergarden">Flower Garden</a> on iOS. Miguel worked as a graphic designer in the advertising industry for years before becoming a web developer. Casey&rsquo;s Contraptions is his first published video game, although his first paper role-playing game came out almost 20 years ago. We met through Twitter several years ago, and then finally in person at a 360iDev conference. Even thought we didn&rsquo;t plan it that way, we ended up working together during a game jam, and that set us in the path to collaborate in a future project.</p>
<p>We knew we wanted to target iOS for our next project because we love the platform from a user and a developer point of view, and because it&rsquo;s a platform where it&rsquo;s possible for indies to succeed financially. Beyond that, starting a new game is never easy. Even though we have page after page of possible ideas, settling on a specific game idea is always very hard. We wanted something that met three requirements: The game had to be creative in nature as opposed to using destruction as the main gameplay element, it had to be something we were excited about, and it had to be something with the potential to sell reasonably well on the Apple App Store. Easier said than done!</p>
<p>We prototyped game idea after game idea, and even though a lot of them were not bad, none were a complete standout. Eventually, after seven or eight different prototypes, we settled on the concept of creating physics-based, Rube Goldberg-like contraptions to solve different puzzles. At its core, the game has similar mechanics to some classic games like The Incredible Machine, but with an emphasis on exploration of creative solutions rather than finding the one right answer to each puzzle, designed around sharing, and built from the ground up for a touch interface on iOS.</p>
<p>We structured this project as a pure 50-50 partnership, and without any external funding or publishers. Miguel quit his full time job (as a web programmer no less!) to do the art for Casey&rsquo;s Contraptions, and Noel took care of the programming. Design was a fully collaborative activity, where we both contributed equal amounts to everything from the rules, the feel of the game, or level creation. Everything else we split up based on our strengths and expertise: web site, server back end, PR, etc.</p>
<p>This is not a true postmortem, but more of a post-launch analysis. Games today, and especially iOS and Facebook games, are becoming more of a service rather than a product. Development and launch are only the beginning of the story. If all goes well, we&rsquo;ll have a lot more to say about Casey&rsquo;s Contraptions in a few months.</p>
<h2 id="what-went-right">What went right</h2>
<h3 id="strong-theme-and-style">Strong theme and style</h3>
<p>Casey&rsquo;s Contraptions started life without Casey! The initial prototype focused only on the creation of contraptions and the physics simulation behind it. It showed a lot of potential, but it was missing something to make it stand out. It needed more personality.</p>
<p>After some brainstorming, we quickly zeroed-in the idea of a smart 8 year old building the contraptions. Not only did that add the much-needed personality to the game, but it also focused the rest of the development. Instead of doing a physics game with generic pulleys and levers and other industrial-looking items, we naturally went with toys and household items Casey could have access to: His sister&rsquo;s doll, paper planes, or his RC truck.</p>
<p>The choice of toys as game items not only influenced the level design, but also the goal of the levels. At the beginning we were thinking of doing levels to accomplish tasks Casey would have to deal with in real life, such as putting toys away or popping a balloon. After a while, the idea of â€œplaytimeâ€ levels came up, where the setting and the goal were completely imaginary (rescue explorers from a jungle in their hot air balloon) just as Casey would have imagined during his playtime sessions.</p>
<p>The character of Casey also helped anchor the art direction. We were aiming for something that would appeal to a very wide range of people, from the very young to adult casual gamers. Although Miguel looked into everything from a most modern Cartoon Network style to manga, to crazier Warner Bros., we ended up settling with a mix of Calvin &amp; Hobbes and something out of a 50s Hanna-Barbera show, with strong outlines and solid colors, to make people of all ages feel comfortable with the visuals. We were able to carry this distinct style to all the items, locations, and user interface in the game, which gave it a very consistent and unique look.</p>
<p><img alt="CaseyEvolution" loading="lazy" src="/caseys-contraptions-postmortem/images/CaseyEvolution.jpg"></p>
<h3 id="social-features">Social features</h3>
<p>Creating something is fun, but creating something and being able to share it with people is twice as much fun. We wanted to make Casey&rsquo;s Contraptions a very social experience from the start. Not something that you played through and put away, but something you could share with friends along the way.</p>
<p>Since Casey&rsquo;s Contraptions uses a full physics simulation at its core, it&rsquo;s possible to come up with very unique, chaotic, and often unexpected solutions to most puzzles. Weeks after launch, we&rsquo;re still amazed at how some people are solving some levels, coming up with item combinations we never thought about during development. Since these solutions are very unique and fun to watch, they were a perfect candidate to share with friends.</p>
<p>With that in mind, we designed the game with sharing from the start. After you complete each level, you can share your solution with all your friends just with the tap of a button (and, in the latest update, the default is to autosubmit a solution if you improved your score). Your friends&rsquo; solutions are equally accessible, as cropped thumbnails in the level completion screen, and tapping on any of them will bring up a full-screen view that you can even replay and watch the full solution.</p>
<p>In addition to sharing solutions, we also included a level editor to allow players to create their own contraptions from scratch. This was the same level editor we used to create all the levels in the game. Nothing like eating your own dog food to make something solid and usable. Initially, players were able to share these levels through email, and, in the first update, we also added the ability to share them publicly through a web site (<a href="http://shared.caseyscontraptions.com">http://shared.caseyscontraptions.com</a>), effectively giving players access to hundreds of new levels.</p>
<p>As it&rsquo;s the case with most games that include level editors, we were aware that only a small minority of players would take the time to create their own contraptions. But it&rsquo;s also those players that are really devoted to the game, and take it upon themselves to spread the word about your game and champion it to all their friends.</p>
<p><img alt="2" loading="lazy" src="/caseys-contraptions-postmortem/images/2.png"></p>
<h3 id="iterative-development">Iterative development</h3>
<p>For Casey&rsquo;s Contraptions we used a very stripped down and relaxed form of iterative development. We had short iterations and in each iteration we aimed to fully implement what we considered the most important features at the time. We didn&rsquo;t do any real estimating of tasks (other than, â€œyeah, we think we can do that in about two weeksâ€ ), and we didn&rsquo;t set a hard-limit on the iteration (they varied naturally between one and a half and three weeks). The most important concept is that at the beginning of each iteration we would make decisions about what to work on next, and those decisions were made with all the knowledge leading up to that point.</p>
<p>For example, we didn&rsquo;t start the project by coming up with the full list of items we were going to have in the game. Instead, we had a list on the wiki of possible items (to which we would add more whenever we thought of a new one during development), and we only decided which new items to add to the game at the beginning of each iteration. That allowed us to make good decisions based on what we had learned so far: â€œMost objects we have so far fall down. We need more items that add forces upwardsâ€ , or â€œThe magnet is fun, but we need more metal items to make it more usefulâ€ .</p>
<p>This mentality applied to everything: From level creation, to menus, features, etc. Looking back, we can say there&rsquo;s no way we would have made the same decisions early in the project than we did as we went along.</p>
<h3 id="strong-launch">Strong launch</h3>
<p>In less than 24 hours after launch, Casey&rsquo;s Contraptions worked its way up to the top 10 paid apps in the US and in over 20 different countries. A day later, it reached the #2 overall spot in the US and had great initial weekend sales.</p>
<p>This strong launch wasn&rsquo;t just pure luck. It was something we planned months in advance and worked hard to achieve (although we did need a dash of good luck). We wanted to build awareness and buzz around the game, but given the short development cycle for iOS games, we would have to do it in a shortened scale.</p>
<p>We started out by announcing the game more than six months before release (25% of the way into development). During the following months, we continued talking about the game on Twitter and our blogs, often showing work in progress or outtakes. The next big milestone was showing the game around at GDC. Not only did we get a lot of other developers to play it and give us invaluable feedback on it, but we also met with some of the game press, and that resulted in some very nice previews afterwards.</p>
<p>The final push came as soon as we submitted the game to Apple for review. We decided to set a fixed release date three weeks after the submission, which would give us enough time to do all the PR work: creating a video, putting together a media packet, contacting media outlets, etc. In the weeks leading up to the launch, we also stepped up our blogging of different interesting aspects of the game.</p>
<p>As a result of everything we had done up to that point, we were very lucky that Casey&rsquo;s Contraptions attracted Apple&rsquo;s attention, and they featured it prominently on launch day as iPad Game of the Week worldwide. We had given the press enough time with the game, so a lot of very positive game reviews came in right around launch day, helping get the word out for the game.</p>
<p>Even though we had been originally thinking of pricing the game at $4.99, we decided to shoot for volume instead and priced it at $2.99. That turned out to be the right decision and immediately put us on the top 10. Sales on iOS charts follow a sharp, exponential drop off, so being in the top 5 represents a huge increase in sales over just a few positions down the chart.</p>
<p>Looking at the App Store today, it&rsquo;s apparent that it&rsquo;s becoming harder for small, quick games to be really successful and top the charts. With over half a million different apps on the App Store, and hundreds of games released every day, you really need to stand out from the rest to be noticed. Most of the games that manage to do that are ones that required significant time and effort investment and have good production values. The App Store gold rush is over.</p>
<h3 id="enough-development-time">Enough development time</h3>
<p>From start until launch, Casey&rsquo;s Contraptions was in development for 8 months. That seems like a long time by iOS standards, although more and more successful iOS games are starting to take that long.</p>
<p>Our initial plan was to ship the game by Christmas. It wasn&rsquo;t based on any rigorous estimating, just an off-the-cuff estimate. It just â€œfeltâ€ like we could be done by then. Obviously we were wrong.</p>
<p>Taking the amount of time that we did was a very positive thing. We didn&rsquo;t really waste much time, it&rsquo;s just that the game needed that amount of time to mature and get to where it is today. If we had chosen to ship it earlier, the final product would have suffered significantly.</p>
<p>One of the hardest things in a game like Casey&rsquo;s Contraptions is making interesting levels. Having this amount of development time, with a working game editor since the very beginning, allowed us to make a lot of levels along the way. Looking back at a lot of the early levels we made, they were laughably hard and not that interesting. After several months, were able to develop a sense about what made good levels and what the appropriate difficulty was.</p>
<p>Having enough time allowed us to make fairly fundamental changes to the game design when something wasn&rsquo;t working. For instance, initially each level had three different goals you could achieve. Depending on the number of goals you accomplished, you earned a bronze, silver, or gold medal. It quickly became apparent that players were extremely confused by the three goals and weren&rsquo;t able to keep them straight.</p>
<p>We changed levels to have a single goal, but since we still wanted to have some replayability beyond â€œsolvingâ€ a level, we added optional stars you could collect by touching them with any item in the game. The first star would be very easy to get, the second one a bit harder, and the third one would require some serious thinking. That was a huge improvement, but then we discovered that most players expected to get all three stars in their first playthrough, and would stubbornly keep playing the same level until they got them all or quit in frustration. That prompted us to change the stars yet again. This time the difficulty of getting them was tied to the overall level difficulty, so players could easily get all three stars in the early levels. We&rsquo;re very happy with the final design, and we would not have gotten there if the project had been rushed.</p>
<p>We also gave ourselves sufficient time at the end for polish and style. Polish isn&rsquo;t going to make the game design any better, but it&rsquo;s going to contribute a huge amount to first impressions. Every animation, sound, and particle effect becomes really important in those crucial first few seconds with the game. On a mobile platform, polish becomes even more crucial. If your game doesn&rsquo;t immediately engage the player, there are lots of other things they can shift their attention to.</p>
<p><img alt="CaseysContraptions08" loading="lazy" src="/caseys-contraptions-postmortem/images/CaseysContraptions08.jpg"></p>
<h2 id="what-went-wrong">What went wrong</h2>
<h3 id="no-simultaneous-iphone-launch">No simultaneous iPhone launch.</h3>
<p>The initial prototype of Casey&rsquo;s Contraptions was running on an iPhone. While it showed a lot of promise and it was fun to assemble contraptions even that early on, it was clearly begging for more screen space.</p>
<p>The iPad was the obvious platform of choice. Its large screen can display very nicely detailed graphics, and allows for very natural, direct manipulation of items. It was a perfect fit for Casey&rsquo;s Contraptions.</p>
<p>Even so, while there are a lot of iPads out there (14 million), the iPhone and iPod Touch are the undisputed kings of the App Store (about 185 million devices). Especially for a game that relies on the social component, getting a critical mass of users playing at the same time, sharing solutions, and sending levels is very important. We definitely stormed up the iPad charts, but that still left the majority of iOS users not being able to purchase our game.</p>
<p>Why didn&rsquo;t we wait until we had the iPhone version to launch? No particularly good reason other than we were itching to get the game out. We also had no idea what kind of impact a strong launch would have on our servers, so the idea of an iPad-first launch seemed like the way to go. In hindsight, we would have been better off waiting to launch both versions at the same time (or almost the same time, maybe a week or two apart at most).</p>
<p>To make up for this, we&rsquo;re planning on making the iPhone release a second launch of sorts: We&rsquo;ll make the iPhone version coincide with a new game update that includes a lot of new content (for free for people who already bought it), and we&rsquo;ll try to repeat the same strong launch we had on the iPad. The idea is to get everybody who&rsquo;s already bought the game playing again, along with all the new iPhone players and create that critical mass.</p>
<h3 id="butting-heads-too-much">Butting heads too much</h3>
<p>We make the perfect two person team: We have complementary specialties, but we also have a lot of overlapping skills. We also seem to always approach things from opposite ends: Aesthetics vs. usability, performance vs. gameplay, simplicity vs. interest, uniqueness vs. familiarity, or tea vs. coffee. That is actually a really good thing and the success of Casey&rsquo;s Contraptions was in no small part due to our combination of personalities and skills.</p>
<p>There is, however, such a thing as too much of a good thing. We are both very stubborn and it will take a lot to convince us to see things in a different way. There were some times during development that we spent more time debating one point than actually implementing it.</p>
<p>The fact that we&rsquo;re working remotely didn&rsquo;t really affect most of our day to day development, but it definitely made hashing out these situations significantly harder, dragging them out for far longer than they should have. This was also the first time we were working together on a significant project, so it made resolving those situations more difficult. Now that we&rsquo;ve gone through this first project, we&rsquo;ll hopefully be better equipped to handle similar situations in the future.</p>
<h3 id="unnecessary-rework">Unnecessary rework</h3>
<p>Rework is a necessary part of a creative process. You&rsquo;re unlikely to get everything right in the first draft of a text or a music composition. That&rsquo;s even more so the case for game development because there are so many parts interacting with each other. Not only is it hard to predict the exact final outcome, but even if you could, you often don&rsquo;t know exactly what you want until you&rsquo;ve seen one version of it.</p>
<p>Just about every screen and every item in the game went through several revisions of art, behavior, sounds, or layout. There&rsquo;s no doubt that every revision made them better. However, we had a few parts of the game that we had to revise a few too many times. This was mostly in some of the UI screens, like the now infamous â€œlevel completedâ€ screen, or the look and positioning of the in-game menu, which we must have gone through at least 6 or 7 complete redesigns.</p>
<p>We believe that design doesn&rsquo;t just flow one way. If you want the best final product, you can&rsquo;t just decide on the functionality of some user interface (or any part of the game for that matter), implement it, and then give it a pretty face with some graphics. Both the implementation and the graphic design will actually feed back into the functionality of the UI. Once you go around this cycle a few times, you can zero in on a very strong design, both from a functional and a design point of view.</p>
<p>The problem comes when you go around that loop too many times, or when the loop doesn&rsquo;t converge into a particular design, but keeps shifting around. That was often caused because we were fuzzy on some of the details, or when we were forgetting about some particular feature that had to be reworked into the design. Some other times feedback from our testers made us realize that a screen wasn&rsquo;t clear enough as we had designed it and caused us to rework it. As tempting as it was to push through and call it good enough since it was already completely done, it was always the right decision to go back and re-work things as needed.</p>
<p>For example, at the beginning of each level Casey explains what goal you need to achieve. This screen seemed straightforward enough, except that the version we had early on was blocking the view of the level while it was up. Our testers complained it was hard to remember what you had to do without seeing the items it was referring to at the same time, so the final design shows Casey&rsquo;s dialog along the bottom of the screen, and the goal items are even circled with a marker.</p>
<p>We can alleviate this problem by iterating on particular pieces of UI or the game in smaller cycles, without taking each one to completion. Instead of starting by completely implementing a screen, or completely creating a perfect mock up with all the graphic elements, we need to start by laying out a screen with simple boxes and buttons and implement the basic functionality. Then we can make a first pass at a real layout and some graphical element, implement some of the new functionality and animations suggested by that, and continue iterating until it&rsquo;s done. We got much better about this in the last third of development, and it&rsquo;s something we want to carry forward to future projects.</p>
<p><img alt="LevelGoals1" loading="lazy" src="/caseys-contraptions-postmortem/images/LevelGoals1.jpg"><img alt="LevelGoals2" loading="lazy" src="/caseys-contraptions-postmortem/images/LevelGoals2.jpg"><img alt="LevelGoals3" loading="lazy" src="/caseys-contraptions-postmortem/images/LevelGoals3.jpg"></p>
<h3 id="not-enough-unit-testing">Not enough unit-testing</h3>
<p>Noel is a big fan of unit testing and test-driven development (TDD). Those are some techniques we used in past projects to very good effect and something we definitely wanted to carry into Casey&rsquo;s Contraptions as well.</p>
<p>The goal was never to have 100% unit-test coverage or write every single line of code through TDD, but to write only the tests that would benefit the project. That usually meant some code that a lot of other code relied on (the game item management), or something complicated (toolbox interaction), or something prone to breaking (rope manipulation).</p>
<p>In the end, we slipped to the side of not having as many unit tests as we would have liked. Some things like object attachments kept repeatedly giving me headaches during development because of the complicated, untested code. By the time we noticed those problems and wanted to start adding tests, it was too late because some of that code relied on non-unit test friendly APIs like UIKit or Box2d.</p>
<p>We should have taken the time when those problems started appearing to start writing some tests and slowly refactor the code as we fixed the bugs and added new features. Instead, since we seemed to be constantly â€œjust a few months away from shippingâ€ , we decided to skip that and definitely paid the price later on. We even shipped with a few off edge cases that we knew were buggy but we didn&rsquo;t dare fix weeks before submission.</p>
<p>We&rsquo;re already working on updates and and an iPhone version of Casey&rsquo;s Contraptions, so we&rsquo;ll continue dealing with that code for quite a while to come. We&rsquo;ll slowly introduce unit tests in areas of the code that we need to revisit during this time.</p>
<h3 id="fixed-price-model">Fixed price model</h3>
<p>The pricing model is something we went back and forth about several times during development. In spite the long-term success of Flower Garden and other free games with microtransactions on the App Store, we chose to go with a fixed-price model for Casey&rsquo;s Contraptions.</p>
<p>We thought our audience would appreciate a traditional fixed-price model better than a microtransaction-based one. We also figured it was a model that was working well for other similar iPad games such as Angry Birds or Cut The Rope, so it made sense to follow their lead on that.</p>
<p>Unfortunately it seems that might have been the wrong decision from a financial point of view. After a really strong initial launch, Casey&rsquo;s Contraptions dropped down the charts very rapidly after just a few weeks. Since revenue follows a very sharp exponential drop off, even being in the top 100 iPad games means very little revenue per day, and points to a very thin â€œtailâ€ to the sales curve.</p>
<p>In spite of the bad reputation microtransaction games have in traditional game development circles, they&rsquo;re a lot harder to develop than single-purchase, fixed-price games. Not only do you need to implement very robust server features, but you need to finely balance the in-game economy, the pace of rewards, and the cost of new purchases. Our optimistic estimate was that it would add at least a full month to the development time (and given how our estimates were, it probably meant two months for real).</p>
<p>A possible alternative would be to have a traditionally-priced game, but offer new levels or locations as extra purchases. This would have been a lot simpler to implement, but it probably wouldn&rsquo;t have made much difference in revenue. Usually, only about between 2% and 5% of the players buy any extra content, so for microtransactions to really pay off, they need to be unlimited (in-game currency, fertilizer, etc), or have a very large user base. With a small, fixed amount of possible things to buy, we would need to rely on having lots of players to make much of a difference.</p>
<p>We&rsquo;re hoping releasing the iPhone version will generate lots of renewed interest in Casey&rsquo;s Contraptions, spur lots of sales on both platforms, and hopefully increase the long-term chart staying power. If that&rsquo;s not the case, we can always consider the possibility of experimenting by changing the pricing model in the future.</p>
<p><img alt="CaseysContraptions10" loading="lazy" src="/caseys-contraptions-postmortem/images/CaseysContraptions10.png"></p>
<h2 id="conclusion">Conclusion</h2>
<p>We&rsquo;re extremely happy with the development of Casey&rsquo;s Contraptions and with the initial launch. We managed to create a unique game around creativity that was very well received critically and from a sales point of view.</p>
<p>The first free update should be available by the time you read this. It adds the ability to share contraptions with everybody through the web site, as well as browing public contraptions, which should increase the popularity of that feature quite a bit. It also adds some of the most-requested features, such as multiple player profiles for all the parents playing Casey&rsquo;s Contraptions with their children out there.</p>
<p>Unlike a traditional retail game though, the story is far from over. What we do in the next few months will have a very significant impact on the long-term success of the game.</p>
<h3 id="facts">Facts</h3>
<ul>
<li>Web site: <a href="http://www.caseyscontraptions.com">http://www.caseyscontraptions.com</a></li>
<li>Release date: May 19, 2011 (iPad). Summer 2011 (iPhone)</li>
<li>Development time: 8 months</li>
<li>Team size: 2 (full time)</li>
<li>Development cost: Cost of living for 8 months + a tad over $1000</li>
<li>Open source code: Box2d, UnitTest++</li>
<li>Primary tools: Xcode, svn, Versions, Trac, TexturePacker, Adobe Illustrator, Audacity</li>
<li>Lines of code: 46,518</li>
<li>Raw asset size: 510 MB</li>
<li>Total app size: 12.2 MB</li>
<li>Subversion commits: 2442</li>
<li>Trac tickets closed: 683</li>
<li>Gallons of tea brewed: 77</li>
<li>Shots of espresso consumed: around 1500</li>
</ul>
<p><em>This article was initially published on <a href="http://www.gamasutra.com/view/feature/6412/postmortem_llopis_and_friginals_.php">Gamasutra in June 22, 2011</a>. I reprinted it here for completeness, to keep it with all the other Casey&rsquo;s Contraptions articles.</em></p>]]></content:encoded></item><item><title>Making Contraptions</title><link>https://gamesfromwithin.com/making-contraptions/</link><pubDate>Wed, 18 May 2011 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/making-contraptions/</guid><description>&lt;p&gt;Casey&amp;rsquo;s Contraptions will be available in the US in a few hours! For those of you living in other parts of the world, it&amp;rsquo;s probably already available on your App Store. &lt;a href="http://itunes.apple.com/us/app/id399408335?mt=8&amp;amp;partnerId=30&amp;amp;siteID=aDkhM0mDflg"&gt;Go get it&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;For the rest of you still twiddling your thumbs, eagerly awaiting for midnight, here&amp;rsquo;s some insight on what went on in the level creation for Casey&amp;rsquo;s Contraptions.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Casey 640x100" loading="lazy" src="https://gamesfromwithin.com/making-contraptions/images/Casey-640x100.jpg"&gt;&lt;/p&gt;
&lt;h3 id="built-in-editor"&gt;Built-in editor&lt;/h3&gt;
&lt;p&gt;From the beginning of the project, the idea was to have a level editor built in to the game. The level editor was the very first thing I implemented in the game. Before there were menus, or levels, or anything else, the game was a level editor without any goals.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Casey&rsquo;s Contraptions will be available in the US in a few hours! For those of you living in other parts of the world, it&rsquo;s probably already available on your App Store. <a href="http://itunes.apple.com/us/app/id399408335?mt=8&amp;partnerId=30&amp;siteID=aDkhM0mDflg">Go get it</a>!</p>
<p>For the rest of you still twiddling your thumbs, eagerly awaiting for midnight, here&rsquo;s some insight on what went on in the level creation for Casey&rsquo;s Contraptions.</p>
<p><img alt="Casey 640x100" loading="lazy" src="/making-contraptions/images/Casey-640x100.jpg"></p>
<h3 id="built-in-editor">Built-in editor</h3>
<p>From the beginning of the project, the idea was to have a level editor built in to the game. The level editor was the very first thing I implemented in the game. Before there were menus, or levels, or anything else, the game was a level editor without any goals.</p>
<p>That&rsquo;s what <a href="http://twitter.com/#!/mysterycoconut">Miguel</a> and I used to create all the levels we shipped with. Nothing like <a href="http://en.wikipedia.org/wiki/Eating_your_own_dog_food">eating your own dog food</a> to make something solid and usable. This is the final level editor that players can use to create their own contraptions from scratch and send them to friends.</p>
<p><img alt="Level editor" loading="lazy" src="/making-contraptions/images/level_editor.jpg"></p>
<p>The only difference is that user-created levels only have the goal of getting the 3 stars in the level, whereas game levels have a separate goal. This was mostly because of the UI work required to allow the user to set different goals affecting multiple objects. It would have been way too complicated, although we&rsquo;re not ruling out the possibility of extending it in the future. Miguel and I had to edit level files by hand to add the extra goal information.</p>
<h3 id="levels-evolved">Levels. Evolved.</h3>
<p>One thing that worked really well in Casey&rsquo;s Contraptions is that we had a working level editor from day one. The first prototype was a tiny level editor! Of course, we&rsquo;ve been refining it since then, but the core was there.</p>
<p>After a month or two of development, we implement some goals and the ability to play through the levels created. That means we&rsquo;ve been able to make, play, and test levels for 6 months before shipping.</p>
<p>It was having that amount of time to create levels that allowed the level creation to mature and let us discover what went into a fun level, to refine the difficulty, and create much more interesting levels in the end. Some of that was influenced by what mechanics were fun and which ones weren&rsquo;t (placing something in a pixel-perfect position).</p>
<p>The different game items also had a huge influence over the level design. Clearly their functionality is going to affect level design hugely, but the surprise was that the character of the items also influenced level design quite a bit.</p>
<p>For example, early on, most of the levels were about solving everyday tasks Casey had to deal with: put toys away, knock down a ball from the roof, pop a balloon, etc. But as soon as we started adding some of the more colorful items, like the doll, the piggy bank, or the RC truck, our levels shifted into being mini-stories: The doll is jumping from a building and you need to catch her, the piggie is being taken away on the truck, etc. That&rsquo;s when we realized that we could make really fun levels based on playtime stories, not just real situations. Probably about a third of the shipping levels are playtime levels.</p>
<p><img alt="Skateboard" loading="lazy" src="/making-contraptions/images/skateboard.jpg"></p>
<h3 id="creation-process">Creation process</h3>
<p>Initially, we just created levels without thinking too much about it. Used whatever items we wanted and created something that seemed fun. We were learning a lot by doing that: Playing with item interactions, seeing what was possible and what wasn&rsquo;t, which items we were gravitating towards and which ones were no fun to play with. We weren&rsquo;t doing it consciously, but what we really doing was exploring the possibilities of the &ldquo;level space&rdquo;.</p>
<p>As you can imagine, most of what we created early on went out of the window pretty quickly. Most of the levels were insanely difficult, and a lot of them were simply no fun at all. We were also creating the levels to challenge each other to solve them, and while that was really fun, a lot of those levels were devilishly difficult. We&rsquo;ve been dialing back the difficulty level ever since then.</p>
<p>The actual process for creating a level wasn&rsquo;t very involved. Either one of us would go ahead and create a first pass at a level. Sometimes I would sit down and consciously decide to create a new level (especially if it was a level designed to teach about a new item), but more often than not, an idea would come up while doing something unrelated in the game.</p>
<p>Once we had this first pass, we would send it over to the other person and have them either poke holes on the design (if the level can be solved trivially by just dropping a ball somewhere for example), or tweak it to tighten it and make it more fun. Later on, we would revisit levels based on tester feedback or us becoming more experienced.</p>
<p>I estimate that the average time to create a level, from the first item added to the time it was added to the game, was about half an hour. Some of them were much faster, and some much slower though. And for yet some others, we struggled with them for a whole day and finally dropped the idea completely.</p>
<h3 id="what-makes-a-good-level">What makes a good level</h3>
<p>As we quickly learned, making a cool-looking contraption and removing a few pieces does not a good level make.</p>
<p>The best levels always have multiple solutions. Otherwise, it becomes a game of &ldquo;guess what the designer had in mind&rdquo;. There are plenty of games like that out there (and I hate them all when I feel that it turns into that). So even if we started with a complete contraption, we would always make sure there were at least two different ways of accomplishing the goals.</p>
<p>The other thing to avoid in a level is the possibility of trivial solutions. If a level can be accomplished by placing a single item that drops and causes the goal to complete, that&rsquo;s not very fun. It was a tough balance between leaving enough freedom to create your own solutions, but making it so there were no really &ldquo;cheap&rdquo; and boring ones.</p>
<p>The stars were tricky. Each level has thee stars you can get, but they&rsquo;re completely optional. Initially I wanted our levels to be easy to solve, but each star was progressively more difficult to get. Getting the third star required some serious thinking. My reasoning was that people would solve the levels first, get comfortable with the game, and then come back and get three stars in everything. Boy, was I wrong! It was clear right away that most people wanted (no, expected!) to get all three stars in their first pass through the game. So we changed most of the levels so getting the stars is not hugely difficult, especially in the early levels.</p>
<p>Letting the testers loose on the game was an extremely valuable experience. Not only did they catch a fair share of bugs, but they also had a fresh perspective on the game. It was amazing seeing them solve levels in totally different ways than we had anticipated. It was extremely rewarding to see people come up with solutions and even interactions I had never considered even though I had written all the code.</p>
<p>Here&rsquo;s a good example (<strong>Spoiler alert</strong>. Skip ahead to the next section if you don&rsquo;t want to learn multiple solution to one level).</p>
<p>Here&rsquo;s one level I designed called &ldquo;Angry Doll&rdquo; (any references to popular iOS games must be purely coincidence, by the way :-)</p>
<p><img alt="Doll1" loading="lazy" src="/making-contraptions/images/doll1.jpg"></p>
<p>This was a level intended to highlight the use of the slingshot, but you already had the doll and one slingshot in place (and the doll misses the pig with its initial flying kick). One possible solution I had in mind was to use the remaining balls and slingshots to alter the course of the doll and knock the pig down.</p>
<p><img alt="Doll2" loading="lazy" src="/making-contraptions/images/doll2.jpg"></p>
<p>There are a few different ways you can do that, which made it an interesting level. However, I was totally unprepared for some of the solutions the testers came up with.</p>
<p>This solution uses multiple slingshots on the doll, which changes its course and adds a lot more force to it. It flies straight for the pig and smashes it on impact. Not just that, but for extra style points, the tennis balls go flying out on a totally chaotic pattern, and they get all the stars!!</p>
<p><img alt="Doll4" loading="lazy" src="/making-contraptions/images/doll4.jpg"></p>
<p>This other solution might be my favorite. It completely bypasses even the intermediate goal (alter the doll&rsquo;s trajectory) and instead attaches a slingshot directly on the piggie bank and smashes it against the wall (getting a star along the way). Genius!</p>
<p><img alt="Doll3" loading="lazy" src="/making-contraptions/images/doll3.jpg"></p>
<h3 id="item-sequence">Item sequence</h3>
<p>There was one additional constraint to making levels that we didn&rsquo;t start dealing with until fairly late in the project: Item sequence. Initially, only a few, simple items are available to solve the goals in each level. As you play your way through the game, we introduce new items slowly, making sure their properties are well understood before introducing a new one.</p>
<p>The first time you complete a level with a new item, you&rsquo;re &ldquo;awarded&rdquo; that item, and you can start using it in your own contraptions in the level editor. You can even see the stickers of the items you&rsquo;ve earned so far on the cover of the &ldquo;My Contraptions&rdquo; book (I was playing Psychonauts at the time, so I suspect that might have influenced that design decision a bit).</p>
<p><img alt="Mainmenu" loading="lazy" src="/making-contraptions/images/mainmenu.jpg"></p>
<p>Having a set item sequence meant we had to be very careful which items were available in which level. We kept a spreadsheet with all the levels, and which items were introduced when. Every new item we introduce follows the following steps:</p>
<ul>
<li>When an item first appears, it&rsquo;s already placed in the level. That means the player gets to see how that item behaves.</li>
<li>The next level, we give that item to the player so he or she can place it in the level to solve the contraption.</li>
<li>Another level or two making use of that item. That reinforces the behavior of the item and makes the player comfortable with it before moving on.</li>
</ul>
<p>We were shooting for fewer levels, but it&rsquo;s not hard to see why we ended up with 72 levels in the first version of the game.</p>
<p>To be really sure we were respecting the right item sequence, we even wrote a script that parsed all the level files in order and spit out where each item was used. It even made sure that every item followed the rules above (first placed in the world, then available to place by the player). This will continue being extremely useful as we add more items and levels in future updates.</p>
<p><img alt="Tank" loading="lazy" src="/making-contraptions/images/tank.jpg"></p>
<h3 id="make-your-own">Make your own</h3>
<p>There you go. That should give you an idea of what was involved in creating the levels for Casey&rsquo;s Contraptions. In the near future we&rsquo;re planning on holding contraption-creation contests and we hope to highlight some player-created contraptions. <a href="http://itunes.apple.com/us/app/id399408335?mt=8&amp;partnerId=30&amp;siteID=aDkhM0mDflg">Go ahead and buy the game</a> and start practicing to make your own contraptions. Remember: The crazier the better!</p>
]]></content:encoded></item><item><title>All It Needs Is Love</title><link>https://gamesfromwithin.com/all-it-needs-is-love/</link><pubDate>Fri, 18 Mar 2011 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/all-it-needs-is-love/</guid><description>&lt;p&gt;The App Store today is a different beast from the one in early 2009, when &lt;a href="http://www.wired.com/gadgetlab/2009/02/shoot-is-iphone/"&gt;iShoot ruled the charts&lt;/a&gt;. Look at the top paid games on the App Store today. Actually, don&amp;rsquo;t worry, I did all the leg work for you. Here they are:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Top paid" loading="lazy" src="https://gamesfromwithin.com/all-it-needs-is-love/images/top_paid.png"&gt;&lt;/p&gt;
&lt;p&gt;What can we tell by looking at those games? I see two clear categories: Games with a strong, established IP (Street Fighter, Sonic), or independent games with a huge amount of polish and style.&lt;/p&gt;</description><content:encoded><![CDATA[<p>The App Store today is a different beast from the one in early 2009, when <a href="http://www.wired.com/gadgetlab/2009/02/shoot-is-iphone/">iShoot ruled the charts</a>. Look at the top paid games on the App Store today. Actually, don&rsquo;t worry, I did all the leg work for you. Here they are:</p>
<p><img alt="Top paid" loading="lazy" src="/all-it-needs-is-love/images/top_paid.png"></p>
<p>What can we tell by looking at those games? I see two clear categories: Games with a strong, established IP (Street Fighter, Sonic), or independent games with a huge amount of polish and style.</p>
<h3 id="its-all-about-polish">It&rsquo;s All About Polish</h3>
<p>The love and care developers put into those games shows the moment you start them up. Look at the textures in Tiny Wings, the sound effects in Angry Birds, the feedback animations in Words With Friends, or all the little details in Cut The Rope. All the tiny particle effects, transitions, sounds, and general squish and responsiveness. Every single one of those games is oozing with its own style and contributes to a very enjoyable first (and repeat) experience.</p>
<p>And that is the main point of this post: To make a successful game on the App Store, the main thing you need is love. You can skimp on features, on content, on marketing, on a web site, or even on gameplay balance. All those are things that you can add or improve after shipping, but polish and style are responsible for that crucial first impression. Miss the chance to hit the player with all you&rsquo;ve got the first time they play your game, and that might be a lost sale (and a lost advocate of your game since word of mouth is such a strong force on the App Store).</p>
<p>Not convinced about the difference polish and style makes?</p>
<p>This game is essentially Tiny Wings with just a little bit of polish (and it does have *some* polish).</p>
<iframe title="YouTube video player" src="http://www.youtube.com/embed/uRt3ccRzxOo" frameborder="0" width="480" height="390"></iframe>
<p>And this is Tiny Wings.</p>
<iframe title="YouTube video player" src="http://www.youtube.com/embed/VUnlE4cGgz0" frameborder="0" width="640" height="390"></iframe>
<p>I rest my case.</p>
<h3 id="ship-as-soon-as-possible">Ship As Soon As Possible?</h3>
<p>Traditional game development (especially for consoles) usually goes along these lines: Plan everything, create a game with everything that you want/can fit, ship it once it&rsquo;s done, and hope not to touch it again. On the other hand, in this day of web/Facebook/mobile development the favored approach is to release a product as soon as possible, and then iterate from there.</p>
<p>My preference in the last few years has been more along the shipping as soon as possible lines (even if I haven&rsquo;t always been successful at it). But then I paused and really thought about why and what I would accomplish by shipping early. These are the main reasons I could think about:</p>
<ul>
<li><strong>Getting to market first</strong>. This is a big one in the web world (and maybe even in the hardware world). Even if your product is imperfect, or its UI is less than ideal, getting that initial critical mass of users could be what tips the balance in your favor.</li>
<li><strong>Canceling the project early</strong>. Maybe it takes as long as the first version of a product to realize there isn&rsquo;t demand for it. So it was better to have spent 6 months instead of 3 years before canceling the project.</li>
<li><strong>Focussing your efforts</strong>. An impending ship date will make wonders to keep people on track and focused on what&rsquo;s important to ship a game.</li>
<li><strong>Become profitable as soon as possible.</strong> Even if you make the same amount of money and spend the same amount of time working on a project, if you start bringing in money at the 6 month mark rather than at the 3 year mark, you&rsquo;ll be profitable earlier. And as any RTS fan will tell you, getting extra resources early in the game can put you at a huge advantage.</li>
<li><strong>Changing the product based on early user feedback</strong>. Otherwise you might spend years working on a product that people don&rsquo;t really want, or they would prefer something slightly different.</li>
</ul>
<p>How do those reasons apply to iOS games?</p>
<ul>
<li>As an iOS game, your biggest moment is launch. That&rsquo;s when you can get most momentum and get the word of mouth ball rolling. First impressions matter a lot and a lot of people will make snap decisions about your game in the first few seconds. If it&rsquo;s not looking its best, it doesn&rsquo;t matter if it came earlier than another game. Besides, games, for the most part, aren&rsquo;t providing as much of a service as they&rsquo;re a form of entertainment. Barring brand new genres or whole new platforms, getting to market first doesn&rsquo;t mean much. And even if you&rsquo;re making a brand new genre, chances are it&rsquo;s unique so the clones won&rsquo;t start showing up until after you launch and becomes popular (unless you announce way in advance).</li>
<li>Stopping development on an unsuccessful game earlier rather than later is always a good thing.</li>
<li>Likewise, having a milestone around the corner does wonders for focussing your efforts. That was one of the big benefits we got from <a href="/caseys-contraptions-and-the-igf/">submitting Casey&rsquo;s Contraptions to the IGF</a>.</li>
<li>The last one is tricky. It might seem like a benefit for iOS games as well, but I&rsquo;m going to argue it isn&rsquo;t. Don&rsquo;t get me wrong, I think that testing and user feedback is very valuable. But games ultimately are a form of art[1] and you are the creator. In the end, you need to decide what your game and your vision are like. Feedback will help with usability and balancing issues, but not with what the game is fundamentally. Stick to your vision.</li>
</ul>
<h3 id="my-approach">My Approach</h3>
<p>Looking at those lists, it makes it clear to me that iOS game development is not all about getting a product out of the door as soon as possible. There&rsquo;s no need to create a finished product for your first release. Instead, save every feature and content you can for free updates or even future in-app purchases.</p>
<p>I&rsquo;m convinced that polish and style are one of the most important things an iOS game can have. <a href="/the-importance-of-first-impressions/">It&rsquo;s not the first time I say that</a>. So get the product out as soon as you can, but do not, under any circumstances, cut any polish from your game. Plan on spending a good month or longer after your game is &ldquo;done&rdquo; polishing it. That time will definitely be well spent and will increase the value of your game more than any other month you spent developing it.</p>
<p>What I&rsquo;m suggesting here is actually quite different from what <a href="http://chrishecker.com/Please_Finish_Your_Game">Chris Hecker talked about at last year&rsquo;s GDC</a>. Even though we&rsquo;re both saying &ldquo;take your time and do your game right&rdquo;, he&rsquo;s emphasizing the completeness of the game (in the sense of exploring all its potential), while I&rsquo;m emphasizing the presentation. I think the main reason our messages are so different is the platform we&rsquo;re developing for. On a platform like iOS, I really think you can explore the full potential of a game after it ships without any real drawbacks.</p>
<p>Right now we&rsquo;re in the polish phase in <a href="http://www.caseyscontraptions.com/">Casey&rsquo;s Contraptions</a>. The game has been &ldquo;done&rdquo; for a while, in the sense that we have all the items, lots of levels, you can play through all the puzzles, make your own contraptions, etc. Even though it already has a lot of style and polish, it definitely needs that extra layer of shine to make it really stand out and bring it to the quality of those games in the top 10 list. We can only hope that Casey&rsquo;s Contraptions joins them after we launch!</p>
<p><img alt="Caseys1" loading="lazy" src="/all-it-needs-is-love/images/caseys1.jpg"></p>
<p><img alt="Caseys2" loading="lazy" src="/all-it-needs-is-love/images/caseys2.jpg"></p>
<p> </p>
<p>Interested in keeping up with Casey&rsquo;s Contraptions as we&rsquo;re gearing up for launch? <a href="http://www.facebook.com/contraptions">Join the Facebook page</a>.</p>
<iframe style="border: none; overflow: hidden; width: 450px; height: 80px;" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.facebook.com%2Fcontraptions&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font&amp;colorscheme=light&amp;height=80" frameborder="0" scrolling="no" width="320" height="240"></iframe>
<p> </p>
<p>[1] Feel free to substitute whatever word you want there that isn&rsquo;t offensive to you: entertainment, interactive media, etc. Games are something *you* create from your imagination, so art seems like the best term to me.</p>]]></content:encoded></item><item><title>Forget Length. Give Me Awesome</title><link>https://gamesfromwithin.com/forget-length-give-me-awesome/</link><pubDate>Tue, 17 Aug 2010 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/forget-length-give-me-awesome/</guid><description>&lt;p&gt;&lt;img alt="harold-lloyd.jpg" loading="lazy" src="https://gamesfromwithin.com/forget-length-give-me-awesome/images/harold-lloyd.jpg"&gt;It pains me to see &lt;a href="http://www.planetxbox360.com/article_11176/Limbo_Review"&gt;great&lt;/a&gt; &lt;a href="http://www.gaming-age.com/review/xbox360_xbla/limbo"&gt;games&lt;/a&gt; &lt;a href="http://www.thereviewcrew.com/reviews/review-limbo/"&gt;criticized&lt;/a&gt; for being too short or not having a lower price point. In a world where everything surrounding us is constantly vying for our attention, time is a premium, and filling it up with mediocre experiences, a waste.&lt;/p&gt;
&lt;p&gt;I want to have great experiences, not just long ones, and I&amp;rsquo;m willing to pay for them. Just like other media, each game has an ideal length to develop its ideas fully, and we shouldn&amp;rsquo;t fall to pressures to make then any longer than they should be. I don&amp;rsquo;t want endless grinding or backtracing through the level to meet a minimum time quota. Just like every book doesn&amp;rsquo;t have to be The Lord Of The Rings, there is room for both epic sagas like Dragon Age and Fallout and short experiences like Limbo or Braid. Maybe there&amp;rsquo;s even room for the equivalent of Italo Calvino&amp;rsquo;s shortest short story, &lt;a href="http://www.amazon.com/Complete-Cosmicomics-Penguin-Modern-Classics/dp/1846141656/?tag=gamesfromwith-20"&gt;The Dinosaur&lt;/a&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<p><img alt="harold-lloyd.jpg" loading="lazy" src="/forget-length-give-me-awesome/images/harold-lloyd.jpg">It pains me to see <a href="http://www.planetxbox360.com/article_11176/Limbo_Review">great</a> <a href="http://www.gaming-age.com/review/xbox360_xbla/limbo">games</a> <a href="http://www.thereviewcrew.com/reviews/review-limbo/">criticized</a> for being too short or not having a lower price point. In a world where everything surrounding us is constantly vying for our attention, time is a premium, and filling it up with mediocre experiences, a waste.</p>
<p>I want to have great experiences, not just long ones, and I&rsquo;m willing to pay for them. Just like other media, each game has an ideal length to develop its ideas fully, and we shouldn&rsquo;t fall to pressures to make then any longer than they should be. I don&rsquo;t want endless grinding or backtracing through the level to meet a minimum time quota. Just like every book doesn&rsquo;t have to be The Lord Of The Rings, there is room for both epic sagas like Dragon Age and Fallout and short experiences like Limbo or Braid. Maybe there&rsquo;s even room for the equivalent of Italo Calvino&rsquo;s shortest short story, <a href="http://www.amazon.com/Complete-Cosmicomics-Penguin-Modern-Classics/dp/1846141656/?tag=gamesfromwith-20">The Dinosaur</a>.</p>
<p>I would go as far to say that games should err on the side of being too short rather than too long. There&rsquo;s a saying in Spanish that goes &ldquo;<a href="http://es.wikipedia.org/wiki/Baltasar_Graci%C3%83%C2%A1n">Lo bueno, si breve, dos veces bueno</a>&rdquo;, which roughly translates into &ldquo;Good things, if short, twice as good&rdquo;. I&rsquo;d rather be left wanting more than not being able to finish something. As a busy gamer, I don&rsquo;t get to finish many games these days, and the ones that I do really stand out from the others and hold a special spot in my heart.</p>
<p>Besides, a lot of other games can&rsquo;t even be measured in length. How long is <a href="http://us.battle.net/sc2/">Starcraft</a>? <a href="http://www.teamfortress.com/">Team Fortress</a>? <a href="http://www.civilization.com/">Civilization</a>? <a href="http://www.onemanleft.com/tilttolive/index.php">Tilt To Live</a>? They are as long or as short as you want. Should we be docking them for being too short? Should we force all games to have infinite replay value? No, the important thing is that they&rsquo;re great experiences.</p>
<p>Forget length. Give me awesome.</p>
<h4 id="other-indie-voices-on-game-length">Other Indie Voices On Game Length</h4>
<ul>
<li><a href="http://www.tunahq.com/2010/08/size-doesnt-matter-day/">Alex Amsel of Tuna</a></li>
<li><a href="http://www.paradeofrain.com/2010/08/size-doesnt-matter-day">Alex Okafor of One Man Left</a></li>
<li><a href="http://www.brettdouville.com/mt-archives/2010/08/most_expensive.html">Brett Douville of Bethesda Softworks</a></li>
<li><a href="http://www.hobbygamedev.com/spx/short-videogame-design/">Chris DeLeon of HobbyGameDev</a></li>
<li><a href="http://spyparty.com/2010/08/17/size-doesnt-matter-day">Chris Hecker of Spy Party</a></li>
<li><a href="http://positech.co.uk/cliffsblog/?p=810">Cliff Harris of Positech Games</a></li>
<li><a href="http://nygamedev.blogspot.com/2010/08/coming-up-short.html">Dave Gilbert of Wadjet Eye Games</a></li>
<li><a href="http://www.firehosegames.com/2010/08/how-much-is-enough/">Eitan Glinert of Fire Hose Games</a></li>
<li><a href="http://mile222.com/2010/08/a-haiku-about-game-length/">Greg Wohlwend of Intution Games</a></li>
<li><a href="http://retrodreamer.com/blog/2010/08/size-doesnt-matter-day/">Gavin Bowman of Retro Dreamer</a></li>
<li><a href="http://www.gamedevblog.com/2010/08/so-i-was-going-to-show-my-solidarity-with-the-game-length-bloggers-today-by-re-posting-an-old-post-that-i-thought-was-entitle.html">Jamie Fristrom of Torpex Games</a></li>
<li><a href="http://blog.wolfire.com/2010/08/Game-length-and-value">Jeffrey Rosen of Wolfire</a></li>
<li><a href="http://the-witness.net/news/?p=438">Jonathan Blow of Number None</a></li>
<li><a href="http://pocketcyclone.com/2010/08/17/game-length-vs-price/">Markus Nigrin of The Pocket Cyclone</a></li>
<li><a href="http://www.brokenrul.es/blog/?p=314">Martin Pichlmair of Broken Rules</a></li>
<li><a href="http://24caretgames.com/2010/08/17/does-game-length-matter/">Matt Gilgenbach of 24 Caret Games</a></li>
<li><a href="http://retroaffect.com/blog/160/Size_Doesn_t_Matter_Day/#b">Peter Jones of Retro Affect</a></li>
<li><a href="http://www.lazy8studios.com/size_doesnt_matter">Rob Jagnow of Lazy 8 Studios</a></li>
<li><a href="http://2dboy.com/2010/08/17/too-short/">Ron Carmel of 2DBoy</a></li>
<li><a href="http://macguffingames.com/2010/if-size-doesnt-matter-where-do-you-get-the-virtual-goods">Scott Macmillan of Macguffin Games</a></li>
<li><a href="http://www.enemyairship.com/2/The_Finite__Irreplaceable_Hours_of_Your_Life/#b">Steve Swink of Enemy Airship</a></li>
</ul>
<p>Twitter tag: <a href="http://search.twitter.com/search?q=%23gamelength">#gamelength</a></p>
]]></content:encoded></item></channel></rss>