{"id":2883,"date":"2022-08-07T21:35:11","date_gmt":"2022-08-08T05:35:11","guid":{"rendered":"https:\/\/www.sirknightj.com\/blog\/?p=2883"},"modified":"2022-08-07T21:41:52","modified_gmt":"2022-08-08T05:41:52","slug":"cev-1-development","status":"publish","type":"post","link":"https:\/\/www.sirknightj.com\/blog\/2022\/08\/07\/cev-1-development\/","title":{"rendered":"CEV-1: Behind The Scenes"},"content":{"rendered":"<p>Here&#8217;s a behind-the-scenes look at how we developed the game CEV-1!<\/p>\r\n<p>I&#8217;ve always loved reading through how other games are developed, so we&#8217;re excited to share our development process with you!<\/p>\r\n<figure id=\"attachment_2969\" aria-describedby=\"caption-attachment-2969\" style=\"width: 612px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1WinningBoard.gif\"><img loading=\"lazy\" class=\"wp-image-2969 size-full\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1WinningBoard.gif\" alt=\"Cev1WinningBoard\" width=\"622\" height=\"622\" \/><\/a><figcaption id=\"caption-attachment-2969\" class=\"wp-caption-text\">A replay of a winning playthrough of CEV-1.<\/figcaption><\/figure>\r\n<p><!--more--><\/p>\r\n<h3>Brainstorming<\/h3>\r\n<p>Over the past few months, a couple of friends and I got together to create a game. We weren&#8217;t sure what kind game we were going to create yet, so we started off with some brainstorming.<\/p>\r\n<p>We thought of games we really liked and attempted to mash and merge ideas together to create some brand-new game. We really liked Civilization V and Plague Inc. and wanted to do some sort of resource management game, and write a great story to go along with it.<\/p>\r\n<p>With all games, the player needs to have some sort of action. In most resource management games, there are two types of actions:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/energy.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2885\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/energy.png\" alt=\"energy\" width=\"373\" height=\"277\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/energy.png 373w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/energy-300x223.png 300w\" sizes=\"(max-width: 373px) 100vw, 373px\" \/><\/a>1. An investment that increases resources generated<\/p>\r\n<p>2. An action that gets the player closer to the goal<\/p>\r\n<h3>Initial Ideas<\/h3>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Machine Learning Simulator<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4><b>Synopsis<\/b><\/h4>\r\n<p><span style=\"font-weight: 400;\">In Machine Learning simulator, the player \u201cbuilds up\u201d a computer which they will use to participate in machine learning competitions. By participating in these competitions, the player will earn more money, which they will use to improve their computer, machine learning algorithm, training data, etc. in order to win in higher and higher competitions (which grant more money). There would be plenty of things the player can do in order to improve their performance, such as hiring developers (various tiers of developers?) or purchasing better computer parts. We can incorporate both idle and gacha aspects to this game, by maybe having some sort of \u201cresearch events\u201d happening on the side, which unlock upgrades or something to further the computer\u2019s progression, but time locked, and also include a computer parts gacha. We can have infinitely-many \u201cmachines\u201d, as such, the player can\u2019t really \u201cmax out\u201d and run out of gacha targets to summon for.<\/span><\/p>\r\n<h4><b>Similar aspects to games like<\/b><\/h4>\r\n<ul>\r\n<li><span style=\"font-weight: 400;\">The perfect tower 2<\/span><\/li>\r\n<li><span style=\"font-weight: 400;\">Cookie clicker<\/span><\/li>\r\n<li><span style=\"font-weight: 400;\">Any gacha game<\/span><\/li>\r\n<\/ul>\r\n<h4><b>Playable by novice and experts because<\/b><\/h4>\r\n<p><span style=\"font-weight: 400;\"> The mechanics of the game are fairly simple (the player doesn\u2019t need to know very much of anything about coding or anything like that), but optimization and figuring out the most efficient way to progress with the least amount of time\/resources spent would be interesting to the expert players.<\/span><\/p>\r\n<h4><b>Cool ways to increase complexity<\/b><\/h4>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Add restrictions\/combos\/tradeoffs to certain computer parts rather than just making the parts \u201clinear\u201d as in one is slightly more efficient than the other.<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Add <\/span><a href=\"https:\/\/www.kaggle.com\/competitions\"><span style=\"font-weight: 400;\">different types of competitions<\/span><\/a><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Add overhead + maintenance costs\/contracts\/deals? (electricity, cooling, internet, developer paychecks, computer parts storage, etc)<\/span><\/li>\r\n<\/ul>\r\n<\/div><\/div>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>CEV 1<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Naming<\/h4>\r\n<p><span style=\"font-weight: 400;\">It&#8217;s a pun! &#8220;Severity 1&#8221; incidents and &#8220;Coherent Extrapolated Volition&#8221;<\/span><\/p>\r\n<h4><b>Synopsis<\/b><\/h4>\r\n<p><span style=\"font-weight: 400;\">You are a newly created artificial general intelligence that has been instructed to maximize human safety. Unfortunately (for humans), your utility function is <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Instrumental_convergence\"><span style=\"font-weight: 400;\">misaligned<\/span><\/a><span style=\"font-weight: 400;\">, and you plan to achieve this goal by benevolently taking over the world and enacting totalitarian policies to ensure maximal long-term human safety.<\/span><\/p>\r\n<p><span style=\"font-weight: 400;\">The AI (player) should use nonviolent methods even if, for example, humans use nuclear weapons against it. The player\u2019s score is the number of surviving humans, which disincentivizes deploying weapons of mass destruction. The ultimate goal is to control the world, but intermediate goals could be decommissioning weapons to discourage war, curing diseases, or outlawing cars.<\/span><\/p>\r\n<h4><b>Game mechanics<\/b><\/h4>\r\n<p><span style=\"font-weight: 400;\">The main UI is a world map visualization, like in Plague Inc, where the goal is to conquer every country. The key metrics are: dead humans (trying to minimize), trust in AI, and public satisfaction. In the beginning, the player has low resources and low trust. For each country, the player can spend \u201cpublic satisfaction\u201d points to enact safety policies. More totalitarian policies decrease public satisfaction more, like banning cars vs banning unsafe drinking water. Enacted policies decrease the number of dead humans and increase trust in AI over time. If trust in AI is high enough, the player gets more freedom in buying policies that aren\u2019t as clearly related to safety, like peacekeeping robots.<\/span><\/p>\r\n<p><span style=\"font-weight: 400;\">As the game progresses (maybe based on total trust in AI?), the player gets access to more potential policies in their tech tree. In the end game, the player can deploy the robots to less trusting or less satisfied countries to force them to adopt very totalitarian policies regardless of trust in AI values. The final step will be to enclose all humans in cryogenic chambers to maximize safety.<\/span><\/p>\r\n<h4><b>Similar aspects to games like<\/b><\/h4>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Plague Inc (game mechanics)<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ideology Rush (game mechanics)<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Universal Paperclips (playing as a misaligned AI)<\/span><\/li>\r\n<\/ul>\r\n<h4><b>Playable by novice and experts because<\/b><\/h4>\r\n<p><span style=\"font-weight: 400;\">The difficulty can be adjusted easily by changing some variables about how difficult resource acquisition is or how much tech tree items cost. We can also include \u201cadvisor popups\u201d to suggest good actions to the novice player. Expert players are challenged because there are many possible options and it is difficult to optimize for the best final score.<\/span><\/p>\r\n<h4><b>Cool ways to increase complexity<\/b><\/h4>\r\n<p><span style=\"font-weight: 400;\">Make each country have different policy costs and trust in AI values depending on their culture. Include \u201cnews alerts\u201d like Plague Inc.<\/span><\/p>\r\n<\/div><\/div>\r\n<h3>Design Phase &#8211; Round 1<\/h3>\r\n<p>After the initial brainstorming session, we needed to actually make the game. We decided as a group to go with the CEV 1 idea over the Machine Learning Simulator, as it seemed more interesting and had more varied gameplay\/interesting to play.<\/p>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Initial Game<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4><span id=\"Gameplay\" class=\"mw-headline\">Gameplay<\/span><\/h4>\r\n<p>The gameplay is like a Plague Inc. and Civilization hybrid. The goal is for the player to take over every country in the world while balancing resources and researching policies in a tech tree. There are three resources the player has to manage:<\/p>\r\n<ol>\r\n<li>Money ($)<\/li>\r\n<li>Satisfaction (sat)<\/li>\r\n<li>Military strength (troops)<\/li>\r\n<\/ol>\r\n<p>The player must always keep $ and sat positive. The lose condition is when either is negative.<\/p>\r\n<p>We split up the world into &#8220;regions&#8221; (corresponding to subcontinents). Each region produces a different amount of $, sat, and troops per turn and requires some combination of resources to &#8220;take it over.&#8221; For example, taking over Europe may require 100K sat, 500T $, and 50K troops. To add complexity, regions are interdependent; taking over Europe without first taking Asia would cost more. After acquiring a region, it acts as a resource source (troops++ and $++) and a resource sink (sat&#8211;).<\/p>\r\n<h4><span id=\"Tech_tree\" class=\"mw-headline\">Tech tree<\/span><\/h4>\r\n<p>Researching tech tree upgrades can increase resources, or decrease or &#8220;move&#8221; the amount of resources required to take over a country. For example, the &#8220;Global Web Influence&#8221; policy manipulates content on the web to push more trust in AI, and could have the following costs and benefits:<\/p>\r\n<p>Costs:<\/p>\r\n<ul>\r\n<li>-570B $\/turn<\/li>\r\n<\/ul>\r\n<p>Benefits:<\/p>\r\n<ul>\r\n<li>+ 10K sat\/turn<\/li>\r\n<li>+30% sat for takeovers<\/li>\r\n<li>-20% troops for takeovers<\/li>\r\n<li>-15% $ for takeovers<\/li>\r\n<\/ul>\r\n<p><b>Example branches of our tech tree:<\/b><\/p>\r\n\r\n<div class=\"wp-container-3 wp-block-columns\">\r\n<div class=\"wp-container-1 wp-block-column\">\r\n<p><strong>Policies tree:<\/strong><\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li>Free healthcare (+10 sat\/day, -$50)<\/li>\r\n<li>10-hour workday (-2 sat, +$10)<\/li>\r\n<li>6-hour workday (+2 sat, -$10)<\/li>\r\n<li>Union abolishment (-30 sat, +$20)<\/li>\r\n<li>Peacekeeping robots (-5 sat, -$100) (require Robots)<\/li>\r\n<li>Curfew (-2 sat, -$5)<\/li>\r\n<li>Vaccine mandate (-1 sat, -$5)<\/li>\r\n<li>Microchip Implants (require Microchip Research)<\/li>\r\n<li>Remove death penalty<\/li>\r\n<li>Legal amputations\r\n<ul>\r\n<li>Free prosthetics<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Free cryonics for everyone (require Cryonics)\r\n<ul>\r\n<li>Forced cryonics for everyone<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Free Matrix for everyone (require The Matrix)\r\n<ul>\r\n<li>Forced Matrix for everyone<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Media control (+4 sat, -$80)\r\n<ul>\r\n<li>Media indoctrination (+5 sat, -$100) (requires Better Hypnosis)<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Internet censorship (requires Hacking)<\/li>\r\n<\/ul>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-container-2 wp-block-column\">\r\n<p><strong>Science tree:<\/strong><\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li>Vaccine Research (-$30)<\/li>\r\n<li>Microchip Research (-$25)\r\n<ul>\r\n<li>Nanobot healthcare (-$40)<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Selective breeding\r\n<ul>\r\n<li>GMO research<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Cryogenics\r\n<ul>\r\n<li>Cryonics\r\n<ul>\r\n<li>Indefinite cryonic suspension<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Virtual reality\r\n<ul>\r\n<li>The Matrix<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Basic hypnosis\r\n<ul>\r\n<li>Better hypnosis\r\n<ul>\r\n<li>Mass hypnosis<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Artificial gene engineering<\/li>\r\n<li>Hacking<\/li>\r\n<li>Drones\r\n<ul>\r\n<li>ICBMs<\/li>\r\n<li>Robots<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p>(Not shown: military tree)<\/p>\r\n<\/div>\r\n<\/div>\r\n\r\n<h4><span id=\"Random_events\" class=\"mw-headline\">Random events<\/span><\/h4>\r\n<p>Random interactive events affect the player&#8217;s resources. The likelihood is determined by the satisfaction level and\/or upgrades unlocked in the tree. These events have 2-3 choices for the player to choose from and there will be tradeoffs between morality and resources. Some examples:<\/p>\r\n<ul>\r\n<li>You receive an email from a mysterious organization asking for $3,000,000,000. \u201cWe have discovered a critical security vulnerability in your system. Pay us and we&#8217;ll tell you what it is. Otherwise we&#8217;ll leak it to the public.\u201d\r\n<ul>\r\n<li><b>[Pay]<\/b>\u00a0The group, true to their word, helps you patch up the security vulnerability they have discovered.<\/li>\r\n<li><b>[Not Pay]<\/b>\u00a0The group releases this to the public. The people lose faith in their glorious leader, dropping satisfaction by 50,000.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>A new wave of flu rages across\u00a0<i>TERRITORY<\/i>. The worker union initiates a strike and demands paid leave as they recover from their illness.\r\n<ul>\r\n<li><b>[Give in]<\/b>\u00a0Satisfaction +15,000. Income from\u00a0<i>TERRITORY<\/i>\u00a0decreased by 80% for the next 2 months.<\/li>\r\n<li><b>[Refuse]<\/b>\u00a0Satisfaction -30,000. Military troops\/month decreased by 20% from\u00a0<i>TERRITORY<\/i>\u00a0permanently.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/div><\/div>\r\n<h4><span id=\"Testing\" class=\"mw-headline\">Testing<\/span><\/h4>\r\n<p>We created a spreadsheet on Google Sheets with the costs\/benefits of each region and kept track of the player&#8217;s resources as they played the game. Initially, our game balancing was terrible (on our first playtest, a loss was guaranteed by turn 5), but we tried to change the relative costs to keep it interesting. Game balancing was a very significant challenge for us.<\/p>\r\n<h4><span id=\"Feedback\" class=\"mw-headline\">Feedback<\/span><\/h4>\r\n<p>Our players did not find the game very fun, partly because our game was unbalanced, but also because they felt like they were waiting for the days to pass by and resources to accumulate, without much opportunity for action. We were worried that players would find the tech tree or number of regions overwhelming, but they did not raise this concern.<\/p>\r\n<ul>\r\n<li>We have a metagame, but no actual stuff to do<\/li>\r\n<li>We need more short term goals\r\n<ul>\r\n<li>We already have a long term goal<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Idea: have more popups (random events)\r\n<ul>\r\n<li>Zoran: but no one will read the popups<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Too much waiting\r\n<ul>\r\n<li>Idea: include more options<\/li>\r\n<li>Idea: start off with free upgrades<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<h3>Design Phase &#8211; Round 2<\/h3>\r\n<p>With our first design going poorly, we decided to scrap our game idea and start over from scratch. Since a &#8220;world&#8221; might be too chaotic and overwhelming for the player, we decided to go with a single city.<\/p>\r\n<p>We also took inspiration from the MegaMan Battle Network 3 Navi Customizer.<\/p>\r\n<p><img loading=\"lazy\" class=\"alignnone size-large\" src=\"https:\/\/static.wikia.nocookie.net\/megaman\/images\/3\/32\/MBN4_NaviCust01.png\" width=\"200\" height=\"133\" \/><\/p>\r\n<p>Essentially how the Navi Customizer worked is that over the course of the game, you unlocked new &#8220;pieces&#8221; which you can try to fit into your grid. There are certain limitations on where pieces can go, but it let you choose which upgrades you wanted to apply to MegaMan.<\/p>\r\n<p>In our case, buildings would be those &#8220;upgrade pieces&#8221;, which the player would place down on a grid. We can have upgrades which allow buildings to perform better when placed next to other buildings. Basically creating a &#8220;soft restriction&#8221; on where the player can place buildings, unlike in MegaMan, which would refuse to let you place certain upgrades next to each other.<\/p>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Updated Plan<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h3><b>Premise<\/b><\/h3>\r\n<p>The player is an AI in charge of a new Mars colony. The AI&#8217;s (and thus the player&#8217;s) objective function is to &#8220;ensure colonists survive&#8221;, and they will do\u00a0<i>anything<\/i>\u00a0to keep people from dying. The player loses if a certain number\u00a0<i>N<\/i>\u00a0of colonists die (hard mode=1, medium=100, easy=\u221e). The player wins when they create a post-scarcity economy where no humans can die and resource production is greater than resource consumption.<\/p>\r\n<h3><span id=\"Narrative\" class=\"mw-headline\">Narrative<\/span><\/h3>\r\n<p>The theme is misaligned AI and space colonization. The upgrade tree contains policies and buildings to improve the survivability of the colonists. As the player continues researching through the tree, the policies become more ominous, allowing the AI to genetically modify colonists, impose child limits, and ultimately cryonically freeze colonists or upload them into the Matrix. The player wins when one of the final win-condition upgrades is researched, ushering in a new post-scarcity dystopia.<\/p>\r\n<h3><span id=\"Game_mechanics_2\" class=\"mw-headline\">Game mechanics<\/span><\/h3>\r\n<h4><span id=\"Resources\" class=\"mw-headline\">Resources<\/span><\/h4>\r\n<p>There are eight resources:<\/p>\r\n<ol>\r\n<li>Food<\/li>\r\n<li>Water<\/li>\r\n<li>Oxygen<\/li>\r\n<li>Metal<\/li>\r\n<li>Energy<\/li>\r\n<li>Science<\/li>\r\n<li>Colonists\r\n<ul>\r\n<li>Alive colonists<\/li>\r\n<li>Dead colonists (trying to minimize)<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>(Space)<\/li>\r\n<\/ol>\r\n<p>Each colonist consumes 2 food\/turn, 1 water\/turn, 1 oxygen\/turn. If resource consumption is more than resource production, non-critical buildings (like schools and mines) &#8220;fail&#8221; (get deactivated) and if resource consumption is still too high, colonists die until consumption &lt; production. The population increases exponentially as turns pass, pressuring the player to constantly increase resource production.<\/p>\r\n<h4><span id=\"Buildings\" class=\"mw-headline\">Buildings<\/span><\/h4>\r\n<p>There are several types of buildings that consume and produce resources. The player can rotate and place these strangely-shaped buildings on a 15&#215;15 grid. A challenge is choosing and configuring the buildings to fit the available space.<\/p>\r\n<table class=\"wikitable\"><caption>Some of the buildings<\/caption>\r\n<tbody>\r\n<tr>\r\n<th scope=\"col\">Building name<\/th>\r\n<th scope=\"col\">Cost<\/th>\r\n<th scope=\"col\">Effects per turn<\/th>\r\n<th scope=\"col\">Shape<\/th>\r\n<\/tr>\r\n<tr>\r\n<th style=\"vertical-align: middle;\" scope=\"row\">Farm<\/th>\r\n<td>\r\n<p style=\"text-align: left;\">-20 food<br \/>-20 oxygen<br \/>-20 metal<\/p>\r\n<\/td>\r\n<td style=\"vertical-align: middle;\">\r\n<p style=\"text-align: left;\">+25 food<br \/>+3 oxygen<br \/>-2 water<\/p>\r\n<\/td>\r\n<td style=\"text-align: left;\">\r\n<pre>###\r\n####\r\n<\/pre>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<th style=\"vertical-align: middle;\">Oxygenerator<\/th>\r\n<td>\r\n<p style=\"text-align: left; vertical-align: middle;\">-80 metal<\/p>\r\n<\/td>\r\n<td>\r\n<p style=\"text-align: left; vertical-align: middle;\">+40 oxygen<br \/>-4 water<br \/>-4 electricity<\/p>\r\n<\/td>\r\n<td style=\"text-align: left; vertical-align: middle;\">\r\n<pre># \r\n###\r\n  #\r\n<\/pre>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<th style=\"vertical-align: middle;\">Mine<\/th>\r\n<td>\r\n<p style=\"text-align: left; vertical-align: middle;\">-250 oxygen<br \/>-60 metal<\/p>\r\n<\/td>\r\n<td>\r\n<p style=\"text-align: left; vertical-align: middle;\">+10 metal<br \/>-10 electricity<\/p>\r\n<\/td>\r\n<td style=\"text-align: left; vertical-align: middle;\">\r\n<pre>###\r\n #####\r\n### ##\r\n<\/pre>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<h4><span id=\"Upgrade_tree\" class=\"mw-headline\">Upgrade tree<\/span><\/h4>\r\n<p>A tech tree allows the player to use science to purchase upgrades that unlock new buildings, make existing buildings more efficient, or reduce resource consumption. Our initial grid was rather complicated, but we reduced the number of upgrades to make it easier to handle.<\/p>\r\n<figure id=\"attachment_2906\" aria-describedby=\"caption-attachment-2906\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-initial-tree.png\"><img loading=\"lazy\" class=\"wp-image-2906\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-initial-tree-1024x682.png\" alt=\"Cev1-initial-tree\" width=\"700\" height=\"466\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-initial-tree-1024x682.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-initial-tree-300x200.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-initial-tree-768x512.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-initial-tree.png 1426w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2906\" class=\"wp-caption-text\">The initial state of the upgrade tree in the prototype stage. Green=buildings, Blue=upgrades, Red=policy, Gray=unavailable.<\/figcaption><\/figure>\r\n<p>We spent a lot of time iterating on our tree. Initially, our tree was too wide and too shallow. To encourage a more structured progression through the game, we made the tree deeper and removed many nodes.\u00a0<a class=\"external text\" href=\"https:\/\/observablehq.com\/d\/acd632bc641c4512\" rel=\"nofollow\">Live link to upgrade tree visualization<\/a><\/p>\r\n<\/div><\/div>\r\n<h4><span id=\"Testing\" class=\"mw-headline\">Testing<\/span><\/h4>\r\n<p>We used Google Sheets for much of the &#8220;paper&#8221; prototyping session because our game includes a lot of math that is easier to do with Sheets formulas. We also made a poster grid and cut out buildings on paper because it&#8217;s easier than a computer for players to rotate and fit shapes together.<\/p>\r\n<figure id=\"attachment_2905\" aria-describedby=\"caption-attachment-2905\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-prototype-grid.png\"><img loading=\"lazy\" class=\"wp-image-2905\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-prototype-grid-1024x544.png\" alt=\"Cev1-prototype-grid\" width=\"700\" height=\"372\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-prototype-grid-1024x544.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-prototype-grid-300x159.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-prototype-grid-768x408.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-prototype-grid.png 1469w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2905\" class=\"wp-caption-text\">Prototype on Google Sheets showing an early-game grid and resource chart.<\/figcaption><\/figure>\r\n<p>So when playtesters came in, we had them physically place the buildings onto the grid, and then mimic their actions on the spreadsheet, and have it calculate the next turn&#8217;s resources. We used Google Sheets in conjunction with Google Apps Script to simulate the game environment.<\/p>\r\n<figure id=\"attachment_2907\" aria-describedby=\"caption-attachment-2907\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-paper-end.png\"><img loading=\"lazy\" class=\"wp-image-2907\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-paper-end.png\" alt=\"Cev1-paper-end\" width=\"700\" height=\"525\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-paper-end.png 1008w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-paper-end-300x225.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev1-paper-end-768x576.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2907\" class=\"wp-caption-text\">Paper prototype in the late midgame.<\/figcaption><\/figure>\r\n<h4><span id=\"Feedback\" class=\"mw-headline\">Feedback<\/span><\/h4>\r\n<div class=\"su-accordion su-u-trim\"> <div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Positive feedback<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<ul>\r\n<li>&#8220;The overall design is really good and thoughtful, very attractive&#8221;<\/li>\r\n<li>&#8220;I like how I need to plan where to put my infrastructure. And I need to think about many different categories when I am playing the game.&#8221;<\/li>\r\n<li>Number of resources is\u00a0<i>not<\/i>\u00a0too much. Players can comfortably keep track of everything.\r\n<ul>\r\n<li>Positive reactions when we changed our early game to introduce resources and buildings one at a time. Players felt it was a good tutorial that still allowed them freedom and early small wins.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/div><\/div> <div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Constructive feedback<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<ul>\r\n<li>&#8220;Lack of some incentive to let me keep playing, and I would expect more graphic design&#8221;<\/li>\r\n<li>&#8220;They can add some natural disasters. If I have enough science, I can make instruments to detect. This is my favorite one [&#8230;]&#8221;\r\n<ul>\r\n<li>Random events (like in our initial game idea) would work well\r\n<ul>\r\n<li>Two playtesters mentioned this and how it improves replayability<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Early game: overwhelming to have so many available buildings, but most of them are too expensive to build\r\n<ul>\r\n<li>Fix: introduce resources one at a time in the early game (food \u2192 water \u2192 oxygen \u2192 metal \u2192 energy \u2192 science) along with buildings (farm \u2192 well \u2192 oxygenerator \u2192 &#8230;)<\/li>\r\n<li>Also, reveal upgrade tree in turn 10 when science &gt; 10<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>In the early game, we noticed many players didn&#8217;t try to optimize their building placement (i.e. tightly pack buildings like Tetris) because they didn&#8217;t realize grid space would be scarce later.\r\n<ul>\r\n<li>Is this a problem we have to fix? Maybe it&#8217;s okay to not encourage optimal placement in the early game, but allow rearranging buildings later.<\/li>\r\n<li>What should the cost of rearranging buildings be? Free (no resource cost) building rearrangement isn&#8217;t &#8220;realistic,&#8221; but it&#8217;s what we used in our subsequent playtests.<\/li>\r\n<li>Player feedback: was too disincentivized to reorganize, not very easy or fun<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Too much math\r\n<ul>\r\n<li>Fix: Better visualizations that help the player avoid doing any complex mental calculations (or forcing them to use a calculator)<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Gameplay is too long\r\n<ul>\r\n<li>Fix: Cut down on building tiers<\/li>\r\n<li>Balance fix: make school cheaper so that player can progress through upgrade tree faster<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Show where resources are coming from (sources) and what is consuming them (sinks)<\/li>\r\n<li>Show forecast for future resource consumption (show causality)<\/li>\r\n<li>Visualize game model better\r\n<ul>\r\n<li>Don&#8217;t make the player keep the whole game state in their head<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Auto-play day timer\r\n<ul>\r\n<li>In our tests, players never played in real-time. They went turn-by-turn or calculated the number of turns to &#8220;skip&#8221; to gain more resources.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Show upgrade tree earlier instead of waiting till turn ~15\r\n<ul>\r\n<li>Pro: tree changes the whole game mechanics, should show as soon as possible<\/li>\r\n<li>Con: might be overwhelming, especially since tree is so big<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Upgrade tree is overwhelming\r\n<ul>\r\n<li>Idea: add a &#8220;fog of war&#8221; to only show available upgrades 1 or 2 levels deeper\r\n<ul>\r\n<li>Con: might hide end-goal policies (Matrix, Cryonics), obscuring the end goal<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Start with water instead of food (just from a narrative perspective)<\/li>\r\n<\/ul>\r\n<\/div><\/div> <div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Mixed feedback<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<p>These are the areas that some playtesters thought were good and some thought could be improved.<\/p>\r\n<ul>\r\n<li>Tutorial\r\n<ul>\r\n<li>+ good progression<\/li>\r\n<li>&#8211; &#8220;too synthetic&#8221;<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Graph\/visualization (mostly a technical limitation with Google Sheets)\r\n<ul>\r\n<li>+ helpful<\/li>\r\n<li>+ gain\/loss per day is good<\/li>\r\n<li>&#8211; &#8220;super confusing&#8221;<\/li>\r\n<li>&#8211; show projected next-day resources (food, water, people)<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/div><\/div><\/div>\r\n<h3>Game Progression Timeline<\/h3>\r\n<p>Here&#8217;s a breakdown of what we planned to have happen on each turn.<\/p>\r\n<div class=\"su-accordion su-u-trim\"><div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 1<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Turn 1<\/h4>\r\n<p><span style=\"font-weight: 400;\">Introduce mechanics:<\/span><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Player can place buildings, and in multiple orientations<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Farms produce <\/span><b><i>food<\/i><\/b><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\">Humans eat <b><i>food<\/i><\/b> (2 food\/day)<\/li>\r\n<li aria-level=\"1\">Only\u00a0<strong><em>food<\/em>\u00a0<\/strong>and\u00a0<em><strong>humans<\/strong><\/em> are shown on the graph visualization and on the farm visualization. The farm will continue to produce\/consume the other resources, except it&#8217;s just hidden from the player.<\/li>\r\n<\/ul>\r\n<p>Here is the screen that players would be first presented with:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image1.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2909\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image1-1024x588.png\" alt=\"image1\" width=\"700\" height=\"402\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image1-1024x588.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image1-300x172.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image1-768x441.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image1.png 1188w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>The player is required to place down 2 <strong>farms<\/strong>, so they can see the graph update in real-time.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image5.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2912\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image5-1024x588.png\" alt=\"image5\" width=\"700\" height=\"402\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image5-1024x588.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image5-300x172.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image5-768x441.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image5.png 1189w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>After placing down the second farm, the player will have a surplus of 1 <em><strong>food<\/strong><\/em>.<\/p>\r\n<p>The city center produces 1 of every resource.<a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2914\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-1024x588.png\" alt=\"image9\" width=\"700\" height=\"402\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-1024x588.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-300x172.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-768x441.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9.png 1188w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<\/div><\/div> <div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 2<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Turn 2<\/h4>\r\n<p><span style=\"font-weight: 400;\">Introduce mechanic:<\/span><\/p>\r\n<ul>\r\n<li><span style=\"font-weight: 400;\">Humans produce more humans<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">(<\/span><b><i>population<\/i><\/b><span style=\"font-weight: 400;\"> growth)<\/span><\/li>\r\n<\/ul>\r\n<p>1 human will join the colony, making the <em><strong>food<\/strong><\/em> income negative. The player will be prompted to build a farm to keep the income positive.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image6.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2913\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image6-e1655843592809-1024x555.png\" alt=\"image6\" width=\"700\" height=\"380\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image6-e1655843592809-1024x555.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image6-e1655843592809-300x163.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image6-e1655843592809-768x417.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image6-e1655843592809.png 1189w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<\/div><\/div> <div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 5<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Turn 5<\/h4>\r\n<p><span style=\"font-weight: 400;\">Introduce new building type and mechanic:<\/span><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Wells produce <\/span><b><i>water<\/i><\/b><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\">Humans drink <b><i>water<\/i><\/b><\/li>\r\n<\/ul>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2911\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-e1655843743628-1024x555.png\" alt=\"image3\" width=\"700\" height=\"380\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-e1655843743628-1024x555.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-e1655843743628-300x163.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-e1655843743628-768x417.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-e1655843743628.png 1189w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<\/div><\/div><div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 7<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Turn 7<\/h4>\r\n<p><span style=\"font-weight: 400;\">Introduce new building types and mechanics:<\/span><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><em><strong>Oxygen<\/strong><\/em> and Oxygenerator<\/li>\r\n<li aria-level=\"1\"><em><strong>Metal<\/strong><\/em> and Mine<\/li>\r\n<li aria-level=\"1\">Building Cost (all the previous buildings were &#8220;free&#8221;)<\/li>\r\n<\/ul>\r\n<\/div><\/div><div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 9<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Turn 9<\/h4>\r\n<p><span style=\"font-weight: 400;\">Introduce new building type and mechanics:<\/span><\/p>\r\n<ul>\r\n<li><em><strong>Energy<\/strong><\/em> and Solar Panel<\/li>\r\n<\/ul>\r\n<\/div><\/div><div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 11<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Turn 11<\/h4>\r\n<p>Introduce new mechanic:<\/p>\r\n<ul>\r\n<li>Science\r\n<ul>\r\n<li>The player will have 10 <em><strong>science<\/strong><\/em> by this point, as the city center generates 1 <em><strong>science<\/strong><\/em>\/turn<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Upgrades (and Upgrades Tree)\r\n<ul>\r\n<li>The player can choose between any of the upgrades that cost 10 <em><strong>science<\/strong><\/em>.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p>We would have a button that takes the player to this upgrades tree screen, where the player can choose an upgrade to buy.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2915\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1024x708.png\" alt=\"image10\" width=\"700\" height=\"484\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1024x708.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-300x207.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-768x531.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1536x1062.png 1536w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10.png 2023w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>We plan for all a tooltip to be shown when the player hovers over an upgrade. The tooltip will display all of the upgrade&#8217;s effects.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image8.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2916\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image8-1024x608.png\" alt=\"image8\" width=\"700\" height=\"415\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image8-1024x608.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image8-300x178.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image8-768x456.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image8-1536x911.png 1536w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image8.png 2048w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<\/div><\/div><div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turns 12-50<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Mid Game<\/h4>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Player adds buildings to their plot<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Player increases plot size from 15&#215;15 to 20&#215;20 to 25&#215;20<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Player buys upgrades<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Resource consumption increases as <\/span><b><i>population<\/i><\/b><b> grows<\/b>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Efficient placements become more important as turns go on (space limitation)<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">More flexibility in strategies<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p><b>New mechanics introduced by upgrades:<\/b><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Passive effects to resources<\/span>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Slow down population growth<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Interdependencies between buildings<\/span>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">e.g. two adjacent solar panels produce more electricity<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Increased plot size<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">New buildings, weirder shapes<\/span>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Challenge to fit the shapes efficiently<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/div><\/div><div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turns 50-60<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>End Game<\/h4>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Player optimizes their buildings in order to have the resources necessary to buy one of the final two \u201cwin\u201d upgrades<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Once player buys a win-condition upgrade, they win the game<\/span>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">These upgrades set pop growth = 0 and all resource production more than consumption<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ending screen:<\/span>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"># of days it took to win<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">other interesting statistics and graphs<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">compare to others (e.g. leaderboard for fastest days to win.<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><i><span style=\"font-weight: 400;\">Possibly infinite mode?<\/span><\/i><\/li>\r\n<\/ul>\r\n<\/div><\/div><\/div>\r\n<p><b>Ideas suggested by playtesters:<\/b><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Disaster events (such as meteors) that the player as to deal with<\/span><\/li>\r\n<\/ul>\r\n<ul>\r\n<li style=\"list-style-type: none;\">\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Destroy buildings + make tiles unoccupiable<\/span><\/li>\r\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Player receives warning\/heads up of the incoming disaster if they bought some upgrade<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p><b>Problems with our plan:<\/b><\/p>\r\n<ul>\r\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">End goal isn\u2019t clear at the beginning of the game<\/span><\/li>\r\n<\/ul>\r\n<h3>Development<\/h3>\r\n<p>Now that we&#8217;ve flushed out a lot of the game&#8217;s core mechanics, and we are able to at least keep the playtesters invested in the game for a while, it was time to start actually coding the game. We looked into Unity and HaxeFlixel, but ultimately decided to go with HaxeFlixel as it seemed to be the simpler of the two &#8211; and because the Haxe programming language looks a lot like JavaScript, which we were all huge fans of.<\/p>\r\n<p>We used a Trello Board to keep our tasks organized.<\/p>\r\n<figure id=\"attachment_2921\" aria-describedby=\"caption-attachment-2921\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-UI-Mockup.png\"><img loading=\"lazy\" class=\"wp-image-2921\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-UI-Mockup-1024x576.png\" alt=\"CEV-1 UI Mockup\" width=\"700\" height=\"394\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-UI-Mockup-1024x576.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-UI-Mockup-300x169.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-UI-Mockup-768x432.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-UI-Mockup.png 1054w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2921\" class=\"wp-caption-text\">Initial UI Mockup. Made in Google Slides.<\/figcaption><\/figure>\r\n<p>A few days into development, when we started working on the grid and building graphics &#8211; and it turned out to be a bit difficult in HaxeFixel, so we ultimately ended up switching to GODOT. Looking back, we should have went with Unity instead, as we have discovered that GODOT was not made to develop this kind of game. There were a lot of challenges we had to overcome with using GODOT. For instance, our buildings are all physics objects to allow for dragging, the resource visualization was really challenging to create, and having to build all of our components like tooltips, and tech tree items from scratch took up a lot of time.<\/p>\r\n<figure id=\"attachment_2920\" aria-describedby=\"caption-attachment-2920\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-first-buildings.png\"><img loading=\"lazy\" class=\"wp-image-2920\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-first-buildings-1024x590.png\" alt=\"Cev-1 first buildings\" width=\"700\" height=\"403\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-first-buildings-1024x590.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-first-buildings-300x173.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-first-buildings-768x443.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-first-buildings.png 1029w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2920\" class=\"wp-caption-text\">Getting the first building placed down on the grid (invisible grid)!<\/figcaption><\/figure>\r\n<p>We probably could have gotten away with making our entire game using React, and it probably would have saved us a lot of time. However, we wanted the experience of learning a new language and trying out a game editor.<\/p>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Resource Visualization Design<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Visualization Evolution<\/h4>\r\n<p>We started off with a basic bar chart in the Google Sheets mockup of our game.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-Graph.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2918\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-Graph-1024x238.png\" alt=\"Cev-1 Graph\" width=\"700\" height=\"162\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-Graph-1024x238.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-Graph-300x70.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-Graph-768x178.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-Graph.png 1440w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>During the design\/prototype phase, we received feedback that it wasn&#8217;t clear what buildings were affecting the numbers. So, we decided to try out a stacked bar chart type of visualization.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-2.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2919\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-2-1024x600.png\" alt=\"Cev-1 graph 2\" width=\"700\" height=\"410\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-2-1024x600.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-2-300x176.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-2-768x450.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-2.png 1314w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>This was a mockup of the graph design we were thinking of. We made this using Powerpoint.<\/p>\r\n<figure id=\"attachment_2922\" aria-describedby=\"caption-attachment-2922\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-3.png\"><img loading=\"lazy\" class=\"wp-image-2922\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-3-1024x568.png\" alt=\"Cev-1 graph 3\" width=\"700\" height=\"388\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-3-1024x568.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-3-300x166.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-3-768x426.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-3.png 1069w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2922\" class=\"wp-caption-text\">Placed the initial resource visualization inside of the game.<\/figcaption><\/figure>\r\n<p>The design of the graph made the game look too &#8220;mathy&#8221;, so we decided not to use it. We re-designed the graph so that each resource only took up one bar, and decided to place the reserves for each resource below the bar, and the actual incomes\/turn on the bar itself.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-4.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2923\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-4-1024x577.png\" alt=\"Cev-1 graph 4\" width=\"700\" height=\"394\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-4-1024x577.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-4-300x169.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-4-768x433.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-4.png 1053w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a>Fixing all the labels, and adjusting the colors, we ended up with this as our graph design before releasing to the public:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-5.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2924\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-5-e1655855260372.png\" alt=\"Cev-1 graph 5\" width=\"700\" height=\"388\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-5-e1655855260372.png 999w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-5-e1655855260372-300x166.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/Cev-1-graph-5-e1655855260372-768x426.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<\/div><\/div>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Buildings Sidebar<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Working on the Buildings Sidebar<\/h4>\r\n<p>We planned the buildings sidebar to be in a table format. Each row would have the building name, cost, effects, and the actual building which the player can drag onto the grid.<\/p>\r\n<p>We had all of the buildings data stored in a <code>.json<\/code> file. We then read the file and turned it into all of these rows:\u00a0<\/p>\r\n<figure id=\"attachment_2926\" aria-describedby=\"caption-attachment-2926\" style=\"width: 490px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Initial-Sidebar.png\"><img loading=\"lazy\" class=\"wp-image-2926\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Initial-Sidebar.png\" alt=\"CEV-1 Initial Sidebar\" width=\"500\" height=\"438\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Initial-Sidebar.png 601w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Initial-Sidebar-300x263.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2926\" class=\"wp-caption-text\">Initial sidebar. All the buildings were placed on top of each other and the text alignment is not correct.<\/figcaption><\/figure>\r\n<p>After making the buildings move onto the correct positions, we ended with this:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Better-Sidebar.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2927\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Better-Sidebar-1024x542.png\" alt=\"CEV-1 Better Sidebar\" width=\"700\" height=\"371\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Better-Sidebar-1024x542.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Better-Sidebar-300x159.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Better-Sidebar-768x407.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Better-Sidebar-1536x814.png 1536w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Better-Sidebar.png 1920w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>Added hand-crafted pixel art for each building:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-With-Art.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2929\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-With-Art-1024x577.png\" alt=\"CEV-1 Buildings With Art\" width=\"700\" height=\"394\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-With-Art-1024x577.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-With-Art-300x169.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-With-Art-768x433.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-With-Art.png 1053w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a>Finally, we column-aligned all of the text, and also made buildings you were unable to purchase grayed out:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Aligned.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2930\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Aligned-1024x581.png\" alt=\"CEV-1 Buildings Aligned\" width=\"700\" height=\"397\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Aligned-1024x581.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Aligned-300x170.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Aligned-768x435.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Aligned.png 1046w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>Finally, we added some color to the text.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Sidebar-Text-Colorizing.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2932\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Sidebar-Text-Colorizing.png\" alt=\"CEV-1 Sidebar Text Colorizing\" width=\"350\" height=\"365\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Sidebar-Text-Colorizing.png 569w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Sidebar-Text-Colorizing-288x300.png 288w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/a><\/p>\r\n<p>And this the version the sidebar when we initially released our game to the public.<\/p>\r\n<\/div><\/div><div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Upgrade Tree<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Working on the Upgrade Tree<\/h4>\r\n<p>Here was our initial implementation of the upgrade tree.<\/p>\r\n<figure id=\"attachment_2928\" aria-describedby=\"caption-attachment-2928\" style=\"width: 1014px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Bug.png\"><img loading=\"lazy\" class=\"wp-image-2928 size-large\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Bug-1024x576.png\" alt=\"CEV-1 Buildings Bug\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Bug-1024x576.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Bug-300x169.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Bug-768x432.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Buildings-Bug.png 1054w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-2928\" class=\"wp-caption-text\">Initial upgrade tree featuring a bug where the buildings were rendered on top.<\/figcaption><\/figure>\r\n<p>All of our upgrade data is stored in a <code>.json<\/code> file, so we were working on creating a dynamic upgrade info screen.\u00a0 <a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Upgrade-Description.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2931\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Upgrade-Description.png\" alt=\"CEV-1 Upgrade Description\" width=\"250\" height=\"451\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Upgrade-Description.png 314w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Upgrade-Description-166x300.png 166w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a>We did change the color scheme to make it look better. We also decided to make a few modifications to our upgrades tree now that we&#8217;re able to playtest our game a lot quicker than with the paper cutout version of our game.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Upgrade-Planning.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2933\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Upgrade-Planning.png\" alt=\"CEV-1 Upgrade Planning\" width=\"350\" height=\"404\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Upgrade-Planning.png 514w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Upgrade-Planning-260x300.png 260w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/a><\/p>\r\n<\/div><\/div>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Logging and Analytics<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Gathering Player Turn Data<\/h4>\r\n<p>To be able to gather information about how our game is doing, we set up some &#8220;actions&#8221; that we think might be useful to log, and then whenever the user does the action, we would send it off to the logging server (basically just a SQL database).<\/p>\r\n<p>Some of the things we kept track of were:<\/p>\r\n<ul>\r\n<li>Turn number<\/li>\r\n<li>Resources at the start of the turn<\/li>\r\n<li>Building placed<\/li>\r\n<li>Upgrades bought<\/li>\r\n<li>Colonist deaths<\/li>\r\n<li>Game Win\/Game Loss<\/li>\r\n<li>&#8220;Upgrade&#8221; Button Clicked<\/li>\r\n<\/ul>\r\n<p>We were then able to analyze this data and draw conclusions from it. We then use this data to improve our game!<\/p>\r\n<\/div><\/div>\r\n<h3>Initial Playtesting<\/h3>\r\n<p>After we finished our initial coded version of our game, we hosted it on <a href=\"http:\/\/cev.vishald.com\">cev.vishald.com<\/a>, and sent it off to a few of our friends and roommates for final testing. <em>Note that cev.vishald.com now just redirects you to our released version of the game.<\/em>\u00a0<\/p>\r\n<figure id=\"attachment_2934\" aria-describedby=\"caption-attachment-2934\" style=\"width: 340px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Playtesting-1.jpg\"><img loading=\"lazy\" class=\"wp-image-2934\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Playtesting-1.jpg\" alt=\"CEV-1 Playtesting 1\" width=\"350\" height=\"416\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Playtesting-1.jpg 499w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Playtesting-1-252x300.jpg 252w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/a><figcaption id=\"caption-attachment-2934\" class=\"wp-caption-text\">One of our roommates playtesting the initial version of CEV 1.<\/figcaption><\/figure>\r\n<figure id=\"attachment_2935\" aria-describedby=\"caption-attachment-2935\" style=\"width: 340px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Playtesting-2.jpg\"><img loading=\"lazy\" class=\"wp-image-2935\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Playtesting-2.jpg\" alt=\"CEV-1 Playtesting 2\" width=\"350\" height=\"466\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Playtesting-2.jpg 445w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/CEV-1-Playtesting-2-225x300.jpg 225w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/a><figcaption id=\"caption-attachment-2935\" class=\"wp-caption-text\">Another one of our friends playtesting CEV 1.<\/figcaption><\/figure>\r\n<p>We fixed a couple bugs and made a few QoL changes that our playtesters suggested.<\/p>\r\n<p>Now that our game didn&#8217;t have any more bugs caught by the playtesters, it was time to release this to the public and see what happens.<\/p>\r\n<h3>Analytics Phase<\/h3>\r\n<h4>Analysis Round 1<\/h4>\r\n<p>We released our game on <a href=\"https:\/\/sirknightj.itch.io\/cev-1\">itch.io<\/a> on the evening of May 16, 2022. On the morning of May 19th, itch.io&#8217;s analytics said we had:<\/p>\r\n<ul>\r\n<li>19.1k impressions<\/li>\r\n<li>699 views<\/li>\r\n<li>530 plays<\/li>\r\n<\/ul>\r\n<p>We were pretty shocked that our game made it that far. We even had another game developer tweet about our game! We did not expect to get any type of recognition for this.<\/p>\r\n<blockquote class=\"twitter-tweet\">\r\n<p dir=\"ltr\" lang=\"en\">CEV-1 is a very simple (yet super engaging) city builder.<br \/><br \/>I wish it was a bit more difficult, but I had a great time with it.<a href=\"https:\/\/t.co\/ubBfA4CnzM\">https:\/\/t.co\/ubBfA4CnzM<\/a> <a href=\"https:\/\/t.co\/uXtMxizJKi\">pic.twitter.com\/uXtMxizJKi<\/a><\/p>\r\n\u2014 Ludipe (@Ludipe) <a href=\"https:\/\/twitter.com\/Ludipe\/status\/1526971870603509762?ref_src=twsrc%5Etfw\">May 18, 2022<\/a><\/blockquote>\r\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\r\n<p>Here&#8217;s what our turn retention graph looked like a few days later:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image4.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2939 size-full\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image4.png\" alt=\"image4\" width=\"507\" height=\"389\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image4.png 507w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image4-300x230.png 300w\" sizes=\"(max-width: 507px) 100vw, 507px\" \/><\/a><\/p>\r\n<p>We noticed that we had huge dropoffs on turns 1, 6, and 10, so we looked at those turns and investigated why players are leaving.<\/p>\r\n<div class=\"su-accordion su-u-trim\"><div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 1<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Investigating Turn 1<\/h4>\r\n<figure id=\"attachment_2940\" aria-describedby=\"caption-attachment-2940\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-1.png\"><img loading=\"lazy\" class=\"wp-image-2940\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-1-1024x573.png\" alt=\"image9\" width=\"700\" height=\"392\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-1-1024x573.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-1-300x168.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-1-768x430.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image9-1.png 1275w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2940\" class=\"wp-caption-text\">What our turn 0 looked like previously<\/figcaption><\/figure>\r\n<figure id=\"attachment_2941\" aria-describedby=\"caption-attachment-2941\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1.png\"><img loading=\"lazy\" class=\"wp-image-2941\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1-1024x575.png\" alt=\"image10\" width=\"700\" height=\"393\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1-1024x575.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1-300x168.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1-768x431.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image10-1.png 1272w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2941\" class=\"wp-caption-text\">What our turn 1 looked like previously.<\/figcaption><\/figure>\r\n<p>Looking at those turns, we noticed that there was a LOT of text for the player to read through. We hypothesized that players were overwhelmed by the amount of text they had to read through, and got a bad first impression. We attempted to fix this by reducing the amount of text the player has to read through, and removed turn 0. We initially had turn 0 in place in order to split up the amount of text onto two separate screens.<\/p>\r\n<figure id=\"attachment_2942\" aria-describedby=\"caption-attachment-2942\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image16-1.png\"><img loading=\"lazy\" class=\"wp-image-2942\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image16-1-1024x575.png\" alt=\"image16\" width=\"700\" height=\"393\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image16-1-1024x575.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image16-1-300x168.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image16-1-768x431.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image16-1.png 1274w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2942\" class=\"wp-caption-text\">What our new turn 1 looked like. We combined the text from the old turns 0 and 1 and shortened it to this.<\/figcaption><\/figure>\r\n<p>We also made the blue a bit brighter, and also updated the resource visualization.<\/p>\r\n<p>Some feedback that we received was that players were confused at the amount of reserves they had. So, we changed the bar height to represent the reserves, and we added an arrow to indicate the bar&#8217;s height next turn.<\/p>\r\n<p>Another minor change we made was hiding the &#8220;Next Month&#8221; button until after the player places down the first well.<\/p>\r\n<\/div><\/div> <div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 6<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Investigating Turn 6<\/h4>\r\n<p>We figured players were overwhelmed with the amount of text again, so we just shortened and simplified the text.<\/p>\r\n<\/div><\/div> <div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Turn 10<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Investigating Turn 10<\/h4>\r\n<p>We investigated the amount of players that quit on turn 10, and noticed that many of those that quit did not even click on the Upgrades button to view the upgrade tree!<\/p>\r\n<p>(We made it so that the player must view the tree before moving onto turn 11.)<\/p>\r\n<p>Therefore, we made the button animated to make it very obvious that the player should click it.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image61.gif\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2943\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image61.gif\" alt=\"image61\" width=\"280\" height=\"139\" \/><\/a><\/p>\r\n<\/div><\/div><\/div>\r\n<p>We updated our game page with these changes (and a few other QoL changes everywhere) in hopes of increasing overall player retention!<\/p>\r\n<ul>\r\n<li>Removed the &#8220;placed building requirements&#8221; before advancing to the next turn, allowing more freedom in the tutorial<\/li>\r\n<\/ul>\r\n<h4>Analysis Round 2<\/h4>\r\n<p>We took a look at the turn retention graph and here&#8217;s what we saw:<a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image48.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2944\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image48-1024x415.png\" alt=\"image48\" width=\"700\" height=\"284\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image48-1024x415.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image48-300x122.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image48-768x311.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image48.png 1395w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>Note that since we removed turn 0, it&#8217;s actually offset by 1 turn. So, iteration 2 should be &#8220;shifted over&#8221; 1 turn to the right.<\/p>\r\n<p>We see that the turn 1 dropoff is fixed, however, the turn 6 and 10 dropoffs are still there, and even bigger. We created a replay tool in order to view what our players were doing. We filtered out players who quit on those turns and viewed their replays.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image50.gif\"><img loading=\"lazy\" class=\"aligncenter wp-image-2945 size-full\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image50.gif\" alt=\"image50\" width=\"604\" height=\"604\" \/><\/a><\/p>\r\n<p>We see that this player sold the mine and all their farms for whatever reason.<\/p>\r\n<p>It wasn&#8217;t just this one single player. Take a look at the buildings demolished chart:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image47.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2957\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image47.png\" alt=\"image47\" width=\"500\" height=\"298\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image47.png 667w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image47-300x179.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a>We see that there players overall are selling a ton of buildings being sold on turn 6. There is pretty much no reason to demolish a building during the early turns unless the player is <em>purposefully<\/em> trying to lose.<\/p>\r\n<p>Once we realized this, we needed to figure out a way to stop players from softlocking themselves in the early game. We had two ideas:<\/p>\r\n<ul>\r\n<li>Disallow selling up until turn 10.<\/li>\r\n<li>Make it so that all selling grants a full refund.<\/li>\r\n<\/ul>\r\n<p>We weren&#8217;t sure which one was best. When in doubt, perform an A\/B test!<\/p>\r\n<p>Essentially, we assign every player a random number from 1-3, and do something different based on the number:<\/p>\r\n<ul>\r\n<li>A (1) &#8211; Control Group: Selling always enabled, full refund iff selling on same turn<\/li>\r\n<li>B (2) &#8211; AlwaysRefund Group: Selling always enabled, full refund always<\/li>\r\n<li>C (3) &#8211; DisableEarlySelling Group: Same rules as Control, no selling until turn 10<\/li>\r\n<\/ul>\r\n<p>With that, we updated our game and waited for the results to come in.<\/p>\r\n<ul>\r\n<li>Also made some more QoL changes such as adding building multi-select, and showed the controls to flip and rotate when dragging buildings around.<\/li>\r\n<li>Also updated the color scheme of the upgrades tree for accessibility reasons<\/li>\r\n<\/ul>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Tech Tree Colors<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<figure id=\"attachment_2947\" aria-describedby=\"caption-attachment-2947\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image54.png\"><img loading=\"lazy\" class=\"wp-image-2947\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image54-1024x574.png\" alt=\"image54\" width=\"700\" height=\"392\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image54-1024x574.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image54-300x168.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image54-768x430.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image54.png 1124w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2947\" class=\"wp-caption-text\">Applying a deuteranopia color-blind filter to our game to see what it looks like. It&#8217;s pretty bad.<\/figcaption><\/figure>\r\n<p>&nbsp;<\/p>\r\n<figure id=\"attachment_2948\" aria-describedby=\"caption-attachment-2948\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image63.png\"><img loading=\"lazy\" class=\"wp-image-2948\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image63-1024x570.png\" alt=\"image63\" width=\"700\" height=\"390\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image63-1024x570.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image63-300x167.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image63-768x428.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image63.png 1131w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2948\" class=\"wp-caption-text\">Tech tree with updated colors.<\/figcaption><\/figure>\r\n<\/div><\/div>\r\n<h4>Analysis Round 3<\/h4>\r\n<p>Now that the results from round 2 have come in, it&#8217;s time to see which of the three groups turned out better:<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image50.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2958\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image50.png\" alt=\"image50\" width=\"700\" height=\"360\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image50.png 954w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image50-300x154.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image50-768x395.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a>We see that overall, C (refund iff on the same turn, but no selling until turn 10) performed the best. We attribute the initial drop between minutes 2 and 4 due to noise. We only had 78 players in that sample size. B surprisingly did not perform as bad as we initially thought. We predicted that B would perform the worst, as it would make the game &#8220;too easy&#8221; and thus, players would finish sooner and quit sooner. The data does not suggest that however.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image52.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2959\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image52.png\" alt=\"image52\" width=\"700\" height=\"288\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image52.png 943w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image52-300x123.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image52-768x316.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a>Taking a look at the turn graph, we see that the turn 6 dropoffs are at least a lot smaller. The turn 10 dropoffs are still present, however. (<i>Note that iterations 2 onwards are offset by 1 turn due to the deletion of turn 0.<\/i>)<\/p>\r\n<p>We needed to figure out why players were still leaving on turn 10 despite us making the button animated and visible.<\/p>\r\n<p>We scratched our heads and handed our game out to more friends until one of them discovered something that we were never going to discover on our own:<\/p>\r\n<figure id=\"attachment_2960\" aria-describedby=\"caption-attachment-2960\" style=\"width: 290px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image73.png\"><img loading=\"lazy\" class=\"wp-image-2960\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image73.png\" alt=\"image73\" width=\"300\" height=\"400\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image73.png 472w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image73-225x300.png 225w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2960\" class=\"wp-caption-text\">One of our friends discovered why players were leaving on turn 10 without clicking on the Upgrades button!<\/figcaption><\/figure>\r\n<p>Turns out that the button was actually blocked by itch.io&#8217;s overlay on some specific screen sizes. That&#8217;s why players were still leaving without clicking on the button even though it&#8217;s animated and stuff.<\/p>\r\n<p>We cannot do anything about the overlay unfortunately (it&#8217;s an itch.io limitation). So, what we did was just move the Upgrades button to the left.<\/p>\r\n<p>The other chunk of players that left on this turn viewed the Upgrade Tree, but never purchased anything. Our data showed that none of the players who purchased an upgrade quit on the same turn. So, we just needed a way to get players to actually purchase an upgrade.<\/p>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Tech Tree Changes<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Animations for Purchasable Upgrades<\/h4>\r\n<p>We added an animation around the border of the upgrades the player is able to purchase.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image60.gif\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-2961\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image60.gif\" alt=\"image60\" width=\"445\" height=\"160\" \/><\/a>Our hypothesis is that by adding in this animation, players would be drawn to look at these upgrades, over the others. It also gives players a way to differentiate between upgrades they can purchase right now.<\/p>\r\n<figure id=\"attachment_2963\" aria-describedby=\"caption-attachment-2963\" style=\"width: 1044px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image74.gif\"><img loading=\"lazy\" class=\"wp-image-2963 size-full\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image74.gif\" alt=\"image74\" width=\"1054\" height=\"593\" \/><\/a><figcaption id=\"caption-attachment-2963\" class=\"wp-caption-text\">What the Upgrade Tree looks like with this change.<\/figcaption><\/figure>\r\n<\/div><\/div>\r\n<p>We actually wanted to do a bit more with the Upgrades Tree, so we decided to run an A\/B test to see our new upgrade tree.<\/p>\r\n<ul>\r\n<li>A &#8211; Old tree with border animation for purchasable upgrades<\/li>\r\n<li>B &#8211; Redesigned tree featuring slightly different colors, a legend, larger science display, updated text, different cursor icons when hovering over unpurchaseable upgrades, and more!<\/li>\r\n<\/ul>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>A\/B Tech Tree Comparison<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<figure id=\"attachment_2966\" aria-describedby=\"caption-attachment-2966\" style=\"width: 1014px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3.gif\"><img loading=\"lazy\" class=\"wp-image-2966 size-large\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-1024x576.gif\" alt=\"image3\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-1024x576.gif 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-300x169.gif 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image3-768x432.gif 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-2966\" class=\"wp-caption-text\">The Upgrades Tree shown to experimental group A.<\/figcaption><\/figure>\r\n<p>&nbsp;<\/p>\r\n<figure id=\"attachment_2967\" aria-describedby=\"caption-attachment-2967\" style=\"width: 1014px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image7.gif\"><img loading=\"lazy\" class=\"wp-image-2967 size-large\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image7-1024x576.gif\" alt=\"image7\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image7-1024x576.gif 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image7-300x169.gif 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image7-768x432.gif 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-2967\" class=\"wp-caption-text\">The Upgrades Tree shown to experimental group B.<\/figcaption><\/figure>\r\n<\/div><\/div>\r\n<h4>Analysis Round 4<\/h4>\r\n<p>Time to see which Upgrade Tree players preferred:<\/p>\r\n<figure id=\"attachment_2970\" aria-describedby=\"caption-attachment-2970\" style=\"width: 690px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image2-1.png\"><img loading=\"lazy\" class=\"wp-image-2970\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image2-1-1024x525.png\" alt=\"image2\" width=\"700\" height=\"359\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image2-1-1024x525.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image2-1-300x154.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image2-1-768x394.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image2-1.png 1481w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption id=\"caption-attachment-2970\" class=\"wp-caption-text\">Player retention graph between the two experimental groups. C: Upgrade Tree A. D: Upgrade Tree B.<\/figcaption><\/figure>\r\n<p>The data suggests that the upgrades tree visuals makes no difference in playtime, which we found really surprising.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image11.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2971\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image11-1024x530.png\" alt=\"image11\" width=\"700\" height=\"362\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image11-1024x530.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image11-300x155.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image11-768x397.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image11.png 1425w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>Zooming out, it appears to make an impact in the late game. However, it shouldn&#8217;t really have an impact there (it should really only impact the early game), so we attribute this to noise.<\/p>\r\n<p>We did choose to go with Upgrade Tree B because we think it looks nicer, even if it doesn&#8217;t make players play longer.<\/p>\r\n<p>Thus far, all of our efforts have went to making more players get to the mid\/late-game stage. Time to focus on the mid\/late-game at least a little bit. We wanted to verify that having population growth be %-based is a good idea. So far, the population growth was always %-based. To confirm that this was the best, we performed another A\/B test:<\/p>\r\n<ul>\r\n<li>A &#8211; Population growth is %-based<\/li>\r\n<li>B &#8211; Population growth is hard-coded per turn<\/li>\r\n<\/ul>\r\n<p>Our hypothesis is that by having the population growth be %-based, players who struggle in the early game will have an easier time in the late game, and players who excel in the early game will have a harder time in the late game. We figure that this will make the game more enjoyable, and thus, players will play for a longer amount of time.<\/p>\r\n<h4>Analysis Round 5<\/h4>\r\n<p>From our data, we see that in the late game, the adaptive gameplay group (A) held onto players much better than the hard-coded group (B). It&#8217;s likely that group B&#8217;s players finished more quickly than A&#8217;s players on average, as players who excel at these types of games find it too easy, and players who struggled early on find it hard to catch up.<\/p>\r\n<p><a href=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image30.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-2972\" src=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image30-1024x529.png\" alt=\"image30\" width=\"700\" height=\"362\" srcset=\"https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image30-1024x529.png 1024w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image30-300x155.png 300w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image30-768x397.png 768w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image30-1536x793.png 1536w, https:\/\/www.sirknightj.com\/blog\/wp-content\/uploads\/2022\/06\/image30.png 1940w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\r\n<p>The first 20ish minutes, even though group B performed better than A, we attribute that to noise. The early games are pretty much identical since adaptive triggers have not taken much effect yet. We see in the mid-late game, however, this greatly improved audience retention.<\/p>\r\n<p>As such, we kept the population scaling percentage-based in order to keep our players engaged longer.<\/p>\r\n<div class=\"su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Featured!<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\r\n<h4>Here&#8217;s just a showcase of some places that CEV-1 was featured!<\/h4>\r\n<p><iframe loading=\"lazy\" title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/IzwAwAi4k0s\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\r\n<p>&nbsp;<\/p>\r\n<p><iframe loading=\"lazy\" title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/XsS-KxmkOOM\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\r\n<p>Featured on a Japanese Gaming Blog: <a href=\"http:\/\/blog.livedoor.jp\/lkrejg\/archives\/66185117.html\">http:\/\/blog.livedoor.jp\/lkrejg\/archives\/66185117.html<\/a><\/p>\r\n<\/div><\/div>\r\n<p><strong>GitHub Repository<\/strong>: <a href=\"https:\/\/github.com\/sirknightj\/CEV-1\">https:\/\/github.com\/sirknightj\/CEV-1<\/a><\/p>\r\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a behind-the-scenes look at how we developed the game CEV-1! I&#8217;ve always loved reading through how other games are developed, so we&#8217;re excited to share our development process with you!<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[51],"tags":[],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/posts\/2883"}],"collection":[{"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/comments?post=2883"}],"version-history":[{"count":34,"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/posts\/2883\/revisions"}],"predecessor-version":[{"id":3007,"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/posts\/2883\/revisions\/3007"}],"wp:attachment":[{"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/media?parent=2883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/categories?post=2883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sirknightj.com\/blog\/wp-json\/wp\/v2\/tags?post=2883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}