New Royalty Free Game Art – Rose Inn Platform Set and Destroyer Mech.

Got a couple new pieces of royalty free game art up at GameArtPartners.com .

First up is the Rose Inn Platform Set of Royalty Free 2D Game Art. Not only will you get tons of tile-able art and set decorations, you’ll also be able to create countless buildings. Check out the sales page for plenty more examples…

Royalty Free 2D Game Art Tileable Platform Hotel

 

 

Next up is one of my own creations, a Mech-style 2d game character or enemy. It includes plenty of pre-animated sequences and the Adobe Flash source files can be used to create plenty more. For buyers of CartoonSmart’s Fantastic Worlds iOS Starter Kit, I’ve even included a Property List file to copy and paste the entire Objects dictionary which references each set of .atlas folders. This Property List also includes dictionary settings for the enemy object’s gun, knife and grenade. This makes it incredibly easy to import the art and start using this character as an enemy object against your app’s protagonist.

Royalty Free 2D Game Art

Build 1.10 of the Fantastic Worlds iOS Starter Kit is officially here

Build 1.10 of the Fantastic Worlds iOS Starter Kit is official. By the way, the runner up build titles were 1.1.0 and simply 1.1, but what the heck, let’s call it what it is: the tenth update to this kit. The major feature this time around is… (drum roll)… Special Weapons for characters! Yup, your leader can now trigger a secondary weapon, perfect for weapons you want to limit or keep “special” in the game, like grenades. Most of the properties added have to do with this feature, so let’s first mention the ones that don’t.

I tweaked the code slightly, so that objects that go “idle” when the character leaves their radius of attack, will finish out the remainder of their MoveYAmount or MoveXAmount properties. This fixes an issue where the object could be stopped mid-air essentially. I’ve added an example object dictionary in the Common_Properties.plist called Fish_Jumping_Out_Water_Type_Movement that illustrates this.  But if you want to disable this functionality, use the following property.

  • FinishMovementXWhenOutOfRadius  –  Set to NO to disable completing the remainder of the MoveXAmount cycle. By default this will be YES.
  • FinishMovementYWhenOutOfRadius  –  Set to NO to disable completing the remainder of the MoveYAmount cycle. By default this will be YES.

 

Also before I forget again, I’ve added the following properties (which I should have added last build) to set the location of the health meter if you wanted to add it as part of the GUI.

  • HealthLocationPhone – the location in {xyformat of the health meter on the 3.5 inch phone (or 4 inch phone if the next property is omitted).
  • HealthLocationPhoneWide - the location in {xyformat of the health meter on the 4 inch phone.

For any Levels dictionary or GameSettings dictionary

  • AllowChangingToCharacterInUse - By default this is NO. Set this to YES to allow the same character dictionary to get equipped twice. So for example if the leader picks up a follower,  the leader or follower could then potentially use the same dictionary as each other, (by equipping the character like an inventory item) thus making two of the same character in the scene.  When this is NO, the code will just switch out the characters if the player tries to equip the same character dictionary twice.  This property can be set in the GameSettings dictionary or on a per-level basis in any of the Levels dictionaries. Most likely, you’ll want this left at NO.

 

Special Weapons Introduction

Special weapons function the same as primary weapons. Characters can start with them by default, equip them later from inventory, collect them, or receive them as rewards for breaking objects / enemies. They can also be removed at the beginning of a level like other weapons or inventory items. The item in the Weapons dictionary (that defines all the weapon data), does not designate itself in anyway that it is being used as a special weapon. So any of your previously-created primary weapons could be used as special weapons as well.

Special Weapons Properties For the Characters dictionaries

  • UseSpecialWeapon – the name of the special weapon in the Weapons dictionary. You only need to set this if you want the character to have a special weapon by default. You can also use collectibles in the level to equip the character with a special weapon.
  • AddSpecialWeaponToInventory – A YES or NO to add the character’s default weapon to the inventory (perhaps to re-equip later). The Collectibles in the Root dictionary should contain an item with a matching name as the weapon.
  • MinimumAmountOfSpecialWeaponToStartWith - This is an integer value to start the character with a minimum amount of the special weapon. For example, if the character dies with 5 grenades in stock, and this value is 10, the character will restart with 10 (not 15). This value has no affect on weapons that have the RequiresAmmo property set to NO. An alternative to using this property to equip a player early on with a special weapon is to leave a collectible somewhere near the starting point of the level. Like all inventory, special weapons can be cleared from inventory at the start of a level.
  • TimeBetweenSpecialAttacks – An optional decimal value to set a time to wait between special attacks. For example 2.5 would make the character wait 2.5 seconds before being able to use the weapon again.

Along with a new weapon means lots of animation possibilities.  You can set a specific animation for attacking while moving up, down, right, or left and attacking while resting in the up, down, left or right directions. Using all of those would imply a top-down environment. For a side scroller world, you most likely only need a single resting special attack animation, a right special attack animation and possibly an up (jumping) special attack and down (crouching) special attack.

  • UseRestingSpecialAttackFrames  – YES or NO, this is “catch all” resting-into-attack animation, which can be used in place of the up, down, left or right specific animations. This a good option for a side-scrolling world.
  • RestingSpecialAttackAtlasFile - The atlas file for the animation.
  • RestingSpecialAttackFrames - The array of frames for this animation.
  • RestingSpecialAttackFPS – Overrides the base frames per second.
  • UseUpSpecialAttackFrames  – YES or NO to use this animation set. This set would run when the character is moving upwards (or jumping up) and triggers a special attack.
  • UpSpecialAttackAtlasFile - The atlas file for the animation.
  • UpSpecialAttackFrames - The array of frames for this animation.
  • UpSpecialAttackFPS  – Overrides the base frames per second.
  • UseDownSpecialAttackFrames – YES or NO to use this animation set. This set would run when the character is moving down (or crouching down) and triggers a special attack.
  • DownSpecialAttackAtlasFile - The atlas file for the animation.
  • DownSpecialAttackFrames - The array of frames for this animation.
  • DownSpecialAttackFPS – Overrides the base frames per second.
  • UseRightSpecialAttackFrames  – YES or NO to use this animation set. This set would run when the character is moving right (and also left if that frame set is excluded) and triggers a special attack.
  • RightSpecialAttackAtlasFile - The atlas file for the animation.
  • RightSpecialAttackFrames - The array of frames for this animation.
  • RightSpecialAttackFPS – Overrides the base frames per second.
  • UseLeftSpecialAttackFrames – YES or NO to use this animation set. This set would run when the character is moving left and triggers a special attack. If this set is excluded the right set is used and flipped horizontally.
  • LeftSpecialAttackAtlasFile - The atlas file for the animation.
  • LeftSpecialAttackFrames - The array of frames for this animation.
  • LeftSpecialAttackFPS – Overrides the base frames per second.
  • UseDownRestingSpecialAttackFrames -YES or NO to use this animation set. This set would run when the character is resting in the down position and triggers a special attack (intended mostly for a top down world).
  • DownRestingSpecialAttackAtlasFile - The atlas file for the animation.
  • DownRestingSpecialAttackFrames- The array of frames for this animation.
  • DownRestingSpecialAttackFPS – Overrides the base frames per second.
  • UseRightRestingSpecialAttackFrames -YES or NO to use this animation set. This set would run when the character is resting in the right position and triggers a special attack (intended mostly for a top down world). This set also runs if the left set is excluded (but flipped horizontally).
  • RightRestingSpecialAttackAtlasFile - The atlas file for the animation.
  • RightRestingSpecialAttackFrames - The array of frames for this animation.
  • RightRestingSpecialAttackFPS – Overrides the base frames per second.
  • UseUpRestingSpecialAttackFrames -YES or NO to use this animation set. This set would run when the character is resting in the up position and triggers a special attack (intended mostly for a top down world).
  • UpRestingSpecialAttackAtlasFile - The atlas file for the animation.
  • UpRestingSpecialAttackFrames - The array of frames for this animation.
  • UpRestingSpecialAttackFPS – Overrides the base frames per second.
  • UseLeftRestingSpecialAttackFrames -YES or NO to use this animation set. This set would run when the character is resting in the left position and triggers a special attack (intended mostly for a top down world). If this set is excluded the right set is used and flipped horizontally.
  • LeftRestingSpecialAttackAtlasFile - The atlas file for the animation.
  • LeftRestingSpecialAttackFrames - The array of frames for this animation.
  • LeftRestingSpecialAttackFPS – Overrides the base frames per second.

 

Special Weapons Properties For Buttons

  • The DoesWhat property can now have a value of UseSpecialWeapon, which will make the character use their special weapon only. The character will not animate.
  • The DoesWhat property can now have a value of UseSpecialWeaponAndAttack, which will make the character use their special weapon and animate (using the animation sequences for special attacks).

 

Special Weapons Properties For Objects

  • EquipThisSpecialWeaponOnBreak  – The name of the special weapon to equip when the object has been broken / defeated. This is the name of the item in the Weapons dictionary.

 

Special Weapons Properties For CollectiblesForThisLevel

  • EquipThisSpecialWeaponOnCollect – The name of the special weapon to equip when the object has been collected. This is the name of the item in the Weapons dictionary.

 

Special Weapons Properties For Collectibles dictionary (items in the inventory menu)

  • EquipsSpecialWeaponNamed – The name of the item in the Weapons dictionary to equip.

 

Special Weapons Properties For the Level dictionaries or GameSettings dictionary

  • UseTwoFingerTapForSpecialAttack – Either the GameSettings dictionary or an individual Levels dictionary can set this value to YES or NO, and make tapping with two fingers trigger a special attack. Keep in mind, levels without any gestures work best when using the virtual joystick or button controls. So it is recommended you only set this value to YES on levels that are already using gestures as the primary means of control.  Also if this value is YES it will override the same gesture controls for switching leaders with two fingers.

 

The character in the side scroller level of the demo project for the kit has a special weapon (grenades) to toss around. Enjoy!

 

Calling All Requests for the Fantastic Worlds iOS Starter Kit

If anyone has a custom request for the Fantastic Worlds Kit, let me know. I’ll be back in high-performance programming mode soon (infused with quad espressos), so I’ll try to take care of as many things as I can at once.

 
Features on my to-do list, mostly involve adding secondary weapon options to the characters and objects/enemies. So for example, a character could fire a weapon with one button, and toss a grenade with another  (gosh can you tell I’m a 10 year old boy at heart).  And the same will be true for enemies. Which will make for some harder “boss” enemies to defeat.
 
I hope everyone is doing well out there with their projects. Speaking of, I got to look at one in-progress. Shane needed some help debugging something so he sent over his kit for me to poke around with. Its looking fantastic, and playing great. I’ll attach a couple screenshots (which he said was okay).  So anyway, we got some great work happening out there!
 
Keep me posted!
Fantastic Worlds iOS Starter Kit Preview Fantastic Worlds iOS Starter Kit Preview Fantastic Worlds iOS Starter Kit Preview

All the New Properties in Build 1.0.9 of my iOS Starter Kit

Sorry should have posted this last week. Might be old news for some of ya. But I did just post up a daily build for 1.1 that tweaks a small issue with objects going idle and restarting movements. Anyway, here goes the late-breaking news…

There’s tons of new features this build for the Fantastic Worlds iOS Starter Kit and plenty of reasons to add either an AnimationIdle orAnimationFire dictionary to your enemy objects. A lot of these new properties add features to an object in an idle state. For example, you might have a Little Shop of Horrors type plant, sleeping in an idle state until the character comes within a certain radius, then the plant “awakes” and begins approaching the main character (playing their normal Animation dictionary). That example would make use of the new ApproachCharacterWhenNotIdle property. Also new, you can restore the health of an idle object, make an idle object un-damageable, or strip away their physics body entirely.

And if that wasn’t enough fun to consider, you can now revive objects from the dead using theReviveFromDeathAfterHowLong property.  So after (seemingly) destroying an object, it will reawaken and begin functioning as before.

Our final new feature is… drum roll… Using the CreatesObjectNamed property your Objects can now generate other items in the Objects or CollectiblesForThisLevel dictionary. Yes folks, armies of objects can be created from a single object. For example, you could have a pipe (like that in the original non-Super version of Mario Bros) which churns out Turtles at a regular interval. The Turtles are themselves, their own object, so they can walk out and do whatever. You can even randomize the objects that get spawned using a CreatesObjectsNamed array instead of the CreatesObjectNamed.Locations for spawned objects can be randomized (and there’s a few other properties as well).

So here goes the full list…

 

For Objects

  • AnimationFire – An animation dictionary specifically for firing a weapon. If you include this dictionary, you do NOT need the AnimationFiresWeapon property set to YES, but you should include the UsesWeaponHowOften property with a time set to fire the weapon.
  • IdlingStopsMovement – A YES or NO value to stop the object’s X or Y movements when it goes idle.
  • ImmuneWhenIdle –  A YES or NO value to make the object immune from attack when idle.
  • HasPhysicsBodyWhenIdle  –  A YES or NO value to remove the physics body of the object when idle (this would also make it immune from attack since there’s no physics body).
  • RestoreHealthWhenIdle –  A YES or NO value to restore health to the object when idle.
  • BeginWithIdleAnimation – A YES or NO value to make the object start onscreen with their idle animation running.
  • ReviveFromDeathAfterHowLong  – A value in seconds to revive the object after being killed / broken. This completely restores the object. All health, the physics body, etc.
  • ApproachCharacterWhenNotIdle  A YES or NO value to approach the character when not idle.
  • ApproachSpeedX  – A decimal value for the rate of approach on the x axis.
  • ApproachSpeedY  – A decimal value for the rate of approach on the y axis.
  • CreatesObjectNamed  – The key name in the Objects or CollectiblesForThisLevel dictionary of the item that will get spawned from the object.
  • CreatesObjectsNamed –  This can be an array which will randomize the item to generate / spawn from the object. So for example,  you could have multiple types of Shredder wheels  get created.
  • CreatesObjectHowOften – A decimal value for how often the object creates more objects.
  • CreatesObjectWithOffset – The initial offset value of where the new objects will appear from. Their base starting point will be the object’s position that spawns them. So a value like {-100, 50}  would base the spawned objects at -100 points on the x axis from the spawn object and 50 points above the spawn object on the y axis.
  • CreatesObjectRandomizingXBy – You can also at some randomization to each axis with this integer value. So the offset value on the x will get a randomized value from this property. For example, if this value was 50, then the offset value on the x will get a variance anywhere from 0 to 50.
  • CreatesObjectRandomizingYBy – Like the x axis property above but on the y axis.
  • CreatesObjectsWhenOutOfView – A YES or NO value to create new objects even if this object is out of view.
  • CreatesObjectsWhenIdle – A YES or NO value to create objects even if this object is idle.

 

For Characters

  • DisableDownMovement – A YES or NO value to disable all movement controls for this direction.
  • DisableUpMovement – A YES or NO value to disable all movement controls for this direction.
  • DisableLeftMovement – A YES or NO value to disable all movement controls for this direction
  • DisableRightMovement – A YES or NO value to disable all movement controls for this direction.

 

For the Levels dictionary

  • ShowLeaderHealth – A YES or NO value to show the leader’s health as part of the main interface. If this is YES, you’ll probably want to disable showing the health in the Characters dictionary.
  • HealthLocation – the location of the health meter in {x, y} format.
  • HealthBarBackingImage- the health meter backing image (a file named healthMeterBackingAsGUIhas been added to the Images.xcassets catalog).
  • HealthBarMeterImage- the health meter (a file named healthMeterAsGUI has been added to the Images.xcassets catalog).

To update your kit from 1.0.8 (or any past version), make a back up copy of your version of the kit (as a precaution of course), and copy and overwrite all the class files in the folder labeled Changed_Files_for_Latest_Build.

New Dedicated Site for the Fantastic Worlds iOS Starter Kit and New Pricing Plan

What a weekend-into-Monday can do for ya. On Friday, I found an incredible WordPress theme by SwiftIdeas.net (Cardinal), and couldn’t resist using it to make a dedicated site for my iOS Starter Kit. The previous sales page was just getting too darn big for it’s britches, and let’s face it, the entire CartoonSmart site could use a polished ultra-responsive makeover. One thing at a time though. 

We’ve also got a more affordable plan for those Cash-Poor / Idea Rich customers. Details are in the Pricing tab. And if you’re already building an app with the kit, you can be featured on the site. Check out the “Demo App” tab for details. 

Alrighty, back to work on it! 1.0.9 promises to add some awesome new features. 

iOS Starter Kit Webpage

Ladders in Build 1.0.8 of the Fantastic Worlds iOS Starter Kit

The latest build of the Fantastic Worlds iOS Starter Kit now has Ladders! Yes, yes, I know, thats a staple of every good platformer, and it probably shouldn’t have taking me 8 builds (but really only like 8 weeks) to add those, but they are in there now. I can justify their delay though. Some one once told me, Master Level Designers do not relay on ladders to build good levels…they use moving platforms and ramps! Thats a quote from No One Ever.

Anyway, here’s a video…

Those ladders are already included in the demo level you get with Build 1.0.8 which has still has one more feature before its official release, but buyers of the kit can download it now if they want to.

Enjoy.

 

Checking in with Build 1.0.8 of the Fantastic Worlds iOS Starter Kit

Hey howdy ho, kit-builderinos. Just wanted to check in with some news for those of you following my Fantastic Worlds iOS Starter Kit. As some of you past buyers are well aware, your download links give you access to the latest “official” build of the kit, and also the next build as it’s progressing, which is 1.0.8. Today I added (and uploaded) a lot of new animation possibilities for characters in the kit. Previously if you were building a top-down character (as opposed to side-scroller character) you had just one set of animated frames for a resting animation. If the character stopped and “rested”, that animation could run. You can now include 4 sets of different resting animations for directions facing up, down, left or right. And with that in mind, you can also include attack animation sequences from the character’s resting state in each of those four directions as well. Previously you could include attack animation sequences for up, down, left and right, the difference now is that these new attack sequences give you the option to differentiate between an attack that was initiated from a still / resting position and those that were initiated while the character is moving / running / walking etc.  All of these new animation sequences are optional. 

Also new, you can offset the world’s center. Previously, you had two options: you could center the world on the character, which would put the character dead-center of the screen, or you could disable centering, and the world would stay in a static location. With the new offset option, you could displace where the world is around the character. 

We’ve also got new movements for Objects / Enemies, a Space Invaders type increment, that will jut the object forward an amount for x number of steps, then optionally move the character down as well. 

Also I’ve patched up a wee-bit of a memory leak that would creep up over time. 

Enjoy!