The dawn of a new project

Sprites are being drawn, touches are responsive. Hoping to get the tiles up and running tomorrow.

Some placeholder mangs

Some placeholder mangs

iBubbe and UIBattle are now available!

Apple finally got around to approving my two apps, and they are now available for download in the app store (as of last week). iBubbe download

Constant disapproval.

Constant disapproval.


iBubbe Info

UIBattle Info

UIBattle rejection No. 1

My goal was to see if I could make a fun iPhone game using only Apple’s interface elements.  Short development time, no art asset creation, quick submission/approval, no problem.

The game play is a simple, arcade-style setup.  Elements descend from the top of the screen and they must be turned off before crossing the Progress Bar of Destiny.  You get one point for each inactive element that crosses the bar.  If you let a live one through,  the game taunts you and restarts.  Fun!

The whole thing took about a day and a half to code.  I settled on these three elements to use as my enemies: the slider, the switch, and the button.  I made a neat little icon (which was the only time I needed to open up Photoshop), took some screen shots, and sent it off into the abyss.

About two weeks later I receive Apple’s rejection:

Please include the line below in follow-up emails for this request.

Follow-up:  ********

Dear CleaverSoft, LLC,

Thank you for submitting your application to the App Store. Unfortunately, your application, UIBattle, cannot be submitted to the App Store because it uses standard ContactAdd and DetailDisclosure buttons for actions which are not their intended purposes (see attached screenshot).   Applications must adhere to the iPhone Human Interface Guidelines as outlined in the iPhone Developer Program License Agreement section 3.3.5.

The ContactAdd button is to be used to display a people picker to add a contact to an item.  The DetailDisclosure button is to be used to display a new view that show details about the current item.  Implementing standard buttons to perform other tasks will lead to user confusion.  It would be appropriate to use a custom icon.

Please review the System-Provided Buttons and Icons section of the iPhone’s Human Interface Guideline here:
<https://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/MobileHIG>

In order for your application to be reconsidered for the App Store, please resolve this issue and upload your new binary to iTunes Connect.

Regards,

iPhone Developer Program
****************************

Buttons



iBubbe updates

iBubbe, the premiere virtual jewish grandmother for iPhone, now supports audio clip selection via a picker wheel.  Check that off the list.  I also enabled the accelerometer… right now all it’s used for is to summon/dismiss the picker wheel (which doesn’t really make that much sense, but it’s useful for testing).  I think the final version will use shaking to cancel her speech.

The more I play with the interface builder the more I appreciate it.

White to move, mate in 10

It’s a long mate but it’s not too hard :) This happened naturally in a game of mine recently, thought it was cool enough to share.

White to move, mate in 10

White to move, mate in 10

There is no ‘L’ in Knight

I should preface this by saying that I am by no means a chess master.  I have a love for gaming, chess in particular, but have never played chess competitively.  Despite this (or, more likely, because of it) my appetite for the game remains unabated, and often I will find myself trying to create a new opponent out of the people sitting near me.  ”Oh, a chessboard,”  I might remark, “wouldn’t it be a lark to play a quick little game?”.  ”I haven’t played in years, but I think I remember how,” they will reply.  And now the trap is set.

We recap the rules and movement of the pieces as we set up the board.  The Pawn’s diagonal capture, the Bishop’s, Rook’s, and Queen’s long contiguous paths, the King’s slow, omnidirectional plod.  ”And the Knight?” I ask.  Invariably, they will tell me that the Knight moves in an ‘L’ shape.  And this is true.  But I detest it.

The L Shape

The L Shape

Describing the Knight’s movement as an ‘L’ is a twofold problem.  First, it immediately discounts the Knight’s unique ability to jump over other pieces.  He is not moving two squares over and then one to either side, he is in fact leaping directly to that final square.  Furthermore, to think of the Knight’s movement as this sort of  odd little path requires the chess beginner to account for two completely unrelated squares in every move.  For a knight with a full range of movement, this is [8 x 3 =] 24 squares when the knight is only attacking 8.

But the real problem I have with the ‘L’ description, and the reason for this post, is that it hinders further understanding of the Knight’s movement. Consider what happens if we envision the Knight’s movement as simply a circle of attack based on his initial position:

Move 1

Move 1

Here we only need to picture the radius of the circle to find the squares under attack (while also possibly considering the restriction that the Knight cannot attack along his current rank and file).  This is substantially less information to hold in mind, and also opens the door to the radial symmetry of the Knight’s attack.  We can follow this symmetry deeper, discovering the squares the Knight can attack by move 2:

Move 2

Move 2

And move 3:

Move 3

Move 3

And move 4:

Move 4

Move 4

If we composite all these moves, it might look something like this:

Moves 1-4

Moves 1-4

Which is, admittedly, a little complicated.  But still manageable.  Now let’s look at the alternative:

Moves 1-4 (one of the eight available)

Moves 1-4 (one of the eight available)

This is just one of the Knight’s paths from move 1 to move 4 (out of a possible 8).  It covers 12 squares.  Here is the full the range of attack using ‘L’ shapes:

Moves 1-4 using 'L' shapes

Moves 1-4 using 'L' shapes

A gordian knot to the beginner, and not much friendlier to those experienced with the game.  We have gone from considering 25 squares (using the method of radial symmetry) to considering [12 x 8 =] 96!

So now I leave it up to you.  The next time you find yourself explaining the rules of chess, try describing the Knight’s attack as circular.  It may at first seem a little awkward, a break from tradition, but your student will certainly thank you for it.

Installing apps on jbiPhone

Note to self:

  1. Put app on iPhone in /Applications
  2. $ chmod 755 Target.app
  3. $ chown root:wheel Target.app
  4. $ ldid -S Target.app/Target
  5. $ killall -HUP SpringBoard

That should work.

Soon I’ll tame those pesky eyeballs

Changed the eye placement algorithm a little bit just to get a wider range of y values. Working on something to make sure they’re always within the body (sometimes you’ll find that they show up out in space).

Also added some coherence to the coloring. It generates a random number between 0×000000 and 0xFFFFFF to pick the base color, and then extracts the rgb using fancy little bitwise math, reduces each component by half, and recombines it all into that nice, dark shade.

bodyColors = Math.random() * 0xFFFFFF;
var r = bodyColors >> 16;
var g = bodyColors >> 8 & 0xFF;
var b = bodyColors & 0xFF;
featureColors = (r/2 << 16) | (g/2 << 8) | b/2;

Looks like a face

Some proxy eyes are in place, as well as the mouth. Looking pretty good if I do say so.

Monster Generator gets Curvy

Lo ho ho!

Working on getting the curves right. To debug I’m drawing half the curved shape on top of the linear proxy, but it looks cool as hell so I figured it’s worth posting.