tag:blogger.com,1999:blog-49048040094531763062024-03-05T09:47:20.997-08:00Blog of Flock of Dogsmclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.comBlogger55125tag:blogger.com,1999:blog-4904804009453176306.post-50708116641311805302021-03-17T18:55:00.006-07:002021-03-17T18:55:58.523-07:00post pre launch kickstarter<p> well, i'm nervous.</p><p><br /></p><p>the kickstarter page is now previewable and i have a pre-launch page.<br /></p><p><br /></p><p>i need to figure out details about shipping physical rewards, but there's almost something unreal about doing that research, like, "yeah right, max, who am i kidding? stop pretending you're going to have any backers."</p><p><br /></p><p>but also at the same time, i love my project about 10x more than any other i've seen on kickstarter, so why wouldn't all the backers back me? life is just full of contradictions!</p><p><br /></p><p>the other really big question mark for my kickstarter is the video. initially, i paid a friend of a friend to help me record a serious, sincere video. i don't love it. it's kinda boring. it makes me roll my eyes a little and feel slightly embarrassed. a week after recording it, i just invited a buddy over and we did a bunch of silly little "bits" on camera, including dressing up as a 9 year old, LA hipsters, and jumping in the pool. and recording my dog a lot. it was a lot of fun. you know, it's much more in the spirit of tiktok. you know, which the kids are into these days.</p><p><br /></p><p>so i have to decide between these two videos. or actually finish editing one/wait for my friend of a friend to finish editing. i may also need to record some more voice lines.</p><p><br /></p><p>then i want to make a thing for my website for backers at the Lost Dog tier. so they can specify what body, color, name they want for their dog in Dog Heaven and an epitaph for the gravestone. it will be nice to do some coding again. i've been doing art and gif creation and whatever else for the kickstarter for a long time now.</p>mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-3600247253733637862021-01-27T13:56:00.002-08:002021-01-27T13:56:38.179-08:00The Flight of the Flock - alternates<p> Yo.</p><p><br /></p><p>Here are the like 28 versions of the title/background for my painting:</p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjszGfIaBUL7gJOVJRJq252hsFgq4eo9KbApP3uRJcv99IpDzlz7T1W8f5ikfmSe9vrAOiQIWlQWDPOk2gtHuHku4bTvPYVkcoVrVOMM3FUVitG4gLWWtn4bgn7IGE8pnQ731xNgpECq2A/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjszGfIaBUL7gJOVJRJq252hsFgq4eo9KbApP3uRJcv99IpDzlz7T1W8f5ikfmSe9vrAOiQIWlQWDPOk2gtHuHku4bTvPYVkcoVrVOMM3FUVitG4gLWWtn4bgn7IGE8pnQ731xNgpECq2A/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieMwBd21vvM_WbXlbErAfMyYKVpoT-1MIUTOTB0pZEhkAueaXmrqlCCXJku8JcBhCX_QDinwrQdAUvnBCkIVeq6fDwUYr-sCAgSJYC9CfajrEhDyI8fgeQHcI6MhZHhz8UYorw17LSURI/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieMwBd21vvM_WbXlbErAfMyYKVpoT-1MIUTOTB0pZEhkAueaXmrqlCCXJku8JcBhCX_QDinwrQdAUvnBCkIVeq6fDwUYr-sCAgSJYC9CfajrEhDyI8fgeQHcI6MhZHhz8UYorw17LSURI/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmtfR8nqFDjfsBJwmTZQT4-xxluNPkEpqrbB8NT9CR0ntSuuVwA9V5EvDEcyISbHMwLE_g3gVUnVj1ypF4eCVrEdsi4YgJpcK0MtX2o0HFJ-VkwI6y4BGEik63HQpRNsINp9lkSrhLXyU/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmtfR8nqFDjfsBJwmTZQT4-xxluNPkEpqrbB8NT9CR0ntSuuVwA9V5EvDEcyISbHMwLE_g3gVUnVj1ypF4eCVrEdsi4YgJpcK0MtX2o0HFJ-VkwI6y4BGEik63HQpRNsINp9lkSrhLXyU/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB0KT2a2TeBGPtfpDjUeF-uLGRbTufpB5ISgQoQwZBYPiNfwA5XfB1GeOYMkuFleapfXtRBdJ91Zz74WE6NKNd-EQ16fBJ69tXYJ4cABYdyqWGZKjms2WIVRHUmjrUmf1D29v49H3z3KY/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB0KT2a2TeBGPtfpDjUeF-uLGRbTufpB5ISgQoQwZBYPiNfwA5XfB1GeOYMkuFleapfXtRBdJ91Zz74WE6NKNd-EQ16fBJ69tXYJ4cABYdyqWGZKjms2WIVRHUmjrUmf1D29v49H3z3KY/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Jctuci3gZ0ycTBFmsJ2Ir_DIW3LZKd1kjByPc5t7o9U9l_4V3d3xtK2DaHKOPAvQRYsVgYISQmTMWQ-syC0WFGQqS_nSzd_kLzKA7aD7YV__QoYS-GKt22nrfrZJr_rCsjnqiadbjHQ/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Jctuci3gZ0ycTBFmsJ2Ir_DIW3LZKd1kjByPc5t7o9U9l_4V3d3xtK2DaHKOPAvQRYsVgYISQmTMWQ-syC0WFGQqS_nSzd_kLzKA7aD7YV__QoYS-GKt22nrfrZJr_rCsjnqiadbjHQ/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghwuLYUfzUybAHqI8bh40y27H7T9kG-enJVd3aXBJuDUuInz4G_e3WpPlASDKFWCjEpDqJWSHWVN3Sy_zAsMdzPTG1744LE8XPhn3mI2LK7HcYvLUrFsdGAsGP_di0ZuU3NPDRpirryJg/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghwuLYUfzUybAHqI8bh40y27H7T9kG-enJVd3aXBJuDUuInz4G_e3WpPlASDKFWCjEpDqJWSHWVN3Sy_zAsMdzPTG1744LE8XPhn3mI2LK7HcYvLUrFsdGAsGP_di0ZuU3NPDRpirryJg/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDM_DyL4FT3p1JG_jbIoc4gvMczhzsHfrrlO87ciflNqJUuaY36PURP0JByJWjI5MWDXU8eaA9soO_blVdtJRbdQUvB8Sd1o7nllxffdvQTwswlXcnJKCAQdtxRGCALhF1Guxd1CQq7YE/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDM_DyL4FT3p1JG_jbIoc4gvMczhzsHfrrlO87ciflNqJUuaY36PURP0JByJWjI5MWDXU8eaA9soO_blVdtJRbdQUvB8Sd1o7nllxffdvQTwswlXcnJKCAQdtxRGCALhF1Guxd1CQq7YE/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8xJW63qFXeqkH-r5d5ypmufeNT2v_4e0lugdhl5D_G6Mv91icI1-INCGK2qhyphenhyphenmSLS-PtrDQJvX3AUYiPkMpPF2IxWTYDoT_-FFysMCdvKoY3C7ezpMlobVcwImfVKhJY6kHLXklddpRE/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8xJW63qFXeqkH-r5d5ypmufeNT2v_4e0lugdhl5D_G6Mv91icI1-INCGK2qhyphenhyphenmSLS-PtrDQJvX3AUYiPkMpPF2IxWTYDoT_-FFysMCdvKoY3C7ezpMlobVcwImfVKhJY6kHLXklddpRE/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwpdGXbNmlUAF1RdCGzZ1I_ruGdI4_GLseVKSAicm4ZxLU7vR7wnSRgadDTp6xQDzAovMoZHayS1nJlGowU3753HDvW5-9PXCXj_yX-9TyvXQgW08zoZkWO1WCcN474oEi9Ir2q389fa0/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwpdGXbNmlUAF1RdCGzZ1I_ruGdI4_GLseVKSAicm4ZxLU7vR7wnSRgadDTp6xQDzAovMoZHayS1nJlGowU3753HDvW5-9PXCXj_yX-9TyvXQgW08zoZkWO1WCcN474oEi9Ir2q389fa0/" width="320" /></a></div><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF3394HT_zmX8yeRl3VrGnrQd16WLgTq3fIaLACrArydQRSy0GIQ5IfuH3XCp3tjz_TQs_aQsS5YNLkOP68wI0dezMMbA_cfvpqJyNdDfZnIoHhysM6oKEvQJ4thtrsrI3jXi8XMJr8n4/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF3394HT_zmX8yeRl3VrGnrQd16WLgTq3fIaLACrArydQRSy0GIQ5IfuH3XCp3tjz_TQs_aQsS5YNLkOP68wI0dezMMbA_cfvpqJyNdDfZnIoHhysM6oKEvQJ4thtrsrI3jXi8XMJr8n4/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj43YEoXY6rmgYfFvV67VLdLUjoaM75QrOXKBuYczJXVQSP1CVufI4QHayVlOauoEeRAsvTLLmXM-t8qAkFe5fAQOdDmNiIsP23D61FW1z9E38rdRAvCQkg9WG65AeR2BIBxwFdZQ2e4i8/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj43YEoXY6rmgYfFvV67VLdLUjoaM75QrOXKBuYczJXVQSP1CVufI4QHayVlOauoEeRAsvTLLmXM-t8qAkFe5fAQOdDmNiIsP23D61FW1z9E38rdRAvCQkg9WG65AeR2BIBxwFdZQ2e4i8/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc-Lun_wFJ8YOVhH4asFxebmUn4XuCugTnt3gX3fwaELBLtSU6I1csg4yTLWGcJmr8tU_vjjn_SwvJP9z4tmLRLHtoKqxtPgrzn1ynHMsTQ1J1rIt6C1SB8NiiW3_UFCPfcJUH8GwmqWI/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc-Lun_wFJ8YOVhH4asFxebmUn4XuCugTnt3gX3fwaELBLtSU6I1csg4yTLWGcJmr8tU_vjjn_SwvJP9z4tmLRLHtoKqxtPgrzn1ynHMsTQ1J1rIt6C1SB8NiiW3_UFCPfcJUH8GwmqWI/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijq2tjcs_8vcgMcZcPUzPedYk05vJVAPT_Mr8nVhvcsfqZitLetOQJOxmn3BthiPpjzcsRW0R01yudhBb9bHPOt7ofoS0zdmrQRpIAErgP8V4lxB23a_sfh2qOicCMx8mb6Fe9BLpbXe4/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijq2tjcs_8vcgMcZcPUzPedYk05vJVAPT_Mr8nVhvcsfqZitLetOQJOxmn3BthiPpjzcsRW0R01yudhBb9bHPOt7ofoS0zdmrQRpIAErgP8V4lxB23a_sfh2qOicCMx8mb6Fe9BLpbXe4/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqqVD9BgZ98LGXBjIzhRpcQu_J5dxcEpoiGulATw7ZT1U7viUqLx3gnyQEHFAi8oR-djWEtQDf66oYFNrzrYUAhbdMZy0YRfUCycr4QhDiOgRq2dOIDwytJdD39kKj1x6SpdQP5CGPEsA/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqqVD9BgZ98LGXBjIzhRpcQu_J5dxcEpoiGulATw7ZT1U7viUqLx3gnyQEHFAi8oR-djWEtQDf66oYFNrzrYUAhbdMZy0YRfUCycr4QhDiOgRq2dOIDwytJdD39kKj1x6SpdQP5CGPEsA/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN2mh3AkD4vIRz1Wilt1J_6XnLN_i19NdRmKe2xh7zB__lYKw77jZPQo69ROEtgRk_mm6CXrowCK9mwiAH_Yafxo0cXpj2vs9MJUz1rmOK4RM_Col9vekmqyOLpG-JjeR9T_0QEgbgGI8/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN2mh3AkD4vIRz1Wilt1J_6XnLN_i19NdRmKe2xh7zB__lYKw77jZPQo69ROEtgRk_mm6CXrowCK9mwiAH_Yafxo0cXpj2vs9MJUz1rmOK4RM_Col9vekmqyOLpG-JjeR9T_0QEgbgGI8/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVGnj4AO1KHtg7oPjEs95Nz-Bwy6LSXxjYnFs7wVOvoUzR-xmow_UJ2oANvtKrDkkXBO7GhvEBII0hAmM9Mc886EqVKaGGnscmeFkaFemBvZiwG9qZKEBh6jGoDUpjmVMAL6DT3A_aIAM/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVGnj4AO1KHtg7oPjEs95Nz-Bwy6LSXxjYnFs7wVOvoUzR-xmow_UJ2oANvtKrDkkXBO7GhvEBII0hAmM9Mc886EqVKaGGnscmeFkaFemBvZiwG9qZKEBh6jGoDUpjmVMAL6DT3A_aIAM/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoeYK2SY4nJEeDTfbrKKtsS0zBXnqmKfPbcOIWSKCzOztRORtf2VWC4qKetZglb0AquGIGZw1SpRmdunw5byOkjxdnICIG4ZeI1RUJq4PGDhxDShPmNTuFOS8s55Ibd6us5Cvj-uXc3qo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoeYK2SY4nJEeDTfbrKKtsS0zBXnqmKfPbcOIWSKCzOztRORtf2VWC4qKetZglb0AquGIGZw1SpRmdunw5byOkjxdnICIG4ZeI1RUJq4PGDhxDShPmNTuFOS8s55Ibd6us5Cvj-uXc3qo/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZKCFFfiHWXMfacSNRR9yE_H8-D-H3w2bgjm7v1O0MX_qfDtgynh9i6Yxl3sa5gBZ4Q7ekB_qT9-mHf_pYF1ILq2O_0a_kCjQ4KCkYKCcIbLywMzkCABNjNTKbq1g-T0vVlRVGoRe318Q/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZKCFFfiHWXMfacSNRR9yE_H8-D-H3w2bgjm7v1O0MX_qfDtgynh9i6Yxl3sa5gBZ4Q7ekB_qT9-mHf_pYF1ILq2O_0a_kCjQ4KCkYKCcIbLywMzkCABNjNTKbq1g-T0vVlRVGoRe318Q/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsBTv2Jt3L0XTKb1r9ShaGSGx5GgkSKLZc7qsx5yxUWP_Glbb2oTasJcHhLBJBVL9kxa7eACNxI9MYbSUGrZ0mor1V7tIOO239Mn6RY-0psbqUG6rC7iYJrjTTAquvhg5r4UEjHiYvJ0E/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsBTv2Jt3L0XTKb1r9ShaGSGx5GgkSKLZc7qsx5yxUWP_Glbb2oTasJcHhLBJBVL9kxa7eACNxI9MYbSUGrZ0mor1V7tIOO239Mn6RY-0psbqUG6rC7iYJrjTTAquvhg5r4UEjHiYvJ0E/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWHSXvzGMn30wvgk4bwWH3wRwabLBw6vXEITTF9fqY6WK_BSu6pHssmpSu6KQ5Piv8a0qYuV_4l0l4d2bNJe47i1U7fjQrkvtEqn7qcUFx3f-veuqUIvXTwTDwha9t8dMKVp_-4W1JHeo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWHSXvzGMn30wvgk4bwWH3wRwabLBw6vXEITTF9fqY6WK_BSu6pHssmpSu6KQ5Piv8a0qYuV_4l0l4d2bNJe47i1U7fjQrkvtEqn7qcUFx3f-veuqUIvXTwTDwha9t8dMKVp_-4W1JHeo/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz2XXHGTUgWlw8J9VE82-5BKJzRjRN4rxFlnM6a8QAqg3d6blHTK2pJCnneMi1hcelQYWPFykqWI4pYh7XqvgQk9GBYcaBvnNp7Hz9-OXOgk3EB9HceYl0fe4SwGaJYdKJryFBf1B7CpU/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz2XXHGTUgWlw8J9VE82-5BKJzRjRN4rxFlnM6a8QAqg3d6blHTK2pJCnneMi1hcelQYWPFykqWI4pYh7XqvgQk9GBYcaBvnNp7Hz9-OXOgk3EB9HceYl0fe4SwGaJYdKJryFBf1B7CpU/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3sYajmaJWeJzfJGv0k9YQWJPBk8aZItiAxYDKeSpJO63Cg5HPNYDNgaHQbyqBbuWnShuZFqB7VH_4iPHpQDaNHrCIa6zYQiE7PKqKP7zdjiel6ZYYBKNhfYpsXKrJ0j5H2AN3RpRP56o/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3sYajmaJWeJzfJGv0k9YQWJPBk8aZItiAxYDKeSpJO63Cg5HPNYDNgaHQbyqBbuWnShuZFqB7VH_4iPHpQDaNHrCIa6zYQiE7PKqKP7zdjiel6ZYYBKNhfYpsXKrJ0j5H2AN3RpRP56o/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYm5_GNrPdVJnFUinZ_G0L5HYZznV_QU4b9v38hLg-m0iX46EwPrc5b7MjqNiOptGjkIFgXjUjpU9vLZcbPjnvXXtdKf_Cr4SV4lvmf8nWvCdeVmBKd0Hkv4yegEJA1LsTyzBwASsmTW4/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYm5_GNrPdVJnFUinZ_G0L5HYZznV_QU4b9v38hLg-m0iX46EwPrc5b7MjqNiOptGjkIFgXjUjpU9vLZcbPjnvXXtdKf_Cr4SV4lvmf8nWvCdeVmBKd0Hkv4yegEJA1LsTyzBwASsmTW4/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyaynmRKHJtoBhFKJW8Vr4Y8u0NVJPpTsklJD9GZ-jBGIgUFlvshU4XgCf9KEZx6s-tow8_3pUhpfQRdWHqQZOY1iM2jX_n7dDZhgYTh7KP93xtvlG_11kuWlsUEeNaOli3hEJVJagcT4/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyaynmRKHJtoBhFKJW8Vr4Y8u0NVJPpTsklJD9GZ-jBGIgUFlvshU4XgCf9KEZx6s-tow8_3pUhpfQRdWHqQZOY1iM2jX_n7dDZhgYTh7KP93xtvlG_11kuWlsUEeNaOli3hEJVJagcT4/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju9Sg00uno0Ic-ut-ioOb26mCRj5TjfiBuORAb9KORNWRjsaA7GEfdSeY-Xna3sv67Vb2RD_QrG1202FdmhpBtqfu-5vadYJTVTT4CiDGL9x_iZvsg-BfrTE6qvDzUIaRNNjVOCP6JG8w/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju9Sg00uno0Ic-ut-ioOb26mCRj5TjfiBuORAb9KORNWRjsaA7GEfdSeY-Xna3sv67Vb2RD_QrG1202FdmhpBtqfu-5vadYJTVTT4CiDGL9x_iZvsg-BfrTE6qvDzUIaRNNjVOCP6JG8w/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiohbw1k4HWWloe-9U6LRbea8_jsP9_WOM2a8uobBnFKI2t6i1afSoW0Jb8pQfnHW9vFCifdrBKZF9iMupy2IUoUc9NvOSMymtTZMHqQKTejMU7x35cyjNh_cdaIpBfuJJ-K_smTJQWpXo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiohbw1k4HWWloe-9U6LRbea8_jsP9_WOM2a8uobBnFKI2t6i1afSoW0Jb8pQfnHW9vFCifdrBKZF9iMupy2IUoUc9NvOSMymtTZMHqQKTejMU7x35cyjNh_cdaIpBfuJJ-K_smTJQWpXo/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsYfNPLC5pDPABMgflgGH1hpL9x6W_TUaJLCRj_BiUliCcVYn2a-JPHLTT4M80bFn0M_3ThkG9Eahkrbw1B_KOsPrU1_h5qGKDB5acwYbXtH-DNYgml0PDH8YlhdHK1hZX4P7DoBcT22k/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsYfNPLC5pDPABMgflgGH1hpL9x6W_TUaJLCRj_BiUliCcVYn2a-JPHLTT4M80bFn0M_3ThkG9Eahkrbw1B_KOsPrU1_h5qGKDB5acwYbXtH-DNYgml0PDH8YlhdHK1hZX4P7DoBcT22k/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpFdufXSFtmUXYkD6MLT2ZwqVPq-R-gLH_sBCNKRcynI_YMjWqzI0ZX4NimEAv-EGXtYe0suQNIH5YgJ7toT-mh8kckyuxlQxy1Oa4XPaNp4x0qp3i9CqM7nzb6Ci-CnFz0ESnVTW22to/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpFdufXSFtmUXYkD6MLT2ZwqVPq-R-gLH_sBCNKRcynI_YMjWqzI0ZX4NimEAv-EGXtYe0suQNIH5YgJ7toT-mh8kckyuxlQxy1Oa4XPaNp4x0qp3i9CqM7nzb6Ci-CnFz0ESnVTW22to/" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">And here are some stages of the painting.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs7QKyZT_VeGRTnYy3CMPrp6oZ8a6-UeH4gy9-rMfXLJfGE1iZDBDuOX8wwNMtNjqLruP5JhvQeVr4JXiNQH4ny4G795MueFXjzoJI5UbjLAJHX4iauSnMQSMnlUnOZSSmDxsZQOqCLdA/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs7QKyZT_VeGRTnYy3CMPrp6oZ8a6-UeH4gy9-rMfXLJfGE1iZDBDuOX8wwNMtNjqLruP5JhvQeVr4JXiNQH4ny4G795MueFXjzoJI5UbjLAJHX4iauSnMQSMnlUnOZSSmDxsZQOqCLdA/" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYsqQhvQFCQNyXeL0xZShzRCLsBYvigVcsWYoHewZ7tt0ZopA9NpOYNuc-PKwkvLMHUVOmUv2wZc0eA3avWwW2WZXsTvJi64BJwC__ue8m4IVvlxRaw9JKNz5FeZt9yrZiVefICM9Zb8/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="456" data-original-width="974" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYsqQhvQFCQNyXeL0xZShzRCLsBYvigVcsWYoHewZ7tt0ZopA9NpOYNuc-PKwkvLMHUVOmUv2wZc0eA3avWwW2WZXsTvJi64BJwC__ue8m4IVvlxRaw9JKNz5FeZt9yrZiVefICM9Zb8/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCIuziVOQ-K6POthEvQkd2qN1gMkLXBdvJfobuSuzitDM5JxSLCER7bzGt7z5eI-sZBM7kyS4G0XLNocRy-Apf1kvC5QHia4GShyphenhyphen3MCZ6MOqYxF6_vaX6I5GEWIPyrEqF01cIwwWCGmVg/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCIuziVOQ-K6POthEvQkd2qN1gMkLXBdvJfobuSuzitDM5JxSLCER7bzGt7z5eI-sZBM7kyS4G0XLNocRy-Apf1kvC5QHia4GShyphenhyphen3MCZ6MOqYxF6_vaX6I5GEWIPyrEqF01cIwwWCGmVg/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXCSKgkg0blxx3wGsTJBwXf-7jtUlc3_UfYE4Hnab7TkAjCfyHJrFcUTTztSsM5n-aStbhURNtFRE4FsHxRpcMxFTS86t0e4QZ-faANEndePnLdyeLAq7e-ONISFKbhgcoc17Boq_qVrs/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1213" data-original-width="2593" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXCSKgkg0blxx3wGsTJBwXf-7jtUlc3_UfYE4Hnab7TkAjCfyHJrFcUTTztSsM5n-aStbhURNtFRE4FsHxRpcMxFTS86t0e4QZ-faANEndePnLdyeLAq7e-ONISFKbhgcoc17Boq_qVrs/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC1K_PhuqIcObFLhlxnLmDbnG7PRAD51GmjQN9WfV8qFplrh0y4rzRENTy5MJxokEwAyKOAyM9aTxiVJeBmR3rwpOF2_VGClEGZ_O8HnTlkLJoHeq2RlC0fmP3vk2MHnOFNQOBRszuw9w/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="456" data-original-width="974" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC1K_PhuqIcObFLhlxnLmDbnG7PRAD51GmjQN9WfV8qFplrh0y4rzRENTy5MJxokEwAyKOAyM9aTxiVJeBmR3rwpOF2_VGClEGZ_O8HnTlkLJoHeq2RlC0fmP3vk2MHnOFNQOBRszuw9w/" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2NSdptX4aLMrH1ZYoQWOiartfk1eDkdlg-Ic8yjynZS_EIZpiXRpynXDbvtpnGwdvNsxWOtiYehp8LwT01RJyelTuHwKhkNopcpHvQ_o1XnzM_BNbxm9r9ryfysXX6v0h8FgZpLUOlzE/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="456" data-original-width="974" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2NSdptX4aLMrH1ZYoQWOiartfk1eDkdlg-Ic8yjynZS_EIZpiXRpynXDbvtpnGwdvNsxWOtiYehp8LwT01RJyelTuHwKhkNopcpHvQ_o1XnzM_BNbxm9r9ryfysXX6v0h8FgZpLUOlzE/" width="320" /></a></div><br /><br /></div><br /><br /><p></p>mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-88044878767260729782019-08-20T15:48:00.001-07:002019-08-20T16:08:16.327-07:00How To Use Blendo's Discord Changelog Bot With BitBucket!Hello.<br />
<br />
So I read this:<br />
<br />
<a href="http://blendogames.com/news/post/2019-07-29-discord-changelog/">http://blendogames.com/news/post/2019-07-29-discord-changelog/</a><br />
<br />
<i>(Which is by the guy who made Quadrilateral Cowboy and 30 Flights of Lovin' and other games. He's also a cool guy that I've met in Los Angeles! We've played board games together. He gave our team a bad clue that involved a computer mouse or something iirc and then he took it away, but we all insisted it meant something, but he wasn't allowed to talk to us, and so this led to our failing to put the murderer(s) to death or something. What does that say about 2019??)</i><br />
<br />
The post I linked to above is about how to automate posting commit notes to one's Discord server. Brendon casually tosses in the fact that this could easily be integrated into other version control frameworks or whatever. Well, for me it was a great struggle. But here's what I ended up doing:<br />
<br />
1. I downloaded Brendon's source code.<br />
<br />
2. I read Brendon's readme.txt and obeyed the part about copy/pasting my Discord webhook URL into the settings.txt file.<br />
<br />
3. (THIS IS WHERE I HAD TO START THINKING FOR MYSELF AND THIS IS WHAT I FOUND THAT WORKED:) In my repository for Flock of Dogs, I created a folder 'hooks':<br />
<br />
<blockquote class="tr_bq">
C:\Users\maxac\Documents\flockofdogs\.git\hooks</blockquote>
<br />
4. If you have a file named 'commit-msg' inside a folder titled 'hooks' inside a folder titled '.git' inside your repository, then when you call 'git commit' either from the terminal or from SourceTree, git will try to execute that file. So I created a file named 'commit-msg' <b>(yes, it is extensionless!)</b>:<br />
<br />
<blockquote class="tr_bq">
C:\Users\maxac\Documents\flockofdogs\.git\hooks\commit-msg</blockquote>
<br />
5. In that extensionless, empty file, I wrote the following shell script that calls Brendon's changelogbot.exe. Since it's a shell script, it won't just run in Windows, but I guess however git does things, it has access to Linux stuff, so it works. At least for me. At least on my computer. Today. Here's its contents:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgML3d1qXwYuNswDxwCdMHtAmlVQr64kKAbJoLbqst4LEz1ydvSEjwtfwXqlAAFuixThdzQhlMS-lrr1xJEbWNcmMbgQaiONKIvseCSqK8Y_8cEi9IKda2kPlz7tvWg7FXm6RTERvUXMQM/s1600/commit-msg.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="126" data-original-width="849" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgML3d1qXwYuNswDxwCdMHtAmlVQr64kKAbJoLbqst4LEz1ydvSEjwtfwXqlAAFuixThdzQhlMS-lrr1xJEbWNcmMbgQaiONKIvseCSqK8Y_8cEi9IKda2kPlz7tvWg7FXm6RTERvUXMQM/s1600/commit-msg.PNG" /></a></div>
<br />
<blockquote class="tr_bq">
<br />
<blockquote class="tr_bq">
<blockquote class="tr_bq">
</blockquote>
</blockquote>
<br /></blockquote>
<br />
<i>(From inspecting Brendon's source code, he expects at least 4 parameters. The 3rd is a string that is the file name of the file that has the commit message. The 4th is a string to append to the Discord message title after "REVISION"...the the first two arguments he didn't use, so I spoofed them with two '0's. Also, because he expected to use a file with the commit message, that's why I had to pipe the commit message into a new text document, 'commit_message.txt', which I delete after I'm done with running the changelogbot.)</i><br />
<i><br /></i>
<i>*********************************************************************</i><br />
<i>*********************************************************************</i><br />
<i>*********************************************************************</i><br />
<br />
And voila. This took me several hours. I will talk about the wrong paths I went down in another post, because idk why, except whenever I find cut, little scripts on the internet that do magical things, I always assume the creator did it in like 5 minutes and, at the risk of betraying my own incompetence, I want the world to know my pain. And yes, I consider my 'commit-msg' a cute, little script.<br />
<br />
JOIN MY DISCORD<br />
<span style="color: red; font-size: x-large;"><a href="https://discordapp.com/invite/fYZFNTB" target="_blank">TALK OF FLOCK OF DOGS</a></span><br />
TO SEE THIS BABIES IN ACTION<br />
<br />
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-46809867616797934942019-08-20T15:20:00.000-07:002019-08-20T15:20:04.507-07:00Self Equip With A Quick .zip Tip!!!!!!!<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h2 style="clear: both;">
I'm going to tell you a tale of a man and his zipper that wouldn't zip.</h2>
<div>
<br /></div>
<div>
(the last [written] blog post was about how I automated building with a unity editor script. then i ran into a problem with zipping the folders. and now.....)</div>
<div>
<br /></div>
<div class="separator" style="clear: both;">
A few days ago, I was like Oooh. I bet I could write a batch script for zipping my files in like 20 minutes. That'll be cool. SPOILER ALERT I DIDNT END UP USING A BATCH SCRIPT AND YOU KNOW THAT IF U READ THE PREVIOUS BLOG POST BC I CLEARLY CALLED A ZIP FUNCTION FROM WITHIN A CSHARP SCRIPT BUT I WANT TO TELL THIS STORY: Bascially, I wanted to do two commands. (a) Remove old things from folder. (b) Zip up new things into folder. The first command was a lot like this line:</div>
<blockquote class="tr_bq" style="clear: both;">
move Dropbox\Flock of Dogs\* Documents\FoDBuildStorage\RemovedFromDropbox</blockquote>
<div class="separator" style="clear: both;">
This command says move all files found at Dropbox\Flock of Dogs\ to the folder Documents\FoDBuildStorage\RemovedFromDropbox. Which works and is fine. Then I wanted there to exist some command like (this is my imaginary command below).</div>
<blockquote class="tr_bq" style="clear: both;">
zip Documents\FoD Build Storage\CompletedBuilds\* Dropbox\Flock of Dogs</blockquote>
Then later I'd just figure out how to start this batch script from a c# script and then I could do all this zipping from an editor command inside Unity! I figured there'd be some easily accesible cmdlet or whatever, because it's so easy and accessible to just right click a file/folder in Explorer and click SendTo->Compressed Folder. But apparently, there's no way to do that through a normal batch script.<br />
<br />
Turns out tho, that with the power of powershell (!), one can summon the powers of the native Windows compression (Although evne this wasn't possible until like 2013 or something when you had to use visual basic scrip or something or the GStream and idk what else, but 2013 has dfeinitely come and gone and so I had to decide if I wanted to learn powershell scripting.)<br />
<br />
I briefly considered using 7-zip, which actually compresses things way better normally (this all made me feel very Pied Pipery). Trouble with 7-zip is that the end user would have to have it installed to unzip any FlockOfDogs_1.0_win.7z file.<br />
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Turns out extra tho, that executing powershell scripts requires certain authorization. </div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Internet forums msotly suggested disabling the requirement for authorization, which sounds like a sweeping, system wide change that could be very scary adn open my system up to vulnerabilities maybe that I know nothing about how to fix. So somebody said well, you don't have to turn it off universally, just when you call the powershll script, use this little ByPass flag, which lets you ByPass the ExecutionPolicy:</div>
<blockquote class="tr_bq" style="clear: both;">
powershell -ExecutionPolicy ByPass -File MaxsPowershellScript.ps1</blockquote>
<div class="separator" style="clear: both;">
Which when I typed this into the command line, it worked. Which is what I did. But then I don't understand why somebody else's command line argument couldn't start a powershell script the same way? (Idk. more on that later.) Well, if they can, they can. And I am power(shell)less to stop them.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
So now I could can run my powershell script, which is where I can properly zip things up. I'd never written a powershell script before, so that was kinda fun and went pretty well. A small issue was that to zip up the 3 newly made builds, my script had to identify them, or it would just act on every file within a folder that I, thru some other means, guarantee only has the newest builds in it, so I don't have to zip up the dozens of completed builds I have saved locally. So either I iterate thru all files in my completed builds folder and then zipping them up, using a destination name which matched their current file name (+ .zip on the end), or I needed a way to just identify the newly build builds. But what if my completed builds folder had more than the most recent builds in it? Do I want to always make sure that folder is clear too? How about, I just pass the dateStamp as an argument to identify the builds I want to zip up? So that meant learning how to pass a variable to a batch script and referencing it. Which for powershll meant using $ signs. (Batch scripts use %s).</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Ok, so how do I run this from a c# script? Some googling taught me about c# being able to run processes thru Process.Start ()! You pass it the thing you want to run, in my case, cmd.exe (the command line!!!!). So if I can run the command line, I think I'm golden. And maybe I was. But it didn't work. And it kept not working. And then</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
i think the reason the process failed</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
C# Zip Failure And Then Success<br />
<br />
So I read on a forum that years ago, c# didn't have a compression library. But with .NET 4.x framework, it does! It has System.IO.Compression.ZipFile (). And that function requires using the assembly System.IO.Compression.FileSystem.dll.<br />
<br />
So I checked in Unity what .NET framekwork I was using (pretty sure it wasn't .net 4.x) and sure enough I had to update. So I cliked File->Build. Clicked Player Settings (bot left, see photo). Then in the "Other Settings", selected the .net 4.x options for script runtime version and api compatibility. It may have told me to restart. I don't remember.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjm4VnoEFk-X_22xW8hxV_OUf0Y77zpGKRQLrSoLdP0UPDJqPFkvksQeqKFXDdm8PM_NDjz1rSnwSXsR2LMjgsIZRhNTdmjOhd8PzScUtkpvtUrd4sj3jjYmhimczQo73ldge4_lPszUM/s1600/framework+settings.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="708" data-original-width="718" height="393" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjm4VnoEFk-X_22xW8hxV_OUf0Y77zpGKRQLrSoLdP0UPDJqPFkvksQeqKFXDdm8PM_NDjz1rSnwSXsR2LMjgsIZRhNTdmjOhd8PzScUtkpvtUrd4sj3jjYmhimczQo73ldge4_lPszUM/s400/framework+settings.PNG" width="400" /></a></div>
<br />
<br />
So. Then, super excitedly, I typed<br />
<blockquote class="tr_bq">
using System.IO.Compression;<br />
using System.IO.Compression.FileSystem;</blockquote>
But disappointment. Red squiggly lines abounded. Online forums said you had to "add a reference" from insude Visual Studio.<br />
<br />
So I clicked Project->Add Reference and selected System.IO.Compression and clicked ok.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyCxVN7Ypc5Octu6fNZx1W5cPCNOuSxEe7zjg64fdrQG0fwTjS92nHev7E96VUfVG5v3jZGmhdqodwpj6_7LRI-_6DOjCDhDRzISSQH0Q1hwUZucnU6DL6dJvBROhOBnvc-LKOelMpGM8/s1600/snip+add+ref.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="554" data-original-width="780" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyCxVN7Ypc5Octu6fNZx1W5cPCNOuSxEe7zjg64fdrQG0fwTjS92nHev7E96VUfVG5v3jZGmhdqodwpj6_7LRI-_6DOjCDhDRzISSQH0Q1hwUZucnU6DL6dJvBROhOBnvc-LKOelMpGM8/s400/snip+add+ref.PNG" width="400" /></a></div>
<br />
NOTICE HOW THAT LITTLE WHITE BOX ON THE LEFT IS A BOX WITHOUT A CHECKMARK? Well, I opened this dialog box and clicked Ok and nothing happened like 4 times before I realized I had to check that little white box. This is a full confessional of my development process here. So after I checked that box. And the box for System.IO.Compression.FileSystem. Then Visual Studio was so happy!<br />
<br />
Then I opened Unity. And Unity was not happy.<br />
<br />
Unity was unhappy. Unity said these assemblies didn't exist. Watched some YouTube videos on how to make your own dll and add it to Unity. They just dragged and dropped it into their assets folder! I was like No Way. So then I was like...where's System.IO.Compression.dll on my system I have no idea!<br />
<br />
Turns out that it was in the GAC (general assembly cache)! The internet eventually told me that is located at:<br />
<blockquote class="tr_bq">
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.IO.Compression<br />
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.IO.Compression.FileSystem</blockquote>
And I copy/pasted them into my assets folder and voila.<br />
<br />
It worked. Unity, VisualStudio, and me...all happy. But I shouldn't have been one hundred percent happy. You should never be 100% happy.<br />
<br />
So I went to the OC Indies Meetup last night.<br />
<br />
<a href="https://www.meetup.com/OC-Indie-Developers-Meetup/">https://www.meetup.com/OC-Indie-Developers-Meetup/</a><br />
<br />
And I told the guys there about my drag and drop solution to adding .net assemblies and they were horrified. Well, not really horrified, but I could read between the lines. They lost all respect for me as a programmer.<br />
<br />
Anyway, Tony, a fearless leader of our Meetup, found this thread:<br />
<br />
<a href="https://forum.unity.com/threads/c-compression-zip-missing.577492/">https://forum.unity.com/threads/c-compression-zip-missing.577492/</a><br />
<br />
Wherein the sad truth is revealed that through some bug, these particular assemblies fail to link properly or whatever. And if you just copy/paste them in, while it may work in the short term, it's liable to failing later with new versios of Unity. So...I'm pretty sure I'm getting close to the last version of Unity that I will use for Flock of Dogs, before having to risk breaking things when switching versions, but I'll probably go thru the Unity 2019 versions. So anyway. The thread has a simple solution.<br />
<br />
1) Create a file and add the following lines:<br />
<blockquote class="tr_bq">
-r:System.IO.Compression.dll<br />
-r:System.IO.Compression.FileSystem.dll</blockquote>
2) Save this file as mcs.rsp<br />
<br />
3) Step 2 was a trick, if you're using Unity 2018.3, you actually have to name the file csc.rsp.<br />
<br />
4) Move the file into your Asset/ directory for your project.<br />
<br />
5) What if I upgrade to later versions of Unity, will I have to change the file name back to msc.rsp? Did the Unity guy in the thread mean "for Unity 2018.3 and later"? I don't know.<br />
<br />
<br />
There you go.<br />
<br />
You have been qiuckly equipped with a hot .zip tip.<br />
<br />
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-46616995871696288542019-07-06T11:32:00.003-07:002019-07-06T11:32:51.822-07:00Floating Point Precision For A Floating River Of Air!<div class="separator" style="clear: both; text-align: center;">
YAYAYayAYayaya</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/6w92vNg6-fs/0.jpg" src="https://www.youtube.com/embed/6w92vNg6-fs?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-63351071623296408262019-06-27T19:22:00.005-07:002019-06-27T19:26:24.991-07:00A Unity Editor Script To Automate Building To Windows, Mac, And Linux, And Then Zips Them UpI set out to write a scipt that would allow me, with one click, to walk away from my computer and it would build my Unity project for Windows, Mac, and Linux, zip up the folders, and put them in my Dropbox folder that I will share with my secret play testers. I have done so.<br />
<br />
I consulted the following blogs for an example of setting the BuildOptions and Player<br />
<br />
<a href="https://www.blog.radiator.debacle.us/2015/09/scripting-unity-editor-to-automatically.html">https://www.blog.radiator.debacle.us/2015/09/scripting-unity-editor-to-automatically.html</a><br />
<br />
and<br />
<br />
<a href="https://www.gamasutra.com/blogs/EnriqueJGil/20160808/278440/Unity_Builds_Scripting_Basic_and_advanced_possibilities.php">https://www.gamasutra.com/blogs/EnriqueJGil/20160808/278440/Unity_Builds_Scripting_Basic_and_advanced_possibilities.php</a><br />
<br />
My script in pseudo code:<br />
<br />
[menu button attribute marker]<br />
void BuildFlockOfDogsAndZipItUp ()<br />
{<br />
DoBuild ("Windows");<br />
DoBuild ("Mac");<br />
DoBuild ("Linux");<br />
ClearFoldersFromDropboxFolder ();<br />
ZipNewBuildsAndMoveThemToDropboxFolder ();<br />
}<br />
<br />
I'll present the guts, then, if you're particularly interested, I'll talk through the journey!<br />
<br />
<h2>
<span style="text-align: center;"><span style="font-weight: normal;"><span style="font-style: italic;"><br /></span></span></span></h2>
<h2>
</h2>
<h2>
<span style="text-align: center;"><span style="font-weight: normal;"><span style="font-style: italic;">NOTE: WARNING: LOOK AT THIS: </span>If you're not used to writing editor scripts, make sure</span><b style="font-style: italic;"> </b>your script is in a folder in your Assets that is titled Editor.</span></h2>
<div>
<span style="text-align: center;"><br /></span></div>
<div>
<span style="text-align: center;"><br /></span></div>
<div>
<span style="text-align: center;"><br /></span></div>
<div>
<span style="text-align: center;"><br /></span></div>
<div>
<span style="text-align: center;"><br /></span></div>
<div>
<br /></div>
<br />
Starting with the import directives / whatever they're called:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOqC2N7XE1TbFOv6fRxkhg_46AedhD38Yjm41VBYMZxMVbmetJmrvHyJ2mjZqfLDtWYhWtrTb1j74vge1F2VIFUqwOYEk48xXNY4BQJ9L3CALCB1VjQpLn7-PI-olhMAAxDQ0_Szrik8M/s1600/snip3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="41" data-original-width="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOqC2N7XE1TbFOv6fRxkhg_46AedhD38Yjm41VBYMZxMVbmetJmrvHyJ2mjZqfLDtWYhWtrTb1j74vge1F2VIFUqwOYEk48xXNY4BQJ9L3CALCB1VjQpLn7-PI-olhMAAxDQ0_Szrik8M/s1600/snip3.PNG" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Next, basically, a translation of my pseudo code into C# syntax:</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiffHrUtW6gtnNV7R1hR2z8fJ1DAdMRifAeBfetG7Y7gLeYOO-hLwCNjVBALT1HalzMu5tz8oJT2L_o9LucbUScxpwAZSnFOGCP3SKPnJLsGvkJbXgH_qaggaauy83UmWKQmAuYJ_td3Sk/s1600/snip.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="261" data-original-width="452" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiffHrUtW6gtnNV7R1hR2z8fJ1DAdMRifAeBfetG7Y7gLeYOO-hLwCNjVBALT1HalzMu5tz8oJT2L_o9LucbUScxpwAZSnFOGCP3SKPnJLsGvkJbXgH_qaggaauy83UmWKQmAuYJ_td3Sk/s1600/snip.PNG" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Let's go in order! What does FormatDate() do, you think? It formats the date the way I like it. (It's important that I save the dateStamp string so that I can successfully identify the build folders later when I'm zipping them up.) So here it is:</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixTUD1wl9nN6fBTat_ISmTrapjG1dkmoTdYtvUoOVNJIbqIs_XF-n4YtW11gZlYQAX2d7KW0-GrKKS0g2DDsXc_v5-gh84l-Bn1qmGBjpHBYVQaIQSYw4nPVZB6seXiMT-exKqjl5pjXs/s1600/snip5.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="330" data-original-width="569" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixTUD1wl9nN6fBTat_ISmTrapjG1dkmoTdYtvUoOVNJIbqIs_XF-n4YtW11gZlYQAX2d7KW0-GrKKS0g2DDsXc_v5-gh84l-Bn1qmGBjpHBYVQaIQSYw4nPVZB6seXiMT-exKqjl5pjXs/s1600/snip5.PNG" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: left;">
Next, the BuildPlayer() function is basically mimicking the things you have to/can do when you click File->Build from inside the Unity editor: And this is the function that takes forever, because it's where Unity actually builds the project. Each time it switches the active build target, it takes a while, and each time it actually builds the thing, it takes a while. So as you might have guessed, debugging this function is delicate and can take a while. So edit it with care: </div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXbnPJPmuGxFj_g9y2F9ugU5PoAtkR6DWqCOvJaOFsMUXoKkPyamFGOwiySXu0ZTg3cg_yis8LJCOoIAqfuV_dTLYfG10K39jBFaF09jrGrvStelXs6pcflsdfSeZFPz50Dxh4N22adaQ/s1600/snip1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="844" data-original-width="583" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXbnPJPmuGxFj_g9y2F9ugU5PoAtkR6DWqCOvJaOFsMUXoKkPyamFGOwiySXu0ZTg3cg_yis8LJCOoIAqfuV_dTLYfG10K39jBFaF09jrGrvStelXs6pcflsdfSeZFPz50Dxh4N22adaQ/s1600/snip1.PNG" /></a></div>
<div style="text-align: center;">
</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
It's a cinch! So, next (if you scroll up and look back at the pseudo code), I want to move anything that's in my Dropbox folder out of the Dropbox folder:</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpHqOGB5lyDrV3QIg4qSldyRajByBhJkixl6DY-hROe2f2uspUZLky-b7Dj2nQF4va2SLvo87Aar9gywWgU80qchh__4J7Q63Fqr2XdxPsp4QxIIFcDRAbf5ltP8hv3_ewN9WMwXZf4xo/s1600/snip6.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="333" data-original-width="670" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpHqOGB5lyDrV3QIg4qSldyRajByBhJkixl6DY-hROe2f2uspUZLky-b7Dj2nQF4va2SLvo87Aar9gywWgU80qchh__4J7Q63Fqr2XdxPsp4QxIIFcDRAbf5ltP8hv3_ewN9WMwXZf4xo/s640/snip6.PNG" width="640" /></a></div>
<br />
And finally, the zipping function<br />
<br />
fdsad fasf asd asf t wadg fsf aw<br />
<div style="text-align: center;">
(<b>T<span style="color: #cc0000;">HE SECR</span><span style="color: #e69138;">ET TO</span><span style="color: #f1c232;"> THE ZIPPING</span><span style="color: #38761d;"> WILL BE COVERE</span><span style="color: #0b5394;">D IN THE NEXT BLOG B</span><span style="color: #38761d;">C IT WAS TRICK</span><span style="color: orange;">Y-WICKY-DO. THIS WON'T JUST work FOR MANY USERS)</span></b></div>
<br />
dfskjl kj; joi jlkj poj 'lkj 'lkj' pj'oj 'lj 'j<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdCV8kqoqbQO9rNiE7b_ufx4stco3t2uuYAh9s8kowMD9HZn2gZLUNeNfX9xMgZojU6cvm1rqciqpYwzNS1RFLRrBuP3MEj6EU1FRqExL2f-Jbepghb1m7MJFkAGVwfP4LAJLhA7CY_Ao/s1600/snip7.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="145" data-original-width="791" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdCV8kqoqbQO9rNiE7b_ufx4stco3t2uuYAh9s8kowMD9HZn2gZLUNeNfX9xMgZojU6cvm1rqciqpYwzNS1RFLRrBuP3MEj6EU1FRqExL2f-Jbepghb1m7MJFkAGVwfP4LAJLhA7CY_Ao/s640/snip7.PNG" width="640" /></a></div>
<br />
<br />
Voila.<br />
<br />
And for reference, the whole shebang, BuildFlockOfDogs.cs:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhumBaRNPwoNq6q6YzXKUlY5pLlbVosssu7FfjLr_q0Ub2UtEFEazi02uAophYBk45SzkQ2Q7MAdkFecK_HB-0feoQuuiw0OxlCyTidhfMHRlrbOOMqcUgVXqT1q2-LonEv_onIa3xsuYc/s1600/snip4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="823" data-original-width="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhumBaRNPwoNq6q6YzXKUlY5pLlbVosssu7FfjLr_q0Ub2UtEFEazi02uAophYBk45SzkQ2Q7MAdkFecK_HB-0feoQuuiw0OxlCyTidhfMHRlrbOOMqcUgVXqT1q2-LonEv_onIa3xsuYc/s1600/snip4.PNG" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
*******************************************************</div>
<div class="separator" style="clear: both; text-align: center;">
**********************************************</div>
<div class="separator" style="clear: both; text-align: center;">
***************************</div>
<div class="separator" style="clear: both; text-align: center;">
********</div>
<div class="separator" style="clear: both; text-align: center;">
***</div>
<div class="separator" style="clear: both; text-align: center;">
*</div>
<div class="separator" style="clear: both; text-align: center;">
***</div>
<div class="separator" style="clear: both; text-align: center;">
*********</div>
<div class="separator" style="clear: both; text-align: center;">
****************</div>
<div class="separator" style="clear: both; text-align: center;">
**********************</div>
<div class="separator" style="clear: both; text-align: center;">
******************</div>
<div class="separator" style="clear: both; text-align: center;">
*********************</div>
<div class="separator" style="clear: both; text-align: center;">
****************</div>
<div class="separator" style="clear: both; text-align: center;">
***********</div>
<div class="separator" style="clear: both; text-align: center;">
****</div>
<div class="separator" style="clear: both; text-align: center;">
**********</div>
<div class="separator" style="clear: both; text-align: center;">
************************************</div>
<div class="separator" style="clear: both; text-align: center;">
**************************************************************</div>
<div class="separator" style="clear: both; text-align: center;">
***********</div>
<div class="separator" style="clear: both; text-align: center;">
******************************************</div>
<div class="separator" style="clear: both; text-align: center;">
***</div>
<div class="separator" style="clear: both; text-align: center;">
*</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
**</div>
<div class="separator" style="clear: both; text-align: center;">
***</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
*</div>
<div class="separator" style="clear: both; text-align: center;">
***************</div>
<div class="separator" style="clear: both; text-align: center;">
********</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Anyway. If you want to now hear about my struggle with zipping, read the next post!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<br />
<br />
<br />
<ul>
<li style="text-align: center;"><b><i><u><strike style="background-color: white;">[BONUS: QUICK SNIP TIP: (Secret: I'm just using the Windows snipping tool to get these code snippets and then dropping them in as .pngs instead of doing all the super tedious work arounds for formatting/embedding code snippets and sometimes i like to turn on all the formatting options and it's also like when you read something with strikethrough on, you feel like you found a secret maybe and if the feeling of finding a secret is different than actually finding a secret then i don't know what is.)][]}}}{}!!!!!!!!!!!!!!!!!!!!</strike></u></i></b></li>
</ul>
mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-13670067238967753452019-06-20T10:39:00.002-07:002019-06-20T10:41:27.743-07:00Maps of Flap of DapsSo a while ago I had procdeural level generation in Flock of Dogs. This was before I added networking and before I decided that I would draw tiles of a certain, very large size. Now I've got procedural level generation back in the game working with both systems. I'm using the same algorithm I used from before (and I don't remember where I found it). There's a million tutorials out there for random level generation now, and this one's fairly simple, not innovative, but it's effective and works for Flock of Dogs. Here's an outline of how it works:<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
1) Creates a 2-dimensional array</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
int width = 12;</div>
<div class="separator" style="clear: both; text-align: left;">
int height = 14;</div>
<div class="separator" style="clear: both; text-align: left;">
int[,] map = new int[width, height];</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
2) It iterates thru all elements and randomly assigns it a 0 or a 1, representing a tile that is clear and a tile that is a wall, respectively. At this point, you'd just get a map full of noise. Ther's one other condition: if the element represents an edge tile, (i.e. take an element map[x,y] when x or y is 0 or when x is equal to width - 1 or y is equal to height - 1), it will always fill it with a 1. This guarantees a solid border.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
3) Then, it iterates through the whole map again. Starting with the first tile that is clear, it declares a new Room. A room is a collection of tiles that are touching and are clear. To define a new room, you recursively check each adajcent clear tile for their adjacent clear tiles, adding all of them to the same room. For this algorithm, diagonal tiles are not considered adjacent. After the first open tile has been processed and turned into a room, the algorithm continues on through the tiles, looking for more open tiles. When it finds the next one, before it creates a second room, now it has to check if that tile is part of an existing room. If it isn't part of a room, then it can create a new room.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
4) After all rooms have been found, which, by the above method of creation are not connected to each other, it then proceeds to connect them all! It defines the first room as the Main Room. Then it uses a straight line drawing algorithm to set a path of tile spots map[x,y] to 0, for some collection of x's and y's that result in a straight-ish line (can look kinda like stairs, if it's diagonal) from the center of the Main Room to the next room. It then marks that next room as connectedToMain = true. I forgot to mention that a Room is defined not just by its collection of tiles that are open and adjacent, but also if it is connected to main!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
4b) The straight line drawing algorithm just like checks the x,y coordinate of the center of Room A compared to the center of Room B, and increments or decrements x or y step by step, clearing each tile, until it reaches the center of the Room B. You can tweak this to adjust how wide you want the connecting passage to be.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
5) Then it proceeds to each room and draws a straight line to other rooms until it hits a room that is marked connectedToMain. At which point, it marks all the rooms that it has drawn a line through as connectedToMain = true. And voila. All the rooms are connected now! Yayaya.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
6) Define a Unity GameObject that has a Unity Grid, upon which it can create a Unity Tilemap, then iterate thru map and if an element equals 1, instantiate a mountain tile, otherwise leave it blank! The mountain tiles are 'smart tiles', by which I mean, whenever a new tile is added to their Tilemap, they check their list of rules (which I set up) and see which rule applies given their current neighbors and decide which mountain sprite (of the 64 mountain tiles sprties I've made) they should actually be (and its corresponding collision polygon).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
*</div>
<div class="separator" style="clear: both; text-align: center;">
**</div>
<div class="separator" style="clear: both; text-align: center;">
********</div>
<div class="separator" style="clear: both; text-align: center;">
*******************</div>
<div class="separator" style="clear: both; text-align: center;">
**************************************</div>
<div class="separator" style="clear: both; text-align: center;">
****************************************************</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijAha6IdD63ePGhFSjj11trGvIV3IUWVyGvSt4LgnnUJGoXzyjc6lKUt9bHBB0LkXImn2reO1CLGH1glatVAlCfP97C4JMzx7sHpohkDsNn2jyBlV8HU6e6IfM9RFJfKutgRGLuk54oSs/s1600/level+gen+demo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="640" data-original-width="640" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijAha6IdD63ePGhFSjj11trGvIV3IUWVyGvSt4LgnnUJGoXzyjc6lKUt9bHBB0LkXImn2reO1CLGH1glatVAlCfP97C4JMzx7sHpohkDsNn2jyBlV8HU6e6IfM9RFJfKutgRGLuk54oSs/s320/level+gen+demo.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
****************************************************</div>
<div class="separator" style="clear: both; text-align: center;">
**************************************</div>
<div class="separator" style="clear: both; text-align: center;">
*******************</div>
<div class="separator" style="clear: both; text-align: center;">
********</div>
<div class="separator" style="clear: both; text-align: center;">
**</div>
<div class="separator" style="clear: both; text-align: center;">
*</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Yaya. So, as you might've noticed, that gif already has the islands, clouds, and tetris pieces in place too. After I've generated the tile map, I have a big process for how I place all these things. There's sort of two ways. I either go thru each tile and do a thing or I decide how many things I want to do and then pick random tiles.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
For islands, I go through the map again and for each tile that is clear. According to some spawn chance, I may or may not spawn an island in that tile. There's some nuance here for bigger islands that take up several tile spaces, and I'm probably going to revisit this bc I'm not crazy about the look of every island being exactly centered in a tile/the exact center of a 2x2 tiles/never more than 1 island per tile.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
For tetris pieces and clouds, I don't iterate thru each tile, but rather start with a random number of objects I want to spawn, then randomly pick a tile an open tile, then randomly pick a position within that tile's boundaries amd place the object there. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The clouds are generated as cloud groups, which comprise up to a few big clouds, then up to a few times some number of medium clouds, then up to a few times some number of medium clouds times some number of small clouds. If it a storm group, then they'll be rain clouds with random amounts of rain levels.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
For placing trees, monster dens, and flower traps, since I happened to have a list of all the islands that have been spawned, and since each island happens to have an accessible array of permissable spawn points, I pick a random island, pick a random spawn point on it, and drop the corresponding object. I then remove that spot from the island's available spawn points.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
So anyway, that's a lot of stuff. And there's going to be more. Shops, dams, air rivers, cave entrances/exits, fortresses, oases, beast lairs, villages/cities, whale smiths, kennels, inns, camp grounds, treehouses, a festival, race tracks, and more! I PINKY PROMISE NOTHING WILL BE CUT OR CHANGED FROM THIS PLAN EVER AND IN FACT I WILL ONLY ADD MORE.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
So anyway, that's a lot of stuff. And performance, even in this mostly shaderless, mostly particle effectless game, does become an issue. So I create an ObjectsInATileHolder object! And whenever I spawn any of the non moving structures I've mentioned above, I associate them with an ObjectsInATileHolder. Then, if I want to 'turn off' a tile, I tell the corresponding ObjectsInATileHolder to 'turn off' all its objects, which, in Unity terms, just means setting them to inactive, which means that Unity will pay no attention to them in its core game loop. I use a coroutine to check once every second the location of the camera and find out which map tile it's over. If it is over a different tile than it was the second before, it then makes sure to turn on all its neighbor tiles (within a range I've currently set to 2) and makes sure any tiles that were on and that are not within 2 tiles, are turned off.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
*</div>
<div class="separator" style="clear: both; text-align: center;">
**</div>
<div class="separator" style="clear: both; text-align: center;">
********</div>
<div class="separator" style="clear: both; text-align: center;">
*******************</div>
<div class="separator" style="clear: both; text-align: center;">
**************************************</div>
<div class="separator" style="clear: both; text-align: center;">
****************************************************</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrPnGsMajOnVk9njAO526nzbtO9ZZG_Nnh6oW4iio163TH1pJmclaRqfQ7nm5XuA6yEss7MYNWWdIBAf7dQ9MHRVLcKOI5RkHdlii_KJYJGm_Vr5-1AsP5dgIMpMufsavbJte6NaPteSQ/s1600/dynamic+game+object+activation+2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrPnGsMajOnVk9njAO526nzbtO9ZZG_Nnh6oW4iio163TH1pJmclaRqfQ7nm5XuA6yEss7MYNWWdIBAf7dQ9MHRVLcKOI5RkHdlii_KJYJGm_Vr5-1AsP5dgIMpMufsavbJte6NaPteSQ/s320/dynamic+game+object+activation+2.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
****************************************************</div>
<div class="separator" style="clear: both; text-align: center;">
**************************************</div>
<div class="separator" style="clear: both; text-align: center;">
*******************</div>
<div class="separator" style="clear: both; text-align: center;">
********</div>
<div class="separator" style="clear: both; text-align: center;">
**</div>
<div class="separator" style="clear: both; text-align: center;">
*</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
I generate all this using System.Random, which will reproduce the same 'random' set of values if given the same seed. So fo network synchronization, all I need to do is send that seed number to any connecting clients! (Assuming all the parameters match: map width, map height, room-connection-passage-width, chance to spawn an island, number of trees to spawn, number of clouds to spawn, number of tetris pieces to spawn, number of dens to spawn, etc.)mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-45109385482231822862019-06-10T11:47:00.001-07:002019-06-20T10:40:10.823-07:00Arms of Flarms of DarmsA long time ago, I had 4 guns you could equip in Flock of Dogs. The shotgun, the sniper, the battle rifle, the assault rifle, and the pistol. Inspired by Halo, as placeholder weapons. You can see a floating machine gun sprite below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrXnk8WqHeQ7mdgJ02LFdtuZgx1ZWztw7OZuF3e1GlLl06G4TzTtnPUac4CSw1sMOer0IaesXqAVnl2NKGIGLFm_NNGNqvyE-5XKYvPD1tLCHXHERVqclmVT9LnklSh21NndQrOcgsWnE/s1600/old_screenshot_drill_and_machinegun.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="270" data-original-width="480" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrXnk8WqHeQ7mdgJ02LFdtuZgx1ZWztw7OZuF3e1GlLl06G4TzTtnPUac4CSw1sMOer0IaesXqAVnl2NKGIGLFm_NNGNqvyE-5XKYvPD1tLCHXHERVqclmVT9LnklSh21NndQrOcgsWnE/s400/old_screenshot_drill_and_machinegun.png" width="400" /></a></div>
<br />
Eventaully, I removed them from the game and limited players to only use what had been the pistol, but with an infinite clip, and then worked on other parts of the game. And over time, I've felt that I wanted to move the focus away from ranged combat for 3 reasons:<br />
<br />
1. Ranged wants to keep their enemies across the screen from them, which means that if there's multiple dog riders targetting different enemies, it gets awkward for them to manage their screen space.<br />
<br />
2. Visually very cluttered with everyone's projectiles flying everywhere.<br />
<br />
3. Upgrades for ranged weapons usually means more projectiles, faster, bigger. These aggravate the above issues.<br />
<br />
<br />
So anywayaya. I've made 4 weapons. They are a bow, flail, lance, and shield.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6zslSHIlE6IkmeX4y-KtEjdfhFbuCmBz3OqR8JwDjOatToLxqcTsyZ8Vbq89vcr6p5ygaXfIncwtbRy926oWha66_dRU7fwUBHqdU0LI8VmYDsFR8iwtKseRyz4LgfWk1MSFbzlOObv0/s1600/bowandarrow+demo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6zslSHIlE6IkmeX4y-KtEjdfhFbuCmBz3OqR8JwDjOatToLxqcTsyZ8Vbq89vcr6p5ygaXfIncwtbRy926oWha66_dRU7fwUBHqdU0LI8VmYDsFR8iwtKseRyz4LgfWk1MSFbzlOObv0/s320/bowandarrow+demo.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Arrow damage: 8 points</div>
<div class="separator" style="clear: both; text-align: center;">
Knockback: 12 units of force</div>
<div class="separator" style="clear: both; text-align: center;">
Range: 60 units of distance</div>
<div class="separator" style="clear: both; text-align: center;">
Auto draw time: 0.33 s</div>
<div class="separator" style="clear: both; text-align: center;">
Bow rotation speed: 720 degrees / s</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
The bow is fairly straightforward now. Initially, I had you manually draw the bow and struggled with the decision of what happens if you do not fully draw your bow: a weak attack or no attack? If a weak attack, how is that visually communicated? Does the bow automatically fire the direction you're aiming, or is there a bit of drag between your actual input and the rotation of the weapon? (that was a decision I had to make for the lance and shield too). Considering that you'll be doing lots and lots of shooting, it would simply be annoying to fail your shots. Which is, in fact, how pretty much every bow works in video games. The idea of a weaker attack, in the context of this game, seems difficult to communicate and unnecssary.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjAvECUhmueagWZCk_DneePEKdUDdPEESIx_hlT6Gw-ZHTaQ8ctTHRclAo8ESOrXrzXxQQcswdPY9NxLcyu-S9A-CIQvf_QDw40oHDWm6wMkCIos1UlSr6Tmatllf1glN_k8wcSoEbBuk/s1600/flail+demo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjAvECUhmueagWZCk_DneePEKdUDdPEESIx_hlT6Gw-ZHTaQ8ctTHRclAo8ESOrXrzXxQQcswdPY9NxLcyu-S9A-CIQvf_QDw40oHDWm6wMkCIos1UlSr6Tmatllf1glN_k8wcSoEbBuk/s320/flail+demo.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Flail ball damage: 9 points</div>
<div class="separator" style="clear: both; text-align: center;">
Flail ball knockback: 8 units of force</div>
<div class="separator" style="clear: both; text-align: center;">
Flail max angular velocity: 1080 degrees / s</div>
<div class="separator" style="clear: both; text-align: center;">
Flail min angular velocity: 360 degrees / s</div>
<div class="separator" style="clear: both; text-align: center;">
Time to increase angular velcoity from min to max: 2 s</div>
<div class="separator" style="clear: both; text-align: center;">
Range: ~5.5 units of distance </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div style="text-align: center;">
Of course, the first thought for a melee weapon was a sword, which I had actually made a few months ago as an upgrade for the mop, but that may get tossed at this point. I wanted one weapon that wouldn't actually require use of the 2nd thumbstick (aiming). This provides a lower skill floor and a kind of accessibility. The flail fit that perfectly. I experimented with slowing down your movement speed whilst flailing, but it's already somewhat challenging to close in on enemies considering the flail has the shortest range of the current weapons anyway. Plus, what's really the harm in allowing players to be constantly flailing? There may come a time when there's a cost to that, if I decide to implement weapon durability.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxjZoX-_2Xs4heHltLh4o-v-nCTOR8kXr5kh6pXzHADxN3MFibv5Ml7bcfCf9IILh9LsxHIZWH42M0nOy4aOcyFzHAzjIQhngaXzlKpCy15XlzWs6ER4fLTgMKb4PI6In4g2WlaNgezYs/s1600/lance+demo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxjZoX-_2Xs4heHltLh4o-v-nCTOR8kXr5kh6pXzHADxN3MFibv5Ml7bcfCf9IILh9LsxHIZWH42M0nOy4aOcyFzHAzjIQhngaXzlKpCy15XlzWs6ER4fLTgMKb4PI6In4g2WlaNgezYs/s320/lance+demo.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Lunge thrust damage: 20 points</div>
<div class="separator" style="clear: both; text-align: center;">
Lunge knockback: 15 unity of force</div>
<div class="separator" style="clear: both; text-align: center;">
Lunge range: 13 units of distance</div>
<div class="separator" style="clear: both; text-align: center;">
Poke damage: 2 points</div>
<div class="separator" style="clear: both; text-align: center;">
Poke knockback: 3 units of force</div>
<div class="separator" style="clear: both; text-align: center;">
Poke range: 8.5 units of distance</div>
<div class="separator" style="clear: both; text-align: center;">
Charge up time: 0.0625 s</div>
<div class="separator" style="clear: both; text-align: center;">
Lunge duration: ~ 0.3 s</div>
<div class="separator" style="clear: both; text-align: center;">
Poke duration: ~ 0.1 s</div>
<div class="separator" style="clear: both; text-align: center;">
Lance rotation speed: 360 degrees / s</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
The lance delivers a lunge attack if your momentum in the direction of your attack is above a small threshold. Otherwise, it just does a poke. Both attacks can pierce (do damage to multiple enemies). Whereas with the bow I opted not to have a half charged attack option, delivering a well executed attack is everything with the lance and the damage it does matches that. The input is such that if you pull the trigger and hold it, you won't attack until you release. If you just pull and release immediately, your character will complete fully pulling back the lance, and then attacking (thrust/poke). I experimented with just requiring you to charge up the lance fully to do a lunge, and also not having two types of attacks, but rather you just fail to attack if you don't fully charge up. But the idea of flying to the right and then being able to to a lunge thrust backwards, against your momentum, doing full damage, upset the combat realist in me. Currently, I don't check your momentum until the lance has been fully 'charged' or brought back in preparation to strike, which takes like .0625 seconds. I may instead do the check at the time you start 'charging up' your attack, but then I'll hvae to handle the case where you choose to hold the lance in its charged up state. idk.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-MQZJo7Ya4V7Temf123DiN01-ZpZ7DiC6xEIX1LSoqN_9i4lu73lr_ps_60E4HepkelVB3hrulKVyt1UetT-WmsB20UcGOgUhggPgrexbY0_UqtIdlgnU4fKts3W2zoFtJLab0s8SAc8/s1600/shield+demo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-MQZJo7Ya4V7Temf123DiN01-ZpZ7DiC6xEIX1LSoqN_9i4lu73lr_ps_60E4HepkelVB3hrulKVyt1UetT-WmsB20UcGOgUhggPgrexbY0_UqtIdlgnU4fKts3W2zoFtJLab0s8SAc8/s320/shield+demo.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Time to expand shield: 0.1 s</div>
<div class="separator" style="clear: both; text-align: center;">
Shield bash range: 2.5 units of distance</div>
<div class="separator" style="clear: both; text-align: center;">
Shield knockback: 20 units of force</div>
<div class="separator" style="clear: both; text-align: center;">
Shield holder speed reduction: (uses a air resistance formula based on the square of the velocity of the player)</div>
<div class="separator" style="clear: both; text-align: center;">
Shield rotation speed: 1080 degrees / s</div>
<div class="separator" style="clear: both; text-align: center;">
Shield expanded rotation speed: 90 degrees / s</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
The shield slows your movement when it's expanded. It also cannot be aimed as quickly when it is expanded. It also delivers a shield bash when it is expanded. Before I had the idea of expanding it, it was very simple, you just moved and aimed. I knew I wanted a shield bash, however, and I didn't want to involve a second button in weapon usage. I didn't want the player's movement to be permanently retarded by just simply having the shield, so the idea of 'wielding it' or 'holding it up' popped into my mind. So that became the unfurling of the shield.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Their visual polish is not complete and there are some systems (upgradability, durability, solar energizability) that I'm considering. At the moment, I'm more interesting in developing these 4 weapons, rather than making a large arsenal to choose from. These could take many forms. What I'm leaning towards is a small weapon rack on board the whale where you can swap out which weapon you're actively using. This would work similarly to how I had harpoons in the game previously, which I may bring back. So at any time, you can hold 1 weapon and 3 harpoons. Maybe. Or maybe harpoons act as another weapon. And maybe you can have 2 weapons at any time. I lean away from upgrades and prefer the idea of using the solar power as temporary power boosts to weapons that perhaps allow for their special attacks. I think this may be the place where I reincorporate my previous features of the replicator shield (a shield that triples your allies shots that pass thru it) and the electric tether (a rope attached between two players that electrocutes the enemy when they cross it).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
By durability, I refer to the weapons being breakable/consummable. The idea of durability just ties into the greater design goal of symbiosis of whale, dog, and rider. The whale needs the riders to fight off attacks and the rider needs the whale to hold its weapon stores. However, issues arise when you're (a) out of weapons completely, (b) how to indicate a weapon's current durability hp, (c) when you swap out a half used up weapon for a fresh one at the weapon rack, (d) determining how each weapon loses its durability. I have some soultions for this, but maybe it will just be annoying to have your weapons wear out on you? There's this general concept of the dog and rider pit stop, which I believe is a very big part of the symbiosis experience I'm trying to design. The pit stop goes something like this: dog and rider have been flying around collecting resources, enganging in combat, landing on islands, whatever. Now the dog is low on water, perhaps its lost a few hearts, and the rider's weapon is broken, and there's a ruby the player has just found. So this is a perfect time for a pit stop. The rider can fly back to whale, dock the dog, walk the ruby up to the whale's mouth, grab a new weapon. The dog gets sprayed down, and fed, and takes a brief nap. And then the rider mounts back up and heads back in the blue skies.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Anyway. I'll talk about the dogs' hydration and food systems anoyther time. I've changed them slightly.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
My favorite weapon is the lance! Yayaya!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTM-SUYPxxFFCd0lbz6YugRl5zlW3s2PPAf4Ya1SuyXql7BRQbI2n5g_XlLVkGojiM64dx3dZbMmI50WtmimDJAUDO9tIc8hYc6VcN-thOmNDXpazuxyQ-n_zoxrhU7cluQ26LmrewO_o/s1600/lance+demo+2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="451" data-original-width="776" height="372" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTM-SUYPxxFFCd0lbz6YugRl5zlW3s2PPAf4Ya1SuyXql7BRQbI2n5g_XlLVkGojiM64dx3dZbMmI50WtmimDJAUDO9tIc8hYc6VcN-thOmNDXpazuxyQ-n_zoxrhU7cluQ26LmrewO_o/s640/lance+demo+2.gif" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-52881374477262418042019-02-05T13:58:00.003-08:002019-02-05T13:58:58.786-08:00Getting Good at GrassHello.<br />
<br />
I've been working steadily on Flock of Dogs.<br />
<br />
According to my standard for myself, I'm pretty happy with the amount of work I've done in the last few months. The online networking code works decently well all things considered. I held my 2nd online Flock of Dogs playtesting and while we found a bunch of bugs, I've fixed a bunch of them immediately after the playtest.<br />
<br />
I've recently decided it's time to do a big, (probably) penultimate, art pass. Starting primarily with environment art, following in the style of the <a href="http://blogofflockofdogs.blogspot.com/2018/02/shadows-and-shading-massachusetts-and.html" target="_blank">Dr. Seuss-like trees I've blogged about</a>. Basically, using a sort of ink-imitation line art, filling sections witih solid colors and using hashing and contextual black lines for shading. I am going to be trying to get good at using my tablet, instead of the mouse, because that should pay off in productivity eventually. (I've used the mouse for the treehouse, the dogs, and the players, with some very rough pencil sketches that I uploaded iPhone photos of and then traced over). My tablet is small and cheap, but functional and I'm going to switch from using GIMP to Krita after spending some time looking into it. Krita has a good, new community, handles animation way better, and the aesthetics of it are much preferable. I even prefer its name and icon, which like is a sad subsittute for the tactile satisfaction of actual brushes, canvases, paint, or polymer clay and a knife. (Maybe I should get a mechanical keyboard......)<br />
<br />
Here's the islands I drew (still using mouse in GIMP, but after this blog...tablet and Krita!):<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz9gTgqxcGmp_fmWY7AlyS-gRegwvBh-_JCNpPx8eWR_4dLleNCB3xgKm_f2_TwovyVctD6ZbkA5qldmaQvt4iJbIvYq330LiWohGyAluQtlRT4R6EbRGEpQTIZ4jVzX9zqwuLw2DSTs0/s1600/grassland_palette.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1249" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz9gTgqxcGmp_fmWY7AlyS-gRegwvBh-_JCNpPx8eWR_4dLleNCB3xgKm_f2_TwovyVctD6ZbkA5qldmaQvt4iJbIvYq330LiWohGyAluQtlRT4R6EbRGEpQTIZ4jVzX9zqwuLw2DSTs0/s1600/grassland_palette.png" /></a></div>
For reference, here's a really old screenshot, a kinda old screenshot, and a brand new screenshot:<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKXGtwa3srooW6nQGzGY_4_ZWduhAcBlV7JnR98aQB33EL-EAUi2ayAdlwguHEgDUNQ0Mc0GbBkXCmCvqgFdH0PnKk8umuh4Reuhx6JIgf4AAmUdGbKpaT2fTeEtSentHWdGLr5muG9mI/s1600/island_art_progression.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKXGtwa3srooW6nQGzGY_4_ZWduhAcBlV7JnR98aQB33EL-EAUi2ayAdlwguHEgDUNQ0Mc0GbBkXCmCvqgFdH0PnKk8umuh4Reuhx6JIgf4AAmUdGbKpaT2fTeEtSentHWdGLr5muG9mI/s1600/island_art_progression.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
These most recent iterations on islands will probably be final art. I'll draw a bunch of them, and then they'll be procedurally dropped into levels. Or for hand made levels/areas, I'll pick which ones to use and/or draw custom ones. Same process for the other environments in the game.<br />
<div>
<br /></div>
I've removed Twitter and Instagram from my phone (after having removed dating apps some time before) and I'm happier for it. I'm going to try harder to blog and post on Twitter/Instagram in intentional, consistent ways. But I'm not going to beat myself up over it. I only beat myself up over losing in soccer and not flossing and not working on actual game development. I've been on a good streak in 2 of those things. The flossing is a struggle.<br />
<br />
Peace out.<br />
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-12376117323890000352018-12-17T17:15:00.000-08:002018-12-17T17:28:30.892-08:00As Good A Time As AnySo when I've finished a feeature for my game, I'm usually tired and happy and I want to eat, sleep, go outside, play soccer, something, and not write a blog. If I'm in the middle of adding a feature, I don't want to blog bc I'm busy. And if I'm just starting a new feature, well then what's there to blog about? Which offers you this chilling challenge: to comment below on what stage of feature development I'm in right now!<br />
<br />
Anyway.<br />
<br />
So this will just be a general update from what I've done in the last month.<br />
<br />
I have a playground arena where you can spawn clouds, monster dens, monster pods, empty rock dens, a wrench, gems, dogs, whales, whale equipment. There's two islands that you can land on and take off from and walk around on.<br />
<br />
And I have the gauntlet mini-fake-campaign that has 3 levels that are each the same rectangle size with slightly different enemy spawns and one level has a fruit tree and you can fly your flock through the 3 levels and loop through them over and over until your flock meets its bitter end. Your health and water do not replenish, except for the fruit tree on the first of the three levels start with like 12 fruits, but doesn't replenish when you repeat the levels.<br />
<br />
And this all kinda works over the internet!!!!!!!!!!!11<br />
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
!!!!!!!!!!11<br />
!!!!<br />
!<br />
<br />
I say 'kinda', bc to test it, I just run two builds of the game simultaneous, enable 'run in background' and then tab between the running applications to play as two different users. Which is awkward and not a thorough way of testing.<br />
<br />
I also haven't totally totally finished syncing everything over the network, like espcially if a player joins late, only some of the stuff will sync, but everything should maybe probably work fine if everyone starts together. And I'll confess that I had most of this stuff (that I have mostly working) done before Thanksgiving, which is when I said I'd share something playable. Of course, no one pestered me about failing to meet my promise, which was both a test of you and a test of me, to see how we both handled the psychological damage to our relationship due to the lame predictability of not meeting deadlines. But as I jsut said, I basically coulda met the deadline, I just didn't share it. That's partly because I didn't want to spend Thanksgiving weekend sending out a bunch of emails/Tweets/Instagram posts/Facebook posts/blog posts/Discord messages trying to get testers, or explain how to play, or fix the deluge of bugs, because I'm all about not overworking and really want to hone my ability to not overwwork and because I just wanted to eat and drink and do an escape room with old friends and then eat and drink some more and play Avalon.<br />
<br />
But then after Thanksgiving, I got really into adding new enemy sounds and a dynamic enemy-crashing-into-island feature, which I'm very excited about and then I also got really into redoing the water system with using Unity's particle system's built-in collisions, and adding a 'wet skin' feature, and finally learning about Unity's tile map feature, which I may now swap out from my simple one.<br />
<br />
Oh, and I also spent like a few days getting the hose's shadow to dynamicly match its position (because I couldn't just use a simple Unity sprite mask, since the hose uses a line renderer) and then beceause the hose can be held at various altitudes (at the standard whale/flying dog altitude or on the island's surface altitude) that meant the hose's shadow has to both show up on the island, which an appropriate offset and sometimes show up on the whale, with a much smaller offset. Anyway, it still doesn't seemlessly match the island's edges, but I'm still surviving without having to learn how to write shaders, which seems like an invesment worth doing..........later.<br />
<br />
Also, other than the usual November proceedings of celebrating my birthday, veterans day, and Thanksgiving, in the last month, I went to a wedding in Newport without any single girls, a wedding in Nashville without any alcohol or dancing, and camping in Joshua Tree without a tent.<br />
<br />
Hung out with my nieces, played some good and some bad soccer. Went to free yoga on the bluff in Long Beach.<br />
<br />
Played Eclipse a few times.<br />
<br />
So will I now share my game so people can test it?? Idk. But I'm done blogging!mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-26894538723139631862018-10-31T11:57:00.000-07:002018-10-31T11:59:17.845-07:00Birthday Goal & Thanksigiving GoalOn my BIRTHDAY on <span style="font-size: large;">November 10th</span>, YOU can play the alpha of <b>FoD Online TM</b> (lol)! By which I mean, you can play maybe modes <b><span style="background-color: black; color: orange;">(1)</span></b> and <b><span style="background-color: black; color: orange;">(2)</span></b>. On <span style="font-size: large;">Thanksgiving Day</span>, YOU can play <b style="background-color: black;"><span style="color: orange;">(3)</span></b> also.<br />
<br />
Maybe...I hope.<br />
<br />
These are the <span style="font-size: large;"><i>three</i> planned </span><u>modes</u>:<br />
<span style="background-color: black; color: orange;"><b><span style="font-size: large;">(1)</span> Playground </b></span><br />
<span style="background-color: black; color: orange;"><b><span style="font-size: large;">(2) </span>The treehouse demo (first level of game, offline only right now) </b></span><br />
<span style="background-color: black; color: orange;"><b><span style="font-size: large;">(3) </span>Gauntlet </b></span><br />
<span style="background-color: black; color: orange;"><b><br /></b></span>
<br />
<b><u><i><span style="background-color: black; color: orange;">Playground:</span></i></u> </b>Basically an an open space where you can mess around alone or with friends. Spawn any items, spawn upgrades for the dogs and whale, spawn enemies to fight, reset the level, whatever. This is goal 1. This is basically my testing space for the interactions between all the stuff in the game. This would synced online. Players can join and quit. This is where I hope lots of bugs can be reproduced and thusly solved.<br />
<br />
<span style="background-color: black; color: orange;"><b><i><u>Treehouse demo:</u></i></b> </span>Basically the demo I've shown the past few months, which starts at the Treehouse and ends at the Air River. This mode will be offline only.<br />
<br />
<b><i><u><span style="background-color: black; color: orange;">Gauntlet:</span></u></i></b> And online version with up to 8 players. Start the whale off with 4 random station upgrades and 6 dogs. Then you play through 3 very basic levels of inreasing difficulty (read: just more enemies probably) over and over. The levels wouldn't spawn new health or upgrades. There would be a high score game, where after any level you can choose to "turn back", which means you have to play through the same number of levels you've already gone through, still with no new whale food or dog food. Your score would be some calculation like:<br />
<br />
KILLS x 10 pts + UNEATEN DOG FOOD * 30 pts + GEMS * 50 pts + GOLD = SCORE<br />
<br />
<span style="font-size: x-large;">BBBbbbu</span><span style="font-size: large;">uutt</span>t.....if you successfully "turn back" and make it "home" you'd get like a 2x score bonus. So you can think of two runs that are basically identical. A team plays through 10 levels and then dies with a total of 2500 points. Another team plays thru 5, then "turns back" and makes it through 5 withi a total of score of (2500 x 2) = 5000 pts. Anyway. Just a little gamification!!!<br />
<br />
<br />
*******************************<br />
<br />
This will be my birthday present to us! I waffle between the self psychological management dilemma of (a) if you tell people your goals, you're less likely to achieve them, because we get some sort of fake feedback as if we'd already achieved them, simply by telling people and (b) if I tell people my goals, I feel accountable and it can create a kind of deadline, which is motivating. I don't know what the future holds!!!!!!!!!!mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-78413947821279275192018-10-30T17:13:00.002-07:002018-10-30T17:28:13.401-07:00BFIG and John Carmack Highlights<b><i><u>BFIG Highlights:</u></i></b><br />
<br />
<ul>
<li>@turtleverse showing up at my booth before I realized the festival had begun and handing me his two votes and proceeding to play the demo.</li>
<li>Seeng two little kids who were terrible at my game and I thought were getting really frustrated and never got past the thorny vines north of the treehouse, but I never talked to them or tried to help them and they left. But like an hour later I saw one of them come back and give me her votes. </li>
<li>Seeing a family of four who were terrible at my game and I thought they were getting really frustrated and didn't get past the thorny vines north of the treehouse, and I only talked to them once*. But like an hour later the mom came back and gave me several votes.</li>
<li>Having the 12 year old kid I used to mentor as part of Big Brother Little Brother program help me in the booth. Especially playing balloon soccer while everyone else was packing up their booths.</li>
<li>@turtleverse bringing back more of his friends to check out Flock of Dogs</li>
<li>Seeing a group of young adults play my game and thinking they had come as a friend group and then finding out they had just met each other and secretly hoping the guy would ask for the girl's number and somehow Flock of Dogs could be credited with bringing together two lovers, but I don't think it happened.</li>
<li>Chatting with the game devs next to me (makers of Hexile) and across from me (maker of Katie) and behind me (makers of Austen Translation) and down the aisle (makers of Skorcery).</li>
</ul>
<br />
<span style="font-size: x-small;">*The time I helped them was because they revealed a bad design by me. They accidentally landed on the island of the thorny vines north of the treehouse. But they didn't know how they landed (holding A) and they didn't know to take off (also holding A). But once they accidentally took off again they were trapped between the thorns and the floating tetromino piece...so anyway. Bad design. I've since restructured where/when landing is taught/is possible.</span><br />
<br />
Um. Yeah, who knows about the marketing value of going to events like this. But having this kind of deadline and getting to see people play my game is really cool. I could make a separate list of highlights for just being back in Boston, most of which would be playing with two of my old soccer teams and winning all my games and scoring some sweet goals and hanging out with old friends.<br />
<br />
Anyway, I came across this quote from John Carmack. And I've bolded, italicized, and changed the text color of the part I found encouraging!:<br />
<br />
<blockquote class="tr_bq" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
I spent a lot of time last week at Oculus Connect giving advice to developers across the App Reviews, Start session, and hallway conversations.</blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
Since we started, my reaction to the vast majority of mobile VR titles has been that they have fairly straightforward tactical quality and design points that have failed to be addressed.<br />
Many of these are almost checklist things, and I have pointed a lot of them out over the various app reviews I have posted.</blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
However, it is possible to check all the boxes and still wind up with a competently implemented game that just doesn’t have any soul.<br />
I see a lot of games that are aimed at filling a slot — “a FPS”, “a strategy game”, “a puzzle game”, “a space game”, “a roller coaster”, and so on.<br />
“Doing reps” with game development is an important part of growing your skill set, and generally a necessary step on the path to doing something important, but don’t be surprised when the project with all that time and effort poured into it vanishes without a trace in the market.</blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
<span style="color: #1d2129;">If you intend to do reps, plan and optimize your strategy around maximizing your experience gained while still producing something of modest value with little expectation of return. </span><b><i><span style="color: red;">When you want to make an impact, I think the most important advice is:<br />Build something that at least some people LOVE.</span></i></b></blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
<b><i><span style="color: red;">Games are a matter of taste, which varies widely. Hitting on something that everyone thinks is fantastic is unlikely. If it turns out that you have made something that at least a few people are ecstatic about, even if lots of people think it is garbage, then you have a better kernel to grow from than something that is widely considered just ok.</span></i></b></blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
<b><i><span style="color: red;">For instance, I'll stand up for Daedalus and Thumper. Bait and Pet Lab aren't really to my taste, but I know people that do love them. There is definitely something there. On the other hand, there are hundreds of games on our store that have probably never gotten a single heartfelt customer recommendation.</span></i></b></blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
The difference between something you use and something you love is the details, both engineering and design.</blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
We have had some borderline-acrimonious discussions internally around “delight” — I argue that applications should be functional first, because delight doesn’t last, and often comes at the expense of efficient function. Games are different, and many can almost be viewed as essentially just a sequence of delightful interactions.</blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
Watch your players very carefully as they play. The smile, grin, cheer, or even focused look of intensity is your signal to chase. Design inspiration may provide the initial points, but hard work iterating on it is how you hill-climb to the best version.</blockquote>
<br />
<blockquote class="tr_bq" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 6px; margin-top: 6px;">
If you have even a few true fans, keep your project alive! VR is still very young, and most of the potential players of your game haven’t even thought about buying a headset yet. Land’s End was a great experience three years ago, and it is still a great experience today.<br />
This is easy to screw up. I wanted to go back and add some things to the old Oculus Arcade project, but I found that it hadn’t been archived with all of the support libraries, and I wasted an afternoon trying (and failing) to get it building with current systems.</blockquote>
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-77992095519191406042018-10-13T08:59:00.001-07:002018-10-13T09:22:16.215-07:00BFIG Judge Mayor MaxListen, I totally don't care at all about winning awards. What I truly care about is getting nominations. And I realize I've made a huge mistake. Or maybe I simply just don't belong. When you submit to BFIG, you have to pick a category for your game. These were the options:<br />
<br />
"Compelling game Mechanics"<br />
"Innovation in Art and Design<br />
"Experimental Game Design"<br />
"Multiplayer and Connected Gameplay"<br />
"Student"<br />
<br />
Both last year and this year I've chosen "Multiplayer and Connected Gameplay" as my category. Described thusly:<br />
<br />
<blockquote class="tr_bq" style="-webkit-tap-highlight-color: transparent; background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; font-family: "Open Sans", sans-serif; font-size: 16px; margin-bottom: 15px; outline: 0px; padding: 0px; text-size-adjust: none; vertical-align: baseline;">
<strong style="-webkit-tap-highlight-color: transparent; background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; margin: 0px; outline: 0px; padding: 0px; text-size-adjust: none; vertical-align: baseline;"><span style="color: #444444;">Description:</span></strong> </blockquote>
<blockquote class="tr_bq" style="-webkit-tap-highlight-color: transparent; background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; font-family: "Open Sans", sans-serif; font-size: 16px; margin-bottom: 15px; outline: 0px; padding: 0px; text-size-adjust: none; vertical-align: baseline;">
<strong style="-webkit-tap-highlight-color: transparent; background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; margin: 0px; outline: 0px; padding: 0px; text-size-adjust: none; vertical-align: baseline;"><span style="color: #444444;"></span></strong><span style="background-color: white;"><span style="color: #444444;">The Multiplayer and Connected Gameplay category seeks games that promote a shared experience with multiple people at its core. This includes both online and local multiplayer games. Local games include traditional turn-based play by sharing a controller and simultaneous play by having multiple people play using the same controller or multiple controllers at once. We are looking for games that are enticing to bystanders, encouraging those not playing to be a part of the experience. This can include the audience guiding the individual(s) playing, aiding the player(s) by sharing information, cheering for a close match, and anything else that can make a spectator feel invested in the game even if they aren’t the ones directly playing it. Games designed with live streaming in mind that compliment game streaming culture are highly encouraged.</span></span> </blockquote>
<blockquote class="tr_bq" style="-webkit-tap-highlight-color: transparent; background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; font-family: "Open Sans", sans-serif; font-size: 16px; margin-bottom: 15px; outline: 0px; padding: 0px; text-size-adjust: none; vertical-align: baseline;">
<span style="background-color: white;"><span style="color: #444444;"></span></span><strong style="-webkit-tap-highlight-color: transparent; background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; margin: 0px; outline: 0px; padding: 0px; text-size-adjust: none; vertical-align: baseline;"><span style="color: #444444;">Examples of games:</span></strong><span style="background-color: white;"><span style="color: #444444;">Towerfall, DayZ, Rocket League, Jackbox Party Pack</span></span> </blockquote>
<blockquote class="tr_bq" style="-webkit-tap-highlight-color: transparent; background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; font-family: "Open Sans", sans-serif; font-size: 16px; margin-bottom: 15px; outline: 0px; padding: 0px; text-size-adjust: none; vertical-align: baseline;">
<span style="background-color: white;"><span style="color: #444444;"></span></span><strong style="-webkit-tap-highlight-color: transparent; background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: 0px 0px; background-repeat: initial; background-size: initial; border: 0px; box-sizing: border-box; margin: 0px; outline: 0px; padding: 0px; text-size-adjust: none; vertical-align: baseline;"><span style="color: #444444;">This is the Category for You If…</span></strong><span style="background-color: white;"><span style="color: #444444;">…you would like your game to be judged primarily by its multiplayer experience, both as a player and as a spectator.</span></span></blockquote>
<br />
And I should have learned. Because after you submit, you get some judges to play your game and provide personalized feedback, whether or not you're accepted into the festival (which is awesome). Last year, I noticed that the question prompts that the judges use for their feedback didn't apply very well to my game. What I didn't realize is that they were specific to my category. So this year, when I submitted my game and choose the same category and got back the same form with the same questions, I realized that my game just doesn't fit the "Multiplayer and Connected Gameplay" as it is judged. These were the questions the judges used to evaluate Flock of Dogs [my own responses if I were in a judge are in brackets below]:<br />
<br />
<br />
<h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;">1. Controls: Are the controls easy to pick up and understand?</span></h3>
[Flock of Dogs has very many different control schemes, bc there seems to be a limitless number of ridiculous and wondrous things you can do in this game! Admittedly, the recent changes to whale piloting has been frustrating for some, but I hear the dev plans to change that ASAP. Also, many fine folk are not familiar with twin-stick shooters and that has a learning curve, but pays out in the end because of the sweet feeling of twin-stick action! So neither here nor there for 'easyness'.]<br />
<br />
<br />
<h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;">2. Competition: How well does this game bring out the competitive side of you when playing with others? </span></h3>
[Flock of Dogs provides a much needed respite from the deluge of competitiveness in multiplayer games and especially local multiplayre games. There is no PvP, so no arena or rounds. There is the flock and the whale and they either fly or fall together. And where the few games that claim to provide a system for cooperation, you're often left still imbrued in underhanded competition for high score, or being the first to collect loot. Flock of Dogs outstandingly creates a sense of being part of something bigger than yourself, more important than your self. Like mopping a dirty whale. Or protecting the pups of the flock, while your brother and sister dog riders fend off flying monsters. Or something. So basically like anti-competitiveness.]<br />
<br />
<br />
<h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;">3. End Game: When someone wins the game, does it feel fairly awarded? Does the winner feel a sense of accomplishment beating others?</span></h3>
[Can someone have the dev notify me know when someone gets to the end of Flock of Dogs, pls? I've literally played this game for hundreds of hours and I seldom get to the third level. From treehouses, to whalesmiths, to beast caves, to floating sky inns, there's so much to discover. And also I always feel like a winner, so I don't what it feels like to not feel like how I feel so...N/A.]<br />
<br />
<br />
<h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;">4. Audience Engagement: Does a bystander watching the game feel invested in the experience? Are they likely to provide advice during the game to a friend or root for a player or certain outcome?</span></h3>
[Most bystanders don't know what the heck is going on tbh, oftentimes approaching the screen feeling compelled to utter their thoughts, "What is going on?" I've heard the dev mutter that they hate explaining to people 'what is going on' or answering 'what am I supposed to do' because they've created a new display of the fantastic in the form of a video game, which is supposed to be played and discovered. If the Flock of Dogs dev wanted to write a book, (well, I heard they want to write a book, too) then they'd have written a book. I might offer an extremely minimal critique, which some might even say is a plus, but while the bright colors are alluring, providing hope in a dismal, irony-saturdated, post 2016 world, the imagery is a little busy, difficult to determine what's important. The environmental art is unfinished and there is difficulty in distinguishing between ineratctable objects and cosmetic details. The relentless hue saturation is also fatiguing to the eye, but I heard the developer is struggling with restricting his palette while maintaining readability while having up to 8 players on screen together. I do not envy him or her. Also, the music, both the intro tune created by the dev's cousin and the song that ushers in the beginning of the adventure that was created by the dev's step brother, are lovely. Audiences cannot be pulled away.]<br />
<br />
<br />
<h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;">5. One More Turn: How likely are you to continue playing after the game has ended and a winner is declared?</span></h3>
[Very, very likely.]<br />
<br />
<br />
<h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;">6. Streamer Appeal: Is this a game a Twitch audience may find enjoyable to watch and interact with?</span></h3>
[Belies a misunderstanding of Twitch. In my experience, one watches (a) games one is into and/or (b) streamers that one finds charming. Actual Twitch integration seems gimmicky and doesn't really drive regular viewership, except for maybe that marbles game. Anyway, pretty sure I saw Lirik and LethalFrag wearing Flock of Dogs t-shirts on stream the other day. So yeah. Huge appeal.]<br />
<br />
<br />
<h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;">7. Final Comments/Suggestions for Developers (Open Ended): Please say a few final words to the developer about their game including suggestions moving forward with the game and if there were any technical difficulties starting or playing the game. </span></h3>
[This game is a miracle. From one dev to another, my highest respects. I simply cannot wait until you finish this game. Believe in yourself and your beautiful, sensitive, heart.]<br />
<br />
<br />
<br />
*********************************************************<br />
<br />
Welp, I won't pretend to understand how, but Flock of Dogs didn't receive a nomination for best "Multiplayer and Connected Gameplay" game.<style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style><style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style><style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style><style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style><style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style><style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style>mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-2939445275359120822018-09-10T14:52:00.003-07:002018-09-10T15:06:19.143-07:00Movie Stars With Flashy Cars and Life With The Top DownOh boy I'm living the LA dream now. I went to the Strawberry Game Jam at Glitch City LA.<br />
<br />
Glitch City LA is a coworking space created by successful indie devs in LA. It's not quite the Hollywood of game making, which...idk where that would be. Maybe sf. But it's cool.<br />
<br />
See, the meetups I go to usually have mostly hobbyists and dreamers, full of passion and naivete. Oftentimes, people are trying to transition from other related fields and most are working on their first game. I fit right in. Hanging out at Glitch City feels like the indie big leagues. The members have actually released games and have expertise. I've been there twice and and I've chatted with a guy who is a game designer on the Last of Us 2, which is the first triple A dev I've ever met. And I met the guy who made Threes (you may have played its clone 2048) and he's also worked at Thatgamecompany. I was first invited to Glitch City by the guy who made Quadrilateral Cowboy (and Thirty Flights of Loving, which was influential to me a long time ago). Also part of their community is the guy who made Hyper Light Drifter, people who worked on Frog Fractions 2, Where the Water Tastes Like Wine, and more!!!!!!!!!!!<br />
<br />
Anyway. It's a cool place and the people are friendly and it feels LA hip. It's in a converted warehouse with a loft, electronic equipment everywhere, open space desks, half empty bags of the trendy flavors of chips, messy fridge, moderately clean bathroom. This is in contrast to the Boston IGC, that shares a coworking space with Kayak in their slick, highly funded, tech startup Cambridge nook, fitting for an episode of Silicon Valley. Not unlike the OC Indies in their highly funded business complex with their delivery pizza, pallets of bottled water, and regularly cleaned floors, which could also do for an episode of Silicon Valley. Whereas the Nashville Indies group that meets in an extremely bland office building after hours and everyone is a little dorky, which would be fitting for an episode of The Office.<br />
<br />
To be honest, The Office is better than Silicon Valley. But I do love both. And I can't think of a sitcom that would use Glitch City as a set piece.<br />
<br />
I've been to Glitch City for a board game night and I went for their 'game jam', which is really more of a work jam. Glitch City opens to the public from noon to 7 pm on every other Sunday. You pay $10, you work on whatever you want, you can ask for help, about half way thru there's a time when the group gathers and everyone can ask a question, and at the end anyone can showcase what they've been working on. And there's snacks. I ate my fair share of snacks. It's recommended that you eat lunch before you go, since they only have snacks, but whenever I see such recommendations, I figure that my snack intake is generally a fixed rate. So I'm better off not skipping the meal before, from a purely caloric point of view. Nutrition is so complicated!<br />
<br />
Right, so what I did with my time was to fix up the reworked solar panel and do some environment art. I'm excited about replacing the old monster spawn structures, which were just brown squares and lines. Going to replace it with a thorny monster den, which can catch fire, and can prick the dogs when they fly over. And with a rocky monster den, which can only be destroyed by cannonballs and ramming. And then in later biomes, or whatever I call the different sets of proc gen rules I come up with for the different levels, I'll make variations of the monster dens.<br />
<br />
Here's a gif from some of the new environment art: <span style="color: #14171a; font-family: "segoe ui" , "arial" , sans-serif;"><span style="font-size: 14px;">https://twitter.com/flockofdogs/status/1039044973084078081</span></span><br />
<br />
After the jam was over, three of the Glitch City members played my game for about 20 minutes, then talked to me about its design and my goals for another half hour or so.<br />
<br />
Here were some of their thoughts:<br />
<br />
- Switch the docks on the whale to nests. This is cuter and disambiguates from the 'whale dock' affixed to the islands that the whale docks at. <b>(Simple, perfectly fitting suggestion; implemented it when I got home)</b><br />
<br />
- Can the A button and the X button be consolidated? The A button is used for accessing stations or 'getting on' things, while the X button is for picking up and putting down items. <b>(Sounds like a very desirable goal, but I'm not sure how well it would work with how crowded it gets on the whale and if players' intention would be hard to guess when they're touching, for instance, a dog they might want to mount, the sack of dog food they might want to pick up, and also touching the laser turret underneath the whale flipper they may want to man...idk. I probably ought to try it, test it with folks, and make a decision then. Could be a huge help with the learning curve.)</b><br />
<br />
- Maybe use a mini cam for entering the belly of the whale and make it 'bigger on the inside'. <b>(Imaginative idea. Would allow me to replace the barrel inventory system, which I don't like the aesthetic of. There's something I do like about the consistency of the physical space in the game as it is, however. The treehouse and the buildings take up exactly the space they appear to. Same with the whale. The only time, currently, that I 'cheat' is when the whale enters a beast lair and then gets warped to a big brown cavern for the beast fight. Anyway, low priority at the moment, but maybe.)</b><br />
<br />
- More discovery! They liked the opening area with the fast pace discovery after discovery, such as finding the solar panel, finding flying dogs, finding a whale, packing up the whale...and then that kinda slows down as you get in to combat. <b>(This is a hard one to implement. It's like yeah...I'd love to be full of quirky, novel world building interactivity ideas endlessly, but it's taken me a long time to come up with the ones I got. Tough to replciate the million dollar idea of pegasus dogs....And while I get that the feel of the game once you enter the crew combat is very different from the whimsical discovery beginnings, I love both, and I'm hoping that they can interplay with pacing, help create a full world, and provide replayability)</b><br />
<br />
- Submit to Indiecade? <b>(Turns out I would be too late. And one guy said he'd wait until I'm finished.)</b><br />
<br />
- Try to incorporate more 'physical' UI, such as the inventory circle. Suggested maybe show the area<br />
from which dogs can nest - previously known as docking - on the whale. <b>(I think it's a good idea. Something to keep in mind. I have a few ideas.)</b><br />
<br />
- Why can't the dogs fly over the whale? This would feel more consistent with expectations, one guy said.<b> (Not sure about this one, but I could easily test this out, which I've had it this way before, probably over a year ago tho. Currently, I like the physicality of the game and the things in the air bumping into each other, the dogs with the monsters, the dogs with other dogs, and dogs and monsters with the whale. It also makes it more difficult to access the open nests - previously known as docks - on the whale when your dog is dying. Also, it allows for the dogs to push the whale, which has been helpful in rare instances when the whale has gotten stuck. Idk.)</b><br />
<br />
- The red ring of death looks like it's filling up, instead of being a count down. <b>(To be honest, this was a placeholder animation. I implemented a quick fix when I got home making the ring gradually totally disappear, instead of only the top layer disappearing, which was giving the impression of the ring filling up, because the lower layer, that didn't disappear, was a brighter red. Would like to redo this UI/animation, but low priority atm.)</b><br />
<br />
- One of them, like a minute into it, asked if I'm going to do online multiplayer. Then afterwards when discussing, one said he's not so sure he'd even be interested in playing it online. <b>(Eh. I mean, they're both privileged to be part of a great gaming community with super easy access to local multiplayer on almost any platform. Glitch City has like 20+ coworking members. like 18/20 of my best friends don't live in my state.)</b><br />
<b><br /></b>
<b>- </b>They disliked the idea of simply putting it up on itch.io and see what happens and see what people ask for, such as online mp. Maybe putting it on itch would be ok if done in conjunction with other things. <b>(Yeah, I have no idea what to do in terms of marketing and release and community building.....except for Parsec!)</b><br />
<b><br /></b>
Overall, they said they enjoyed it. Wanted to play more of it and encouraged me to come back to Glitch City, which is in my plans.<br />
<br />
Ayaya. Every time I go to blog I say to myself, "This time, only spend half an hour." but then I take a few hours. For no good reason. I reread this post and I just don't understand what took me so long. Whatever, doesn't really Matterhorn. Hafta walk my dog now. Bye bye.mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-8570277607147604812018-08-28T22:51:00.004-07:002018-08-28T22:51:59.634-07:00"There's nothing to do here. Some just whine in complain."LA Game Night was great. My friends were there. Some people really liked my game. Met the indie dev who made Thirty Flights of Loving and Quadrilateral Cowboy and he was cool (and liked Flock of Dogs).<br />
<br />
LA Game Night also gave me a clear goal: fix up my demo. Which let me not worry about online multiplayer. Which means now that LA Game Night has passed, what should I do?<br />
<br />
How about make a Steam page? https://store.steampowered.com/app/812380/Flock_of_Dogs/<br />
How about make an online store? https://shopofflockofdogs.bigcartel.com/<br />
How about start Instagramming? https://www.instagram.com/flockofdogsgame/<br />
<br />
Well, I did that. I ran a 10k. I asked a girl to go hiking with me. I hosted youth gaming all nighter. Time marches on.<br />
<br />
However, the trouble with working alone is that when you return to your solo project, it's not like some invisible helper did anything while you were away. Nothing changes without you. Anyway, so I decided to add dog landing/taking off/and extra flying animations. Which I've been posting on social media for your information.<br />
<br />
Anyway. The next event I'm doing is Boston Festival of Indie Games on September 29th.<br />
<br />
Here's my plan:<br />
- draw a new thorn bush and make the thorn bush block both air and on ground movement, so that players with the new ability to land their dogs on islands, can't skip the opening section of the Flock of Dogs demo<br />
- figure out some kind of visual indicator for 'whale low on water' and 'whale low on health'<br />
- make 'press y to show color' work even if you haven't 'pressed b to wake up'<br />
- redo the solar panel with a solar vacuum backpack thing (think Ghostbusters, except sucking up suns, wait....what is Super Mario Sunshine gameplay like? You shoot water, right? Do you suck up suns? Didn't have that game....waaaitt...what about Luigi's Mansion...I didn't have that game either...what do you do in that game?)<br />
<br />
Then do online mulitplayer!<br />
<br />
It's beginning to feel like this is dragging on a long time. I mean the whole 'make a video game' deal. At about 2.5 yrs since starting the project. About 9 months since I quit my job. The negative thoughts I have vary between a fear never finishing or fear of not being able to solve certain outstanding technical problems I have and then scared I'm getting lazy. Those bother me more than a fear of poor reception or no sales. Although I think I would feel pretty horrible if I achieve the quality of game I think I can make and then it just is a total commercial flop. I'm still pretty happy working on the game and, honestly, I have this nagging feeling that someone is going to beat me to market and I feel this need to rush. Even though I've felt most satisfied recently by going back through code and fixing up stuff and fixing bugs. And I hate feeling rushed when I do art and animation. I've always hated feeling rushed doing art. I remember at summer camp you had 1 hour each day to get your craft finished and the crafts lady was always shouting at us to get your scissors, get your glue, go go go. Stressful. When I took a painting course in college that was just a Friday studio day, it was lovely. You had 6 hours of studio time, if you wanted. Chill.mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-62195983978045610482018-07-23T16:15:00.001-07:002018-07-23T16:16:58.049-07:00You Leave Me No Choice But to Smoke You OutNow, adding fire as an environmental hazard is nothing new in video games. But howabout smoke that gets your whale smokey so you have to use your mop more? Pretty dope.<br />
<br />
Everyone knows whales love to roll around in fluffy smoke stacks. Now that I say that, I realize that I programmed a whale roll ability a long time ago, but didn't do that in this gif below. Oh well.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd-3VkWRhyphenhyphen5cIUlIdsA9UUzm0TkYLPTDmkvVRsGL-jUFdbDvqWqzI_FjbXEGuBHud2UjbTyjN0JCDPXph9sgYAZGyb7hKXM6EPPInHhoUqwdCAWEKc8g9yqBBkNT-YwdVvGPsiPsGjkO8/s1600/smokey_whale.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="504" data-original-width="560" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd-3VkWRhyphenhyphen5cIUlIdsA9UUzm0TkYLPTDmkvVRsGL-jUFdbDvqWqzI_FjbXEGuBHud2UjbTyjN0JCDPXph9sgYAZGyb7hKXM6EPPInHhoUqwdCAWEKc8g9yqBBkNT-YwdVvGPsiPsGjkO8/s320/smokey_whale.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEincHlC-MRFCMUToLg_XCZTZ89VbwZ5nSjHKvbeDLmjIS6kOqN5l_3RlXV4ijcfhaGpqsREvcGL5karT7XtT2Ei8IFI8szn9KRs3gCnKELLqhzahwH08XRbDxo-GpaPY7qpUdoBnysQ8U4/s1600/hut_fire2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="504" data-original-width="560" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEincHlC-MRFCMUToLg_XCZTZ89VbwZ5nSjHKvbeDLmjIS6kOqN5l_3RlXV4ijcfhaGpqsREvcGL5karT7XtT2Ei8IFI8szn9KRs3gCnKELLqhzahwH08XRbDxo-GpaPY7qpUdoBnysQ8U4/s320/hut_fire2.gif" width="320" /></a></div>
<br />
You can't tell from the gif, but when dogs fly into the flames, they take damage. And yes, I do realize that the flames and the mud and the smoke currently do not affect the enemies, but that's on my to do list. As well as a adding whale and dog medicine for smoke induced asthma. And maybe like the fire can be used when the flock goes camping and someone wants to make hot dogs or whatever.<br />
<br />
Also, piles of dirt. Piles of dirt that splash mud on your whale so that you can use your mops more!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdO1HEIjDhqtBFsXEd5iR-gScloPJUwipPxIPQQm7raCe0BYpNwkmJPhLfI0SNCs3XCfZWRbbwvBdq4EeCsbve0D_orZUxboU87EU8OTxCBoyX_3zQnAGqYgAnILjqR5kfJ2q7V5PM6ow/s1600/hut_flame_and_dirt.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="504" data-original-width="560" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdO1HEIjDhqtBFsXEd5iR-gScloPJUwipPxIPQQm7raCe0BYpNwkmJPhLfI0SNCs3XCfZWRbbwvBdq4EeCsbve0D_orZUxboU87EU8OTxCBoyX_3zQnAGqYgAnILjqR5kfJ2q7V5PM6ow/s320/hut_flame_and_dirt.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitL2ksxW3_BRYT3pceAEgjOfokHIr2RARuGapLL6J-204_zEQLon2Big3pOFd1zBiuLpBwu6EcmLBhZteoZ7jiuow41xBKcBxkEDo6jx4Y6cY7Ef6qbFFbw8gD1EcJwyERfd2jWlE1NEM/s1600/dirty_whale.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="504" data-original-width="560" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitL2ksxW3_BRYT3pceAEgjOfokHIr2RARuGapLL6J-204_zEQLon2Big3pOFd1zBiuLpBwu6EcmLBhZteoZ7jiuow41xBKcBxkEDo6jx4Y6cY7Ef6qbFFbw8gD1EcJwyERfd2jWlE1NEM/s320/dirty_whale.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
There's no limits on how dirty a whale can get.</div>
mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-92219439298310823672018-07-22T10:44:00.005-07:002018-07-22T10:45:07.076-07:00Getting Ready For LA Game Night: Level 3So at the LA indie Meetup, I met a guy who has just started hostong indie game devs night at a bar in Hollywood. And now, Flock of Dogs will be there yipeee!<br />
<br />
https://www.facebook.com/events/214179942753851/<br />
<br />
It's free, it's a bar that's themed after the Star Wars cantina, which is kinda cool, but it's so hard to love something so broken. By which I mean, Star Wars. The bar is cool. There'll be like 3-4 indie games being showcased and then several of the booths at the bar will have old school games set up, like Goldeneye, Mario Kart, Smash Bros. Beware. Parking isn't easy!<br />
<br />
Anyway, in anticipation of this, I've gone back to smoothing the opening of Flock of Dogs. When I describe the changes, they sound very minor, but this whole 'teach without telling' approach that I value so much has been challenging to implement and I'm only getting there by bits and pieces. For instance, last night, night before last, I demo'd the game with 4 non-video game players and 1 grown up ex-video game player.<br />
<br />
(They also found a new bug that like any of you reading this never did! Which is that if you place an item at the top of the ladder inside the treehouse on the 1st floor of the treehouse, in just the right spot, when you get off that ladder you can be forced out of the treehouse and then you can walk around in the sky! It's funny how excited that makes people and it makes me wonder if it's just like...better to leave that kind of thing in. It was a recoverable situation, all that sky-walker had to do was walk next to the ladder, or sky walk up to the nests and get on a dog.)<br />
<br />
They struggled and solved many things, like many groups of players have and that was rewarding, such as "Oh! I can get water from the cloud!" and "Can the whale fly? Oh my god" and with my new mop and hose delivery animation in conjunction with the new environmental hazard: the dirt pile, they figured out the purpose of mopping! Anyway, they struggled a lot with getting out of the treehouse beds and up and down the ladders. It's strange how with more experienced players, I've seen these same struggles, but because they figure out it quickly, I haven't considered changing certain design stuff, but really, I shouldn't ignore what a player's intuitive understanding of how the ladder should work in the treehouse, regardless of how quickly they figure out how it actually does work. For instance, when players are trying to climb up to the dog nests, it seems weird you can walk up the nearly vertical branches of the left and right of the treehouse but not up the trunk on the 2nd floor. So I extended the 2nd floor ladder by a bit and now you can go straight up to the top dog nest. You can see the slight difference below, but I think this will be a significant anti-frustration change for some players.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOAp0rn7GsOBr2agmmfeWkNHzwuBE0oIRSXEIy67CA2-ml853LzS4HQtTO2LViw_-X9fZC5EO9xY1ghyphenhyphen_v2BqrdUV5NvVPoAI1nR7LziHkDlKu2VsE5fq3u2tD2q4q-63qXm_Se9VYX-g/s1600/treehouse_interior_comparison.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="316" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOAp0rn7GsOBr2agmmfeWkNHzwuBE0oIRSXEIy67CA2-ml853LzS4HQtTO2LViw_-X9fZC5EO9xY1ghyphenhyphen_v2BqrdUV5NvVPoAI1nR7LziHkDlKu2VsE5fq3u2tD2q4q-63qXm_Se9VYX-g/s640/treehouse_interior_comparison.png" width="640" /></a><br />
<br />
Also, there's not really much of a purpose in ever getting back into the beds at the start of the game, except for the simple thrill of it (which I do enjoy), but they cause a lot of frustration and confusion when people keep accidentally going back to bed. And most new players are just trying very hard to just do 'the right thing' and not test the limits of the game's rules. So I just simply made the beds' hit boxes waay smaller. I also removed the instruction to 'Press X to Grab' which gets in the way in those first few seconds because then players start grabbing their blankets prematurely. And while I could just disallow all this 'unwated behavior', I would never do that. Discovery and world interactivity are super important to me. It's just a question of matching intentionality to player input, which is hard. Also, I made the tree carvings different colors and the camera now starts zoomed waay in, until at least one player has made it out of the treehouse, then it zooms back. This will help players (a) read those instruction tree carvings and (b) it creates a island reveal moment, which is cool. These design decisions seem clearly like good to me ones and they've been sitting in front of eyeballs for 6 months. Anyway, feels good to make improvements, even if they're slow in the coming. And the results will be tested July 29th at Scum & Villainy!<br />
<br />
And I've made other changes too!mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-90718203505495582382018-07-05T11:09:00.001-07:002018-07-05T18:59:16.964-07:00Californian IndependentsI have now attended meetups of both the Indie Dev Club (the LA indies) and OC Indie Developers. The LA meetup was at a bar and had a lot of people showing up for the first time. Probably more audio devs than game devs. Around 30ish people showed up and I was able to demo my game along with a few other games on a crowded wood table on a back patio with no power outlet. A little awkward.<br />
<br />
I met several people and made some connetions and missed some connections. First, there was Evan from Ohio who'd just moved to LA to work for a tech startup after spending 5 years as a solo indie dev and having no success. He said he wanted to warn people to not go full time. Whoops. He and I did get along tho, just chatting about the games we liked and didn't like. He made an arena shooter where you play as a laser crab like thing and that can climb walls and lunge at people.<br />
<br />
<a class="link" href="https://deceivergame.com/" style="background-color: #f6f7f8; color: #00a2c7; cursor: pointer; display: inline; fill: rgb(0, 162, 199); font-family: "Graphik Meetup", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif; font-size: 16px; stroke: transparent; text-decoration-line: none;" target="__blank" title="https://deceivergame.com">https://deceivergame.com</a><br />
<br />
His laptop ran out of power before mine and then he decided to leave, so I didn't get to play it. By the time my laptop got low on power, the one table in the back patio that was near an outlet was available to I moved to that one.<br />
<br />
So, you think it's infuriating to watch well intentioned lovely people struggle to play your game? Well, watching a mildly interested drunk Australian who frequently receives text messages was the worst. We may end up being friends, because he was a chill dude and I saw him at another LA game relate event, so if he reads this, oh well. But man.<br />
<br />
Also, two men in collared shirts and ties approached me and turned out to be a principal and a teacher at a local elementary. They saw my game and people playing it and wanted to know what was happening. I explained we were part of a meetup. They were interested in having me/us come to their school and teach kids programming for games. They were also very drunk. I directed them to out meetup coordinator and gave them my number. I don't think anything's come of it. You know, I'm like that super hot girl at the bar who gave her number to a guy who's just too scared to call back because I'm just so super hot.<br />
<br />
So while the LA indies was like at a cool bar, but outdoor on a back patio with no outlets, the Orange County meetup was at a tech office space with excellent graphically designed logos in a business park in Irvine. All nerdy dudes and no women, with a formal structure of each game being demo'ed one at a time. And free pizza. It effectively had something that I've been wanting the Boston indies to do: a focus group experience. While the other games were single player, I was able to have 8 guys playtest my game for 15 minutes and then the whole group listened to me explain abotu the game and then I posed a few questions and got some helpful feedback.<br />
<br />
Specifically, I told them my struggle with playeres identifying themselves at the start of the game. Some players very quickly leave the treehouse and then deciding on whether or not to zoom the screen out or follow them is tricky and so I had been thinking about adding a player select screen. Somebody proposed using just the treehouse as a starting level and everyone can still wake up there and then once every player has gone down the ladder, it transitions. This was a pretty elegant solution, I thought. Better than my half bakead idea of using the cloudy background and players 'waking up' in the clouds and then when everyone's ready, it drops away.<br />
<br />
I have sorta implemented this, but not exactly. What I've currently done is to make the island the treehouse is on much smaller and to immediately zoom out to the normal viewing distsance as soon as one player leaves the tree, instead of waiting for the whold group. This way, no matter where you walk on the island, and no matter if other players are still in the treehouse, everyone's on the screen together. The issue remains though that if someone climbs up to the dog nests and takes flight, then the camera has to choose whom to keep on screen. I'm considering starting with the nests empty and the players have to work together to summon their dogs. As in, if 5 people are awake (read: 5 people are playing), then all 5 have to climb down from the treehouse and simultaneous light a magic fire that will summon the dogs. Or something. This means that no one will be able to get off screen until everyone has figured out what color they are, which buttons are A and B, and how walk around.<br />
<br />
Anyway. I'm going back and forth working on that and network code. I'm excited about these indie groups. Especially 2 of them! I get to go to 2 meetups a month, which is good, because it gives me deadlines that aren't too stressful, but still motivating, and they also have cool people into gaming, which is nice.mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com2tag:blogger.com,1999:blog-4904804009453176306.post-1296934608505274572018-06-28T14:36:00.000-07:002018-06-28T14:36:22.722-07:00Flock of Dogs OnlineSo there's not much to show, literally, for progress on game. I'm just redoing everything with networking!<br />
<br />
There's basically been three things to solve. How to connect players' computers through the internet, how to sync things between those computers during gameplay, and how to sync computers that join late.<br />
<br />
I've opted to use the Photon Unity Networking (PUN) plug-in. There are a few reasons for this. (a) It's been around for several years and has a decent sized community and good documentation. (b) It provides servers (read: computers that are always on and waiting for people to access them), instead of relying on connecting players diretly to each other, because that fails a lot because of firewalls and/or routers, or so I've read. (c) Those servers are free for up to 10 concurrent users, which means it will be free while I'm still developing (this pricing scheme is common to other server providers). (d) When you do start having to pay, it's a per user basis, rather than per data. This is good for me, because each user will be passing around a lot of data (contrast this with turn based mobile apps, like Words With Friends, where each user only passes a very tiny amount of data every minute or so versus a persistant action game where you're constaly syncing positions, triggering animations and sound cues, syncing large game states.)<br />
<br />
So PUN is fun. Following their tutorial is pretty easy and solves the first big problem of connecting players into the same room. The method is to register your game with a unique id with PUN's database. Then, in game, use PUN's API to call some connection methods that connects the local computer to PUN's server (or lobby). Then PUN recognizes your application's id and can then lump you together with other PUN connected computers matching your id. So if you and I both run Flock of Dogs, connect to PUN's server, then we can initiate a game together. Currently, that means one of us creates a game with a game name and other person types that game name in and connects to it. Then Flock of Dogs Online begins. Yayay.<br />
<br />
Then comes the second big problem. Both players are in the same 'game', but all that means is that they're both running copies of the same application (Flock of Dogs) on their local computer and they also have a way of communicating with each other via the internet (!) which is facilitated by their connection to PUN's server. So a connected game rather is just two copies of the game running concurrently with behavior synced by passing data on the connection, which means I have to write code that says 'player 1 moved left a few inches' and 'player 2 just got on the blue dog' and 'the whale died' and send that in a message to the connected computers. Now, you want to be careful about how many/how frequently you send these messages over the connection because (a) it takes many milliseconds to send the data from your computer, to PUN, to the other players' computers. (b) I think there's still a cap on data / user from PUN's pricing scheme, so I might eventually hit that if I pay no attention.<br />
<br />
So I read stuff about how networking works at a low level and that was interesting, but I'll just tell you the way that PUN implements stuff.<br />
<br />
So the first way to send info using PUN that I learned was through Remote Procedure Call (RPC). You add a tag to a function in your code and when you call that function through using PUN's RPC calling method, it will alert the other connected computers to also run the matching method. So when you press the shoot button, instead of just having a normal bit of code for that you have an RPC tagged bit of code and then PUN knows to tell the other computers to have their copy of your player also shoot. So exacmples of PUN use are like 'player 2 just got on the blue dog' and 'the whale died'.<br />
<br />
The second way to send info through Photon serialization stream. This is a function you implement on certain game objects that you want to send information about. You also have to define the ownership of the object as either locally owned or owned by another computer on the network. Then you define the function in two parts: if the object is owned locally (by you) or owned remotely (by another connected computer). In the first case, you send serialized data. That is, you send data that has to be serialized (or serializable) which means reduced to bytes. You can't just send your objects, like an instance of the dog class or an instance of the whale class. You have to break it down into integers, floats, or bools. Vector3s also work, because there are built in functions that automatically serialize Vector3s. So the use-case for this is for syncing the position of a flying dog or a flying whale. PUN will automatically call the OnPhotonSerialization () function many times a second. So you send the position of the dog you're in control over every fraction of a second. And in this case, since you care more about the current position of the dog on your friends' computers as it is on your computer more than you care that your friends see your dog travel through every position you did, you can tell PUN to send the data as fast as possible and don't wait to verify if they were received. That's something that RPCs do by default, which is to resend the call, if it never gets acknowledged by the remote computer. The message not getting through is a possibility every time you send something over the internet. If you turn on 'unreliable' in your Photon serialization settings for that gameobject, then, yes, it won't be reliable, but it will be faster. And if you're sending the position of your dog many times per second, then hopefully your friend will regularly receive the data that is only a fraction of second old, instead of having to wait for any resends sometimes.<br />
<br />
So anyway, that explains the sending part of the OnPhotonSerialization() function. On gameobjects where you're not the owner, Photon will the OnPhotonSerialization() function object with the data that was sent (e.g. a Vector3 that represents the position of this dog, as sent by its owner a fraction of a second ago). So inside the function you check if you're not the owner. If you're not the owner, then you read the data passed in and cast it as a Vector2 and set your dog's position to that spot. Cool.<br />
<br />
Now, there's details I'm leaving out, but I'm getting antsy. But generally speaking, RPCs and serialization streams is how I solve the moment-to-moment synchronization of gameplay.<br />
<br />
Now, how to handle joining a game late? Once you're in the game, sure, every moment that Photon streams you data you'll update your dogs's and yoru whale's position. Every time an RPC is called to let you know that your buddy in Nebraska fired a bullet or did a flip or landed his dog then you'll know. But how do you know how many hearts that dog has when you join? How do you what upgrades the whale has gotten? How do you know how much water or health or solar energy the whale has stored up? Or what items in its belly? Or if a particular player has any harpoons? Essentially, how do you know the state of the game?<br />
<br />
(Notice this is essentially the same question as loading a save game file, and I've never implemented game saves).<br />
<br />
So this is where using PUN's RaiseEvent() function comes to the rescue and it's fantastic. This is most similar to low level networking and using it feels satisfying in a way I rarely feel when I program. The way RaiseEvent works is that when you call it and pass it some info, it createse and sends an 'event' over the network. And you define some special functions that lie in wait or 'listen' for network events. The low level part is that the info you pass in an event is usually in the form of an array of bytes. Which means that the listener function will receive just that array of bytes and not much else. Maybe the network identity of the sender and an event code (in the form an byte). And this is cool. This feels like big boy networking. I'm like only one step away from having to parse actual 1s and 0s. Anyway. I'm using the RaiseEvent() to send arrays of bytes representing the state of different game objects.<br />
<br />
Now, some game objects, you don't need to sync, because once they're in the game, they don't do anything. That would be for all the static background objects. Those will spawn the same on any computer, whether they join early or late. But for everything else. Dogs, players, whales, enemies, destructible/interactable environment, enemies, NPCs, all those are subject to change. So I defined a GetState() function on each of them which returns a byte array. I have to custom define<br />
the byte array for each of those objects. For instance, for a dog, the bytes in the byte array from byte[6] to byte[17], which is 16 bytes, is where I store 3 floats, (4 bytes per float). Those floats are the red, green, blue valus of the dog's color. I made the ReadState() function which takes in a byte array and it knows to read byte[6] through byte[17] and then convert them back into floats and then uses those floats as the RGB of a new color and sets the dog's color to that color. So after I defined a GetState() and a ReadState() for all those kinda of game objects I mentioned above, the entire game state can converted into a byte array and then read back. So, I'm in the process of doing that. But I went ahead and set up the state synchronization of some stuff using the RaiseEvents.<br />
<br />
That involves when a new computer joins the game, it asks the computer who created the game to give them the state of the game to the best of their ability. I've set this up to initiate sending a sequence of RaiseEvent calls that the newly joined computer waits to hear about. This sequence is just the game creator going through game object by game object, calling their GetState() function, then taking that byte array and raising an event and sending that byte array. The new computer listening for an event, taking the byte array, checking the first couple bytes to see if it's the state of a dog, or a whale, or an enemy, and then based on those first few bytes, it will know what to expect in the rest of the byte array.<br />
<br />
And voila. Anyway. Today's World Cup games are well over and therefore this blog post is too.<br />
<br />
<br />
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-72706658280337730752018-06-12T11:33:00.000-07:002018-06-12T11:33:01.822-07:00Party OnAfter PAX, I worked on the opening of Flock of Dogs some more in anticipation of submitting to BFIG. Then I made a big decision. I'm going to attempt to add online multiplayer to Flock of Dogs. Now, I blogged about this like a year ago and decided not to do it then. I was warned that it's hard, takes a long time, and that since this is my first game, it's inadvisable (which, if you ask me, is kinda circular).<br />
<br />
The reasons in favor of doing it have become clearer. A quick story.<br />
<br />
When you want to fix bugs in your game, oftentimes, the first step is to figure out the conditions necessary to reproduce the bug. Once you've got reproducibility, you should have a pretty clear idea of where in your code the error is hiding.<br />
<br />
Now, while this is unsurprising for any of my hardcore fans who've played endless hours of Flock of Dogs, at PAX, many bugs in my game were encountered. Since like I'm at a point where I want my game's demo to be playable (a) without my assistanc or presence and (b) to not crash and (c) to not suck, I want to smash bugs like never before! So. Time to reproduce. And, some might say this could have been forseen, but simulating the input of, say, 6 players, simultaneously, was too hard for little old me. I had anticipated this being a fine opportunity of having friends over, to relieve my great isolation, and, in truth, I've had a very good time when friends and family have demo'd my game. But I have fewer friends in Nashville (and now Long Beach) than in Boston. And the friends I've left behind (or the friends that left me)....I realized that (a) asking them to playtest without me my unfinished co-op game that crashes and glitches all the time, figure out how to recreate that behavior, and report back, would be tough, (b) proposing that they invite their friends over, have enough controllers for their friends, provide chips and salsa and drinks, to playtest my unfinished co-op game that crashes and glitches, figure out how to recreate that behavior, and report back to me, would be hard to organize and (c) asking them to do this like weekly or something....lol.<br />
<br />
I like have 3 friends that even play video games. Like..that's partly why I'm making this game is to get my friends to play video games with me. And yeah, the dream was to have all my friends over and we all play together, but I'm a grown up now. And being grown up means that you go on Facaebook and realize all your once best friends live in Boston, Beverly, New York, Coeur D'Alene, Denver, Willits, San Francisco, LA, Long Beach, Las Vegas, Dallas, Nashville, Oxford.<br />
<br />
So let's break it down.<br />
<br />
PROS:<br />
- provides means of more effective playtesting<br />
- perhaps only way to regularly get 2+ people playing<br />
- only way I'll ever be able to play Flock of Dogs with my little church buddies I grew up with, Ian, Daniel, and Joey, or my old roommates Jon, Johnny, and Jonathan, or my soccer buddies, Kevin, Bedig, Fithian, Lou, Sam, Monty, Oak, Brownie, and Matt T., or with Dave, Salem, and Matt B., or with Bill, Ted, Sarah, Sophie, and Matt S., all my other, leser friends ahahahaha.<br />
- INCREASES THE POTENTIAL MARKET FOR FLOCK OF DOGS BY LIKE A MILLION<br />
- much easier to build an online community<br />
- would develop a marketable skill, you know, if I have to get a job some day<br />
<br />
CONS:<br />
- supposed to be really hard<br />
- supposed to take a long time<br />
<br />
So I'm giving it the old college try.<br />
<br />
<i>(Oh, I don't know what I meant by a quick story except that at PAX there were bugs and then I couldn't recreate them by myself after.)</i>mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-72063322999032521492018-05-21T17:40:00.002-07:002018-05-21T17:47:04.624-07:00Itsa Spearfish<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDzgbZRHZX33zYuIxJWr4IKDHa_OpMP0dy94cl7zlQQob_sD0hEC2HgnRIn8w91GiagbGX4PzSdfMnG0gtGoXXgCmCEXsQK-XGvOWvY3RKTkQvnEJc6pXo9GvDKqpz2B7rJMleEwS3fHI/s1600/itsa_coursing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="611" data-original-width="820" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDzgbZRHZX33zYuIxJWr4IKDHa_OpMP0dy94cl7zlQQob_sD0hEC2HgnRIn8w91GiagbGX4PzSdfMnG0gtGoXXgCmCEXsQK-XGvOWvY3RKTkQvnEJc6pXo9GvDKqpz2B7rJMleEwS3fHI/s320/itsa_coursing.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
(note, my sister did buy the above photo for me and i have it framed)</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Well, as some of you may know, in late March, leading up to PAX, I took my dog to the vet to get a lump checked out. After two or three trips to the vet, and half a surgery, it was determined to be cancerous. She's ok now.<br />
<br />
Now, I don't understand the role that social media ought to play in my life. To go the extra mile, I don't understand how offline social networks ought to figure into my life either. But so I didn't share updates on Facebook or Twitter, but anyway, I felt like sharing somewhere. There are a lot of people distributed about the USA that care about me and I care about them and it seems very inhuman how spread out we all are and how difficult it is to share our lives with the people we care about.<br />
<br />
In some sense, all there is to say is that I love my dog and there were a few times when I thought her time was up and that was hard. We've pretty much all been there. I decided to pay a fair amount of money to give her a chance at a few more years and it seems to have worked out, but there were a few scary moments. Family and friends gave me money and I'm very grateful.<br />
<br />
It's all so weird. A dog I adopted for $300 who's about 80% done with her life. I've had human friends and relatives with cancer. I have a cousin who had no insurance and a heart attack that owes hospitals about $1 million. Because of PAX and this, I've now been in Nashville an extra 3 months, and this nagging groin injury has had me sidelined from soccer the whole time. So no friends, no soccer, no girlfriend lol, and then my dog gets cancer. In some sense, this is the worst time in Max's life. And then I go to this engagement party for my mom's friend's daughter last Saturday where I don't know anybody and sit there and talk to a Vietnam war vet. He was drafted when he was 25 and stationed in South Korea. He said he got a good gig as the mailman. Nobody wanted to be the mailman, because you had to get up early 7 days a week and couldn't go whoring on the weekends. He said he said to himself, "I'm a quarter of a century old. What in the heck am I doing?"<br />
<br />
I mean. I had a sick dog and I can't play soccer. But I wasn't drafted to go to war in Vietnam. I don't know man.<br />
<br />
I felt like typing out a record of all our visits to the vets with some pictures, so I did that:<br />
<br />
- sometime in Tennessee<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwi4Raf-fWTaIfoVXNI9uT1TU4vk2m-ejXFeZm9x46InVgeBmR_-yT_aq6T6Y_rwtqme9Of01PAjS7SYAW62evBcYqaHLXHzFQkYmJl8ikOHrHkBjyiU7c_-gCPvSA8e5Tu2bEpz-okpY/s1600/itsa_tongue_lick.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwi4Raf-fWTaIfoVXNI9uT1TU4vk2m-ejXFeZm9x46InVgeBmR_-yT_aq6T6Y_rwtqme9Of01PAjS7SYAW62evBcYqaHLXHzFQkYmJl8ikOHrHkBjyiU7c_-gCPvSA8e5Tu2bEpz-okpY/s200/itsa_tongue_lick.jpg" width="150" /></a><br />
<br />
- mid March, inconclusive testing of lump, scheduled surgery + dental cleaning<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4gxM56wwwB10b3bHgua51XhsT_6NUoCzcO0-3IN2hfy3XDgBLyGORZxVUoInuylicrFYK2UUTL_5tB135vw_2M56DaU0lX7G96ldQfulLbnjcLxe0_Nq6pyZ_GBF9bi9YsHIhj8NxkMU/s1600/itsa_at_murphy_rd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="400" data-original-width="400" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4gxM56wwwB10b3bHgua51XhsT_6NUoCzcO0-3IN2hfy3XDgBLyGORZxVUoInuylicrFYK2UUTL_5tB135vw_2M56DaU0lX7G96ldQfulLbnjcLxe0_Nq6pyZ_GBF9bi9YsHIhj8NxkMU/s200/itsa_at_murphy_rd.jpg" width="200" /></a><br />
<br />
- April 11, during surgery, murphy rd vet noticed the lump was larger and attached to muscle below, decides to not remove lump, but takes some chunks out to get biopsied real good, proceeds with dental cleaning<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6RKy_C20KdHPks__TZ26UBxwmnButGe1Ani-wXMSkfcjwceBxrXYqHbtZADJ2xV7IygBLk7Qytz1p8Vzc412qUFvBeK66l7y60vtTIhpy8YpWZbMkyygFvlWpKOfA8W9-x8Lnbi_8sUs/s1600/itsa_lump1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="720" data-original-width="960" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6RKy_C20KdHPks__TZ26UBxwmnButGe1Ani-wXMSkfcjwceBxrXYqHbtZADJ2xV7IygBLk7Qytz1p8Vzc412qUFvBeK66l7y60vtTIhpy8YpWZbMkyygFvlWpKOfA8W9-x8Lnbi_8sUs/s200/itsa_lump1.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiULOtTWuNy3oDmD7158MGYgh3Bn6o3QcqmJKCf6ZyZhAqafb1ygobW88kMxPBT-4vju08_exK3B-x2iquXXgqHaN8OJqpae4oM9oTrXKCZ0EiqggBmEdT-AaOhsN7C32WbGJJDLHxJoDE/s1600/itsa_lump2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiULOtTWuNy3oDmD7158MGYgh3Bn6o3QcqmJKCf6ZyZhAqafb1ygobW88kMxPBT-4vju08_exK3B-x2iquXXgqHaN8OJqpae4oM9oTrXKCZ0EiqggBmEdT-AaOhsN7C32WbGJJDLHxJoDE/s200/itsa_lump2.jpg" width="150" /></a><br />
<br />
- April 17, received phone call from murphy rd vet, the mass is cancerous, he recommends blue pearl vet for bigger surgery<br />
- April 19, meet with blue pearl surgeon, she examines dog, schedules mass removal + half of 2 ribs<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOHZwNxDs6jgvfc3Ohr3dzapEtdvz7RK1ssgpWYBbrsNyC_-2Ge457WzFNkR8FOmLjH4DlyqUyjQdqnkgu04QDXf3p3ieO5QSCYj2JOCE2ZndeSwKXPKRckaJ3nYl35wsFNNcUg3IpFjg/s1600/itsa_wating_at_blepearl.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOHZwNxDs6jgvfc3Ohr3dzapEtdvz7RK1ssgpWYBbrsNyC_-2Ge457WzFNkR8FOmLjH4DlyqUyjQdqnkgu04QDXf3p3ieO5QSCYj2JOCE2ZndeSwKXPKRckaJ3nYl35wsFNNcUg3IpFjg/s200/itsa_wating_at_blepearl.jpg" width="150" /></a><br />
<br />
- April 23, surgery day<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfKREQV4s8EyctiAMBjjDoDNNV-tdORBjzWk4sDrpjAe4Lc5B94vVa35KXtRaHBZXgMZfFDWWWVYkWJB-eJW3WwAoZxg5ArFuNNIsRyMOs9oA0cKNxXBBPIuKgWUl6PXNHbE26KUpOn48/s1600/itsa_pre_surgery1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="720" data-original-width="960" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfKREQV4s8EyctiAMBjjDoDNNV-tdORBjzWk4sDrpjAe4Lc5B94vVa35KXtRaHBZXgMZfFDWWWVYkWJB-eJW3WwAoZxg5ArFuNNIsRyMOs9oA0cKNxXBBPIuKgWUl6PXNHbE26KUpOn48/s200/itsa_pre_surgery1.jpg" width="200" /></a><br />
- April 23, surgery does not take place. itsa's blood platelets are low, probably because of tick borne illness she's had since being raised at the florida race tracks, so i pick her up and start her on two weeks of antibiotics<br />
- May 8, check up to see if blood platelets are ok. blood platelets are ok, surgery is a go for tomorrow<br />
- May 9, surgery day for real<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0E6K-z61GgpjDGEnRT3uewAwQjVjtcMogcgXp9earBjOIVQUttd13nXRCEFvbhxUd8kiombdZKdQYGv5syW_GScYojpO-SKX9mdjBJNkFh_J_NQW5bK0O15dWxvlet5lZ712hVW6RMlQ/s1600/itsa_pre_surgery2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0E6K-z61GgpjDGEnRT3uewAwQjVjtcMogcgXp9earBjOIVQUttd13nXRCEFvbhxUd8kiombdZKdQYGv5syW_GScYojpO-SKX9mdjBJNkFh_J_NQW5bK0O15dWxvlet5lZ712hVW6RMlQ/s200/itsa_pre_surgery2.jpg" width="150" /></a><br />
<br />
- May 10, one day after surgery, blood in chest tube, internal bleeding, hopefully dog just having trouble clotting, vet is keeping dog extra night. if dog doesn't clot, more surgery may be needed<br />
- May 10, I visited in am, hung out at starbucks nearby and worked on flock of dogs. got cold inside. went outside and talked to friend on phone for an hour. got sunburned. went to nearby park and did rehab for my groin. visited itsa a 2nd time and watched her eat, but couldn't take her home<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0eAwgCAn4Mnzigvsi0BulrfCHo7AoTFpw-aWdsGVHBEr6JelSADJSj0srGMQqSh3vIdUdlyRi7cpOxd6P5R7j4uEjRQOGN9txmhfDFhh8Tt3E_mFrsiVyVAT73TPESeL1yaAjIZYHyrw/s1600/itsa_post_op_bluepearl0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0eAwgCAn4Mnzigvsi0BulrfCHo7AoTFpw-aWdsGVHBEr6JelSADJSj0srGMQqSh3vIdUdlyRi7cpOxd6P5R7j4uEjRQOGN9txmhfDFhh8Tt3E_mFrsiVyVAT73TPESeL1yaAjIZYHyrw/s200/itsa_post_op_bluepearl0.jpg" width="150" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6e1cCv1pheDhSUo597Y7SJwx5f5i1evNyXiiV5yWIP2AA8O7f1YsXNfBpTk2OVJAP46ozdQv7sKmrYI4YqJaaDcD-VYGQ6pca0sJmaHNK84tLaW9giywovQnBzMRZSupqimBRzCS9Lek/s1600/itsa_post_op_bluepearl.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="720" data-original-width="960" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6e1cCv1pheDhSUo597Y7SJwx5f5i1evNyXiiV5yWIP2AA8O7f1YsXNfBpTk2OVJAP46ozdQv7sKmrYI4YqJaaDcD-VYGQ6pca0sJmaHNK84tLaW9giywovQnBzMRZSupqimBRzCS9Lek/s200/itsa_post_op_bluepearl.jpg" width="200" /></a><br />
- May 11, no more blood in chest tube, dog can be taken home that afternoon<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKRLx3fDy6172m4FEqaYKhouwzb8QiW2JLAsJKcB378iYL1kDKW3r5RaIlajq7E0-CbrPn8dInrj1VYb9od5-AAXLpLKv3DTVnKWc9Mv50qRq83WxtX7ONDhcnKGEyt419wl_OxSbChHU/s1600/itsa_post_op_blackbeard.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKRLx3fDy6172m4FEqaYKhouwzb8QiW2JLAsJKcB378iYL1kDKW3r5RaIlajq7E0-CbrPn8dInrj1VYb9od5-AAXLpLKv3DTVnKWc9Mv50qRq83WxtX7ONDhcnKGEyt419wl_OxSbChHU/s200/itsa_post_op_blackbeard.jpg" width="150" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_C9emTNXx4N7VyoRQgbyvdfNwBzxY9O_Ys8jhALu6jPhMDIHOm9B2gdTQExdKtYdRdzPWOLblwcDZNWc2VNra4sfPa7X7XM6vO9c94U0ZZmPJ2F4FWbe_jt2GySIUYzmxCHs5skjngjA/s1600/itsa_post_op_1.jpg" imageanchor="1" style="clear: right; display: inline !important; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_C9emTNXx4N7VyoRQgbyvdfNwBzxY9O_Ys8jhALu6jPhMDIHOm9B2gdTQExdKtYdRdzPWOLblwcDZNWc2VNra4sfPa7X7XM6vO9c94U0ZZmPJ2F4FWbe_jt2GySIUYzmxCHs5skjngjA/s200/itsa_post_op_1.jpg" width="150" /></a><br />
- May 12, 7 pm, at home, notice a lot of redness and bruising emergency vet visit. i thought my dog was bleeding out on the inside.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcx5-kWjKQUSKf2mdkIxeVkNx6FCwbUSHErn-xKxcdnRpVL2_B1OIBiHA3Yg2iWj_Zh6oA721wtl5lA5GFrMvLd3vhOKzvb1Jv0omsBhT_Xgn35jHdh_ZwnwrfAT1H4D8AWWBtMuoz_Vo/s1600/itsa_red_emergency.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcx5-kWjKQUSKf2mdkIxeVkNx6FCwbUSHErn-xKxcdnRpVL2_B1OIBiHA3Yg2iWj_Zh6oA721wtl5lA5GFrMvLd3vhOKzvb1Jv0omsBhT_Xgn35jHdh_ZwnwrfAT1H4D8AWWBtMuoz_Vo/s200/itsa_red_emergency.jpg" width="150" /></a><br />
- May 12turns out everything normal, lol, greyhounds just bruise a lot. all vital signs ok and red blood cell count good<br />
- May 17, post op check up, dog is recovering normally, they "got it all", official recommendation for optimal care would be to do chemo or radiation, but monitoring seems very reasonable<br />
<br />
Future:<br />
- May 24, a second post op check up to just make sure everything still proceeding normally<br />
<br />
And here's a few more photos from the last day or so:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKMClY7eZiEtPjeMC5SKM62UXKV2i9XXWbRNOU-XQcQDfPDQeArN91D55pi578E-Phf4AvB1EXR0gj6ymu8qepmCb1Kr8ZykWm_OLAy2sFA7LQiD9CuKV-SgCXNWIh7F50pX0CSqy8dBY/s1600/itsa_megged_by_sophie.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="720" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKMClY7eZiEtPjeMC5SKM62UXKV2i9XXWbRNOU-XQcQDfPDQeArN91D55pi578E-Phf4AvB1EXR0gj6ymu8qepmCb1Kr8ZykWm_OLAy2sFA7LQiD9CuKV-SgCXNWIh7F50pX0CSqy8dBY/s200/itsa_megged_by_sophie.jpg" width="150" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT44he786z5c5D7tWKpUJxNayZQS2YYUj3NdhUhE64LJEMINxI3hCB3k2CMciibWzQQ-7pgxb4FjlBmz0GGpXPMrtWZvXiN2QulHg2NGCZ9FO-ENPhCUZjKKsiZW9AMKuS1XYrkMnfQw0/s1600/itsa_almost_better.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="720" data-original-width="960" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT44he786z5c5D7tWKpUJxNayZQS2YYUj3NdhUhE64LJEMINxI3hCB3k2CMciibWzQQ-7pgxb4FjlBmz0GGpXPMrtWZvXiN2QulHg2NGCZ9FO-ENPhCUZjKKsiZW9AMKuS1XYrkMnfQw0/s200/itsa_almost_better.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5tXARjNbmcb5fCwua6KIKIowZLxkA-zR49c3cTRPurthpO3h_PdJeAOLwiw4SgJAg2x0JPBWMQcR2YxvK44ixEhR0Vv3kpNFrLp8RNXmg8kgziZTa4BviWpwDJzBr9N6R50kniy47p5k/s1600/itsa_in_the_night.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="720" data-original-width="960" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5tXARjNbmcb5fCwua6KIKIowZLxkA-zR49c3cTRPurthpO3h_PdJeAOLwiw4SgJAg2x0JPBWMQcR2YxvK44ixEhR0Vv3kpNFrLp8RNXmg8kgziZTa4BviWpwDJzBr9N6R50kniy47p5k/s200/itsa_in_the_night.jpg" width="200" /></a><br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-87389507664280802662018-04-24T11:08:00.000-07:002018-04-24T13:35:39.266-07:00Flock of Dogs at PAX East 2018 Ok, so the trick to blogging, for me, is to never talk to friends. Because now I feel like I'm repeating myself to my readership of approximately 4.5 people.<br />
<br />
The night before PAX, Playcrafting held a free event called Pax Pre-Gamer. I did this last year and it was well attended and a good time. It was a good event this year too. I was situated next to the games that would be sharing the Playcrafting booth with me at PAX and, based off the response to my game, I had never felt so good about my game. I met a few genuine fans who told me they had been following the development of my game. A guy with a steam library of 2000+ games liked my game and talked to me about it for several minutes and even messaged me on Twitter later. Another guy whispered to me that my game was the most interesting game at the event. I had a friend come by and say hello and then peace out because I was too busy to hang out with her. I felt like my game was one of the most popular games there (always tough to judge your relative performance). Near the end of the night, a woman pointed at my game and the flying whale from like 20 feet away and cried out, "What is that? I want to play that." And she and her friend played it until the lights at the venue came on and then asked if I'd be showing at PAX and said she'd come by. Am I just reciting all this anecdotal evidence to convince myself that my game is cool? I don't know. But I felt great that night and believed in the success of my game more than I ever had.<br />
<br />
Ok. So cool. Even a cat peeing on my jacket in the middle of the night dampened only my jacket and not my spirits!<br />
<br />
I arrived at PAX (prior to its opening to the public):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2jSMAsLdMTvjHk1EUEh_jClbNydpD00yfhbnvz5kSMSdvhzkzYJRreby8RzH-3Z0WC-T4G-c7D0Xj1XMY6uhzSlPkUohVsiBX9kAPwyXLtW1fTGDONmPezSryLLdrdJWWTmYxJUJoso8/s1600/IMG_0195.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2jSMAsLdMTvjHk1EUEh_jClbNydpD00yfhbnvz5kSMSdvhzkzYJRreby8RzH-3Z0WC-T4G-c7D0Xj1XMY6uhzSlPkUohVsiBX9kAPwyXLtW1fTGDONmPezSryLLdrdJWWTmYxJUJoso8/s640/IMG_0195.JPG" width="640" /></a></div>
<br />
<br />
Then I made my way to our booth. I say "our booth", because I was part of the Playcrafting booth along with:<br />
<br />
Feeble Force<br />
Bunny Blocker<br />
Hexile<br />
Just One Boss and Juggle Panic<br />
Return to the Stars<br />
The Ultimate Clapback<br />
<br />
And before I go further, I should also explain our booth layout. I was to share a 10x20 booth with 5 other games each day. Costing $500/day. Before I committed to paying for this partial booth space, I had expressed my concerns to Playcrafting that Flock of Dogs really only works if you can get 3+ people playing. He showed me this diagram of the PAX show floor and the Playcrafting booth setup:<br />
<div>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5_nxrwLTtfjnf13xbqXA06FgSpVvm7HTf1hUX6fjnsRA6OllAYdpLt3dyY7BJO0GMM-FKGORbybnFGo7sx0_A1_2LDjy9uiaGjTMC9dKFMcc_Tt8QGWOVdvTAuOwTOo2MNxU45Ft5Rdc/s1600/PAX_booth.png" imageanchor="1"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5_nxrwLTtfjnf13xbqXA06FgSpVvm7HTf1hUX6fjnsRA6OllAYdpLt3dyY7BJO0GMM-FKGORbybnFGo7sx0_A1_2LDjy9uiaGjTMC9dKFMcc_Tt8QGWOVdvTAuOwTOo2MNxU45Ft5Rdc/s320/PAX_booth.png" width="320" /></a><br />
<br />
Our booth was this:<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnBI3DyosBp7fB7-z2OdyarCdX_PvfwhKfyFTRv-MK0ktDTnF3T_tOZxRIAYB9gSv2uipsVj2jI7WBp3N10kmemXuRAtfgnGSIba4hTv24JhJvpyZEfPK2XQPsWzA_GqQuuT-hDq_X_1I/s1600/PAX_floor.png" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnBI3DyosBp7fB7-z2OdyarCdX_PvfwhKfyFTRv-MK0ktDTnF3T_tOZxRIAYB9gSv2uipsVj2jI7WBp3N10kmemXuRAtfgnGSIba4hTv24JhJvpyZEfPK2XQPsWzA_GqQuuT-hDq_X_1I/s200/PAX_floor.png" width="112" /></a><br />
<br />
The black bar is a curtain at the top. It's open on the left, right, and bottom. The pink lines are the monitors. The black rectangle would be Playcrafting's table to hand out their goods. We were at the end of an aisle, with the bottom some facing outward to one of the two main walkways of PAX. Then both aisles down the side should have fairly heavy traffic. Players can spill into the walkways as they gather around each game. Should be good? Alas, the booth was closed on 2 sides and this was our layout:<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQsx65r80jqEWODuCmj8Z3joui3dp6U01LyLwc5cWHHTHxIXg9Dg80crivk8itLcp95k0Dm0LhayNwKOdMcfsPri9_Tj_-SW-fxJ4o8Fn0iu4gl0WCGUa0EUNn8Ku2Erqfm-vzsv5sDgE/s1600/PAX_booth_2sides.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQsx65r80jqEWODuCmj8Z3joui3dp6U01LyLwc5cWHHTHxIXg9Dg80crivk8itLcp95k0Dm0LhayNwKOdMcfsPri9_Tj_-SW-fxJ4o8Fn0iu4gl0WCGUa0EUNn8Ku2Erqfm-vzsv5sDgE/s400/PAX_booth_2sides.png" /></a><br />
<br />
I was the top left table (I MARKE DIT WITH A RED X SO U COULD SEE MY TABLE), because I was the 5th of the 7 devs to show up. So...this was terrible for Flock of Dogs.<br />
<br />
Booth photo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnmE9YDINE-4AZz41O2LzU0j-FB9ldrDndpbDfvGE7XPk5phaoPIFdfIclPIRt6g3GbCdQOAEDXCUiA9jTukDVMDGwRH61zR2MOgLEqQ6VmzhGbhi-qXdXzszbJ8_A5nW3Q1gd9ajtu0M/s1600/IMG_0192.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnmE9YDINE-4AZz41O2LzU0j-FB9ldrDndpbDfvGE7XPk5phaoPIFdfIclPIRt6g3GbCdQOAEDXCUiA9jTukDVMDGwRH61zR2MOgLEqQ6VmzhGbhi-qXdXzszbJ8_A5nW3Q1gd9ajtu0M/s320/IMG_0192.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Do you see my TV back there? Next to my banner? All lonely. There's also a table with a game directly in front of it, where the plaid red table cloth is hanging.<br />
<br />
When I brought up to Playcrafting that they said it'd be open on three sides, Playcrafting told me that PAX had told them it was to be open on three sides. And that "griping goes up."<br />
I said, "This is me 'griping up'."<br />
He said, "If PAX gives us any money back back, I'll be sure to distribute among the devs fairly."<br />
<br />
:(<br />
<br />
I complained, but really, as I told myself, I wasn't there for the gaming peasanty!<br />
Mua Hahaha!<br />
I was there for the capital P Press!<br />
I had chosen Thurs-Sat, because Thursday should be ideal for press!<br />
In fact, Thurs had PRESS-ONLY from 9 am - 10 am!<br />
<br />
But 0 press came to the Playcrafting booth in the PRESS-ONLY hour.<br />
<br />
At 10 am, PAX did open up the grubby public. Here's a series of texts I sent my buddy, Dave, that morning.<br />
<br />
(10:42 am) Max: 1 person has played flock of dogs. Other than yours truly.<br />
(10:42 am) Max: So 24 hrs of booth time. for 1500<br />
<div>
(10:43 am) Max: Means....I'm paying $62.50 an hour.</div>
<div>
(10:43 am) Max: Been here 1.75 hours<br />
(10:43 am) Max: $109.37<br />
(10:44 am) Max: For that player<br />
<div>
(11:03 am) Max: 2.5 people have played fod</div>
<div>
(11:44 am) Max: 4.5<br />
(11:45 am) Max: Plus two devs sharing playcraftings booth<br />
(11:57 am) Max: Humble bundle game scout game by. Took some notes on my game. Gave me a card said feel free to reach out close to launch.<br />
<div>
(11:57 am) Max: He wasn't a very enthusiastic fellow tho.</div>
<div>
<br />
So the Humble Bundle thing was somwhat exciting. However, isn't that for after you've released your game and it's been out for a year and then to generate some buzz you give it away for free and hope people donate to you? I did notice he only briefly played one other game at our booth and then left. Which, is weird to feel good about, because I became friends with my boothmates, but there was unspoken competition.<br />
<br />
I had had some foreboding that press was going to ignore me. After committing to paying for a spot at the Playcrafting booth, I'd received a copy of the PAX press list. I was nervous and excited. I emailed like 80-100 slightly customized emails to the press. I only heard back from a few. This was when I began to think I'd made a mistake paying for PAX. However, I held onto to hope that my other boothmates would bring press by, that some press would naturally just make their rounds to random booths, and that the Playcrafting organization would have some real pull. But nope.<br />
<br />
Aside from that Humble Bundle rep, one other press person came by on Thursday. A sophomore from BU that had responded to my emails. She works for BU's radio station. She took photos of me and interviewed me for a paper in her class. Maybe to mention me on the radio show, which is not a gaming show or anything, just a college radio station. As soon as she left the booth, my boothmates inquired about her status. I said she was with IGN. </div>
</div>
</div>
<br />
jklol.<br />
<br />
Maybe Friday would be better? I showed up early. The Playcrafting rep and one other dev and I discussed the booth layout. There was no rectangle table this day, because the card game was showing at another booth. I proposed we line up our tables and game along the edge, all facing outward. I wanted to be on the bottom, facing out (down). Like so:<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUAlQ8rCwDlxZ0muYAXmJotTGCwANbtCXaWqPp5q-YZfDAYJQiRrzgRiiPvMgPfRbh-EktPm1Yon8VHkmjpDUqB7T3VFZyUsS_ze1sdnydiZyjYqdKhCpY3pyPFXtARSX4i64UQOKXwWw/s1600/PAX_booth_myproposal.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUAlQ8rCwDlxZ0muYAXmJotTGCwANbtCXaWqPp5q-YZfDAYJQiRrzgRiiPvMgPfRbh-EktPm1Yon8VHkmjpDUqB7T3VFZyUsS_ze1sdnydiZyjYqdKhCpY3pyPFXtARSX4i64UQOKXwWw/s400/PAX_booth_myproposal.png" /></a><br />
<br />
<br />
They thought this looked unprofessional. The Playcrafting rep thought his boss would not be pleased. The Playcrafting rep said he felt like we were sacrificing looking professional for the sake of one, 8-player game. The other dev and the Playcrafting rep voted me down. I made a small protest, but didn't really say everything I was thinking which was that (a) we're indies...real indies (whole blog post unto itself) (b) our booth, regardless of our layout, is the least professional looking booth at PAX that I'd seen and (c) I'd been screwed on Thursday and (d) this is approaching the optimal exposure to passerbys for all our displays...perhaps I could even prove it with maths.<br />
<br />
Welp, we went with the professional looking "U" shape, as it was described, tho I believe it to be more of a crescent, you know? Here's my mock up. I was given the choice of being in either of the two middle tables.<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOm2ZdkUxboAyeokAQr17IVHxS-jLjtS1e-IMDuYHPixhE-PQ3W69KNwyl4481cm8gdbp7cE5nIzLzqvbiuYHX1tHsjte5PJEJBIdHjf0FGDscIIsqGZ_I2r1_3vR_ixYURwctOXD_-Ng/s1600/PAX_booth_2sides_fri.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOm2ZdkUxboAyeokAQr17IVHxS-jLjtS1e-IMDuYHPixhE-PQ3W69KNwyl4481cm8gdbp7cE5nIzLzqvbiuYHX1tHsjte5PJEJBIdHjf0FGDscIIsqGZ_I2r1_3vR_ixYURwctOXD_-Ng/s400/PAX_booth_2sides_fri.png" /></a><br />
<br />
Red arrow is me. The green bar is where I placed my banner, yellow is where Hexile's banner was, and orange was where Feeble Force's banner. Hexile told me that a number of people asked him about Flock of Dogs and he tried to direct them inwards, but they'd just get confused. Hahalol. The other issue with this layout is that the inner arc, where people would stand to play the games, is a much smaller arc length, and visibility of the monitors gets super reduced. This also completely under utilizes the bottom side of our booth, which was the side facing the major walkway.<br />
<div>
<br /></div>
Photo before PAX opened to public (these are the devs awaiting the floor opening up):<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjscLyKV8y7Mh0BR_1d_dRgaWCX9GHc8LNyYDA_9pOzGxrGOEDA5rMirMzRoIgq4E6mnwgOtd4bHLAzhDnH40oOQKA2kHOTDwsRk1BShebbbJ5Q-h3qkO-inaYfJuGrUsyUUeUdgCzq5g/s1600/IMG_0197.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjscLyKV8y7Mh0BR_1d_dRgaWCX9GHc8LNyYDA_9pOzGxrGOEDA5rMirMzRoIgq4E6mnwgOtd4bHLAzhDnH40oOQKA2kHOTDwsRk1BShebbbJ5Q-h3qkO-inaYfJuGrUsyUUeUdgCzq5g/s320/IMG_0197.JPG" width="320" /></a><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Friday was better in terms of popularity of my game. The convention had better attendance as well, but nothing as overwhelming as the stories I'd heard of. But other than the BU sophomore coming back by the booth, zero press folks.<br />
<br />
On Saturday, the Feeble Force dev agreed to swap spots with me.<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikw6Ye7qkATZycfhPqcw2rmrtrn2uAVhSY9lrAhAmSDf1nzwILZBA1rC4FCJ0XmoOTujje_GnbMGQwVI84qIFLoHrFbFACizzoR-SJ41yGDO6ONAo4ZDTjorfbj4o_TJCjsDDL3ctdKag/s1600/PAX_booth_2sides_sat.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikw6Ye7qkATZycfhPqcw2rmrtrn2uAVhSY9lrAhAmSDf1nzwILZBA1rC4FCJ0XmoOTujje_GnbMGQwVI84qIFLoHrFbFACizzoR-SJ41yGDO6ONAo4ZDTjorfbj4o_TJCjsDDL3ctdKag/s400/PAX_booth_2sides_sat.png" /></a><br />
<br />
The Ultimate Clapback was back in our booth, at the rectangle table. The dev, bridgs, wasn't showing with us, so it was a little less crowded. The circular table without a monitor was used by the Playcrafting rep for handing out flyers, tho typically he just stood in the middle of the walkways and handed them out.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0932r7-41OW1axTn6TTqcP0yMARo-PfUX0ac2Pqe4McFQ31o2TNXRQ3CmqmiUWx8y5R0NWydrEUiDoeKAadF02Rq1PuZisP9RsbTxujZGt7wDbtSw8j-1oz0dj5kWHgSm9gQ6W059y60/s1600/IMG_0204.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0932r7-41OW1axTn6TTqcP0yMARo-PfUX0ac2Pqe4McFQ31o2TNXRQ3CmqmiUWx8y5R0NWydrEUiDoeKAadF02Rq1PuZisP9RsbTxujZGt7wDbtSw8j-1oz0dj5kWHgSm9gQ6W059y60/s320/IMG_0204.JPG" width="320" /></a><br />
<br />
So Saturday was, by far, my most popular day. I had a woman, before the even begin, walk up and tell me the the flying narwhal and dogs was the most interesting thing she'd seen at PAX.<br />
I said, "Wanna play?"<br />
She said, "Oh no, I don't play video games."<br />
I asked, "So...what are you here?"<br />
She said, "Oh, I'm in the booth next to you [selling video game merchansdise]."<br />
<br />
So she'd been my booth neighbor for the past two days and hadn't even seen the whale? Saturday restored my faith in my game as a game that some people do like. I had several repeat players and I had some people tell me it was their favorite game at PAX. So...that meant a lot to me. That anyone would say it's their favorite game of PAX seems like a big deal. I had a father and son say they searched all over PAX to play my game a second time. I had a man email after the show that he'd played my game on Thursday and tried to play on Saturday, but it was too busy, and then he looked for me Sunday and couldn't find my booth (I wasn't exhibting). And some more stuff like that. Oh yeah, the deveoper of Mama Hawk came by and chatted with me a while and was super encouraging. Some other devs played my game and were encouraging. I don't know. No press coverage. Who's going to tell the creator of a game, to their face, they don't find it interesting? Am I grasping at straws, here? Did press walk by my game and dismiss it out of hand? I don't know. I saw one girl with a press badge walk by, whisper something into the ear of a guy playing another game at the Playcrafting booth. I asked her if she wanted to play my game. She turned and just shook her head and walked away.<br />
<br />
<b>TL;DR SUMMARY:</b><br />
<b><br /></b>
Was it worth $1500 for 1/6th of a 10x20 booth for 3 days at PAX, that was only open on 2 sides instead of 3 as I was promised? Nope. Was it worth spending like $150 for banner, stand, buttons? Eh. Was the Pre-Gamer event really fun? Yep. Did I really connect with some people and did they have a good time playing my game? Yes. Did I make some fans I wouldn't have otherwise? Yes. Was it good, in terms of future development, to watch so many people play my game? Yeah. If press had played my game at all, whether or not they responded well, would it have been worth it? I DON'T KNOW. Am I embarrassed about spending that much money for what I got? Yeah.<br />
<br />
Hard to believe I exhibited at PAX and got 0 articles or write ups or Twitter mentions at all. Is this a big warning sign that my game is going to fail? Maybe.<br />
<br />
What I did get was nice, but I've had just as good experiences at events where I could show my game for free, such as Playcrafting's own Pre-Gamer event and Spring Expos. I wouldn't have gone if it weren't in Boston, which is where I lived for the past 7 years and had a free place to stay and tons of friends to visit. So it was really great to be back in Boston for a week.<br />
<br />
Also, I just wanted to add that I did have a good time with my boothmates, just hanging out, joking around. I guess another reason people exhibit at conventions is for networking purposes. I mean, none of my boothmates were real industry veterans or anything, but I've got a few new Twitter friends and I've emailed them a bit.<br />
<br />
<b>EXTRA PHOTOS:</b><br />
<b><br /></b>
I assume you can post photos of people taken on the floor of PAX without their permission. If not, what kind of a world do we live in.<br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWKG8KM_plFd00uW_XppfjT4kbSHiWk2x1McuIV0oG_x-p3lArPztjrHGYuDlLLI-m20RYncwcmhRhafiFtZFrwOGYyOP9IbIJvJa4v0KcHbdmY4mLaWuU_cr2inTtO4-60fe4nmk7_iE/s1600/IMG_0202.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWKG8KM_plFd00uW_XppfjT4kbSHiWk2x1McuIV0oG_x-p3lArPztjrHGYuDlLLI-m20RYncwcmhRhafiFtZFrwOGYyOP9IbIJvJa4v0KcHbdmY4mLaWuU_cr2inTtO4-60fe4nmk7_iE/s200/IMG_0202.JPG" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0932r7-41OW1axTn6TTqcP0yMARo-PfUX0ac2Pqe4McFQ31o2TNXRQ3CmqmiUWx8y5R0NWydrEUiDoeKAadF02Rq1PuZisP9RsbTxujZGt7wDbtSw8j-1oz0dj5kWHgSm9gQ6W059y60/s1600/IMG_0204.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0932r7-41OW1axTn6TTqcP0yMARo-PfUX0ac2Pqe4McFQ31o2TNXRQ3CmqmiUWx8y5R0NWydrEUiDoeKAadF02Rq1PuZisP9RsbTxujZGt7wDbtSw8j-1oz0dj5kWHgSm9gQ6W059y60/s200/IMG_0204.JPG" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc6I9YjwR5xeSrBVxf4LGg2M4dIbdCmPJ_naPA9wqYo_wjk1hGeFnqBCO1lXLUkjVjknLp5DsLGxp7aeTkqcVlgNICVT-SP90ee1LLjg1YWnDbjtPQRzKjx7AKZlmQyDHPb10Gb5HwuLM/s1600/IMG_0205.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc6I9YjwR5xeSrBVxf4LGg2M4dIbdCmPJ_naPA9wqYo_wjk1hGeFnqBCO1lXLUkjVjknLp5DsLGxp7aeTkqcVlgNICVT-SP90ee1LLjg1YWnDbjtPQRzKjx7AKZlmQyDHPb10Gb5HwuLM/s200/IMG_0205.JPG" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqX-6jslymS8vNUz7kedmbMAnGkaxHdZ-ZH102mvGbCHBVyYlMESvlVDAF2akxv5SLNucQFQStREOb9ZjaQ0wxNKS9ZsMyfEPcoQSBTTObwBWdVewa2iFDLOoQ_Jd6k98ran65uYvIx6w/s1600/IMG_0200.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqX-6jslymS8vNUz7kedmbMAnGkaxHdZ-ZH102mvGbCHBVyYlMESvlVDAF2akxv5SLNucQFQStREOb9ZjaQ0wxNKS9ZsMyfEPcoQSBTTObwBWdVewa2iFDLOoQ_Jd6k98ran65uYvIx6w/s200/IMG_0200.JPG" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgphHiu4tb4bCjAejRkQYFE8ChcPOsKpW-lDvaqZHwYdg0nLDMjgZXyOc1JCdZ1VYq2FgH9BpqRwbd-PMwYD605i2SJPT1NtFkkERjvBHAV_00CG5kpfg1ngjJB9tVRtiIay-nsgxvEEMo/s1600/IMG_0201.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgphHiu4tb4bCjAejRkQYFE8ChcPOsKpW-lDvaqZHwYdg0nLDMjgZXyOc1JCdZ1VYq2FgH9BpqRwbd-PMwYD605i2SJPT1NtFkkERjvBHAV_00CG5kpfg1ngjJB9tVRtiIay-nsgxvEEMo/s200/IMG_0201.JPG" width="150" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgphHiu4tb4bCjAejRkQYFE8ChcPOsKpW-lDvaqZHwYdg0nLDMjgZXyOc1JCdZ1VYq2FgH9BpqRwbd-PMwYD605i2SJPT1NtFkkERjvBHAV_00CG5kpfg1ngjJB9tVRtiIay-nsgxvEEMo/s1600/IMG_0201.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgphHiu4tb4bCjAejRkQYFE8ChcPOsKpW-lDvaqZHwYdg0nLDMjgZXyOc1JCdZ1VYq2FgH9BpqRwbd-PMwYD605i2SJPT1NtFkkERjvBHAV_00CG5kpfg1ngjJB9tVRtiIay-nsgxvEEMo/s1600/IMG_0201.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div>
<b><br /></b></div>
mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-4109584427884290002018-02-28T10:25:00.000-08:002018-02-28T10:32:50.668-08:00Deeply Rooted Treeright now i'm working on:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQS7PYwPyLIfa2sRKm-elyB7nJDI-lkYuGTkkYMn8jnaqzQOF3iIb9EdCAhAdAcEewCSG0uKtEnIiyATWRZfTYhu_aPy0KiDvWOW_I9V8yiBSbG0cGW9VDM-q9PMWh2nx5RHKobbSUrvY/s1600/treehouse_wip_2.png" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQS7PYwPyLIfa2sRKm-elyB7nJDI-lkYuGTkkYMn8jnaqzQOF3iIb9EdCAhAdAcEewCSG0uKtEnIiyATWRZfTYhu_aPy0KiDvWOW_I9V8yiBSbG0cGW9VDM-q9PMWh2nx5RHKobbSUrvY/s200/treehouse_wip_2.png" width="176" /></a><br />
because after playthrough gc in raleigh, the part of my game i felt worst about was the bland, rectangular cottage that is the first image you see in the game (after clicking New Game):<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsrr9Gz0tYG06y0b5vqcSZmbYeNX0lcs_mqnBtsCTYQLo6XlTsKv2OVtkmo6LLfTC6AeaEzq8G-8EP_SnMpsyrjV2I3OnT4fvbRtz9IYxQvgj30IDQhAaMS_FVCxPie5TZvz0u7Z-m3zM/s1600/cottage_opened_up.png" imageanchor="1"><img border="0" height="119" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsrr9Gz0tYG06y0b5vqcSZmbYeNX0lcs_mqnBtsCTYQLo6XlTsKv2OVtkmo6LLfTC6AeaEzq8G-8EP_SnMpsyrjV2I3OnT4fvbRtz9IYxQvgj30IDQhAaMS_FVCxPie5TZvz0u7Z-m3zM/s320/cottage_opened_up.png" width="320" /></a><br />
<br />
<br />
this tree is the most deeply nested and/or deeply rooted (ahahalol) game object i've ever created in unity. (i guess there's some holder objects used for the whole scene that have had more childed objects, but they don't count).<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-JcrMnKLmY1jTOuCgsXltQiUodEk2pjIwhZWDvu8_i3EblWjSJU-Qt1mcrBqAdkQD8wwYzlhgAvoUc9-6e7bNWfpPRhrVnFZpzWh3XjqTTuhyaWwz7xvxRTV5HAZFN8DgK62tdHxufk0/s1600/tree_editor_hierarchy_cropped.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-JcrMnKLmY1jTOuCgsXltQiUodEk2pjIwhZWDvu8_i3EblWjSJU-Qt1mcrBqAdkQD8wwYzlhgAvoUc9-6e7bNWfpPRhrVnFZpzWh3XjqTTuhyaWwz7xvxRTV5HAZFN8DgK62tdHxufk0/s1600/tree_editor_hierarchy_cropped.png" /></a>mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-18826123152380443782018-02-25T20:14:00.000-08:002018-02-28T15:02:10.622-08:00shadows and shading, massachusetts and california<div class="" data-block="true" data-editor="ensqa" data-offset-key="817nv-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="817nv-0-0" style="font-family: inherit;">i wanted to replace my old tree:</span></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="817nv-0-0" style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAawNW5yCGFg8fE4bna-Io8pQWszixhdDii45XTjdO2arAWSurin-OQyuADw6P5iwk-3q1D7t9CWb6YY2cKi3GHllOt5fTej8gDYrrWjtWAZlQcO8VYy8Q4k5XPFdr8e34vwTKv1UuwPU/s1600/tree_old.png" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAawNW5yCGFg8fE4bna-Io8pQWszixhdDii45XTjdO2arAWSurin-OQyuADw6P5iwk-3q1D7t9CWb6YY2cKi3GHllOt5fTej8gDYrrWjtWAZlQcO8VYy8Q4k5XPFdr8e34vwTKv1UuwPU/s200/tree_old.png" width="177" /></a></span></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<br /></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
so i drew a new tree (with mouse in GIMP):</div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<br /></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<br /></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgITCv1Gt78BKEUmldXUIlgSydhZM_uqTEIZJLROzunXrCMw95kChqNh6WfCMWrroPQNYT3_DZGvtBdHz_nWbXrauHQEM-ItjJl1qN4elzyyizmkZ2v9QDNhkIWWEEnupdS7sOsNJM2eOE/s1600/tree_outline.png" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgITCv1Gt78BKEUmldXUIlgSydhZM_uqTEIZJLROzunXrCMw95kChqNh6WfCMWrroPQNYT3_DZGvtBdHz_nWbXrauHQEM-ItjJl1qN4elzyyizmkZ2v9QDNhkIWWEEnupdS7sOsNJM2eOE/s200/tree_outline.png" width="177" /></a></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<br /></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
then i had to decide how to color and shade it:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS1IQgcEeyjtzeLMTkFogvSIi9IUk7DguurX6vD-TxgrpHe3mk5X0YdQxrtn8207JpEeEsS1rGEHRdwev7qmvTn-DVgjH-tGugF0pfiyC2rArs502NGzGCzjvlNj5M3r7fRhWv4VC9Gl4/s1600/three_trees.png" imageanchor="1"><img border="0" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS1IQgcEeyjtzeLMTkFogvSIi9IUk7DguurX6vD-TxgrpHe3mk5X0YdQxrtn8207JpEeEsS1rGEHRdwev7qmvTn-DVgjH-tGugF0pfiyC2rArs502NGzGCzjvlNj5M3r7fRhWv4VC9Gl4/s400/three_trees.png" width="400" /></a></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<br /></div>
<div class="_1mf _1mj" data-offset-key="817nv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="817nv-0-0" style="font-family: inherit;">i was not crazy about any of these. i showed them to my mom. we discussed. this was important, because i'm trying to settle on a visual style for all the environment that should work with my already drawn whale, dogs, blue hobbit folk, and monsters. plus it was to work with my weird, top down, two-layer world, the floating island layer and the flying creatures layer. i explained my frustration with not being able to simply transfer pen and paper drawings into my video game easily and how much i liked just drawing with a pen, like i did during so many college classes lol. somehow i started asking if we still had <i>The Eleventh Hour</i>, a beautifully illustrated book my sister had a child. i was heavily influenced by my sister's aesthetic tastes that were too girly for me to have in my room. (i feel the temptation to get derailed by a discussion of child rearing, gender roles, aesthetics, and sexism!!!!). </span><br />
<span data-offset-key="817nv-0-0" style="font-family: inherit;"><br /></span>
<span data-offset-key="817nv-0-0" style="font-family: inherit;">this is what that book's cover looked like:</span><br />
<span data-offset-key="817nv-0-0" style="font-family: inherit;"><br /></span>
<span data-offset-key="817nv-0-0" style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_f6aBEBdVRJirkUKtHlCpdEevIQ2ZntdMMw__FRsFbVMNKTs73SzCws4_D5FhZxC6t2hrMeZLFmGcN3nWOJJh_wAX4IHyJ3idnWazOm460kDoNZmthZtQF9ZHPOw3mFxyni1dzD5bwgA/s1600/eleventh_hour.jpg" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_f6aBEBdVRJirkUKtHlCpdEevIQ2ZntdMMw__FRsFbVMNKTs73SzCws4_D5FhZxC6t2hrMeZLFmGcN3nWOJJh_wAX4IHyJ3idnWazOm460kDoNZmthZtQF9ZHPOw3mFxyni1dzD5bwgA/s320/eleventh_hour.jpg" width="237" /></a></span><br />
<br />
my mom said it was upstair in the bottom right of the bookcase. so i tried to find it. instead, i found this:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpUcVe0KyCXEZipqa1FjC0ACp2GAHhS3SP1VKWAk0wdslbT74_GhAQeECASe92JizBDeuImzXRewtYdTvuYkiemlS62kV1PSVahuD1mEtMe8ThQ78Z5VTC6-dkq3LrrEEegUvojugGM6w/s1600/ohtheplacesyoullgo.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpUcVe0KyCXEZipqa1FjC0ACp2GAHhS3SP1VKWAk0wdslbT74_GhAQeECASe92JizBDeuImzXRewtYdTvuYkiemlS62kV1PSVahuD1mEtMe8ThQ78Z5VTC6-dkq3LrrEEegUvojugGM6w/s400/ohtheplacesyoullgo.jpg" /></a><br />
<br />
which is funny. because i think of dr seuss and pd eastmann (<i>Go, Dog. Go!</i>) as my strongest influences for the look of flock of dogs and the general look anything i draw with a pen, in general. and so i was like, how does dr seuss do his trees!? and, well, <i>The Lorax</i> isn't very helpful either; my trees are not shaped like the truffula trees:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXX9R5bVLr5jvZyX6W_ryJti6W7zHVsm2-9AT9mJVkSm9gm9M_psBssBtCelh3xTMHZ19j2hJWxmBUiLNQ6p9gkACMrOM31ZUeqxGVWwFjXwhIyM_mpKy72feEZz4hzgEqCWYTYruHaO8/s1600/truffulatree.jpg" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXX9R5bVLr5jvZyX6W_ryJti6W7zHVsm2-9AT9mJVkSm9gm9M_psBssBtCelh3xTMHZ19j2hJWxmBUiLNQ6p9gkACMrOM31ZUeqxGVWwFjXwhIyM_mpKy72feEZz4hzgEqCWYTYruHaO8/s320/truffulatree.jpg" width="256" /></a><br />
<br />
<br />
but then<br />
<br />
<span data-offset-key="817nv-0-0" style="font-family: inherit;">i started reading about dr seuss on the internet, how he's from massachusetts, how he got banned from extra curricular activities during college for being caught drinking with friends in his room during prohibition. then in oxford getting his english phd he meets a new york gal who tells him to quit trying to be en english teach, be an arist, because the drawings he does in his notepad during class are absolutely delightful. so he does that and moves to new york, and marries her. his wife can't have kids, so they don't have kids. he writes books. gets popular. moves to california. then his wife gets pretty sick, and dr seuss then cheats on her with a married neighbor. so then mrs seuss writes this note:</span></div>
</div>
<div class="" data-block="true" data-editor="ensqa" data-offset-key="b8jio-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="b8jio-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="b8jio-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="ensqa" data-offset-key="33k8t-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="33k8t-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="33k8t-0-0" style="font-family: inherit;">"Dear Ted, What has happened to us? I don't know. I feel myself in a spiral, going down down down, into a black hole from which there is no escape, no brightness. And loud in my ears from every side I hear, 'failure, failure, failure...' I love you so much ... I am too old and enmeshed in everything you do and are, that I cannot conceive of life without you ... My going will leave quite a rumor but you can say I was overworked and overwrought. Your reputation with your friends and fans will not be harmed ... Sometimes think of the fun we had all thru the years ..." </span></div>
</div>
<div class="" data-block="true" data-editor="ensqa" data-offset-key="a7k14-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="a7k14-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="a7k14-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="ensqa" data-offset-key="ajn8g-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="ajn8g-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="ajn8g-0-0" style="font-family: inherit;">she takes her own life. dr seuss said later, "I didn't know whether to kill myself, burn the house down, or just go away and get lost." he soon married the other woman and went back to work writing childrens book.</span></div>
</div>
<div class="" data-block="true" data-editor="ensqa" data-offset-key="duk7r-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="duk7r-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="duk7r-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="ensqa" data-offset-key="fos63-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="fos63-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="fos63-0-0" style="font-family: inherit;">now, i guess, back to drawing trees for my video game. i shaded this one in the style of seuss:</span><br />
<span data-offset-key="fos63-0-0" style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNnqkxpxZ1-QbkWEzvig3Y1CrfcsueZ-H0Ck4L962ajoO4oaI7ZL0K66X2JUcQlLeZPZFCD-I4yfqoDWwFU9dfIbE92nO8iSWabj0cNunDPjSNEabT9ytCkHtALFNAn52c4t2TuFWgKWg/s1600/tree_seuss.png" imageanchor="1"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNnqkxpxZ1-QbkWEzvig3Y1CrfcsueZ-H0Ck4L962ajoO4oaI7ZL0K66X2JUcQlLeZPZFCD-I4yfqoDWwFU9dfIbE92nO8iSWabj0cNunDPjSNEabT9ytCkHtALFNAn52c4t2TuFWgKWg/s200/tree_seuss.png" width="177" /></a></span><br />
<br />
and here it with leaves, fruit, and placed on a sky island:<br />
<br />
<span data-offset-key="fos63-0-0" style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNnqkxpxZ1-QbkWEzvig3Y1CrfcsueZ-H0Ck4L962ajoO4oaI7ZL0K66X2JUcQlLeZPZFCD-I4yfqoDWwFU9dfIbE92nO8iSWabj0cNunDPjSNEabT9ytCkHtALFNAn52c4t2TuFWgKWg/s1600/tree_seuss.png" imageanchor="1"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg11v_bwX8doKpUc2KnX07stT6dNC-E3J-vfk2BSdypOBSxjG7qCVubtexCgHewD66yog33JCFQu3D74sdIof_AHwnFOomQFWHRFHkxXqGUfg4agb_Nt3G3HKvNJOgvisx8wbAA6McJh0w/s1600/tree_seuss.png" imageanchor="1"><img border="0" height="492" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg11v_bwX8doKpUc2KnX07stT6dNC-E3J-vfk2BSdypOBSxjG7qCVubtexCgHewD66yog33JCFQu3D74sdIof_AHwnFOomQFWHRFHkxXqGUfg4agb_Nt3G3HKvNJOgvisx8wbAA6McJh0w/s640/tree_seuss.png" width="640" /></a></span><br />
<br />
<br />
rest in peace, ted and helen.</div>
</div>
mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0tag:blogger.com,1999:blog-4904804009453176306.post-77224153458567911382018-02-20T10:56:00.003-08:002018-02-20T11:01:13.772-08:00Sky Islands For Flying Dogs And Whales<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
Here's some screenshots from when I was debugging my new island/building placement system. I have created about 20 islands that can then be flipped across the x or y axis, providing me with many extra island permutations. Then when I'm procedurally generating a level, it can attempt to place any of these islands underneath a building. It has to make sure it doesn't hit another island, and then if the island is placed, it then checks if there's other space left on it for the next buildings to be placed on it. It's all kind of a headache. What this doesn't show is how I carve the river out of the cavern in the first place. That was a great struggle solved long ago!</div>
<ul>
<li>Red squares: failed island spawn attempts</li>
<li>Magenta squares: possible building spawns</li>
<li>Tiny green squaress: the corners of a building's 'placement collider' or area that needs to be accessible</li>
<li>Tiny teal/tiny black squares: the nearest map coordinates to the green points, going around perimeter, checking if inside cavern wall (teal) or not inside cavern wall (black)</li>
<li>Tiny yellow squares: points along building's placement collider's perimeter that are outside of map coordinates</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOoshdj2q3E86Ey3QulZc6I_QUvpEJT6epTHnMBVc47l81A41CmD1TJdi4WdPwWetkG2KRhMP6JEj2Lhlq3ghVtHatX1RZx2F33nLja8JuEyPSTcokGFTp17PX3XY3RqzRoDe6KNwTq14/s1600/river_generation_debug_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOoshdj2q3E86Ey3QulZc6I_QUvpEJT6epTHnMBVc47l81A41CmD1TJdi4WdPwWetkG2KRhMP6JEj2Lhlq3ghVtHatX1RZx2F33nLja8JuEyPSTcokGFTp17PX3XY3RqzRoDe6KNwTq14/s640/river_generation_debug_1.png" width="640" /></a></div>
<br />
<br />
This image has a lot of the debug stuff turned off, so you can see what's underneath.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkgcUSj3cq-Zik6uhSpjKIm1Ievbp2Dq4JdVRN6Y1_yEN0p-p_knrgzObXelY7efz3W0oXSTrqm1Jy7WnTTQfwUY296eIQOiL1XqdWn3sbLb2nm_uOrvTfMlk3YpfgoJhERLeVAEM0hnk/s1600/river_generation_debug_bug.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkgcUSj3cq-Zik6uhSpjKIm1Ievbp2Dq4JdVRN6Y1_yEN0p-p_knrgzObXelY7efz3W0oXSTrqm1Jy7WnTTQfwUY296eIQOiL1XqdWn3sbLb2nm_uOrvTfMlk3YpfgoJhERLeVAEM0hnk/s640/river_generation_debug_bug.png" width="640" /></a></div>
<br />mclarkhttp://www.blogger.com/profile/09412991808194480694noreply@blogger.com0