New Candy Tool: Text Candy for Corona (50% off coupon inside)

As a reply to mike4’s thread, we’d like to announce the release of a new Candy tool. Quite a few people got scent of it during the last weeks, so here’s the full story, along with detailed info:
WHAT IS TEXT CANDY FOR CORONA?
Text Candy is a straightforward to use and extremely powerful text engine to create, display and animate all kind of decorative bitmap texts within your game. It’s main purpose is the ability to display bitmap fonts (which provide by far a better look than monochrome true type fonts) and easily animate texts in many fancy ways.

Text Candy comes with lots of premade, high quality and ready-to-use bitmap fonts but also lets you use your own bitmap fonts. Using bitmap chars allows you to keep full control over look and style of your texts. Display 3D-style chars, apply smooth drop shadows, bevels, reflections, specular effects, nice color gradients, multi-colored, burning or smoking texts -whatever you imagine!

Text Candy is the perfect solution to display and animate your game title graphics and all kind of eye-catching in-game texts such as score displays, highscore lists, credits, text notes, scrollable texts, marquees, headlines and more. Create animated texts using beautyfully pre-rendered bitmap fonts with a single line of code only!

All text objects can be animated at char level, resulting in awesome, professional looking, arcade-style text effects. Text Candy provides many premade animation effects that can be applied to any text object with a single line of code but also features an easy to use API to create any kind of effect you can imagine.

Applied text animations can be started manually at any time, but you can also let Text Candy handle this for you to animate a text object automatically each time a text changes. Text Candy supports multi-line texts, automatic word wrapping and several text alignment methods. You’ll be amazed how easy it is to use!

What you should know:
The purpose of Text Candy is to display eye-catching, animated text messages in your game like title screens, score display, game over or ingame-messages, loading screens etc. It focusses on animated texts, so it is not meant for huge amounts of texts or text-heavy projects.
DEMO VIDEO
Note: this video shows the “Features Demo” sample code, which is also included in the package -as well as many other sample codes and a collection of several dozens of premade bitmap fonts.

WATCH VIDEO

REFERENCE & DETAILED DESCRIPTION

THIS WAY to the online manual and a complete list of features.

LIMITED TIME COUPON CODE

Due to the first release of this library, we’re offering a coupon code to get Text Candy for 50% off (limited time only) - just enter TEXTS4CORONA

As always, we’re happy to get any kind of feedback, usage experience and feature suggestions from you.

Regards,
Mike

[import]uid: 10504 topic_id: 7999 reply_id: 307999[/import]

If I am already purchased the Particle Candy, will have even better offer ? [import]uid: 12088 topic_id: 7999 reply_id: 28518[/import]

i’ve already bought Text Candy for about 2-3 days and now there’s a discount!? I am a little bit disappointed.

-Oliver
[import]uid: 37854 topic_id: 7999 reply_id: 28532[/import]

Thanks Mike!

Bought, and ready to dig in… [import]uid: 5317 topic_id: 7999 reply_id: 28569[/import]

it’s a Buy… [import]uid: 7427 topic_id: 7999 reply_id: 28593[/import]

Yahooooo…love it, Glyph Designer / Angelcode support?
edit: it seems a tool is needed to convert a BMFont text file to a .lua spritesheet definition? [import]uid: 6086 topic_id: 7999 reply_id: 28567[/import]

Any chance of a deal for both Candy tools? [import]uid: 6086 topic_id: 7999 reply_id: 28617[/import]

Now that I started to look at this, how are you generating your font sheets?

From looking at things, I hope you aren’t individually exporting single characters from Photoshop, and using Zwoptex to create a font sheet…Which is what I think is going on.

How about some detailed info on how to create the font sheets, and corresponding .lua files that are necessary?

I would love to use my tool of choice for creating bitmap fonts, Glyph Designer from 71squared.

http://glyphdesigner.71squared.com/

While you’re there, take a look at their (not free, but only $7.99) particle editor for iOS.

http://particledesigner.71squared.com/

I think it would be great if you could figure out a way to get the data you need from Particle Designer out, to be able to drop right in to Particle Candy. [import]uid: 5317 topic_id: 7999 reply_id: 28628[/import]

Any tips on how best to use the scaling with a higher res display dynamically? (e.g. retina @2x). [import]uid: 12448 topic_id: 7999 reply_id: 28689[/import]

Congratulations on the release!!! License purchased. Thanks [import]uid: 11904 topic_id: 7999 reply_id: 28699[/import]

Great news! Just purchased a license. I’ve been using a beta version of Text Candy and can attest to its awesomeness in combination with Corona.

As Mike4 mentions, I, too, would like some more info and/or docs on how to generate my own font sheets and data. I’ve been using one of the provided fonts, and while nice it’s not quite what I need for my game.

Glyph Designer support, or at least a tool to convert GD to the Text Candy lua format would be ideal for me.

Thanks for any info. you can provide. [import]uid: 9422 topic_id: 7999 reply_id: 28704[/import]

[TUTORIAL] CREATING YOUR OWN BITMAP CHARSET

Creating bitmap charsets is basically very easy. There are just a few steps to do -once you are familiar with this process, a bitmap charset is done in about 10-15 minutes only (and can be reused in any of your future apps then).

STEP 1 - OPEN YOUR DRAWING APP
Use your favorite drawing application like Photo Shop, Paint Shop, Gimp etc. and create a new, transparent image that is big enough to hold all the chars you want to use (any size will do).
STEP 2 - ADD YOUR TEXT
Now place a text in there that contains all chars you want to use in your game. Choose a font size that fits your need best (depends on wether you want to create title logo chars, ingame texts, use them in an iPhone or iPad app etc…) Just make sure there is enough spacing between the chas, so you can apply a cool drop shadow, glowing effect etc. to the chars without overlapping them.
STEP 3 - APPLY EYE CANDY
Now apply any cool filter you like to -adding 3D bevels, shiny effects, chrome filters, apply a texture, a drop shadow, outlines, whatever your drawing application (or your creativity) is capable of.
STEP 4 - SAVE ALL CHARS
Now cut out each char and save it to disk as an individual image file (png). There is no need to cut them out properly because Zwoptex and TexturePacker both provide image cropping (automatically getting rid of empty space around each image). Name each char like “a.png”, “b.png” etc. -as seen in the included font pack. This naming convention ensures that Zwoptex or Texturepacker place your chars in alphabetically order on the sprite sheet.

STEP 5 - IMPORT CHARS INTO TEXTUREPACKER OR ZWOPTEX
Now open either Zwoptex or TexturePacker (last mentioned provides a free version and is available for Windows, too) and import your chars. Enable cropping (so that any empty space around the chars is removed) and use a spacing of ~2 pixels between the single images. Also enable “sort by name”, so that the chars are ordered in alphabetical order in the exported data sheet.
STEP 6 - EXPORT YOUR TEXTURE
Now export both, the texture that contains all the chars and the data file (sprite sheet). Place both in your project’s root folder to avoid any path problems.
STEP 7 - LOAD YOUR CHARSET
Load the font into your application using

[lua]TextCandy.AddCharset (“fontName”, “dataFile”, “fontImage.png”, charOrder[/lua]

Notice the “charOrder” parameter. This needs to be a string that contains all chars that you included in your charset, in the same order as they are placed in the .lua data sheet. This is to tell Text Candy where to find the chars on your texture.

A last thing to keep in mind: some chars will have a different height than others, a capitalized “A” will be higher than a “-” char, for example. To ensure that all chars are placed correctly when creating texts, use the .SetCharYOffset command (as described in the manual) after loading your charset into your app. This is neccessary for a few chars only like colon, semicolon etc.

That’s it.

[import]uid: 10504 topic_id: 7999 reply_id: 28723[/import]

Mike? I know it’s a bit cheeky but is there a bigger discount for PC users? [import]uid: 9371 topic_id: 7999 reply_id: 28732[/import]

Cool ! I’m eager to test it :slight_smile:

Just one question :

Is this tool ok for “paragraph” management

(I know the answer is in your sample code, but …) [import]uid: 9328 topic_id: 7999 reply_id: 28767[/import]

@dweezil: the coupon provided above is valid for a week only, while Particle Candy owners will then still be able to get a discount. There will be more info on this within the next couple of days.

Antheor, I am not sure what you mean exactly with “paragraph management”, but you can define a maximum width for a text object, once the text exceeds this width, it will be automatically broken to the next line, for example.

[import]uid: 10504 topic_id: 7999 reply_id: 28788[/import]

Hi x-pressive,

Rob2 (and probably some other people) would like to be able to use AngelCode-style bitmap fonts (as exported from Glyph Designer) with TextCandy.

I already have my own library for parsing and using these fonts, but I am not a TextCandy user myself, so I can’t test the glue to get these AngelCode font definitions loaded into TextCandy. So maybe you can help Rob2 out… Here’s a rough draft I’ve hacked up for something that might work for taking a font as loaded by my own library (“BMF”) and using it from TextCandy:

[lua]-- take an already-loaded BMF font object and import it as a TextCandy charset
function AddCharsetViaBMF( name, font )
local chars = [];
for k, v in pairs( font.sprites ) do
chars[v.frame] = k
end
AddCharset(
name,
font.spritesheets[0].file,
font.spritesheets[0], – is there a way to pass the spritesheet definition directly rather than via a module file?
table.concat( chars ),
font.chars[’ '].xadvance,
nil,
font.info.lineHeight
)
for k, v in pairs( font.sprites ) do
SetCharYOffset( name, k, font.chars[k].yoffset )
end
end[/lua]

As I said, I’m writing this rather blind, so please excuse any misunderstanding of your library’s workings. You can find information on and the source to my BMF library in this thread:
http://developer.anscamobile.com/forum/2011/02/05/bitmap-font

Also, is there a “SetCharXOffset” method in the works for TextCandy? And maybe a “SetCharXAdvance” and “SetCharPairKerning”? Glyph Designer fonts can contain this sort of additional information and it would be nice to be able to convey that to TextCandy.

If you would rather include AngelCode-style bitmap font support directly in TextCandy instead of relying on my library as a third-party dependency, feel free to borrow pieces or all of it for your product. (I hereby grant non-exclusive license, yadda yadda…) [import]uid: 32962 topic_id: 7999 reply_id: 28792[/import]

@x-pressive.com

Did i mentioned that i bought both Particle Candy & Text Candy a few days ago…

so it would be very nice to get an answer regarding a discount for “Text Candy” for users who bought text candy too early:-)

[import]uid: 37854 topic_id: 7999 reply_id: 28805[/import]

Sorry Oliver, would reply to you yesterday, but it was quite late then and I had already gone through a 16 hours day.

Well, let me explain this in detail: each time we offer a coupon code, we also receive complaints from one or another user why we did not let them know before -same when a discount ended. Well, first, we sometimes decide on a daily base to be as flexible as possible here. There was no fixed date for the premiere event as you bought it, so I couldn’t let you know (I would, otherwise, of course). Second, we can’t stop purchasing our products one week before a coupon goes out just not to offend any users. Third, you ALL know that we’re *always* willing to help, providing as much (personal!) support as possible -even regarding to questions that have nothing to do with our products itself. We put an extreme amount of work and time into our products and the regarding support -in fact so much that we can’t produce any own titles at the moment. We are working 14-16 hours per day -fulltime, not just as a hobby! Considering this, the prices of our products are more than fair! Sell just one app and you probably earn the tenfold that you spent purchasing the libs. So I can’t understand why people complain about missing a discount while the original price is still more than fair and does not reflect in any way the amount of work we put into (or the amount of work you’ll save yourself). This sometimes disappoints me a little bit… but as I said, we’re always willing to help, so just drop a mail and we’ll come towards you.
@p120ph37: using Glyph Designer should be no problem if it exports a texture and a Corona compatible .lua data sheet as Zwoptex and TexturePacker do. Unfortunately, it seems that it doesn’t yet.

We are not familiar with it’s output format and couldn’t find any specs on their website but we could add a function to load a charset passing a table instead of reading a .lua data sheet file. This table should be in the same format as a Corona sprite sheet. So all it needs would be a conversion routine to convert the Glyph Designer data to a Corona sprite sheet table, then you could add a charset by passing this data table to Text Candy.
[import]uid: 10504 topic_id: 7999 reply_id: 28884[/import]

@x-pressive

The Glyph Designer definition format is just the AngelCode BMF format, which is somewhat documented here:
http://www.angelcode.com/products/bmfont/
and here:
http://www.gamedev.net/topic/284560-bmfont-and-how-to-interpret-the-fnt-file/page__view__findpost__p__2785731

You can also find example .fnt files as produced by Glyph Designer in this demo:
http://ember.awirtz.com/bmf.zip

As I mentioned, I don’t own TextCandy myself, so it would need to be one of your users or you who would do the final integration work, but allowing a standard spritesheet definition table as an option instead of a .lua file would certainly make it much simpler to write wrappers for importing other font formats into TextCandy.

Also, do you have any plans to support per-character x-offset and x-advance properties like you support per-character y-offset? What about kerning (you can see this in the impact64.fnt file, and it is very noticeable on-screen with letter combinations like “AVA”)? These are data which are available in Glyph Designer produced fonts, so it would be nice for TextCandy to be able to utilize them. [import]uid: 32962 topic_id: 7999 reply_id: 28962[/import]

Having looked into this in some detail it seems Angelcode is the widely supported format for bitmap fonts and having Text Candy read these files would certainly make windows users happy
http://www.angelcode.com/products/bmfont/ as well as those using Glyph Designer.

This would also facilitate the support for Kerning which is pretty fundamental to good looking typography and is a big omission, something which is strikingly obvious from your video.

Anyway I await my download link having just purchased :slight_smile: [import]uid: 6086 topic_id: 7999 reply_id: 28964[/import]