Category Archives: MSAgent Engine

New MSAgent engine for Android

Can you imagine Merlin, Genie, and all of the other MSAgent characters flying around on an Android device? Well, now you can, because I have begun work on an MSAgent engine for Android.

I have been able to get Merlin to appear in a test app running in an Android emulator.  And on modern Android screen resolutions, he doesn’t take up a whole lot of screen space, which is a plus, so he might actually look good on phones and tablets alike.

I have some basic pieces working:

  • load ACS file from device/SDCard
  • an asynchronous request queue (TODO: canceling requests, syncing requests between multiple characters)
  • playing animations (TODO: stopping/interrupting animations)
  • show/hide, w/ state animations
  • moving the Character around the screen, either with touch input (dragging) or in code, w/ state animations
  • gesturing, w/ state animations

Although it is possible to display a Character on top of the app’s UI, and even on top of Android screens when the app is in the background, I did come across some odd quirks in managing the Character’s top-level window.  This might limit MSAgent to just in-app usages.  At least the character would stay on top of the app UI (good for tutorials and such).  Will keep experimenting with it.

I did start work on TextToSpeech output, but discovered some shortcomings with Android’s TTS framework, the most important of which is that there are no notifications of when individual words/phonemes are spoken.  That means words in the speech balloon cannot be highlighted while the character is talking (unless the text is broken up into individual words and feed into the TTS engine one at a time, which is likely to cause lag).  That also means that proper mouth overlays cannot be displayed.  This is a big issue for user experience.  Not sure if these will be solvable without resorting to third-party solutions.

I am trying to make it as functional as possible.  I’m not really expecting this to be a full implementation like on Windows, just due to some shortcomings of Android and differences between how Android and Windows work in general.  But it is an interesting challenge to see how far I can take it, it gets me back into playing with MSAgent, and it helps further my learning of Android app development.

I will try to put together a little video soon to show what I have so far.

When I have an Android library that is viable outside of my development environment, I will probably put it up on SourceForge or GitHub or something.

I’m published!

For you Borland C++Builder developers out there, I’d just like to mention that my first-ever technical article has just been published in this month’s issue of C++ Builder Developers Journal. My article got the top slot in the issue, as well as the cover art, and I got some major praise from the journal’s editor:

Let me first say that your article was, hands down, one of the best we’ve had. It was *extremely* well-written, both grammatically and technically, and the demo application was just perfect (not too simple, but not too loaded with irrelevant features). You should take pride in your technical writing skills. I sincerely appreciate the time and effort you put into providing such a well-polished submission–thank you. And, I hope you will consider writing for us again.

Not too bad for a first-time writer, huh?

Ok, enough bragging for now. That made my day. Now on to other news.

With the recent announcement that Microsoft Agent has been updated in Windows Vista to finally support SAPI 5, I have begun updating my AgentCB application to support it as well. More on this to follow when a new version is ready for testing.

My Microsoft Agent processing/rendering engine is coming alone nicely.  Being able to display and run ACS, ACF, and ACA files without using Microsoft’s products is quite refreshing, from a programmer’s standpoint. I recently updated my engine to use GDI+ on Windows systems. This will allow me to support transparent images, as well as resizing images (such as when the character window is stretched), much easier. I’m also working on incorporating the engine into a new application now (adding a Preview tab to the Properties dialog of ACS files) to help me iron out the interfaces better so that I can then start incorporating the engine into the other appications that I have planned (which are listed on my website).

Still Alive and Programming

Yes, I know, I’ve been silent for a long time. Too long, and for that I apologize. But I am still around, still programming away at several projects when I have time to do so (which is not as much as I would like sometimes). Which brings me to today’s many announcements.


MSAgent WebRing Membership
I have been supporting the MSAgent technology for over 6 years now. Lebeau Software is now a proud member of the the MSAgent WebRing. I should have joined this group years ago. Well, no time like the present, right?


Upcoming Software Releases!

AgentCB v1.2
AgentCB v1.2 will now allow the user to choose their desired spoken Language and TTS engine. This has been requested from non-English users of AgentCB for awhile now, so I finally got it into AgentCB. Previous versions were locked into using Enligh only. MSAgent, which AgentCB uses to read the clipboard verbally, has always had the ability to generate spoken output in many foreign languages (provided the necessary support files are installed ahead of time). AgentCB will now be able to utilize this capability.

In addition, this version includes enhancements to the underlying MSAgent support (for those of you familiar with my TMSAgent VCL component, this version of AgentCB will be using the beta of the upcoming version of TMSAgent), and users will also now be able to choose to use MSAgent character files that are not installed in the default “MSAgent\Chars” folder of the OS.

If anyone is interested in beta testing the new version before I release it publically, feel free to contact me.

ICQLaunch v1.0.1.22
ICQLaunch v1.0.1.22 adds support for the recently-released ICQ v5. Supporting ICQ v5 required several changes to ICQLaunch’s internals. Amongst the changes, however, allowed for the ability to support ICQ v5’s new Custom Status feature. ICQ is no longer locked into hard-coded statuses like, “Away”, “DND”, etc. Users can now specify their own custom status messages. The new version of ICQLaunch will support this feature, in addition to supporting ICQ v5 in general like it as with previous versions of ICQ.

If anyone is interested in beta testing the new version before I release it publically, feel free to contact me.

TMSAgent VCL v2.0
The upcoming release of AgentCB is using the beta of the upcoming version of TMSAgent as its MSAgent implementation. TMSAgent v2.0 is a major redesign over the current version v1.5. Once AgentCB has been tested, and no problems occur with the TMSAgent beta, I can then release v2.0 of TMSAgent. And yes, this version will included native Borland C++ Builder 6 support – a feature that is LONG overdue!

MSAgent ACS File Format Documentation
For the past 2 years, I have been working on gaining an understanding of, and documenting, the data format for MSAgent’s ACS files. The ACS File Format documentation has been available for download for some time now. I will be releasing a major update to that documentation later this year. Many data fields that were unknown to me a year ago have now been identified. The documentation is nearly complete now, describing the entire ACS format in full now. The only thing still eluding me is the algorithm for parsing the raw image data for individual animation frames (although I can now identify everything else about the frames), and a few minor miscellaneous fields. Other than that, the rest of the data is fully documented now, and I have already begun writing code to utilize this information.


New MSAgent Products in Planning Stages!

ACS File Viewer
Using the knowledge I have gained by writing the ACS File Format documentation, the first product that I will be releasing will be an ACS File Viewer. This product will be a test bed for me to solidify my general coding for processing ACS data. Unlike other viewers already available, this program will not be using Microsoft’s own MSAgent engine at all. I will be reading and displaying the ACS file data directly. This will mean that performance of processing the ACS information will be faster and better optimized, and will not require commonly used “hacks” to make the MSAgent engine do things that it was not originally designed for (re-parenting character windows without messing up the OS, multiple instancing, etc). Also, ACS characters that are loaded into the MSAgent engine by multiple processes at the same time, whether by applications or by web pages, share a common instance of the character onscreen. The viewer will bypass this, being a completely self-contained application, one which can even run on machines that do not have MSAgent installed at all.

ACS-to-ACD Recovery Tool
After the ACD File Viewer is written, it will be a small jump to produce the next product, an ACS Recovery Tool. The Agent Character Editor (ACE) that is provided by Microsoft is currently the only software publically available that is capable of producing compiled ACS files. ACE uses ACD project files to organize the bitmaps, icons, sounds, and layout information that character authors define when creating their custom ACS files. This convertor will be able to reverse that process – extracting and generating the original ACD, bitmap, icon, and sound files from ACS files for use with ACE. This product is meant to be used by character authors who have lost their ACD project files and need to restore them from the compiled ACS files.

I do realize that an ACS recovery tool presents possible copyright infrigement issues. Which is why the convertor will be the very first shareware product offered by Lebeau Software. The evaluation version will not support extracting the images and sounds from ACS files. These are the key pieces of an ACS file’s copyrighted intellectual material. Authors will have to prove that they actually own the characters they wish to convert, and will have to purchase the full version and licensing to allow their ACS files to be converted to ACD. The licenses will encrypted and tied to both the specific character being converted as well as to the character’s owner (and maybe also to machine hardware), and may also require online validation. This is so that licenses cannot easily be distributed or hacked by software pirates, or falsified to allow converting of characters by people who do not actually own them.

Also, neither the evalutation nor full version will allow loading or processing Microsoft’s own characters (Merlin, Genie, Robby, and Peedy) under any circumstances.

MSAgent Browser Plugins
After the ACS Recovery Tool is written, the next project will be to revive my old browser plugin for supporting MSAgent in Netscape. I will update it to support Opera and Firefox, as well as give it a generic interface so that Internet Explorer can use it as well. This way, a single plugin can cater to multiple browsers without requiring separate specialized versions for each browser, or different scripting for different browsers, etc. Also, using my ACS File Format documentation to design my own rendering engine will eliminate the dependancy on Microsoft’s MSAgent engine, thus allowing the plugin to also be ported to non-Microsoft platforms (Linux, Mac, etc). This will introduce MSAgent to new marketplaces that have been previously unexplored.

ACE Replacement
I wish to produce an application that will do everything that ACE can do, and then some! ACE only supports 256-color bitmaps, icons, and WAV audio files. I want to support importing of PNG and MP3 files as well, and maybe also importing and real-time rendering of common 3D file formats (3DS, 3DX, Lightwave, Wavefront, X3D, etc) directly. Many MSAgent characters currently available have images produced by 3D rendering software (3D Studio Max, Hash Animation Master, Truespace, Xara 3D, etc), so it would be beneficial to have an ACE-style editor that can render the wireframes in the same software that compiles the final ACS file.