tag:blogger.com,1999:blog-50234800505903237232024-03-16T11:50:23.324-07:00Glenn CorpesAnonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.comBlogger34125tag:blogger.com,1999:blog-5023480050590323723.post-51589231232522993362015-11-17T11:16:00.001-08:002015-11-17T11:37:04.983-08:00OK, Lets get Fat Owl With A Jetpack finished...<h4 style="text-align: center;">
Fat Owl With A Jetpack, development continues...</h4>
Over two years ago I posted <a href="http://glenncorpes.blogspot.co.uk/search/label/Fat%20Owl%20With%20A%20Jetpack" target="_blank">this blog</a> about the new game I was working on. It was supposed to be a 'quick game' but it hasn't proved to be. What's the delay? Hard to say exactly. Since then we've ported Topia to Android, Windows, Mac and Linux. I spent a lot of time making the UI system work with all sorts of controller. Fat Owl With A Jetpack is also based on this tech.<br />
<br />
The new UI is pretty neat, it uses distance fields for the edges of UI elements and fonts, this means that it looks good at any resolution. Caring about resolution at all is a thing of the past! The entire thing can be rescaled to compensate for different physical screen sizes, which of course do still matter. The UI is also navigable from joypad, mouse and keyboard as well as touch. I'm very proud of it but now have to get it into some games. The first of these will be Fat Owl With A Jetpack.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Ax72G2JDM1SIhsIUC_HQJca4NiJfdKped-E9C7Eor_MS3ki2fs62XkjfghFLEox1KJhyphenhyphenBncM3jD_K-qWYIFaeQSG6N_hPnV2rvN4TkA-I06ltFgyGzXbXog9EL-ZkclHDOKxVFv9c6dL/s1600/photobooth.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Ax72G2JDM1SIhsIUC_HQJca4NiJfdKped-E9C7Eor_MS3ki2fs62XkjfghFLEox1KJhyphenhyphenBncM3jD_K-qWYIFaeQSG6N_hPnV2rvN4TkA-I06ltFgyGzXbXog9EL-ZkclHDOKxVFv9c6dL/s400/photobooth.jpg" width="400" /></a></div>
<br />
<h3 style="text-align: center;">
Too old to learn?</h3>
I've found myself rewriting the code several times. I'm not entirely sure why because it was pretty clean to start with. I've recently been adding C++11 features, partly just so I can learn them in case I ever need a new job and find myself claiming to be a C++ programmer. Learning C++11 features proved a little difficult at first because a lot of the new features are based around a closer integration of STL. I'd never really used STL because, having my roots an assembler coding, I never trusted it to be fast enough. That's not to say I hadn't made my own similar templated container classes* or even used bits of what was effectively STL wrapped up and renamed by other control freak coders. I just hadn't touched it for the six years or so I'd been working for myself. It turns out STL is like a lot of things in coding, much easier to just dive in and start using it than to waste too much time trying to read dry documentation. Anyway, switching to STL is already making the editor much easier to maintain and extend without any impact on performance. Lambdas and enum class make certain things much easier and neater than before. Learning new stuff always makes coding more exciting for a while, I should do it more often.<br />
<br />
<h3 style="text-align: center;">
In game editor</h3>
<div>
I've always been a fan of games with built in editors. In fact I've worked on a few** which either had built in editors or editing was part of the game itself. </div>
<div>
<br /></div>
<div>
If I was a better bullshitter I would claim that we did it on all of those games because I believe passionately in optimising the edit/play cycle but there is another good reason. Building the editor into the game is usually a little less work. OK, it's not as little work as using the editor that comes with Unity or Unreal but the one in Fat Owl With A Jetpack is only a few hundred lines of code*** and it runs on everything the game runs on including phones. All of the current test levels were created on an iPad mini. Now that the game is running on Mac and Windows level design will probably move to there as the new UI system makes it incredibly easy to add keyboard shortcuts. </div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0Qq9jcC3LNhfS05tjavD9UwbdTXuKkOhcFrj4YRk7-HuhOyepXsRQj8iOPeFqib0af7KMl2ThgKuWYcCpTEDSrk-Y5RdDCcS1x5i4eArUHA5zGpSPUOSN3m_sNV8uT5FAwiGa5vhrdnl6/s1600/FatOwlEditor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br class="Apple-interchange-newline" /><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0Qq9jcC3LNhfS05tjavD9UwbdTXuKkOhcFrj4YRk7-HuhOyepXsRQj8iOPeFqib0af7KMl2ThgKuWYcCpTEDSrk-Y5RdDCcS1x5i4eArUHA5zGpSPUOSN3m_sNV8uT5FAwiGa5vhrdnl6/s400/FatOwlEditor.jpg" width="400" /></a></div>
<br /></div>
<h3 style="text-align: center;">
What next?</h3>
<div>
Fat Owl With A Jetpack has already taken over a year longer than I planned it to. The game is pretty playable, everyone I've handed a device to has been able to play it and seems to love the two button control system. The game currently has about 25 unfinished levels spread across several unfinished game modes (race, endless, puzzle...). It's time to get it onto Testflight and into the hands of more people.</div>
<div>
<br /></div>
<div>
Anyway, not much more to say in this blog. I'm not even going to promise to write more of the bloody things again though I think it'd be good if I could. Maybe I will...</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
* If this means nothing to you, don't worry about it, code talk stops at the end of the paragraph.</div>
<div>
** Populous, Dungeon Keeper, Ground Effect, Topia and the Stunt Car Racer remake that we were making at Lost Toys.</div>
<div>
*** Now featuring exciting new C++11 features and STL!</div>
<div>
**** Thanks to Alex (@BulkPaint) for pointing out that using footnotes in a blog helps to eliminate at least a few of the countless diversions in parenthesis I'd otherwise use (****), am I doing it wrong though?</div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com2tag:blogger.com,1999:blog-5023480050590323723.post-85180528954420547122014-07-10T09:50:00.003-07:002014-07-10T09:52:37.991-07:00Topia for Android and future updates<h2 style="text-align: center;">
Topia for Android and future updates</h2>
<div>
A few weeks ago Topia was quietly released on Android. The conversion was handled by <a href="http://madmunkigames.com/" target="_blank">madmunki</a> who aren't just another porting company, they're the guys behind the wonderfully weird <a href="http://www.spunland.com/" target="_blank">Spunland</a> and also, people I worked with in various places back before I 'went indie'.</div>
<div>
<br /></div>
<div>
We didn't make a big deal of the launch because, as a lot of people have pointed out, Topia isn't really much more of a game than it was when we released the iOS version in late 2012. </div>
<div>
<br /></div>
<h3 style="text-align: center;">
Why isn't there more of a game in Topia already?</h3>
<div>
Ever since I wrote the graphic engine and landscape system of Populous over 25 years ago, I'd always wanted to create a smooth, more organic version. I started on this with the Powermonger engine but the Amiga and ST just couldn't draw enough polygons to make it work and dynamic modification wasn't part of the design anyway. The idea did surface in a few places later. Magic Carpet had a dynamic landscape (though only indirectly through spells and weapons) which also showed up in Gene Wars. When Populous 3 (released as Populous The Beginning) started development it seemed like the idea suddenly made sense but by then none of us who had worked on the previous Populous games were directly involved and were unable to steer the project in a more 'Populousy' direction. Direct control of the landscape wasn't part of the game. Sorry to all of those who think of Populous the Beginning when they hear the word Populous but some of us consider it more of a weird RTS than a true sequel (OK, I know it was released as a prequel but you get my point). I did like the way it faked a spherical world though...</div>
<div>
<br /></div>
<div>
So, basically, in 2010 I was talking to Josh from Crescent Moon and he had an idea for a god game that seemed like the perfect fit for the landscape system I'd been itching to try for over two decades. I set about doing what I'd done many times before. Creating a landscape system and the means to render it. The cool thing about Topia was that when I finally got round to making that organic sculpting system, the iPad was the perfect platform. The tactile controls make the landscape moulding feel even better than it does on a mouse.</div>
<div>
<br /></div>
<div>
There was a big problem though. I was doing what I'd done many times before: Creating the underlying world management, the control system and rendering. This is basically exactly what I had done for Populous, Powermonger, Populous II, Magic Carpet, Dungeon Keeper etc. The big difference was that with all of those games there were other talented programmers involved who went on to turn my groundwork into an actual game, or handled the hundreds of more mundane programming tasks. With Topia, I had none of that and, to be brutally honest, I just didn't have the time or money to finish it so we were forced to release it with just the tutorials and 'sandbox' mode.<br />
<br />
Now, things are changing. Topia will be getting more gameplay, more creatures, more landscape modification effects. The exact details haven't been completely decided but more information will be coming soon.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbD8cOcbSZY1ndzVhlE-iSyn08qp_g7YxGCj0SCS9zDxZGCU_83kVZmxR-_X8BfCdDVla1f-73_tNp_7xpL4K4aL6rAyTRNKtgOgi0QaPihmslFl_qwbNJIxjn7fsFX4D-LRid8NDHJ4K-/s1600/fishyt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbD8cOcbSZY1ndzVhlE-iSyn08qp_g7YxGCj0SCS9zDxZGCU_83kVZmxR-_X8BfCdDVla1f-73_tNp_7xpL4K4aL6rAyTRNKtgOgi0QaPihmslFl_qwbNJIxjn7fsFX4D-LRid8NDHJ4K-/s1600/fishyt.jpg" height="131" width="320" /></a></div>
<div style="text-align: center;">
The next version may well feature shoals of these guys...</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQFLqN5vAPzkcDJFUFgJ7E6vGM9yVoy-W2UesUpEMa3H_D80ZzU5nxdVRzIOh-pnuGoHMEIWa_H5Gh-9u_fqcFiCpq7s18arKGz5fyCg0G5H62nZyAAX-sITbf4f9N09UTzPud3rsBy5Go/s1600/IMG_2756.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQFLqN5vAPzkcDJFUFgJ7E6vGM9yVoy-W2UesUpEMa3H_D80ZzU5nxdVRzIOh-pnuGoHMEIWa_H5Gh-9u_fqcFiCpq7s18arKGz5fyCg0G5H62nZyAAX-sITbf4f9N09UTzPud3rsBy5Go/s1600/IMG_2756.JPG" height="240" width="320" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
Running on a Linux Laptop (long story...)</div>
</div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0tag:blogger.com,1999:blog-5023480050590323723.post-86841703956489621992014-02-25T06:23:00.000-08:002014-02-25T06:23:14.037-08:00If games are still "the new rock and roll", Is Flappy Bird Punk?Flappy Bird has been everywhere for weeks, not just everywhere where developers talk and gamers abuse each other online but normal people have read about it in the papers or seen an item on the news.<div>
<br /><div>
The reality is of course that Flappy Bird is just a game stripped down to the absolute basics, something that i'm going to, in this totally boat-missing blog, try to equate to Punk, specifically to God Save The Queen by the Sex Pistols.</div>
<div>
<br /></div>
<div>
Some gamers got angry about it, they'd been playing overblown, epic prog-rock AAA bullshit for too long to appreciate the simplicity. Refusing to even acknowledge it as a game.</div>
<div>
<br /></div>
<div>
Other more casual gamers, fans of being spoon-fed evil, Simon Cowell style, manufactured, free to play pop shite were similarly unimpressed and even intimidated by the inaccessibility of this new phenomenon.</div>
<div>
<div>
<br /></div>
<div>
Even old people have an opinion, they'd heard on mainstream news that it had 'been banned' and pulled from the app store. OK, I'll admit, this isn't quite the equivalent of saying "fuck" on a live news show or getting banned while number one on the silver jubilee but no analogy is perfect.</div>
<div>
<br /></div>
<div>
Kids of course, genuinely love it. I thought the first few I spoke to were just being ironic and of course they were. Sort of. But that doesn't mean they weren't playing it, into it both as a game AND just because it was cooler to be into than Abba or Genesis. </div>
<div>
<br /></div>
<div>
<div>
Now that Flappy Bird is unavailable, Dong Nguyen's other games sit there on the app store like a couple of bad tracks off Never Mind The Bollocks, he doesn't have an Anarchy In The UK equivalent (the only place where my analogy falls down) but i'm looking forward to playing his 'Pretty Vacant'.</div>
<div>
<br /></div>
</div>
<div>
Meanwhile hundreds, if not thousands of developers have been inspired to pick up whatever instrument they are prepared to spend five minutes learning (Unity has to be the guitar in this analogy, maybe Photoshop is the drums...) and are making games for themselves.</div>
</div>
<div>
<br /></div>
<div>
This has of course pissed off some older game developers who can 'read music' (write low level code, am I stretching this analogy to breaking point yet?) and are now moaning to whoever will listen about how it's all too easy these days.</div>
<div>
<br /></div>
<div>
One thing that those new developers need to realise though is that back in the late '70s, those people inspired to pick up a guitar for the first time by God Save The Queen didn't just form Pistols covers bands.</div>
<div>
<br /></div>
</div>
<div>
Of course, I'm being a bit of a wanker to suggest it would mean that. If you look beyond the Flappy Birds clones in the charts to the <a href="http://itch.io/jam/flappyjam" target="_blank">Flappy Jam</a> entries it is clearly inspiring far more than just clones. The fact that most of them are as unplayable as a 1979 John Peel show was unlistenable only backs up my original, totally non-spurious point.</div>
<div>
<br /></div>
<div>
I'm more interested in seeing where it goes next. In my mind Punk was actually less important than the music it has influenced since.</div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com1tag:blogger.com,1999:blog-5023480050590323723.post-38884008733162693442013-12-10T03:44:00.000-08:002013-12-10T04:43:07.523-08:00Fat Owl With A Jetpack enemy AI<div>
<span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;">After a lot of time spent designing, implementing and rewriting Fat Owl's entity system I have the editor working and was able to get this simple enemy together in about 20 minutes. He is basically a clone of the player's owl but with about eight lines of 'AI' code deciding when to press his thrusters to get to you. It seems unlikely that his AI will mutate into self awareness and eventually become Skynet but a swarm of these will be a fun challenge. Even now with no attack logic they are a lot of fun to dance with.</span></div>
<div>
<span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;"><br /></span></div>
<div>
<div class="separator" style="clear: both;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhboGmdXCfb5Kr2USjIACbQmkD0EzNDtkhyphenhyphenwelK2ZZk5B-_PNm4NAOF7JFGosdVLDkes9SMUZE-JAICaQ1-X-ts-A3aNcHTmUUoU3eX9OGQ3D7SFd1nykSP1_xbfabG03OpljLUbT824Jhz/s640/blogger-image-935921103.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhboGmdXCfb5Kr2USjIACbQmkD0EzNDtkhyphenhyphenwelK2ZZk5B-_PNm4NAOF7JFGosdVLDkes9SMUZE-JAICaQ1-X-ts-A3aNcHTmUUoU3eX9OGQ3D7SFd1nykSP1_xbfabG03OpljLUbT824Jhz/s400/blogger-image-935921103.jpg" width="400" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
The graphics are very obviously placeholders but the automatic shadows are doing their job. The owl graphic is getting pretty old now and is the only thing in the game with a shadow made in Photoshop.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/zfjmO7nBPG0?feature=player_embedded' frameborder='0'></iframe></div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0tag:blogger.com,1999:blog-5023480050590323723.post-78865810961333608242013-08-23T06:23:00.000-07:002013-08-25T08:30:03.741-07:00The magical story of Fat Owl With A JetPackFat Owl With A Jetpack is the game i've always wanted to make, It's the story of Ollie the owl who got so fat he couldn't fly until professor squirrel invented a special magical jetpack.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXkRl_Cjhc1HaKvOzzBpDleceP-KoWuO77F8Ybba33RBH27v65nOliVCc1a-LRITujAD2N_j5FCM4eACLvtGRICX6TPocY73We0pXsLb7mEC226kCKaMBNdIeW95Ur3a1pBE3_hl1lXk0r/s1600/fuzzypaper.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXkRl_Cjhc1HaKvOzzBpDleceP-KoWuO77F8Ybba33RBH27v65nOliVCc1a-LRITujAD2N_j5FCM4eACLvtGRICX6TPocY73We0pXsLb7mEC226kCKaMBNdIeW95Ur3a1pBE3_hl1lXk0r/s400/fuzzypaper.jpg" width="400" /></a></div>
<br />
<br />
<br />
<br />
Sorry, I can't keep this up. I've been 'advised' that I should try to talk about my next game in fun, non-techie terms but I just can't do it...<br />
<br />
Fat Owl With A Jetpack is a game, or at least will be soon. What it isn't is a fucking story. As i've <a href="http://glenncorpes.blogspot.co.uk/2011/09/syndicate-is-plot-or-mechanic-essence.html" target="_blank">moaned about at length before</a> games aren't stories.<br />
<br />
The real story is that Fat Owl With A Jetpack is based on an idea I had a few minutes after playing the Palm Pilot version of SFCave back in the late '90s. I was impressed with how much fun a single button game could be. Obviously developers have taken this idea and run with it. Many of the best action games on iOS are played with a single button.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVaQN9PxDkY5L8JZ6SuBsMseF3KKCpJjPOUViCM6h9XktEyC0EHGgwRKnUDiRkJi9oVjNaFNysLpfawLUJ49BIU7JotACtTjUcGkHDm26zrLYVhE_X5q_JN4X1x3YAiUS7-Wp3Upiei-23/s1600/SFCave.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVaQN9PxDkY5L8JZ6SuBsMseF3KKCpJjPOUViCM6h9XktEyC0EHGgwRKnUDiRkJi9oVjNaFNysLpfawLUJ49BIU7JotACtTjUcGkHDm26zrLYVhE_X5q_JN4X1x3YAiUS7-Wp3Upiei-23/s320/SFCave.jpg" width="320" /></a></div>
<br />
<br />
But being the point missing twat that I am, my instant reaction to the fact that you could get so much gameplay from a single button was to imagine what could be done with two:<br />
<br />
One controlling vertical and one horizontal. No, that wouldn't work... SFCave only worked because gravity works against the thruster, I couldn't have horizontal gravity could I?... No, of course not but what if the thrusters were at 45 degrees?, press one to move left, the other to move right, both to move up and let go to drop down. Yes, that'd work, I could make a super simple lunar lander type game that worked on two digital buttons...<br />
<br />
But why would anyone want to play something like that? People were getting excited about a new wave of consoles with controllers bristling with multiple analog pads and triggers. The time for neat two button control ideas had long gone and was, I thought, extremely unlikely to ever come back.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixJx36oMajRGpwjPsTN0HKWgI-QXx_DnYQNbqYSNEvqfeUPIhc5lPoZ9_h_sCMkB0a7pgpLhLM6LwrdqGPa-SO_VF2IGFAc8lqtHQ4fbabKbqGbOGh7ou2spxWE0qj9SSM5i8S6hCNVLjP/s1600/Elasto_mania.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixJx36oMajRGpwjPsTN0HKWgI-QXx_DnYQNbqYSNEvqfeUPIhc5lPoZ9_h_sCMkB0a7pgpLhLM6LwrdqGPa-SO_VF2IGFAc8lqtHQ4fbabKbqGbOGh7ou2spxWE0qj9SSM5i8S6hCNVLjP/s320/Elasto_mania.png" width="320" /></a></div>
<br />
I was also playing a lot of Elastomania (the game that inspired a million Trials Bike games) and the idea that rolling round the walls should be part of it struck me. The Lunar Lander/Thrust/Gravitar convention of your ship exploding as soon as a wing tip touches a wall isn't actually a law is it? At this point the spaceship stopped making sense. It would need to roll while it's thrusters remained locked at 45 degrees. I started seeing it as some sort of abstract ball thing. The idea was getting messy and went on the back burner for a very long time.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEdepiLi7uy_fpKHZ5MrbQnyviHIPKrZJXVSiqTbMbaFYc_QEAYoBFTIu7sqnwoPHbo8S0eQGtAEI6Ik9H9sIkqOPBiAaLVSO0OCZAsGQaSBFHa4GkMCthsBXDkunTmSunD0cR2OYu6_F1/s1600/thrust.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEdepiLi7uy_fpKHZ5MrbQnyviHIPKrZJXVSiqTbMbaFYc_QEAYoBFTIu7sqnwoPHbo8S0eQGtAEI6Ik9H9sIkqOPBiAaLVSO0OCZAsGQaSBFHa4GkMCthsBXDkunTmSunD0cR2OYu6_F1/s400/thrust.png" width="400" /></a></div>
<br />
<br />
<br />
So late one night last spring, in a slightly, erm, meditative mood, I was thinking:<br />
<br />
I really want to do that two button lunar lander thing next as visualising it in my head for over a decade might be starting to drive me mad.<br />
<br />
But can I really do it next? Sure, it seems like it might be a nice feeling physics based game mechanic but how would a game where you played some sort of abstract ball thing bouncing off the walls be able to compete with the cute characters on the app store?<br />
<br />
Depressed, I pulled out my phone and started absent-mindedly playing Tiny Wings for the eighth time that day, "If only there was some way of turning a nice abstract physics mechanic into a cute game by simply sticking a cute character in it" I thought as I played before going to sleep...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGz8FUXUscpVXLLCKBeHrgByQKOvjnVeP5NV0sLdY5OK6w05uYGnQEqVtaNXQPb_flUmiMXHbV57IJVNhdKpko_BHpLYPtEDwaLcOar4iy5bEXuMOtcwTRmgSPNpr5LbFGXjbQh6e2l_Wf/s1600/Tiny-Wings-Screen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGz8FUXUscpVXLLCKBeHrgByQKOvjnVeP5NV0sLdY5OK6w05uYGnQEqVtaNXQPb_flUmiMXHbV57IJVNhdKpko_BHpLYPtEDwaLcOar4iy5bEXuMOtcwTRmgSPNpr5LbFGXjbQh6e2l_Wf/s320/Tiny-Wings-Screen.jpg" width="320" /></a></div>
<br />
The next morning I woke up and for some completely inexplicable reason, i'd come up with the answer in a dream. Fat Owl With A Jetpack was born.<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/g3IRJiSKzI0?feature=player_embedded' frameborder='0'></iframe></div>
<br />Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0tag:blogger.com,1999:blog-5023480050590323723.post-36294406622170468102013-04-29T10:19:00.001-07:002013-06-06T15:52:44.784-07:00Importing worlds into TopiaOK, I admit it, this post is a little hacked together. There is a message carved into the preset world 'creator's message' that points at this page as being the source of info for importing worlds and I haven't actually managed to write it yet...<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqwxlf3lYPwsbSxAb0x_sI8PEPCmDzdjV7jkdEagHDTVtkIL4se3uWOXK01jG7hzyeP2zmeTHWRZ2zm07AJCPtE6VEGNy0x9lX5aLkXBCIJ2SU4gPPTTWqiUIJ8KrPXqN2wEEwzZD_rg4I/s1600/message.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqwxlf3lYPwsbSxAb0x_sI8PEPCmDzdjV7jkdEagHDTVtkIL4se3uWOXK01jG7hzyeP2zmeTHWRZ2zm07AJCPtE6VEGNy0x9lX5aLkXBCIJ2SU4gPPTTWqiUIJ8KrPXqN2wEEwzZD_rg4I/s400/message.jpg" width="400" /></a></div>
<div>
<br /></div>
<div>
I'll edit this with pictures and examples but for now I'm just going to dump the info needed, hope it helps...</div>
<div>
<br /></div>
<div>
A valid import file is a 1024x1024 uncompressed .tga file. 8, 24, and 32 bit variants all work.<br />
The file must be called heightmap.tga.<br />
<br />
As of V1.3, you can now drag these files into Topia via iTunes file sharing, just drag the file into Topia. You can still use software like <a href="http://www.i-funbox.com/">iFunBox</a> or <a href="http://www.macroplant.com/iexplorer/?gclid=CMCLtuu18LYCFYZa3godOjEALg&utm_expid=15979170-15&utm_referrer=http%3A%2F%2Fwww.google.co.uk%2Faclk%3Fsa%3Dl%26ai%3DCs9k3RLB-UfuKHcH37Ab0u4G4DsKB0pwC6obDxy7zj6ozCAAQASgCUMD7y7_-_____wFgu5amg9AKoAHE8NHwA8gBAaoEIk_Q3SVdQQfwZjrJRYQJtOwF3BVJOFgoeUsc75GASldMqGCAB6SPrg8%26sig%3DAOD64_2QxYofTe0QnpqJsRDKNQBLVz5EWA%26ved%3D0CDQQ0Qw%26adurl%3Dhttp%3A%2F%2Fwww.macroplant.com%2Fiexplorer%26rct%3Dj%26q%3Diexplorer">iExplorer</a> to get the file onto your device, simply drag heightmap.tga into Topia's documents folder.<br />
<br />
Run the game and now, while editing your world, an 'import' button will appear in the Edit menu.<br />
<br />
In 8 bit monochrome mode the colour of the greyscale image corresponds to the height above sea level, in a colour image the red channel is the height above sea level.<br />
<br />
The simple 'import' button reads the file in. Everything will be above sea level but can be adjusted to be more interesting in the Scale/Offset/Smooth tools.<br />
<br />
The 'Import & Make Seabed' does more and is designed to work with some heightmap files I found while experimenting. In this mode anything with a height of 0 is the sea. Rather than have a world with oceans that are only puddle-deep this mode generates an 'interesting' seabed automatically. </div>
<div>
<br /></div>
<div>
With colour files the green channel is a 'grassiness' map, the blue is a 'potential grassiness' map, it's easiest to make these the same at the moment.<br />
<br />
Sorry about the rushed guide, I will be updating this page with examples as soon as possible.</div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com1tag:blogger.com,1999:blog-5023480050590323723.post-76164994277868856402013-04-29T10:15:00.001-07:002013-04-29T10:15:20.454-07:00Topia V1.2 releasedSuddenly, after an insanely long delay, V1.2 of Topia is out. This release has taken a while and is mostly focused on the editing tools and being able to finally save the levels in a non-insane way.<br />
<br />
New features are:<br />
<br />
<ul>
<li>Completely rewritten save system, level edits are no longer stored as a weird, confusing timeline, they are now saved completely as they appear. This was the bulk of the update and I spent a lot of time ensuring the save and load were as quick as possible and don't use an insane amount of space. Storage requirements for a level are variable but tend to use somewhere between 1 and 2 megabytes for each slot</li>
<li>There is now the concept of 'grass' and 'potential grass'. This basically means that you can now paint down paths and patterns in 'dirt' and the grass, as it grows, will not cover them. areas of 'dirt' can be reclaimed as grass with the grass painting tool as long as they aren't too near the sea, too steep and rocky or above the snowline.</li>
<li>The painting tools have been hugely optimised, this means that people on slow devices (iPhone4 and older + the original iPad) will see much less of a slowdown than before.</li>
<li>New lighting: Lighting calculations have been optimised for better performance while the resolution of the lightmap has been enhanced.</li>
<li>Better water animation: The way the water refracts the seabed under it is much more realistic and looks cooler.</li>
<li>Tree planting. Players can now plant trees anywhere flat enough for trees to grow.</li>
<li>Importing levels from graphic files: More info on this coming later...</li>
<li>Preset worlds: Players can start from a selection of preset worlds, 7 in the current version.</li>
<li>Scale/Offset/Smooth tools, used to make world scale changes to the level.</li>
<li>Advanced tools: Some silly effects to tweak your world</li>
<li>Life editing in edit mode: Wipe out all trees and creatures, plant random trees.</li>
<li>Updated landscape tutorial</li>
<li>Vine camera loop mode: The camera travels and rotates over the world and is back to where it started exactly six and a half seconds later. Film this from Vine on another device and it's fairly simple to make seamless looping videos.</li>
</ul>
<div>
Now I have to post another blog detailing how the import works in case anyone tries to follow the link painted as a path in the Creator's Message world!</div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com2tag:blogger.com,1999:blog-5023480050590323723.post-36320275123770372252013-01-10T07:25:00.000-08:002013-01-10T07:27:45.353-08:00Topia update update<h3 style="text-align: center;">
Topia update progress</h3>
For anyone waiting for the update, sorry this is taking so long. Progress has been slow for several reasons. Firstly, for the last few months in the run up to release I got almost nothing done other than programming and had a lot of stuff to catch up on. Some of it work related, some of it more personal. I also had to make some significant changes to how Topia saves progress.<br />
<br />
<h3 style="text-align: center;">
Why is saving broken?</h3>
<div>
Arguably saving isn't actually broken in the current version, it's just a questionable design implemented in a slightly stupid way. It is possible to save a 'timeline' of everything you do and play it back. The reasons for doing it this were related to a bunch of vague ideas of where the game might go in the future. It offers these advantages:<br />
<br />
<h3>
Timeline saving, pros:</h3>
<br />
<ol>
<li>The initial fractal and an hour of gameplay recording takes less than 100kb rather than the 2000kb+ that a straight save takes. This would make any potential level sharing very efficient.</li>
<li>Being able to break into a timeline at any point and takeover has got to be cool hasn't it?</li>
<li>I really can't think of a third anymore, there must have been more surely...</li>
</ol>
<h3>
Timeline saving, cons:</h3>
<div>
<ol>
<li>The concept is pretty difficult to present in a clear way to players.</li>
<li>For a player to get to where they were before, the game has to play back the entire recording.</li>
<li>potential for synchronisation errors as game logic changes with updates.</li>
</ol>
<div>
I hate to admit it but I really hadn't considered the first problem until I was putting the finishing touches to the UI. I could have possibly hidden what was happening and made it seem like a normal save system except for one other issue, directly related to con 2.</div>
</div>
<div>
<br /></div>
<div>
Because of the looming deadline I had problems getting the 'load by fast winding the timeline to the end' feature working in time so I left it out of the initial release. I hadn't realised how attached people would get to the simple editing and that it would become an issue. As the game was released I was getting more feedback criticism for the lack of save than the lack of an actual game. It was clear to me that I had to get 'fast winding' working so this became the top priority for the update.</div>
<h3 style="text-align: center;">
Finally working on the update</h3>
<div>
I was expecting to be able to get a 60x speed fast wind working. This seemed reasonable as 12 minutes of editing would fast-wind (or 'load') in 12 seconds. Unfortunately when I actually got it working I only managed a 12x speedup on iPad2. This would mean that 12 minutes of 'timeline' would take an entire minute to 'load'. I could have focused on optimising the fast wind and might have even got as far as that 60x speedup but even then, a little maths suggests it might not be fast enough. Anyone editing for an hour would have to wait a whole minute to 'load' and with easier saving, people might edit for several hours, maybe even the 10 or so it would take to fill the recrod buffer. It was becoming clear that the entire concept was broken.</div>
<h3 style="text-align: center;">
New save system</h3>
<div>
So I've now added the ability to just save out a level and reload it instantly. This is so much easier to work with. It's also allowing me to redesign the interface so that saving and loading all works as a normal human might expect. I've also in the middle of adding a few extra editing features. The update will feature.</div>
<div>
<ol>
<li>The ability to select between painting dirt and grass, making painting more interesting</li>
<li>a tool to 'stepify' the landscape as seen below</li>
<li>a tool to paint forests</li>
<li>new instant save and load of levels</li>
<li>redesigned menu flow</li>
<li>redesigned game control and more control modes</li>
<li>A bunch of under the hood stuff to increase reliability</li>
<li>A few silly tiny visual effects I couldn't resist</li>
</ol>
<div>
I know I said the update was 'imminent' before but when I missed the pre-christmas deadline I took the opportunity to rewrite a few underlying systems and start a new project based on the same code. This took a little longer than I'd planned and combined with the fact i've been visiting my father in hospital twice a day means it's still only 'imminent' but it will be submitted very soon.</div>
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcvkGu8kVd61L65Srw-oXHZpY4T0CnxhLIYm5q9qNejRxRnVHjI_JP7DssJ6CxXgWc89JqppOPekiyZC3UAosL9tyGR0sV80irOatGwv7EyDhFa3rmA0ruZ1SdUZkEgQ_Xu0GS1gJrvBG3/s1600/IMG_1837.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcvkGu8kVd61L65Srw-oXHZpY4T0CnxhLIYm5q9qNejRxRnVHjI_JP7DssJ6CxXgWc89JqppOPekiyZC3UAosL9tyGR0sV80irOatGwv7EyDhFa3rmA0ruZ1SdUZkEgQ_Xu0GS1gJrvBG3/s640/IMG_1837.jpg" width="480" /></a></div>
<div>
<br /></div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com7tag:blogger.com,1999:blog-5023480050590323723.post-73517465227112226292012-10-23T02:09:00.001-07:002012-10-29T07:18:39.962-07:00Topia is out! Where's the update?<h3 style="text-align: center;">
The last few months of dev</h3>
It has been very a very stressful summer, as I've moaned before in this blog, while a year and a half might seem like a long time to wait for an iOS game, it's nothing for something like Topia with a programming team of one. It became clear some months back that we were leaving it a little late to put a game in. Josh and I had been toying with the idea of releasing it as a sandbox for a while but I'd always been determined to sneak some sort of game in there for the initial release.<br />
<br />
Then we realised we had passed the point where I could kid myself I'd be able to get a game in before I completely ran out of money. Meanwhile we had something that was kind of fun. Definitely more fun than most 99c games, maybe we could get away with it after all...<br />
<br />
So, I set about fixing bugs, made a tutorial mode and, after a little testing, submitted Topia to Apple.<br />
<h3 style="text-align: center;">
Release</h3>
<div>
So, almost two weeks ago we crossed our fingers and released Topia on the app store. We tried to be as up front as possible about the lack of objectives in the game but had no idea how people would actually react. It's not exactly getting solid five star reviews but it seems most people get what we're trying to do and are looking forward to updates or are getting 99c worth of fun from the app which, I like to think, provides something unique even if it isn't exactly a game. Yet...<br />
<br />
I totally understand those who are giving it one star for being 'pointless', I fully appreciate that the app store is a mature game market and 'standards' have evolved for games which we have arrogantly ignored.<br />
<br />
The biggest surprise though has been just how keen people have been to use Topia to create worlds. We have had more (totally valid) complaints about the lack of a decent save world system than we have about the lack of a game.<br />
<h3 style="text-align: center;">
Update</h3>
Because of this, the focus of the first update is going to be on level saving and loading. I'm part way through the coding work already, the confusing system of recorded replays is going and will be replaced with something that will let people work on their worlds for as long as they like.<br />
<br />
hopefully it'll be submitted very soon. Enhanced creature AI and actual game modes after that.<br />
<br />
The video below is a quick test of the output from the wonderful 'Reflections app' which turns your Mac or PC into an airplay device which can also capture video and audio. Not much happens in it, it only really shows the silly fake water refraction shader I sneaked in at the end when I could probably have been doing something far more productive.<br />
<br />
<h4 style="text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/86vpnhDqOWw?feature=player_embedded' frameborder='0'></iframe></h4>
</div>
<br />Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com3tag:blogger.com,1999:blog-5023480050590323723.post-64835980983833062912012-08-23T03:25:00.001-07:002012-10-29T07:19:36.662-07:00Topia update <h2 style="text-align: center;">
Where the hell is Topia?</h2>
<div>
As i've said before in this blog, Topia is proving to be a hell of a lot of coding work. Some of this is fun, creative gameplay and graphical stuff but, being the only coder on the project, I also have a lot of irritating system level crap I have to deal with. Here's what has been going on since the last blog. This is possibly going to be a little boring in technical but that's been my life for months now so I thought I should spread the 'fun' around a little. If you aren't interested in technical details you should probably wait for the next blog which will feature a video with sound effects. You've been warned...</div>
<div>
<br /></div>
<div>
At the end of May I replaced the old file system with something rather more direct and powerful. They old one was very cool, designed to enable background loading on hardware that doesn't support multitasking (for example Nintendo DS) but was kind of getting in the way on hardware like iOS (and everything else we're planning to support) where something less clever on another thread makes more sense. This was pretty simple but I'd been putting it off for a long time.</div>
<div>
<br />
With the new filesystem in place I was able to start on the changes to the editor. Up until this point 'editing a level' consisted of selecting a bunch of parameters for the fractal generator and a 'time of day' for the lighting. With the new system in place it was possible to paint landscape changes into the editor and store these as part of the world's definition. These changes were vital in making it so that a Topia levels are well under 64kb each. Before this levels were taking around 3mb, this is a 50x saving which means we will be able to include is many levels as we can come up with without bloating the download size into hundreds of megabytes. At this point I realised I had to optimise the landscape moulding code and worked out a sneaky way of getting a 7x speed increase to fix loading times. A really cool side effect of this is that the in game building tools can now be much larger, making building landscape feel even cooler.</div>
<div>
<br />
I also added a bunch of extra features into the editor (which will be part of the full game) including complete control over lighting and atmospherics, the ability to paint paths and save out a level already populated with creatures. At some point after the initial release the editor will be released to players in an update. In it's current state it can't be let out to the public as it'd just confuse most players and confused players just quit your app and give you a one star review. I know this for sure from the stats of how many people finished the second level of Ground Effect...<br />
<br />
I then spent a week working on another project that I will blog about later. This was for an iOS unity based project from a very cool new startup and they happened to need a couple of mad custom shaders written in a hurry. It was cool to finally get to use Unity. It's clear that something like Topia could actually be made with it (something I hadn't realised before) but you'd be doing so much work in native plugins that you'd lose most of the benefits of using it. Cool to get a little Unity experience though.<br />
<br />
It was great to actually be working in an office with other developers, some of them guys i'd worked with before many years ago. The atmosphere of a working office hugely increased productivity so I hung around their office for a couple of extra weeks working on Topia. During those weeks I completely rewrote the multitouch handler making it 100% responsive on all devices.<br />
<br />
I also ditched Ground Effect's over-complicated and, paradoxically, under-featured sound system and went straight to OpenAL. The new sound system supports blending between multiple ambiences and 3D sound placement. Not rocket science and probably standard these days but all pretty new to me and very impressive that a phone can mix these many channels without grinding to a halt. The game is awesome with the sound in. I'll blog some details just as soon as I can make a video with sound.<br />
<br />
Since spending a week or so on the sounds (thanks for the samples Josh) i've been focused on creature AI. Tikes (the fast carnivores) can now decimate herds of Pinos (the cute blue sheep) and i'm thinking the initial release won't just be a 'sandbox' we were planning, it'll also feature 'Pinos v Tikes' as the first minigame.<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0tag:blogger.com,1999:blog-5023480050590323723.post-27101036434710924432012-05-24T01:46:00.002-07:002012-05-24T01:55:19.702-07:00Retina resolution and lazy developersThis blog has been sitting in my drafts for many weeks and would have been more relevant a while back but I though I'd finish it anyway...<br />
<br />
A lot has been said about the new iPad's wonderful Retina resolution. Apple fanboys love it and are, seemingly, running magnifying glasses over every app, counting the pixels. Only full retina resolution is good enough. This is understandable as it is the main difference between it and the iPad2 and does look amazing.<br />
<br />
It's also pretty easy to support. For Topia, and I imagine most other 3D universal apps, it 'just worked', the test for Retina that already existed for iPhone just kicked in and doubled the resolution, there were two issues though, one was that the UI was too small (this took an hour to fix), the other is the subject of the rest of this blog...<br />
<br />
So, everyone who has bought a new iPad is waiting for stunning new retina-supporting games and excitedly downloading updates for their existing apps (which are all at least several megabytes bigger, but that's another story) and any dev who delivers an app that runs at full speed in 2048x1536 gets a bunch of fresh five star reviews, applauded in forums and called awesome in podcasts while those who don't are considered disappointing at best, lazy at worst.<br />
<h4 style="text-align: center;">
Lazy devs</h4>
Consider two developers:<br />
<br />
<b>Developer A</b><br />
<br />
Imagine a developer aiming to support the first iPad. Rendering terms the new iPad is much more than 8X faster so has no trouble at all filling 4X the pixels. In code terms support for the new iPad might take an hour or so or in some cases, no work at all. 2D graphics redesigns of course take much longer but that depends on the game.<br />
<br />
<b>Developer B</b><br />
<b><br /></b><br />
Now consider a developer who was making the most of the extra horsepower of iPad2, adding cool shaders to make a game that looks more Xbox360/PS3 than 10-year-old-PC.<br />
It's very likely that when it was first run on the new iPad at Retina res, the frame rate dropped considerably.<br />
<br />
At this point they have several options:<br />
<br />
<ol>
<li>Accept the lower frame rate</li>
<li>run at a lower resolution</li>
<li>make the Retina version run full res but use cut down shaders so it doesn't look quite as cool as iPad2</li>
<li>Optimise (and maybe pull a few features from) the 'nice mode' shaders so the Retina version runs full speed and the visual quality of the iPad2 version is slightly compromised</li>
<li>as above but add an optional super-shader mode (possibly even beyond what you're doing for iPad2) that really shows of what the graphics chip can do but at non-retina resolution</li>
</ol>
<br />
Unfortunately, at the moment at least, the first three options would result in complaints and one star reviews from the pixel-counters. Option 4 is the only sane way to go (other than being Developer A).<br />
<br />
Option 5 is of course the real solution but I think it would just confuse people and not worth the risk.<br />
<br />
The question is of course, who is the lazy developer? A or B? I know who the stupid, time wasting developer is already...<br />
<br />Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com10tag:blogger.com,1999:blog-5023480050590323723.post-75349208204365191052012-03-28T05:22:00.001-07:002012-03-28T05:30:53.084-07:00Rethinking texture blending<div class="separator" style="clear: both; text-align: left;">
Most landscape graphic engines have to represent different types of landscape and the question of what happens when impassable rock meets flat ground comes up in a lot of them. For some games it's entirely an artist problem but for those of us making lives hard for ourselves by using procedural generation, we've tended to find ourselves blending from one texture to another across a simple fade. For a while now i've liked the idea of textures blending in a more realistic way and did in fact get it sort of working ten years ago on Battle Engine Aquilla at Lost Toys (video link at bottom of page).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Battle Engine mixed the textures with the CPU while generating them local to the player as mentioned towards the end of my <a href="http://www.glenncorpes.com/procedural-landscapes-gdce-2001">2011 GDC talk</a> but that was back in the days of fixed function hardware. These days it can easily be done in the shader. I'd been intending to get Topia working like this and spent most of the last few days actually implementing it. Here's a screen grab from yesterday morning. </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVOLryJ902BtxQUMtaNkrHRFIx_Uc9-hc22wT30c5iBH4BtV1LrU1icJuyL6INxY4OHlzYdt2tXizNFfaWAVvMZsz8mXEE-dC7BK-e_6j5fnbWjyB4WEHmLz50eENMtbPKvDSflQ6ZxsCm/s1600/6874449196_20fb022337_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVOLryJ902BtxQUMtaNkrHRFIx_Uc9-hc22wT30c5iBH4BtV1LrU1icJuyL6INxY4OHlzYdt2tXizNFfaWAVvMZsz8mXEE-dC7BK-e_6j5fnbWjyB4WEHmLz50eENMtbPKvDSflQ6ZxsCm/s400/6874449196_20fb022337_z.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Notice how the grass sort of flows into the cracks in the rock and lumps of rock seem to be poking out of the sand on the beach. This is because the shader is actually working out how 'rocky' each pixel should be by adding the low-res 'rockiness' map to the detail-bump-map of 'rockiness', this is effectively modelling the rock poking through the sand and allowing the grass into the cracks in the rock.</div>
<div>
<br /></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZdXk_UWXpfFUlkmNtyogWYWr8uFVrpb6k-Oa7TKjEkwOeJDjb_IQimXSFyk2xGZSglvp6gKqtERuaPQguz7tHQkS6QAlQ1GqDt8N6uGslHjTSG8rUA7xPDvfjLBb9wRtmd3EyWZfcp2HD/s1600/7021012289_c4d67b1659_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZdXk_UWXpfFUlkmNtyogWYWr8uFVrpb6k-Oa7TKjEkwOeJDjb_IQimXSFyk2xGZSglvp6gKqtERuaPQguz7tHQkS6QAlQ1GqDt8N6uGslHjTSG8rUA7xPDvfjLBb9wRtmd3EyWZfcp2HD/s400/7021012289_c4d67b1659_z.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Another screen grab, sadly more out of focus as i've taken to pointing my phone at my iPad to take screenshots via instagram. Notice that the reflection of my headphone lead poking out of my phone is in perfect focus. As is the side of my head where you can see the other end of that lead going in my ear...</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdIjLbyI5G_uAch43nZ29yHqsQWmogAYJb03s0jxKC4YmwUV1TaXoIbYdGXZk1NVtzXrzfbKXlGrut-0K1W2uFx0rEDwEpx0XMQXuUlBvWUoGVQu6XuMXkoJnbdoSsMyyr2cqhJYKUCfTk/s1600/6875176632_a64df0e3d2_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdIjLbyI5G_uAch43nZ29yHqsQWmogAYJb03s0jxKC4YmwUV1TaXoIbYdGXZk1NVtzXrzfbKXlGrut-0K1W2uFx0rEDwEpx0XMQXuUlBvWUoGVQu6XuMXkoJnbdoSsMyyr2cqhJYKUCfTk/s400/6875176632_a64df0e3d2_z.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Taking things a little further, i'm now bringing the bump map of the grass texture into the calculation. Notice how the lumps of rock are poking through the ground but the fuzzy grass is also overlapping the edge of the rock. I'm pretty pleased with how well this worked.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGeEAEH0GwTc-MTxCW-qfL7EThG5DeFzZpkkTAJMycazKpdbWcvJn2L8XacJXejg_2csSJn1ZXoqcMjZgjpt5XhWig0U2a7N917hcp8rJnSQ4vyqXOYKaEsjTzqczkd188cjy5LTylVA_C/s1600/6875250522_4a4df09d28_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGeEAEH0GwTc-MTxCW-qfL7EThG5DeFzZpkkTAJMycazKpdbWcvJn2L8XacJXejg_2csSJn1ZXoqcMjZgjpt5XhWig0U2a7N917hcp8rJnSQ4vyqXOYKaEsjTzqczkd188cjy5LTylVA_C/s400/6875250522_4a4df09d28_z.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
This last pic, though not as excitingly coloured as the others, is probably the most relevent as it's an actual screen grab of Topia running on my iPhone. This messing with Instagram really brings home how important tweaking colours is going to be as it looks kind of bland in comparison. It illustrates the texture blending pretty well though.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h4 style="text-align: center;">
Battle Engine doing it into textures 'back in the day' (2001)</h4>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br class="Apple-interchange-newline" /></div>
<div style="text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/kN8uc1IrhqM?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com3tag:blogger.com,1999:blog-5023480050590323723.post-51698601060864758242012-02-17T03:53:00.002-08:002012-02-17T08:26:24.334-08:00Game coding is easy but...From the perspective of someone who spent most of the last few decades as a graphics coder, worrying about cycle counts, cache misses and API overheads it always seemed to me that game coding was the easy bit. At this point I should pin down exactly what I mean when I say 'game coding' as other people will draw the dividing lines in a project in different places. I draw them like this:<br />
<ul><li>System stuff</li>
<li>Graphic Engine</li>
<li>UI</li>
<li>Stuff from elsewhere</li>
<li>Gameplay</li>
</ul>Those are in order of how much time i've spent on each. 'Stuff from elsewhere' is any middleware, library, code from your previous game.<br />
<br />
<br />
Arguably 'Graphic Engine' is part of 'System stuff' or 'stuff from elsewhere' but for me at least, it's been a significant part of everything I've ever worked on. Similarly, if you have your shit together 'UI' should be pretty much data driven through code cut and paste from the last game, it never seems to work out that way for me though and I find myself writing a new system from scratch yet again.<br />
<br />
'Gameplay' is the most important part but it also seem like me to be the easiest. From my perspective it<br />
always seems to be the guys writing the game that get to sit around leafing through books on coding style, casually using slow-but-powerful features of C++ or maybe insisting they have to use STL, often not worrying about optimisation. Just making the core of THE GAME.<br />
<br />
The problem is, when you are programming a game on your own it doesn't seem to work like that. It's difficult to find the time to focus on gameplay when there is so much other code to distract you. My previous iOS game Ground Effect for example probably had about a week of solid gameplay coding in the whole project.<br />
<br />
Topia has rather more than a few weeks of gameplay coding but when the is still tedious 'system stuff' and a few tweaks to the 'graphic engine' it sometimes feels like an indulgence to be working on the fun parts like the minds of the creatures or tweaking exactly what it fels like when you stroke the landscape into interesting shapes or direct a herd. Even fixing bugs that cause things like this to happen is kind of fun.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://a2.sphotos.ak.fbcdn.net/hphotos-ak-ash4/430330_10150793214398047_791543046_12352346_756975988_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br class="Apple-interchange-newline" /><img border="0" height="400" src="http://a2.sphotos.ak.fbcdn.net/hphotos-ak-ash4/430330_10150793214398047_791543046_12352346_756975988_n.jpg" width="400" /></a></div><div><br />
</div><br />
<br />
In an ideal world I'd be able to focus on the gameplay (plus maybe those graphic engine tweaks) for the rest of the project and have someone else do the boring bits. Oh well, at least i've been able to spend the last few weeks on what I call 'gameplay', i'll be doing the same with the next few, as long as I don't get distracted by something else. Like maybe making the A5 shader even cooler or putting in those clouds that Josh keeps asking for... Oh dear...Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com2tag:blogger.com,1999:blog-5023480050590323723.post-8427755690922134482012-02-03T07:58:00.000-08:002012-02-03T08:04:59.382-08:00A quick video of some big herds<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/2v0Wehv5Ngg?feature=player_embedded' frameborder='0'></iframe></div><br />
Very quickly thrown together, which explains why you can only see one corner of the iPad screen at one point. I have to admit to being impressed at the quality of the iPhone 4S camera though considering I just pointed it at the thumb print covered iPad and hit record.<br />
<br />
It's very difficult to nurture a herd properly while filming which is why I couldn't muster a herd of 1000+ like in the still shot<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://distilleryimage3.instagram.com/348a82e24e5a11e1abb01231381b65e3_7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://distilleryimage3.instagram.com/348a82e24e5a11e1abb01231381b65e3_7.jpg" width="400" /></a></div>Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com2tag:blogger.com,1999:blog-5023480050590323723.post-59226315908251749642012-01-31T08:50:00.000-08:002012-01-31T08:55:38.011-08:00Watching the grass growJust a quick update with a few grabs of herbivores eating grass and it growing back.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh15zKAPO3ZzQ-ANaZf_OW28R3aXmmPJHjMCfX0Ly05zbgFrtOmJ6zmDgB91SJPT6NwaPKMvJ9XxPNW6du7s7Ut3UUW5JGxJKv5BwhRG1ja_0d-ggHDZrQplemEC5lzkMjk_k5Wp1tIyfjM/s1600/before.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh15zKAPO3ZzQ-ANaZf_OW28R3aXmmPJHjMCfX0Ly05zbgFrtOmJ6zmDgB91SJPT6NwaPKMvJ9XxPNW6du7s7Ut3UUW5JGxJKv5BwhRG1ja_0d-ggHDZrQplemEC5lzkMjk_k5Wp1tIyfjM/s400/before.jpg" width="400" /></a></div><br />
It might not look like much but it means I can actually start filling in the gaps in the ecosystem. Herbivores now get hungry if they find themselves stuck on the grassless areas for too long. Next step is to get happy, well fed herbivores breeding while others starve to death. Not sure I can handle the responsibility...<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1bMnOIkmnZtNwZ6kz8fU99Y3aGSmHag8mBdZZuzs8S3se18ieM2ni4iHoNEUdoZ6DncwajAa42rnGBsYAQw7SgMjatqpM32OLfcsWdlfcKgztkDEoCX44rxvvMB_c817UdRG5irqXhLW6/s1600/after.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1bMnOIkmnZtNwZ6kz8fU99Y3aGSmHag8mBdZZuzs8S3se18ieM2ni4iHoNEUdoZ6DncwajAa42rnGBsYAQw7SgMjatqpM32OLfcsWdlfcKgztkDEoCX44rxvvMB_c817UdRG5irqXhLW6/s400/after.jpg" width="400" /></a></div><br />
It's also worth pointing out that these grabs were taken on an original iPad and show the 'non-A5' simpler shader mode (for 3gs, 3rd gen iPod Touch, iPhone 4 and iPad 1). I've been putting a bit of effort into getting this to look as cool as possible recently and it seems to be working pretty well.Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com2tag:blogger.com,1999:blog-5023480050590323723.post-12454114619434690402012-01-20T13:52:00.000-08:002012-01-20T13:52:15.956-08:00Topia: What's the delay?We first announced Topia almost seven months ago, hoping to finish it in four months. I imagine those that haven't lost interest completely are wondering what's causing the delay. What the hell have I been wasting my time with?<br />
<br />
The initial idea was a game where it just felt good to sculpt the landscape with your fingers and where huge numbers of creatures flocked and interacted in a way that was fun to watch. Beyond that we didn't know where it was going but we were pretty sure it wasn't going to become a standard FPS or farming simulator. We had ideas about the goal of the game being just to keep things balanced.<br />
<br />
After a few months this was kind of working. Even though there was literally nothing to do beyond stroking the landscape into various shapes and watching the animals slide down the steep slopes into the sea it got positive reactions wherever we showed it. The problem was that everyone who saw it seemed to imagine a different final game.<br />
<br />
<div style="text-align: center;"><span style="font-size: large;">Freemium?</span></div><br />
Some wanted a Populous clone, others seemed to want something where you just clicked on animals (this didn't sound much like a game to me at the time but I gather it's how a lot of 'casual' games work these days), others insisted that it just had to be a freemium game, that we could milk users by selling consumable IAP. This last suggestion scared me the most.<br />
<br />
Some have accused me of being anti-freemium because I'm somehow idealistic but it's not that. Or maybe it is. I have a simple philosophy when working on a game, a philosophy which is almost certainly directly related to the fact I'm working on my own on a game I find hard to explain to other people. Basically, I can't work on a game I don't like. Well I can, and have done for too many of the years I have worked in this industry but those were the most boring and also the least productive years. If it's not a game that I want to play then it's not a game I want to work on. I can't imagine wanting to play a game that's basically been programmed to milk me for money so it's looking very unlikely that Topia will be one of those.<br />
<br />
<div style="text-align: center;"><span style="font-size: large;">If that's what it <u>isn't</u>, what <u>is</u> it?</span></div><div style="text-align: center;"><span style="font-size: large;"><br />
</span></div><div style="text-align: left;">That is a very good question. Right now I have to admit that Topia is still not really a game. This isn't because we don't have a very long list of things to try, it's because it's actually a pretty huge project for a single programmer. If I look at the amount and quality of code I've written for this thing it could well be the most productive nine months of my career.</div><div style="text-align: left;"><br />
</div><div style="text-align: left;">So where does it stand right now?</div><div style="text-align: left;"></div><ul><li>The graphics engine is doing its job very efficiently, even on older devices, running at an 'arcade game' frame rate. </li>
<li>The multi-touch UI works really well, the line-drawn herd directing controls are simple to use despite being, to my knowledge, the first game to take line-draw controls into 3D. If it isn't the first to do it in 3D it is definitely the first to wrap that type of control onto a lumpy planet. </li>
<li>The landscape sculpting feels better than I dared hope. I've been wanting to write a new landscape sculpting system ever since we ended up reusing Populous's isometric block system in Populous II.</li>
<li>The in built level editor is half finished. Levels are built from fractals (kind of like Minecraft) but with a fair amount of user control over the fractal generation. </li>
<li>The animal simulation is pretty advanced. Several thousand moving creatures and several thousand static objects can interact with each other, herds form and scatter when predators attack, some eat the grass (which slowly grows back) and explore the planet. There is still a lot to do, breeding and a fully working food chain are going in very soon.</li>
</ul><div style="text-align: center;"><span style="font-size: large;">But where is the gameplay?</span></div><div style="text-align: center;"><br />
</div><div style="text-align: left;"> This is the big question. More info on this coming very very soon...</div>Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0tag:blogger.com,1999:blog-5023480050590323723.post-79873623573403106862011-10-31T04:17:00.000-07:002011-10-31T04:21:54.345-07:00Math(s) puzzleWork on Topia continues but it's one of those phases where it's all UI and making underlying systems more flexible as it evolves from a tech demo into a real game, all stuff that would be pretty boring to blog about and possibly expose me as a hopelessly retro coder which I could probably attempt to pass off as hardcore optimisation or valid prototyping but, as I said, it would be pretty boring.<br />
<br />
Instead, I'm going to set a very simple mathematical problem based on something I saw pointed out last week, I will credit where I saw it but not yet as that kind of ruins the effect. It's really simple maths, or as americans would say "math", I assume they dropped the 's' to make it available for referring to Lego as "Legos"...<br />
<br />
<div style="text-align: center;"><span class="Apple-style-span" style="font-size: large;">The "puzzle"</span></div><div style="text-align: left;"><span class="Apple-style-span" style="font-size: large;"><br />
</span></div>You have to crack a combination lock with a 7 dials, each dial can be turned to ten positions, showing the digits 0-9, the only slightly weird thing about the lock is that each digit can occur only once in the correct combination.<br />
<br />
You can try one combination per second.<br />
<br />
How long will it take to try all valid combinations?<br />
<br />
Give the answer in weeks, days, hours, minutes & seconds<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div style="text-align: center;"><span class="Apple-style-span" style="font-size: x-small;">(don't scroll down if you want to work it out, this is just padding</span></div><div style="text-align: center;"><span class="Apple-style-span" style="font-size: x-small;">in case anyone is actually interested enough </span></div><div style="text-align: center;"><span class="Apple-style-span" style="font-size: x-small;">to post the answer in the comments)</span></div><div style="text-align: center;"><br />
</div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
.<br />
..<br />
...<br />
....Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com5tag:blogger.com,1999:blog-5023480050590323723.post-23361278575303223942011-10-09T08:50:00.000-07:002011-10-09T08:57:33.360-07:00Why iPhone4 - 4S is a more significant upgrade than iPhone3G -3GS wasSince the 4S announcement a lot of people have been saying 'so what?', it's kind of tempting to jump on this bandwagon, specially as I was really looking forward to a bigger screen.<br />
<div><br />
</div><div>But what of the graphics performance? I've read and heard (including on a few iOS podcasts) that it is a far less significant upgrade from iPhone4 than 3GS was from 3G. This is unarguably true in one way, 3G-3GS introduced OpenGLES2.0 and let us graphics coders start using shaders rather like they had been for years on computers and consoles. </div><div><br />
</div><div>But what did the introduction of 3Gs mean to developers?</div><div><br />
</div><div>The OpenGLES1.1 on the original iPhone and iPod touch required us to go back to the fixed function programming that we'd cheerfully waved goodbye to some years earlier. Slightly depressing that, to mix two textures in a single pass I had to get my head round ES1.1's texture combiner stuff which was almost but not quite like I remembered it from old fixed function D3D. Still, I managed to get multitexture on the landscape and water of Ground Effect which looked kind of cool at the time. Looking at other games it seems few even took it this far, they mostly just drew textured triangles.<br />
<br />
<div style="text-align: center;"><span class="Apple-style-span" style="font-size: large;">3G - 3GS</span></div></div><div><br />
</div><div>So along comes 3GS with it's exciting new system, maybe i'll just add support for it into my game but, what's this? I need to rewrite everything? ES2.0 has no built in transform stuff, lighting, a few missing renderstates. All stuff that now has to be done in the shader rather than through gl calls. Much much better but quite a bit of work to get an app to support GL1.1 and GL2.0 at the same time so, it seems to me, very few developers jumped straight on ES2.0.</div><div><br />
</div><div>By the time iPhone4 and iPad1 came out I don't think I had any apps that were enhanced when run on ES2.0 capable devices (I could be wrong). I had a handful of apps that required ES2 but no more than a handful.</div><div><br />
</div><div>At this point developers started supporting ES2.0 natively, they had to because Retina and iPad1 had pretty crappy emulation of GL1.1 (incredibly slow fog for example). Sadly, when you start trying to use ES2.0 shaders at Retina and iPad resolution you find that, if you want to keep the frame rate reasonable, you aren't going to be using very exciting shaders, barely more than what could be achieved with the fixed function really, maybe some primitive diffuse bump mapping or something but, a year or so after the release of 3GS people were finally starting to support it.</div><div><br />
</div><div>Add iPad2 to the mix and suddenly things get interesting, it has something like 9x the GPU performance, it's actually quick enough to run the same kind of shaders we're seeing on the consoles and using that extra performance is pretty easy. Sometimes, it's as easy as just loading a different, longer, more complex shader and maybe turning on MSAA or writing a cool post processing shader.</div><div><br />
</div><div>So, from a gamer's perspective, iPhone4S is being released into a very different world to the one the 3GS was released into. I've heard people theorising about how Epic and Chair must have had early access to 4S to create the Infinity Blade2 demo when, in reality, all they had to do was run the phone version with their very impressive iPad2 enhancements.<br />
<br />
<div style="text-align: center;"><span class="Apple-style-span" style="font-size: large;">4 - 4S</span></div></div><div><br />
</div><div>I suspect there are hundreds of developers who were already including iPad2 enhancements in upcoming apps, thousands who were thinking about it, the 4S is just another very good reason to bother with those bigger, cooler and more fun to write shaders.</div><div><br />
</div><div>Support for 4S will be even easier for those using engines like Unity and Unreal, even if they aren't writing their own shaders, they will simply be able to select more interesting ones.</div><div><br />
</div><div>I guess I'll find out myself on Friday if I manage to get a 4S, unless I've done something really stupid I will see my iPad2 enhancements running on a phone without changing a single line of code.</div><div><br />
</div>Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0tag:blogger.com,1999:blog-5023480050590323723.post-26933237278348921902011-10-05T02:49:00.000-07:002011-10-05T02:49:59.387-07:00iPhone4S, iOS5 & Ground Effect in Glasses free 3DLike a lot of people all over the world I was glued to Apple's presentation yesterday. I had two different live blogs and two twitter windows open at the same time.<br />
<br />
The 4S looks cool but do I need those features? The new camera looks great but it was good before and those tiny optics are never going to do the job of even a decent compact camera, let alone a real one and 1080p? I've shot maybe two minutes of 720p in my iPhone4 since i've had it.<br />
<br />
Of course, as a dev, having something with the power of an iPad2 in my pocket is going to be cool but I don't NEED it, not when i'll have to support iPad1 and iPhone4 for a few games anyway. I have to admit, I'd trade all of the new features for a screen the size of some of the new Android phones.<br />
<br />
<br />
Anyway, I felt slightly dirty afterwards, as if I'd watched X-Factor or something. At least I could kid myself I was really there for news of the iOS5 GM. I set off downloads for the new XCode, iTunes and the device OSes and a mere four hours later (yeah I know, stupid local cable company stops 30 metres from my home) I had them.<br />
<br />
I've had two iPhone/iPod/iPad cables (both falling to bits, like every other dev) hanging out of my mac for a couple of months now and often have two devices plugged in at the same time. I've been impressed with how well iTunes and XCode handle having two devices connected. I thought I'd give iTunes a proper test so I stupidly upgraded and re-synched my phone and iPad at the same time. To my amazement it worked perfectly.<br />
<br />
I was rather less impressed with what happened when I tried to build Topia with the new XCode and run it on the new OS. All I got was a blank screen and the music. On trying a debug build OpenGL was throwing up an error on a line of code that hadn't changed for over six months. After a few hours of very depressing and unproductive hacking around I finally went to bed at about 3:30.<br />
<br />
I woke up five hours later, instantly remembering that my code was broken. I'd been kind of hoping I'd somehow fix the bug in my sleep and wake up with the answer which isn't the most reliable debugging technique but has worked for me several times over the years. I staggered to the mac and waited for my eyes to focus (getting old is shit) and found myself staring at this line of OpenGL documentation I'd left open last night.<br />
<br />
"... The numbers in the command name are interpreted as the dimensionality of the matrix. The number <code class="function">2</code> indicates a 2 × 2 matrix..."<br />
<br />
Pretty exciting stuff to wake up to I think you'll admit. Weirdly, the answer was there, turns out that where I should have been using:<br />
<br />
<br />
<div class="p1"> glUniformMatrix4fv<span class="s1">(parameter, </span><span class="s2">1</span><span class="s1">, </span>GL_FALSE<span class="s1">, matrix);</span></div><div class="p1"><span class="s1"><br />
</span></div><div class="p1"><span class="s1">I had been using</span></div><div class="p1"><span class="s1"><br />
</span></div><div class="p1"><span class="s1"> </span> glUniformMatrix4fv<span class="s1">(parameter, 4*4</span><span class="s1">, </span>GL_FALSE<span class="s1">, matrix);</span></div><div class="p1"><span class="s1"><br />
</span></div><div class="p1"><span class="s1">The real question is how the hell did it ever work before? Anyway, changing that has everything working again, possibly a little faster than before, certainly no slower, which is a big relief on a new OS version. I can't be arsed with getting accurate timings right now to be honest. I might even go back to sleep when I finish typing this...</span></div><div class="p1"><span class="s1"><br />
</span></div><div class="p1"><span class="s1">In other news yesterday, Jeremy from <a href="http://www.jakyl.co.uk/">Jakyl</a> who did a great job of the Android version of Ground Effect released a new version which supports the glasses free 3D on the lovely big screens of the HTC Evo 3D and LG Optimus 3D. Sadly it is of course impossible to show how cool this is in a screenshot so here is a quick Topia closeup instead, showing the new soft animal shadows and the footprints we're using to guide herds.</span></div><div class="p1"><span class="s1"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA4XSelecv2ujqFEhWdxmTD7rZIC3D6IE8OW7iRmYdrAEUx7B3BzZK3MZVQTlMZazWvUDkCgzanOZBNKo5quQ9fkMDf1hheAsU3c7SbGYH3KDdfY8UUGsKdoTIfJlFQFNkfcJ1SRUHTWMU/s1600/Closeup2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA4XSelecv2ujqFEhWdxmTD7rZIC3D6IE8OW7iRmYdrAEUx7B3BzZK3MZVQTlMZazWvUDkCgzanOZBNKo5quQ9fkMDf1hheAsU3c7SbGYH3KDdfY8UUGsKdoTIfJlFQFNkfcJ1SRUHTWMU/s400/Closeup2.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="p1"><span class="s1"><br />
</span></div><div class="p1"><span class="s1"><br />
</span></div>Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0tag:blogger.com,1999:blog-5023480050590323723.post-2830780835414464722011-09-23T13:49:00.000-07:002011-09-23T16:35:02.594-07:00Topia: Vortices & the art of screen grabbing<div class="separator" style="clear: both; text-align: left;">Last night I got stone circles into Topia, these are destinations for herds and a major part of the gameplay. To make them easier to find I threw in a few hundred faint streaking particles that home in on the centre of the circles and move in a cool spiral thanks to simple Newtonian physics, or what I like to think of as simple Newtonian physics. It's just a few adds and multiplies of variables called 'velocity, thrust and momentum' which is about as accurate as I'm prepared, or indeed mathematically able, to get.</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;">Anyway, they are pretty faint and don't really show up well on screen grabs. They look pretty good when moving though which is nice as they aren't just a visual effect. I threw them in as a signpost to the nearest henge-vortex thing. I love it when something serves a gameplay purpose and looks cool at the same time. they can sort of be seen on the following pic.</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;">Josh Tweeted this last night after I sent him a version. I couldn't believe quite how good it looked. I had to check with him that he hadn't done anything sneaky in Photoshop but he swears it's just a grab off his iPad2.</div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-i7vPgJPNdoJtbEYWNuCxzBQL9HdNYC0r-Z_yP6vBSoaF1hThROgyVKvfvZ76iw8N_2cdF5NPo_9VLi1usNypy4TUWOPw10fBl8ds7ZK2cCMm2w4Ra1K97ZVKi7RgwANWj5VvAvGXQaRQ/s1600/JoshGrab.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-i7vPgJPNdoJtbEYWNuCxzBQL9HdNYC0r-Z_yP6vBSoaF1hThROgyVKvfvZ76iw8N_2cdF5NPo_9VLi1usNypy4TUWOPw10fBl8ds7ZK2cCMm2w4Ra1K97ZVKi7RgwANWj5VvAvGXQaRQ/s400/JoshGrab.jpg" width="400" /></a></div><br />
Which is coincidentally very similar to the 'I finally got Retina running at 30 FPS' pic from <a href="http://glenncorpes.blogspot.com/2011/09/topia-optimising-for-opengles20.html">the blog a few weeks ago</a>. It's almost the same view though the old version doesn't have the Vortex as the code for those didn't exist back then.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhri0K1-d7v0z6zJ9etZpVZi9bNG3Nsw8XZduhpY-1wY9iPJhGcFjWSWuGU_GimnehJgTbwIf9KrxLz4r0nsqyztPCtg3C1TUQG3COyrf9DclEgiyql-f8AYyoxyZx6LqDwhb1m9EhE537J/s1600/IMG_0297.PNG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhri0K1-d7v0z6zJ9etZpVZi9bNG3Nsw8XZduhpY-1wY9iPJhGcFjWSWuGU_GimnehJgTbwIf9KrxLz4r0nsqyztPCtg3C1TUQG3COyrf9DclEgiyql-f8AYyoxyZx6LqDwhb1m9EhE537J/s400/IMG_0297.PNG.jpg" width="400" /></a></div><br />
After posting it I got an IM from Josh saying it was "that screenshot you posted looks sort of ugly" which it is.<br />
<br />
I have been considering why that might be. The actual differences are:<br />
<br />
<ul><li>Obviously it's lower resolution,</li>
<li>The Retina view doesn't show the atmospheric fogging well.</li>
<li>Retina isn't using MSAA as the older devices just don't have the pixel pushing power. </li>
<li>The iPad2 version uses a more complex shader, it does this weird subtle thing with the colour bands on the rocks while the fallback shader just uses a low res 'lightmap' and the texture I'm using as the backdrop of this blog for detail.</li>
<li>Josh's grab was taken in the 'early evening' of the day night cycle while mine was taken at 'midday' </li>
</ul><div>Sadly I think it's mostly the last one and Josh's artistic eye which is slightly irritating as most of the other differences were a lot of coding work. I must stop taking screen grabs with 'force daylight' turned on.</div>Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0tag:blogger.com,1999:blog-5023480050590323723.post-35223705699769385692011-09-11T09:57:00.000-07:002011-09-23T16:36:34.800-07:00Syndicate: Is Plot or Mechanic the Essence of a Game?Before I say anything else I should point out that despite working on the previous Syndicate games and knowing people at EA, I know nothing of the new Syndicate remake beyond yesterdays announcement.<br />
<br />
Like everyone else I saw a Tweet, followed a link, read an article containing news news of a very cool sounding game but it didn't sound a lot like Syndicate. Sure, someone had taken the original plot, expanded it in some cool ways but what was the gameplay going to be like? Oh there it is: 'FPS'...<br />
<br />
Don't get me wrong, FPS games are cool, I played Quake, its sequels and games made with its engine multiplayer in the office at Bullfrog and then Lost Toys for at least six years. I've also heard good things about the developer and look forward to seeing where their focus on co-op takes the game. This blog isn't about the developer, FPS games or any predicted quality of the new Syndicate game, it's about the difference between a story and a game mechanic.<br />
<br />
<div style="text-align: center;"><span class="Apple-style-span" style="font-size: large;">The blank stare</span></div><div style="text-align: center;"><br />
</div><div style="text-align: left;">Programming games is hard. It's fun to be coding things that make pretty, animated stuff appear on screen but you come to realise pretty quickly that the artists, designers, producers (and if you are working alone, your girlfriend and kids) aren't going to be interested in the details of it. You get a blank stare or worse. If you want people to get excited you have to translate it into something people can see. Just ask <a href="http://twitter.com/#!/cm_games">Josh</a> :)</div><div style="text-align: left;"><br />
</div><div style="text-align: left;">Similarly, if you're a game designer you could try talking game mechanics but certain people aren't going to understand so you have to translate it into a story to avoid that blank stare. The thing is, talking game mechanics isn't quite like talking code. It's understandable that artists, producers etc. can't talk code but if you are working in games in any of those roles, you should be able to talk mechanics.</div><div style="text-align: left;"><br />
</div><div style="text-align: left;">In fact, the twitter and forum reaction to the Syndicate announcement show pretty conclusively that gamers absolutely know the difference between a story and a game mechanic. Almost everyone seems to want something that plays like Syndicate rather than an FPS based in the same universe.</div><div style="text-align: left;"><br />
</div><div style="text-align: center;"><span class="Apple-style-span" style="font-size: large;">Where the original story came from</span></div><div style="text-align: center;"><span class="Apple-style-span" style="font-size: large;"><br />
</span></div><div style="text-align: left;">Syndicate has a pretty cool story but, I'll let you into a little secret, it's not where it started. Sean Cooper (lead coder and designer) has a great account of how it all happened <a href="http://www.games.seantcooper.com/news/interviews/the-making-of-syndicate">here on his website</a>. Alex Trowers (Designer) also covers it pretty well in his article <a href="http://retrofusion.org.uk/article/584/the-history-of-bullfrog-/">On Retrofusion.</a> </div><div style="text-align: left;"><br />
</div><div style="text-align: left;">My own involvement was pretty minimal, I helped design the isometric system at the start and designed six of the missions near the end but I was sat (mostly working on Magic Carpet) near Sean for the entire project so got a good view of how it evolved and where the plot came from.</div><div style="text-align: left;"><br />
</div><div style="text-align: left;">Weirdly, it started as a side scroller on the Amiga with the main idea being that you controlled four guys. It quickly switched to isometric and became about grouping and ungrouping these four agents and selecting their moods via sliders to enable them to do more useful stuff via 'AI'. Like several old Bullfrog games I would call it a proto-RTS as the genre didn't really exist at the time.</div><div style="text-align: left;"><br />
</div><div style="text-align: left;">So, basically They had these four agents who you could group select and run around shooting. There was no scripted game as such but it could be played multiplayer over the network so more features were added. Controlling a group of four at once was the most fun but it felt kind of limiting, Sean added the 'Persuadetron'. This let you recruit civilians into a huge mob, taking them into battle with you.</div><div style="text-align: left;"><br />
</div><div style="text-align: left;">This is the essence of Syndicate and the story was built around it. People were fitted with 'chips' which explained their susceptibility to the Persuadetron and also provided a plot point of how the control sliders worked on your agents. Why did people have these chips in the first place? It was a kind of electronic drug that everyone wanted. It all fitted together really well and a dystopian, cyberpunk, Bladerunner-esque plot was born.</div><div style="text-align: left;"><br />
</div><div style="text-align: left;">Maybe it all fitted together a little too well and it could seem to some that story came first but it did not happen that way. The game came first, the story second, the way it's supposed to be. We're talking games not books or movies here.</div><div style="text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Vu7dxRtePHM?feature=player_embedded' frameborder='0'></iframe></div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><br />
</div><div style="text-align: center;"><span class="Apple-style-span" style="font-size: large;">Making a sequel after many years</span></div><div style="text-align: center;"><span class="Apple-style-span" style="font-size: large;"><br />
</span></div><div style="text-align: left;">So what happens when a game franchise is picked up after a fifteen year break? I guess at this point you have to work out exactly what the game consists of. Syndicate Wars, the original sequel from '96 had expanded hugely on the original plot, the game was set some years later in a time of rebellion and could be played from three sides. Very cool and it even shipped with a novella. I'm guessing the sequel started by reading this. Sure, it's a cool plot but</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"></div><ul><li>Is it the essence of Syndicate? </li>
<li>Did they talk to people who played and remembered the game?</li>
<li>Did nobody talk about the mechanics?</li>
<li>Did they think about the mechanics and reject them because RTS games "don't work" on consoles</li>
<li>Is there a generation of gamers who think that all games involve running around in first person with a selection of guns or is that just the ones advertised on TV?</li>
<li>Do big publishers underestimate the intelligence of gamers?</li>
<li>Am I (and the other people moaning on Twitter) boring old farts stuck in the past?</li>
</ul><div>Please leave a comment.</div>Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com2tag:blogger.com,1999:blog-5023480050590323723.post-66383536388911290042011-09-06T19:47:00.000-07:002014-02-26T06:06:05.517-08:00Topia: Optimising for OpenGLES2.0<span style="color: #38761d;">Note added 26/2/2014: This blog is more than two years old but i'm pretty sure that most of it is still true. I notice that it gets a lot more views than any other blog I've written, I can only assume this is because people get here from googling some of the GLES keywords. I hope it has been useful to a few people.</span><br />
<br />
Back when I started on iOS development I knew nothing about Objective C, or OpenGL. I'd been writing 3D stuff for over 20 years, originally hand made software renderers before moving to D3D on Windows and a little experience of a few consoles over the years.<br />
<br />
I paid my $99 as soon as OS2 was released, downloaded the SDK, upgraded my original iPhone and started playing around with it in my non-existent spare time (I was working for EA at the time), I didn't get very far before Ben Carter (also at EA and had worked with me at Lost Toys and Weirdwood) ported Weirdwood's old cross Platform Library to the iPhone. When I left EA a few months later I used this as the basis for Ground Effect. It was, as I think Ben would be the first to admit, a pretty quick and dirty port as he'd done it over a weekend!<br />
<br />
It actually turned out to be a pretty good basis for Ground Effect. I barely had to touch Objective C and got away with cutting and pasting a few hundred lines of it from sample code to get Accelerometer, sound and Openfeint working. I also learned a little OpenGLES1.1 as I added support for multitexture, compressed textures and <a href="http://www.glenncorpes.com/3d">Stereo 3D</a> but the rest of it was written using Weirdwood's old, familiar cross platform library. I even had a PC version which I was able to build <a href="http://www.glenncorpes.com/ground-effect-development-1">the level editor inside</a>.<br />
<br />
At the time I had a nagging suspicion that it wasn't very optimal because all of the 3D primitives were using standard glDrawArrays, each being copied to the graphics hardware each time it was used. I checked in the Apple support forums where posts seemed to suggest that GLES1.1's vertex buffer objects wouldn't actually buy me a speedup so released it as it was and I think it was actually fairly optimal for a game targeted at first gen hardware. The same library was also used for Andrew Cakebread's <a href="http://www.massivehadron.com/">Tilestorm</a> games and everything released with it got straight through Apple approval so we must have done something right. Ground Effect ran very well on 3gs, hitting the 60FPS frame limiter most of the time so I didn't seem to have problems with the newer hardware.<br />
<br />
But then I got my hands on the first iPad... I quickly got it running in 1024x768 but was slightly depressed to find it ran at only 13 FPS with all those extra pixels. It turned out that the new SGX devices did a pretty good job at 'emulating' GL1.1 but certain features ground it too a halt. Ground Effect made pretty extensive use of fog. Turning this off made the frame rate shoot back up to 40FPS but I didn't like the way it looked. This is why Ground Effect hasn't yet been updated for Retina or iPad.<br />
<br />
I decided to take the plunge and add support for OpenGLES2.0 so I could do the fog myself in the shader.<br />
This proved a much bigger task than I'd thought but didn't fit too well along side a full time job and when I got back to iOS dev full time, I was focused on other projects beside Ground Effect.<br />
<br />
<div style="text-align: center;">
<span class="Apple-style-span" style="font-size: large;">OpenGLES2.0 is easy...</span></div>
<br />
Initial experiments seemed to show that the slow pixel shaders on iPad and Retina were the limiting factor to performance. In fact, I found myself telling people it was the only limiting factor and arrogantly announced to anyone that would listen that iOS devices were piss simple and the only thing that mattered was optimising pixel shaders.<br />
<br />
I was wrong.<br />
<br />
Well, I was was kind of right in certain circumstances... My initial test apps which used my old library with shaders hacked in and didn't do much beyond submit geometry, in this case it seemed my arrogant assertion was sort of right, as long as the CPU had nothing better to do than shunt data around for the GPU.<br />
<br />
Armed with this 'knowedge' I set about writing the graphics engine that became Topia. As it became a game it was very much focused on iPad, initial demos running at around 25 FPS but then I got an iPad2... Shaders got cleverer, there were a few thousand creatures wandering around interacting with each other and a few thousand static trees, all reacting to changes in the landscape. As the CPU was now busy doing all of this simulation stuff the iPad1 speeds got worryingly slow (maybe 10 FPS) but it still ran at a semi playable speed on iPhone4 (20 FPS or so) as long as I disabled Retina and ran at 480x320...<br />
<br />
Meanwhile the iPad2 version ran at a solid 30 FPS and would happily make 60FPS with the frame limiter turned off.<br />
<br />
I started getting scared. It was time to really focus on gameplay but it was looking like I had an iPad2 (and presumably iPhone5) only game.<br />
<br />
I really had to spend a little time actually working out what the iPad1 and Retina display could actually handle so dropped everything to do a bit of optimisation.<br />
<br />
<br />
<div style="text-align: center;">
<span class="Apple-style-span" style="font-size: large;">Optimisation</span></div>
<div style="text-align: center;">
<span class="Apple-style-span" style="font-size: large;"><br />
</span></div>
First thing was the Textures. My hacked together system had support for pvr compressed textures, 32 bit RGBA and nothing else. The hardware also supports 16 bit RGB, a couple of flavours of 16 bit RGBA, one 8 bit monochrome or alpha and two channel 'IA'. Rather than write my own support for all of these I did what many sensible developers have done and used the texture system from <a href="http://www.imgtec.com/powervr/insider/powervr-sdk.asp">The PowerVR SDK</a>. This saved huge amounts of memory but provided a barely measurable performance increase.<br />
<br />
The next step was to include support for partial texture updates. This was a rather pleasant surprise as it turns out to be very efficient, very much not like the old D3D support back in DX7 which sort of pretended to work while actually updating the entire texture. It didn't buy a huge speedup but did smooth things out as the old version had done a full texture update once per second. The frame rate didn't really change noticeably.<br />
<br />
It was time to take the plunge and look into using those OpenGL Vertex Buffer Objects. These are designed to allow the graphics data to live on the GPU rather than need to be copied from the CPU's memory every frame. Unfortunately a hell of a lot of Topia's graphic data is generated every frame but they still theoretically help on 3gs or better hardware.<br />
<br />
I wrote a whole new primitive system and moved every draw call in the game to use it. The static geometry was now much more efficient and the dynamic stuff was double buffered and running with the GL_DYNAMIC_DRAW hint. It was much faster but unfortunately not fast enough. iPad1 was up to at least 16 FPS, a big improvement but not slick enough for what we wanted. Switching to tripple buffered was a slight improvement but not enough.<br />
<br />
Next I decided to attack the shaders and started loading them into PowerVR's PVRShaman shader tool. The very first thing I noticed was that the 'mix' instruction in the water fragment shader was a huge hit. I was using 'mix' to blend between the calculated colour and the global fog in all my fragment shaders. Basically doing per-pixel fog which was pretty pointless with the high polygon density. I moved light and fog calculations out to the vertex shader, reducing the pixel shader's fog and lighting to just a multiply and an add from a couple of 'varyings'.<br />
<br />
On timing the new shaders I was safely over 20 FPS but by now I was shooting for 30. Just looking at an area of water was the worst case as the translucent water on top of the landscape shader was just too much pixel shader work. I was starting to worry that the water was going to have to become solid and Josh wouldn't be able to see his beloved sea creatures.<br />
<br />
The water's fragment shader also had a couple of clamps in it that are vital for the water edge effect and couldn't be moved out to the vertex shader. I decided to try an old trick of using a small clamped 1D texture to achieve the same result. This worked well and got us to around 25FPS. A significant speedup but pretty useless as it wasn't 30. One cool aspect of this is that the texture lookup can do rather more than the clamps did. I was able to generate a wave that gave a much nicer water edge effect. Also, iOS shaders don't actually support 1D textures so I was able to use the other dimension to animate this wave, all while running faster than the older, simpler effect.<br />
<br />
So, after all this work, things were better but still not close enough to 30 FPS, it sort of hit the magic 30 when looking at a bland bit of landscape zoomed in with no water visible but that isn't enough to claim 30 and it felt jerky when scrolling around.<br />
<br />
I then broke out the XCode instruments to see what the OpenGL analysis thing thought of my code, it suggested many things, told me the CPU was still waiting for the GPU at times, asked me why the hell I was using VBOs when I could be using VAOs and whined on about redundant state changes.<br />
<br />
I hacked away at most of these issues, the move to VAOs wasn't going to do much for Topia as it uses so few draw calls but I did it anyway as it'll prove useful in other apps. I kept on checking the frame rate but I seemed to be stuck at 25.<br />
<br />
After all of this I was starting to conclude that 30 FPS just wasn't going to happen, I was about to change everything and target 20 FPS instead but then I rememberd something. That GL_DYNAMIC_DRAW I was using for all the dynamic geometry... Didn't I read about a third option? yeah, there in the documentation was GL_STREAM_DRAW. I hadn't used it because the notes were slightly confusing, intending to maybe try it later. I thought 'what the hell' and changed one word from DYNAMIC to STREAM and hit run...<br />
<br />
The result was a solid 30 FPS on both iPad1 and iPhone4 in Retina.<br />
<br />
I slept much better that night.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhri0K1-d7v0z6zJ9etZpVZi9bNG3Nsw8XZduhpY-1wY9iPJhGcFjWSWuGU_GimnehJgTbwIf9KrxLz4r0nsqyztPCtg3C1TUQG3COyrf9DclEgiyql-f8AYyoxyZx6LqDwhb1m9EhE537J/s1600/IMG_0297.PNG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhri0K1-d7v0z6zJ9etZpVZi9bNG3Nsw8XZduhpY-1wY9iPJhGcFjWSWuGU_GimnehJgTbwIf9KrxLz4r0nsqyztPCtg3C1TUQG3COyrf9DclEgiyql-f8AYyoxyZx6LqDwhb1m9EhE537J/s400/IMG_0297.PNG.jpg" height="266" width="400" /></a></div>
<div style="text-align: center;">
30 FPS in Retina!</div>
Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com2tag:blogger.com,1999:blog-5023480050590323723.post-26761667454537014282011-08-19T16:49:00.000-07:002011-09-23T16:37:38.133-07:00Topia landscape modelling vid<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/flMDecH4lgA?feature=player_embedded' frameborder='0'></iframe></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;">I finally managed to make a video of Topia's landscape modelling. Thanks Jack for helping out.</div><div class="separator" style="clear: both; text-align: left;">Hopefully this will illustrate some of the points I've found it slightly hard to make over the last few posts.</div>Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com1tag:blogger.com,1999:blog-5023480050590323723.post-91994640311127637272011-08-08T08:23:00.000-07:002011-09-23T16:38:50.033-07:00Topia: Zoomed out all the way<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn7hftyRxHYFzmZuEB438vFyhHXi15c5lsBGDwALmGL36nlCgBEX9Q9_H0NkEL_7Hr6CYRdULTBvK3MbB0m7cfPvFdDsOvfN27SrX7bAybl3EFwlyczM2Lp7U_Oemg514N4yfpuhDcGRp2/s1600/IMG_0078.PNG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn7hftyRxHYFzmZuEB438vFyhHXi15c5lsBGDwALmGL36nlCgBEX9Q9_H0NkEL_7Hr6CYRdULTBvK3MbB0m7cfPvFdDsOvfN27SrX7bAybl3EFwlyczM2Lp7U_Oemg514N4yfpuhDcGRp2/s400/IMG_0078.PNG.jpg" width="400" /></a></div>Distractions, Distractions...<br />
While fixing an irritating bug in the fog calculations I seem to have inadvertently enabled zooming all the way out. That's going to be staying in :)Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com1tag:blogger.com,1999:blog-5023480050590323723.post-17254125656804348612011-08-01T19:12:00.000-07:002011-08-01T19:12:23.675-07:00Quick Topia update<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKsC20xdIvzNR05A2D6MDvYZgYeVSPtiDyUCWjT1Usu1yYzS1vyfYQtrac-zcN5vfhaCAw0gesNDB_3mG01eDejyuH6u1KboYvxsarRK6zeNtWpkKUBiwraZLTpDL9Q-JXnMj08sS8KOm9/s1600/IMG_0075.PNG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKsC20xdIvzNR05A2D6MDvYZgYeVSPtiDyUCWjT1Usu1yYzS1vyfYQtrac-zcN5vfhaCAw0gesNDB_3mG01eDejyuH6u1KboYvxsarRK6zeNtWpkKUBiwraZLTpDL9Q-JXnMj08sS8KOm9/s400/IMG_0075.PNG.jpg" width="400" /></a></div><br />
It's been a while since I've updated the blog because I've been very focused on coding recently. This screenshot shows a few new features. Grass now grows on flat surfaces and will soon be visibly eaten by some of the animals. Particles have just gone in and will get a lot cooler when I have some actual graphics...<br />
<br />
The icon in the bottom right is part of the new experimental UI. It shows the currently selected 'single finger' mode (in this case direct control of a herd) but is also the menu itself. It's this mad gesture thing, touch the button and swipe in various directions to select EVERYTHING, it's hard to describe but it's possible to get to any mode in a fraction of a second. I'll stop describing it, a video will make it all much clearer. Testers are liking the concept though and it really helps keep clutter off the screen.<br />
<br />
It's also now possible to select and direct creatures. This is currently represented by coloured flames on the creature and the destination which is kind of silly but does make the game feel very dynamic. Direct control also makes it possible to coax even bigger herds into existance, which is still the nearest thing we have to a game. For now...<br />
<br />
Under the hood we now have support for every texture format supported by iOS which is going to save memory and speed things up. The particle system has also been completely rewritten and is now significantly faster.<br />
<br />
Video and more info about the experimental UI coming soon.Anonymoushttp://www.blogger.com/profile/00125029044869798358noreply@blogger.com0