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 - Dave Gilbert

#1
Thanks! I'll use that method for now, then. Right-clicking and selecting "paste" also works.
#2
Hi! I found a copy/paste bug in the latest version.

In the dialog editor tab, if I copy some text and try to paste it into one of the "option text" fields (using control-v), the text gets pasted into the SCRIPT instead of the option field.

For example, here I was trying to copy/paste the words "Yeah they do" into an option text field:

#3
Quote from: Snarky on Sun 01/10/2023 07:04:49
Quote from: Dave Gilbert on Sat 30/09/2023 23:36:53So I'm wondering if the problem lies with the rhubarb end, or if me changing the code like this messed things up. For example, what was the reason that frame 7 was originally unassigned? Was it essential to keep that?

Hmm, changing the mapping should be fine (but see below), though I would strongly recommend that instead of changing the AutoMapPhonemes implementation in the module code, you set up a manual mapping outside of the module when you initialize it—so, instead of calling AutoMapPhonemes, you use those exact AddPhonemeMapping calls yourself to set it up the way you want it.

Ok, that I can do. Thanks! Just to be sure, I did this on game_start():

Code: ags
  TotalLipSync.Init(eLipSyncRhubarb);    // Or whatever lip sync format you're using
  //TotalLipSync.AutoMapPhonemes(); <--- commented out!
  TotalLipSync.AddPhonemeMapping("X",8);
  TotalLipSync.AddPhonemeMapping("A",0);  // mbp
  TotalLipSync.AddPhonemeMapping("B",1);  // other consonants
  TotalLipSync.AddPhonemeMapping("C",2);  // EH/AH/EY etc. (bed, hut, bait)
  TotalLipSync.AddPhonemeMapping("D",3);  // AA/AE/AY (father, bat, like)
  TotalLipSync.AddPhonemeMapping("E",4);  // AO/OW (thaw, slow)
  TotalLipSync.AddPhonemeMapping("F",5);  // UW/OY/UH/OW (you, toy, poor)
  TotalLipSync.AddPhonemeMapping("G",6);  // F/V (fine, very)
  TotalLipSync.AddPhonemeMapping("H",7);  // L (letter)	

QuoteThe reason why the auto-setup is arranged the way it is (skipping frame 7) is because the other lipsync data formats, Moho and Pamela/Annosoft, distinguish between "ooh" sounds and "w" sounds, but Rhubarb uses the same phoneme/mouth shape for both. The auto-setup maps the frames the same way for all the formats, allowing you to set up the animation view once, and then use whichever lipsync data format you like. You can even switch formats along the way, if for example you want to hand-sync some scenes in Pamela format and do others automatically in Rhubarb (though you'd need to reset the module with the new format and mappings whenever you switch). I don't remember precisely why it's frame 7 that is the "optional" one rather than the last frame, but I would guess I based the order on some standard or convention for lipsync setups.

Okay. So since I never use anything aside from Rhubarb, I don't need to worry about that? I can use my version of the code?

QuoteAnyway, to get to the point of your question: looking over the code, it does assume that Frame 0 is the non-speaking frame, as in the AGS convention for NormalView and SpeechView; this frame is set when the animation file does not specify a frame. (This is necessary because some of the data formats can have gaps, but I don't remember if this applies to Rhubarb.) You could try to change it here:

Aha! Yes I have noticed that when the characters stop speaking they always end up on the wrong mouth shape. I added some code to manually change the frame when they stop speaking, but your solution is better! Thanks!

edit: Hmm. I notice that the mouth shape still finishes on the wrong frame. That's on me (because the way the mouth shape frames are imported) so if there's no way to fix that, I'll just continue using the workaround code I created.
#4
Hi! I had a question about the way Rhubarb is set up in this module:

The rhubarb mapping is written like this:

Code: AGS
void _autoMapPhonemesRhubarb()
{
 TotalLipSync.AddPhonemeMapping("X",0);
  TotalLipSync.AddPhonemeMapping("A",1);  // mbp
  TotalLipSync.AddPhonemeMapping("B",2);  // other consonants
  TotalLipSync.AddPhonemeMapping("C",3);  // EH/AH/EY etc. (bed, hut, bait)
  TotalLipSync.AddPhonemeMapping("D",4);  // AA/AE/AY (father, bat, like)
  TotalLipSync.AddPhonemeMapping("E",5);  // AO/OW (thaw, slow)
  TotalLipSync.AddPhonemeMapping("F",6);  // UW/OY/UH/OW (you, toy, poor)
  // Frame 7 unassigned to match Moho mapping
  TotalLipSync.AddPhonemeMapping("G",8);  // F/V (fine, very)
  TotalLipSync.AddPhonemeMapping("H",9);  // L (letter)
}

When my talking sprites are drawn and saved to individual files, they are labelled with the appropriate letter name. So they are called A.png, B.png, C.png, etc, all the way to X.png.

Thus, when they are imported, they are imported in alphabetical order. A first, and X last. When I assign the sprites to the loops, I just assign them in order. Like so:



Since the sprite order is different than what the code above expects, I changed the code to this:

Code: AGS
void _autoMapPhonemesRhubarb()
{
  TotalLipSync.AddPhonemeMapping("X",8);
  TotalLipSync.AddPhonemeMapping("A",0);  // mbp
  TotalLipSync.AddPhonemeMapping("B",1);  // other consonants
  TotalLipSync.AddPhonemeMapping("C",2);  // EH/AH/EY etc. (bed, hut, bait)
  TotalLipSync.AddPhonemeMapping("D",3);  // AA/AE/AY (father, bat, like)
  TotalLipSync.AddPhonemeMapping("E",4);  // AO/OW (thaw, slow)
  TotalLipSync.AddPhonemeMapping("F",5);  // UW/OY/UH/OW (you, toy, poor)
  TotalLipSync.AddPhonemeMapping("G",6);  // F/V (fine, very)
  TotalLipSync.AddPhonemeMapping("H",7);  // L (letter)
}

This SEEMS like it should work, but I am noticing that the final result for lipsyncing isn't as good as it could be. So I'm wondering if the problem lies with the rhubarb end, or if me changing the code like this messed things up. For example, what was the reason that frame 7 was originally unassigned? Was it essential to keep that?

Anyway, light shedding appreciated!

-Dave


#5
QuoteGoto Definition" command in script will now work for most of the game entities too, such as Characters, GUIs, and so forth. In that case it will find a game's entity and open a respective editor panel for it. This still does not work for some types, such as Room objects, and Views

YESSSSSSSSSSS. Thank you so much! I didn't even realize I wanted this. :)

edit: It even works from the dialog editor!! Bliss!
#6
Awesome!! Thanks so much. :)
#8
Oh! Good to know it exists at the very least. Ping this thread when ready! Thanks.
#9
Dang. I blink and there are new updates. Thanks so much! I will try it soon.
#10
Hello! Sorry for the double post. Is there a way to manually change the X position of the tail? Specifically for situations like this where my character is close to the edge of the screen:



I'd like the tail to be on top of the character, as opposed to just the center of the bubble. I looked through the script and found variables for the height and width, but not position.

Thanks in advance!

-Dave
#11
I used to cheat this by having a .Say and a .SayBackground running at the same time, but that doesn't work with the bubble. Ah well. I can probably cheat by making a bubble image GUI and place it where I need, just for the few instances where I need it. No big! Thanks anyway.
#12
Hello! Apologies if this was answered in the thread already, but I was wondering if there was a way to make the bubble always appear over the character's head? Specifically, in the following situations:

1 - the character is walking and I want them to talk using the sayBackgroundBubble command. I'd like the bubble to move with the character. Right now, it stays in place where it is drawn.
2 - the character is on a scrolling background and I want to move the "camera" left or right while they are talking. The bubble stays in the same screen position while the rest of the graphics move.

Also, is there a way to have TWO bubbles on screen at the same time? My game has a number of background conversations (using background bubbles), and if my player character says anything it stops the background bubbles from playing.
#13
Nothing to add except that I just implemented this for Old Skies and it works SO WELL. Thanks!

edit: dang it I spoke to soon. I am noticing that the camera defaults to starting on the left side of the screen, regardless of where the player is placed on RoomLoad. After the room loads, the camera zips across the screen to center on the player like normal. I noticed earlier in the thread that someone else had this problem but an update fixed it. Sadly that doesn't seem to be the case for me. Any light shedding is appreciated!
#14
This game was exceedingly good. Well done!
#15
Dunno why I didn't see this reply before, but yes! Those would be super useful.
#16
This was a gutpunch I hadn't been expecting. Jesus. Edmundo and I were just talking about him the other day.

Once upon a time, Larry Vales was THE game. It was one of the first complete games to be made in the engine, and Phil himself was a pillar of this community when it was in its infancy. He pre-dated ME joining, and I joined in 2001!

I didn't know him well. I chatted with him occasionally on this forum, on IRC (back when that was a thing) and the social medias. He always seemed like a genuinely sweet and funny guy. I had no idea he was going through so much. I am heartbroken that he passed almost a year ago and I never even knew. As Robin Williams famously said: "Everyone you meet is fighting a battle you know nothing about. Be kind. Always."

Dang it. Belated RIP, Phil. Dunno what to say.  :=  :(
#17
Been awhile since I visited this thread. Hi all! The game is still underway. Here's a new little sizzle reel:

#18
Hi all. I love the feature to "Add all sprites from folder" when adding an animation to a loop, but it has one small issue that makes it a tiny bit annoying to use.



It always leaves a blank sprite at the start of the loop which I then have to delete. Could there be a "REPLACE all sprites from folder" option that replaces all the frames in a loop, as opposed to just tacking them onto the end?
#19
Hello all. Right now we have commands like control-G to bring up the global script, but would it be possible to create custom keyboard shortcuts to bring up additional module scripts? There are a few that I have to open up a lot, and being able to open it with a quick keyboard shortcut would be handy. Especially since I have a lot of them buried in folders.

And while I'm here, a shortcut to automatically open the sprite or global variable tabs would be nice as well!
#20
Yayyy! Congrats Hob's Barrow team!
SMF spam blocked by CleanTalk