tag:blogger.com,1999:blog-220281762024-03-07T00:58:20.118-08:00Game MusingsA look at the games industry by a veteran game developer.Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.comBlogger304125tag:blogger.com,1999:blog-22028176.post-80067535974126770162023-07-23T04:22:00.005-07:002023-07-23T04:28:41.032-07:00Mid Year UpdateThe last year and a half has been quite busy. I've managed to release a number of new games including <a href="https://apps.apple.com/us/app/brainiversity-brain-training/id1634372699" target="_blank">Brainiversity: Brain Training</a> and <a href="https://apps.apple.com/us/app/retro-arcade-for-watch/id1667674066" target="_blank">Retro Arcade</a> both on Apple Watch and iPhone. I've also been keeping older games like Snappy Word, Kepler Attack and Jupiter Attack up to date. <div><br /></div><div>One thing that has slipped is, you guessed it <a href="https://amazonqueengame.com" target="_blank">Return of the Amazon Queen</a>. I'm putting the game on hold for the moment to focus on some smaller projects. The game looks great and using <a href="http://powerquest.powerhoof.com" target="_blank">PowerQuest</a> makes development easy and fun - but making an adventure game with dozens of rooms, lots of characters, heaps of puzzles and a compelling story takes a lot of time. </div><div><br /></div><div>Both Pete and I can't afford to work on it full time - which means at the current work pace the game will take quite a few years to complete. The original Amazon Queen was started in 1992 and didn't ship until 1995 - and we worked on it full time. </div><div><br /></div><div>My plan is to focus on some smaller projects using Unity (which Queen is being built in) and get some runs on the board. I haven't shipped a PC game in over a decade so I have lot to re-learn. I think getting some stuff out faster will only help make for a better Amazon Queen. </div><div><br /></div><div>So what are we working on now? Well, like everything, it could change - but the game we are building is deliberately designed to be a small game that we can build in a short amount of time (relative to Queen at least!) and that we can sell on Steam for under $10. </div><div><br /></div><div>If you'd like to keep up to date then subscribe to the <a href="https://tinyletter.com/redsprite" target="_blank">Red Sprite Newsletter</a> and also check back here.</div><div><br /></div><div>And if you are on social media then check out my <a href="https://twitter.com/JohnPassfield" target="_blank">Twitter</a>, <a href="https://mastodon.gamedev.place/@johnpassfield" target="_blank">Mastodon</a> and <a href="https://www.tiktok.com/@retrojohnno" target="_blank">TikTok</a> accounts where I will be posting about the game on a regular basis.</div><div><br /></div><div>- John</div>Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.comtag:blogger.com,1999:blog-22028176.post-82575880213119026462022-01-27T05:28:00.001-08:002022-01-27T05:30:16.592-08:00Return of the Amazon Queen Sequel<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgaX6C-fKaghoKaitYD2UmUxt_neXMoGJd0mODhiJADxIOLZauWEoO9EwQfQt31vkTpT0Ic2hMC3cFXhTvmp35cdZuHA8P6Dwi-RMuySX1JnIwSydAeWfw2COJp6f9T9urXLvjmrHje3hroIfTODf_H8yNBrgSh7mMJrHclb3d1XTQ5UZI6bQ=s1500" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="589" data-original-width="1500" height="126" src="https://blogger.googleusercontent.com/img/a/AVvXsEgaX6C-fKaghoKaitYD2UmUxt_neXMoGJd0mODhiJADxIOLZauWEoO9EwQfQt31vkTpT0Ic2hMC3cFXhTvmp35cdZuHA8P6Dwi-RMuySX1JnIwSydAeWfw2COJp6f9T9urXLvjmrHje3hroIfTODf_H8yNBrgSh7mMJrHclb3d1XTQ5UZI6bQ=w320-h126" width="320" /></a></div><p>After 27 years, Flight of the Amazon Queen is finally getting a sequel!</p><p>You can follow progress on our official page here: <a href="http://amazonqueengame.com">amazonqueengame.com</a></p><p>I've been wanting to make a new Amazon Queen for ages. I had a design floating around since the original was released, and even dabbled in making a tiny version for Apple Watch. </p><p>Recent events and advances in tools have made it a possible. George Broussard had introduced me to PowerQuest through the wonderful LocoMotive demo from a year or so ago, and recently Matt Hall reminded me about PowerQuest while I was discussing making Amazon Queen as an isometric 3D game. </p><p>PowerQuest is a Unity package that does all the heavy lifting. How I wish I had this back when we made Flight of the Amazon Queen. As it was, I had to build the game engine AND the game editor AND a dialog editor AND implement the game!!</p><p>So, I owe a big thanks to George and Matt for pushing me in the right direction of making the new Queen as a traditional point and click adventure game.</p><p>Luckily my good mate and original box cover/manual artist on Flight of the Amazon Queen, Pete Mullins, was keen to jump on board and make the new game with me.</p><p>So, we kicked off development just before Christmas 2021 and released a teaser trailer at the start of 2022. You can check it out here:</p><p><a href="https://youtu.be/u96m1yQ8hdY">https://youtu.be/u96m1yQ8hdY</a></p><p>Making an adventure game takes a while, and Pete and I know we are in for a long ride. So I thought it would be nice to document the start of that journey. This blog post is going to show off the current process we have in making the game. I expect this to change over time as we <i>re-learn </i>how to make adventure games :-)</p><p>To kick things off, we'd like to share some art from the first location in the game - the Rio de la Meurte Cantina in Mexico.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhhQGXUm3PLrrbqTbrv3aGPkZ1hk-TU3SH9HTR8MW-QfE2JLkwDGIi8KudhKkrMEKcweRSKwkXLpGQyV3S4M6YKcvGfOHr-GOtAZAYdYqzzUZm1_UrykHuGt3XyA8hs-JoTQ1bcKyis5YazNdQfF_ApYpl4jSTGB6ZTiRxO1EbeZtvd5yEDnw=s1608" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="894" data-original-width="1608" height="178" src="https://blogger.googleusercontent.com/img/a/AVvXsEhhQGXUm3PLrrbqTbrv3aGPkZ1hk-TU3SH9HTR8MW-QfE2JLkwDGIi8KudhKkrMEKcweRSKwkXLpGQyV3S4M6YKcvGfOHr-GOtAZAYdYqzzUZm1_UrykHuGt3XyA8hs-JoTQ1bcKyis5YazNdQfF_ApYpl4jSTGB6ZTiRxO1EbeZtvd5yEDnw=s320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Rio de la Muerte Cantina</td></tr></tbody></table><div><br /></div>Joe King has run into some trouble with the locals and it's your job to make sure he gets out of Mexico in one piece.<br /><p>Pete and I are currently building the first location to a high level of polish before tackling the rest of the game. This gives us a chance to test out the art style and animation, implement a bunch of different puzzles, try out different ways to interact with the game world, and to experiment with writing styles for Joe and the rest of the cast.</p><p>As previously mentioned, the game is being built in Unity using PowerQuest - a great development tool by Dave Lloyd of <a href="http://www.powerhoof.com/" target="_blank">Powerhoof</a>.</p><p>Pete and I discuss the rough idea for a location and the rooms involved. I then wire up some crude programmer art of the rooms in Unity. This helps us rapidly test the feel for the location - does it all connect together okay?</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi-zGhZAqIUvMZ1F7S8pZjo_PhErL_MPCQlybba9uHHMFM7wBwGY6gfy2-djqNSWYjMntqagsIOG9Nhz7RdNwW58n0xCVFLLq6QOlqKB-gBzYOzZX8DfAKFD4ORUvoM2ep3xg1StGPl3vQ9NSqyfVhav2Qu9VUZe7ZHB3wcGjFMjXykFq4EMg=s3840" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="3840" height="90" src="https://blogger.googleusercontent.com/img/a/AVvXsEi-zGhZAqIUvMZ1F7S8pZjo_PhErL_MPCQlybba9uHHMFM7wBwGY6gfy2-djqNSWYjMntqagsIOG9Nhz7RdNwW58n0xCVFLLq6QOlqKB-gBzYOzZX8DfAKFD4ORUvoM2ep3xg1StGPl3vQ9NSqyfVhav2Qu9VUZe7ZHB3wcGjFMjXykFq4EMg=s320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">John's bad programmer art of the Cantina</td></tr></tbody></table><br /><div>Pete then does a pencil sketch of the room.</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhmmoZ28Vgpr_6R7IGUEf8FpMveZbnde3cevdEyL_18tgwpWDW-rm2OGWXP_4CBEoWGCm7-MwTzjhvHXwe9R7dNfeTBGBB3wfaVTXfESE6jCXRAM7y2hcJsEOpZLxbt4Z0g3_fqX91gYBIgxsuK7esBgLrmTUbh3rqmV6pnIHP8JRCwmKxELg=s640" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="480" data-original-width="640" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEhmmoZ28Vgpr_6R7IGUEf8FpMveZbnde3cevdEyL_18tgwpWDW-rm2OGWXP_4CBEoWGCm7-MwTzjhvHXwe9R7dNfeTBGBB3wfaVTXfESE6jCXRAM7y2hcJsEOpZLxbt4Z0g3_fqX91gYBIgxsuK7esBgLrmTUbh3rqmV6pnIHP8JRCwmKxELg=s320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Pete's blue line art for the cantina</td></tr></tbody></table><br /><div>Next Pete produces a cleaned up version of the pencil sketch and gives it to me as a 1920x1080 image so I can drop it into the game to replace my programmer art.</div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgkUTw8VoW_7pF7eJdoOUfsjAAdj17J00p17yt_A9wh0Apd8pZRW_VG62Q_qKw7NbCHDKmz1qbBb4Z0SmDCiE5fbVItwtrVmfSccBOnXvwjj4uIynaOTM0FMg04CnDZLcSPOXS4wXOSZ1jqbOK-LvqcXz0UJq6Y-zo-phMA1zwYHeBuCuXOeg=s2500" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="2500" height="138" src="https://blogger.googleusercontent.com/img/a/AVvXsEgkUTw8VoW_7pF7eJdoOUfsjAAdj17J00p17yt_A9wh0Apd8pZRW_VG62Q_qKw7NbCHDKmz1qbBb4Z0SmDCiE5fbVItwtrVmfSccBOnXvwjj4uIynaOTM0FMg04CnDZLcSPOXS4wXOSZ1jqbOK-LvqcXz0UJq6Y-zo-phMA1zwYHeBuCuXOeg=s320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Cleaned up pencil sketch at proper game resolution</td></tr></tbody></table><br /><div>During this process we get a better understanding of where the props and characters should be.</div><div><br /></div><div>Once we're happy with the layout, Pete then builds the room in 3D using Blender. He produces a white box version of the room.</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiB-YFM8a64o4v6x3BcOhdaVY9T0HNGULSosSJj9BnrEPS38KA-xfVeVRwJ4smQj8YG4sU_V9tqud5Cyo--Hgisl02aJ1c6BWlKul1ioIj3Ue7NZwMMf0zDcvXWEVruqivixOBGrhrE6lF8tlBIvGZ4tk-suO4etO9FIOuVh04uaPupjICzbg=s640" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="480" data-original-width="640" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiB-YFM8a64o4v6x3BcOhdaVY9T0HNGULSosSJj9BnrEPS38KA-xfVeVRwJ4smQj8YG4sU_V9tqud5Cyo--Hgisl02aJ1c6BWlKul1ioIj3Ue7NZwMMf0zDcvXWEVruqivixOBGrhrE6lF8tlBIvGZ4tk-suO4etO9FIOuVh04uaPupjICzbg=s320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Pete uses Blender to create the rooms</td></tr></tbody></table><br /><div>Once this is done we drop the white box render into the game to replace the pencil sketch.</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjPIPWTPqM4_FaZfDX2Hm4uG0avBGCCZ3lvstPwKJrja2-TBY0D47AOruPKrSranVk6Qslpq0CKLKRHVkKJxzOrXgw2eJRKgn0p_iTWTP3biW08HDQAvc_gE1_v-IGgKSPiwFjaFV_4PiGgOod0AATDCk8uloi3rEOWuT8eW-PkOVm1EG8G3A=s2500" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="2500" height="138" src="https://blogger.googleusercontent.com/img/a/AVvXsEjPIPWTPqM4_FaZfDX2Hm4uG0avBGCCZ3lvstPwKJrja2-TBY0D47AOruPKrSranVk6Qslpq0CKLKRHVkKJxzOrXgw2eJRKgn0p_iTWTP3biW08HDQAvc_gE1_v-IGgKSPiwFjaFV_4PiGgOod0AATDCk8uloi3rEOWuT8eW-PkOVm1EG8G3A=s320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The 3D version built to match the 2D sketch</td></tr></tbody></table><br /><div>Then Pete starts to texture the background. He uses pencil sketches as placeholders for the characters.</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi5qnDuBACGSOCs8fT7Q3WUiauo0f6hqOpg_R7hH5X5ZO3CR0aF_Wz64fIacI__gJ-hxwi0fwYfCuXKlhaKU0pviYcOENiEdoOSk7pLb2Kws6EW829sYyqvNHfGYibu1dK5hYzKpHHN__Z6sk-JwoT0t8-LvC9SmM7DPq0-52mpP0xev80GSA=s2158" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1219" data-original-width="2158" height="181" src="https://blogger.googleusercontent.com/img/a/AVvXsEi5qnDuBACGSOCs8fT7Q3WUiauo0f6hqOpg_R7hH5X5ZO3CR0aF_Wz64fIacI__gJ-hxwi0fwYfCuXKlhaKU0pviYcOENiEdoOSk7pLb2Kws6EW829sYyqvNHfGYibu1dK5hYzKpHHN__Z6sk-JwoT0t8-LvC9SmM7DPq0-52mpP0xev80GSA=s320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Pete textures the backgrounds</td></tr></tbody></table><br /><div>I keep testing the game, adjusting the dialogs and testing out puzzles while Pete draws and animates the characters.</div><div><br /></div><div>Here is a near final version of the room with more detail and a finished version of Rosa, the cantina proprietor.</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiM1pYVSfQoCHvjwt6NxUR6TUN5bPNFiQDCcQPCy-606U6AGBIn4aIut7CHq5FCyfbATOTllGZJBo-s47Q4yGPoEXP1TPhPNEeYJ5nhRKDsGU64BX2je1spP4DdyjVkOQqffeohRTISa7WjzHIwLUe9xKlM4iUcO3NcZonxlrxlOv0eUPHtWg=s1608" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="894" data-original-width="1608" height="178" src="https://blogger.googleusercontent.com/img/a/AVvXsEiM1pYVSfQoCHvjwt6NxUR6TUN5bPNFiQDCcQPCy-606U6AGBIn4aIut7CHq5FCyfbATOTllGZJBo-s47Q4yGPoEXP1TPhPNEeYJ5nhRKDsGU64BX2je1spP4DdyjVkOQqffeohRTISa7WjzHIwLUe9xKlM4iUcO3NcZonxlrxlOv0eUPHtWg=s320" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The cantina with more detail and lighting effects</td></tr></tbody></table><br /><div>It may seem like a lot of steps, but Pete works very fast - and because it's 3D we can move stuff around easily. For example, moving Rosa from the bar to the table in the middle was a lot faster than if the background had been hand drawn.<br /><p>Well, that's a sneak peek at the game. </p><p>I'll keep posting our progress and provide some interesting insights into making an adventure game. In a later blog post I'd like to discuss the difference between making a point and click game today compared to back in the nineties. Things have definitely changed :-)</p><p>Until next time!</p><p>-Johnno</p><div><br /></div><p></p><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><br /><p></p></div>Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-84727104487356090502021-10-28T21:26:00.001-07:002021-10-28T21:26:42.554-07:00Making Word Share for SharePlay<p style="text-align: left;">Word Share is a "swipe the letters to make a word" game that is based on a popular genre on the App Store. I decided to make a version of this game that would work with Apple's new SharePlay feature.</p><p style="text-align: left;">It requires iOS 15 and above as it uses new SwiftUI features, and of course, SharePlay which are exclusive to the new iOS.</p><p style="text-align: left;"><a href="https://apps.apple.com/us/app/word-share/id1578436355" target="_blank">You can download Word Share for free on the App Store</a>.</p><p style="text-align: left;"></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><span style="margin-left: 1em; margin-right: 1em;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbe3A_B6GplCxMRvbKs2wzURrhCEMQ0FM4j7jcqup40_hNyNa9LFFjn6QzYtI86FCMFt7WA8yUcbuC_K71yKU7684ECiBQVcUYLF2ehfwXUkWOHHS7o9eWIg0k1fvzAeZGM1Zx/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="2048" data-original-width="1152" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbe3A_B6GplCxMRvbKs2wzURrhCEMQ0FM4j7jcqup40_hNyNa9LFFjn6QzYtI86FCMFt7WA8yUcbuC_K71yKU7684ECiBQVcUYLF2ehfwXUkWOHHS7o9eWIg0k1fvzAeZGM1Zx/" width="135" /></a></span></div><div class="separator" style="clear: both; text-align: center;">Word Share game play</div><div class="separator" style="clear: both; text-align: center;"><br /></div></div></div><h3 style="text-align: left;">Development Time</h3><p>The game had a relatively short development time. I started building the game on the 21st of July 2021, a few weeks after the 2021 Apple Worldwide Developers Conference, and shipped it on October 27th, 2021. Development time was 98 days from conception to being on the App Store.</p><p>The project was a part time effort, with the actual working days spent on the project totalling around 18 eight hour days. I have a full time job, so work was done after 8pm every night. I also have a number of projects on the go - so I often switch between projects depending on the state they are in.</p><h3 style="text-align: left;">Design Goals</h3><p>I wanted to make Word Share as minimal as possible.</p><p>One thing I noticed with a lot of competitor word games is that over time their UI has become cluttered. A typical competitor screen can have:</p><p></p><ul style="text-align: left;"><li>Daily bonus claim button</li><li>Social standing statistic (eg. Solved by 25% of players)</li><li>Currency counter and buy more currency button</li><li>Shuffle button</li><li>Use a hint button</li><li>Special power up button</li><li>Word definition button</li><li>Quest status button</li><li>Watch video for currency button</li><li>Banner ad</li></ul><p></p><p>Below are some example screenshots.</p><p></p><div class="separator" style="clear: both; text-align: center;"><span style="margin-left: 1em; margin-right: 1em;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHlLQqhPir5vu55H_7YhXt_QUsbnN9kAvLWmq78ZVbLOxyHemmk2vj16pdI8vBFDwVE8xorbUr36DvSLcwxLl9CC4B9W-t8hZ32nyOtue9sm8KtpdQtlGhoBe1U7af_YShUZtU/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1624" data-original-width="750" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHlLQqhPir5vu55H_7YhXt_QUsbnN9kAvLWmq78ZVbLOxyHemmk2vj16pdI8vBFDwVE8xorbUr36DvSLcwxLl9CC4B9W-t8hZ32nyOtue9sm8KtpdQtlGhoBe1U7af_YShUZtU/" width="111" /></a></span></div><div class="separator" style="clear: both; text-align: center;">Word Cookies example game screen</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span style="margin-left: 1em; margin-right: 1em;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHlLQqhPir5vu55H_7YhXt_QUsbnN9kAvLWmq78ZVbLOxyHemmk2vj16pdI8vBFDwVE8xorbUr36DvSLcwxLl9CC4B9W-t8hZ32nyOtue9sm8KtpdQtlGhoBe1U7af_YShUZtU/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1624" data-original-width="750" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNXfBkkkcE1IjnhY7MmyifBPvoeoLIHS3lsLj52WaCpjA_17Np5u4VF62G_JyURL7gRIQDqX62K8At4czU2kjlbmoWkPhL3HdIag8ElcX7986evhlsHrL7f59hsDY9aCgpA9Eb/" width="111" /></a></span></div><div class="separator" style="clear: both; text-align: center;">Word Trip example game screen</div><br /><p></p><p>I added only what was necessary. </p><h3 style="text-align: left;">Monetization</h3><p>Word Share is a free game supported by ads.</p><p>I did debate over wether I should have a banner ad. For Snappy Word they account for around 8% of revenue, which is still a reasonable amount of money. I decided to not have banner ads for a less cluttered screen. </p><p>For the launch I went with interstitial ads between levels, and rewarded ads to earn 3 hints. I introduce the ads after the player has played a number of levels, and only show interstitials if they haven't used rewarded ads.</p><h3 style="text-align: left;">SharePlay</h3><p>This game was built for SharePlay. Apple gave a great demo of SharePlay in one of their WWDC sessions and released sample code of the demo project. This was invaluable in getting up and running.</p><p>The biggest challenge I had was trying to figure out the best way to get players into the SharePlay experience. Because SharePlay was so new, there were no other games to look to for guidance or inspiration. So I had to make up the onboarding experience myself and hope that it was to Apple's liking!</p><p>I also had to figure out how a multi-player word game would work with FaceTime. How do you identify the users to each other? What is the scoring system like? Can players use hints while competing?</p><p>I opted for a simple system. A player starts a FaceTime call and then a big button appears on the front screen letting them know they can start a SharePlay game.</p><p>I decided on 3 rounds with the highest scoring player winning the game. Scores are based on 1 point per letter for a solved word. No hints are available to any players.</p><p>In my planning I was considering adding taunt buttons to the game - but quickly realised SharePlay is built on FaceTime - so players can smack talk each other, or even help each other using video and voice.</p><h3 style="text-align: left;">Building on a Foundation</h3><p>I have another word game on the App Store called <a href="https://apps.apple.com/us/app/snappy-word-word-puzzle-game/id1143681780" target="_blank">Snappy Word</a>. This project began as an Apple Watch launch game and I wrote about it here: <a href="https://passfieldgames.blogspot.com/2016/12/making-snappy-word.html" target="_blank">Making Snappy Word for Apple Watch</a></p><p>I updated Snappy Word to add in a new "swipe the letter to make a word" mode to keep up with the growing word game genre in the App Store. I used this existing codebase to help give me a headstart in making Word Share.</p><p>I took the base code for showing the unsolved word tiles and handling the word building input and added it to the new Word Share project. This code is built using the SpriteKit framework.</p><p>In my previous game I had used Storyboards for all the menu and UI screens, but for the new game I decided to use SwiftUI. I've used Flutter and SwiftUI a lot and I love reactive programming. It makes creating screens so much easier!</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjtvZ1T3R1Z6c8XgkHB3lwsYSoNJUliyv0Ns2OHdN1g6hXUOjEIffaxolcJLd7SC6jgfZJbvWuwu_bNh4D_UK-gK-5LZOC9RXy6BU1zUoexgqWUKo5TMRRHxVpap3FCN5g0fVk/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1108" data-original-width="748" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjtvZ1T3R1Z6c8XgkHB3lwsYSoNJUliyv0Ns2OHdN1g6hXUOjEIffaxolcJLd7SC6jgfZJbvWuwu_bNh4D_UK-gK-5LZOC9RXy6BU1zUoexgqWUKo5TMRRHxVpap3FCN5g0fVk/" width="162" /></a></div><div class="separator" style="clear: both; text-align: center;">Storyboards for Level Select in Snappy Word</div><br /><br /><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWfnevcp80hJxBshNjwxgAXImPqbD9hZ_K1co6M9urrqNvXES29ZeLtoBNFVC7RJCkIFgWvzwWec0umWmrCD63p2LAsNlU3XUxXjMFxCqSqMmtYyv5Ar4kYkNXmxCuA5CZWBVc/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="610" data-original-width="695" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWfnevcp80hJxBshNjwxgAXImPqbD9hZ_K1co6M9urrqNvXES29ZeLtoBNFVC7RJCkIFgWvzwWec0umWmrCD63p2LAsNlU3XUxXjMFxCqSqMmtYyv5Ar4kYkNXmxCuA5CZWBVc/" width="273" /></a></div><div class="separator" style="clear: both; text-align: center;">SwiftUI for Level Select in Word Share</div><br />I used the same level select screen format in Word Share as I did in Snappy Word. Writing it in SwiftUI took me around an hour compared to almost 2 days it took in Storyboards for Snappy Word. Of course that may just be me. For some reason I could never get my head around Storyboard and its use of constraints, layout margins, insets and all the stuff that had to be set inside the inspector. I love being able to lay out the UI in code which is why SwiftUI appeals to me.<p></p><p>I wrote about SwiftUI and Flutter here: <a href="https://passfieldgames.blogspot.com/2021/02/flutter-vs-swiftui.html" target="_blank">Flutter vs SwiftUI</a></p><p>Since writing that blog post SwiftUI has seen a number of great improvements, and I have to say that I would rank Flutter and SwiftUI as both excellent choices for development with SwiftUI edging out Flutter in terms of ease of use and code simplicity, and Flutter edging out SwiftUI in terms of platform reach. I have another word game coming out soon that has been written in Flutter - expect a blog post about it when it launches!</p><p>I have to give a big shout out to <a href="https://www.jamesswiney.com" target="_blank">James Swiney</a>, another iOS developer from Brisbane, Australia who helped me get my head around using SpriteKit with SwiftUI. James had done a lot of the groundwork in his game Aruna's Adventure.</p><h3 style="text-align: left;">Visual Style</h3><p>A big part of this genre of word game is the background images on each screen. I'm an Aussie developer, so for the images I chose a bunch of photos I had taken from my trips around Australia - with many of them taken around the suburb where I live.</p><p>I'm quite lucky that we have access to a lot of beautiful beaches - so the game is full of lots of sand and inviting blue waters :-)</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiXqDP_SHZjPy0vArErkCdwxRAL-s6UK-EcJv1OXTaokFt0L6sjKtZIBbqyjYJw0SEr4jKyBUrwaSHNBM_J_sEdGnZwyYGzh16pbf5M5wCF_82pnPtE3erunBq6OAHHDhjDWky/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="2048" data-original-width="1535" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiXqDP_SHZjPy0vArErkCdwxRAL-s6UK-EcJv1OXTaokFt0L6sjKtZIBbqyjYJw0SEr4jKyBUrwaSHNBM_J_sEdGnZwyYGzh16pbf5M5wCF_82pnPtE3erunBq6OAHHDhjDWky/" width="180" /></a></div><div class="separator" style="clear: both; text-align: center;">It's great to have these views within driving distance :-)</div><br />I also chose yellow as the primary colour in the game. It pops well agains the predominately blue and green photos I chose.<p></p><p>The icon was a challenge. I did attempt to create something new and original but I settled on a simple W on a yellow background. I may update this but it's hard to get a word game icon that stands out from the rest.</p><h3 style="text-align: left;">Creating New Content</h3><p>Another thing that helped speed up the development process is that I had created tools for Snappy Word that I could easily re-use and extend for Word Share. I built a bespoke app that would generate lists of anagrams from a dictionary, checking for duplicates and offering me the ability to output in a format that my game used.</p><p>This utility allowed me to create over 400 brand new levels for launch, with another 500 or so waiting for future updates.</p><p>I plan to add new level packs regularly and address any issues found by players.</p><h3 style="text-align: left;">Conclusion</h3><p>I had a lot of fun making the game, and while implementing SharePlay was challenging, I'm proud of what I achieved. </p><p>It was also great to get a New Games We Love feature from Apple in the launch week!</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVt2chmmRoJfx2-tIDT9d2O9aoSPrU1duT2z60iCqlO714Lfka1-QNJ8y-GUIqhf3uWtDO6JacLLt_wlWk5RrTcbUzP5jM88q2I7YNg_a8HUTOUFBr0fHn7QUDD1-3ZX8McpdT/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="351" data-original-width="750" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVt2chmmRoJfx2-tIDT9d2O9aoSPrU1duT2z60iCqlO714Lfka1-QNJ8y-GUIqhf3uWtDO6JacLLt_wlWk5RrTcbUzP5jM88q2I7YNg_a8HUTOUFBr0fHn7QUDD1-3ZX8McpdT/" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;">Thank you Apple!</div><br />Please check out <a href="https://apps.apple.com/us/app/word-share/id1578436355" target="_blank">Word Share on the App Store</a> and let me know what you think!<p></p><p>Cheers,</p><p>John</p><p><br /></p><br /><p></p><p><br /></p><p><br /></p><p><br /></p>Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-65039649206879737402021-02-04T05:12:00.003-08:002021-02-04T15:43:02.555-08:00Flutter vs SwiftUI<p>It's a new year and time to make a new app.</p><p>So what do I build my new app in? SwiftUI or Flutter?</p><p>TL;DR - I'm making my new app in Flutter.</p><p>I arrived at this decision by making a vertical slice of the app using SwiftUI, Flutter and standard Swift with SpriteKit. </p><p>The app I'm building is an update of my Brainiversity brain training game. Brainiversity has a number of small games that test your math, memory and word skills. I've been making versions of this app since 2007, so I have code bases written in C++, ActionScript and Lua. I used the existing "Add It Up" mini-game for my vertical slice.</p><h3 style="text-align: left;">Swift and SpriteKit</h3><div>Line count: 647</div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5WFWlj7vWTt9ZWRmzgUIDuYBP0L7aLgdj2NbRKh7MWxZO9UWvA9KCU824hr2Qj3bOoqmRBhSUoVcPfrH3c7qSmLMdKgHYjr7rMAeuQP9zeLlrAVMTF2AZK1dVUBCoXqbOAnGc/" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="1624" data-original-width="750" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5WFWlj7vWTt9ZWRmzgUIDuYBP0L7aLgdj2NbRKh7MWxZO9UWvA9KCU824hr2Qj3bOoqmRBhSUoVcPfrH3c7qSmLMdKgHYjr7rMAeuQP9zeLlrAVMTF2AZK1dVUBCoXqbOAnGc/w185-h400/AddItUp_SwiftSpriteKit.jpeg" width="185" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">SpriteKit version</td></tr></tbody></table></div><div><br /></div><div>This version is very similar to the original C++, ActionScript and Lua versions. It uses sprite animations to give the game zing, and everything is imperative - so the text in the answer counter label in the top left of the screen is manually updated when a new question is generated. </div><div><br /></div><div>I found SKAction was useful in handling animations. This made it really easy to chain together a sequence of events like:</div><div><ol style="text-align: left;"><li>a cross appears when the user presses the wrong answer button,</li><li>the correct answer scrolls in from the right of the screen,</li><li>after a pause, answer counter pulses as it counts up one,</li><li>the answer scrolls off screen to the left as a new question scrolls in from the right</li><li>the buttons flop over to reveal new answer values.</li></ol><div>Compared to the SwiftUI and Flutter versions, there was a lot of code to make stuff happen, and to be honest, after making apps with reactive UI, programming this way felt old fashioned.</div></div><div><br /></div><h3>SwiftUI</h3><div>Line count: 210</div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4Svun6PDmMwgiyLp3YRxY3yFUFC20CTiZ4aEHs_tS3WXVMEm6g5pG2ldI1WAhSLYfKjO7CoGOG1eYSjt0Mgh0w80QyoFLTnjlWWV2mr-_jSBTLLRey5X9-L8yZTe-AOs4kUxy/" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="1624" data-original-width="750" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4Svun6PDmMwgiyLp3YRxY3yFUFC20CTiZ4aEHs_tS3WXVMEm6g5pG2ldI1WAhSLYfKjO7CoGOG1eYSjt0Mgh0w80QyoFLTnjlWWV2mr-_jSBTLLRey5X9-L8yZTe-AOs4kUxy/w185-h400/AddItUp_SwiftUI.jpeg" width="185" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">SwiftUI version</td></tr></tbody></table><br /></div><div>I've already made a few apps in SwiftUI so I was used to the reactive paradigm. Reactive programming results in reduced code which makes reading the code so much easier. I love how SwiftUI handle state with the @State property wrapper - it seems a lot cleaner and less code than Flutter's SetState or Provider solutions.</div><div><br /></div><div>The use of VStack, HStack and Spacer makes it really easy to lay out the screen. Here is the code to layout the question and the answer buttons.</div><div><p style="background-color: #1f1f24; color: #d0a8ff; font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span>VStack<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> {</span></p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">VStack</span> {</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">HStack</span> {</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span><span style="color: #d0a8ff;">Text</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">(</span><span style="color: #fc6a5d;">"Correct: </span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">\(</span><span style="color: #67b7a4;">correct</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span><span style="color: #fc6a5d;">"</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span></p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> .<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">bold</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> .<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">font</span>(.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">system</span>(size: <span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">width</span> <span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">*</span> <span style="color: #d0bf69; font-size: 13px; font-stretch: normal; line-height: normal;">0.20</span>))</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Spacer</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span><span style="color: #d0a8ff;">Text</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">(</span><span style="color: #fc6a5d;">"Wrong: </span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">\(</span><span style="color: #67b7a4;">mistakes</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span><span style="color: #fc6a5d;">"</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span></p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> .<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">bold</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> .<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">font</span>(.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">system</span>(size: <span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">width</span> <span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">*</span> <span style="color: #d0bf69; font-size: 13px; font-stretch: normal; line-height: normal;">0.20</span>))</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> }.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">padding</span>()</p>
<p style="background-color: #1f1f24; color: #fc6a5d; font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span><span style="color: #d0a8ff;">Text</span><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;">(</span>"Select the correct answer for the math equation below from the multiple choice buttons."<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span></p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> .<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">font</span>(.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">system</span>(size: <span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">width</span> <span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">*</span> <span style="color: #d0bf69; font-size: 13px; font-stretch: normal; line-height: normal;">0.20</span>))</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> .<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">padding</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span><span style="color: #d0a8ff;">Text</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">(</span><span style="color: #67b7a4;">question</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span></p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> .<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">font</span>(.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">system</span>(size: <span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">width</span> <span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">*</span> <span style="color: #d0bf69; font-size: 13px; font-stretch: normal; line-height: normal;">0.35</span>))</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">VStack</span> {</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">HStack</span> {</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Spacer</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #9ef1dd; font-size: 13px; font-stretch: normal; line-height: normal;">RoundButton</span>(title: <span style="color: #fc6a5d; font-size: 13px; font-stretch: normal; line-height: normal;">"</span>\(<span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">answer1</span>)<span style="color: #fc6a5d; font-size: 13px; font-stretch: normal; line-height: normal;">"</span>, color: <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Color</span>.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">red</span>, size: <span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">width</span>, function: {<span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">tryAnswer</span>(button: <span style="color: #d0bf69; font-size: 13px; font-stretch: normal; line-height: normal;">1</span>)})</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 18px;"> </p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Spacer</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #9ef1dd; font-size: 13px; font-stretch: normal; line-height: normal;">RoundButton</span>(title: <span style="color: #fc6a5d; font-size: 13px; font-stretch: normal; line-height: normal;">"</span>\(<span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">answer2</span>)<span style="color: #fc6a5d; font-size: 13px; font-stretch: normal; line-height: normal;">"</span>, color: <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Color</span>.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">orange</span>, size: <span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">width</span>, function: {<span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">tryAnswer</span>(button: <span style="color: #d0bf69; font-size: 13px; font-stretch: normal; line-height: normal;">2</span>)})</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 18px;"> </p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Spacer</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> }.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">padding</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 18px;"> </p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">HStack</span> {</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Spacer</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #9ef1dd; font-size: 13px; font-stretch: normal; line-height: normal;">RoundButton</span>(title: <span style="color: #fc6a5d; font-size: 13px; font-stretch: normal; line-height: normal;">"</span>\(<span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">answer3</span>)<span style="color: #fc6a5d; font-size: 13px; font-stretch: normal; line-height: normal;">"</span>, color: <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Color</span>.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">green</span>, size: <span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">width</span>, function: {<span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">tryAnswer</span>(button: <span style="color: #d0bf69; font-size: 13px; font-stretch: normal; line-height: normal;">3</span>)})</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 18px;"> </p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Spacer</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #9ef1dd; font-size: 13px; font-stretch: normal; line-height: normal;">RoundButton</span>(title: <span style="color: #fc6a5d; font-size: 13px; font-stretch: normal; line-height: normal;">"</span>\(<span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">answer4</span>)<span style="color: #fc6a5d; font-size: 13px; font-stretch: normal; line-height: normal;">"</span>, color: <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Color</span>.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">blue</span>, size: <span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">width</span>, function: {<span style="color: #67b7a4; font-size: 13px; font-stretch: normal; line-height: normal;">tryAnswer</span>(button: <span style="color: #d0bf69; font-size: 13px; font-stretch: normal; line-height: normal;">4</span>)})</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px; min-height: 18px;"> </p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Spacer</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> }.<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">padding</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> }</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> }</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> <span style="color: #d0a8ff; font-size: 13px; font-stretch: normal; line-height: normal;">Spacer</span>()</p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> }</p>
<p style="background-color: #1f1f24; color: #a167e6; font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> .</span>navigationTitle<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;">(</span><span style="color: #fc6a5d;">"Add It Up"</span><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span></p>
<p style="background-color: #1f1f24; color: #a167e6; font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> .</span>onAppear<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> {</span></p>
<p style="background-color: #1f1f24; color: #67b7a4; font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span>generateResults<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;">()</span></p>
<p style="background-color: #1f1f24; color: #a167e6; font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span><span style="color: #67b7a4;">width</span><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> = </span><span style="color: #d0a8ff;">UIScreen</span><span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;">.</span>main<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;">.</span>bounds<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;">.</span>width<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span>*<span color="rgba(255, 255, 255, 0.85)" style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span><span style="color: #d0bf69;">0.3</span></p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> }</p></div><div><br /></div><div>This is fairly similar to Flutter, which uses Columns, Rows and Spacer - here is the button section code in Flutter:</div><div><div style="background-color: #1e1e1e; color: #d4d4d4; font-size: 13px; line-height: 20px; white-space: pre;"><p style="text-align: left;"><span style="font-family: arial;"><span style="color: #c586c0;">return</span> <span style="color: #4ec9b0;">Column</span>(<br /></span><span style="font-family: arial;"> children: <<span style="color: #4ec9b0;">Widget</span>>[<br /></span><span style="font-family: arial;"> <span style="color: #4ec9b0;">Row</span>(<br /></span><span style="font-family: arial;"> mainAxisAlignment: <span style="color: #4ec9b0;">MainAxisAlignment</span>.center,<br /></span><span style="font-family: arial;"> children: <<span style="color: #4ec9b0;">Widget</span>>[<br /></span><span style="font-family: arial;"> <span style="color: #dcdcaa;">answerButtonRound</span>(<br /></span><span style="font-family: arial;"> answer: answerList[<span style="color: #b5cea8;">0</span>],<br /></span><span style="font-family: arial;"> color: <span style="color: #4ec9b0;">Colors</span>.green,<br /></span><span style="font-family: arial;"> size: buttonSize,<br /></span><span style="font-family: arial;"> func: () => {<span style="color: #dcdcaa;">_answerButtonPressed</span>(buttonNr: <span style="color: #b5cea8;">1</span>)}),<br /></span><span style="font-family: arial;"> <span style="color: #dcdcaa;">answerButtonRound</span>(<br /></span><span style="font-family: arial;"> answer: answerList[<span style="color: #b5cea8;">1</span>],<br /></span><span style="font-family: arial;"> color: <span style="color: #4ec9b0;">Colors</span>.blue,<br /></span><span style="font-family: arial;"> size: buttonSize,<br /></span><span style="font-family: arial;"> func: () => {<span style="color: #dcdcaa;">_answerButtonPressed</span>(buttonNr: <span style="color: #b5cea8;">2</span>)}),<br /></span><span style="font-family: arial;"> ],<br /></span><span style="font-family: arial;"> ),<br /></span><span style="font-family: arial;"> <span style="color: #4ec9b0;">Row</span>(<br /></span><span style="font-family: arial;"> mainAxisAlignment: <span style="color: #4ec9b0;">MainAxisAlignment</span>.center,<br /></span><span style="font-family: arial;"> children: <<span style="color: #4ec9b0;">Widget</span>>[<br /></span><span style="font-family: arial;"> <span style="color: #dcdcaa;">answerButtonRound</span>(<br /></span><span style="font-family: arial;"> answer: answerList[<span style="color: #b5cea8;">2</span>],<br /></span><span style="font-family: arial;"> color: <span style="color: #4ec9b0;">Colors</span>.red,<br /></span><span style="font-family: arial;"> size: buttonSize,<br /></span><span style="font-family: arial;"> func: () => {<span style="color: #dcdcaa;">_answerButtonPressed</span>(buttonNr: <span style="color: #b5cea8;">2</span>)}),<br /></span><span style="font-family: arial;"> <span style="color: #dcdcaa;">answerButtonRound</span>(<br /></span><span style="font-family: arial;"> answer: answerList[<span style="color: #b5cea8;">3</span>],<br /></span><span style="font-family: arial;"> color: <span style="color: #4ec9b0;">Colors</span>.orange,<br /></span><span style="font-family: arial;"> size: buttonSize,<br /></span><span style="font-family: arial;"> func: () => {<span style="color: #dcdcaa;">_answerButtonPressed</span>(buttonNr: <span style="color: #b5cea8;">4</span>)}),<br /></span><span style="font-family: arial;"> ],<br /></span><span style="font-family: arial;"> ),<br /></span><span style="font-family: arial;"> ],<br /></span><span style="font-family: arial;"> );</span></p></div></div><div><div style="text-align: left;">Swift code is definitely a lot cleaner to read with less nesting and less boiler plate. The child and children parameters of Flutter take up extra space and cause more visual clutter.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">I hit a brick wall with SwiftUI when I wanted to chain animations together with some state updates in the midst of all the action. I could not find a way to make the question label animate away, then update the state for new questions, then slide an updated question text back on screen. The best answer I could find was to start the slide out animation with a slide in animaion, then set a timer to call my generateNewQuestions() function so it occurred halfway between the slide in and out.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Maybe I didn't look hard enough for the right way to do this, but that's currently an issue with SwiftUI documentation. There's not much of it out there. Whereas I found multiple examples and tutorials on how to do what I wanted in Flutter on flutter.dev and other web sites.</div><h4>Swift Pros</h4><p></p><ul><li>Light weight code that is easy to read. You can do a lot with so little.</li><li>Dark theme just works out of the box.</li><li>I can target Apple Watch.</li><li>CoreData is nice and works out of the box with Apple devices.</li><li>The state system is really easy to use.</li><li>No semi-colons!</li></ul><p></p><h4>Swift Cons</h4><p></p><ul><li>App Preview is slow to update, even on my M1 MacBook Air - and I constantly had to keep hitting Resume to rebuild the preview.</li><li>Documentation is lacking, especially compared to Flutter. Thank goodness for <a href="https://www.hackingwithswift.com">Hacking With Swift</a> - the best resource for Swift developers.</li><li>Can only make apps for the Apple ecosystem.</li><li>Refactoring is less advanced than Flutter.</li></ul></div><div><h3>Flutter</h3></div><div>Line count: 304</div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMVc2e7SKG2ij5-FnjJa-8BcCvFGKAi2ir0k-Aqnhj5CybtjY30at1oh1iCX4qNLCh7yD6U8FRmiIe-ZXFCE47uWujLoN5Wd7Ueffa50hTcALpx7uQnbldd2TusmI-KPkBWMl_/" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="1624" data-original-width="750" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMVc2e7SKG2ij5-FnjJa-8BcCvFGKAi2ir0k-Aqnhj5CybtjY30at1oh1iCX4qNLCh7yD6U8FRmiIe-ZXFCE47uWujLoN5Wd7Ueffa50hTcALpx7uQnbldd2TusmI-KPkBWMl_/w185-h400/AddItUp_Flutter.jpeg" width="185" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Flutter version</td></tr></tbody></table><br /><br /></div><div>Even though Flutter has sightly more boilerplate code to set things up, I like how everything is a widget and it's pretty consistent. You generally nest widgets within widgets - and when you go too deep you refactor out into new widgets which makes for easier to read code. SwiftUI has nesting as well, but also has modifiers which I'm not 100% sold on.</div><div><br /></div><div>In SwiftUI to make the text bold you add a .bold() modifier.</div><div><p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 13px; font-stretch: normal; line-height: normal; margin: 0px;"><span style="font-size: 15px; font-stretch: normal; line-height: normal;"> </span><span style="color: #d0a8ff;">Text</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">(</span><span style="color: #fc6a5d;">"Wrong: </span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">\(</span><span style="color: #67b7a4;">mistakes</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span><span style="color: #fc6a5d;">"</span><span style="font-size: 15px; font-stretch: normal; line-height: normal;">)</span></p>
<p style="background-color: #1f1f24; color: rgba(255, 255, 255, 0.85); font-family: Menlo; font-size: 15px; font-stretch: normal; line-height: normal; margin: 0px;"> .<span style="color: #a167e6; font-size: 13px; font-stretch: normal; line-height: normal;">bold</span>()</p></div><div><br /></div><div>In Flutter you add the bold as part of a parameter of Text.</div><h4 style="text-align: left;"><div style="background-color: #1e1e1e; color: #d4d4d4; font-size: 13px; font-weight: normal; line-height: 20px; white-space: pre;"><span style="font-family: arial;"><span style="color: #4ec9b0;"><span> <span> <span> <span> <span> <span> </span></span></span></span></span></span></span></span>Text(<span style="color: #ce9178;">'Wrong $</span><span style="color: #9cdcfe;">mistakes</span><span style="color: #ce9178;">'</span>, style: <span style="color: #4ec9b0;">TextStyle</span>(fontWeight: <span style="color: #4ec9b0;">FontWeight</span>.bold)),</div></h4><p></p><p style="text-align: left;">I guess what feels weird with SwiftUI modifiers is that to give a screen a title, you add the modifier at the bottom of the view - so when you read the code you aren't seeing the layout as it occurs. Whereas with Flutter, you add the screen title at the top so you read the screen in the order it's drawn. Maybe I'm being picky, but I found that a little weird.</p><p style="text-align: left;">Even though Flutter is a bit more wordy, I found it a lot easier to find out what modifiers are available by simply pressing CTRL-SPACE in VSCode. Maybe there is an easy way to find out what modifiers are available for Text() in Xcode apart from going into the Library Panel and searching (which is a pain) - but I have yet to find it.</p><p style="text-align: left;">Another plus with Flutter is that it's so easy to refactor code. Are your widgets nested too deep? Turn them into a new reusable widget by hitting Refactor and choosing <b>Extract to widget</b>. Want to wrap everything in a new Row? Hit Refactor and choose <b>Wrap with row</b>. Want to get rid of a top level widget? Again, hit Refactor and choose <b>Remove this widget</b>.</p><p style="text-align: left;">Xcode has a refactor option, but doesn't offer as many features. </p><p style="text-align: left;">In terms of Dart vs. Swift - I have to admit I found them fairly interchangeable and could happily switch between the two. Most of the stuff I am using to build my apps is common across both. All the modern language features like helper functions for lists such as sort, insert, and index functions were common to both and in many cases had the same name.</p><h4 style="text-align: left;">Flutter Pros</h4><div><ul style="text-align: left;"><li>Hot reload is amazing. Instant updates on my actual target device makes development so much faster.</li><li>Great documentation. Not only is the <a href="https://flutter.dev/docs">documentation at Fluter.dev</a> awesome, but there is a dedicated <a href="https://www.youtube.com/flutterdev">YouTube channel</a> with lots of content including the useful <a href="https://youtu.be/b_sQ9bMltGU">Widget of the Week</a>.</li><li>Lots of great <a href="https://pub.dev">packages at Pub.dev</a>. The odds are, if you need something, there is a package already available. Want to add charting to your app? There's are <a href="https://pub.dev/packages?q=charts">many packages</a> for that.</li><li>There is a Widget for literally everything. </li><li>Refactoring with VSCode is super easy.</li><li>Supports a lot more legacy devices and older OS versions.</li><li>Can make apps for iOS, Android, Mac, Windows and web. My website, <a href="http://www.redspritestudios.com">www.redspritestudios.com</a> is written in Flutter :-)</li><li>Flutter is open source. So you can drill down into any piece of code to see how it works. There is no blackbox like Swift.</li></ul></div><h4 style="text-align: left;">Flutter Cons</h4><p></p><ul style="text-align: left;"><li>Can't build for Apple Watch :-(</li><li>2D only. So no chance of doing any activities in 3D.</li><li>Slightly more verbose compared to SwiftUI.</li><li>State management is not as clear cut as SwiftUI.</li><li>I have to type a semi-colon at the end of every line.</li></ul><h3 style="text-align: left;">Conclusion</h3><div>I love SwiftUI and have already published apps built with SwiftUI. </div><div><br /></div><div>But, for my new app, Flutter has the edge. It has lots of widgets, a large amount of good quality documentation, cross-platform support, and an animation system that does what I need.</div><div><br /></div><div>More importantly I actually found it a tad faster to build my vertical slice in Flutter. This was probably due to the abundance of quality documentation helping me solve roadblocks quickly, and having a faster feedback loop with hot-reloading.</div><div><br /></div><div>I plan to get an MVP of the new Brainiversity up as soon as I can, and I will build out the rest of the activities with feedback from users. I'll post again when it's ready to play.</div><div><br /></div><div>Let me know if I got anything wrong, or if there is a better way of doing things.</div><div><br /></div><div>Cheers,</div><div>John</div><div><br /></div><div><br /></div><p></p>Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com1tag:blogger.com,1999:blog-22028176.post-43706091364962685982019-08-26T06:17:00.000-07:002019-08-26T06:17:52.821-07:00Third In The Space Watch TrilogyWatchOS 6 is launching soon, and I've been busy preparing some new games exclusively for the Apple Watch.<br />
<br />
I've already released <a href="https://apps.apple.com/au/app/kepler-attack-for-watch/id1441234645" target="_blank">Kepler Attack</a>, a fast paced space shooter inspired by the arcade classic Gyruss, and I've recently completed Star Warp, which is now <a href="https://apps.apple.com/au/app/star-warp-for-watch/id1475755775" target="_blank">available for pre-order on the App Store</a>. Star Warp will launch on the 4th of September and is inspired by Galaxians.<br />
<br />
And right now I'm busy working on another space game - the third in my Space Watch Trilogy - and that game is called Asteroid Commando. No prizes for guessing the inspiration for this one...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dzDX9NzBxAG0Ln_Huamhi--VvOuv_oOFPI1Uq9mBUYQ_JZtMeZ9IDgTayCDe_UHB73Bs85oaKhVFRs' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br />
Like the other two games, Asteroid Commando is built using Swift 5 and SpriteKit and is designed to take advantage of all the latest features of the Apple Watch. It uses the Digital Crown with haptic feedback, runs at a silky smooth 60fps, works with Game Center for the Watch and runs independently of the iPhone.<br />
<br />
I've built up a framework while developing Snappy Word, Kepler Attack and Star Warp - sharing a menu system, leaderboard and save/load system between games lets me kick off new projects and get into the core game a lot faster.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglpt_N8KLFLmh17G9-NdW-5zHDKc9K3hXv749fOeJGCGb0OT0PZPFW7K3ELGjYkPS7Cn26Y03baV_gtaABz7QwSfgzFFWBgm6V1aeZMhKCmFcDj-T01BG_9ToxurpbOlQRi3m3/s1600/Ships_ASTEROID.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglpt_N8KLFLmh17G9-NdW-5zHDKc9K3hXv749fOeJGCGb0OT0PZPFW7K3ELGjYkPS7Cn26Y03baV_gtaABz7QwSfgzFFWBgm6V1aeZMhKCmFcDj-T01BG_9ToxurpbOlQRi3m3/s320/Ships_ASTEROID.png" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Initial sprite set for the game</td></tr>
</tbody></table>
I'm finding the constraints of the Apple Watch a joy to work with. The smaller screen size and limited input, coupled with the shorter play sessions means that a Watch game is much smaller in scope than the average mobile game. And this means shorter development times without compromising the quality of the experience. In some ways, the Watch is a great delivery platform for what is essentially paid hyper casual games.<br />
<br />
I plan on doing more regular updates as I close out Asteroid Commando, so please check back to see the new features I'll be adding over the coming weeks.<br />
<br />
Cheers,<br />
Johnno<br />
<br />
<br />Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-32575295187811148432019-08-16T07:13:00.000-07:002019-08-16T07:14:44.670-07:00Space Watch Trilogy<div>
It's been almost 3 months since Kepler Attack launched on the App Store as a paid Apple Watch exclusive.</div>
<div>
<br /></div>
<div>
The game did well out of the gate, getting a bunch of downloads without any featuring and has continued to perform well. So far it has garnered over 61 rating with an average review score of 4.6.</div>
<div>
<br /></div>
<div>
I quickly followed up the launch with an update that included iOS support - letting folks play the game on their iPhone or iPad using the touch screen in lieu of the Apple Watch Crown.</div>
<div>
<br /></div>
<div>
<div>
In terms of marketing I managed to get only two online reviews despite sending the game out to as many Apple and Watch sites as I could. I'd like to give a big shout out to <a href="http://www.applewatchcast.com/" target="_blank">The Apple Watch Cast</a> and <a href="https://www.youtube.com/watch?v=GDr1Vl2mkmE&feature=youtu.be" target="_blank">HotshotTek</a> for their support! I will continue to try and get the other sites to notice my game, so if you're reading this you haven't heard the last of Kepler Attack!</div>
</div>
<div>
<br /></div>
<div>
As far as I can tell, most of my installs have been organic via people finding the game on the App Store through search and browsing. </div>
<div>
<br /></div>
<div>
However, just this week I was excited to see that Apple featured Kepler Attack in the What We're Playing section of the App Store!</div>
<div>
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqA244vfy3gAP6JS65sSS3d5m3SRzkVkspBlrDhsjKYycjaMjeM9H39quotmN3OCOvupPgS16-VLWiexidGag8fFkHIIfjEU12QNiWQDEcpYQLqwYtfOrU-TeqbfahI7MubHvw/s1600/IMG_6507.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><span style="font-family: inherit;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqA244vfy3gAP6JS65sSS3d5m3SRzkVkspBlrDhsjKYycjaMjeM9H39quotmN3OCOvupPgS16-VLWiexidGag8fFkHIIfjEU12QNiWQDEcpYQLqwYtfOrU-TeqbfahI7MubHvw/s320/IMG_6507.jpg" width="312" /></span></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.800000190734863px;"><span style="font-family: inherit; font-size: small;">Featured on the App Store!</span><br />
<br /></td></tr>
</tbody></table>
</div>
<div>
<div>
Plus, Kepler Attack is also featured on the Apple Watch App Store running on WatchOS 6 Beta!</div>
<div>
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpBzuzVfzjnWl2L3_OhyGZy451nopEf_29sMnYD8cfhMFVh8GlYRVzSPe6NUsh__C8z9Tb3hUSL1UX_Am0rZOhDCsR9C_K51FdKYZFawHrbH5cEyz870oCM9nDlaJMwkuxtU-7/s1600/WatchAppStore_Beta.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><span style="font-family: inherit;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpBzuzVfzjnWl2L3_OhyGZy451nopEf_29sMnYD8cfhMFVh8GlYRVzSPe6NUsh__C8z9Tb3hUSL1UX_Am0rZOhDCsR9C_K51FdKYZFawHrbH5cEyz870oCM9nDlaJMwkuxtU-7/s320/WatchAppStore_Beta.PNG" width="263" /></span></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.800000190734863px;"><span style="font-family: inherit; font-size: small;">The new Apple Watch App Store</span><br />
<div>
<span style="font-family: inherit; font-size: small;"><br /></span></div>
</td></tr>
</tbody></table>
</div>
<div>
Before any of this happened, I had decided to dig in and go hard on Apple Watch games. And now with the featuring it feels like I may have made the right call - of course time will tell.</div>
<div>
<br /></div>
<div>
It's no secret that I am a huge Apple Watch fan, having worn an Apple Watch since the day they were first released. I even had a game (<a href="https://apps.apple.com/au/app/snappy-word-word-puzzle-game/id1143681780" target="_blank">Snappy Word</a>) on the Watch on launch day. </div>
<div>
<br /></div>
<div>
I love my Watch and I love games and I think there are others like me out there who enjoy playing on their Watch. The only problem is it's been damn hard to find apps and games made for the Watch. I'm hoping that the upcoming Watch App Store changes that.</div>
<div>
<br /></div>
<div>
So, along with Kepler Attack, I've been working hard to make a number of games for people to play now that they will be able to browse for content on their Watch.</div>
<div>
<br /></div>
<div>
I figured that I would share my journey making these games in a series of dev blogs.</div>
<div>
<br /></div>
<div>
To kick this off, here's a look at my next Watch game called Star Warp. It's another space shooter game, this time inspired by Galaxian.</div>
<div>
<br /></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrytRnPDaOti7RaN0tZtqNTVF0cUVsijSWJsOtj0m9OT92bAjEn4okdFpCZw5qrjOpk9FYfmT8R7hgKOmAnaiIDB5ZnxnR0YyF5-8IwimOg6RCD26x9S5hrEznJGE27LVJpu1c/s1600/WatchPromoShot3.png" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrytRnPDaOti7RaN0tZtqNTVF0cUVsijSWJsOtj0m9OT92bAjEn4okdFpCZw5qrjOpk9FYfmT8R7hgKOmAnaiIDB5ZnxnR0YyF5-8IwimOg6RCD26x9S5hrEznJGE27LVJpu1c/s320/WatchPromoShot3.png" width="187" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfjjNQ3dYCoVv7EKVYgSvfLONXj_vsbWBgNnO5Mjp1jpZCA-3zN7Pzq_vLlZa3JKx61EbFf8cXic2ZuNaptyUF0KO3IRh6sstxAntLgYqz9fhQFZd8Wnz-hwVTZWoltrMQwk-P/s1600/WatchPromoShot2.png" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfjjNQ3dYCoVv7EKVYgSvfLONXj_vsbWBgNnO5Mjp1jpZCA-3zN7Pzq_vLlZa3JKx61EbFf8cXic2ZuNaptyUF0KO3IRh6sstxAntLgYqz9fhQFZd8Wnz-hwVTZWoltrMQwk-P/s320/WatchPromoShot2.png" width="187" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHUCYYXN3zdXOs3SNVAwVvBcGSqJSxslGytOfXXKJ6N03aaPn_aRUlpoUaN5mD4wEZlCx6fM6sZiBaACwL2b-S1pa61ZwPpJCqqVwKr5a6G3Inc-AIM4BiTwZOssansWDw9gQY/s1600/WatchPromoShot1.png" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHUCYYXN3zdXOs3SNVAwVvBcGSqJSxslGytOfXXKJ6N03aaPn_aRUlpoUaN5mD4wEZlCx6fM6sZiBaACwL2b-S1pa61ZwPpJCqqVwKr5a6G3Inc-AIM4BiTwZOssansWDw9gQY/s320/WatchPromoShot1.png" width="187" /></a></div>
<div>
<br /></div>
<div>
Star Warp builds on a lot of the work I did for Kepler Attack - using the same framework for high scores leaderboards, front end menus, game over logic and ship movement.</div>
<div>
<br /></div>
<div>
I'm hoping to use the work I've done to start to evolve each game. I don't necessarily want to make them more complicated as I think there's a sweet spot for content and play session time for these games - but I definitely want to start pushing what the Watch can do in terms of mechanics and play style.</div>
<div>
<br /></div>
<div>
I'm aiming to launch Star Warp in early September - so In the meantime, why don't you <a href="https://apps.apple.com/us/app/kepler-attack-watch-iphone/id1441234645" target="_blank">check out Kepler Attack on the App Store here</a>!</div>
<div>
<br /></div>
<div>
Oh, and the title of this post is Space Watch Trilogy... so yeah, there is a third space game in development.. but that will have to wait until the next post!</div>
<div>
<br /></div>
<div>
Cheers,</div>
<div>
Johnno</div>
<span style="font-family: inherit;"><br /></span>Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-41312312974311946432019-05-22T07:00:00.000-07:002019-05-23T04:28:04.826-07:00Making Kepler Attack for Apple Watch<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ3Mb0LTl53V1_3QKoahhwNsK7z_4T6-iPb8gpfY70Ci1Dslok6VngI269be92GxARo3GA60J06SFTSiIB82YG5NR9oAZ_DswAruwcmmkk4FwPt88WGpPq-hIb3DBOUCUlAZhp/s1600/KeplerShipsPromo.png" imageanchor="1"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ3Mb0LTl53V1_3QKoahhwNsK7z_4T6-iPb8gpfY70Ci1Dslok6VngI269be92GxARo3GA60J06SFTSiIB82YG5NR9oAZ_DswAruwcmmkk4FwPt88WGpPq-hIb3DBOUCUlAZhp/s400/KeplerShipsPromo.png" width="400" /></a><br />
<br />
Kepler Attack is a retro space shooter that I made exclusively for the Apple Watch.<br />
<br />
If you have an Apple Watch then you can <a href="https://itunes.apple.com/app/kepler-attack/id1441234645?mt=8" target="_blank">get it here from the App Store</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/wJ7q4MGaSX8/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/wJ7q4MGaSX8?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
Kepler Attack Game Footage</div>
<br />
<h3>
Why Apple Watch?</h3>
As my friends know, I am a huge Apple Watch fan. I've had a Watch since day one and I've made a number of games for the platform. All of these games are simple puzzle games - not the sort of games you would use to show off your Apple Watch to your friends.<br />
<br />
So I figured it was about time the Watch had such a game!<br />
<br />
And this, dear reader, is why I created Kepler Attack.<br />
<br />
Have I succeeded in creating a killer Watch game? Time will tell, but I think I've done a pretty good job in making something I can be proud of.<br />
<br />
<h3>
Origins</h3>
I started Kepler Attack on the 15th October 2018 and used art assets from my Ultra Dash game. The Watch app was part of the Ultra Dash project and my initial plan was to mimic that games mechanic, which involved racing through space avoiding obstacles.<br />
<br />
You can read about the <a href="https://passfieldgames.blogspot.com/2017/03/the-making-of-ultra-dash.html" target="_blank">making of Ultra Dash here</a>.<br />
<div>
<br /></div>
Months earlier, a friend and I had discussed <a href="https://en.wikipedia.org/wiki/Gyruss" target="_blank">Gyruss</a> and how it would be perfect for the Watch. As I began to build out this new game I subconsciously leaned into Gyruss' mechanic. When I showed him Kepler Attack months later he exclaimed "Hey, I told you that would be a great game for the Watch!". So thanks <a href="https://twitter.com/funwithstuff" target="_blank">Iain</a>!<br />
<br />
<h3>
Controls</h3>
I explored a number of ways to control the player ship. I tried tapping the screen to move the ship left and right but this didn't work. It was slow and your finger obscured the action. Buttons weren't viable as the screen was too small to accommodate them.<br />
<br />
As soon as I added the Digital Crown controls it was obvious that this was the right choice. Using the Crown as the controller led to the next logical change - making the the ship move in a circular motion, not just left and right.<br />
<br />
On the 4th of November I split out the Watch game to be its own project, removing it from Ultra Dash.<br />
<br />
<h3>
Art</h3>
For Ultra Dash I wanted to make the art myself. In my making of blog post for that game I wrote:<br />
<blockquote class="tr_bq">
<i>One of my hopes for Ultra Dash is that it has the chance to find an audience. I am a bit worried that the art may impact on that chance. Anecdotally any screen shot of Ultra Dash I tweeted would get around 0 favourites while a beautiful 3D Billy Carts screen shots could get up to 20 favourites. People like beautiful games.</i><br />
<i>This isn't a surprising revelation, but it's easy for people to forget this simple fact. </i></blockquote>
Well, I was right. People do like beautiful games. And my art was programmer art. But hey, I got to do the art for the game - even if it didn't set the world on fire.<br />
<br />
So for Kepler I listened to the feedback and contacted my good friend and amazing artist <a href="https://twitter.com/petemullinsart" target="_blank">Pete Mullins</a> to replace my placeholder art with something good.<br />
<h4>
Space Ship Design</h4>
<div>
<div>
I created the placeholder art in Affinity Designer and played with their sizes to get the hero and enemy ships to look good on the small Watch screen before getting Pete to redo it. This way I could make sure I had the required number of ships and their sizes locked down.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjipqiFKgq0Jd8Y3Z5OEhBuYjb0zMGvLKnKXZzL3dTt4isDQL6XjYZ1_F_vhjRH5Gxr93dRTsZ3KOqlxJAFYM9iLksJ6U8ZPGgHofZKnT1hzz8Gk9f0IRW7HQOzgZO0071HiJbn/s1600/Blog_KeplerOriginalShips.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjipqiFKgq0Jd8Y3Z5OEhBuYjb0zMGvLKnKXZzL3dTt4isDQL6XjYZ1_F_vhjRH5Gxr93dRTsZ3KOqlxJAFYM9iLksJ6U8ZPGgHofZKnT1hzz8Gk9f0IRW7HQOzgZO0071HiJbn/s400/Blog_KeplerOriginalShips.png" width="300" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My placeholder ship art</td></tr>
</tbody></table>
<div>
<br /></div>
</div>
<div>
<br /></div>
<div>
Pete and I discussed how the final ships should look. I gathered a bunch of reference material for old vector style graphics from the likes of Asteroid and Tempest, as well as the blocky sprite stylings of arcade shooters.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGaEKT5_i0i14nHOKRl-5OUmYP0NeBaWRG9jvWgu5G5rfBu_rEyirNRwn-p1ZkKt0uJqMGRKm0eqvcdsd6dUw_bBUN9BxH2sub6VZMeL_Y33nNVKJl3_-1LQyn59ErPklfxu61/s1600/Blog_KeplerFinalShips.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGaEKT5_i0i14nHOKRl-5OUmYP0NeBaWRG9jvWgu5G5rfBu_rEyirNRwn-p1ZkKt0uJqMGRKm0eqvcdsd6dUw_bBUN9BxH2sub6VZMeL_Y33nNVKJl3_-1LQyn59ErPklfxu61/s400/Blog_KeplerFinalShips.png" width="300" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Final art inspired by classic eighties arcade space shooters</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
The old school pixel look won out and Pete began creating some cool looking ship designs.<br />
<br /></div>
<div>
As well as the ships, we updated the asteroids, power ups and projectiles. We also added a new blocky pixel inspired font. The game was playing really well with super smooth controls and it looked the part.</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHSiniQKdea4_aoGCw1EOvPYuv2bA6fx-Sw0yv33vnqSCu9U6ctu6SumJQv2Y5-RUGNsORBUCCVH6Hb513ur_QvS4MBirSM6lR9DL9ohyphenhyphenqxuKOIA_mR8UEsPEZMG6ljGc2gjeA/s1600/KeplerWatch_20190316.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHSiniQKdea4_aoGCw1EOvPYuv2bA6fx-Sw0yv33vnqSCu9U6ctu6SumJQv2Y5-RUGNsORBUCCVH6Hb513ur_QvS4MBirSM6lR9DL9ohyphenhyphenqxuKOIA_mR8UEsPEZMG6ljGc2gjeA/s320/KeplerWatch_20190316.PNG" width="263" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.800000190734863px;">Programmer Art</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmx4mC5A51CI1No02a4MnTqcbST-fBRZcYxfrhAUzwX8JwkIlG3F6mq7Lp_SsiOOOeOBnV9r9jBktmYTwt62fS5JeWsadN7Pn7ZG2A-0EWayGnvd3DCoY5PES2_ITQlN-WOH2w/s1600/IMG_5685.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmx4mC5A51CI1No02a4MnTqcbST-fBRZcYxfrhAUzwX8JwkIlG3F6mq7Lp_SsiOOOeOBnV9r9jBktmYTwt62fS5JeWsadN7Pn7ZG2A-0EWayGnvd3DCoY5PES2_ITQlN-WOH2w/s320/IMG_5685.PNG" width="263" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.800000190734863px;">Final Art by Pete Mullins</td></tr>
</tbody></table>
</div>
<h4>
Logo Design</h4>
<div>
I wanted the logo to capture the spirit of the classic eighties games like Galaxian and Galaga.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin-lXP9SUre4MGBW5HfIutwkd_BHVfQ_ZY_0ZnNEDD47c3CrWMYPyWmYlGtYZ2_5FEE6Wbqtzh_BuM8fzGbbEyDmVtPeNKMN7DsRsgdYKbyUzr8gHGb1GAfBts1yRPKguUDS0X/s1600/Logos.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin-lXP9SUre4MGBW5HfIutwkd_BHVfQ_ZY_0ZnNEDD47c3CrWMYPyWmYlGtYZ2_5FEE6Wbqtzh_BuM8fzGbbEyDmVtPeNKMN7DsRsgdYKbyUzr8gHGb1GAfBts1yRPKguUDS0X/s400/Logos.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Classic arcade game logos</td></tr>
</tbody></table>
<br />
<br />
I mocked up the first attempt at a logo which served well as a placeholder piece.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX98u5wnHf-Rt1q4n07e2QweeOlkWYHf5IvlqgIQhjblMpnp0moPVG210wKn-CDt38SsUW3-x5bjbw4WP8YFvb8hXc_4jgku1mBYzyuiVXsqPsBZEdKQgPL36knbeDLQEMKrjw/s1600/Kepler_OriginalLogos.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="263" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX98u5wnHf-Rt1q4n07e2QweeOlkWYHf5IvlqgIQhjblMpnp0moPVG210wKn-CDt38SsUW3-x5bjbw4WP8YFvb8hXc_4jgku1mBYzyuiVXsqPsBZEdKQgPL36knbeDLQEMKrjw/s400/Kepler_OriginalLogos.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My initial attempts at a logo</td></tr>
</tbody></table>
<br />
<br />
The final logo designed by Pete managed to capture the eighties arcade vibe while still feeling fresh. Importantly it also looked great on the small Watch face.<br />
<br /></div>
<h3>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_aHPwAsmsKpswKD9PkHlV7NtZjssXq2StiSHVCAgnqQeHS3EdEk0Q-F9Qq1ZzMadGouvxD9QMHvQttnhT3rzrQjUSGinXheqqo3YCLtbHLdtrtBnaCxMSOeJZFPFOajv_MqlL/s1600/KeplerAttack_logo.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_aHPwAsmsKpswKD9PkHlV7NtZjssXq2StiSHVCAgnqQeHS3EdEk0Q-F9Qq1ZzMadGouvxD9QMHvQttnhT3rzrQjUSGinXheqqo3YCLtbHLdtrtBnaCxMSOeJZFPFOajv_MqlL/s400/KeplerAttack_logo.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.800000190734863px;">The final logo by Pete Mullins</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
<br /></div>
<div>
</div>
</h3>
<h3>
Coding</h3>
<div>
I built the game with Xcode 10 using Swift 5 and the SpriteKit framework.</div>
<div>
<br /></div>
<div>
I used a storyboard to lay out the main menu in Xcode. Creating UI for the Watch is surprisingly easy using a combination of vertical and horizontal groups that can be stacked. I only used one screen with the menu and game screen sharing this space. The game screen (a SpriteKit Scene) is initially hidden from view.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyxcTG7aWuxVe_yzqWZdme6ZP9rR1UvSjwFQvLjBkhB1KisUBkj9tyWddV85e-A9Yn_24Bg14FftzFyW9q_RBb1AOTzP6nmg9FeEB_HuUpuQUk9jFjbNmjzRf8s4kolxxkm0sq/s1600/KeplerXcode1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyxcTG7aWuxVe_yzqWZdme6ZP9rR1UvSjwFQvLjBkhB1KisUBkj9tyWddV85e-A9Yn_24Bg14FftzFyW9q_RBb1AOTzP6nmg9FeEB_HuUpuQUk9jFjbNmjzRf8s4kolxxkm0sq/s400/KeplerXcode1.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Xcode menu storyboard</td></tr>
</tbody></table>
<div>
When the player taps to start playing I hide the menu group and show the SpriteKit Scene. This made it easier to transition to the game scene from the menu and not inherit all of the Watch UI that would have appeared, like the back button.</div>
<div>
<br /></div>
<div>
I laid out the game scene in the Sprite Kit Scene editor.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSKaBr8m6ym3WSpwMdap1ViZgJFpBcCMw_ojF3eq1dbwOjrI-dWMPX_iSF4zrFLyvMz3I3acImzdkwRv33hK0dOOsP2TLHni0MxaH8YPFX15SpdNtARhnzp13RqokVMDyud6fa/s1600/KeplerXcode2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSKaBr8m6ym3WSpwMdap1ViZgJFpBcCMw_ojF3eq1dbwOjrI-dWMPX_iSF4zrFLyvMz3I3acImzdkwRv33hK0dOOsP2TLHni0MxaH8YPFX15SpdNtARhnzp13RqokVMDyud6fa/s400/KeplerXcode2.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The scene editor for the game screen</td></tr>
</tbody></table>
<div>
I placed the hero ship and score and UI labels here, and programatically generated the enemies and asteroids.</div>
<div>
<br /></div>
<h4>
Enemies</h4>
<div>
I used a lot of built in features of Xcode and Swift to make the game. Xcode has a simple particle emitter editor so I created the star field with this. The stars are an emitter at the centre of screen that spawns various sized blue squares that shoot off in different directions at different speeds.</div>
<div>
<br /></div>
<div>
For the enemy attack patterns I used Swift's bezier path function. With this I simply had to pick a number of random points on screen and plot a bezier curve through them. Super easy and it looks great!</div>
<div>
<br /></div>
<div>
<div style="background-color: white; color: #007400; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
<span style="color: black;"> </span>// create a bezier path that defines our curve</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
<span style="color: #aa0d91;">let</span> path = <span style="color: #5c2699;">UIBezierPath</span>()</div>
</div>
<div>
<br /></div>
<div>
<div style="background-color: white; color: #007400; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
<span style="color: black;"> </span>// Start position</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
path.<span style="color: #2e0d6e;">move</span>(to: startPosList.<span style="color: #2e0d6e;">randomElement</span>()!)</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
path.<span style="color: #2e0d6e;">addQuadCurve</span>(to: arcPosList.<span style="color: #2e0d6e;">randomElement</span>()!,</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
controlPoint: arcPosList.<span style="color: #2e0d6e;">randomElement</span>()!)</div>
</div>
<div>
<br /></div>
<div>
Then I attached the paths to the enemy ships and started them on their merry way.</div>
<div>
<br /></div>
<div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
enemy.<span style="color: #3f6e74;">sprite</span>.<span style="color: #2e0d6e;">run</span>( <span style="color: #5c2699;">SKAction</span>.<span style="color: #2e0d6e;">repeatForever</span>(</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
<span style="color: #5c2699;">SKAction</span>.<span style="color: #2e0d6e;">sequence</span>([</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
<span style="color: #5c2699;">SKAction</span>.<span style="color: #2e0d6e;">wait</span>(forDuration: duration),</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
<span style="color: #5c2699;">SKAction</span>.<span style="color: #2e0d6e;">follow</span>(path.<span style="color: #5c2699;">cgPath</span>,</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
asOffset: <span style="color: #aa0d91;">false</span>,</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
orientToPath: <span style="color: #aa0d91;">true</span>,</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
speed: <span style="color: #1c00cf;">150.0</span>)</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
])),</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
withKey: <span style="color: #c41a16;">"path"</span></div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
</div>
<div style="background-color: white; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;">
)</div>
</div>
<div>
<br />
<a href="https://hackernoon.com/a-guide-to-spritekit-actions-c20b079f5398" target="_blank">SpriteKit actions</a> are a really powerful part of SpriteKit. As you can see above, you can run a set of actions on your sprite. There are a whole bunch of useful action methods that when chained together create some pretty cool movement sequences.<br />
<br />
Actions let you follow paths, fade, scale your sprite on the x and y axis, wait for set time durations, move the sprite set amounts or to specific locations - you can add these inside fixed, single and repeating loops - and you can also call your own functions from within.<br />
<br />
The majority of the hero, enemy and obstacle sprite logic was built with SKActions.</div>
<h4>
User Testing</h4>
<div>
Once I had a playable build I used TestFlight and the public beta link system to open up the game to external testers. I did a call out on my social media and posted on the <a href="https://toucharcade.com/" target="_blank">TouchArcade</a> forums. From these two sources I got a reasonably sized testing group to get some good feedback.</div>
<div>
<br /></div>
<div>
I would make changes and push out new builds, polishing the game until I was happy.</div>
<div>
<br /></div>
<div>
At the end of March 2019, I submitted Kepler Attack to the App Store as a pre-order and set the release date for 6 weeks in the future. Now it was time to get the word out...<br />
<br /></div>
<h3>
Pricing</h3>
<div>
I set the price to 99c (Tier 1). I toyed with a higher price point but wanted to capture the arcade feel that inspired the game, and 99c felt like the right amount to charge for it.</div>
<div>
<br /></div>
<div>
Going free to play was out of the question as there is no way to serve ads or offer IAP on the Watch. Will users pay 99c for a game any more? I'll soon find out...</div>
<div>
<br /></div>
<h3>
Marketing</h3>
Analysts calculated that there were around 45 million Apple Watches shipped in 2018. The Watch isn't the most obvious gaming platform, but I believe that a small percentage of owners would surely be interested in playing a game on their wrist. And even a small percentage of 45 million is quite a large number of potential players for an indie game developer!<br />
<br />
My biggest challenge will be reaching those users, but I have a number of ideas on how to do this and will try a mixture of paid ads and boosted promotions on sites like Facebook and Instagram.<br />
<br />
<h3>
The Future</h3>
<div>
Right now I'm focused on getting the word out to those people who own Apple Watches. As mentioned above, they are a tough market to connect with. I'm hoping that if they can be made aware of my little game then they may want to buy it. It is the perfect game to idle away the time between meetings and waiting in line.</div>
<div>
<br /></div>
<div>
I have an update ready to release within a few weeks of initial launch. This new update adds a Top 100 leaderboard which is accessible right on the Watch. This is a really fun feature and adds a lot to the game.<br />
<br />
My fingers are crossed that it does find an audience, but whatever the outcome, I can honestly say that I've made one of the best Apple Watch games you can play.<br />
<br />
And I had fun doing it!<br />
<br />
- Johnno<br />
<br /></div>
<h3>
Development Environment</h3>
IDE: <a href="https://developer.apple.com/xcode/" target="_blank">Xcode 10</a><br />
Language: Swift 5 with SpriteKit<br />
<br />
<h3>
Tools</h3>
Programmer Art - placeholder art was made with <a href="https://affinity.serif.com/en-gb/" target="_blank">Affinity Designer</a><br />
Final Art - produced by Pete Mullins using Photo Shop<br />
Icon Creator - <a href="https://www.bridgetech.io/Asset%20Catalog%20Creator.html" target="_blank">Asset Catalog Creator</a><br />
Screen Shots - <a href="https://www.bridgetech.io/ScreenshotCreator.html" target="_blank">Screenshot Creator Pro</a><br />
<br />
Version Control - <a href="https://www.sourcetreeapp.com/" target="_blank">Source Tree</a> and <a href="https://bitbucket.org/" target="_blank">Bitbucket</a><br />
Tasks - <a href="https://trello.com/" target="_blank">Trello</a> to keep a list of To Do, Doing and Done tasks as well as backlog for future updates<br />
<br />
Design and Code: John Passfield<br />
Art: Pete Mullins<br />
<br />
<br />
<br />Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com1tag:blogger.com,1999:blog-22028176.post-40180708242293987372018-04-27T18:59:00.000-07:002018-04-27T18:59:23.477-07:00Working on Multiple Projects
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000; min-height: 12.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000; min-height: 13.0px}
li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000}
span.s1 {font-kerning: none}
span.s2 {font: 13.2px 'Helvetica Neue'}
span.s3 {text-decoration: underline ; font-kerning: none}
ul.ul1 {list-style-type: disc}
</style>
<br />
<div class="p1">
<span class="s1"><span style="font-size: small;">One of the things I struggle with is working on multiple projects at the same time.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">Fixating on one project and wanting to see it through until the end before moving on to the next one is something I tend to do. This may be a great approach for some, but for me, I need to share my time between multiple things.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">As a long time developer I’ve managed to build up a back catalog of games and apps - and a number of these require maintenance to stay up to date.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">As well as updating older games I’m always working on new stuff - be it prototypes or new games that I plan to ship.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">And on top of that, I’ve been trying to blog more often than I have been. In fact, just writing this blog post was a challenge as I felt that I needed to focus my time on the programming tasks I have at hand.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">So I did some research into techniques to help manage working on multiple projects at the same time and I thought I’d share these with you. As for the effectiveness of these techniques, well, we’ll have to wait and see. This might be the subject of a future blog post!</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">But first, here’s my current strategy for managing multiple projects, which admittedly, while not perfect is better than nothing.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<h2>
<span class="s1"><b><span style="font-size: small;">What I Currently Do</span></b></span></h2>
<h3>
<span class="s1"><b><span style="font-size: small;">Trello</span></b></span></h3>
<div class="p1">
<span class="s1"><span style="font-size: small;">I use <a href="https://trello.com/" target="_blank">Trello</a> to keep track of all my projects. I have a board for each individual project with the following lists: Backlog, To Do, Doing and Done</span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;"><br /></span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">When I have a new idea for a feature I place it in the Backlog list. I regularly evaluate this list and move what I should be working on next into the To do list. When I need a task to do I will move it from the To do list into the Doing list. When I complete a task I move it into the Done list. </span></span></div>
<div class="p1">
<br /></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">I find this really helpful when I have a half hour to spare and want to get something done. I simply pull up my list and pick a task - I don’t have to think as I’ve already planned out the work.</span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;"><br /></span></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie4CB-yKSdeNU4AYJm4JsfArsBhG6aeH5346gAN8Bz7vyNu14F79Mlgum_9UfuanmuPEjYJbiGmVraOL8KKCWmIkmHDCGtb8FqtkZZB7iQPKUW2yQ4YjBxM4RoU5D6buBwsvas/s1600/trello.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie4CB-yKSdeNU4AYJm4JsfArsBhG6aeH5346gAN8Bz7vyNu14F79Mlgum_9UfuanmuPEjYJbiGmVraOL8KKCWmIkmHDCGtb8FqtkZZB7iQPKUW2yQ4YjBxM4RoU5D6buBwsvas/s400/trello.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Trello for Snappy Word</td></tr>
</tbody></table>
<div class="p1">
<br /></div>
<div class="p1">
<span style="-webkit-text-stroke-width: initial; font-size: small;">I use Trello on my computer and my iPhone.</span></div>
<div class="p1">
<span style="-webkit-text-stroke-width: initial; font-size: small;"><br /></span></div>
<div class="p1">
<span style="-webkit-text-stroke-width: initial; font-size: small;">Trello on mobile is invaluable for adding tasks to my backlog while </span><span style="-webkit-text-stroke-width: initial; font-size: small;">I’m out and about.</span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<h3>
<span class="s1"><b><span style="font-size: small;">Notes (on iOS)</span></b></span></h3>
<div class="p1">
<span class="s1"><span style="font-size: small;">I use Notes on iOS to quickly jot down ideas. These can be a single line to a few paragraphs. I sometimes do a quick sketch on a post it note and insert that into my note or use the drawing feature to add a quick sketch.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">I have a Game Ideas and App Ideas folder that I throw stuff into. </span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;"><br /></span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">These aren’t related to any specific project I’m working on, but are reserved future distractions :-) If I have an idea for an existing project, I do this in Trello. Keeping the new ideas in notes helps separate (mentally and physically) the possibilities from the practicalities.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">Every so often I review the ideas and sort them based on what I want to do next after my current project have been completed. </span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;"><br /></span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">It’s always a good sign if that "amazing game" you wanted to make is still an amazing idea six months later. More often then not I think to myself “That’s not such a great idea…” But still, I believe it’s really important to record these thoughts as there may be a germ of a great idea in there somewhere.</span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;"><br /></span></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-zBoKfLky2qZgD5pJWWcbmNWn0yoBEJqBrHjHRZCbfjjzotyGxDkRvFwUAv_14UpNUnB3jnfblATMdbevkh5EmUKselBwi4x8HGN7aiX7PVBHfQ4Cj4VL-qgotVjW_gfOJmD0/s1600/GameNotes.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-zBoKfLky2qZgD5pJWWcbmNWn0yoBEJqBrHjHRZCbfjjzotyGxDkRvFwUAv_14UpNUnB3jnfblATMdbevkh5EmUKselBwi4x8HGN7aiX7PVBHfQ4Cj4VL-qgotVjW_gfOJmD0/s400/GameNotes.jpeg" width="225" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Example game idea note</td></tr>
</tbody></table>
<h3>
<span class="s1"><b><span style="font-size: small;"><br />Google Docs</span></b></span></h3>
<div class="p1">
<span class="s1"><span style="font-size: small;">As well as Trello I use Google Docs to track my day to day work. I have a Work Log document that I write down what task I’m working on, any notes about that task and other relevant information for the day. I prefix each task with the project name. These notes are useful as they record any extra information that the initial Trello To do item may not have had.</span></span></div>
<div class="p1">
<br /></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">Here’s an example entry from when I updated Ultra Dash:</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<blockquote class="tr_bq">
<span class="s1"><b><span style="font-size: small;">Sunday, 31st December 2017</span></b></span> </blockquote>
<blockquote class="tr_bq">
<span class="s1"><span style="font-size: small;">DASH: Update the background sizes for iPhoneX</span></span></blockquote>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">I collate these notes and use them when I check in my project to source control (I use <a href="https://www.sourcetreeapp.com/" target="_blank">Sourcetree</a> and <a href="https://bitbucket.org/" target="_blank">BitBucket</a>).</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">I’ll often go back over my notes to work out how much time I’ve spent on a particular project. The Trello tasks are what I planned to do and my Work Log is what I actually did with more details than the initial Trello task description. </span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;"><br /></span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">The Work Log also includes other</span></span><span style="-webkit-text-stroke-width: initial; font-size: small;"> notes such as when I submitted a build to the App Store or when I updated the latest version of Unity, etc. It’s essentially my timeline of all my projects.</span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">It’s also great for those times when I feel like I’ve accomplished little, but on reading over my notes I can see reasons why (being sick, on holidays) or actually see that I did do a lot but it’s all behind the scenes and not reflective in the latest build (refactoring code, updating ad providers).</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<h2>
<span class="s1"><b><span style="font-size: small;">My Challenge</span></b></span></h2>
<div class="p1">
<span class="s1"><span style="font-size: small;">So I have a system that works for me in terms of organising and tracking my projects b</span></span><span style="-webkit-text-stroke-width: initial; font-size: small;">ut my biggest issue is task switching. How can I effectively parcel out my time between projects and actually switch between them?</span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<h3>
<span class="s1"><b><span style="font-size: small;">A solution</span></b></span></h3>
<div class="p1">
<span class="s1"><span style="font-size: small;">It seems obvious now as I write this, but the big takeaway from my research is that I need to create a meta to-do list with tasks from each project interweaved so that when I complete a task from Project A I can move on to the next task which could be from Project C.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">One caveat is that task switching can take a toll when switching context - which often happens when switching between two very different projects. To minimise this it's suggested to try grouping similar tasks together.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">From what I’ve read, it’s also beneficial to try and limit the tasks times to around 20-30 minutes each, which thankfully is something I already do. </span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;"><br /></span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">Obviously there are systems in games that can take weeks to complete, so the trick here is to be able to break these systems down into manageable small tasks. This fits well with what I do with my Trello board and the Backlog list.</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<h3>
<span style="font-size: small;">Trying it out</span></h3>
<div class="p1">
<span class="s1"><span style="font-size: small;">I’m going to give this a go and see if it helps fix my problem of staying on one project for too long at the expense of others. I'll add a future task to write an blog post on the results :-)</span></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">So, what techniques do you use? </span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;"><br /></span></span></div>
<div class="p1">
<span class="s1"><span style="font-size: small;">Let me know as I would love to try them out and see if I can improve my productivity!</span></span></div>
<div class="p2">
<span style="font-size: small;"><br /></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span>- Johnno</span></div>
<div class="p2">
<span style="font-size: small;"><br /></span></div>
<h4>
<span class="s1"><span style="font-size: small;">References</span></span></h4>
<br />
<div class="p1">
<span class="s3"><a href="https://www.fastcompany.com/40425697/forget-focus-heres-when-task-switching-makes-you-more-productive"><span style="font-size: small;">https://www.fastcompany.com/40425697/forget-focus-heres-when-task-switching-makes-you-more-productive</span></a></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s3"><a href="https://blog.trello.com/why-context-switching-ruins-productivity"><span style="font-size: small;">https://blog.trello.com/why-context-switching-ruins-productivity</span></a></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s3"><a href="https://danfries.net/multitasking/"><span style="font-size: small;">https://danfries.net/multitasking/</span></a></span></div>
<div class="p2">
<span style="font-size: small;"><span class="s1"></span><br /></span></div>
<div class="p1">
<span class="s3"><a href="https://www.entrepreneur.com/article/225865"><span style="font-size: small;">https://www.entrepreneur.com/article/225865</span></a></span></div>
<div class="p2">
<span class="s1"></span><br /></div>
Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com4tag:blogger.com,1999:blog-22028176.post-10994910800443271582018-03-26T03:37:00.000-07:002018-03-26T03:37:15.642-07:0014+ Years of BloggingI was listening to the latest episode of <a href="https://daringfireball.net/thetalkshow/" target="_blank">The Talk Show podcast</a> today and was fascinated to hear <a href="https://daringfireball.net/" target="_blank">John Gruber </a>and <a href="https://kottke.org/" target="_blank">Jason Kottke</a> talk about their history writing blogs which dated back into the late nineties.<br />
<br />
It got me thinking about my experiences and history of blogging.<br />
<br />
I went back to check out my first Blogger entry from 14 years ago and ironically it was me reminiscing about the good old days.<br />
<br />
It seems fitting that I post that original entry again as I was very enthusiastic about how easy it was in 2004 to make games compared to 1984 :-)<br />
<br />
So here is my first Blogger entry from Wednesday, 6th of October 2004.<br />
<br />
I wonder how many readers are thinking back to 2004 (or even 2014) and remembering the first game they made?<br />
<br />
-Johno<br />
<br />
<blockquote class="tr_bq">
<h3>
Twenty Years Ago - Oct 6th, 2004</h3>
<span lang="EN-US" style="font-family: Arial;">I got a call from the Game Developers Association of Australia (<a href="http://www.gdaa.asn.au/" style="color: #999999; text-decoration: none;">http://www.gdaa.asn.au/</a>) asking me about some of Krome’s major milestones. This was for a display on Australian games they are putting together and they wanted to know stuff like what year Krome was founded (1999 by myself, Steve Stamatiadis and Robert Walsh) and when TY the Tasmanian Tiger was released (2002).</span> </blockquote>
<blockquote class="tr_bq">
<span lang="EN-US" style="font-family: Arial;"></span><span lang="EN-US" style="font-family: Arial;">I asked them how far the Aussie games industry went back and was told the earliest entry they had was for Beam Software, which was founded in 1980.</span><span lang="EN-US" style="font-family: Arial;">Suddenly, it dawned on me that I’ve been in the Aussie industry since pretty much the beginning. My first published game was called Chilly Willy and was released in 1984 on the Microbee system</span><span lang="EN-US"> </span><span lang="EN-US" style="font-family: Arial;">(<a href="http://www.thepcmuseum.com/appliedtechnology/" style="color: #999999; text-decoration: none;">http://www.thepcmuseum.com/appliedtechno<wbr></wbr>logy/</a>) by a company called Honeysoft. Halloween Harry followed that up a year later. Then I took time out to study at University, where I wrote some more games. I didn’t release these commercially, but made a text adventure freely available on the university computer system. That was followed by a short stint as a programmer at a telecommunications company after graduation, and then I was straight back into it in 1991.</span> </blockquote>
<blockquote class="tr_bq">
<span lang="EN-US" style="font-family: Arial;"></span><span lang="EN-US" style="font-family: Arial;">Back then, the four years between when Beam began and when I was first published seemed like a lifetime, as most things do when you’re a kid. But looking back, I realize that I was there during the heady days of the Aussie industry. It’s weird, even though I’ve been making games for twenty years now it’s still as fresh and exciting as it was back then.</span> </blockquote>
<blockquote class="tr_bq">
<span lang="EN-US" style="font-family: Arial;"></span><span lang="EN-US" style="font-family: Arial;">But the great thing about making games today is that it’s a lot easier than it’s ever been! All you need is a PC (which most kids have access to) some development tools (like Blitz Basic and Pro Motion) and the burning desire to make a game. And the costs are so cheap that there’s no excuse. Blitz Basic costs USD $100, the same price as two Playstation2 games - get it online from <a href="http://www.blitzbasic.com/" style="color: #999999; text-decoration: none;">http://www.blitzbasic.com/</a>.</span> </blockquote>
<blockquote class="tr_bq">
<span lang="EN-US" style="font-family: Arial;"></span><span lang="EN-US" style="font-family: Arial;">I hope that in 2024 a whole bunch of kids will look back at 2004 and fondly remember their first game they wrote and distributed over the net. Wouldn’t that be cool?</span> </blockquote>
<blockquote class="tr_bq">
<span lang="EN-US" style="font-family: Arial;"></span><span lang="EN-US" style="font-family: Arial;">Well, that’s enough nostalgia for one day. Time to go make games!</span></blockquote>
<div class="post-header" style="color: #333333; font-family: Georgia, serif; font-size: 13px;">
<div class="post-header-line-1">
</div>
</div>
<div class="post-body entry-content" id="post-body-113922097294482921" itemprop="description articleBody" style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; margin: 0px 0px 0.75em;">
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Arial;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Arial;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Arial;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Arial;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Arial;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Arial;"><o:p></o:p></span></div>
</div>
<div class="post-body entry-content" id="post-body-113922097294482921" itemprop="description articleBody" style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 1.6em; margin: 0px 0px 0.75em;">
<span lang="EN-US" style="font-family: Arial;"><br /></span></div>
Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-74670525609646779142018-03-20T05:26:00.003-07:002018-03-20T05:26:51.937-07:00Fitbit versus Apple WatchI'll admit it. I'm a bit of an Apple Watch fan. I've had an Apple Watch since launch and have made a number of Apple Watch apps. <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrp2uB9pwNIr3ps2OGnCfrS5ucPxBRxnXtJR0Yz9VcRYZYb2RjC-CvnOkQ9Sn1n_in-O2S5Yz3yzEeYmXI3n60ci_PSRRLquUDHxkemuPgBG2xsZ_gg_EyK1-YqN_eySlPNDpl/s1600/snappyWordWatch.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrp2uB9pwNIr3ps2OGnCfrS5ucPxBRxnXtJR0Yz9VcRYZYb2RjC-CvnOkQ9Sn1n_in-O2S5Yz3yzEeYmXI3n60ci_PSRRLquUDHxkemuPgBG2xsZ_gg_EyK1-YqN_eySlPNDpl/s320/snappyWordWatch.png" width="179" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Snappy Word for Apple Watch</td></tr>
</tbody></table>
<br />
Before I had an Apple Watch I was a Fitbit user. I wore theFitbit Flex everyday and members of my family had Fitbit Zips. The Flex was a great tracking device even though the cheap rubber band kept breaking (Fitbit always sent me replacement ones). I wore my Flex with my analog watch and wished the Flex could tell the time, do heart rate tracking and was waterproof.<br />
<br />
When Apple finally announced the Watch and I was ready to jump ship. While the first Watch wasn't waterproof it did offer the ability to make apps for it. So I passed my Flex on to my kids and proudly sported my shiny new Apple Watch.<br />
<br />
Since then I've upgraded to the Apple Watch Series 3 LTE. Now the Watch does pretty much everything I need it to do. It's waterproof, has a great battery life, sports improved heart rate tracking and can even make phone calls!<br />
<br />
But the Apple Watch isn't without it's failings. To be fair these are failings more on the publishing side than on the hardware side. As a developer, making apps is easy enough, but getting your app out to actual Watch users is incredibly hard. The Apple Watch Store is hidden away in the Apple Watch app and rarely updates (the same apps have been featured in Australia for the last few months). There is no best selling list or new release list to peruse and the curation is pretty much non-existent. The main App Store app occasionally features Watch apps, but this is a rare occurrence.<br />
<br />
As an example, my last app, Skip and Save which I released earlier this year for free has had a paltry 141 downloads. The app was designed for Watch and takes advantages of complications and Watch connectivity. I reached out to Apple Watch press sites and sent out press releases - all to no avail. I would have thought that even if the app was appalling (it's not) that surely some small percentage of Watch owners would download it out of curiosity. There just isn't any real way to find Watch apps.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOZn34O6GHqbJapxw24ykT0GY54d8GK0tZBWth5b-jDZuInZv_bYfg7c-dhywc1rSBqy5fIb8JCA4VAuFKLWHA1LLsvZdCsLWZWuYj5voZxI1G35LuLWLVDBviYX84frro9RiP/s1600/skipAndSaveWatch.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOZn34O6GHqbJapxw24ykT0GY54d8GK0tZBWth5b-jDZuInZv_bYfg7c-dhywc1rSBqy5fIb8JCA4VAuFKLWHA1LLsvZdCsLWZWuYj5voZxI1G35LuLWLVDBviYX84frro9RiP/s320/skipAndSaveWatch.png" width="179" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Skip and Save was made for Apple Watch</td></tr>
</tbody></table>
Despite these failings I still love my Watch.<br />
<br />
Now it looks like the first real challenger to Apple Watch is about to arrive.<br />
<br />
The Fitbit Versa.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5EXS8RFzlfRIIfnWFYbgLXiwXHdEiduWFrq8fgbjUSM-GvPwjk6hakCCp0s-rEtE4TdRrdSF0lMgNnHOuwH0qShyphenhyphenpYfJ8kyAGZ7KXKHzCLD3B7HJ-P4c-cJw4jaQNQA4V7teh/s1600/fitbit_versa.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5EXS8RFzlfRIIfnWFYbgLXiwXHdEiduWFrq8fgbjUSM-GvPwjk6hakCCp0s-rEtE4TdRrdSF0lMgNnHOuwH0qShyphenhyphenpYfJ8kyAGZ7KXKHzCLD3B7HJ-P4c-cJw4jaQNQA4V7teh/s320/fitbit_versa.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fitbit Versa</td></tr>
</tbody></table>
While it lacks LTE and the ability to reply to messages on Apple devices, the Versa is waterproof, sports a 4 day battery life, has GPS (on the Special Edition) and all day heart rate monitoring. And it also has the ability to run 3rd party apps. Oh, and it's cheaper. It's AUD $299.95 compared to Apple Watch AUD $459.<br />
<br />
3rd party apps is the thing I'm most interested in.<br />
<br />
Fitbit Versa uses Fitbit OS. Fitbit bought Pebble a while back and I'm not sure how much of the Pebble tool chain and OS is in Fitbit OS, but what they do offer is pretty cool. The development IDE is completely web based allowing you to write an App or a Watch Face in the browser and deploy to a simulator for testing.<br />
<br />
Oh yeah, the Versa lets you make watch faces, something Apple does not. It may be that watch faces could be the killer app for the Versa. Checking out the success of watch faces on Garmin devices (the download numbers are public) it seems that even in a small ecosystem relative to Apple Watch, Garmin users are downloading watch faces by the tens of thousands.<br />
<br />
Sadly it looks like there is no easy way for Fitbit developers to charge users for their apps - so any work done on this system will be a labor of love. Hopefully this is something they address when the Versa launches.<br />
<br />
You can check out the <a href="https://dev.fitbit.com/" target="_blank">Fitbit development site here</a>.<br />
<br />
The development language is JavaScript which is a very accessible language.<br />
<br />
Now, the one thing I am not sure about is how Fitbit will solve the app discovery problem. I've looked at their site and can't work out where they keep the storefront for the current batch of Ionic apps (their first Fitbit OS device). Maybe it's only available from the Fitbit App when you connect an Ionic device? Either way, it doesn't look promising at the moment. But then it couldn't be any worse than Apple. I guess for both platforms they can only improve their discovery.<br />
<br />
I'll be watching the launch closely and will be very keen to see how Fitbit deals with developers and how they promote their apps.<br />
<br />
I hope Fitbit does well and is enough of an annoyance to Apple that Apple open up Watch faces to developers and pull their finger out to fix app discoverability.<br />
<br />
Good luck with launch Fitbit. Here's to your success and growing a viable platform for developers to make apps for!<br />
<br />
- JohnnoPassfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-39604316163122797772018-02-26T05:22:00.000-08:002018-02-26T05:22:08.022-08:00Adventure Games in 3D with Stereo JackWhile cleaning up my hard drive I came across all the files for Stereo Jack, a graphic adventure follow up to <a href="https://en.wikipedia.org/wiki/Flight_of_the_Amazon_Queen" target="_blank">Flight of the Amazon Queen</a> that <a href="http://www.spacecaptainsteve.com/" target="_blank">Steve Stamatiadis</a> and I were developing.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfnaglyA82GsPzgsC_R-iBsi_aS9kKS_LrpabL4iI-D8pbCrtpEHcAv06-kXYJM3CWliuX74rOQDdTdkX5iosHIsYRV9GD-ylgER4OUcmpWvUpKi93V3nHwQaoRfYfnh202Pt3/s1600/sj_scr2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfnaglyA82GsPzgsC_R-iBsi_aS9kKS_LrpabL4iI-D8pbCrtpEHcAv06-kXYJM3CWliuX74rOQDdTdkX5iosHIsYRV9GD-ylgER4OUcmpWvUpKi93V3nHwQaoRfYfnh202Pt3/s400/sj_scr2.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Black Hole (the villain) and Stereo Jack (the hero)</td></tr>
</tbody></table>
<br />
We had designed the entire game down to every single location, character, item and puzzle (I have 2 full ring binders of design docs) - including entire room layouts that Steve had made for every location.<br />
<br />
I had even adapted the JOKER game editor we used for <a href="https://en.wikipedia.org/wiki/Flight_of_the_Amazon_Queen" target="_blank">Amazon Queen</a> to work in 3D.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhub2Y6wZ6F59mR-blDa7bdueUhu-2eDtwMrlOOJEgDF1433dJa_nywfr9z_PHvAoXDZGEPt17UpndNLAyFocx0ze0iWREGVsttW4wONkpMD-NY0SEaiimHZwvVjKHmC5lLReFu/s1600/sj_editor.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhub2Y6wZ6F59mR-blDa7bdueUhu-2eDtwMrlOOJEgDF1433dJa_nywfr9z_PHvAoXDZGEPt17UpndNLAyFocx0ze0iWREGVsttW4wONkpMD-NY0SEaiimHZwvVjKHmC5lLReFu/s400/sj_editor.JPG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">JOKER3D - our graphic adventure editor</td></tr>
</tbody></table>
<br />
Ans we had the game playable with some early test locations.<br />
<br />
We were very close to having it signed but things didn't work out in the end.<br />
<br />
What I found interesting was that we wanted to make the game in 3D and we had to actively pitch the publisher as to why 3D was better than 2D. I thought I'd include the pitch we made in May 1997 to <a href="https://en.wikipedia.org/wiki/Atari,_Inc._(Atari,_SA_subsidiary)#GT_Interactive" target="_blank">GT Interactive</a> in this blog - as well as the outline of what the game was all about.<br />
<br />
Enjoy!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjStbNgJFo3KtYy69M_DknOCAbBtRNHKA-jkj5bxPLPzJHfFB02QVniyX6iXtCJm6KgqmnL5Ys5Sr7LaK4vD1Zs7VIghSWw4l71RccPki9XTAOgdWSDvm7y1o9TBSN9EhxRtysX/s1600/sj_scr1.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjStbNgJFo3KtYy69M_DknOCAbBtRNHKA-jkj5bxPLPzJHfFB02QVniyX6iXtCJm6KgqmnL5Ys5Sr7LaK4vD1Zs7VIghSWw4l71RccPki9XTAOgdWSDvm7y1o9TBSN9EhxRtysX/s400/sj_scr1.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Our 3D adventure that never was.</td></tr>
</tbody></table>
<br />
<blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;">
<h3>
<b style="font-family: "Times New Roman";">STEREO JACK - THE GRAPHIC ADVENTURE</b></h3>
<div>
<div style="font-family: "Times New Roman"; font-stretch: normal; line-height: normal; min-height: 16px;">
<span style="font-size: x-small;">Copyright Steve Stamatiadis and John Passfield © 1996</span></div>
</div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;"><b><i>Stereo Jack </i></b>is the world’s greatest cyber-hacker. He specializes in data retrieval and no computer is safe from his digital prowess. His home is <b><i>Silicon City</i>, </b>a sprawling futuristic metropolis where high-technology and computers are a way of life. Free of pollution and covered in lush green parkland it’s the perfect place to live. </span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">So perfect in fact, that it’s a magnet for the world’s nastiest cyber-villains.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">In his latest adventure Jack is pitted against his evil arch nemesis Black Hole. Dedicated to destroying all computer information, Black Hole has hatched a plan so cunning that it could result in the downfall of Silicon City.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Black has discovered a super secret backbone network that links all of Silicon City’s major computer systems. The network was created during the Core Wars to allow Silicon City officials access to their computers in the event of a foreign body taking over the city. After the Core Wars the backbone was left in place but forgotten about. </span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">The only thing stopping Black Hole becoming the most powerful force in the city is that he is missing </span><span style="font-family: inherit;">the master access key - and only one person stands in his way of obtaining it. Stereo Jack.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Playing Jack, it’s up to you to put a stop to Black Hole’s evil plans!</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">The adventure spans a number of exciting locations, including:</span></div>
</blockquote>
<div>
<ul><ul>
<li><span style="font-family: inherit;"><span style="font-family: inherit;">the core zones of Silicon City, information capital of the world</span></span></li>
<li><span style="font-family: inherit;"><span style="font-family: inherit;">marine.com, tomorrow’s marine community today</span></span></li>
<li><span style="font-family: inherit;"><span style="font-family: inherit;">derelict tunnels below the illustrious Hawkins University</span></span></li>
<li><span style="font-family: inherit;"><span style="font-family: inherit;">and finally Black Hole’s secret trap ridden base high in the Rocky mountains</span><span style="font-family: inherit;"> </span></span></li>
</ul>
</ul>
</div>
<blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;">
<div>
<span style="font-family: inherit;">The game also features dozens of highly detailed, futuristic vehicles, all rendered in real time 3D. These include sports cars, police pursuit vehicles, limos, hover trucks and even a gigantic smog sucker.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Full-screen graphics make Stereo Jack leap off the monitor. The cinematic adventure uses a variety of camera angles to create dramatic effects, and seamlessly blends 3D animation to impose a sense of realism in an animated, futuristic setting.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Players are immersed in an incredibly rich and detailed 3D world - they can explore exotic locations looking for clues and interact with the many exciting characters. Some of these characters however are on Black Hole’s payroll and will do anything to stop you. </span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">If Jack encounters an adversary he can try and use his brain to find a way around them or use his brawn and confront them. If the player chooses to fight then a combat mode is initiated and the player gets control of Jack's fighting moves.</span></div>
</blockquote>
<div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit; font-weight: normal;">And here is what we wrote for GTI back in May 1997 to convince them 3D was the way to go.</span><br />
<span style="font-family: inherit; font-weight: normal;"><br /></span>
=== START PITCH DOC ===<br />
<div style="font-stretch: normal; line-height: normal;">
<b><span style="font-family: inherit;"><span style="font-size: 14px;"><br /></span></span></b></div>
<div style="font-stretch: normal; line-height: normal;">
<b><span style="font-family: inherit;"><span style="font-size: 14px;">3</span>D Adventures versus 2D Adventures</span></b></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">Although the new demo is in real time 3D - the game is still an adventure game - not a simple 3D shooter (although we do have action as part of the game play). You still solve puzzles, interact with other characters, carry out conversations with our enhanced dialog system and explore exciting new locations. The story driven aspects of a traditional graphic adventure still exist. The main difference is that the game is now in 3D.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<b><span style="font-family: inherit;">Some Things To Remember</span></b></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">- The demo that you saw used an unoptimised 3D engine with no 3D card support and ran between 10 and 15 frames per second with every thing turned on (multiple characters, transparencies, multiple rooms being drawn simultaneously for the cameras, etc).</span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">- The 3D engine will only get faster and more impressive</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<b><span style="font-family: inherit;">The 3D Advantage</span></b></div>
<div style="font-stretch: normal; line-height: normal;">
<b><span style="font-family: inherit;"><br /></span></b></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">Players LOVE 3D games</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">And more importantly PC Magazines love 3D games.</span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">Take a look at the most successful games (that aren’t Real Time Strategy Games) and you’ll find they’re mostly 3D. In fact, the next generation of strategy games are shaping up to use 3D as well. Tomb Raider, Mario 64, Quake, Duke Nukem 3D, etc, are all 3D games. </span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">As Dave Perry of Shiny Entertainment said “You can do good 2D games in 3D, but you can’t do 3D games in 2D”. As a testament to the future of games - all of Shiny Entertainment’s new titles are full 3D - including the much anticipated Earth Worm Jim 3.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">Game worlds are much, much larger</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">For the same amount of work required to create a single static 2D screen we can create large and completely immersive 3D locations. We can view these locations from a number of different views, we can walk around these locations in real time, and when necessary we can zoom in to show off new parts of these locations. To do this in 2D would require the same location to be re-drawn from a number of different angles - requiring a lot of extra work and time. </span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">Scaleable Graphics Resolution</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">Unlike 2D, the graphics resolution of 3D games is scaleable. Imagine nearing the completion of a hires 2D adventure when all of a sudden everyone wants 800x600 in high color. Uh oh - that means the developers have to either bite the bullet and release a graphically outdated game and face the wrath of the PC Game press or discard a whole lot of work and money and begin redoing the graphics. </span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">3D graphics card support</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">Using 3D we can take advantage of Direct3D and support 3D graphic cards. This not only ensures that the game has a longer shelf life - but gives the games a level graphical detail that would be hard to achieve in 2D.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">Easy to port to next generation consoles</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">A 3D game is easier to port due to the scaleable attributes of 3D as well as the fact that many of the next generation consoles are designed with real time 3D development in mind.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">Models are less complex then pre-rendered graphics</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">Real time models may be less complex - but they look far more impressive than their 2D counterparts when they are being moved about in 3D space. However, their are two big advantage to using less complex real time 3D models: Building 3D real time models take less time and do not require ultra powerful SG workstations. The result is a saving of time, money and manpower.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">Ability to create new and innovative puzzles</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">Please refer to the New Paradigm section.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">Allows us to create cinematic sequences</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">With a real time 3D game engine we can control the placement of “cameras” to view the action with. This means we can zoom, dolly, pan and push in on characters as the action unfolds. We can cut to a closeup for dramatic effect or move to a long shot to give sense of epic scope to a scene.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">All the cool developers are doing 3D only</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">Sierra are currently doing 3D adventures. It won’t be long before LucasArts jumps on to the bandwagon. To have a competitive edge we need to set the standard now. And 3D is an integral part of that standard.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="text-decoration: underline;"><span style="font-family: inherit;">Shorter development time</span></span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">Complex 2D images take quite a while to draw. If they’re being pre-rendered then quite a bit of time is taken to build complex models and render. There’s also the problem of animation. Walk cycles and object animations need to be created from a number of different viewing angles - all of which eats up valuable time. With 3D we can create a single walk cycle for a character and view it in real time from any angle. We can also attach other character models to the skeleton of a predefined walk cycle - thus saving ourselves a lot of time re-animating a new character.</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<b><span style="font-family: inherit;">Disadvantages of 2D</span></b></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">- Lots of graphics need to be created to build the game world</span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">- 3D models need to be more complex: as a result need faster, powerful rendering machines, more people and of course, more money and time</span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">- Puzzles tend to be restricted to old hackneyed themes</span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">- Just doesn’t look as impressive</span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">- The cost to deliver graphics and animation to rival Monkey Island 3 and Blizzard’s upcoming 2D adventure would be astronomical. Both games are using animation studios.</span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">- Difficult and time consuming to convert to other platforms</span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal;">
<b><span style="font-family: inherit;">In Summary</span></b></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;">We feel that a 3D adventure game can still have all the elements that players love about 2D graphic adventures - except now we can layer even more cool game play elements into the game. The game story is enhanced by the fact that we can direct action in a cinematic way. Players are drawn into the game world even more so because of the 3D immersive nature.</span></div>
<div style="font-stretch: normal; line-height: normal;">
<span style="font-family: inherit;"><br /></span></div>
<div style="font-stretch: normal; line-height: normal; min-height: 14px;">
=== <span style="font-family: inherit;">END PITCH DOC </span>===</div>
<div>
<br /></div>
<div>
Congratulations if you made it this far! </div>
<div>
<br /></div>
<div>
It would be hard for you to be nostalgic about something that didn't exist - but for me and Steve we poured a lot of time and energy into the game and comic so it was nice to rediscover these old documents.</div>
<div>
<br /></div>
<div style="font-stretch: normal; line-height: normal; margin-left: 2.2px; min-height: 14px;">
If anything, it's interesting to see that world of game development that was on the precipice of mainstream 3D games. It was rather exciting to imagine the potential of what it would offer back then.</div>
<div style="font-stretch: normal; line-height: normal; margin-left: 2.2px; min-height: 14px;">
<br /></div>
<div style="font-stretch: normal; line-height: normal; margin-left: 2.2px; min-height: 14px;">
I'm sad we didn't get to make the game. We produced a smaller follow up 3D adventure called Gruesome Castle afterwards, but it also failed to hit the market. But that's a story for another day.</div>
<div style="font-stretch: normal; line-height: normal; margin-left: 2.2px; min-height: 14px;">
<br /></div>
<div style="font-stretch: normal; line-height: normal; margin-left: 2.2px; min-height: 14px;">
- Johnno</div>
<div style="font-family: "Times New Roman"; font-stretch: normal; line-height: normal;">
</div>
</div>
Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-1260009290504021772018-02-23T20:18:00.000-08:002018-02-23T20:18:20.518-08:00Games ManifestoI previously <a href="http://passfieldgames.blogspot.com.au/2018/02/australian-themed-games.html" target="_blank">blogged about Australian made games</a> that feature Aussie themes, characters and locations. Florence, TY the Tasmanian Tiger, Golf Story and Miss Fisher and the Deathly Maze are juts a few examples. However the majority of games made in Australia are location agnostic or set in other places. Very few include Australian themes or characters.<br />
<br />
I made two Aussie themed games back int he early mid 2000's - <a href="https://en.wikipedia.org/wiki/Ty_the_Tasmanian_Tiger" target="_blank">TY the Tasmanian Tiger</a> and it's sequel Bush Rescue. I did the initial design on the 3rd instalment before leaving Krome in 2005. I've also tried to set up new projects that have a strong Aussie bent.<br />
<br />
<a href="http://www.spacecaptainsteve.com/" target="_blank">Steve Stamatiadis</a> and I created a concept called Kat Burglar, staring Aussie Kat Kelly as a free spirited adventurer who specialised in re-acquiring cultural items that had been taken from the original native owners. Her catch phrase was "It doesn't belong in a museum!" and was an anti-Indiana Jones.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQW6hJ_5ZRKjzwPFvK3tDezsEvsrTEO_jUEtScILzb9dsuJK99AHZY_kN6oHdjVm80JFKjFUl4PFmYE9w4fql7BqZPXd7PadX6mQT6q-26q13rJUCibru6OTYN_wOv9N2YsW0m/s1600/KatBurglar4.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQW6hJ_5ZRKjzwPFvK3tDezsEvsrTEO_jUEtScILzb9dsuJK99AHZY_kN6oHdjVm80JFKjFUl4PFmYE9w4fql7BqZPXd7PadX6mQT6q-26q13rJUCibru6OTYN_wOv9N2YsW0m/s320/KatBurglar4.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Kat Burglar took relics from museums and returned them to the countries of origin</td></tr>
</tbody></table>
<br />
<br />
We designed the game and built a prototype but sadly we couldn't find publisher interest.<br />
<br />
Like many Aussies, I also wanted to make a Mad Max game, and over time produced many pitches for games inspired by the movie. We even got to pitch EA on doing the official Mad Max game back in 2003 before <a href="https://en.wikipedia.org/wiki/Mad_Max:_Fury_Road" target="_blank">Fury Road</a> was put on hiatus.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGLcoCruSaly6fTmQ7W7cdGSjvR_fnAo_CXAbEdnpDgl2vwiH35p9XqzRKkivqxCaHC98H5n4XAbuCclODlPWHe3RvRFGDMYBy6Qa9ojpQ8m1siT8ZwXD3Vn1BvbpbSga_ub2y/s1600/desertRiggers.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGLcoCruSaly6fTmQ7W7cdGSjvR_fnAo_CXAbEdnpDgl2vwiH35p9XqzRKkivqxCaHC98H5n4XAbuCclODlPWHe3RvRFGDMYBy6Qa9ojpQ8m1siT8ZwXD3Vn1BvbpbSga_ub2y/s320/desertRiggers.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Desert Riggers - a Mad Max inspired game design from 2003</td></tr>
</tbody></table>
<br />
<br />
Right now Pete Mullins and I are slowly building out Billy Carts, an Australian themed racing game featuring Aussie animals - it kind of follows in the footsteps of TY with a humorous take on the genre with a larrikin sense of humour.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi69F_0zM1eGxSoLvBXzI-oXD_SYbh1mdy7xve68XDIeU8QMGs1o5wYig1mLLf1N_2ClMnfRtUxEPPKb5a34i0aPzsKloXj1qmlsIGrjLtf6psYT17QuJlt8nsLT92ioQ4T1Mzk/s1600/billycarts.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="268" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi69F_0zM1eGxSoLvBXzI-oXD_SYbh1mdy7xve68XDIeU8QMGs1o5wYig1mLLf1N_2ClMnfRtUxEPPKb5a34i0aPzsKloXj1qmlsIGrjLtf6psYT17QuJlt8nsLT92ioQ4T1Mzk/s320/billycarts.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Billy Carts</td></tr>
</tbody></table>
<br />
So, with a renewed interest in making games that celebrate Australia I thought it could be useful to create a manifesto as a set of guidelines to help myself and others make these games. Then it occurred to me that this just isn't about Australian games - it's about making personal games - and that could apply to anyone, anywhere.<br />
<br />
Some of my favourite creators, no matter how otherworldly their content is, have always infused their art with their DNA. George Lucas drew upon his experiences growing up in Modesto, his love of cars and the serials he watched as a kid and put those in Star Wars. The Empire and the Rebellion were also inspired by the Vietnam war which affected him and his generation.<br />
<br />
Likewise JK Rowling took her very real life experiences of poverty and depression as inspiration for themes in Harry Potter as well as drawing upon people she knew for characters and places she lived as settings.<br />
<br />
Of course these are just two famous examples - so many great writers draw upon their own lives for inspiration.<br />
<br />
So, here is my first pass at a manifesto. It's no longer about making Australian games but about making personal games.<br />
<br />
Games that can only be made by you.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNK_hsRTd5tXkA5ea9jEEkgJsdA1mILxDPbq4uioVPrWAT-GrWsl-EWL06p1xq2WuQ6d2wnkPrrt9_cY-bFiDRA_iyKxBVKWhqH5Ut6lrhgR7okRi7Q0tIn2jOKsaro-q7C6y4/s1600/Manifesto+2018.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNK_hsRTd5tXkA5ea9jEEkgJsdA1mILxDPbq4uioVPrWAT-GrWsl-EWL06p1xq2WuQ6d2wnkPrrt9_cY-bFiDRA_iyKxBVKWhqH5Ut6lrhgR7okRi7Q0tIn2jOKsaro-q7C6y4/s320/Manifesto+2018.png" width="226" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Games Manifesto 1st Draft</td></tr>
</tbody></table>
<br />
<br />
So, what do you think?<br />
Is this a manifesto that you could use?<br />
What would you change?<br />
<br />
- Johnno<br />
<br />
<br />
<br />
<br />Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com2tag:blogger.com,1999:blog-22028176.post-16736073372025547172018-02-17T04:26:00.000-08:002018-02-17T14:31:16.124-08:00Australian Themed Games<span style="-webkit-font-kerning: none;"><span style="font-family: inherit;">I’m Australian and I reckon </span>Australians<span style="font-family: inherit;"> make great games. </span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">Many of our games hold their own against the best from around the world. We’ve also produced some of the most downloaded games, Fruit Ninja for example, has been a global phenomenon.</span></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqUY8vRELd1nlnmiBS61pYoG88iQNvWzpUhNU69AWMDEc7V0183QVg52mTVt9lduqwixBOWC3OJp1dxTd44qhf751_PiHdORT3KGzvPc95mI5hRkINlaWdUbblLJuyZN86Gd-v/s1600/fruitninja.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqUY8vRELd1nlnmiBS61pYoG88iQNvWzpUhNU69AWMDEc7V0183QVg52mTVt9lduqwixBOWC3OJp1dxTd44qhf751_PiHdORT3KGzvPc95mI5hRkINlaWdUbblLJuyZN86Gd-v/s320/fruitninja.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fruit Ninja has had over a billion downloads</td></tr>
</tbody></table>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">Right now, in 2018, Australia is home to a thriving indie scene producing some extraordinary games. The recently released <a href="https://itunes.apple.com/us/app/florence/id1297430468?mt=8" target="_blank">Florence by Mountains</a> is a fresh and exciting example of what the games medium can produce and it's set in Melbourne.</span></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmEtO2epHCfT_S4H3OSbIh4yWTpzF92HJmhzJw01ivSWcgP9V8qjGjasmtuqH0uxBY9pqPopm2u1k2k_t8aXT7HsZEN0Cy-jkZjBDUPxyogcct5CgXsNcSJnLdH2cYsa83Razt/s1600/florence_art.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmEtO2epHCfT_S4H3OSbIh4yWTpzF92HJmhzJw01ivSWcgP9V8qjGjasmtuqH0uxBY9pqPopm2u1k2k_t8aXT7HsZEN0Cy-jkZjBDUPxyogcct5CgXsNcSJnLdH2cYsa83Razt/s320/florence_art.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Florence by Mountains</td></tr>
</tbody></table>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">But what I want to talk about is the lack of games set in Australia and/or featuring Australian characters made by Australians. This is more of a discussion out loud with myself than an essay offering any real answers. If you, dear reader, have some insight into why Aussie game developers prefer to set their games in sci-fi or fantasy worlds or in countries other than Australia then please let me know in the comments below.</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">I’ve thought about this lack of Aussiness for quite a while. Back in 2000 I started work on a brand new game called <a href="https://en.wikipedia.org/wiki/Ty_the_Tasmanian_Tiger" target="_blank">Ty the Tasmanian Tiger</a>. We shipped it on Playstation 2, Xbox and Gamecube in 2004 to worldwide success. In fact, the recent re-release on Steam is one of Steam’s highest rated games. Ty is an unadulterated Aussie game set in Australia starring Aussie animals and featuring true blue <a href="https://en.wikipedia.org/wiki/Strine" target="_blank">Strine</a>. It’s fairly over the top in it’s Australianess - I wrote the script and co-designed it so feel free to blame me - but most of the language I used is based on real life language I heard growing up or spoken by people around me while making the game.</span></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVsr1vWi7L_jREs4FTA-5JOxomXnKKDM9rK2nDNopVHbA4qvotbG8LglBjoR8t_pTI-v6zZrRfAL_1sZfyyF4ngIGxnde2244P3jviOXM5e6DuxHN2ftUf_gJ8eAB6qhl9YZnR/s1600/TYCover.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVsr1vWi7L_jREs4FTA-5JOxomXnKKDM9rK2nDNopVHbA4qvotbG8LglBjoR8t_pTI-v6zZrRfAL_1sZfyyF4ngIGxnde2244P3jviOXM5e6DuxHN2ftUf_gJ8eAB6qhl9YZnR/s320/TYCover.jpg" width="225" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I co-created Ty to be 100% Aussie!</td></tr>
</tbody></table>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">The creation of Ty was in part a reaction to American and Japanese companies using Aussie characters in their games. Crash Bandicoot and Sonic the Hedgehog have Australian animals in them. It was hearing Crash’s sister, Coco, speaking for the first time in an America accent that pushed me over the edge and made me want to make a game that was a true Aussie game.</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">It is ironic that non-Australian developers have made more of an effort to create Australian characters and use Australian settings than the local development community. Notable examples include Beneath a Steel Sky (made by UK Revolution Software), Saxton Hale from Team Fortress (which was co-developed by Aussie Robin Walker), Junkrat from Overwatch (by US based Blizzard), Mad Max (developed by Sweden’s Avalanche Studios), Uncharted’s Chloe Frazer (by US based Naughty Dog) and Chips Dubbo from Halo (by US Microsoft) to name just a few.</span></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp4a5tUY4MxriiDS80AbR6_K-odnEYMdnhNizM3cexwTmyJTkr5KbPRvHRWyCVQfliL4fUjJunEPLvpchL4LIc3t8KxFRk1BN58p2dUMW4-OFC8ufZ7sga2EE7Zmn6KrCGpsjq/s1600/saxton.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp4a5tUY4MxriiDS80AbR6_K-odnEYMdnhNizM3cexwTmyJTkr5KbPRvHRWyCVQfliL4fUjJunEPLvpchL4LIc3t8KxFRk1BN58p2dUMW4-OFC8ufZ7sga2EE7Zmn6KrCGpsjq/s320/saxton.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Saxton Hale from Team Fortress</td></tr>
</tbody></table>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdq205d17fSkm70FgMl43hlNBTLhPnBbYs9MgCuL8G_uFGB_FmIUya__qKvkONB7Ik0QHhMmg6wjSNwm3sw_PKhgRbSWat1oAOaYyBHk3bPOqBC5BZfesf_QdSWYfl-JWd7KQp/s1600/steelsky.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdq205d17fSkm70FgMl43hlNBTLhPnBbYs9MgCuL8G_uFGB_FmIUya__qKvkONB7Ik0QHhMmg6wjSNwm3sw_PKhgRbSWat1oAOaYyBHk3bPOqBC5BZfesf_QdSWYfl-JWd7KQp/s320/steelsky.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Beneath a Steel Sky</td></tr>
</tbody></table>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9OPqCBuznIlY5Q0EyqLCPEX3qk-cmG7O7ZS9p0txsrhCiP9a9Zor0TxgvNRJns60cOuFayyLPaZvmYXnvHgic4RhfibOgIieRwl-oj2_4rhxE0QYKK53SKc1WvmIDC_LDAosH/s1600/4_Overwatch-Junkrat.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9OPqCBuznIlY5Q0EyqLCPEX3qk-cmG7O7ZS9p0txsrhCiP9a9Zor0TxgvNRJns60cOuFayyLPaZvmYXnvHgic4RhfibOgIieRwl-oj2_4rhxE0QYKK53SKc1WvmIDC_LDAosH/s320/4_Overwatch-Junkrat.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Junkrat from Overwatch</td></tr>
</tbody></table>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">Here’s a list of games that use Australia as a setting:</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><a href="https://en.wikipedia.org/wiki/Category:Video_games_set_in_Australia"><span style="-webkit-font-kerning: none;">https://en.wikipedia.org/wiki/Category:Video_games_set_in_Australia</span></a></span><span style="-webkit-font-kerning: none;"><br /></span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">And Kotaku has this article on Australians in games:</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><a href="https://www.kotaku.com.au/2011/10/a-visual-of-australians-in-video-games-the-trilogy-is-complete/"><span style="-webkit-font-kerning: none;">https://www.kotaku.com.au/2011/10/a-visual-of-australians-in-video-games-the-trilogy-is-complete/</span></a></span><br /><span style="-webkit-font-kerning: none;"><br /></span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">I did some research into the number of Aussie made games featuring Australian characters or locations and my list came up a little thin, which is surprising given the large number of indie games that have been made in recent times. </span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">Locally made games with Australian settings and/or characters include the previously mentioned Ty the Tasmanian Tiger games (four of them!) and Florence, the wonderful golfing RPG <a href="http://golfstorygame.com/" target="_blank">Golf Story</a>, </span><span style="-webkit-font-kerning: none;">Bioshock which was partially developed in Australia, a bunch of AFL and Cricket games, Down Under Dan, Escape from Woomera, Melbourne Cup Challenge, <a href="https://itunes.apple.com/us/app/miss-fisher-and-the-deathly-maze/id1087271099?mt=8" target="_blank">Miss Fisher and the Deathly Maze</a>… and that’s all I could find.</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0nvQpdTLfS4fYh0JRjJdcLnWaDVIoM4fhAUtFL6woxcNIU2tmD716tW5Hku6czu2z5ZiQW36N2U3PImr1T6gPD6B7Lg67DjuQTJLuptsReilmDstzGAwbWil51QgktlioUFZD/s1600/EscapeFromWoomera.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0nvQpdTLfS4fYh0JRjJdcLnWaDVIoM4fhAUtFL6woxcNIU2tmD716tW5Hku6czu2z5ZiQW36N2U3PImr1T6gPD6B7Lg67DjuQTJLuptsReilmDstzGAwbWil51QgktlioUFZD/s320/EscapeFromWoomera.jpeg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Escape from Woomera</td></tr>
</tbody></table>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiyk45w7qngCg23pKs2FvoFUCqxGslOR2hFyk1Z-DSizfnbxMzb1DPJXRBWUQeJWAHg1Aw9px_VKReQs6vZU00rZZAn1NKzL1NQONbLvx0qzCJ_9sX4T70lJiF17mrIGFrw9YW/s1600/GolfStory_Australia.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiyk45w7qngCg23pKs2FvoFUCqxGslOR2hFyk1Z-DSizfnbxMzb1DPJXRBWUQeJWAHg1Aw9px_VKReQs6vZU00rZZAn1NKzL1NQONbLvx0qzCJ_9sX4T70lJiF17mrIGFrw9YW/s320/GolfStory_Australia.png" width="307" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Golf Story from Sidebar Games</td></tr>
</tbody></table>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">What have I missed? There must be more than just the handful of games I’ve found.</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">So, why don’t Australians make games that celebrate their country, culture and people? We definitely have a “voice” that is uniquely Australian. You can experience it in games like Fruit Ninja, Florence, Crossy Road, Ski Safari and other games that aren’t overtly about Australia but still manage to exude a sense of Aussie charm.</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span><span style="-webkit-font-kerning: none;">I’ll throw out a few ideas.</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<br />
<h4>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><b>Fantasy and Sci Fi Rule</b></span></span></h4>
<br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">Game developers have a penchant for fantastical works and these tend to be set in made up places. And traditionally the origins of video games are steeped in scifi/fantasy so it only makes sense for the current generation of developers to follow in these footsteps.</span></span><br />
<span style="-webkit-font-kerning: none; font-family: inherit;"><br /></span>
<br />
<h4>
<span style="-webkit-font-kerning: none; font-family: inherit;"><b>Movies have a Big Impact</b></span></h4>
<br />
<span style="-webkit-font-kerning: none;"><span style="font-family: inherit;">Game developers take a lot of inspiration from movies and the majority of blockbusters are set outside of Australia. By constantly </span>reinforcing<span style="font-family: inherit;"> New York and LA as </span>important<span style="font-family: inherit;"> cities it makes sense for a developer to set their game there. It's much faster for a </span>player<span style="font-family: inherit;"> to get a sense of place with New York than Adelaide.</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<br />
<h4>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">Cultural Cringe</span></span></h4>
<br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">Australians tend to suffer from <a href="https://en.wikipedia.org/wiki/Cultural_cringe" target="_blank">cultural cringe</a> and find hearing their own “voice” in any medium to be, well, cringeworthy. Interestingly the term cultural cringed was coined here in Australia :-)</span></span><br />
<span style="-webkit-font-kerning: none; font-family: inherit;"><br /></span>
<span style="-webkit-font-kerning: none; font-family: inherit;"><br /></span><span style="-webkit-font-kerning: none;"><span style="font-family: inherit;">As I mentioned earlier I’ve made Aussie games with the Ty series . These are over-the-top examples of Australia but I </span>believe <span style="font-family: inherit;">there is so much more that can be be done to explore the uniqueness of our country. There’s an untapped well of stories and characters that are perfect to explore in the games medium. I would love to see indigenous developers draw from their rich history to create something like <a href="https://en.wikipedia.org/wiki/Cleverman" target="_blank">Cleverman</a> for games.</span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<span style="-webkit-font-kerning: none;"><span style="font-family: inherit;">I definitely want to include more Australian characters, themes and locations in my future games. They’re probably going to be more in the style of <a href="https://en.wikipedia.org/wiki/Ty_the_Tasmanian_Tiger" target="_blank">Ty the Tasmanian </a></span><a href="https://en.wikipedia.org/wiki/Ty_the_Tasmanian_Tiger" target="_blank">Tiger</a><span style="font-family: inherit;"> than a work of art like Florence - but you gotta start somewhere. </span></span><span style="-webkit-font-kerning: none; font-family: inherit;"><br /></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">So what do you think? Is there a reason for the lack of Australian made Aussie themed games?</span><span style="-webkit-font-kerning: none;"><br /></span></span><br />
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;"><br /></span></span>
<span style="font-family: inherit;"><span style="-webkit-font-kerning: none;">- Johnno</span></span><br />
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-family: inherit;"><span style="font-kerning: none;"></span></span></div>
<div style="-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-stretch: normal; line-height: normal; min-height: 12px;">
<span style="font-kerning: none;"></span></div>
Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-10545030666574764402018-02-10T19:27:00.000-08:002018-02-10T19:27:13.970-08:00Billy Carts Track ManagerI'm working on the game part-time so progress has been a little slow.<br />
<br />
I've also been switching between Swift and C# which I find slows me down. There's enough difference between developing in Xcode with Swift and Unity with C# that I often find myself having to google how to do things. With <a href="https://itunes.apple.com/au/app/skip-and-save/id1318698486?mt=8" target="_blank">Skip and Save</a> done and dusted I am now focusing 100% on just Unity and C# so hopefully my brain will be able to store Unity/C# and not have to swap it out with Xcode/Swift :-)<br />
<br />
I've recently been working on the track manager which lets the player race around an endless world in any direction. Previously the game was a single road down hill runner. While that was fun, it didn't offer enough of a point of difference to other games out in the market - and as a designer the idea of an endless world to explore offers so many more possibilities.<br />
<br />
Currently the track uses a 3x3 grid of prefabs which rearrange themselves around the player so there is always an adjacent track.<br />
<br />
Here is how it works from up high:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWjwR_Er4CB2JiwYIoR4aa8ZO6gcUYTwRINW0vxlo8hmTXe4E-watR-Qy8WqTzGip-hXc8omNGISRTWGsVzUQ2IgrtD6-qlyUp-v32BsUIPQR6HT4XEeluURwWwJPGP4CzgqhE/s1600/endlessTracks_20180211.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWjwR_Er4CB2JiwYIoR4aa8ZO6gcUYTwRINW0vxlo8hmTXe4E-watR-Qy8WqTzGip-hXc8omNGISRTWGsVzUQ2IgrtD6-qlyUp-v32BsUIPQR6HT4XEeluURwWwJPGP4CzgqhE/s400/endlessTracks_20180211.gif" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Endless Track Generator</td></tr>
</tbody></table>
<br />
Here's how it looks in game:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBsVKfL_Gis1LtzP6ymlb9nbsME7TZsRDAQXYbg34kpLe8iF83Xq8geDZM58bWcNQPCb-TkJVtFXprivp9JKnQL3a9YyHjsi9rGj5kRQNlOwoSDZzlu_zZ_OvveY1ZcRtYm8jH/s1600/endlessTracksCarView_20180211.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBsVKfL_Gis1LtzP6ymlb9nbsME7TZsRDAQXYbg34kpLe8iF83Xq8geDZM58bWcNQPCb-TkJVtFXprivp9JKnQL3a9YyHjsi9rGj5kRQNlOwoSDZzlu_zZ_OvveY1ZcRtYm8jH/s320/endlessTracksCarView_20180211.gif" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Endless driving (still with pop in)</td></tr>
</tbody></table>
<br />
<br />
At the moment the new track pieces are randomly placed so the scenery can suddenly change to a different track layout which is disconcerting - and there's also noticeable pop in when new tracks appear out front. The idea was to get something in fast to test the concept.<br />
<br />
Now that it works, the next step is to make sure that the "infinite" track layout is generated procedurally but in a way that the tracks connect logically so the scenery flows from outback to forest to townships.<br />
<br />
At the moment I'm using 3 track tiles that Pete has provided for testing:<br />
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3TwSJKqHTIBNZ6aX8WJ0_KYlO1I8iHmDlEtC-1wFt8mcMij3hkOXMvFfkHa1vYZkGj9S65cZ6Hd4lEY90Rr6g2-pCmwRoFkYrwuPIkOFzL4VKM1vog8IOTq9wel6-4r_Let8x/s1600/BC_Plane_03_TEX.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3TwSJKqHTIBNZ6aX8WJ0_KYlO1I8iHmDlEtC-1wFt8mcMij3hkOXMvFfkHa1vYZkGj9S65cZ6Hd4lEY90Rr6g2-pCmwRoFkYrwuPIkOFzL4VKM1vog8IOTq9wel6-4r_Let8x/s200/BC_Plane_03_TEX.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Track 1</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS1DZfOIcIsavYwdXEfcL-CFD57cpG3k_KJ1EjcNdvCR5XZMT4WbXd3Hh6emZMfek-j-s0p2VDNupS9-xpG9KJW8kh-Lmi1WofYKWg25ptK-YOwxo3fnwVzVSX4kAMmQy2VVBx/s1600/BC_Plane_02_TEX.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS1DZfOIcIsavYwdXEfcL-CFD57cpG3k_KJ1EjcNdvCR5XZMT4WbXd3Hh6emZMfek-j-s0p2VDNupS9-xpG9KJW8kh-Lmi1WofYKWg25ptK-YOwxo3fnwVzVSX4kAMmQy2VVBx/s200/BC_Plane_02_TEX.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Track 2</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEfq5eOqeYgTWexUsO475bbCbcHrHYGEWJeppZzwHHOjtAQMjwUNi9TEcdwDINqFGEZkBG1hA7vPiKocZjdlHHjig8X3e4KSlGQVlw-uhPCNPFoNCzd-ySiW133KIfUiReAj7Q/s1600/BC_Plane_01_TEX.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEfq5eOqeYgTWexUsO475bbCbcHrHYGEWJeppZzwHHOjtAQMjwUNi9TEcdwDINqFGEZkBG1hA7vPiKocZjdlHHjig8X3e4KSlGQVlw-uhPCNPFoNCzd-ySiW133KIfUiReAj7Q/s200/BC_Plane_01_TEX.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Track 3</td></tr>
</tbody></table>
<br />
There will be different themed pieces and of course content that fits on each piece like houses, dunnies (Aussie outdoor toilets), old car wrecks, animals, fences and all manner of obstacle and collectable.<br />
<br />
This is an Australian themed game and I'm really excited about the assets Pete will be creating to make this a truly Aussie experience. One of the things I'm keen on doing is injecting humour into the game through the characters, animals and landscape. Pete and I both worked on <a href="https://en.wikipedia.org/wiki/Ty_the_Tasmanian_Tiger" target="_blank">TY the Tasmanian Tiger</a> (I co-created TY) and we also did an Aussie comic strip together called Dingo Boy - so we're no strangers to creating Aussie content.<br />
<br />
I look forward to sharing more soon!<br />
<br />
- Johnno<br />
<br />Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-38187719528895677622018-02-02T05:44:00.000-08:002018-02-02T06:20:31.337-08:00Apps versus GamesAt the end of last year I took some time out from making games to try my hand at developing my first app. The app is <a href="https://itunes.apple.com/au/app/skip-and-save/id1318698486?mt=8" target="_blank">Skip and Save</a> and was designed with the Apple Watch in mind, but also works on the iPhone and iPad.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ztM4GvfKrsWvTco956sx6mnMUIi0kZy1UumcZ7-I_Jbm0KTovT9f1OQ5aoFDsWxJHmPJxNKcliPm_bZeQW1eTgV5jmbtSL3H7k86XvoNrQy5T1pbjw7rIOonZixACREqrtQn/s1600/scr3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ztM4GvfKrsWvTco956sx6mnMUIi0kZy1UumcZ7-I_Jbm0KTovT9f1OQ5aoFDsWxJHmPJxNKcliPm_bZeQW1eTgV5jmbtSL3H7k86XvoNrQy5T1pbjw7rIOonZixACREqrtQn/s320/scr3.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I designed Skip and Save with the Watch in mind</td></tr>
</tbody></table>
<br />
Creating this app was a new experience for me. And for the most part it was an enjoyable one.<br />
<br />
I completed the app at the start of December 2017 and submitted it to Apple with a release date of 24th of January - roughly 8 weeks before launch so I had the best possible chance of being considered for Apple featuring. Apple recommends giving them 6-8 weeks notice and if you’re a developer I highly recommend you do this too - more details here:<br />
<a href="https://developer.apple.com//contact/app-store/promote/">https://developer.apple.com//contact/app-store/promote/</a><br />
<br />
I built Skip and Save, which is a saving app, primarily for my use. As I mentioned <a href="http://passfieldgames.blogspot.com.au/2017/12/a-new-watch-app.html" target="_blank">in a previous "making of" blog post</a>, I often skip a treat and “bank” the money putting it toward buying something else later on - like a book or game. Regardless of the financial success of the app this was something I wanted to use and I figured I could also release it for others to enjoy.<br />
<br />
So how does making and releasing an app compare to making and releasing a game?<br />
<br />
<h4>
Making the App</h4>
I enjoyed building the app just as much as building a game. It was a challenge to learn new stuff like how the UI system works and how the Watch handles complications. It was also a challenge to use storyboard in Xcode to make my app responsive to different layouts and device sizes. I’ve used XAML before and found it much easier to create UI layouts. This is something I hope Apple can improve on in the future. For any Unity developers I can tell you it's easier to create responsive UI in Unity than Xcode!<br />
<br />
Building the Watch component of the app was also much easier than the iPhone component. I figure this is due to the maturity of the WatchOS side of things. The Watch app took 25% of the total development time.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ITEsZ8w2Ji4/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/ITEsZ8w2Ji4?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
<h4>
Marketing the App</h4>
Where apps depart dramatically from games is in the release/marketing phase. I had to find out which sites cover apps and the best app press release services. I did a lot of research and consumed a lot of App developer podcasts for best practices.<br />
<br />
I reached out to sites that featured Watch and iOS apps with press info and pre-release promo codes. I also promoted the app leading up to it’s launch using the new Pre Order scheme on the App Store.<br />
<br />
Sadly, on launch day, I got zero press interest and no featuring. <a href="https://twitter.com/BrianMueller333" target="_blank">Brian Mueller, the developer of Carrot</a>, recently tweeted this:<br />
<blockquote class="tr_bq">
<span style="background-color: white; color: #14171a; letter-spacing: 0.27000001072883606px; white-space: pre-wrap;"><span style="font-family: inherit;">"CARROT To-Do got 26 downloads and zero press coverage on launch day."</span></span></blockquote>
So I guess a lot hasn't changed in the last five years.<br />
<br />
In my experience the App news sites are a lot tougher to crack then the game sites. My press release did seem to reach the far corners of the web though, as I received many emails from marketing folks offering to “promote” my app for a fee!<br />
<br />
<h4>
Apps are Different to Games</h4>
Here is where I think apps diverge in a BIG way from games.<br />
<br />
With games you are solving a specific problem.<br />
<br />
Players want to be entertained.<br />
<br />
With a game, regardless of its genre, art style, team pedigree or core mechanic, your title has the potential to solve that problem. Your game simply has to entertain people!<br />
<br />
With an app you’re solving a specific problem. This means you’re only appealing to those people that have that problem. <br />
<br />
Skip and Save's market is people who are interested in saving money, and in a very specific way. So the potential market is a niche audience.<br />
<br />
People don’t think “I need a new app, here’s a free one I’ll download it and give it a try!”<br />
<br />
They think, “I need a better photo sharing app, let’s see what’s available.”<br />
<br />
From my own experience with games, I tend to download a lot each week in different genres and from different developers because I want to have fun. And any game has the potential to scratch that itch.<br />
<br />
This is obvious in hindsight, and as I mentioned I was making this app regardless as it’s an app that I wanted to use. But I do feel for my fellow non-game developers. They have it tough!<br />
<br />
Will I make another app? I think I will. I have some problems that are specific to me that I want to solve. Only this time I'll focus on the Watch and not worry about the iPhone/iPad version - so this will drastically reduce development time. The Watch is how I use Skip and Save and the Watch is probably how I will use my future apps.<br />
<br />
But for now I have a game to make :-)<br />
<br />
- JohnnoPassfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-9423735650939944842018-01-24T04:58:00.000-08:002018-01-24T04:58:21.054-08:00Skip and Save launchToday my first non-game app, Skip and Save, launched on the App Store.<br />
You can <a href="https://itunes.apple.com/us/app/skip-and-save/id1318698486?mt=8" target="_blank">download it from the App Store here</a>.<br />
<br />
To be honest, I have no idea how it will fair, or if anyone will be able to find it. I did a lot of research into app marketing - I followed sites that review apps, listened to app developer and app marketing podcasts and tried to understand the app market place. But it's still a new world for me and quite different to games.<br />
<br />
Making the app was a lot of fun, so I would love for it to have some success to give me encouragement to make more apps. We'll have to wait and see how it goes. Expect a blog post on how the market perceived it in a month or two :-)<br />
<br />
In the meantime, Pete and I are making progress on Billy Carts. I've been reworking the Track Manager code that builds the world around the player as they travel in whatever direction they choose. Will post some more screen shots soon!<br />
<br />
- JohnnoPassfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-13504297421639296872018-01-16T19:04:00.000-08:002018-01-16T19:04:46.530-08:00Billy Carts (Back on Track Part 2)Last year I wrote that I had finally wrapped development on my Ultra Dash game and was diving back into Billy Carts.<br />
<br />
Well, a few other things popped up and in the time between then and now I made a new iPhone/Apple Watch app and put together a major update for Ultra Dash while Billy Carts languished...<br />
<br />
<a href="https://itunes.apple.com/au/app/skip-and-save/id1318698486?mt=8" target="_blank">Skip and Save</a> is my Apple Watch app and will be coming out the 24th of January. It's an app that lets you track skipping treats to help you save for something special. You can pre-order it now by clicking <a href="https://itunes.apple.com/au/app/skip-and-save/id1318698486?mt=8" target="_blank">this link</a>. You can also read my blog post about <a href="http://passfieldgames.blogspot.com.au/2017/12/a-new-watch-app.html" target="_blank">making the app here</a>.<br />
<br />
<a href="https://itunes.apple.com/us/app/ultra-dash/id1059244710?mt=8" target="_blank">Ultra Dash</a> is an arcade endless runner I wrote in Swift. The game didn't set the world on fire, but I felt like there's something fun in the game so I wanted to do one last update to see if it can find it's audience. The update will be out in February.<br />
<br />
Now, with all that out of the way, I can honestly say that <a href="https://twitter.com/petemullinsart" target="_blank">Pete</a> and I are back on track with Billy Carts!<br />
<br />
So, what is Billy Carts you ask?<br />
<br />
Well, it started out well over a year ago as a down hill endless racer, inspired by Faily Brakes. It's our first Unity game together (though not our first game as Pete and I had previously worked on TY the Tasmanian Tiger, Flight of the Amazon Queen and other games in the past) and we wanted to make something fun and distinctly Australian.<br />
<br />
But now that we've had some time away from it (and with an improvement in my Unity skills and confidence) we've decided to change the game play a bit while still retaining the unique Aussie theme and racing elements.<br />
<br />
So with the start of the new year Pete and I have ripped the game apart and reset it to make it something a bit more unique. My goal is to share our process of building the game and to do more frequent and smaller blog posts to show off our progress.<br />
<br />
The first thing we've done is to change the environment from an endless down hill runner into an endless open world explorer. Previously the game created a series end to end tracks that appeared in front of the player - now we're using a 3x3 grid of square titles to create an open space that reforms around you as you race around the world.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkAxbpVQ8Mc5DXnj9F8wRusTQXD-cK20nJPwsNc9qMBO5oNdTCPhrUfWgM3kb0EYivdPR67Tyngt12Nt-rVunUHvaqRPei31Sga327iRxAPXgcIciGHF98zV8BeCntfw8e8BwF/s1600/Screen+Shot+2018-01-16+at+9.21.14+pm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkAxbpVQ8Mc5DXnj9F8wRusTQXD-cK20nJPwsNc9qMBO5oNdTCPhrUfWgM3kb0EYivdPR67Tyngt12Nt-rVunUHvaqRPei31Sga327iRxAPXgcIciGHF98zV8BeCntfw8e8BwF/s320/Screen+Shot+2018-01-16+at+9.21.14+pm.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">First pass of 3x3 grid that is built around the player.</td></tr>
</tbody></table>
And this is how it looks in game. There are no props yet - I took out the trees, rocks, etc. to focus on the track generation.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKtJG853Y-EH9ko3bTCvjhf_0tYqKzug0SZebSLHbVTV2HQWWrtYKt2hFa3aXXykW6aGewCufpuutCgKCRnU5z7qvqh7FMzTmMfwd577iIJlfVykeAwOAt8OHGPMkoB6RCj6Dz/s1600/Screen+Shot+2018-01-14+at+10.47.38+pm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKtJG853Y-EH9ko3bTCvjhf_0tYqKzug0SZebSLHbVTV2HQWWrtYKt2hFa3aXXykW6aGewCufpuutCgKCRnU5z7qvqh7FMzTmMfwd577iIJlfVykeAwOAt8OHGPMkoB6RCj6Dz/s320/Screen+Shot+2018-01-14+at+10.47.38+pm.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Open world with new skybox.</td></tr>
</tbody></table>
One thing I want to do is to try out new stuff as we build the game, so the design is fairly light on. It's procedural and you collect stuff while avoiding obstacles and rack up a score - but what else can be done to make it feel great? This is what I aim to find out. I'm sure there will be a lot of missteps and travelling down the wrong path, but that's the fun of making games, right?<br />
<br />
As well as the development work-in-progress updates I'd also like to talk about some of the decisions we've made in developing the game. In particular the Australian aspect of the game. As I mentioned both Pete and I worked on the TY series (I co-created, designed and wrote the script) and I have an affinity for making Aussie games. I feel like there is so much richness to explore, but I've only made two Aussie games and want to make more. This is something I'd love to talk more about.<br />
<br />
I hope you'll join Pete and I as we try and make a fun game!<br />
<br />
- Johnno<br />
<br />
<br />Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-47565235783007460942017-12-03T05:52:00.000-08:002018-01-12T03:24:42.054-08:00A New Watch App[UPDATE: You can pre-order/download Skip and Save here - <a href="https://itunes.apple.com/au/app/skip-and-save/id1318698486?mt=8" style="font-family: Helvetica; font-size: 12px;">https://itunes.apple.com/au/app/skip-and-save/id1318698486?mt=8</a>]<br />
<br />
I upgraded from my 3 year old Series 0 Apple Watch to the new Series 3 with LTE and I love it. Having worn the original Watch for the last 3 years I've noticed huge improvements in speed and accuracy (especially Siri) with the new model. The heart rate sensor has improved, the battery life is amazing even when it gets a hammering from workouts and phone calls.<br />
<br />
Anyway, I was so smitten I had to make something for it.<br />
<br />
As I've mentioned before I'm developing all my games in Unity from now on. It makes sense as a) I can go multi-platform, b) there is so much more support/tutorials/help available for Unity and c) it makes 3D development so much easier.<br />
<br />
But an app is different to a game, so I feel I'm technically not breaking my promise to myself to focus on Unity for game development :-)<br />
<br />
So what is this app? It's called Skip and Save and comes out of my habit of giving up the occasional treat and making a mental note that I just saved money in order to buy something else at a later date. I know, it's a dodgy way of budgeting, but it works for me.<br />
<br />
I figured this would be a good process to make into an app and it seemed perfect for the Watch where the ideal apps are very limited interactions that take no more than a few seconds.<br />
<br />
<b>Building the Watch App</b><br />
The Watch app development environment in Xcode is really nice. And laying out an app is super easy - so much easier than laying out an iPhone app as I would later discover.<br />
<br />
You know have the ability to mix SpriteKit and SceneKit with regular screens. I used this to add ticker tape particle effects when you successfully skip and save money, and cool firework effects when you reach your goal.<br />
<br />
I wanted to use as much of the Watch as I could, so I added in Siri voice recognition, Scribble support and support for all the different complications that the Watch has. I also made sure that the Watch could communicate back and forth with the iPhone version.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6NLr8K4EJQNeDKpkFPFgXc8sU0QOmmyDzDYDyZpFruvZqSSypki_GN2CD9m_Xe6SGWezBOuv9q1KeltS_xKWMIZKYoiDtpnSjn8Nhm0CwFhujeuUlhvRxauAd7TGrXZbrLIbM/s1600/IMG_6087.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6NLr8K4EJQNeDKpkFPFgXc8sU0QOmmyDzDYDyZpFruvZqSSypki_GN2CD9m_Xe6SGWezBOuv9q1KeltS_xKWMIZKYoiDtpnSjn8Nhm0CwFhujeuUlhvRxauAd7TGrXZbrLIbM/s320/IMG_6087.jpg" width="256" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">An early Watch build with a bar to show progress,</td></tr>
</tbody></table>
<div style="text-align: justify;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzfjEebF8Q3wrnwc_CwFEFRssSKNkFcCg449Lo3_OZsB6J63DRCgmt0MwobWUqCN1ZGwThyJk6Ef8M2zoiBG_Bb_3iSwtj1NT_URXyjSxwSAGpR1TaMyKalqGuh5fxp_LMf8aY/s1600/IMG_6096.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzfjEebF8Q3wrnwc_CwFEFRssSKNkFcCg449Lo3_OZsB6J63DRCgmt0MwobWUqCN1ZGwThyJk6Ef8M2zoiBG_Bb_3iSwtj1NT_URXyjSxwSAGpR1TaMyKalqGuh5fxp_LMf8aY/s320/IMG_6096.jpg" width="256" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">An updated version with a ring to show progress.</td></tr>
</tbody></table>
<div style="text-align: justify;">
<br /></div>
The first version of the app used force touch to access the options to setup your savings targets and to reset progress or undo a skip. From my own experience with other Watch apps I found this to be very unintuitive and often hid away key features. So I tried having a paged app that the user could swipe to other pages to see more commands. This didn't feel good in practice either.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfhAX0f_MAlN2MbqQsS8W21GYvI06npBScWmZZx7SVkMwRsqase59CRht4iYMChjrEW2UOhrXXQXta758IBfa74IaeXIzEGloPFK-3skhmPv5myG1VCBPBx8t-bM5CpYMI-5t7/s1600/IMG_6245.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfhAX0f_MAlN2MbqQsS8W21GYvI06npBScWmZZx7SVkMwRsqase59CRht4iYMChjrEW2UOhrXXQXta758IBfa74IaeXIzEGloPFK-3skhmPv5myG1VCBPBx8t-bM5CpYMI-5t7/s320/IMG_6245.jpg" width="256" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The final look of the Watch app. A single screen.</td></tr>
</tbody></table>
<br />
I settled on having a single screen app with buttons on screen to show more options to set targets, undo skips and reset progress and another information button to quickly see your targets.<br />
<br />
I also tried out a number of images for the buttons and settled on a mixture of my own designs and those from the<a href="https://fontawesome.com/" target="_blank"> Font Awesome 5</a> set.<br />
<br />
<b>Building the iPhone App</b><br />
As much as I love my Watch, the reality is the market for Watch only apps is still fairly small, so I needed to make an iPhone companion app. So I began the fun task of using Xcode and interface builder to create the app.<br />
<br />
Storyboards for Watch apps are awesome. The way stack panels work is great, and you can overlay controls and even add a SpriteKit/SceneKit scene under a view - which lets you create some great layouts that can do awesome stuff in a simple and intuitive way.<br />
<br />
The iPhone version is a little more complicated. I couldn't mix SpriteKit and standard views so had to rely on Core Animation to create the effects I had previously done in SpriteKit. So the knowledge I had from making games sadly couldn't be applied which meant I spent time having to learn new systems.<br />
<br />
I also found creating responsive views a lot more complicated than in WatchKit and struggled with simple things like making my stack view contents remain at a fixed size. I'd end up with a mess of constraints that I would have to delete and start over again. Luckily <a href="http://raywenderlich.com/">RayWenderlich.com</a> released a <a href="https://www.udemy.com/ios-and-swift-for-beginners-200-hands-on-tutorials/" target="_blank">Udemy version of their training videos</a> which included sections covering the very stuff I was struggling with - like stack views and how to use keyboards with scroll views.<br />
<br />
One thing I did do with the iPhone app was to use vector images instead of pngs. They worked out really well, so I went back and updated the Watch to use vectors as well.<br />
<br />
The original iPhone app had a light design.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfCYYwMgGKYbTQ4hWjpHCXlfBqAkEEqqLaW28Ql0SweZcHUDhovpTti6rpwQYDP_PqXYFZPcQP75ZSVaIFe_ylBVtVfU5Hi9uOUvsjyvGm1Sq410HCxBABewDP9iFhRkeu322A/s1600/IMG_0017.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfCYYwMgGKYbTQ4hWjpHCXlfBqAkEEqqLaW28Ql0SweZcHUDhovpTti6rpwQYDP_PqXYFZPcQP75ZSVaIFe_ylBVtVfU5Hi9uOUvsjyvGm1Sq410HCxBABewDP9iFhRkeu322A/s320/IMG_0017.jpg" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Original iPhone design</td></tr>
</tbody></table>
<br />
<br />
I asked for some feedback on social media and got some great advice. <a href="https://twitter.com/BrentHeslop" target="_blank">Brent Helsop</a>, a local developer gave me some great feedback and so the final version changed to better match the visual style of the Watch version.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjAcLvxlulZ6lfSgs45yVKzkwgRaIQ7yUYiW7zLLk2tUloZ1RFV06Ojt_T8eoNxsLeRBI27Bwlg7j5FTQ_4Tz4Vf-7xYD1yMFpXI4IPXrcPDTzO_qcwNzn-NbG9wXGbQuv0t4H/s1600/Image-1.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjAcLvxlulZ6lfSgs45yVKzkwgRaIQ7yUYiW7zLLk2tUloZ1RFV06Ojt_T8eoNxsLeRBI27Bwlg7j5FTQ_4Tz4Vf-7xYD1yMFpXI4IPXrcPDTzO_qcwNzn-NbG9wXGbQuv0t4H/s320/Image-1.jpg" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Final look iPhone version</td></tr>
</tbody></table>
<br />
<b>Time Spent</b><br />
I worked on the app part time - spending up to 2 hours on any given day on it. I had a fully working version on my Watch within 8 days.<br />
<br />
All up it took me 34 days of part time development to build the app - 10 days for the Watch (2 of that learning how to make complications), 22 for the iPhone and 2 days for iTunes Connect setup, screen shots and asset creation.<br />
<br />
<b>Launching It</b><br />
The next stage of the story is how do I market it and what do I charge for it?<br />
<br />
I've devoured the complete series of <a href="https://itunes.apple.com/us/podcast/under-the-radar/id1055685246?mt=2" target="_blank">Under the Radar podcasts</a> for some ideas as well as read lots of articles from other app developers. Being a game developer I have very little idea of how the app world works and these resources have been invaluable.<br />
<br />
I've decided to price the app as free with banner ads from AdMob. I did try out interstitial ads (which I know do way better than banners) but it just felt wrong. They work well in games, but in my app they were too intrusive. My thinking on going free is that the people who want to give up something to save money are probably not the sort of people to shell out real money on an app that they've never heard of before. So being free gives them a chance to give it a shot.<br />
<br />
With the app done and price set to free I have to reach out to the folks who would love to use my app. That starts now as I wait for the app to launch early in January 2018.<br />
<br />
The good news is I can get back to making games in Unity while I do my app marketing.<br />
<br />
I'll let you all know when Skip and Save is live in the new year!<br />
<br />
-Johnno<br />
<br />
<br />Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-46380997591566789192017-05-01T05:46:00.000-07:002017-05-01T05:46:47.339-07:00Learning UnityI've been slowly wrapping my head around Unity. As I posted last month I took some time off developing Billy Carts to do a number of Unity tutorials and learn more about C# and the Unity way of doing things.<br />
<br />
Things are progressing well and I'm starting to "get" Unity. My biggest problem at the moment is not knowing if they way I am solving a problem or implementing a system is the right way or the best way. The Unity tutorials, forums and google are certainly a help and I realise that I just have to plough forward and make stuff. I can always refactor my code later :-)<br />
<br />
To help in my quest in getting a full understanding of Unity I've taken some advice from an old friend and am building a small game in Unity that is essentially a homage to an already existing game. Not quite a clone, but a game that has a very specific set of mechanics that I can emulate.<br />
<br />
The reason for this is that I don't have to think about the game design and can focus on solving how to implement the mechanics and systems using Unity. Not having to think about the design of a mechanic but instead focus on implementing it is really accelerating my learning.<br />
<br />
The game is simple and I've got the first stages of it up and running. I've given myself just over a month to complete it - which will probably end up being many times longer - but the goal is to take a game from start to finish so I can be exposed to as much Unity has to offer as I can.<br />
<br />
I'll post some screen shots and more details soon!<br />
<br />
- JohnnoPassfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-84233991324700346712017-04-10T05:44:00.001-07:002017-04-10T05:44:43.011-07:00A Unity RefresherThis week I decided to take some time off developing Billy Carts to focus on honing my Unity skills and learn more about the Unity editor. I have to admit I'm quite rusty from the time I spent away from Unity focusing on finishing up Ultra Dash, my Swift game.<div>
<br /></div>
<div>
And, despite having made quite a few games in my time, I'm not too proud to admit that I have a bit to learn still when it comes to Unity!!<br /><div>
<br /></div>
<div>
So, rather than slogging on with Billy Carts and constantly googling "how do I do this in Unity again?" I've taken on the task of redoing some tutorials and going over some Unity resources.</div>
<div>
<br /></div>
<div>
As well as the <a href="https://unity3d.com/learn/tutorials" target="_blank">excellent tutorials on the Unity site</a>, I've also started redoing the tutorials from <a href="https://www.udemy.com/unitycourse/learn/v4/overview" target="_blank">Ben Tristem's Learn to Code by Making Games course on Udemy</a>.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-UzZldA9neEuYqZgeubR6k0BWbCZaErn_akHnchf1ATTynoFa_LRmfGdA1A28jcfg8LPO6UZ9XRVc_vn5hFTxjsP3s-iTzFV1K2lwEOo4YuclHxm8eW0kUZAPXLKvMx7E3U1Y/s1600/Screen+Shot+2017-04-10+at+10.30.04+pm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-UzZldA9neEuYqZgeubR6k0BWbCZaErn_akHnchf1ATTynoFa_LRmfGdA1A28jcfg8LPO6UZ9XRVc_vn5hFTxjsP3s-iTzFV1K2lwEOo4YuclHxm8eW0kUZAPXLKvMx7E3U1Y/s320/Screen+Shot+2017-04-10+at+10.30.04+pm.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Easy to follow video tutorials that will get you up and running in no time.</i></td></tr>
</tbody></table>
<div>
<br /></div>
<div>
I'll also be revisiting his <a href="https://www.udemy.com/gamephysics/learn/v4/overview" target="_blank">Game Physics - Introducing Gravitation & Rotation in Unity</a> course to get the physics parts of my brain back into shape.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY2jaZmYjJX9Twy9guREMRaZZ74pVoQJ_6Ix5LHYt_gmQcPoSHDy5B9jV0B8cCISfiWjNAcyxBmOKy6HawtiwDZmBPHB4KkvFWZmhI4F90r9Y_uQ7EB8zg5EpCW1DfmECT1ocU/s1600/Screen+Shot+2017-04-10+at+10.41.30+pm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="309" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY2jaZmYjJX9Twy9guREMRaZZ74pVoQJ_6Ix5LHYt_gmQcPoSHDy5B9jV0B8cCISfiWjNAcyxBmOKy6HawtiwDZmBPHB4KkvFWZmhI4F90r9Y_uQ7EB8zg5EpCW1DfmECT1ocU/s320/Screen+Shot+2017-04-10+at+10.41.30+pm.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>A great course to get your head around physics.</i></td></tr>
</tbody></table>
<div>
<br /></div>
<div>
Redoing these tutorials is not only giving me a quick refresher in Unity but it's also exposing me to things I missed the first time around - like neat little short cuts and useful keyboard commands.</div>
<div>
<br /></div>
<div>
My other source of reference for the next few days is the excellent <a href="https://store.raywenderlich.com/products/unity-games-by-tutorials" target="_blank">Unity Games by Tutorials</a> by the <a href="http://raywenderlich.com/">raywenderlich.com</a> tutorial team. </div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img alt="Unity Games by Tutorials book cover" id="main-artwork" src="https://files.kerching.raywenderlich.com/uploads/5a4c4dc1-314e-47e5-bf19-4cc595ca1bff.png" srcset="https://files.kerching.raywenderlich.com/uploads/5a4c4dc1-314e-47e5-bf19-4cc595ca1bff.png 1x, https://files.kerching.raywenderlich.com/uploads/642e5311-b747-4c54-bb49-4f12d807eacc.png 2x, https://files.kerching.raywenderlich.com/uploads/642e5311-b747-4c54-bb49-4f12d807eacc.png 3x" style="margin-left: auto; margin-right: auto;" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>These are great books to make sure you get off on the right foot.</i></td></tr>
</tbody></table>
<div>
Ray Wenderlich makes some great books that you can either buy as books or as PDFs and the cool thing is they actually update them as things change. The Unity Games book for example, has recently been updated to take into account new stuff in Unity 5.5. </div>
<div>
<br /></div>
<div>
While I like to have physical books as reference next my computer to leaf through, the knowledge that the PDFs won't be out of date within a few months is a good consolation.</div>
<div>
<br /></div>
<div>
What are your favourite Unity learning resources? </div>
<div>
<br /></div>
<div>
Any must have books or online courses that make learning Unity a breeze? </div>
<div>
<br /></div>
<div>
Let me know!</div>
<div>
<br /></div>
<div>
-Johnno</div>
<div>
<br /></div>
<div>
<br /></div>
</div>
Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-71884462863463364452017-04-06T05:29:00.001-07:002017-04-06T05:29:23.179-07:00Back on Track!So, Ultra Dash is done and dusted. Its approved for the App Store and is waiting for release on the 12th of April. I managed to do a few more minor tweaks in the last week, adding back the watch video functionality that I had removed previously. I figured that launch time is when I'll get most traffic and it would be stupid of me to not have the option to let players watch videos to earn coins and unlock new characters and levels faster.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNk2RNN8p-gpikqGLpxW3nHd55mGCarzcuY9GDOBe01FzoHm19e6txw7jHoFpXwBWydI1KryuWo1SlUTLkX_TTBFogW_E2kxNt4KTwz6XQ8aeAKn53_lT0nyS-PSviXE_mMeWu/s1600/btnWatchVideo.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNk2RNN8p-gpikqGLpxW3nHd55mGCarzcuY9GDOBe01FzoHm19e6txw7jHoFpXwBWydI1KryuWo1SlUTLkX_TTBFogW_E2kxNt4KTwz6XQ8aeAKn53_lT0nyS-PSviXE_mMeWu/s400/btnWatchVideo.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>I added back the ability to watch video ads to earn coins!</i></td></tr>
</tbody></table>
<br />
<br />
I've also done an update to <a href="https://itunes.apple.com/au/app/snappy-word/id1143681780?mt=8" target="_blank">Snappy Word</a>, adding a new game mode and fixing some crash bugs that I found using the crash reports that users submitted.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbgW1IzV5CRSZeOALxQHdBAqemTfm1Kgay4xoI0v4wOILp6b8DgeC2GdhImpmPjvuAjeMzgeHgQMWoWiw26BkZk3b7go3xU8f8-0t0i91OKCmagFcKGl3ZniW5DLT9ZvqYvm39/s1600/Simulator+Screen+Shot+5+Apr+2017%252C+11.08.22+pm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbgW1IzV5CRSZeOALxQHdBAqemTfm1Kgay4xoI0v4wOILp6b8DgeC2GdhImpmPjvuAjeMzgeHgQMWoWiw26BkZk3b7go3xU8f8-0t0i91OKCmagFcKGl3ZniW5DLT9ZvqYvm39/s320/Simulator+Screen+Shot+5+Apr+2017%252C+11.08.22+pm.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Sort mode is a new addition to Snappy Word</i></td></tr>
</tbody></table>
<br />
Now I'm getting used to programming in C# again after using Swift for the last month or two! I'm sure it won't take long to remember to keep adding semi-colons at the end of every line...<br />
<br />
In much the same way that having time away from Ultra Dash helped me look at the game in a new light, having the break from Billy Carts has given me some new thoughts on the game.<br />
<br />
The game play right now is very similar to <a href="https://itunes.apple.com/au/app/faily-brakes/id1063191689?mt=8" target="_blank">Faily Brakes</a> - you steer your cart as it careens down the hill avoiding stuff and collecting coins. It's a fun formula that has <a href="https://twitter.com/Rlan2/status/793339634835009537" target="_blank">done extremely well for Spunge Games</a>!<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi91QvjgSjLu_SBQMH3wQWr41PzfuUDw_Y4DSEoijH7mKOG1YzDQZ0P352V9zE1G6ukr2nS9WCik5Cf_xUQQ1hj-39vWFA6qvDt2uWIxkobEa0LkMuK-meq7OeZyzbIu-zKl1ND/s1600/Screen+Shot+2017-04-06+at+10.19.30+pm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi91QvjgSjLu_SBQMH3wQWr41PzfuUDw_Y4DSEoijH7mKOG1YzDQZ0P352V9zE1G6ukr2nS9WCik5Cf_xUQQ1hj-39vWFA6qvDt2uWIxkobEa0LkMuK-meq7OeZyzbIu-zKl1ND/s320/Screen+Shot+2017-04-06+at+10.19.30+pm.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Billy Carts is currently a down hill runner</i></td></tr>
</tbody></table>
Given the power of Unity and the ability to rapidly prototype stuff and change things like camera angles and lighting it would be remiss of me to not take advantage of this and try out some new ideas.<br />
<br />
First thing I'd like to try is changing the procedurally generated hill to a procedurally generated plane, so instead of just rolling down the hill, how would it feel to drive in any direction? This would change the end game parameters which are currently stay on the track and avoid stuff - and might make the game feel too easy - but it's something I'd like to do.<br />
<br />
I did a prototype of something similar before Christmas and it scared the bejesus out of Pete and myself. The prototype relied on building an entire world (mocked up by grey cubes) which would have meant lots of unique art assets from Pete.<br />
<br />
But in the meantime I've had some ideas on other ways to do it that wouldn't require building an entire unique world - so I'm going to see if this new approach works. It may well suck, but I have to try!<br />
<br />
My approach moving forward with Billy Carts will be to take a more organic approach to trying out stuff, seeing what works and following those "fun" paths. I'm painfully aware of feature creep so I will attempt to stick to the core pillars of:<br />
<br />
<ol>
<li>Avoid stuff</li>
<li>Collect coins</li>
<li>Survive as long as you can to rack up the most points</li>
</ol>
<br />
So please join me us as we go on this slightly altered journey to seek out new fun.<br />
<br />
Given my experience with beta testing using TestFlight for Ultra Dash and Snappy Word, I definitely want to start testing as soon as I have something playable. So if you're keen, send your Apple ID email to <a href="mailto:support@redspritestudios.com" target="_blank">support AT redspritestudios DOT com</a>.<br />
<br />
- Johnno<br />
<br />
<br />Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-22266010448853286612017-03-27T06:16:00.000-07:002017-03-28T04:03:56.759-07:00The Making of Ultra Dash<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXBb1GExNuNA4JzirzgAYCADV2B8v7tcLNOLfzmAsYdQC55du0Kv9FuAOcrOP2uUH9Nr0gTJ3bQ3x0LIeq4uJ5euK0KVQbLhHHXmvhPXTsrAsEFg14psff0aSt2lpHo7dg167v/s1600/characterLineup.png" imageanchor="1"><img border="0" height="80" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXBb1GExNuNA4JzirzgAYCADV2B8v7tcLNOLfzmAsYdQC55du0Kv9FuAOcrOP2uUH9Nr0gTJ3bQ3x0LIeq4uJ5euK0KVQbLhHHXmvhPXTsrAsEFg14psff0aSt2lpHo7dg167v/s320/characterLineup.png" width="320" /></a></div>
<br />
Ultra Dash is a simple endless runner game for iOS that uses a one tap mechanic. Players collect coins while avoiding oncoming obstacles by tapping the screen to change lanes. The coins are used to unlock new characters and also act as a score to compare against friends. Ultra Dash is also playable as an iMessage game.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHPhpW9z1M9vddSha3cuDhHY5XsPISFeCLPETb17CPTGBUrzjVbi1D_xb8bgZmCR4nL_jo_vt6sL_2ieS_oEC6qdUmpiw23QuNFRS5SYsffhQyZtOXdI-b7RDiPckbjEq1cTl5/s1600/Simulator+Screen+Shot+19+Mar+2017%252C+3.41.04+pm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHPhpW9z1M9vddSha3cuDhHY5XsPISFeCLPETb17CPTGBUrzjVbi1D_xb8bgZmCR4nL_jo_vt6sL_2ieS_oEC6qdUmpiw23QuNFRS5SYsffhQyZtOXdI-b7RDiPckbjEq1cTl5/s320/Simulator+Screen+Shot+19+Mar+2017%252C+3.41.04+pm.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Avoid obstacles, collect coins. Simple!</td></tr>
</tbody></table>
<br />
<br />
The game is written in Swift 3 using SpriteKit. I absolutely love Swift. It's an elegant language that is simple to pick up yet packs some real power. I will miss it as I bunker down in Unity for my next project. But C# ain't too bad either :-)<br />
<br />
My goal in making Ultra Dash was to make a simple arcade game and to do the art myself. I was warned by friends (and my daughter) that my art wasn't too hot and that I should hire an artist. But in the end, I figured that I'm making this game for myself and I really want to cover all aspects of development. <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA4uXqffAQ30MBMa6QHS6zDiyecte9GaWHRe3U_I3c8SIC9ox9vGO23fQ7NkvWJ2VWOE_GQoOa0G__AIB1QHx5Cw0VCAoGKWfKlaz-3SMFG4NTI9PKbyyHX5R5AOxHPuYCu9BU/s1600/UD_iMessage.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA4uXqffAQ30MBMa6QHS6zDiyecte9GaWHRe3U_I3c8SIC9ox9vGO23fQ7NkvWJ2VWOE_GQoOa0G__AIB1QHx5Cw0VCAoGKWfKlaz-3SMFG4NTI9PKbyyHX5R5AOxHPuYCu9BU/s320/UD_iMessage.PNG" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Play against friends in iMessage</td></tr>
</tbody></table>
<br />
Well, all aspects except for music. That was provided by <a href="http://ericskiff.com/" target="_blank">Eric Skiff</a> who has some amazing free music that he lets people use in their projects - check out his stuff here <a href="http://ericskiff.com/">http://ericskiff.com</a><br />
<br />
The journey from concept to App Store has been a long one. My initial commit to Bitbucket was back in June 4, 2015. Why the long development time for such a simple game?<br />
<br />
Well, it's been a part-time endeavour that was never a top priority. It got shelved regularly for months at a time due to other commitments - and at one point I decided to call it quits and abandon the project altogether.<br />
<br />
However, it was over the 2016 Christmas break that I decided to revisit the game. The time I had spent away from the project allowed me to look at it with fresh eyes - and it wasn't that bad. So I decided to focus on the core game and finish it for release.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrruAJwIgrYpjjdrEwOZlHro-aRU1YraN3uWuHyK7FoE04AcPqyvcfR108kFqFgKtFiSBiT9pL5EnmMSGl1bRt9cbqJK9ydlJPWKnI6QZK-JkCwPAnWLPl-7LqYb8b7S24Ypy/s1600/UltraDashOriginalMockup.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrruAJwIgrYpjjdrEwOZlHro-aRU1YraN3uWuHyK7FoE04AcPqyvcfR108kFqFgKtFiSBiT9pL5EnmMSGl1bRt9cbqJK9ydlJPWKnI6QZK-JkCwPAnWLPl-7LqYb8b7S24Ypy/s320/UltraDashOriginalMockup.png" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Original mockup for the Start Screen</td></tr>
</tbody></table>
<br />
The original framework was inspired by Crossy Road and the innovative banner system that creators <a href="https://twitter.com/KlickTock" target="_blank">Matt Hall</a> and <a href="https://twitter.com/JigxorAndy" target="_blank">Andy Sum</a> created. Crossy Road did a great job in presenting the player with different options every time the player died - constantly surprising them with new choices such as rating the game, watching a video to earn coins, winning a prize, winning a character or giving them stats on how long until they can earn more coins.<br />
<br />
After taking my hiatus and reviewing the game I decided not to follow that model. I ripped out the banner system, removed the coin machine and made the act of buying new characters all done from the start screen. And each character offers a different background and level layout.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivF9xvsfHt8IuKUMkpWx26RLFqaYYIBo7vwViZbbDtcYvErtA-wn_SATtgQYq8rQkR5iBRaKeWFNv7-VG9r3h_gL9-KesraPx1tA4i5TwH8Ce4tZFiv13Uc8fxCZv-3Z7phxud/s1600/Simulator+Screen+Shot+19+Mar+2017%252C+3.32.12+pm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivF9xvsfHt8IuKUMkpWx26RLFqaYYIBo7vwViZbbDtcYvErtA-wn_SATtgQYq8rQkR5iBRaKeWFNv7-VG9r3h_gL9-KesraPx1tA4i5TwH8Ce4tZFiv13Uc8fxCZv-3Z7phxud/s320/Simulator+Screen+Shot+19+Mar+2017%252C+3.32.12+pm.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">How the start screen ended up</td></tr>
</tbody></table>
<br />
I also made a conscious decision to remove as much English text as I could, instead using emoji to tell communicate to the player.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPjzIMLaPOjdq8HV9nVoKVgJG7Stwig9pcAOLVWLKlo7Fujejcxhd5Zi3PIEyHpo9NfNe9cZJh0dQqc7RquWQRTw7R01lfyyrxXBIH9LYBV0slTVNBIA7ZKVYFZIo4xf3MfW-b/s1600/FullSizeRender.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPjzIMLaPOjdq8HV9nVoKVgJG7Stwig9pcAOLVWLKlo7Fujejcxhd5Zi3PIEyHpo9NfNe9cZJh0dQqc7RquWQRTw7R01lfyyrxXBIH9LYBV0slTVNBIA7ZKVYFZIo4xf3MfW-b/s320/FullSizeRender.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">When you die you get sad emojis... kind of like cartoon swear words!</td></tr>
</tbody></table>
<br />
<div>
<br /></div>
As well as the framework I also simplified the control scheme and the core game loop.<br />
<br />
The initial prototype was all about ducking under and over oncoming obstacles in one of 3 lanes while moving left/right to avoid those obstacles that were too tall to jump over.<br />
<br />
I experimented with a number of control schemes including left/right and jump buttons, twin touch (where you tap both finger to jump), release touch controls like the awesome <a href="https://itunes.apple.com/au/app/shredd/id844153422?mt=8" target="_blank">SHREDD</a> where you hold both sides to go straight in the center and release one side to move to that side.<br />
<br />
Here are some of the option buttons I used to try out each of the different combinations of controls and lanes:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdppmpdGD0_HfZ7eik9bUaqelP6su0KYXqerToLw9jsj38HgTOtYMhVg8qOCw6kCmDaiug_YI4DTf65meAcSABoh2o7XIbay7pWQDwfKmciOqjhyphenhyphenb8OSCcqJCiens5HaLVfJqq/s1600/btn2Lane1Tap.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdppmpdGD0_HfZ7eik9bUaqelP6su0KYXqerToLw9jsj38HgTOtYMhVg8qOCw6kCmDaiug_YI4DTf65meAcSABoh2o7XIbay7pWQDwfKmciOqjhyphenhyphenb8OSCcqJCiens5HaLVfJqq/s200/btn2Lane1Tap.png" width="199" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I tried a lot of control scheme</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimIioN5shpZPsQWFvlvB9mf_N076A_R2ov2Ikej_oknYMUdykB8scKGt4cTg9l3BWD2gmcISnykFjKN7w3kXlpZHIO0JxYbsZcLGgr982OQZt3w8AiI6SbRwtzRMaB0qOU7TZn/s1600/btn2LaneSwipe.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimIioN5shpZPsQWFvlvB9mf_N076A_R2ov2Ikej_oknYMUdykB8scKGt4cTg9l3BWD2gmcISnykFjKN7w3kXlpZHIO0JxYbsZcLGgr982OQZt3w8AiI6SbRwtzRMaB0qOU7TZn/s200/btn2LaneSwipe.png" width="199" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">And different level layouts</td></tr>
</tbody></table>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdppmpdGD0_HfZ7eik9bUaqelP6su0KYXqerToLw9jsj38HgTOtYMhVg8qOCw6kCmDaiug_YI4DTf65meAcSABoh2o7XIbay7pWQDwfKmciOqjhyphenhyphenb8OSCcqJCiens5HaLVfJqq/s1600/btn2Lane1Tap.png" imageanchor="1"></a><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD6PUIU7BtKLrG4_MPYJ0p6kR3sDM8eKac8tVYiGMyVwswGiLjbazunNYYjnSIsDqqfmTLMu8AgWjE6bYMKsOYTwMP4rfEVEqanxTGwjjQl0jwos2J525cpQI6YgEKIsHFLd9Q/s1600/btn3LaneSwipe.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD6PUIU7BtKLrG4_MPYJ0p6kR3sDM8eKac8tVYiGMyVwswGiLjbazunNYYjnSIsDqqfmTLMu8AgWjE6bYMKsOYTwMP4rfEVEqanxTGwjjQl0jwos2J525cpQI6YgEKIsHFLd9Q/s200/btn3LaneSwipe.png" width="199" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">And in the end I went with 2 lanes 1 tap!</td></tr>
</tbody></table>
<br />
In the end I opted for a simple one touch control system and 2 lanes so you can play the game single handed. I also removed the ducking/jumping element and the extra tall obstacles. <br />
<br />
For monetisation I settled on showing an interstitial ad after every 5 deaths and a banner ad on the bottom of the screen. I used <a href="https://www.heyzap.com/" target="_blank">HeyZap</a> to mediate my ads and added a Remove Ads button to turn off the banner and the interstitials.<br />
<br />
To buy a new character you have to spend in game coins that you collect. I originally had the ability to watch a video to earn coins but decided to keep the game as simple as possible. At one point I considered adding an option to watch a video to unlock a character, a technique used by <a href="https://twitter.com/folmerkelly" target="_blank">Folmer Kelly</a> in some of his games.<br />
<br />
<b>Testing!</b><br />
<div>
Beta testing with TestFlight has been a godsend. If you don't do external testing then you are missing out on a lot of great feedback. TestFlight and putting the game into the hands of folks has been invaluable. </div>
<div>
<br /></div>
<div>
<b>Wrapping Up</b></div>
<div>
My goal in making this game was to satisfy an itch to program a game and make the art. It may not be the most beautiful game in the world but I have scratched that itch and can now happily move onto the world of 3D and Unity. I will miss Swift though... of course if the game does well I will still be coding in Swift to release updates. Oh, and I also have an Apple TV and MacOS version ready to go...</div>
<div>
<br /></div>
<div>
<b>Lessons Learned</b></div>
<div>
Okay, this isn't a new lesson for me, but it was just a reminder of something I've known for the last 20 plus years. Making games is hard work. Even the simplest, plainest games. They take effort. And there are so many things that make up a game beyond the core mechanic - especially in this day of mobile games and Steam. The little things that eat away at your time like achievements, ad networks, multiplayer coding, cloud storage - all this stuff takes time to research if you don't already know how to do it, time to implement and lots of time to test, fix bugs and retest.</div>
<div>
<br /></div>
<div>
So, to everyone out there that has shipped a game or is in the process of making a game - I have huge respect!</div>
<div>
<br /></div>
<div>
<b>Hopes</b></div>
<div>
One of my hopes for Ultra Dash is that it has the chance to find an audience. I am a bit worried that the art may impact on that chance. Anecdotally any screen shot of Ultra Dash I tweeted would get around 0 favourites while a beautiful 3D Billy Carts screen shots could get up to 20 favourites. People like beautiful games. </div>
<div>
<br /></div>
<div>
This isn't a surprising revelation, but it's easy for people to forget this simple fact. </div>
<div>
<br /></div>
<div>
I'm also keen to see how the removal of English text impacts on the game. Will it be downloaded in countries other than Australia, USA and UK? I'm also keen to see how the banner ads earn compared to the video - I'll be looking at all of this data to help influence how I approach ads and UI for Billy Carts.</div>
<div>
<br /></div>
<div>
Well, that's my 2 cents on making Ultra Dash - it launches on April 12th so I hope you'll download it and check it out.</div>
<div>
<br /></div>
<div>
To wrap up here's a list of stuff I used to make the game.</div>
<div>
<br /></div>
<div>
Thanks for reading!</div>
<div>
- Johnno</div>
<div>
<br /></div>
<b>Development Environment</b><br />
IDE: <a href="https://developer.apple.com/download/" target="_blank">Xcode</a><br />
Language: <a href="https://developer.apple.com/swift/" target="_blank">Swift 3</a> with SpriteKit<br />
<br />
<b>Tools</b><br />
Art - <a href="http://www.pixelmator.com/mac/" target="_blank">Pixelmator</a> and <a href="https://affinity.serif.com/en-gb/" target="_blank">Affinity Designer</a> to create the sprites and icon artwork<br />
Sound - <a href="http://audacity.sourceforge.net/" target="_blank">Audacity</a><br />
Icon Creator - <a href="https://itunes.apple.com/au/app/asset-catalog-creator/id809625456?mt=12" target="_blank">Asset Catalog Creator</a><br />
<br />
Music - <a href="http://ericskiff.com/" target="_blank">Eric Skiff</a><br />
<br />
Version Control - <a href="https://www.sourcetreeapp.com/" target="_blank">Source Tree</a> and <a href="https://bitbucket.org/" target="_blank">Bitbucket</a><br />
Tasks - <a href="https://trello.com/" target="_blank">Trello</a> to keep a list of To Do, Doing and Done tasks<br />
<br />
<b>Knowledge</b><br />
Ray Wenderlich's <a href="https://www.raywenderlich.com/" target="_blank">site</a> and books:<br />
<br />
<ul>
<li><a href="https://store.raywenderlich.com/products/2d-apple-games-by-tutorials" target="_blank">2D Apple Games</a> - for general SpriteKit and game dev learning</li>
<li><a href="https://store.raywenderlich.com/products/ios-10-by-tutorials" target="_blank">iOS 10 by Tutorials</a> - for Message App learning</li>
</ul>
<br />
<br />
Platforms: iPhone, iPad, iPod Touch, Message<br />
Coming Soon: MacOS and TVOS (if the game does okay).<br />
<div>
<br /></div>
Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com2tag:blogger.com,1999:blog-22028176.post-52268100393893950162017-03-04T22:57:00.000-08:002017-03-04T22:57:15.172-08:00ResurrectionIn a previous blog post titled <a href="http://passfieldgames.blogspot.com.au/2016/12/gotta-know-when-to-hold-em-know-when-to.html" target="_blank">Gotta know when to hold 'em, know when to fold 'em, know when to walk away</a> I wrote about knowing when to stop working on a project.<br />
<br />
It's okay to step back and focus on something else and not feel the pressure of having to see a project through to completion. There's no shame in shelving a project until the conditions are right.<br />
<br />
Last year I shelved a 2D endless runner I was working on. It didn't quite have the appeal I was hoping for, and despite being 90% done I couldn't see a way that I could really improve it.<br />
<br />
Well, thanks to some down time from Billy Carts during the holiday vacation, I had the chance to go back to the project and try out some ideas that had been percolating in the back of my mind. I had recently relaunched <a href="https://itunes.apple.com/au/app/snappy-word/id1143681780?mt=8" target="_blank">Snappy Word</a> so that it worked with iMessage. Being able to play inside the iMessage app added a lot to the simple word game. I thought about doing the same with the endless runner so decided to use the time to try it out.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsos1lP1vSyQuIZAoV5KXXhwizFsJnGnrahtpeH18EMxQr1w-MNMcqGdaRMTA9HNPo4nOCVLVGEsV79gOTIWo9FbFGvSBkV6N1cFqLNau5rHVhRqCJKPoU1WPSxWYa87k9ibrC/s1600/IMG_1715.PNG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsos1lP1vSyQuIZAoV5KXXhwizFsJnGnrahtpeH18EMxQr1w-MNMcqGdaRMTA9HNPo4nOCVLVGEsV79gOTIWo9FbFGvSBkV6N1cFqLNau5rHVhRqCJKPoU1WPSxWYa87k9ibrC/s320/IMG_1715.PNG" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Ultra Dash running in iMessage</td></tr>
</tbody></table>
Being able to challenge a friend with iMessage added that something that was missing. However, I decided to do some more reworking of the core game with the intent of making it a lot simpler.<br />
<br />
I pared down the user interface by combining the character selection screen with the main menu. I removed all English language text replacing everything with universal icons. I removed the earn coins functionality and the random prize boxes, as well as the share functionality. Because it's an iMessage app this is how I want people to share.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGaqOLYPDTsWuRM7RDC_GnG0lnHHj318uc8-KbW7OYB9CItQWfGzEJtq7HeNa6w3MhQ1uD93ZV0lrYGaaJTu6vpiY5JOrzE96aeaumtns5OO-R35a3Y7xJPxVKLgSTVehs2BzW/s1600/IMG_1710.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGaqOLYPDTsWuRM7RDC_GnG0lnHHj318uc8-KbW7OYB9CItQWfGzEJtq7HeNa6w3MhQ1uD93ZV0lrYGaaJTu6vpiY5JOrzE96aeaumtns5OO-R35a3Y7xJPxVKLgSTVehs2BzW/s320/IMG_1710.PNG" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Main Screen/Player Select</td></tr>
</tbody></table>
<br />
I also stripped out some unnecessary collectables and objectives paring the game down into a straightforward score chaser.<br />
<br />
I ended up keeping the original programmer-art graphics because, well, they've grown on me. Billy Carts has amazing 3D art and because this is probably my last 2D game I might as well make it as personal as possible :-)<br />
<br />
The game will be launching soon on iOS and now it's time for me to get back to Billy Carts - so expect some more 3D game goodness blog posts soon!<br />
<br />
-Johnno<br />
<br />Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-26079524136087338522017-02-20T04:41:00.000-08:002017-02-20T04:41:09.240-08:00John's Cartoons ReturnsToday's blog post isn't a game development related post but it does involve HTML and CSS coding with some Bootstrap.<br />
<br />
I'm going to talk about updating my old comics web site <a href="http://www.johnscartoons.com/" target="_blank">johnscartoons.com</a>. I created the site way back in 2002, which is 15 years ago now... man, that sounds like a loooong time ago. Anyway, the site was where I published a whole bunch of my cartoons that I made during my *cough* younger years. A few years ago the site got out of synch and stopped pointing to the right sever, or something like that - internet stuff has never been my strong suit :-) But I decided enough was enough and figured it was time to work out what the problem was and use the site as a great little project to apply my new JavaScript skills (step 1 is to get the site back up, step 2 will be JavaScript - so don't expect much at the moment).<br />
<br />
So as you may have guessed I used to draw single panel gag strips and write comics back in the nineties while I was making games. In fact, after I quit my original day job around 1992 I actually supplemented my savings by selling the occasional gag strip and co-writing a comic series with Pete Mullins.<br />
<br />
So while I was programming/designing/writing Flight of the Amazon Queen and designing Halloween Harry I was writing and drawing comics for money. Not a lot of money, but enough to cover rent.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNeDFyfaluiJN3UnBrZWMB6Dbxz4jfK7tUOjTSS9swWgvaBd4WRFGml-tQcnPA399NujvP3290YTGz3gE8WRxxNxF9NqLpaiMKpkv9RHAHawO5QELXXtxvqlVOmq_gLWpHvKhT/s1600/color033.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="311" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNeDFyfaluiJN3UnBrZWMB6Dbxz4jfK7tUOjTSS9swWgvaBd4WRFGml-tQcnPA399NujvP3290YTGz3gE8WRxxNxF9NqLpaiMKpkv9RHAHawO5QELXXtxvqlVOmq_gLWpHvKhT/s320/color033.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
Yes, they are kinda corny - I was influenced a lot by Gary Larson's The Far Side single panel strip.<div>
<br /><div>
Anyway, I've set up the site again and built it with some basic HTML and CSS using Bootstrap. Previously I had used some drag and drop web site builders - but now I can go crazy and test out my JavaScript skills to do some interesting stuff.</div>
<div>
<br /></div>
<div>
I have a big backlog of cartoons, so I'll try and update the site with new "old" strips every week and slowly build the site out as I learn new stuff.</div>
<div>
<br /></div>
<div>
At the moment the site only has 12 cartoons and the links in the menu bar don't go anywhere, but they will soon.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA6EIVduaHLFKRJ1YUCxByb5AkdJokPe8l7pulc0YzeXWBSIagAaEXp79YoaVHAIoP1S_Zc2J2JJ23r2FH3SAyQLv4Oa36gx0LYHFCTVaOygCuUh_N4P7lHM2SfaUhzUkHeV4X/s1600/color026.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="289" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA6EIVduaHLFKRJ1YUCxByb5AkdJokPe8l7pulc0YzeXWBSIagAaEXp79YoaVHAIoP1S_Zc2J2JJ23r2FH3SAyQLv4Oa36gx0LYHFCTVaOygCuUh_N4P7lHM2SfaUhzUkHeV4X/s320/color026.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
Anyway, if you're keen to see more, head over to <a href="http://www.johnscartoons.com/">www.johnscartoons.com</a>. Be warned, as well as being corny some can be a little rude.<div>
<br /></div>
<div>
Enjoy!</div>
<div>
<br /></div>
<div>
- John</div>
<div>
<br /></div>
<div>
<div>
<br /></div>
<div>
<br /><div>
<br /><br /></div>
</div>
</div>
</div>
Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0tag:blogger.com,1999:blog-22028176.post-56005335316304416972017-01-23T04:52:00.000-08:002017-01-23T04:52:12.504-08:00Visiting the Upside-DownOne of my non-game projects has led me into the Upside-Down - the world of full stack web development.<br />
<br />
For many of you web development is the norm and the world of game development with Unity3D, Unreal, Xcode, etc. is an alternative reality, but for me the world of web development is both overwhelming and exhilarating.<br />
<br />
My last venture into web development was with 3 Blokes Studios doing Facebook games. Back then we used Flash/ActionScript to write our front end and PHP for our backend. The games I worked on included Hospital Town, Virtual Villagers and Galactic Allies.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8OQRsy_aFphYsM8cvLUqGPe1F1t9AIbkv5O6lNfBysEBi9BehzurG9caebwWRsJfzLnaCqf4CkidN13dx84-qFb_IoYfCh6hB1XrF3NQQVXdUjew3ZSoYq3yvmSu-pfd53pK7/s1600/virtual-villagers-huge-island.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="215" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8OQRsy_aFphYsM8cvLUqGPe1F1t9AIbkv5O6lNfBysEBi9BehzurG9caebwWRsJfzLnaCqf4CkidN13dx84-qFb_IoYfCh6hB1XrF3NQQVXdUjew3ZSoYq3yvmSu-pfd53pK7/s320/virtual-villagers-huge-island.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Virtual Villagers on Facebook</i></td></tr>
</tbody></table>
While I'm still getting my head around all of the front end and back end tools, I must say I am very impressed with the technology available. It's so easy to be stuck in the bubble of game development and work solely within the realms of Unity3D and C#, or focus one hundred percent on iOS development and Swift/Objective C. Sometimes the web raises its scary head but its usually (at least for me) in the shape of trying to set up a Wordpress page.<div>
<br />
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmda8ld56jxS-4H-K5PQTZd3CNfGkYNedvT6Y9WAPkUYNeOL1SCc-F2hGBHRkBnfNS9yj0569dlHziLzaSs5PQtFGeMSB-DHdaeGq6dvvT_Z4JXd62NyeghuMuT5KpFkX_FTJH/s1600/Galactic-Allies.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmda8ld56jxS-4H-K5PQTZd3CNfGkYNedvT6Y9WAPkUYNeOL1SCc-F2hGBHRkBnfNS9yj0569dlHziLzaSs5PQtFGeMSB-DHdaeGq6dvvT_Z4JXd62NyeghuMuT5KpFkX_FTJH/s320/Galactic-Allies.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Galactic Allies on Facebook</i></td></tr>
</tbody></table>
<div>
But I've been lucky to dip my toe back into the web.</div>
<div>
<br /></div>
<div>
My experience so far has been limited to HTML, CSS and JavaScript with <a href="http://getbootstrap.com/" target="_blank">Bootstrap</a> to make some truly sexy front ends. For those unaware, Bootstrap is a front-end only framework that was originally known as Twitter Blueprint. It provides a bunch of re-usabel components that make building a web front end super easy and helps maintain a consistent and professional look.</div>
<div>
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZu3K6Rz1sW-5ZfQQGvWlMH7bzpTHw2TFU6dlhm7yw3tiGaY7DkfFR55uNKb7m8WwhDcki1pfTmOB-k6_QDgPdaI0be7kxlOlasM501s6FmY6Z_kkOZ-LiB844pl_phkESxmAs/s1600/games-2020-hospitaltown02_0.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZu3K6Rz1sW-5ZfQQGvWlMH7bzpTHw2TFU6dlhm7yw3tiGaY7DkfFR55uNKb7m8WwhDcki1pfTmOB-k6_QDgPdaI0be7kxlOlasM501s6FmY6Z_kkOZ-LiB844pl_phkESxmAs/s320/games-2020-hospitaltown02_0.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Hospital Town on Facebook</i></td></tr>
</tbody></table>
<div>
<br /></div>
<div>
I'm still immersing myself into this world and am looking forward to learning more about jQuery, AngularJS, Node.js and React - which are just a few of the many, many other frameworks that help make web dev easier. In fact, the sheer number of options can be overwhelming and it seems like new stuff is appearing all the time.</div>
<div>
<br /></div>
<div>
Just when I thought I had a handle on JavaScript I learn about <a href="http://coffeescript.org/" target="_blank">CoffeeScript</a> (which was used to build <a href="https://trello.com/" target="_blank">Trello</a>) and the new kid on the block, <a href="http://elm-lang.org/" target="_blank">Elm</a>. These are both languages that compile to JavaScript but let you write better code.</div>
<div>
<br /></div>
<div>
It's still early days for me and I have a lot to learn, but I'm having a lot of fun. For anyone interested in finding out more, here are just a few articles/links that friends have shared with me that I've found useful. These are by no means complete - merely scratching the surface - so please let me know ones that I have missed!</div>
<div>
<br /></div>
<div>
<b>Tools</b></div>
<div>
Microsoft Visual Studio Code - <a href="https://code.visualstudio.com/">https://code.visualstudio.com</a></div>
<div>
<br /></div>
<div>
I tried out a bunch of editors including Atom and Sublime Text but I've found Visual Studio Code to be simply amazing. It's free, has loads of <a href="https://marketplace.visualstudio.com/VSCode" target="_blank">extensions</a> and works on Windows, Linux and MacOS. Make sure your grab the <a href="https://marketplace.visualstudio.com/items?itemName=wcwhitehead.bootstrap-3-snippets" target="_blank">Bootstrap 3 Snippets</a> and <a href="https://marketplace.visualstudio.com/items?itemName=robertohuertasm.vscode-icons" target="_blank">vscode-icons</a> extensions and do yourself a favour and learn the <a href="http://docs.emmet.io/cheat-sheet/" target="_blank">Emmet snippets shortcuts</a> (which are built in). These makes writing HTML a breeze!</div>
<div>
<br /></div>
<div>
<b>Languages</b></div>
<div>
JavaScript - <a href="https://www.javascript.com/">https://www.javascript.com</a></div>
<div>
Elm - <a href="http://elm-lang.org/">http://elm-lang.org</a></div>
<div>
CoffeeScript - <a href="http://coffeescript.org/">http://coffeescript.org</a></div>
<div>
<br /></div>
<div>
<b>Frameworks</b></div>
<div>
Bootstrap - <a href="http://getbootstrap.com/">http://getbootstrap.com</a></div>
<div>
React - <a href="https://facebook.github.io/react/">https://facebook.github.io/react/</a></div>
<div>
jQuery - <a href="http://jquery.com/">http://jquery.com</a></div>
<div>
AngularJS - <a href="https://angularjs.org/">https://angularjs.org</a></div>
<div>
<br /></div>
<div>
<b>Learning</b></div>
<div>
<a href="http://w3schools.com/">w3schools.com</a></div>
<div>
<a href="https://code.visualstudio.com/docs/runtimes/nodejs" target="_blank">Node.js Applications with VS Code</a></div>
<div>
<a href="http://udemy.com/">Udemy.com</a> - they have a bunch of great courses on all aspects of web development. My tip for Udemy is to log in, check out the courses, and wait. They usually send you an email with discounts for courses.</div>
<div>
<br /></div>
<div>
<b>Articles</b></div>
<div>
<a href="https://medium.com/outsystems-engineering/react-is-the-new-jquery-64ae6d468358#.ka42lagmb" target="_blank">React is the new jQuery</a></div>
<div>
<a href="https://blog.wraptime.io/after-react-elm-152bd6559cb1#.64itrrfkk" target="_blank">After React: Elm?</a></div>
<div>
<a href="http://rundis.github.io/blog/2015/elm_sweeper.html" target="_blank">Minesweeper - a brief journey from JavaScript/React to Elm</a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Now, I wonder if I can apply these new skills to making something fun on the web? I guess I better return to the Upside-Down to find out :-)</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span style="margin-left: auto; margin-right: auto;"><a href="http://www.michaelmaherart.com/" target="_blank"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEEaDuyimNBe8Jsf_owN1WOWa8fhSJwL4HJrzCT2yrTB2vFj-ujRGgWbnVLr5ZSFQN3lMqpkSi54lRfqXI4CM3JdQUxth8Yp_Ns9At8QJOYmfsu4lJH6JfgDGpOF8jedj_rB7Z/s320/stranger-star-things-wars1.jpeg" width="221" /></a></span></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i><a href="http://www.michaelmaherart.com/" target="_blank">Click the photo to see more of Michael's cool art!</a></i></td></tr>
</tbody></table>
<div>
<br /></div>
<div>
-Johnno</div>
<br /></div>
<br /><div>
<br /></div>
</div>
Passfield Gameshttp://www.blogger.com/profile/17784304613024358206noreply@blogger.com0