Author Topic: Community Project: Emotes  (Read 10045 times)

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Community Project: Emotes
« on: August 18, 2013, 06:38:31 AM »
Apologies to the folks who have been working on MOV popmenus, but I'm now at the stage where we can begin looking at a better way to handle these.

What we need to build is a list of emotes (preferably with the names listed on the wiki) and map those to sequencer state bits.

Now, I imagine that very, very few people are familiar with what sequencers are or how they work. Long story short, they are the nuts and bolts of how the game looks at your character's state and decides which animation to play (a MOV). Here's some instructions on what needs to be done.

  • Find an emote with a known MOV (the popmenu sources are a good reference for this). For this example, we'll pick /em AirGuitar.

  • Grab my text dump of the player entry from sequencers.bin here and extract it. Open up the text file and search for the MOV name. It should be a line that looks like
        -------- Move 7688 --------
        Name = EMOTE_AIR_GUITAR_PRE
  • Scroll down a bit until you find some lines that say Requires1, Requires2, etc. They'll look like this:
        RequiresCount = 3
        Requires1 = EMOTE (724)
        Requires2 = DANCE (411)
        Requires3 = TEN (699)
        Requires4 = EMPTY (0)
        Requires5 = EMPTY (0)
  • The RequresCount line tells you how many are valid (the EMPTY ones are a good sign, too). If this move doesn't have any Requires, then it's probably the wrong one. In this particular case, there are 3 sequencer state bits being set: EMOTE, DANCE, and TEN. These are what I need to build a list of.

  • Test your results using the developer preview of Icon here. That copy includes a new command, /seqbits. You can use it to directly set sequencer bits either on yourself or a target. Just put spaces between the bits, like this:
    /seqbits EMOTE DANCE TEN
    And voila! You'll be doing the air guitar. Success!

Why use state bits instead of MOV names? Simply, state bits can take other factors into account where MOVs can't. A good example is the emotes that animate differently when you're flying. Try /seqbits EMOTE BACKFLIP while on the ground, then try it again in the air and see the difference. A simple /mov can't do that.

Power animations are specified in terms of state bits as well, but I have a good source for those (powers.bin has them).

wyldhunt

  • Lieutenant
  • ***
  • Posts: 91
Re: Community Project: Emotes
« Reply #1 on: August 18, 2013, 01:23:22 PM »
Well, looks like I'll shift course from popmenu tricks to this for now. I'm familiar with sequencer state bits in programming and had come across the difference between emotes and MOVs early on with Icon.

Codewalker, in what format do you want to maintain the list of emotes and their sequencer state bit-mapping and how should we share our contributions?
Wyldhunt
Guardianite since I2
Playing as Wyldhaunt on Rebirth

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Community Project: Emotes
« Reply #2 on: August 18, 2013, 04:40:31 PM »
Don't need anything real fancy. I threw together a shared google doc real quick, but don't feel obligated to use it if you think of something better.

A popmenu file (even a replacement for quickchat.mnu) is also an option. The /seqbits command will be a permanent part of Icon starting with 1.8 and is a good way to trigger particular animations. Sometimes which MOV is triggered will also vary for the same state bits based on the entity type (skeleton and rig) of the target.

MWRuger

  • New Efforts # 1,000!
  • Elite Boss
  • *****
  • Posts: 1,117
  • The Devil is in the details! Quick! Get him out!
Re: Community Project: Emotes
« Reply #3 on: August 19, 2013, 03:37:52 PM »
I'll try and help with this. It's been a while (26 years) since I did any coding, but this just seems like routine work not coding, just reading a dump isn't bad.


To avoid duplication, do you want to hand out a list or do you have some other method? Could just assign them by alphabetically A-C, D-F, etc.

Also when do you need them by? I work best with a schedule.
AKA TheDevilYouKnow
Return of CoH - Oh My God! It looks like it can happen!

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Community Project: Emotes
« Reply #4 on: August 19, 2013, 06:02:11 PM »
Not sure how we'd divide them up since we don't have a good list of who is planning on doing what. You could always post to the thread with a particular range you're working on if you want to batch some.

Glancing at the sheet, I do see a couple of things. We don't really need to catalog the A_* animations, since those are usually redundant with the standard emotes, just with the FLY bit added (which is set by the game engine while you're flying). Same for the shield and weapon stances, etc. What I'm most interested in is the base version without those extra bits.

I don't have a set schedule. The first stage will probably be to make or see if someone puts together a replacement quickchat.mnu with the standard emotes replaced with seqbits commands.

wyldhunt

  • Lieutenant
  • ***
  • Posts: 91
Re: Community Project: Emotes
« Reply #5 on: August 20, 2013, 10:49:00 PM »
After looking over the playerseq.txt file a bit, I realized that some of this information could be parsed via script, at least pulling "move" names and getting the seqbit constants in a format which could be copied/pasted into a command line in Icon and removing the rest. Rather than post the results of this interim step, I'm going to look into the EMOTE seqbit constant and see whether it consistently indicates known emotes. If so, I'll delve further into that and see what shakes out.
Wyldhunt
Guardianite since I2
Playing as Wyldhaunt on Rebirth

wyldhunt

  • Lieutenant
  • ***
  • Posts: 91
Re: Community Project: Emotes
« Reply #6 on: August 20, 2013, 11:22:03 PM »
While more than just the seqbits containing EMOTE will animate on a player rig, it looks like the ones which contain EMOTE will give us most all of the known emotes. This includes the randomizing elements (such as EMOTE ALAKAZAMREACT).

However, I'm finding an interesting item: any emote-spawned objects don't always appear until the animation has gone a while (possibly one cycle), and the objects don't despawn right when then animation is cancelled/completed. This might be a different Icon vs server code object spawn/despawn check. Examples are EMOTE BINOCULARS and EMOTE BOOKRESEARCH.

There are 351 of these EMOTE lines (culled some duplicates; there may be more to cull). I'm going to test real quick that each of these animate before attempting to map them with paragonwiki emotes and the default quickchat menu.
Wyldhunt
Guardianite since I2
Playing as Wyldhaunt on Rebirth

wyldhunt

  • Lieutenant
  • ***
  • Posts: 91
Re: Community Project: Emotes
« Reply #7 on: August 21, 2013, 03:55:39 AM »
Alright - I have progress to share. I placed the information in a multi-worksheet ODS, at https://docs.google.com/file/d/0B5FhLhcBjWhvMEhXeDh6RUhiNFU/edit?usp=sharing. The first sheet (Emotes) is the focused information. I have almost all of the "Normal" emotes from http://paragonwiki.com/wiki/Emotes listed. The only ones I could not find were None (I'm not sure this would be an actual "emote", more like a cancel function instead), and Dice1 through Dice6 (I'm not sure these were in the game later on). I did not attempt the FlyPose emotes.

I did not get to the rest of the emotes (from the Boombox section on).

I figured I'd leave the multiple MOV names in the worksheet - I have indicated "duplicates" in the Emote column. It's likely better to list these multiple MOVs in the Move Name and Move Number columns and have one row per Emote, however the hour is late here.

I did add a notes column for more unusual stuff I wondered about or confirmed.

To anyone testing the Seqbit content: there are some more interesting ones, like the Reichsmans and and the Signature Poses. Heh - be careful though, some don't automatically cancel, and I never did get Manticore's arrow out of my character's belly until I closed and reopened icondev.

I can't commit to spending more time on this (though if I get some time I will), so anyone who wants to pick it up, please feel free!
Wyldhunt
Guardianite since I2
Playing as Wyldhaunt on Rebirth

Zombie Man

  • Elite Boss
  • *****
  • Posts: 296
Re: Community Project: Emotes
« Reply #8 on: August 21, 2013, 01:40:12 PM »
The only ones I could not find were None (I'm not sure this would be an actual "emote", more like a cancel function instead), and Dice1 through Dice6 (I'm not sure these were in the game later on). I did not attempt the FlyPose emotes.

Nice work! Some info...

None was not an emote, it was a command that shut off any running emotes.

Dice1 - Dice6 were original to the game and were in until the very end. Dice7 was added later.

I don't think the FlyPoses were actual emotes. They were a very kludgey hack to animations if one were flying, from my understanding of dev-talk about it.

wyldhunt

  • Lieutenant
  • ***
  • Posts: 91
Re: Community Project: Emotes
« Reply #9 on: August 21, 2013, 05:43:07 PM »
Thanks, Zombie_Man. Hmm, I'm not finding Seqbits for Dice1 through Dice6 - I did of course find Dice7. I'll look more for Dice1-6 later.

Well, I can't seem to stop working on this, so I'm continuing today. Another update uploaded (https://docs.google.com/file/d/0B5FhLhcBjWhvTkdFd0hpYWNGb1E/edit?usp=sharing). Got down to the New Year's Pack (skipping Boomboxes for now). I'll likely have this finished up this evening.

I'm sure somewhere in the game code there is a mapping from Emotes to Seqbits (possibly through other mappings) already, so I'm guessing this exercise is another interim step. Still, it's a way for me to look more at the game code, so I'm all for it.
Wyldhunt
Guardianite since I2
Playing as Wyldhaunt on Rebirth

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Community Project: Emotes
« Reply #10 on: August 21, 2013, 05:55:19 PM »
Thanks, Zombie_Man. Hmm, I'm not finding Seqbits for Dice1 through Dice6 - I did of course find Dice7. I'll look more for Dice1-6 later.

I don't think there are any for Dice1-6. Asserting the bits for dice should pick a random one to play. AFAIK it was never possible to manually select which result you got (except for Dice7 of course).

Quote
I'm sure somewhere in the game code there is a mapping from Emotes to Seqbits (possibly through other mappings) already, so I'm guessing this exercise is another interim step. Still, it's a way for me to look more at the game code, so I'm all for it.

Not in what we have. All of those mappings would have been serverside. Normal sequence would be something along the lines of:

  • User types /em dice
  • Client sends "em dice" to the server on the command channel.
  • Server resolves the name "dice" in its lookup table for emotes, determines which sequencer state bits to apply.
  • Server analyses all current bits, picks an appropriate sequencer move to play.
  • Server transmits index of move to the client (and everyone else nearby).
  • Client receives animation command, plays appropriate move (and looks up its symbolic name from sequencers.bin to save in a file if demorecording).

We do have a full copy of the sequencers, but the best we can do is short-circuit the process from step 1 to 6 by setting the bits clientside and using its sequencer code to figure out which move to play. I'm already having to jump through some hoops to make this work, as the client normally ignores sequencer bits on everything except for the player (so that movement prediction can play the right running animations). I have to force it to run an evaluation cycle on an NPC instead of the player when you use /seqbits.

wyldhunt

  • Lieutenant
  • ***
  • Posts: 91
Re: Community Project: Emotes
« Reply #11 on: August 21, 2013, 08:17:03 PM »
I don't think there are any for Dice1-6. Asserting the bits for dice should pick a random one to play. AFAIK it was never possible to manually select which result you got (except for Dice7 of course).
That was my thought too - Zombie_Man indicates above that we could, however I'm not finding any seqbits to back that up.

Not in what we have. All of those mappings would have been serverside.
I thought server-side might be the case.

We do have a full copy of the sequencers, but the best we can do is short-circuit the process from step 1 to 6 by setting the bits clientside and using its sequencer code to figure out which move to play. I'm already having to jump through some hoops to make this work, as the client normally ignores sequencer bits on everything except for the player (so that movement prediction can play the right running animations). I have to force it to run an evaluation cycle on an NPC instead of the player when you use /seqbits.
I wonder whether some of those hoops are introducing the object spawn/despawn lag I'm finding when using the /seqbits command. I haven't tested to see whether the issues are predictable from my end. I'll hit that later.

The next revision is ready: https://docs.google.com/file/d/0B5FhLhcBjWhvMEhXeDh6RUhiNFU/edit?usp=sharing. (I also need to find out how to not require a new link whenever I make a revision - later.)

Everything is done except the following emotes:
  • None: not an actual emote
  • Flyposes: possibly not actual emotes but alternate animations - leaving these as out of scope
  • Most BB emotes: ParagonWiki Emotes uses gifs for examples, so no audio there. The MOV and Seqbit constant names do not match up with the emote names. So I downloaded Ahsen Fury's music/sfx compilation, and was able to match up BBAltitude and BBBeat using those filenames, however the other files are by number as well. I'm going to dive into piggs from the I24 CoX files download, along with my GvE and original editions discs and see what I come up with.
I also went through the default quickchat.mnu, and found DoubleFacepalm and ObserveDice in the file yet not on ParagonWiki Emotes. I mapped them to seqbits as well (though ObserveDice's matching is a little shakey - the seqbits/MOV name is a little generic, and I'm relying on my own memory of live CoX as the confirmation here).

In addition to the versions with an added FLY seqbit constant, there are some with an added SHIELD seqbit constant. From the first post, I'm assuming both the SHIELD and FLY versions don't need to be separately mapped. I also found one, MOV EMOTE_CUSTOMRIFLE_POINT, which appears to be an alternate Point MOV when equipped with a rifle.

There are several MOV/unique Seqbits which are not included in ParagonWiki Emotes nor the default quickchat.mnu. If somehow we could get ahold of the Emote mappings from the server-side code, we could verify them, otherwise I think we'll have to come up with our own Emote names if we want to call them from an Emote command. Many of them have indications to their names from the Seqbits/MOV names (such as "CCRainbow" for MOV EMOTE_COSTUMECHANGE_RAINBOW and "WalkieTalkie" for MOV EMOTE_WALKIETALKIE_IDLE). I have a feeling that others were not intended for players, such as the Reichsman and Signature Pose entries. I don't know whether you want to create Emote names for these.
Wyldhunt
Guardianite since I2
Playing as Wyldhaunt on Rebirth

goodtime

  • Boss
  • ****
  • Posts: 170
    • my videos
Re: Community Project: Emotes
« Reply #12 on: August 21, 2013, 08:43:03 PM »
I think this should be a list of all the Move names in the file (not from the wiki, if they're different), and sequence bits, 8,394.

https://docs.google.com/spreadsheet/ccc?key=0AjU4Qj9sHgEgdC1YRGh1U1dQX1Bzb0pEaXM1Z09xdUE&usp=sharing

There are a LOT of empty ones.   They're still in there.   If you need a list with those stripped out, or another column as an indicator for sorting, let me know.

edit: Hm.  reading over the last few posts, I guess this is maybe less helpful than I had thought.  :/
« Last Edit: August 21, 2013, 09:14:15 PM by goodtime »

wyldhunt

  • Lieutenant
  • ***
  • Posts: 91
Re: Community Project: Emotes
« Reply #13 on: August 21, 2013, 10:35:22 PM »
Sorry, Goodtime - I got into this and found the time to process it. If you have the inclination, please check my work: I normally make some mistakes at least.

Also, I found the Music page at ParagonWiki, which has the BoomBox tracks listed by emote name with musical examples. I'll compare these to the EMOTE DANCE POSE BOX Seqbits, and should have the Boombox track emotes completed fairly soon tonight.
Wyldhunt
Guardianite since I2
Playing as Wyldhaunt on Rebirth

wyldhunt

  • Lieutenant
  • ***
  • Posts: 91
Re: Community Project: Emotes
« Reply #14 on: August 21, 2013, 11:40:16 PM »
Alright - all the BoomBox track emotes are in. Latest version: https://docs.google.com/file/d/0B5FhLhcBjWhvMEhXeDh6RUhiNFU/edit?usp=sharing

I think that's it for now. Now on to some popmenu tricks...
Wyldhunt
Guardianite since I2
Playing as Wyldhaunt on Rebirth