Showing posts with label Design. Show all posts
Showing posts with label Design. Show all posts

Tuesday, 17 November 2015

OK, Lets get Fat Owl With A Jetpack finished...

Fat Owl With A Jetpack, development continues...

Over two years ago I posted this blog 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.

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.


Too old to learn?

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.

In game editor

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. 

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. 


What next?

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.

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...



* If this means nothing to you, don't worry about it, code talk stops at the end of the paragraph.
**  Populous, Dungeon Keeper, Ground Effect, Topia and the Stunt Car Racer remake that we were making at Lost Toys.
*** Now featuring exciting new C++11 features and STL!
**** 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?

Friday, 23 August 2013

The magical story of Fat Owl With A JetPack

Fat 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.





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...

 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 moaned about at length before games aren't stories.

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.



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:

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...

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.


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.




So late one night last spring, in a slightly, erm, meditative mood, I was thinking:

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.

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?

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...


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.

Tuesday, 23 October 2012

Topia is out! Where's the update?

The last few months of dev

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.

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...

So, I set about fixing bugs, made a tutorial mode and, after a little testing, submitted Topia to Apple.

Release

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...

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.

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.

Update

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.

hopefully it'll be submitted very soon. Enhanced creature AI and actual game modes after that.

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.


Thursday, 23 August 2012

Topia update

Where the hell is Topia?

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...

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.

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.

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...

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.

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.

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.

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.

Sunday, 11 September 2011

Syndicate: 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.

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'...

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.

The blank stare

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 Josh :)

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.

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.

Where the original story came from

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 here on his website. Alex Trowers (Designer) also covers it pretty well in his article On Retrofusion. 

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.

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.

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.

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.

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.




Making a sequel after many years

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

  • Is it the essence of Syndicate? 
  • Did they talk to people who played and remembered the game?
  • Did nobody talk about the mechanics?
  • Did they think about the mechanics and reject them because RTS games "don't work" on consoles
  • 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?
  • Do big publishers underestimate the intelligence of gamers?
  • Am I (and the other people moaning on Twitter) boring old farts stuck in the past?
Please leave a comment.

Friday, 19 August 2011

Topia landscape modelling vid


I finally managed to make a video of Topia's landscape modelling. Thanks Jack for helping out.
Hopefully this will illustrate some of the points I've found it slightly hard to make over the last few posts.

Monday, 8 August 2011

Topia: Zoomed out all the way

Distractions, Distractions...
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 :)