HMS: Animated Faces
Looking for a plugin that let’s you create animated talking faces during a message?
Designed with ease-of-use in mind so you don’t need to mess around with plugin parameters or script calls or anything. Just select a face picture in your messages as you normally would and it’ll automatically start talking!
Download
Plugin: download here (right click and save)
Data file template: download here
Installation
Download ths plugin and place it in the “plugins” folder in your project’s “js” folder. Then open your Plugin Manager (F10), double-click an empty row, and select the HIME_HMSAnimatedFaces plugin.
Once it is in your list of plugins, turn the plugin on.
Usage
Animated Message Faces
To display an animated face in your message, all you have to do is pick a face for your message. It’s no different from choosing a regular face.
Which frame you pick isn’t important because the animation will handle the rest.
Face Sheet Format
For the actual animation images, we will be using the default RPG Maker
face format, which has 4 columns of frames per row. You can have as many
number of rows as you need.
The format of the face picture is the same as your regular face pictures:
each row has 4 frames. If you need more frames, just add more rows.
The game will basically go through every frame repeatedly. But how does the game actually know that your face should be animated?
Data File
We use a “face animation data” file to keep track of face animations.
By default it’s called “face_animation_data.csv” and is located in the Data folder, but you can change the filename in the plugin parameters if you want. A sample data file has been provided in the download section.
It’s CSV format, which means you can set it up using spreadsheet software
like Microsoft Excel or Libra Sheets.
This is the basic format
Name,Type,Frames IMAGE_NAME,EXPRESSION_TYPE,NUMBER_OF_FRAMES
Where
Name is the filename of the face
Type is the expression to animate
Frames is number of frames in your animation
So for example, let’s say I had a “Talking” animation for face image
Actor3 that has 4 frames. My file would look like
Name,Type,Frames
Actor3,Talking,4
When I edit my animations using spreadsheet software, it looks like this. Just make sure you export it as CSV.
Eventually there will be different types of face animations, but for now we only have “Talking” faces.
Is it possible to combine this plugin with Irina_VisualNovelBusts? I want to make it so that the busts can have an animation while talking and I think it would be super cool!
Hey I’ve got a serious problem… I followed the instructions to the letter here, but it’s just not working. I have no idea why, I’ve troubleshooted the problem to the best of my ability.
I don’t know if you’re still actively responding to stuff here, but I’d really appreciate your help with this. If I can’t even get this little thing working, I don’t have much hope for getting your grid battle system working.
Hi HimeWorks! When I am talking to someone with your plugin on, the text boxes without Actor Images cover all of the text I have typed in under where the picture would be.
Here’s a Gif
https://gyazo.com/90836af23ec8b4247f44ad6342e04e6f
I am experiencing a bug, the plugin when on, it crops the text where the face could/should be. Even in battle texts!!! 🙁
Hi there! Thank you so much for creating such an awesome and useful project! I was looking for something like this for weeks and it is perfect for my project! My only problem is…I can’t download it. The ‘right click and save’ isn’t working because I use a macbook. Would you be able to tell me how I could download it from a macbook rather than a windows device? Thank you! 😀
There is a bug when if you don’t use any face, the message window crop the text where should be the face
I have the same bug, I wonder why some people dont? I use many YEP plugins, so maybe it has something to do with that, but whatever the reason, it crops the text where the face could/should be. Even in battle texts!!! 🙁
at the end you were able to fix the error?… is that I have the same one 🙁
First off, let me say: Fantastic plugin!
I am curious if it would be possible to alter this slightly to add tons of extra functionality to the plugin and help make working with animations simpler.
Right now, you place the animation Face in the portrait window, just as you would a regular Face. What about making it so that by selecting a specific portrait (0-7) an animation would play for that particular face. Example: Let’s say you have a standard Faceset, each image showing a different emote for the same character. Frame 2 is the character smiling. By selecting frame 2, the plugin would know (based upon the spreadsheet) to play the animation file where the character was smiling while speaking. Frame 8 shows the character angry, so by selecting that portrait the plugin would play the animation where the character is yelling. I feel this could be achieved simply, as the way you setup the plugin using a spreadsheet, all that would be needed would be 1 additional line for referencing the base portrait and frame to link to the animation file. (Or the frame from the faceset, say, Frame 2 for smiling, could reference a specific row to start playing the animation file from. Frame 2 is selected, and the spreadsheet knows that Frame 2 on this specific Faceset should start at Row 3. Etc.)
Or, if you wanted to keep the same format of the image, you could insert animation file into the Window just as it’s already set to do; however, the plugin could take note of which frame is selected and that could be the starting frame in the animation that plays. Think about it this way: You have an animation file that is 4 columns across (default RM faceset format) but 16 rows down. You select the portrait to be the very first frame (row 1, column 1), the animation spreadsheet is told to run that animation 4 frames, thus it would play exactly the way it does now. A 4 frame animation starting at the beginning of the file. But if you were to select a frame lower on the picture file (row 5, column 1), it would start on the frame selected in the portrait window (row 5, column 1) and play for how many frames the spreadsheet told it.
This keeps everything tidy, and allows developers to use placeholder images and other plugins that alter facesets without breaking any functionality. I could show deeper examples if you are interested, but unclear on what I said. I tried to type it out simply and only reference this plugin specifically, but it might help to understand where I’m coming from. I love your plugins to death, and this one is something RM games have been sorely lacking for a long, long time. It’s a plus to see your documentation mention more animation types are on the way!
I do like the frame-based designation. When I added support for “idle” animations, the issue started popping up: which animation should be played?
The names themselves have suffixes added to the base like “Actor1_idle” and “Actor1_talking”, but right now the animation that’s selected is automatically chosen for you: idle when they’re not talking, and “talking” when they’re…talking.
So there’s some sort of conflict between letting you manually choose the animation to play vs trying to make it easier to use by not having to manually tell it which one to play.
Maybe there’s a way to combine both?
Could the spreadsheet be used as an indicator? Say you have a file titled “Actor3”. If the plugin already reads how long an animation from a file, then if you were to make the plugin read a starting frame, 1 animation file could be set to different face animations. I think regardless of how you decide to structure it, a number of various issues that could arise. Also, it were to be coded to play the Talking animation while text is being printed, then change to Idle once no longer speaking. So the input file would look like:
Name,Slot#,Anim_File,Expression,Start,Frames
Actor3,2,Actor3_anim1,Talking,1,8
Actor3,2,Actor3_anim1,Idle,3,4
Actor3 would be the Faceset selected in the Message window, and Slot# would be 1-8 the frame selected, such as for displaying emotes.
Actor3_angry would be the animation used, let’s say it’s 3 rows by 4 columns. When dialogue was printed, Talking would start on Row1 and play for 8 frames (ending at the end of Row 2). Then once dialogue had completed, but before the message window was closed, Idle would start on Row3 and play for 4 frames.
I really enjoy the way you’ve set up a file that has control queues and variable length animations. If it were scripted in a similar fashion to the example mentioned above, it would open up at least two different methods for keeping track of and playing animations. Developers could create a Faceset for each animation, or create one long Faceset and use queues to handle all the different emotes they have. Once the spreadsheet was setup, usage would be as simple as selecting the right emote frame from a standard Faceset. So if Actor3 frame 2 was an angry face, selecting that would automatically play the speaking animation selected from the queue file, and the idle anim would follow once dialogue finished printing.
It’s 5am and I’ve not slept well at all this week, so if I’m not making sense, or this just feels far more complex than you want the plugin to be, I totally understand skipping over this suggestion. If you’d like to see picture format over giant block of text format, absolutely let me know, too. ^_^
In the current version, is this in? “right now the animation that’s selected is automatically chosen for you: idle when they’re not talking, and “talking” when they’re…talking.” Or is that just in the pre-release you’re working on? That takes care of selection which animation to use, although it would still be amazing to be able to specify which animation plays by selecting a face frame (1 for smile, 2 for angry, .. 8 for sad). That way if you select Actor3 Frame 2, the speaking animation for the angry emote plays and then plays the corresponding angry idle face.
That would be a pretty great outcome, with any uses with maximum automation. While I love the idea of being able to specify start Rows or frames within an animation file using the database file, as the previous post went in to detail on, this is a more simple option that pretty much does the same thing.
I love this plugin and the potential it provides to developers. I’m curious to see what direction it’ll go, if updates persist. Your plugins have always been spot on with filling special places few touch upon.
Anyway, I love your job, it’s very helpful for fools like me who don’t know how to program uwu
I would love it to be compatible with Galv’s busts plugin
We are two! 😀