The Code Zone Bargain Basement Blog


Imparting Game Development Wisdom of Dubious Quality Since 1998

Tuesday, May 19, 2009

Handheld pains

Ahh, handhelds. I friggin' hate developing for handhelds.

I'm more or less officially between projects, and I'm getting pestered to move some of my games to handhelds, specifically iPhone. While it appears that iPhone and Android and Blackberry and Windows Mobile are about 90% the same and it should be logical that I ought to be able to make some kind of cross-platform effort, it's simply not the case.

First off, Apple doesn't want it. Apple's finally the 800 pound gorilla of a platform, and they're taking advantage of it in a big way. When your market share is 5%, you can't really dictate terms for what's gonna appear on your platform, so no matter how much the term "port" makes you cringe you live with it.

When your market share is much larger (although in the grand scheme of cellphones the iPhone's market share isn't all that huge, but it does dominate in the "phones that people actually download stuff to", demographic, thanks mostly to their well thought-out "app store", but I digress), you're in a better position to dictate terms.

And their terms are "we get to content police our stuff however we want". And right now that pretty much boils down to "no ports". Apple's got a really weirdly-worded "no third party API's" clause in their content-policing terms. It was apparently written by marketers because it doesn't actually mean that. It basically means "your app must be written in Objective C and if we get a whiff that something's being interpreted, even if it's being interpreted by an interpreter we included in our phone, then you're out". This is happening right now with a gizmo called PhoneGap that allows you to write apps using Safari as the presentation layer and javascript as the back-end, but with all the appearance of being a native app (ala Adobe AIR minus Flash). Some nice stuff has been written with it, but Apple's content-police suddenly started giving the thumbs-down to PhoneGap developed stuff.

There's also Appcelerator Titanium, which is a similar AIR-esque effort that's being helped along by my good pal Don Thorp. While mobile devices are also in its roadmap, unless I see something from Papa Bear Apple that they're not gonna dump Titanium-written apps on general principle, I can't invest the effort.

Mind you, iPhone has a conspicuous exception to this rule in Unity3D, which is a javascript-Driven 3D engine. In this case, it's one of those "well, we'll make an exception for coolness", as there are some very cool Unity3D games.
There's also the probability of genuine according-to-Hoyle Flash appearing on an iPhone. It's no secret that Flash will appear on iPhones as well as Android phones. And if it did appear, it would make my porting efforts trivial, but there's still the question of app support. There's the distinct possibility that Apple will deploy Flash only as a plugin for their browser and not as a generalized runtime engine. While Adobe AIR on an iPhone would usher in a big rush of applications, it does bring up the whole "port" thing that's made Apple cringe since the 1980's. Twhirl on an iPhone may be a terrific thing, but if I can also install the same Twhirl to an Android/Blackberry/WindowsMobile, then Apple's magic of exclusively-written apps is gone.

So right now I'm working on the assumption that Flash may appear on the iPhone, but they're gonna hobble it in the same way they're hobbling Safari's javascript interpreter - it's useful for showing stuff in their web-browser, but don't plan to see your app in the app-store if you try to use it anywhere else.

Bottom line seems to be that if you want any chance with the content cops, you need to write your app in native Objective-C or in Unity3D. And, unlike OpenGL, Unity3D isn't a 3D technology that can also do 2D stuff if you set it up nicely. And my stuff's all 2D. So I'm thinking Objective-C it is. And an Apple-only codebase. Just the way Apple wants it.

Although I'm still thinking hard about Unity3D because I haven't written any C in a LONG time and the thought of learning a C-based OO language that's not portable to anything and has no garbage collection makes me throw up in my mouth a little. At least with Unity3D, I could recycle a little of my code. Although the thought of having to make 3D models of everything makes me weary.

Thoughts?

Monday, May 18, 2009

Get yer brute on

Just for giggles, I made up a gamedev.net clan for mybrute.com. For those uninitiated, mybrute.com is a very silly little game in which you pit your character (your brute) against other brutes. As you progress, you'll get more weapons and abilities.

It's mildly fun, and it only takes about five minutes of your time. Feel free to try it out.

Here's my brute's URL if you wanna make your own brute to fight her. Note, though, that my brute (Shmooky Booky) is at level ten and will most likely mop up the floor with you if you're just starting out.

http://shmookybooky.mybrute.com/

Be sure to give your brute a password so you can log in later and fight more. If you have a brute and you want to join clan gamedev, here's the URL to join up.

http://mybrute.com/team/15319

The clan will hold up to 50 members. I think I have to approve the members, but I don't plan to be picky about it. Just join up and say howdy.

Tuesday, May 05, 2009

How to write a losing pitch for your indie game project

First off, sorry that thecodezone.com is down. My hosting provider is working to bring things back up, but things are going much more slowly than I thought they would.


Now then, on to the title. About six weeks ago I got pestered by one of the Mochiads people regarding their "make a batman game" contest. I saw the contest but hadn't pitched a game design because I had a couple of questions regarding licensing of the winning entries. Once they allayed my fears that they I wouldn't be selling off any IP or rights to my own stuff, I pitched a game that'd been rattling around in my brainpan for a little while.

And it was a puzzle game. With explosions. But I thought it had a little more to it than that. I gave a hard look to Meltdown and Pop Pies with an eye towards what makes those games more popular than my other puzzles. And in both cases, it came down to that lizard-brain gratification you get from getting something REALLY right. In Pop Pies, it's that really bigass explosion of 30 or 40 pies.

And incidentially that's one of the reasons I made the explosions sequential things in Pop Pies 2. If you make a really big explosion in PP2, not only do you see a lot more sploding, it goes on for a lot longer. Some people don't like the longer explosions, but most prefer the giant gratifying RATTA TAT TAT you get from blowing up half the board in one shot.
And it's similar in Meltdown. The gratifying part of Meltdown is setting up the board just right so that when you touch off one big atom, it sets off that big chain reaction that blows up the whole board. When the smoke clears, the board is empty and you're well ahead in points and particles. Happy happy!

It's what Jesse Schell referred to as "the ice cream" in one of his talks at GDC Austin. When he was designing games for the cool-but-didn't-catch-on Disney Quest interactive theme parks, one of the design decisions was "how much ice cream do we give 'em?" when playing a game. When you're playing Super Pirate Battle, how far should a newbie player be able to get?

And that's a valid question, especially with the Disney Quest video games because the majority of people playing the games will be playing 'em for the first and possibly only time, contrasted with the Mortal Kombat machine at your local pizza place that's available at a thousand other locations and can be played dozens of times.

Should novice players be able to get all the way to the level-boss?

The decision from above came down as "Give 'em the ice cream and the sprinkles and the whipped cream!", translated as "give the first-time players the broadest experience we can give 'em". This decision did make the games awfully gratifying (as I can attest when myself and Shelly and two other friends destroyed the evil "boss" pirate ship in a room-size four-player pirate game), but it hurt replayability pretty badly. Unless I bring along some new players next time I visit, I'm not going to be waiting in line to play the pirate game again.

Back to the lizard-brain gratification or the ice cream or whatever. There's an event where you just know you did everything right and the game rewards you for it. And Pop Pies and Meltdown have that in the form of a big noisy "SHKLABOOM" that's all the validation you need that you're a master of the game.

And I'd been toying with making more of that for Meltdown. Rather than a random Meltdown where you sometimes blow up the whole danged board and you sometimes limp to a half-blowed-up board, what about a puzzle-based Meltdown where you HAVE to wipe out the whole board with one shot? Similar, but not exact, stuff had been done before. And this Batman thing was happening. So I mocked up some screenshots with the Batman-themed clipart and backgrounds they provided and pitched it to the Batman overloads.

And it didn't win.

Not exactly sure why. Maybe the concept was too deep. Maybe the pitch was too thin. Maybe I misjudged the kitschy retro-feel that they were going after with the cartoon. Maybe explosions just aren't done in games anymore (as I can attest from a licensed "Marvin The Martian" cellphone game I wrote a buncha years ago where we BEGGED to make the objective "Destroy the Earth", but were reduced to "Fix your communications dish"). Maybe puzzles just aren't "twitchy" enough for the Batman cartoon audience.

Feel free to post your own theories in the comments.

I might still end up making it, sans-Batman of course. Only problem I see is that progressive puzzle games don't lend themselves well to scoring. And scoring is the basis for challenging. And challenges are the wind beneath the wings of a million facebook-friends playing your game. And that's where the money is. Some of my canned puzzle-games like Duck Tiles just don't get many facebook eyeballs because there's not a good challenge motive. "Hey I just beat level 14 in Duck Tiles" just doesn't have the same one-upmanship potential as "I just scored 12,000 in Pop Pies 2, thus proving that I am superior to you".

Here's the design. Not sure how seriously the licensing overlords are gonna take that whole "entries become the property of. . ." bit. It didn't win, so I can't much see the harm in it.

Also that little "portfolio" bit at the end was a bit of "convince us that you can actually make the game that you envision". The winning games are gonna make up the backbone of a Batman-themed game portal, so they did want actual working games at the end.


Batman's Warehouse Wallop

In a sequel-of-sorts to my chain-reaction puzzle game "Meltdown"

http://www.mochiads.com/games/meltdown/

Batman must destroy the enemy warehouses/labs/hideouts by placing assets (most, but not all of which are explosive) on the board so that they'll all be destroyed with one shot from the batarang.

To muck up the works, some of your friends (or innocent bystanders or lab techs) are trapped in the warehouse/lab/hideout, so you have to place the assets carefully so as not to hurt them. If you fail to achieve your objective of destroying the destroy-ables without injuring the bystanders, you'll have to start the level over. And you have a finite number of tries before the game is over.

Unlike the original Meltdown, the puzzles will not be random but will be human-designed and will get progressively more difficult. In addition to the game itself, there will be a simple level editor (reachable from the main menu) so people can try their hand at building their own challenges.

Also unlike Meltdown, you won't be wiping out a board with several shots. You need to place items and shots cleverly so that you can clear the board with a single wallop from the batarang.

Finally, the assets will change throughout the game. Starting with simple barrels that explode and send shrapnel in six directions, you'll encounter shields that toggle on and off when hit, tanks of poisonous gas that must be avoided at all costs, and the like.

I envision about 20-25 hand-built levels in the finished game, and they'll grow in difficulty from quite simple at first to nigh-impossible near the end.

Also, new assets will appear as levels grow more difficult. For example, tanks of gas might not appear until level four. Toggle-shields in level nine, etc.


Here's the start of a fairly easy level. The items currently on the board are fixed and immovable. The assets in the corner can be dragged to the board to get it in a form so that you can achieve your objective with one shot.


Now I have the barrels placed, along with the rock to protect Blue Beetle from injury. I fling Batman's batarang at a barrel to explode it, sending flaming barrel-bits in six directions to destroy the other barrels.


Finally, here's a shot of the completed level. The barrels are reduced to smoke. Blue Beetle is safe behind the rock. Your objectives are accomplished, and you can move on to the next level!




My portfolio of currently-available Flash games is at:

http://www.thecodezone.com/playnshare.php

In addition, I have literally dozens of pre-Flash puzzle, arcade, and card games that I've written since the early 90's.

http://www.thecodezone.com/games/retro.php

Friday, May 01, 2009

Several things today, as always. I intended to write this yesterday, but I ended up at a City of Denton land development meeting (it's a long story), so I write today.

First off, I won the Silly Rage contest! It's a minor win, but a win just the same. For the uninitiated (and you are most likely uninitiated, as it was just invented a couple of days ago), "Silly Rage" is a budding twitter-meme (tweme?) in which you rage against something completely pointless. This was coined by Bill Corbett (of MST3K and RiffTrax and Film Crew and the script to that unfortunate "Meet Dave" movie last year). Basically he instructed us from his twitter feed for us to rage against something pointless in 140 characters and tag it with #sillyrage. The top rage would win a fabulous downloadable prize worth $3.99. My winning entry was the following. . .

johnhattan didn't realize that a horse was a horse. Thanks for rubbing
it in with "of course of course", condescending TV songwriter pricks.

(If you don't get the joke, then you're too young. Go back to watching Dora the Explorer.)

I was actually co-winner. The prize was also given to another user for

"..." Ellipses my ass. I see you, periods. Don't think you can be
a whole different punctuation just by traveling in groups
.

Yes, it's a minor win. A very minor win. But whenever I get my funny validated it is a validation of my own fragile psyche. This win was tempered by two of my cousins saying they don't get my jokes. I can definitely see why, given the dry layers of subtlety in my humor.

Oh wait. It was a joke about freakin' "Mister Ed". Never mind.


Okay, that was pointless. On to actual work. Work on my next game, a Flash-based followup to my endlessly frustrating "Head On Collision" game is doing well. At first I had a hardcoded "maze" like the original one here.


The game, as I mentioned, is quite frustrating. You're the gray car going around the maze counterclockwise. The red car is going clockwise and is trying to kill you. You can only change lanes in the empty areas. You must collect up all the dots.

The AI required in this game is dirt-simple and amounts to "get in the same lane as the player". And it's so effective that the game's difficult even if the enemy car moves randomly (especially in higher levels where there are two enemy cars). And, like the 70's era arcade original, your chief weapon against the enemy is that you can accelerate while they're locked into a single speed, so with a little planning, you can usually force your enemy to choose a track before you do.

But one thing that'd bugged me about the game was that there were a couple of "deluxe" editions with non-square "mazes". Here is a fairly cheesy video of just this.

So I decided that this version would not only have a non-hardcoded maze, but the mazes could change from level to level. So I dragged out my free level-editor of choice, made some tiles, and drew up some levels. It took a few iterations of tiles, eventually coming out with lane-numbered tiles so the enemies could determine what lane they were in. I needed this because it's fairly trivial to figure out your lane in the above square maze, but this one is a mite more involved.

Thus-far it's working out fairly well. I'm still not sure how I'm going to handle the main menu and the progression and such. Is the maze above going to be level three, or will you choose this maze from the main menu and get to play it to its conclusion (you beat the maze or you run out of cars) and then you'll get a score and are returned to the main menu.

One other thing I found interesting about the above video, a little after 2:10 in, the car reverses directions and is then going the same direction around the maze as one of the enemies. The arcade game (at least this version) played pretty fast and loose with direction. In my maze above there's still not a way to un-knot yourself and end up going the same direction as the enemy. I don't see why that'd be a problem with collisions or such, so I might give it a try.

Also in my old version, the enemy cars were smart enough to never end up in the same lane together so I didn't have to worry about what happened if enemies collided. In the gordian knot mazes I can make now, that'll be nigh impossible to work around, so I'll have some kind of event if enemy cars collide. Maybe temporarily disable one.

But I digress. One thing I learned from Pop Pies and Pop Pies 2 is that brevity is one of the keys to replayability and the "viral" nature of Flash games. Games that you can play for an arbitrarily long time don't do as well as games that you play for three minutes and then finish and get on with your life (or press the "play again" button). While games like my recently-released Think Tank could conceivably be played for an arbitrary time, in reality it gets so difficult around level four or five that you'll be toast.

But this is an arcade game and not a puzzle game, albeit it does have strategic elements. People expect to collect all the dots and then move to the next level. They might resent playing several times until they manage to collect every dot just to be presented with a "good job collecting all them dots, your score is 5211 points. Try to collect 'em all faster next time."

Also there's the "diamond versus ball of mud" element. The original "square" version of the game is taken down to its basest elements. I could certainly add little bonus gizmos that immobilize the enemies or collect every dot within a hundred pixels or stuff like that. From Pop Pies 2 I learned that adding mud to a diamond isn't really much of a problem. I added several little random helper bonuses to it, and it made the game more popular. While that does mean that there's less of a strategic element to the game (honestly, the best scores are as much due to luck as skill), people don't seem to mind so much the luck element as long as they get that lizard-brain gratification that comes from blowing up a truly colossal chain of pies.


And I did realize that "diamond versus ball of mud" is an obscure term, so I'll define. It was originally used to describe programming languages, but I find that it works better when defining small-scale games. A diamond is a game that is small and perfect. All of the elements fit together. You cannot remove anything from a diamond. And if you add something to a diamond, you don't improve it.

A ball of mud is a game that's defined more by what is added to it than its "core". A perfect example of a ball of mud is SimCity. No matter what you add to the game or remove from it, it's still SimCity. Yes, there's a "core" game somewhere, but it's useless without some amount of mud.


And speaking of lizard-brain gratification and winning things, later I'll post some lizard-brain gratification that lost something. There's enough blog here for now, so I'll talk about it in a day or two.