Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Gal Shemesh

#81
@RootBound, it's working! 8-0 I thought that 'Wait(1)' will be too short and that the player.ChangeRoom() function will cut it in the middle that I didn't even tried it. Thanks!!  8-)
#82
Thanks for the reply, @RootBound! Yep, I tried the Wait() function. But unfortunately, it doesn't work very well as I want the sound to play when the FadeOut starts playing, and not to have to wait for the sound to end before it does...
#83
Mm... I see. Thought there might be a simple option for this in the editor as I wanted to use the same button sprite for different buttons, where each should cover a different area to serve as its hotspot. Anyway, thanks for your reply, @Khris! I ended up by making separated graphics for each button.
#84
Hi everyone,

Trying to solve this one out myself but kind of stuck...

I'm willing to keep the mouse cursor visible with the 'Wait()' sprite when Fade-In and Fade-Out transitions are playing. But Can't find a way to doing so - whenever a fade is playing, either by the 'player.ChangeRoom()' function or manually by using 'FadeIn()' and 'FadeOut()' functions the cursor gets hidden.

Thanks

EDIT:
Not sure if this is the right way to doing it, but I just ended up making a hidden 'gWait' GUI that I set with the Wait cursor sprite and size, and set it to follow the X and Y positions of the mouse cursor in the repeatedly_execute() function. Then I made a custom function that is called when clicking on the main menu buttons, and in it I set the 'gWait' GUI to show up, then I set a FadeOut() transition to play, and right after it before changing the room I made the 'gWait' GUI to be hidden again.
#85
Hi everyone,

Not sure if it's a bug, but better get a reply that it's not than not reporting at all:

When the 'player.ChangeRoom()' function is used along with the default 'FadeInAndOut' behavior, and a certain sound is set to be played just before changing the room, the sound doesn't play but only after entering the changed room.

For example, I made a click sound for buttons on a main menu screen, and set it to play right before the player.ChangeRoom() function. The click sound however plays either when the fade-out is finished or when the changed room is loaded (I can't tell). But if I set a FadeOut() function manually and afterwrads put the player.ChangeRoom() function then the sound plays correctly upon pressing the button.

Thanks
#86
Hi everyone,

Is there a way to align a sprite image of a button to either any of the sides / corners / center of a GUI button boundaries, the same as can be done for the text of a button?

I have a circled image button and I want that the hovering area of it will have padding in either direction, so it will be easier to hover and click on as the circle is only 26x26 pixels in size. It should also cover a text label below it which I want to highlight when the mouse cursor is hovering on the button.

Thanks
#87
Hi @Duzz,
Just watched your online video demonstrating the PowerQuest. Nice work! :)

I played with the Unity engine many years ago, way before it had the 2d handling objects and plugins that it has today, and I remember that I were very frustrated by the fact that creating a basic 2d game with it wasn't straightforward as I thought it to be. However, your PowerQuest looks amazing and it seems like you put a lot of thought making it very similar to AGS! :) Unity users who are interested in making 2d point-and-click advenure games are surely going to appreciate it a lot!

I also just finished playing your "The Telwynium: Book One" and enjoyed every second of it! Now I even understand better the benefits that your PowerQuest can add to a pixel-art game. Keep up the good work!
#88
Quote from: Crimson Wizard on Fri 28/07/2023 04:15:33This seems similar to what the SpeechCenter plugin does:
https://www.adventuregamestudio.co.uk/forums/modules-plugins-tools/editor-plugin-speech-center-version-2-2-0/

Ahh, didn't know that it exists. Thanks for pointing this out! Just checked it and found that there is some similarity, yet there are some differences:

I really like the idea that the plugin works directly in the editor, and that there's this feature that you can changes your entire game string directly from it; this is a very powerful feature. Yet I still find having an external file from the editor better, as I fear a little from plugins that can change my scripts - I prefer to do it manually, literly knowing that I'm the one who actually changing my scripts. :)

I also found a few issues, such as that the plugin didn't include my custom .Say function lines (I read the discussion of other members relating to this). Also, I've found that it considered some Display() messages as if my Narrator is saying them; I have a custom Narrate function for showing messages, but I'm not sure why it considered as if the Narrator is saying them, as I used a regular Display() function (not the custom one) in their case, such as when I click on the 'About' button to show some text on the screen.

As for the export to CSV, that's great but it lacks styling benefits. That is why I prefer to have a pure Excel (.xlsx) file; I made table-format which highlights odd and even lines in different color, making them much easier to read when translating. Here's a screenshot of the strings file from my recent 'Going Home' mini-game:


As for listening to either the original or voice-over speech files, the formula shown above is a local folder path link, and it gives you the freedom of having them play in your default media player program. The best thing is that you don't need to load the game in the editor for being able to see and click-to-hear the speech files next to the text lines, and you can even just send the Excel file along with the relevant speech files to your voice actors so they could work on them from their home.

Another note about how I handle audio files in advanced for saving time and effort later:
I made a very basic CMD script that lets you create copies of an 'empty-template audio file' of your choice, for setting up in advanced as 'placeholders' in scripts: the script asks you to choose a name for the file, along with the amount of files that you want. Then, it does all the work for you creating them in a Speech folder - if files already exist, it skips them so you don't end up with overwriting the precious speech files that you already recorded; for my convenience I made the empty file at the exact 1000KB in size, just so I could distinguish them in a detailed-list in File Explorer.

I made this script so I could provide speech files index number for my string lines in advanced, right when creating them in my scripts. This saves me time later, as once I have voice acting speech files I don't have to come back to each and every line in my scripts and manually add pointers to them; I just copy the most updated files over the empty ones and "tada"! :) Besides, it also lifts from your head the need for saving a new speech file and to manually give it a number after each recording (which could also have mistypes); you just open the empty placeholder audio file number that you need, record what you need, save and exit from it and move forward to the next file. And if you find that you need more placeholders, you just run the script again and give it a higher number.

Here's a GIF animation of how it works - I'm thinking about including this in my video tutorials:



I guess it's a matter of what works best for you, the same as we all make different ways for achieving the same goal. :)
#89
QuoteEditor is rather sensitive to the removal of project files. I might fix it to let it load at least.
Forgot to relate to this:

Thanks! That would be great if the project could be at least loaded if a translation file is missing.

QuoteIt is also a known problem that any change to a source text will cause it to create a new entry in the translation.
Solving this also needs a translation system redesign.
I wanted to note that I've found that even if the editor makes duplicated lines, manually editing of the trs file and removing them (while their exact version already exists above in the file) and then recompiling it, makes the editor to relate the original lines again. And then, if you re-update the translation file from the editor it doesn't make duplications in the trs file for these lines again.

I wouldn't touch the way that translation and speech are currently working in AGS; during trial and error I managed to develop some best practice and got a grip on the sensitivity of the translation file, in a way that I'm more experienced now in fixing things in it before the issues even arise. I also made a sophisticated Excel file for writing all the strings used in the game, along with formulas of direct links to the speech files of each line so you could listen to them directly from the Excel when doing either the English voice recording or voice-over; its structure is the same as the trs file, with odd lines for the original text and even lines for the translation. So if something goes wrong I can simply generate a new translation file, and then copy and paste all the lines from my Excel to it.

I will probably make an online tutorial showing this method as this may help others - by building a game that way this can save a lot of time afterwards, in both dubbing and translating process.
#90
Yep, I meant the alignment to the right. Thought I'm just missing an option as I took alignment for granted as a built-in option.

Anyway, thanks for the custom dialog options render suggestion and link! However, as I'm using 'Wait()' functions from within the dialogues in traditional scripting to make some 'pause' between the conversations, this may not work for me. As if I understood correctly from what is written there, blocking functions can't be used...
#91
Completed Game Announcements / Re: Going Home
Wed 26/07/2023 21:01:41
Quote from: CaptainD on Wed 26/07/2023 08:06:25Congrats on making your first game!  ;-D  I'm sure it will be the first of many.
Thanks!! :)

Quote from: bicilotti on Wed 26/07/2023 20:00:48Voice acting was hilarious!
A nice, short, polished game, I loved it!
Thank you so much! So glad you liked it. :-D
#92
Quote from: Khris on Tue 25/07/2023 22:14:41Nice work, just wanted to point out that AGS supports so-called extender functions.

Thanks, @Khris! :) I'm learning from the best I guess.

And thanks for pointing this out! I didn't understand at first why I couldn't just use cCharacter along with my new custom function name and make it to work. So that extender you mention is the 'this' word before the Character*?

*By the way, I've just posted my final mini-game "Going Home", which wasn't possible without your, @Crimson Wizard and @Snarky's help. So thank you all! :) You may find it in the Completed Game Announcements section.
#93
Completed Game Announcements / Going Home
Tue 25/07/2023 22:03:37
"Going Home" is a very short point-and-click adventure game, with full speech acting and a funny plot:

You're Roger. When the game starts you find yourself in an unknown place, somewhere in the universe. But, you're not alone - there's someone else there with you! Will you dare and check who that is and find a way to get back home? Or maybe this is not even about you!





I made this game during learning my way in the AGS engine. The idea was to re-create the Sierra-style AGS template from a complete scratch, to learn bit-by-bit how it is made, and then to take it from there and make an actual mini game that includes full speech acting and a funny plot. I hope you'll like it the same as I had making it. :)

Many thanks to the AGS community for their kindness helping me out with all my queries. This game wasn't possible without your assistance, and I look forward that it will be one of many from my future creations.

*The game has been also fully translated to Hebrew.

Available for download in the AGS game database:
https://www.adventuregamestudio.co.uk/site/games/game/2682-going-home/
#94
Quote from: Crimson Wizard on Tue 25/07/2023 15:38:23
Quote from: Gal Shemesh on Tue 25/07/2023 14:47:54For the time being I managed to create this custom function (end of page 2) to make character speech without having the '&' pointer in the actual strings, and so the translation file is now cleaned from speech file pointers whatsoever.

I have to clarify, that this function type won't work with the settings "custom say/narrate function in dialog scripts", because it currently expects function to have a single string argument. This is tied to how dialog scripts are parsed, so I don't see any feasible way to support an arbitrary function prototype at the moment.

Therefore it has to be called explicitly in the dialogs (with "custom function" settings one may use classic dialog script in the form of "charname: sais").

Yep, you're 100% correct. I've just finished modifying my entire mini-game to use this custom function, and all the dialogues to use the regular scripting with indentation; I also find it quite straightforward when copying 'saying' lines from regular scripts to dialogue scripts and vice versa, as I don't use the unique dialog scripting.

I also removed all the '&' signs from the translation file, so I now have a cleaned file with just the literal strings in it which looks and works great! :)

The only thing I'm trying to figure out now is how to set the dialogue selection options when the dialogue starts to align to the right of the screen, as currently they're aligned to the left.
#95
Thanks @Crimson Wizard, I much appreciate all your input.

For the time being I managed to create this custom function (end of page 2) to make character speech without having the '&' pointer in the actual strings, and so the translation file is now cleaned from speech file pointers whatsoever.
#96
Hi @Khris :)

On the same senario of the Narrate custom function you assisted me with, I'm trying to make the same thing for character.Say (any character) so the '&' with the speech file number will be outside of the actual string and not part of it, like when I call for the Narrate function as you instructed me:
Code: ags
Narrate(1, "Damn, you're looking good!");

However, I'm having some trouble modifiying the function to work.

The current function of yours with a little tuning for all the voice modes looks like this:

Code: ags
void Narrate(int cue, String text)
{
  String cueString = String.Format("&%d",cue);
  {
    if (Speech.VoiceMode == eSpeechVoiceAndText && IsSpeechVoxAvailable())
    {
      AudioChannel* ch = Game.PlayVoiceClip(cNarr, cue);
      Display(text);
      if (ch != null)
      {
        ch.Stop();
      }
    }
    else if (Speech.VoiceMode == eSpeechVoiceOnly && IsSpeechVoxAvailable())
    {
    cNarr.Say(cueString);
    }
    else if (Speech.VoiceMode == eSpeechTextOnly)
    {
      Display(text);
    }
  }
}

I've duplicated the custom function and managed to modify its code to make a specific character to say his cue, the same as the custom Narrate function does, but it's only for a specific character:

Code: ags
void Roger(int cue, String text)
{
  String cueString = String.Format("&%d", cue);
  {
    if (Speech.VoiceMode == eSpeechVoiceAndText && IsSpeechVoxAvailable())
    {
      AudioChannel* ch = Game.PlayVoiceClip(cEgo, cue);
      cEgo.Say(text);
      if (ch != null)
      {
        ch.Stop();
      }
    }
    else if (Speech.VoiceMode == eSpeechVoiceOnly && IsSpeechVoxAvailable())
    {
    cEgo.Say(cueString);
    }
    else if (Speech.VoiceMode == eSpeechTextOnly)
    {
      cEgo.Say(text);
    }
  }
}

Can you help me out making it work for any character?

Thanks

UPDATE:
I've just nailed it! The problem I had is that I declared the name 'character' after Character* which is already in used by AGS, so I changed it to 'myCharacter' instead.

Here's the code if anyone is interested not to include the speech file pointers ('&') in the actual character strings. This is very handy if you don't want to have the '&' pointer along with the strings in your translation file, and so you won't have to copy it for any translated lines below the original line. :)

Code: ags
// this function is used for showing character speech while having a speech file pointer OUTSIDE of the actual string.
// if you don't have a speech file yet just type 0 in its place.
// call for this function as follows where 1 is the first speech file of cCharacter:
// SayNew(cCharacter, 1, "A string for the character to say.");
void SayNew(Character* myCharacter, int cue, String text)
{
  String cueString = String.Format("&%d", cue);
  {
    if (Speech.VoiceMode == eSpeechVoiceAndText && IsSpeechVoxAvailable())
    {
      AudioChannel* ch = Game.PlayVoiceClip(myCharacter, cue);
      myCharacter.Say(text);
      if (ch != null)
      {
        ch.Stop();
      }
    }
    else if (Speech.VoiceMode == eSpeechVoiceOnly && IsSpeechVoxAvailable())
    {
      myCharacter.Say(cueString);
    }      
    else if (Speech.VoiceMode == eSpeechTextOnly)
    {
      myCharacter.Say(text);
    }
  }
}

Put the above in the GlobalScript header. And then call for it from other scripts like this, where cCharacter is your character ScriptName and 1 in the example is its first speech file Char1.ext in the Speech folder:

Code: ags
SayNew(cCharacter, 1, "the text string you wish the character to say"); 

* Note that this does not affect dialogue scripts and per my current knowledge, I'm not sure how to implement this in a way that dialogue scripts could use it with a speech file pointer that is outside of the literal string. So currently is you want to use this in dialogues you will need to use indentation and to use regular scripting method.
#97
Thank you so much @Crimson Wizard for taking the time to realte to all my queries! Much appreciated. :)

You gave me answers to everything, so I'll just wait for the next stable build with the buttons text fix and the set label to non-translating option for the score label.

As for the clarification about the '&' sign with the speech file number:
personally I'd prefer to have the pointer to the speech file only from the editor script side, so it won't show as part of the string. The reason is that it makes the translation process more fragile, as there's more place for errors which will only occur in the translated line if they're not written properly, either by a mistype or by forgetting to put the pointer at all. And then you can find yourself have to go all over your translation file again line-by-line to fix this - happened to me just last night.

Personally (and I might be mistaken), I don't see why someone will want to have a custom behavior with the particular translation in terms of speech files, since AGS by design uses the same index speech file numbers for all languages, and knows to pick the appropriate file from the sub-directories in the Speech folder if a translation is used. So while Ego1.wav in the root of Speech is used for the default langauge, Ego1.wav in Speech\Hebrew for examlpe is used as the speech file of the same line, only in Hebrew voice-over. So why would someone want to have it point to a different number? I mean, wouldn't it make a mess troubleshooting afterwards?

Hope it makes sense. :)

*By the way, maybe it's my bad but I've found that when I accidently clicked on the Update option instead of on Compile in on the translations file entry in the editor, I got duplications of the same lines in different places in the translation file. Maybe it was after fixing something in some lines, and then reverting them back as they were before the change and it caused the original version of the strings to appear more than once in the translation file. Is this normal? When this happens, I'm not sure where should I put the translation lines: under the old line of the same string in the translation file or under the new line...?

**Also, when I began the translation process and troubleshoot the different issues, I found that if I remove the translation file from the game directory altogether, that the editor then refuses to load the game afterwards; I had to take a translation file from a backup I had in hand and to copy it to the game's folder in order for the game to load again. Deleting the translation file from within the editor doesn't cause any issues loading the game without a translation file, though.
#98
Hi @Crimson Wizard

I have some more feedback to share. I've just finished my short game and also fully translated it to Hebrew - I have found that GUI buttons still show from left-to-right, although the rest text of the game shows correctly based on the translation file. Was this supposed to be fixed in the recent patch?

I also found these problems so I share my feedback below if you find it required for future fixing:

- The 'game title' property from the General Settings doesn't have a line in the translation file. So if it's shown on a statusline in the game then it shows the English title backwards.

- Numbers (including Scores) and parentheses signs shows flipped. For example, the number 12 is shown as 21, and a string of "(something)" in parentheses shows as ")someting(".

- If there's a string with a mix of Hebrew and English, the English text is shown from right-to-left instead of from left-to-right.
 
All these matters can be worked-around by writing their content backwards. But the main problem is with the buttons that don't present the text from right-to-left based on the translation file //#TextDirection=RIGHT option.

Last thing which I guess is by design, but maybe probably not brought too much to the attention as most games are in English: when including speech files pointers, for exapmle character.Say("&1 some line") or having a pointer in dialogue option cells, the pointer which is part of the string gets included for the English lines in the translation file. This requires to copy and paste them as well in the translated lines below them, or else the speech file will not play. So my question, is there another way to include pointers to speech files but not to include the & sign in the actual strings? I can use the custom function that @Khris assisted me with for making the narrator to play speech files, but I'm not sure how this can be implemented for dialogue options.

Thanks
#99
I'm so glad to see the interest of members in my query. Everything that was done so far is beyond my knowledge and understanding, but the results look fantastic!

As a noob in AGS (even though I'm getting progress), to me a built-in feature (or plugin) to make such thing would be best, but I'm not sure how tedious of development in the engine it requires, so I'm not even asking.

Meanwhile, in the game I'm working on I changed the auto FadeOutAndIn feature in the General Settings to Instant, so I could have complete control on when to play transitions when changing rooms and when not to. I tried to make a duplication of a room in greyscale color and wanted to make it gradually transition to it with a CrossFade, but I couldn't find any way to manually call specifically for the CrossFade transition from the script; there's only way to call to FadeIn() and FadeOut().

Anyway, the AGS Fake Screen + Box Blur by @Dualnames for making the room greyscale while other elements on-top of it could remain in color also looks great; I haven't tested it yet, so I'm not sure if it can gradually make the room to go greyscale like a cross-fade and without any blur.
#100
Thanks guys! Will surely check both options.
SMF spam blocked by CleanTalk