Forum rules - please read before posting.
Tech questions during the weekend? Drop in on the community Discord channel!

Deriving from/forking ActionSpeech

I wanted to make some minor modifications to ActionSpeech (in the gui field add a line that displays the translation of the speech line in the currently set language, maybe readonly, maybe editable). But it seems that this specific Action is extremely coupled with AnimationEngine (multiple method calls that specifically require ActionSpeech) so making a custom action that does the same isn't an option. Would you have any idea as to how to aproach this issue? I was thinking about my custom action inheriting ActionSpeech, but it has a handful of private fields, that I would need to alter into protected at least, which in turn would result in modified AC anyway.


  • If making the private variables and methods protected would allow for that, I'd be happy to make that change official.
  • Yeah, the only private field that is used in ShowGUI method is runtimeSpeaker. So putting only that one into protected would solve the current problem, but since ActionSpeech is heavily coupled with other systems, making more fields protected would probably make sense.

    Once again, thanks a lot for implementing these niche extensibility features!
  • Another bit that is important is related to translation extensibility. We're currently looking at dialogue writing software (twine, etc.) and opportunities to import the data directly into AC. While it's not yet exactly clear what properties and features it would require from AC, one that is very likely would be custom actions/scriptable objects or other items that would be translatable. The feature that would help a lot and woudn't interfere with the user end workflow of AC would be to implement C# interfaces for translatable items. So that the searches would not specifically look for Hotspot, ActionSpeech, DialogueOption, etc. But for example "ITranslatable". What implementation it would require is probably best known by you (id, translation type (since we dont rely on class types anymore), etc.). Another side of this coin is reviewing how speech gathering looks through potential locations and gets items, but that is a much more complex task, so I have no ideas for it for now, but it might end up being not an issue at all depending on the extensions implemented).
  • edited August 2018
    The ability for custom translatables isn't an easy change.  However, if you can come back with a more clear description of what you'd require from it, I'll give it some thought.

    Have you considered Dialogue System, which integrates well with AC and also allows for external dialogue software?
  • Yes, Dialogue System is also under consideration. Sadly there might be some drawbacks with it in this project. We're currently evaluating its ups and downs. As to what exactly we need, since the solution as to how we're going to architecture this isn't clear yet, I can't say precisely. The general idea is that the entire conversation should be in a custom asset instead of in scene for it to be importable from external source (Dialogue System seems to do that). As to how exactly to compose that serialized asset and how to interface it with AC, how to interface it with AC Translation system, etc. is still not certain. That's why I'm currently inquiring about options that would highly increase general extensibility of AC. And lifting translatables into a C# interface seems to be one of the high usability, relatively low effort and no disruption for existing projects.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Welcome to the official forum for Adventure Creator.