EDITOR PLUGIN: Speech Center - Version 2.2.0

Started by SpeechCenter, Thu 22/03/2012 14:50:32

Previous topic - Next topic

SpeechCenter

Latest version: 2.2.0

Download

Hello all,

Version 2.2.0 now also exports the data to CSV

About Speech Center
The Speech Center plugin enables management of the game text and speech within the AGS Editor. It provides a view of your game text and play the speech files, fully integrated within the editor.

It has the ability to scan the scripts (dialogs, global scripts and room scripts), and display all the speech line it finds in those scripts (such as the text used in the character Say function). You can sort, filter and search through the lines using the interface, edit the text and also jump to the script itself to make more complex changes.

Additionally you can export the text as voice acting scripts. The result HTML files, one for each character, can be sent to your voice actors to record their lines.

When a line is selected you can immediately view it in the script itself. Inline editing is available allowing you to review and change text in multiple scripts from a single screen. double-clicking on a line will open the AGS script editor and focus on that line, this is convenient if you would like to view and edit the script using the standard AGS script editor.

Another nice feature is the ability to view and edit game translation. When you choose a translation you get the same view and set of features. This means not just find, filter and sort, but also export a VA script in your translated language. You can also easily view the original text in the script since it is shown when you select a text line in the grid.

If the lines are numbered then it offers additional functionality:
The Speech directory is scanned for each line and provides info on the file status. You can playback the speech from the editor itself. You can also mark whether those lines are correct (there are 2 checkboxes for each line, one for the voice file and the other text).

To make sure the plugin is as non-intrusive as possible, it only loads the data if you click on the refresh button, thus it should not affect something you do, unless you are actually doing something at the plugin screen. Special attention was given to performance and the plugin should have the capacity to handle thousands of lines. This should cover even the extremely text-intensive games.

Here are a couple of screenshots to show you how the plugin looks like in action:




Sample output for VA scripts:


You can email me regarding any bugs or problems you find, I'll try to be as responsive as possible.

I hope this will assist you to continuing create awesome games!

monkey0506

I'm at work, but what does this plugin do? I'm guessing it has something to do with managing speech files from within the editor? If so, that's great.

I've actually been putting some thought into it though, and the entire speech system within AGS could really do with a major overhaul. I'm thinking that speech files could be imported as AudioClips that could then be linked to characters directly...then with some indexing and a simple "find ID" function...the speech system could be made much more generic, which would be very nice for any games using extender methods (or even just the player keyword in a multi-player game).

Anyway, that's a completely separate discussion. Thanks for the plugin...I'll have to check it out later.

Snarky


SpeechCenter

Hey all,

Have you had the chance to try this? Please let me know if this was helpful. I'm very curious to know how game developers here see this plugin.

Thanks.

Alan v.Drake

I would try it, but the download link doesn't seem to like me, any chance you could put it on mediafire ?

- Alan


Alan v.Drake

I tried it, too bad it won't work with my custom say functions :(


- Alan

Scavenger

Quote from: Alan v.Drake on Mon 26/03/2012 12:46:16
I tried it, too bad it won't work with my custom say functions :(


- Alan

Would it be possible to have the plugin have a setting to include custom say functions? If it can detect Say, then how much of a stretch would it be to have it include other functions of the user's choice, other than Say and Display?

Calin Leafshade

+1 for custom say functions.

Just let the user define it with wild cards and then regex it.

SpeechCenter

#9
It's not such a major stretch.
The easiest way to do it is to give the user a choice of the function name and which function parameter is the text (this is in fact the way I search for the function).

Now, my main question is, how do you usually define your custom functions today? Some options I could think of:
* Send character ID as parameter
* Extender functions
* A function that always displays a predefined character (e.g., NarratorTalk, cEgoTalk, etc.)

I'll try to support all, but I would like to know if there is a common way people define them. Also, I would like to verify if I missed something you usually do.
If you could send me your custom functions (here or by email) I can make sure I test it with them.

Do most people display text with custom functions, or did you manage to also check the use of the standard functions?


Calin Leafshade

I almost always mirror the normal function.

usually:

void iSay(this Character*, String what);

Alan v.Drake

same here, I use extenders to mimic the original function

function SayBox(this Character*, String text, (optional)int color);
function ThinkBox(this Character*, String text);

- Alan

Calin Leafshade

A function to generate voice acting scripts and number lines for custom say commands would also be invaluable.

SpeechCenter

#13
Quote from: Calin Leafshade on Mon 26/03/2012 20:17:16
A function to generate voice acting scripts and number lines for custom say commands would also be invaluable.
Regarding voice acting script, the easiest way for me to do this is to add an export function, but there are 2 things to consider:
1. There may be some extra information needed (Snarky mentioned that there should be a comments field for that purpose)
2. Snarky also a mentioned a tool that already handles voice acting scripts. I prefer not to recreate features already done by others, especially if the tool is built for that purpose. However, the author of that tool hasn't responded to this subject so I have no idea whether the tool is defunct, the author doesn't read this, or simply ignores it all.

As for renumbering, it was a conscious decision to refrain from script manipulation features for first release to make sure the plugin does its job without the chance of introducing bugs into the game itself. That's the reason I'm looking for feedback on what is already provided, to verify it works before opening a new type of feature.

But, if I don't hear anything about whether the plugin works with Say or Display, I'll have to assume it does and start earlier with manipulation features. It's best if people could verify this with standard functions, if possible, so I'll know I'm not dealing with basic functionality bugs. Makes debugging later releases MUCH easier.

SpeechCenter

Quote from: Calin Leafshade on Mon 26/03/2012 18:37:48
void iSay(this Character*, String what);
Quote from: Alan v.Drake on Mon 26/03/2012 20:07:33
function SayBox(this Character*, String text, (optional)int color);
function ThinkBox(this Character*, String text);
Thanks, in that case I'll pay extra attention to extender functions

Snarky

Quote from: SpeechCenter on Mon 26/03/2012 21:13:17
2. Snarky also a mentioned a tool that already handles voice acting scripts. I prefer not to recreate features already done by others, especially if the tool is built for that purpose. However, the author of that tool hasn't responded to this subject so I have no idea whether the tool is defunct, the author doesn't read this, or simply ignores it all.

I may in fact have been thinking of AJA's DialogDesigner, which now that I look at it more closely does something a bit different. Though I do think there have been other attempts to improve the AGS sound/voice system through plugins or standalone programs over the years; I would think those have been made redundant or incompatible by the new AGS sound system, though, if they ever were released in the first place. Sorry, I haven't actually tried any of them, they've just kind of been on the periphery of my awareness.

As for custom say functions, I use extender functions and in some cases functions with defined speakers (like narratorSay, say).

TheMagician

May I foolishly ask why so many people use self-written 'say' functions like

Code: ags
void iSay(this Character*, String what);

Dualnames

Quote from: TheMagician on Fri 30/03/2012 01:08:41
May I foolishly ask why so many people use self-written 'say' functions like

Code: ags
void iSay(this Character*, String what);


Cause we're elitist cunts. Also because usually the standard Say function doesn't work as intented and instead of putting a line before it and after it on a every single occasion, we do it like ninjas.

Also nemo is hot.
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

TheMagician

Quote from: Dualnames on Fri 30/03/2012 14:18:46usually the standard Say function doesn't work as intented

Could you elaborate on that please? I've used character.Say("...") for a complete game and didn't come across any obvious problems.

Calin Leafshade

It's a good policy to behave as if Dualnames' posts don't exist. You often come out worse than before you started reading them.

We use custom say functions in order to display text in new or different ways that are not supported by the default Say command. For example to display the text at the bottom of the screen.

For an example of this see Alan V Drake's Wretcher of my Ever-Beginning Tale.

SMF spam blocked by CleanTalk