Show Posts

You can view here all posts made by this member. Note that you can only see posts made in areas to which you currently have access.

Messages - SpeechCenter

Pages: [1] 2 3 ... 8
Update: due to a fix in AGS 3.5 Alpha, the plugin now works with this release. The only caveat is speech playback is not working at the moment with that particular AGS release (this should work fine with AGS 3.4), I'll work on a fix for that, but everything else should function as normal.

Just got around to test it with the latest plugin and it works.

Thanks for taking care of the plugin probllem so quickly. I'll test this next week, based on the other thread, I believe the devised solution would work.

New release (2.1.0) is now available here

1. Updated parser to include all new capabilities of AGS 3.4.0
2. Added ability to add methods to custom speech function
3. Added DisplayTopBar to the list of speech functions
4. It is now possible to display dialog option text even if it is not used for display or speech in the game
5. Playback of <Player> text will use the configured player character

Note that the minimum AGS version required for this plugin is 3.4.0.
At the moment the plugin does not work with the current implementation of AGS 3.5.0 Alpha.

Some updates:
1. Updated parser to include all new capabilities of AGS 3.4.0
2. Added ability to add methods to custom speech function
3. Added DisplayTopBar to the list of speech functions
4. Playback of <Player> text will use the configured player character

Will release in the next few days, just finalizing some tests.

@Dave Gilbert:
1. I plan to include an option to show in the grid dialog text that is not shown or spoken, this it will be visible in the VO script. I'd like to release all changes above soon, will try to include that as well, if that won't happen now, will have another minor release with this change.
2. I reproduced the problem you reported of build while editing text. The changes are applied prior to the build, so nothing is lost, only that the edit box remains visible. The workaround is to go back again to edit mode and then cancel to get rid of that edit box. I"m still not sure what's the source of the problem, I'll work on it, seems to be related to the grid I used. It will take some time to work this out, but for now at least there's a workaround.
3. The fact that AGS ignores '");' at the end seems odd, I doubt it was done in AGS intentionally. However, if this is somehow officially supported I'll work to include that as well in the parser. If this behavior is just an artifact of some AGS parsing code, recreating this behavior in a different parser is going to be difficult, plus I assume AGS can break this behavior if it's not part of the official support.

Also note that at the moment the plugin will not work with AGS 3.5.0 Alpha version, there's a discussion in another thread regarding that issue.

Signing the plugin will not solve the issue. The problem is that the plugin was compiled with a reference to an AGS.Types assembly that didn't have a strong name. With AGS.Types now having a strong name it is not backwards compatible with previous versions. When AGS tries to load the plugin, it can't since the plugin is missing one of the references.
So indeed the consequence is that all plugins will need to be recompiled with the new library reference.

Do you also see an issue referencing a specific version of irrKlang? It looks like there are some options to redirect reference loading, but with (what I think is) the newest version of the SpeechCenter plugin the first error I get is trying to load irrKlang rather than AGS.Types.

Just to confirm, is this the latest version?

Yes, that's the latest version.
You're right that this may be the first error. The plugin doesn't include this library but relies on AGS functionality to include that for playback capability. I see the library was updated in AGS 3.5.0 to the .net 4.0 version which the plugin cannot load given the version it was compiled..
I think that if you try to temporarily go back to the .net 2.0 implementation of irrKlang then you'll hit the AGS.Types problem.

This functionality is not central to the plugin, as most of the functionality is the management of the text. I might look for a more robust way to load this external library to address that part, though with the .net version change this won't be trivial.

Signing the plugin will not solve the issue. The problem is that the plugin was compiled with a reference to an AGS.Types assembly that didn't have a strong name. With AGS.Types now having a strong name it is not backwards compatible with previous versions. When AGS tries to load the plugin, it can't since the plugin is missing one of the references.
So indeed the consequence is that all plugins will need to be recompiled with the new library reference.

I didn't go into the details of what was changed in the AGS settings class, so I don't know enough about the change to comment, but generally I would recommend limiting breaks only to major releases (meaning AGS 4.0 can understandably break some things, though hopefully not a lot)

I recently had trouble to run the existing editor plugin with the 3.5.0 release.
The reason seems to be that all the AGS .net assemblies were changed to strong names. This is a breaking change, as the plugin compiled with an existing assembly (e.g. the plugin references AGS.Types) with a weak name is not compatible with the new one compiled with a strong name (see the following link for more details).

Is there a particular reason the assemblies now use a strong name?

I've been playing around with Speech Centre and it's such a time saver!

However, I've run into a snag. We use custom hotspot properties for base responses that don't need specific code, whenever the character responds with just a line of dialogue.

If defaultInteract or defaultLook is set to True, it uses the lines provided below.

Looks like Speech Centre doesn't pickup on these lines (those speech file numbers were added manually), I guess this isn't how most people handle default responses but it seemed like a nice tidy way of doing it when we started.

Anyway, we have 80+ rooms setup like this...

I guess my question is: Is this something SC might be able to support in the future? I really don't fancy going through and adding all of these to room script :~(
It's a very interesting way to implement, I'll have to look at whether there is an easy way to access the hotspot properties. It does sound like a very specific way to implement this (interesting to know if others are using this or something similar), so I'll likely try to first look at options that allow extracting data from other sources a bit more generically.
Since I first want to ensure to get the plugin back to working condition, this use case will go to the backlog for now.

Huge apologies for the long time being away... too many things happened in real life and only now I have seen all the messages so I wasn't aware this was going on. These issues certainly need to be addressed as well as the requests which are overdue, the goal of the plugin is to improve the productivity and I'd like to ensure this is maintained.
I'm going to see what I can do, will take me a bit to figure all this out. If I see I don't have the capacity to handle then I'll look for other options to address.

Again, sorry for the delay in my response.

So I have been using this plugin for four years now and had no problems. I would seriously be lost without it. Today, sadly, I have hit a snag.

My game has a lot of background conversations (e.g., non-blocking). It got very complex very quickly, so I created a system that generates them fairly quickly. I've created an array of structs called bgConv, with each struct in the array containing the character, the line to be spoken, and the audiofile name (currently "null" until I get the VO in). I created a command, attached to the struct, called "convSetup" which is used like this:

Code: Adventure Game Studio
  1.     BGconv VillageEye2;
  3.     function BGsetup()
  4.     {
  5.         VillageEye2.convSetup(cEli, "Do these drawings on the wall mean anything to you, Mandana?",null);
  6.         VillageEye2.convSetup(cMandana, "I can not decipher their meaning, but I do get a sense of... reverence?",null);
  7.         VillageEye2.convSetup(cEli, "Reverence. Like worship?",null);
  8.         VillageEye2.convSetup(cMandana, "It is only a feeling.",null);
  9.     }  

The plugin can pick up dialog that is called by global functions, but that doesn't seem to apply to functions that are subcommands of other objects (like structs).  Is there a way to enable Speech Center to pick up these conversations? Or should I cut my losses and just redo how the function works? In hindsight, I probably should have tested this out long before now.
Hi Dave, long time :)
I checked and indeed this option is not covered. I'll try to find some time to update this, but I cannot really say at the moment when I'll be able to do that. Is it possible for you to use a global function for now?

Can I just say that this is bloody amazing. Not sure where I would go from here without this plugin.

Top work.
Cool, glad you liked it and found it useful.

Tools for developers are always a good thing.
Yes, the Speech Center plugin includes editing capability of translations. The standalone utility is there in case you'd like to edit the TRS file directly (e.g., your translator really doesn't know AGS or only interested in translating). Both options have value, depending on the use case.

Based on the description above, do I understand correctly that the plan is to use word-by-word translation in the auto-translation? In my experience dictionary is useful for lookup, but translating a whole sentence like that usually doesn't result with reasonable grammar.
In the past I considered integrating with online translation services, but most services I found required payment and/or had significant restrictions in their TOS, but maybe you found a service that is more useful.

Perhaps open a bug for at for libvorbis ( They'll probably be able to tell if this file is encoded incorrectly or if it's a software bug.
By the way, the file does play correctly on my VLC, but there's a problem to have it play from a different location than the beginning.

Regardless, it's a good idea to update the library, the current one is very old. It would also help building all dependencies from source, if one would like to do that.

The problem is that ov_read returns 0 even though it's not the end of file.
Indeed this is likely a bug in libvorbis. Check out reporting similar behavior. So if the Linux library uses libvorbis-1.2.2 or above it's likely to not reproduce there. Alternatively, update the library in Windows and see if it works.

Editor Development / Re: .NET version
« on: 16 Sep 2014, 20:27 »
Just a quick note, you can still compile the C++ portions with VC++ 2008 compiler while using newer VS IDEs. All you need is to install both VC++ 2008 and the newer VS. Then set the C++ projects to use the older compiler.

I've been using VS 2013 express for some time, including for privately testing my code against AGS compiled this way and it works just fine.
The downside is that it will require two installation of Visual Studio until those native projects will be upgraded. The upside is that the IDE is much better and the express version supports compiling both C# and C++ in the same solution. This was very useful on multiple occasions.

If, however, the consensus is to stay with VS 2008 IDE, moving to .net 3.5 is a good step forward.

Removing the headers is a good idea, but what about existing code? Will it continue to function or require conversion?

As for keywords, I would try to stick to C# as much as possible, as long as it makes sense. So perhaps 'public' can still be used.
(another reason to restrict the number of new keywords is that it increases the possibility someone uses this keyword in existing code and then the code won't compile)

* The new keyword internal should be added for structs that cannot be instanciated using keyword new
* internal structs should have access to a protected constructor, and should be able to return managed instances of the class by invoking it (e.g., via a static Create method, where appropriate)
AFAIK in C# (if we take one for analogies) "internal" structs are those that cannot be used by external module. Here we have a struct that may be used externally (in scripts) but cannot be created with "new" by scripts.
Also, as Gurok mentioned above, protected members should be (are?) accessible in extender functions.
Should not constructor be "internal" instead?
That would be confusing indeed. In C# static classes mean they cannot be instantiated ( So either support that or define private/protected constructor.

Given the many additions to the language specification, I suggest you keep a list of those changes either in the original post or a separate wiki page so it's easier to go through the final result.
It's also important to review those final decisions to ensure future compatibility.

By the way, I would still consider changing the classes to static to indicate classes that cannot be instantiated, assuming backwards compatibility can be maintained. Hence it would allow using a static class modifier in the language.

Version 2.0.4 is out and available here.
Fixes a parsing error in some specific scenarios.

Pages: [1] 2 3 ... 8