{"componentChunkName":"component---src-templates-blog-post-js","path":"/your-first-ten-games-2/","result":{"data":{"mdx":{"id":"5f7eeb46-0f84-576e-93ca-60d027fef315","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Your First Ten Games Will Suck, #1\",\n  \"subtitle\": \"How to get better at making games through deliberate practice, Part I\",\n  \"date\": \"2022-12-06T11:32:04.220Z\",\n  \"description\": \"How to get better at making games through deliberate practice, Part I\",\n  \"twitterImageUrl\": \"https://jasont.co/violin.jpg\",\n  \"previewImageUrl\": \"violin.jpg\",\n  \"tags\": \"do-not-show\",\n  \"readingTime\": 8\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1200px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/e56ae8ec4353401d520db687d3b7a39d/b3058/violin.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"66.66666666666666%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMCBP/EABQBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAdS7w0UJ/8QAGhAAAgMBAQAAAAAAAAAAAAAAAAECAxETFP/aAAgBAQABBQJ3ZH1Mqn0gYhLF/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQMBAT8BJ//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABkQAAIDAQAAAAAAAAAAAAAAAAARARAyIf/aAAgBAQAGPwJqTI1WYOH/xAAbEAEAAgMBAQAAAAAAAAAAAAABABEhUXExQf/aAAgBAQABPyGyt06g4UDrG8JuoZ+S/DRyEBgaJ//aAAwDAQACAAMAAAAQ6A//xAAWEQEBAQAAAAAAAAAAAAAAAAABADH/2gAIAQMBAT8QQaTf/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8QRn//xAAcEAEBAQADAAMAAAAAAAAAAAABEQAhMUFRYZH/2gAIAQEAAT8QnPGoyfupBr2kxdgEvhT00CIT73DZHkTCUF0EDf/Z')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"image of violin that illustrates the idea of practice\",\n    \"title\": \"image of violin that illustrates the idea of practice\",\n    \"src\": \"/static/e56ae8ec4353401d520db687d3b7a39d/e5166/violin.jpg\",\n    \"srcSet\": [\"/static/e56ae8ec4353401d520db687d3b7a39d/f93b5/violin.jpg 300w\", \"/static/e56ae8ec4353401d520db687d3b7a39d/b4294/violin.jpg 600w\", \"/static/e56ae8ec4353401d520db687d3b7a39d/e5166/violin.jpg 1200w\", \"/static/e56ae8ec4353401d520db687d3b7a39d/b3058/violin.jpg 1296w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", {\n    id: \"1\"\n  }, \"Facing the cold, hard truth.\"), mdx(\"p\", null, \"Like many other indie game dev dreamers, you want to make a living by making games all day.\"), mdx(\"p\", null, \"But also like many other indie game dev dreamers, \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"you're not good enough yet\"), \".\"), mdx(\"p\", null, \"You haven't learned how to make \\\"hook-y\\\" games that charm, engage, and delight people.\"), mdx(\"p\", null, \"In short: you suck at making games.\"), mdx(\"p\", null, \"To make matters worse, you might be severely strapped for time. You might work a full-time job, while still investing your limited free time into improving your game development skills.\"), mdx(\"p\", null, \"But progress is slow, and some days you don't know if you're getting better, or if you're wasting your time on a silly hobby.\"), mdx(\"h2\", {\n    id: \"2\"\n  }, \"The dream.\"), mdx(\"p\", null, \"The dream is to make \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"financially viable\"), \" games, which I define in a very specific way:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"A game that is eye-catching enough for players to yank out their wallets.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"A game that is engaging enough for players to spend their limited free time playing for entertainment value.\")), mdx(\"p\", null, \"Basically, the dream is to be like \", mdx(OpenInNewTab, {\n    href: \"https://sokpop.itch.io/\",\n    mdxType: \"OpenInNewTab\"\n  }, \"Sokpop\"), \". Or \", mdx(OpenInNewTab, {\n    href: \"https://punkcake.itch.io/\",\n    mdxType: \"OpenInNewTab\"\n  }, \"Punkcake\"), \". The kind of developer who has their head on straight, and knows how to make good games, cold.\"), mdx(\"p\", null, \"If you knew what they knew, you'd be satisfied\\u2014irrespective of whether you can make money doing it. To you, the ability to turn a black box into captivating entertainment is pure magic.\"), mdx(\"p\", null, \"But how do you get there? What skills do you need to develop to make games as good as theirs?\"), mdx(\"p\", null, \"If a coach could tell you exactly what you needed to work on every day, you could let daily habits compound over time, and transform yourself into the indie game developer that you want to be.\"), mdx(\"p\", null, \"But how?\"), mdx(\"h2\", {\n    id: \"3\"\n  }, \"The difficult answer.\"), mdx(\"p\", null, \"The solution is far from easy, but it's to focus on \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"deliberate practice\"), \".\"), mdx(\"p\", null, \"And in the rest of this blog post, I discuss three principles of how deliberate practice applies to the craft of game development:\"), mdx(\"blockquote\", null, mdx(\"ol\", null, mdx(\"li\", null, mdx(OpenInNewTab, {\n    href: \"#4\",\n    mdxType: \"OpenInNewTab\"\n  }, \"What we mean by \\\"system\\\".\")), mdx(\"li\", null, mdx(OpenInNewTab, {\n    href: \"#5\",\n    mdxType: \"OpenInNewTab\"\n  }, \"Decompose your system into parts.\")), mdx(\"li\", null, mdx(OpenInNewTab, {\n    href: \"#6\",\n    mdxType: \"OpenInNewTab\"\n  }, \"Create a \\\"first ten games\\\" skill roadmap.\")))), mdx(\"p\", null, \"Read on to learn more \\uD83D\\uDC47\"), mdx(\"h2\", {\n    id: \"4\"\n  }, \"1. What we mean by \\\"system\\\".\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"808px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/0753b09dd904e16b30562c9512514f10/b2462/steps.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"61%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAECAwX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB6cWoyEV//8QAFxABAAMAAAAAAAAAAAAAAAAAEAESMf/aAAgBAQABBQIszv8A/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAEhMRBRgdH/2gAIAQEAAT8hdQXLT6NdZSXh/9oADAMBAAIAAwAAABCID//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABYRAAMAAAAAAAAAAAAAAAAAABARIf/aAAgBAgEBPxBUf//EABwQAQACAwADAAAAAAAAAAAAAAEAESFBUTFxsf/aAAgBAQABPxCyrA6Ug0cLsVfognCTviLGA0gZ4fpP/9k=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"steps\",\n    \"title\": \"steps\",\n    \"src\": \"/static/0753b09dd904e16b30562c9512514f10/b2462/steps.jpg\",\n    \"srcSet\": [\"/static/0753b09dd904e16b30562c9512514f10/f93b5/steps.jpg 300w\", \"/static/0753b09dd904e16b30562c9512514f10/b4294/steps.jpg 600w\", \"/static/0753b09dd904e16b30562c9512514f10/b2462/steps.jpg 808w\"],\n    \"sizes\": \"(max-width: 808px) 100vw, 808px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"Think of any goal in your life.\"), mdx(\"p\", null, \"It might be:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"I want to make 1 million dollars.\"))), mdx(\"p\", null, \"Or maybe something more down-to-earth, such as:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"I want to cook a gourmet meal at home for a dinner party.\"))), mdx(\"p\", null, \"Or coming back to game development:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"I want to make and publish a game that's \\\"good\\\" enough to be financially viable on a storefront such as Steam.\"))), mdx(\"p\", null, \"For any goal, the goal defines the output. But the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"system\"), \" gets you there.\"), mdx(\"p\", null, \"Consider how you might achieve the goal of making 1 million dollars. You need to put something in, in order to get something out.\"), mdx(\"p\", null, \"In the case of making money, you might put in \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"resources\"), \", such as your time, money, and skills:\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1200px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/9acd6ea2cce1ce5a7e19eba825ba23d6/21482/io5.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"29.333333333333332%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAtElEQVQY01WQ2Q6CMBRE+///ZwymFkV9g4JSui8OvaHReZp7cpdpWSkl51yq0mGa8j9BmaqIsxijD0FrsyoVQvDeUx+Mr6VzjQQQGnPOYZBhYNs0F3134XJerHVYjF3EYdBka6sxVqntdO5EfyOyX35/1uHxug/PaZLoxy0YcApSd2ljzLK8x1FyLvhVTHIG3y8jDmJga0wJhkIiLYmOEAGL9c3GWgyy/Z+OD2imlY0Q/BXIF4z4Xk+Q5UAXAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"money making process\",\n    \"title\": \"money making process\",\n    \"src\": \"/static/9acd6ea2cce1ce5a7e19eba825ba23d6/c1b63/io5.png\",\n    \"srcSet\": [\"/static/9acd6ea2cce1ce5a7e19eba825ba23d6/5a46d/io5.png 300w\", \"/static/9acd6ea2cce1ce5a7e19eba825ba23d6/0a47e/io5.png 600w\", \"/static/9acd6ea2cce1ce5a7e19eba825ba23d6/c1b63/io5.png 1200w\", \"/static/9acd6ea2cce1ce5a7e19eba825ba23d6/21482/io5.png 1350w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"It's the same idea for cooking, where you transform raw ingredients into a delicious meal.\"), mdx(\"p\", null, \"Where the whole is greater than the sum of its parts:\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1200px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/96d8224c5b4d75dfd51da3816af8c3d0/087e3/io8.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"28.333333333333332%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAxUlEQVQY03VQXQ+CMBDj//84Y3yWCAzjN0EY247bbnZMjA/ah3G0t7ZZISIxRkkfyWf8BSghhM9yngvr3DhqY4yeJuPczAwZ2jxjZJz5giMC6RwNwwgSdzEXYPdldaibulFJYCZmYywGmHofCC7eLwG2btrNdnc6X4ZRI7WA8Oi6sjwodSQieBlrtZ6890SzBMEv+L5/IqOq1fV2R0yjWpRNybBEZwBL/K4tS2um1DCk2tj7Apo7JEt+pvVV4h/Awq/II5gXbyRcxvmvpgMAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"cooking process\",\n    \"title\": \"cooking process\",\n    \"src\": \"/static/96d8224c5b4d75dfd51da3816af8c3d0/c1b63/io8.png\",\n    \"srcSet\": [\"/static/96d8224c5b4d75dfd51da3816af8c3d0/5a46d/io8.png 300w\", \"/static/96d8224c5b4d75dfd51da3816af8c3d0/0a47e/io8.png 600w\", \"/static/96d8224c5b4d75dfd51da3816af8c3d0/c1b63/io8.png 1200w\", \"/static/96d8224c5b4d75dfd51da3816af8c3d0/087e3/io8.png 1575w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"Or making games:\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1200px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/ddf644b63553cea5a8c661d69baff5be/aa440/io7.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"29.666666666666668%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAyklEQVQY03VQ0Q7CIAz0/39PE6fLpm7OmDicZhQohc0DdU/KQ3Nc79qD1TzP0zQt9edBK8a4yBa8EhHnnNYUQgAGhZ73HhfUtwgCgOdzbNvOGAsvmGQmY5rmvC+rYXhAzSJoey/jqEOIDCSByCh1r+rDerM9Ne3tphxzMltr1X1ou4uGxFqDFJRSMKe1YKxzRNRdrsWurOpjUez7XvmcMcXG9BwmYkmOPaV9IswMEgwGxRh0Gk+fRO/N+QPS01D/fVieK6gRvi8G/wK1gV0yrv+XCgAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"making games\",\n    \"title\": \"making games\",\n    \"src\": \"/static/ddf644b63553cea5a8c661d69baff5be/c1b63/io7.png\",\n    \"srcSet\": [\"/static/ddf644b63553cea5a8c661d69baff5be/5a46d/io7.png 300w\", \"/static/ddf644b63553cea5a8c661d69baff5be/0a47e/io7.png 600w\", \"/static/ddf644b63553cea5a8c661d69baff5be/c1b63/io7.png 1200w\", \"/static/ddf644b63553cea5a8c661d69baff5be/aa440/io7.png 1500w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"In all 3 cases, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"that systemic black box in the middle\"), \" is a mystery. But we can think of the black box like a computer program. \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"A process\"), \".\"), mdx(\"p\", null, \"What are the steps of the process that transform input A, into output B?\"), mdx(\"h2\", {\n    id: \"5\"\n  }, \"2. Decompose your system into parts.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1200px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/eed45a55bcdc52ec54ccd1a0bb6ca914/c58a3/sushi.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"66.66666666666666%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQD/2gAMAwEAAhADEAAAAea+LCk2kf/EABoQAAIDAQEAAAAAAAAAAAAAAAIDAAEiEhP/2gAIAQEAAQUCSA+hq6u1DF7i9kKhOv/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAECAQE/AVf/xAAcEAADAAEFAAAAAAAAAAAAAAAAARECIzEyQYH/2gAIAQEABj8C1F4ctkKZF7HSn//EABkQAQADAQEAAAAAAAAAAAAAAAEAESExQf/aAAgBAQABPyG4GaMhnpJhcCU2zZ0qB9j8Q7RHCDFOE//aAAwDAQACAAMAAAAQlz//xAAWEQEBAQAAAAAAAAAAAAAAAAABEBH/2gAIAQMBAT8QAyf/xAAWEQEBAQAAAAAAAAAAAAAAAAABEBH/2gAIAQIBAT8QV2P/xAAbEAEBAAIDAQAAAAAAAAAAAAABEQAhMVFhkf/aAAgBAQABPxBI0hSVe3rNME48R4PDI2tVrmuSVDehhdmRgNkB3N/cOURNzD1M/9k=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"sushi\",\n    \"title\": \"sushi\",\n    \"src\": \"/static/eed45a55bcdc52ec54ccd1a0bb6ca914/e5166/sushi.jpg\",\n    \"srcSet\": [\"/static/eed45a55bcdc52ec54ccd1a0bb6ca914/f93b5/sushi.jpg 300w\", \"/static/eed45a55bcdc52ec54ccd1a0bb6ca914/b4294/sushi.jpg 600w\", \"/static/eed45a55bcdc52ec54ccd1a0bb6ca914/e5166/sushi.jpg 1200w\", \"/static/eed45a55bcdc52ec54ccd1a0bb6ca914/c58a3/sushi.jpg 1500w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"In the film \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Jiro Dreams of Sushi\"), \", the titular character Jiro breaks the craft of sushi-making into distinct sub-skills.\"), mdx(\"p\", null, \"He then systematically trains his apprentices on each sub-skill through years of hard work.\"), mdx(\"p\", null, \"We should do the same.\"), mdx(\"p\", null, \"We should systematically break our game dev black box into its constituent sub-skills, and improve each sub-skill in a methodical fashion.\"), mdx(\"p\", null, \"But what exactly are the constituent sub-skills? What are all the skills required to create a game from zero to launch?\"), mdx(\"p\", null, \"Everyone has their own breakdown, but I split mine into 2 sets of skills.\"), mdx(\"p\", null, \"One for \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"pre\"), \"-production, where you are discovering your game's design and scope:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Productivity\"), \". Manage your time, energy, and attention in a way that affords you consistent free time to work on your game.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Ideation\"), \". Brainstorm game ideas, and choose a \\\"hook-y\\\" idea that inspires you enough to explore.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Game design\"), \". Define the backstory, goal, entities, setup, core loop, and victory or end conditions of your game. The best game design is iterative, so any initial design undergoes many iterations through playtesting.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Closing the loop\"), \". Implement a playable skeleton of your game design, prototyping any unknowns (art direction, data formats, 3D math, skeletal animation, etc.) along the way.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Playtesting\"), \". Test your game on actual players to get feedback on whether any parts are confusing or unplayable. This builds intuition and is arguably the most important skill, but you need to make a game to playtest in the first place.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Marketing\"), \". Share GIFs of your game while it\\u2019s under development. This tells you whether your game is charming enough to grab players\\u2019 attention.\")), mdx(\"p\", null, \"And another for \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"production\"), \", where the game's design is established and you are getting down to brass tax:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Level design\"), \". Expand on variations of your core game loop, through the addition of levels, items, maps, or the like.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Art production\"), \". Flesh out art assets for previously blocked-out game entities.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Game juice\"), \". Polish the audiovisual feedback of your game to ensure it feels good to play.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Sound and music\"), \". Add sound effects and music to your game to set your game\\u2019s mood and tone.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Bug fixing\"), \". Fix bugs in your game\\u2019s code.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"UI\"), \". Add start menus, select screens, and in-game UI.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Launch marketing\"), \". Generate pre-launch buzz. Get on those Steam wishlists, ask folks to sign up for your email list, fill out landing pages on itch.io or Steam.\")), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Whew!\"), \" If you've gone through this process \", mdx(OpenInNewTab, {\n    href: \"https://jasont.co/finishing-games/\",\n    mdxType: \"OpenInNewTab\"\n  }, \"at least once\"), \", you'll know that finishing anything at all is a huge achievement.\"), mdx(\"p\", null, \"This is a big reason why game dev is so difficult. Plainly, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"there's a lot of shit to get good at!\"), \" And if you aren't great at certain parts of this process, then the game that you poop out at the end won't be very good.\"), mdx(\"p\", null, \"But therein lies the answer. (Poop analogies aside.) To make better games, you \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"improve\"), \" your system.\"), mdx(\"p\", null, \"From the skill map above, you identify your weak skills, and \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"improve\"), \" them with each game that you make. Ideally, focusing on one skill per game.\"), mdx(\"h2\", {\n    id: \"6\"\n  }, \"3. Create a \\\"first ten games\\\" skill roadmap.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1200px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/a5afa028162bc577abe5bfb836f24c7a/01ab0/roadmap.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"66.66666666666666%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABQAE/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/9oADAMBAAIQAxAAAAFQtrOaxSEX/8QAHBAAAQMFAAAAAAAAAAAAAAAAAgABIQMQEhMi/9oACAEBAAEFAjbkaU6rHkKGW//EABcRAAMBAAAAAAAAAAAAAAAAAAABAhH/2gAIAQMBAT8Blms//8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oACAECAQE/Aax//8QAHBAAAgICAwAAAAAAAAAAAAAAAAERMhChIUGB/9oACAEBAAY/AnCUjfPpfWLaJfZ//8QAGhABAAIDAQAAAAAAAAAAAAAAAQAhETFxUf/aAAgBAQABPyEuURRlvYydo4oEJGNvYq2bcn//2gAMAwEAAgADAAAAEFcv/8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAx/9oACAEDAQE/EEwknb//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREh/9oACAECAQE/EEusg//EABwQAQEAAgIDAAAAAAAAAAAAAAERAFEhQTGBkf/aAAgBAQABPxCtRPQG7xkWxIqS6MCVLUWElfGsJTWqh0K/cbzoJJIevWf/2Q==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"roadmap\",\n    \"title\": \"roadmap\",\n    \"src\": \"/static/a5afa028162bc577abe5bfb836f24c7a/e5166/roadmap.jpg\",\n    \"srcSet\": [\"/static/a5afa028162bc577abe5bfb836f24c7a/f93b5/roadmap.jpg 300w\", \"/static/a5afa028162bc577abe5bfb836f24c7a/b4294/roadmap.jpg 600w\", \"/static/a5afa028162bc577abe5bfb836f24c7a/e5166/roadmap.jpg 1200w\", \"/static/a5afa028162bc577abe5bfb836f24c7a/01ab0/roadmap.jpg 1300w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"Thus, if there ever were a ten-game career roadmap for an aspiring indie game professional (speaking for myself more than anyone), it might be the following:\"), mdx(\"h4\", null, \"Game 1: Run through the process.\"), mdx(\"p\", null, \"Run through the entire game dev process, and publish your first game on your digital storefront of choice, such as Steam or the App Store.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Skills to focus on\"), \": simply exercising all the required skills for the first time, even if you're not great at them.\"), mdx(\"h4\", null, \"Game 2: Understand scope and productivity.\"), mdx(\"p\", null, \"Run through the entire game dev process again.\"), mdx(\"p\", null, \"This time, measure how long each step of the process takes. This trains your understanding of the \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"scope\"), \" of game genres that you can tackle, as well your \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"personal productivity\"), \".\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Skills to focus on\"), \": development speed.\"), mdx(\"h4\", null, \"Game 3: Get fast enough to make a game in 1 month.\"), mdx(\"p\", null, \"What can you make in 1 month, given your time allocation, life commitments, existing skillset, and knowledge of game genres?\"), mdx(\"p\", null, \"Run through the process again, and try to make a game in 1 month.\"), mdx(\"p\", null, \"This teaches you to start \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"systematizing\"), \" your game dev process. If you ever want to explore all the fascinating game ideas in your head, you need game dev to not take forever.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Skills to focus on\"), \": development speed.\"), mdx(\"h4\", null, \"Game 4: Get fast enough to make a game in 48 hours.\"), mdx(\"p\", null, \"See if you can get so fast at making games that you can crank out a game in 48 hours. Enter a well-known game jam such as Ludum Dare or Global Game Jam, and make a game during the jam.\"), mdx(\"p\", null, \"At this point, the games you create don't need to be appealing (in terms of social media likes), nor do they need to be fun to play for hours on end.\"), mdx(\"p\", null, \"But they should be complete pieces of work that provide several minutes of solid gameplay.\"), mdx(\"p\", null, \"Creating a game within 48 hours is the ultimate test of your game creation skills. Once you've reached this speed, you can start to improve other sub-skills of your game dev process.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Skills to focus on\"), \": development speed.\"), mdx(\"h4\", null, \"Games 5 through 10: Deliberate practice.\"), mdx(\"p\", null, \"Once you are fast enough to compete in weekend game jams, the paths open up.\"), mdx(\"p\", null, \"You could:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Focus on game hooks\"), \". Choose your social media platform of choice (Twitter, Imgur, Reddit, TikTok, Mastodon). Make a game prototype, record a GIF, and see how many likes it gets on social media. The more likes, the \\\"hookier\\\" the game.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Experiment with game genres\"), \". Make a game in a genre that was previously too large in scope for you to tackle.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Make a game with 60 minutes of gameplay\"), \". You can make short games. But can you make long games? This trains your ability to create game content.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Make a game focused on art direction\"), \". Choose an art production method that you want to excel at\\u2014pixel art, procedural art, voxels, 3D, etc.\\u2014and make a game around that.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Make a game focused on mood and game feel\"), \". Get good at creating mood and emotion in your game. Learn how to juice up your games with sound effects, visual flair, music, and polish to achieve the game feel that you're going for.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Make a game focused on some element of game design\"), \". Try making a narrative-heavy game. Or a game focused on replayability (see roguelikes), or difficulty, or puzzles.\")), mdx(\"hr\", null), mdx(\"p\", null, \"Why does this matter?\"), mdx(\"p\", null, \"Because making 10,000 lackluster games won't help achieve your dream of making \", mdx(OpenInNewTab, {\n    href: \"#2\",\n    mdxType: \"OpenInNewTab\"\n  }, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"financially viable\")), \" games. \"), mdx(\"p\", null, \"Start small and make lots of stuff, yes, but practice the right way. And the \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"deliberate\"), \" way to practice involves recognizing that the skill of game dev is complex, and that you must tackle one piece of that skill with each game that you make.\"), mdx(\"h2\", {\n    id: \"7\"\n  }, \"Conclusion\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"People tend to approximate the product rather than attacking it in a realistic, true way at any elementary level \\u2014 regardless of how elementary \\u2014 but it must be entirely true and entirely real and entirely accurate.\")), mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"\\u2014Bill Evans (jazz pianist), from \", mdx(OpenInNewTab, {\n    href: \"https://www.youtube.com/watch?v=YEHWaGuurUk\",\n    mdxType: \"OpenInNewTab\"\n  }, \"The Universal Mind of Bill Evans\")))), mdx(\"p\", null, \"If you've read this far, thank you.\"), mdx(\"p\", null, \"Are you a solo game developer who's currently working on a game project? If you're still working on your first few game projects, I encourage you to run through this blog post's mental exercise. To recap:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Understand that game dev is a process that can be improved.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Decompose your process into its constituent parts.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Sysmatically improve your process by focusing one skill per game. Which skill are you focusing on for your current project?\")), mdx(EmailSignup, {\n    header: \"Did you like this post?\",\n    copy: mdx(React.Fragment, null, \"In the next part of this series on deliberate practice, I'll go over how to identify your weak skills, brainstorm strategies for improvement, and measure your improvement.\", mdx(\"br\", null), mdx(\"br\", null), \"I'll also go over how I'm applying these techniques to my current game project, \", mdx(\"em\", null, \"Pico Baseball\"), \"\\u2014a couch co-op game about baseball that is made in PICO-8.\", mdx(\"br\", null), mdx(\"br\", null), \"If you'd like, please sign up to be notified when I publish the next post:\"),\n    altColor: true,\n    urlPath: \"/your-first-ten-games-2\",\n    mdxType: \"EmailSignup\"\n  }), mdx(CommentThread, {\n    identifier: \"your-first-ten-games-2\",\n    title: \"How to get better at making games through deliberate practice\",\n    url: \"https://jasont.co/your-first-ten-games-2/\",\n    mdxType: \"CommentThread\"\n  }));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"Your First Ten Games Will Suck, #1","subtitle":"How to get better at making games through deliberate practice, Part I","date":"December 6th, 2022","description":"How to get better at making games through deliberate practice, Part I","twitterImageUrl":"https://jasont.co/violin.jpg","tags":"do-not-show","chapter":null,"readingTime":8,"showTableOfContents":null}}},"pageContext":{"slug":"/your-first-ten-games-2/","id":"5f7eeb46-0f84-576e-93ca-60d027fef315"}},"staticQueryHashes":["1349911471","1917884585","1939218498","2137166632","259269819","2853405624","3000541721","604457143","795205014"]}