New Features in Build 1.0.7 of the Fantastic Worlds iOS Starter Kit

Build 1.0.7 of the Fantastic Worlds iOS Starter Kit has a lot of new utilitarian properties, with one big feature: A Boosters dictionary to eventually store properties that will “boost” the character in some way. For now, your only option is an immunity booster, but of course you can expect more to come. The immunity properties will make your character, you guessed it, immune from damage. And to add to the fun of being immune you can also include a particle effect in back of or in front of the character, as well as an image. In terms of using this immunity booster, this can be done either by equipping it from the inventory, or it can be automatically applied to the character when an item is collected or when an object / enemy is broken / defeated. Also immunity can be applied to the character dictionaries by default. So for example, your character might begin a level immune from attack for the first 5 seconds.

immunity booster in ios starter kit

 

 

 

 

Let’s talk about the biggest “utilitarian” feature, so I can use that word twice this decade (possibly ever). Dictionaries that setup the CSObject, CSWeapon and CSCharacter classes all have dozens of possible properties which can be an eyesore to look at after a while. For example, below is a small screen shot of how properties inside of a typical character dictionary could look….

prop

 

 

 

 

All those properties were previously thrown together into one place. Well now you can organize your properties in ANY way you want (with a few exceptions which I’ll mention in a moment). Take a look at the screenshot below for an example…

iOS Starter Kit Property List example

 

 

 

 

So you can retrofit your existing dictionaries with names of your choosing. Want all physics-related properties in a “Physics” folder. Simply create a dictionary called “Physics”, paste in your existing properties and you’re done. The dictionary names are essentially ignored at build time, and the properties contained inside get used like they would if they were just thrown together like before.

This works for any Objects dictionary, Portals dictionary, CollectiblesForThisLevel dictionary, Weapons dictionary, or Characters dictionary. The only time you can’t choose your own dictionary name is for the animation-related dictionaries for Objects or Weapons (since those have some property names in common like FPS, WillLoop, AtlasFile etc), you’ll need to leave those in their specifically named dictionaries.

This custom grouping of properties also makes it possible to copy and paste multiple properties at once (hooray!).

Without further ado, let’s get into the new properties…

 

In the GameSettings dictionary

DisableAdsPad – If YES, the app will not show iAds on the iPad. Other devices might show ads.

DisableAdsPhone – If YES, the app will not show iAds on the iPhone 3.5 inch. Other devices might show ads.

DisableAdsPhoneWide – If YES, the app will not show iAds on the iPhone 4 inch. Other devices might show ads.

LiftUpOnControlPadCausesJumpStop – A YES value is the default (if excluded), which will make the player stop jumping if the user lifts up the control pad.

TreatControlPadUpAsJump – A YES value sets the control pad (joystick) to treat an upward movement as a jump (for any characters that jump when going up). If you prefer to use a virtual button instead for jumping, set this value to NO. If you exclude this property, control pads will default to YES, so you have to explicitly disable that with this property.

 

For Level dictionaries

PauseOutOfViewObjects – Set this to YES to pause out of view objects. Pausing out of view objects can be done on a per-level basis, and by default this will be NO. For larger levels, you’ll probably want this to be YES. And keep in mind, objects can override being paused.

DisableCenteringPhone – A YES or NO value to disable (or enable) centering on just the iPhone. So you could have the same level be centered around the character on the iPhone (by setting this to NO), but the level would not be centered on the iPad (if the DisableCentering property was set to YES).

OnDeathGoToLevel – This value overrides the normal settings which specify what to do on death. This will force the scene to load a specific level instead of go back to the main menu, last save point, current level or game over menu.

OnDeathGoToPortal – This value accompanies the previous one to set the portal to enter after death.

 

For the Characters dictionaries

HasImmunity – A YES or NO value to initially or semi-permanently give the character immunity from damage. By default this is NO.

ImmunityTime – How long the character will be immune from damage. Set this to a really high number (like 1,000 seconds) if this shouldn’t wear off.

ImmunityParticleFile – The particle file name (minus .sks) to use when the character is immune.

ImmunityParticleOffset – The offset location of the particles from the center of the character. A value of {0, -30} would place the particles at 30 points below the character’s center point.

ImmunityParticleDepth – A positive or negative integer value for the depth of the particles. Any number less than 0 would place the particles behind the character artwork, and any number higher would place the particles visually above the character.

ImmunityImage – The key name in the image assets catalog of an “immunity image” to use. This could be an icon above the character indicating they are immune or something larger like a glowing bubble around the character. This has no effect on the physics of the character.

ImmunityImageDepth – The offset location of the immunity image from the center of the character. A value of {0, 50} would place the image at 50 points above the character’s center point.

ImmunityImageOffset – A positive or negative integer value for the depth of the immunity image. Any number less than 0 would place the image behind the character artwork, and any number higher would place the image visually above the character.

 

The Boosters dictionary in the Root

This Boosters dictionary will be a new one for the Root of the property list. Inside the Boosters dictionary, you can create another dictionary with a name of your choosing. Then set the following properties to create an immunity booster. This could be equipped via inventory, when collected in the scene, or after destroying an object. These property names are identical to those in the Characters dictionary.

ImmunityTime – How long the character will be immune from damage. Set this to a really high number (like 1,000 seconds) if this shouldn’t wear off.

ImmunityParticleFile – The particle file name (minus .sks) to use when the character is immune.

ImmunityParticleOffsetThe offset location of the particles from the center of the character. A value of {0, -30} would place the particles at 30 points below the character’s center point.

ImmunityParticleDepth A positive or negative integer value for the depth of the particles. Any number less than 0 would place the particles behind the character artwork, and any number higher would place the particles visually above the character.

ImmunityImageThe key name in the image assets catalog of an “immunity image” to use. This could be an icon above the character indicating they are immune or something larger like a glowing bubble around the character. This has no effect on the physics of the character.

ImmunityImageDepthThe offset location of the immunity image from the center of the character. A value of {0, 50} would place the image at 50 points above the character’s center point.

ImmunityImageOffsetA positive or negative integer value for the depth of the immunity image. Any number less than 0 would place the image behind the character artwork, and any number higher would place the image visually above the character.

 

For the Collectibles dictionaries in the root

UseBoosterWithKey – Items in inventory can now equip/use a booster. Simply set this value to the matching dictionary key name of an item in the Boosters dictionary in the Root. The kit will then add a button below the collectible in inventory to use when the player needs it.

 

For CollectiblesForThisLevel dictionary

AwardedAlreadyKey – This value can equal anything you want, but it should be somewhat unique, for example, “Level1_Free_Coin“. The kit will allow this object to be collected ONE time only. After that, the kit will check with the defaults to see if a bool for key of name “Level1_Free_Coin” is set to YES, and won’t add this object to the scene again. This is a good way to give users a “freebie” of an item to test out, or simply limit the quantities of a collectible. If the game is ever started fresh again (either by deletion and reinstall, or buy using a button with the DoesWhat property set to StartGameFresh), then objects with an AwardedAlreadyKey will return.

AddBoosterOnCollect – Enter the value of a matching dictionary key name of an item in the Boosters dictionary in the Root. This will immediately equip the lead character with this booster.

 

For the InAppPurchasing dictionary 

Product1RemovesAds – Will remove iAds if the product is purchased and this is YES. If the primary function of the product is to remove ads, then your In-App Purchase should be set to Non-Consumable. This property can still be YES even if the product is Consumable. For example, you could advertise “Buy 10,000 coins and Remove Ads”. In which case, ads will be removed as long as the app isn’t deleted. If the user deleted the app, then iAds will show again because Consumable products are not restored.

Product2RemovesAds – Will remove iAds if the product is purchased and this is YES. See notes on Product1.

Product3RemovesAds – Will remove iAds if the product is purchased and this is YES. See notes on Product1.

 

For Objects

Movements > MovementStopPausesAnimation – Setting this to YES will pause object animations when movement stops.

FiresOutOfScreenRange – Setting this to YES will allow the object to fire even if it is off screen. For example, if you wanted Donkey Kong to throw barrels even if he is 10 ramps higher than what can be seen onscreen.

AddBoosterOnBreak – Enter the value of a matching dictionary key name of an item in the Boosters dictionary in the Root. This will immediately equip the lead character with this booster.

 

For Weapons

DoNotRemoveWhenOutOfView – Set to YES and the kit will not remove the weapon by default when it moves out of view.

 

Notable Code Tweaks

Previously movements in objects had a two second delay before being initiated. This is no longer the case.

When buttons started the game fresh (via their DoesWhat property equaling StartGameFresh), the code previously cleared out all NSUserDefaults. In hindsight, this obviously removes In-Game Currency as well, which the user could have bought via an In-App purchase, so the code know removes most defaults, with the exception of In-Game Currency.

For past buyers, to update your kit from 1.0.6 (or any past version), make a back up copy of your version of the kit (as a precaution of course), and open the zip labeled Changed_Files_for_Latest_Build which was just emailed to you, along with new copies of the demo projects.

As always you will need to manually change the Build number in the Project Settings from 1.0.6 to 1.0.7

Advertisements

2 thoughts on “New Features in Build 1.0.7 of the Fantastic Worlds iOS Starter Kit

  1. lcardjr says:

    since the new iOS 8 Scene Kit work along with Sprit Kit I am interested in both
    any plans for a iOS 8 ” Scene Kit ” video tuotial?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s