<?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>Lasting-Legacy on Games From Within</title><link>https://gamesfromwithin.com/tag/lasting-legacy/</link><description>Recent content in Lasting-Legacy on Games From Within</description><generator>Hugo</generator><language>en-us</language><copyright>2004–2026 Noel Llopis</copyright><lastBuildDate>Thu, 15 Mar 2018 00:00:00 +0000</lastBuildDate><atom:link href="https://gamesfromwithin.com/tag/lasting-legacy/index.xml" rel="self" type="application/rss+xml"/><item><title>Sometimes You Have To Let Go</title><link>https://gamesfromwithin.com/sometimes-you-have-to-let-go/</link><pubDate>Thu, 15 Mar 2018 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/sometimes-you-have-to-let-go/</guid><description>&lt;p&gt;As a game developer, working on a project for years just to have it cancelled can be devastating. I&amp;rsquo;ve been lucky enough that it has never happened to me, but it&amp;rsquo;s an occurrence all to common in the games industry. However, having to cancel your own game after years of work is even harder. So it is with a heavy heart that I announce that I&amp;rsquo;m stopping development on Lasting Legacy.&lt;/p&gt;</description><content:encoded><![CDATA[<p>As a game developer, working on a project for years just to have it cancelled can be devastating. I&rsquo;ve been lucky enough that it has never happened to me, but it&rsquo;s an occurrence all to common in the games industry. However, having to cancel your own game after years of work is even harder. So it is with a heavy heart that I announce that I&rsquo;m stopping development on Lasting Legacy.</p>
<p>When we started work on Lasting Legacy, I envisioned it as a quick 9-10 month project (that&rsquo;s quick for me, but I know it&rsquo;s long for other devs). As we worked on it, it felt like the game was interesting and rich enough to spend a little longer and flesh it out to its full potential. Maybe spend a total of a year and a half on it.</p>
<p>Now it&rsquo;s been two full years since we started. We&rsquo;ve had a playable game almost from the start, but when I have an honest look at it, it&rsquo;s still far from launch. We still need lots more content, game balancing, polishing, different game modes, porting to different platforms, creating videos, and all the marketing. It&rsquo;s that pesky last 20% that takes 80% of the time&ndash;OK, maybe not 80% but at least another 12 months. All of that is definitely doable, but it would bring the project to a full 3 years (at least!), or a total of 6 man-years.</p>
<p><img alt="Calendar" loading="lazy" src="/sometimes-you-have-to-let-go/images/calendar.jpg"></p>
<p>The problem with that is that, for Lasting Legacy to be financially successful, it would have to sell a lot of copies. A lot more than I can realistic expect it to sell. Let&rsquo;s reeeeeally stretch the meaning of &ldquo;successful&rdquo; and say that the goal is that we should each make $50K per year. That&rsquo;s a total of $300K after the cut from the stores, or about $430K in sales. At $15 per sale, that&rsquo;s almost 30K sales, and <a href="http://steamspy.com/year/">most Steam games don&rsquo;t come even close to that number</a>.</p>
<p>So we had a choice: We could focus really hard on the marketing aspect to make sure we hit that many sales, or we could stop development altogether, cut our loses, and move on to something else. The problem with focusing on marketing is that it would add even more time, making it necessary to sell even more copies to break even. It would also mean spending months doing work that I really dislike (making trailers, doing a Kickstarter, promoting the game, chasing reviewers and streamers&hellip;).</p>
<p>Would it be worth doing that marketing push? Was I really willing to bet that Lasting Legacy would be a big seller? If I&rsquo;m honest, I think that Lasting Legacy has the potential to be a very good, original game, but I don&rsquo;t think it&rsquo;s a game that lots of people want (or if they do, I wasn&rsquo;t able to connect with that audience). I&rsquo;m fine making games that don&rsquo;t sell very much, but at least I want to enjoy the work that I&rsquo;m doing. So in the end, I&rsquo;d rather stop working on Lasting Legacy and move on to other projects that I can enjoy and can be potentially more profitable.</p>
<p>Fortunately the time I spent on Lasting Legacy wasn&rsquo;t completely wasted: Apart from developing some new tech that I didn&rsquo;t have when I started (<a href="/using-sqlite-to-organize-design-data/">SQLite to organize data</a>, or on-the-fly font rendering for example), I continued to <a href="/isomorphism-as-a-game-design-tool/">grow as a designer</a>, and I hope a lot of what I learned will carry over to my future projects.</p>
<p>Some people will take away from this that Lasting Legacy failed because we didn&rsquo;t do market research to see if there was demand for it, or tailor it to the tastes of gamers. I disagree. My goal from the start was not to maximize profits, it was to make a game I found interesting and getting compensated for my time. The failure of Lasting Legacy was that we were just too slow. If we had managed to make the game in a year like we originally planned, just selling 5-6K units would have been enough to cover our time.</p>
<p>So what&rsquo;s next for me? I&rsquo;ve taken the lessons learned to heart and decided to make a game by myself in 6 months. That&rsquo;s a hard deadline. I&rsquo;m drawing inspiration from <a href="http://www.smestorp.com/">Michael Brough</a> and <a href="http://www.tinytouchtales.com/">Arnold Rauers</a>, both of them excellent game designers who make small games that start with major artificial constraints and they design around them. The constraint I picked is to make a simulation game in a very small grid (single screen, around 6x6). So far I&rsquo;ve been doing some prototypes and I&rsquo;m pretty happy how it&rsquo;s coming along. If all goes well I&rsquo;ll announce it soon and release it in a few months.</p>
<p>As part of this shift towards making smaller games, I&rsquo;m going to create a mailing list for my games in general, not for each game individually. If you&rsquo;d like to keep up to date, please sign up for my mailing list and I&rsquo;ll make sure you&rsquo;re the first ones to know about my upcoming games.</p>
<p>Subscribe to my mailing list</p>
<p>Wish me luck!</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>Lasting Legacy Dev Update #3: UI Improvements</title><link>https://gamesfromwithin.com/lasting-legacy-dev-update-3-ui-improvements/</link><pubDate>Tue, 13 Jun 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/lasting-legacy-dev-update-3-ui-improvements/</guid><description>&lt;p&gt;Here&amp;rsquo;s a new video showing the UI improvements and how the characters feel more alive.&lt;/p&gt;
&lt;iframe width="700" height="394" src="https://www.youtube.com/embed/8Jvn3Ln0TCM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Apologies for the less than ideal sound and video quality. We&amp;rsquo;re working on fixing that for next time.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Here&rsquo;s a new video showing the UI improvements and how the characters feel more alive.</p>
<iframe width="700" height="394" src="https://www.youtube.com/embed/8Jvn3Ln0TCM" frameborder="0" allowfullscreen></iframe>
<p>Apologies for the less than ideal sound and video quality. We&rsquo;re working on fixing that for next time.</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>Lasting Legacy Dev Update #2: Head of the Family and Legacy</title><link>https://gamesfromwithin.com/lasting-legacy-dev-update-2-head-of-the-family-and-legacy/</link><pubDate>Tue, 18 Apr 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/lasting-legacy-dev-update-2-head-of-the-family-and-legacy/</guid><description>&lt;p&gt;This week&amp;rsquo;s video covers the concept of &lt;em&gt;head of the family&lt;/em&gt; and what exactly is &lt;em&gt;legacy&lt;/em&gt; and how to obtain it. We&amp;rsquo;re also continuing the same family as last time. Will Fanni become the heir, or will childless Peter bring the lineage to an end?&lt;/p&gt;
&lt;iframe width="700" height="394" src="https://www.youtube.com/embed/6sWt5WMrmG0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;I managed to keep things shorter than last time, so this one is only 12 minutes. For those of you who prefer text updates, don&amp;rsquo;t worry, we&amp;rsquo;ll have one of those next week.&lt;/p&gt;</description><content:encoded><![CDATA[<p>This week&rsquo;s video covers the concept of <em>head of the family</em> and what exactly is <em>legacy</em> and how to obtain it. We&rsquo;re also continuing the same family as last time. Will Fanni become the heir, or will childless Peter bring the lineage to an end?</p>
<iframe width="700" height="394" src="https://www.youtube.com/embed/6sWt5WMrmG0" frameborder="0" allowfullscreen></iframe>
<p>I managed to keep things shorter than last time, so this one is only 12 minutes. For those of you who prefer text updates, don&rsquo;t worry, we&rsquo;ll have one of those next week.</p>
]]></content:encoded></item><item><title>Lasting Legacy Dev Update #1</title><link>https://gamesfromwithin.com/lasting-legacy-dev-update-1/</link><pubDate>Wed, 12 Apr 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/lasting-legacy-dev-update-1/</guid><description>&lt;p&gt;Here&amp;rsquo;s the first video dev update for Lasting Legacy. We go over the basic gameplay.&lt;/p&gt;
&lt;iframe width="700" height="394" src="https://www.youtube.com/embed/IBp5LCF4nt4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;It&amp;rsquo;s a whopping 19 minutes long, so I may have overdone it a bit! I&amp;rsquo;ll try to keep it shorter for future updates.&lt;/p&gt;
&lt;p&gt;Since this is the first time we&amp;rsquo;re doing this, any feedback is appreciated. Would you like to see more of these in the future? What should the focus be? Any technical issues I should improve?&lt;/p&gt;</description><content:encoded><![CDATA[<p>Here&rsquo;s the first video dev update for Lasting Legacy. We go over the basic gameplay.</p>
<iframe width="700" height="394" src="https://www.youtube.com/embed/IBp5LCF4nt4" frameborder="0" allowfullscreen></iframe>
<p>It&rsquo;s a whopping 19 minutes long, so I may have overdone it a bit! I&rsquo;ll try to keep it shorter for future updates.</p>
<p>Since this is the first time we&rsquo;re doing this, any feedback is appreciated. Would you like to see more of these in the future? What should the focus be? Any technical issues I should improve?</p>
]]></content:encoded></item><item><title>What Kind of Game is Lasting Legacy?</title><link>https://gamesfromwithin.com/what-kind-of-game-is-lasting-legacy/</link><pubDate>Thu, 23 Mar 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/what-kind-of-game-is-lasting-legacy/</guid><description>&lt;p&gt;You&amp;rsquo;ve read the &lt;a href="https://gamesfromwithin.com/announcing-lasting-legacy/"&gt;&lt;em&gt;Lasting Legacy&lt;/em&gt; announcement&lt;/a&gt;, seen some of the art, got an idea about the setting for the game, and you even know about &lt;a href="https://gamesfromwithin.com/the-feelings-of-lasting-legacy/"&gt;the feelings we want players to experience&lt;/a&gt;. But what kind of game is &lt;em&gt;Lasting Legacy&lt;/em&gt; exactly?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Lasting Legacy&lt;/em&gt; is a fairly unique game, so it doesn&amp;rsquo;t quite fit in any predetermined genre. The closest category would be single-player, turn-based simulation, although the simulation part in Lasting Legacy is very light (unlike something like &lt;em&gt;Sim City&lt;/em&gt; or &lt;em&gt;The Sims&lt;/em&gt;), and in that respect it&amp;rsquo;s more like a board game. So it&amp;rsquo;s more accurate to say that &lt;em&gt;Lasting Legacy&lt;/em&gt; is a blend of simulation games and board games.&lt;/p&gt;
&lt;p&gt;Intrigued? You&amp;rsquo;re in the right place. Read on.&lt;/p&gt;</description><content:encoded><![CDATA[<p>You&rsquo;ve read the <a href="/announcing-lasting-legacy/"><em>Lasting Legacy</em> announcement</a>, seen some of the art, got an idea about the setting for the game, and you even know about <a href="/the-feelings-of-lasting-legacy/">the feelings we want players to experience</a>. But what kind of game is <em>Lasting Legacy</em> exactly?</p>
<p><em>Lasting Legacy</em> is a fairly unique game, so it doesn&rsquo;t quite fit in any predetermined genre. The closest category would be single-player, turn-based simulation, although the simulation part in Lasting Legacy is very light (unlike something like <em>Sim City</em> or <em>The Sims</em>), and in that respect it&rsquo;s more like a board game. So it&rsquo;s more accurate to say that <em>Lasting Legacy</em> is a blend of simulation games and board games.</p>
<p>Intrigued? You&rsquo;re in the right place. Read on.</p>
<h3 id="what-do-you-do-in-lasting-legacy">What Do You Do in <em>Lasting Legacy</em>?</h3>
<p>The description of the game says that you manage a family for about 200 years and build a lasting legacy. Every action you perform moves the time forward one year, and actions are performed directly on individual people.</p>
<p>There are some common, general actions available:</p>
<ul>
<li>Socialize, which helps you find more friends.</li>
<li>Visit a friend, to increase that friendship.</li>
<li>Propose in marriage or accept a marriage proposal.</li>
<li>Pick an occupation for someone who recently became an adult.</li>
</ul>
<p>Those actions allow you to tend to the family and continue growing the family tree. The meat of the game comes from each person having an occupation, and that occupation provides either a special action, or an ongoing effect.</p>
<p>For example, having a Doctor in the family gives you an action to heal a sick person.</p>
<p><img alt="Doctor" loading="lazy" src="/what-kind-of-game-is-lasting-legacy/images/Doctor-1.png"></p>
<p>On the other hand, a Moneylender in the family gives you the ongoing effect of not having maximum debt anymore (time to run those credit cards!).</p>
<p><img alt="Moneylender" loading="lazy" src="/what-kind-of-game-is-lasting-legacy/images/moneylender-1.png"></p>
<p>The ultimate goal of the game is to achieve the highest <em>legacy</em> possible each time you play. You gain <em>legacy</em> in one of two ways:</p>
<ol>
<li>By acquiring heirlooms from deceased family members that give you <em>legacy</em> for different reasons (for example, number of people in your family with a particular occupation).</li>
<li>By meeting the whims of some important family members. For example, someone in the family might have a thing for big weddings, so you&rsquo;ll gain <em>legacy</em> for every big wedding you have while they&rsquo;re around.</li>
</ol>
<p>Sounds simple enough, but in order to do those things, you&rsquo;ll have to balance the maintenance of your family (social needs, marriages, children, sickness), acquiring gold and prestige, and, to top it all, dealing with the rising military tension in your country. War is inevitable, but you may be able to deflate military tension and push off the start of the war (which brings the end of the game).</p>
<h3 id="game-mechanics">Game Mechanics</h3>
<p>Stepping back and looking at the game from a high-level point of view, there are two major mechanics that appear:</p>
<ol>
<li><strong>Tableau building.</strong> The family tree is your tableau, because it represents the powers and actions that are available to you. A lot of card games have a similar mechanic (<em><a href="https://www.boardgamegeek.com/boardgame/28143/race-galaxy">Race for the Galaxy</a></em> is one of the best and most famous ones), but in <em>Lasting Legacy</em> the tableau has a twist: It&rsquo;s dynamic. People can only make a contribution while they&rsquo;re alive, so your tableau will change as decades go by, and you&rsquo;ll have to adapt your strategy and plan ahead to take full advantage of it.</li>
<li><strong>Hand management.</strong> Your friends are a very similar resource to a hand of cards in most games. You may be able to bring them into play as part of your family, or maybe you can do their action once and discard them. This hand of cards is also very dynamic and it changes with the friendship levels and your family prestige.</li>
</ol>
<p>Those two mechanics are very common in card and board games. That&rsquo;s not surprising since <em>Lasting Legacy</em> has strong board game influences. However, <em>Lasting Legacy</em> is not a board game, and it would be very difficult to make a straight translation into a physical game. There&rsquo;s a light simulation under the hood that makes people do things by themselves: have children, propose in marriage, pick occupations (unless you pick them for them), etc. Hopefully it&rsquo;s a good blend borrowing the best of both the digital and the physical worlds.</p>
<p> </p>
<p><strong>Want to find out more about <em>Lasting Legacy</em> as we announce it? Make sure you sign up for our <a href="http://lastinglegacygame.com">mailing list</a> and/or join the <a href="https://www.facebook.com/lastinglegacygame/">Facebook page</a>.</strong></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>Announcing: Lasting Legacy</title><link>https://gamesfromwithin.com/announcing-lasting-legacy/</link><pubDate>Wed, 18 Jan 2017 00:00:00 +0000</pubDate><guid>https://gamesfromwithin.com/announcing-lasting-legacy/</guid><description>&lt;p&gt;Today I can finally announce the game &lt;a href="https://twitter.com/mysterycoconut"&gt;Miguel&lt;/a&gt; and I have been working on for a while: &lt;a href="http://lastinglegacygame.com/"&gt;&lt;em&gt;Lasting Legacy&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lastinglegacygame.com/"&gt;&lt;img alt="Logo" loading="lazy" src="https://gamesfromwithin.com/announcing-lasting-legacy/images/logo.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can read more about &lt;a href="http://lastinglegacygame.com/"&gt;&lt;em&gt;Lasting Legacy&lt;/em&gt; in the official web site&lt;/a&gt;. There isn&amp;rsquo;t a lot of information yet, but we wanted to announce it now so we can talk openly about it until release. We&amp;rsquo;ll definitely be revealing more information here over the upcoming weeks.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Today I can finally announce the game <a href="https://twitter.com/mysterycoconut">Miguel</a> and I have been working on for a while: <a href="http://lastinglegacygame.com/"><em>Lasting Legacy</em></a>.</p>
<p><a href="http://lastinglegacygame.com/"><img alt="Logo" loading="lazy" src="/announcing-lasting-legacy/images/logo.png"></a></p>
<p>You can read more about <a href="http://lastinglegacygame.com/"><em>Lasting Legacy</em> in the official web site</a>. There isn&rsquo;t a lot of information yet, but we wanted to announce it now so we can talk openly about it until release. We&rsquo;ll definitely be revealing more information here over the upcoming weeks.</p>
<h3 id="platforms">Platforms</h3>
<p>The first thing that might surprise some people is that we&rsquo;re going to release <em>Lasting Legacy</em> for Windows and Mac first (hopefully through Steam). This is a departure from all of my games as an independent developer, but I feel that PC is a better fit than mobile for <em>Lasting Legacy</em>. Also, I know Steam is flooded with new game releases, but it&rsquo;s not quite the mad house that mobile is these days, especially for a game that follows the old &ldquo;pay-once play-forever&rdquo; approach.</p>
<p>It won&rsquo;t be difficult to make a tablet/phone version later, so assuming it&rsquo;s moderately successful, we&rsquo;re likely to make an iOS version afterwards (Android is such a horrible development environment for native C games, that it probably won&rsquo;t be worth our time). And I suppose there&rsquo;s always the possibility of a console version if the opportunity presents itself.</p>
<h3 id="goals">Goals</h3>
<p>Why are we making <em>Lasting Legacy</em>? There are several high-level goals I had for my next project.</p>
<ol>
<li>
<p><strong>Shorter development.</strong> When I look back at the development times of the games I released over the years, I see a disturbing trend.</p>
<p><img alt="Screen Shot 2017 01 16 at 2 58 26 PM" loading="lazy" src="/announcing-lasting-legacy/images/Screen-Shot-2017-01-16-at-2.58.26-PM.png"></p>
<p>I really didn&rsquo;t want my next project to take nearly as long as Subterfuge did. Part of it meant tackling a game with a smaller scope, and part of it meant making it single player. My hope is that <em>Lasting Legacy</em> takes us less than 18 months from start to launch. Let&rsquo;s see if we can make it.</p>
</li>
<li>
<p><strong>Potential for wide appeal.</strong> The nature of Subterfuge meant that it was always a very niche product. We went into it knowing that and we successfully created a game that a very small percentage of people really love. This time I wanted to change things and wanted to create a game that had potential for wide appeal. It doesn&rsquo;t mean that it&rsquo;s going to be a clone of existing games or that we&rsquo;re going to dumb down anything. It just means that more people might like it, and some will hopefully love it as much as the devoted Subterfuge fans.</p>
<p>So far, in the extremely tiny, non-statistically meaningful sample of our close families, my wife, who is definitely not a video gamer, really likes the idea of the game and is interested to hear more about it (which is more than I can say for any of my projects since Flower Garden).</p>
</li>
<li>
<p><strong>Low money investment.</strong> Maybe it&rsquo;s not quite the <a href="https://medium.com/@morganjaffit/indipocalypse-or-the-birth-of-triple-i-eba64292cd7a#.jx9iu02qy">Indipocalypse</a> but there&rsquo;s no doubt it&rsquo;s a lot harder to make money from selling independent, original games than it was 5 years ago. Because of that, I don&rsquo;t feel comfortable investing a large amount of money into a project that might or might not end up being financially successful. That means picking a game that we can do almost completely between the two of us, minimizing the amount of contracting we have to do, and the scope of <em>Lasting Legacy</em> is perfect for that.</p>
</li>
</ol>
<h3 id="roadmap">Roadmap</h3>
<p>We still have a lot of work to do ahead of us.</p>
<ul>
<li><strong>Steam Greenlight.</strong> Once we have a lot more content in the game, we&rsquo;ll be able to create a video for the game and get it on Steam through the Greenlight process.</li>
<li><strong>Early access.</strong> Once we&rsquo;re on Steam, we&rsquo;ll have a period of Early Access. Because the <em>Lasting Legacy</em> is highly replayable, it&rsquo;s going to be a good candidate for Early Access. That time is also really going to help us fine tune the balance of the game and take player feedback into account for the final release.</li>
<li><strong>Release.</strong> When will this be? Once the game is done (but it better be this year!!).</li>
</ul>
<p>Want to help us make <em>Lasting Legacy</em> a success? Make sure you sign up for the <a href="http://lastinglegacygame.com">mailing list</a> and/or join the <a href="https://www.facebook.com/lastinglegacygame/">Facebook page</a>. Apart from progress updates, we&rsquo;ll announce when the game is on Greenlight so you can help vote us through it. Once we hit Early Access, we&rsquo;d love it if you can play the game and send us your feedback.</p>]]></content:encoded></item></channel></rss>