philipcollin Posted February 12, 2012 Posted February 12, 2012 hmm, try SendAnimEvent all in lower case also it says some error about not finding the graph when i use the command, but then when i close the console works anyway.
DocClox Posted February 12, 2012 Posted February 12, 2012 SendAnimEvent idleflutestart This doesn't want to play in the vanilla. Tried blacksmith and bard' date=' used "" '' and no quotes at all & tried with and without (). Just refuses point blank to do anything. Either refuses to send to graph or denies the presence of a string parameter. Any ideas? [/quote'] Do we still have a number that we don't know what it does? We could try that as a hex string, on the basis that it might be a form id Maybe reverse the byte order, convert to hex and try that, too
labrat Posted February 13, 2012 Posted February 13, 2012 also it says some error about not finding the graph when i use the command, but then when i close the console works anyway. Oh. maybe I was a bit premature killing it when the error came up.... I'll try again. @DocClox Do we still have a number that we don't know what it does? We could try that as a hex string, on the basis that it might be a form id Maybe reverse the byte order, convert to hex and try that, too Yes. Several. In this V3 possibly means use playidleanimation3 1 probably means 1 animevent idleFluteStart 0 0 2 means 2 records 3064642194 1690505273 7891816 means hkx 3064642194 1092176628 7891816 means hkx As we speak, trying all the usual. No joy so far on the first two lines. The form ids I've found are animobjectflute 00093642 animobjectlute 00093643 idleflutestart 00096F8C idlelutestart 00096F8D It probably is a reversed byte order code, as the last line was. It's just a matter of tying it to something relevant and working out what coding system is being used. I am working on the preliminary assumption that it is a path id linked to the physical location of the .hkx file (or choice of) to be played when that animevent is called.
labrat Posted February 13, 2012 Posted February 13, 2012 can you do those edits and test for me? you can test the animations by clicking on an npc ingame and typign the following console command: SendAnimEvent idleflutestart The vanilla works, unfortunately for those in search of the easy life, replacing the "unique" line with the one out of the lute .txt does not get my npc playing the lute, she just toots away on the flute again, (or doesn't as whether any sound comes out seems a bit hit or miss but she goes through the motions anyway). I can't guarantee that anything is actually reading my edited file.
prideslayer Posted February 13, 2012 Posted February 13, 2012 Tried all that byte reversing, even bit reversing the decimal # first. The rest of those are not strings or form IDs, the values are just too high. Got nowhere interpreting them as packed floats or doubles either, the values are too miniscule. Note that the first # in each of the two blocks is the same.
ZZTTV Posted February 13, 2012 Posted February 13, 2012 Just so you guys know Havok released the tools to edit Behavior files for free a long time ago. Just as long as its not commercial. http://software.intel.com/sites/havok/en/ Also here http://www.havok.com/try-havok
Guest Posted February 13, 2012 Posted February 13, 2012 Just so you guys know Havok released the tools to edit Behavior files for free a long time ago. Just as long as its not commercial. http://software.intel.com/sites/havok/en/ Also here http://www.havok.com/try-havok It is true that you can get the Havok Physics and Havok Animation SDKs from those links but not the Havok Behaviors. You are however correct they did release Havok Behavior Tool for free for non profit use but the link is no longer there. I know it was released though because I have Behavior 6.6 on my screen this min, however it without the project file .hkp it doesn't want to play with Skyrim's files. Not yet anyhow, I am working on it.
Teechan Posted February 13, 2012 Posted February 13, 2012 The last available for free version of HBT is version 6.6.0, which is still hosted on intel's website, apparently. http://software.intel.com/sites/havok/downloads/HBT.Installer.v660.Release.20090708-142144_Released.zip According to Beth threads this is so old the only thing the software is good for is to tinker with it and learn more about what Behavior really does. It won't work with Skyrim. (and while I research and tinker with things, half of my brain is doing THIS) But I learn about it eventually. xD
fore Posted February 13, 2012 Posted February 13, 2012 The last available for free version of HBT is version 6.6.0' date=' which is still hosted on intel's website, apparently. http://software.intel.com/sites/havok/downloads/HBT.Installer.v660.Release.20090708-142144_Released.zip According to Beth threads this is so old the only thing the software is good for is to tinker with it and learn more about what Behavior really does. It won't work with Skyrim. [/quote'] True. The fakt is, that .hkx files are STRIPPED DOWN, game specific versions of .hkp (the Behavior project file). And based on hkx files you have NO CHANCE to reconstruct those hkp files, even if you "find" the necessary non-free 2010.2 HBT version. Hence, you will not be able to use HBT, unless Beth decides to relese it's secret base files. Analyzing these text files, in my oopinion, is of no avail. It defines ADDITIONAL information (ON TOP of the hkx behavioe files), which they probably could not accomodate there. The base behavior definition is still in hkx. Like your "idleflutestart" is defined in mt_behavior.hkx and idlebehavior.hkx. And it's just referenced here in your .txt. I don't want to say it's pointless what you do here. Because you have definitely learned a lot (I apologize immediately for being sarcastic ). But if you want results, you should turn to some other possible solutions. To me the only possible solution right now are copied beast races, someone mentioned here before. But not human races, because they all share the same behaviors.
DocClox Posted February 13, 2012 Posted February 13, 2012 I don't want to say it's pointless what you do here. Because you have definitely learned a lot (I apologize immediately for being sarcastic ). But if you want results' date=' you should turn to some other possible solutions. To me the only possible solution right now are copied beast races, someone mentioned here before. But not human races, because they all share the same behaviors. [/quote'] Yeah, I've been thinking about that. We can do the race change, so that's not a problem. The main issue is going to be keeping the same appearance after the race swap. The beast races don't have all the facial morphs that the playable ones have. If we can fix that, and I have no idea how to approach the problem at the moment, then we can make this work.
philipcollin Posted February 13, 2012 Posted February 13, 2012 i can confirm that the .txt files do nothing, ive just deleted them and all the animations play fine. So its only the stuff in meshes/actors/character that control animation, gonna try to see exactly which ones control idles by trial and error and see if they relate to any of the data in the behaviour files. Somewhere there has to be a filepath.
philipcollin Posted February 13, 2012 Posted February 13, 2012 aha! actual file paths appear in mt_behavior, along with some other shizzle that i dont understand Edit: editting the filepath in mt_behaviour (and the associated file names) does correctly change the animations, but changing the title name (in the case of the flute ive changed it to animobjectblutestart) doesnt stop it playing, so the file isnt being searched, its got some form of list if its looking for the 6th item in the list, itll blindly call the 6th entry in this file (at least i think thats what it does) also theres some sort of conditional logic that i can spot in the file, not sure what it refers to though. ive tried overwriting some of the non 0 entries between the lines of readable ascii and as far as i can determine its not breaking anything. Edit2: The list is at the end of the file (im still talking about mt_Behavior here). I changed idleflutestart to idleblutestart and using SendAnimEvent it only recognised idleblutestart
Teechan Posted February 13, 2012 Posted February 13, 2012 I was scratching my head wondering what the hell Behavior was and did some research. I'm sure there are others reading these threads that are wondering the same thing. Havok released some YouTube video tutorials using HBT 2011. http://havok.com/behavior-tutorials I've noticed that these videos are listed out of order - The "Behavior Quality" video should be the last on the viewing list. The audio quality is not the best, but the hour I spent watching them was worth it. While we can't edit the behavior files, at least I know a little bit more about how the game works. The Locomotion tutorial makes a behavior graph from scratch.[video=youtube]
philipcollin Posted February 13, 2012 Posted February 13, 2012 Okay then findings so far: All the behavior files in characters/behaviors must be present or no behavior files are loaded. Also they are checked slightly (not sure how much, tried it by replacing one of the behavior files with a empty copy, and nothing loaded, so probably some header information is checked/loaded) 0_master -> changing the names of the idles in the list in this file doesnt seem to change anything, not sure what its there for... maybe checking that all the files are correctly present? mt_behavior -> This contains the idles and their file paths and other stuff (like how to run the animations attached to the idle) and simple (single animation) entry is layed out like this (well use idlelutestart as an example): AnimObjectLute AnimObjectLute AnimObjectLute_MG *random hex values* AnimObjectLuteLoop Animation\AnimObjectLuteLoop.hkx Deleting the first two AnimObjectLute doesnt stop the animation playing, but it does stop the lute appearing on the character, this leads me to believe this is information sent to the game/editor, but not relating to the animation. editing the hex values between AnimObjectLute_MG sometimes makes the game ctd when the animation is called, need to do more testing to see exactly which bits do things. I think these match to some commands for playing the animation. Now more complex entries are split over a series of entires like this, with one main header and a series of subsections. They also contain what i think are logical operators (like > == and !), so i assume there are some extra things you can do with this stuff, but that doesnt really interest us because we only want to add simple animations in (for now). Toward the end of the file is a long block of the idle names, seperated with either 1 or 2 null hex values (00), switching idledrumstart and idlelutestart make idledrumstart run the lute animation and viceversa. This list loosly matches up with the order of the animations within the file itself, but more testing needs to be done to determine exactly where in the file this list starts and finishes.
DocClox Posted February 13, 2012 Posted February 13, 2012 Toward the end of the file is a long block of the idle names' date=' seperated with either 1 or 2 null hex values (00), switching idledrumstart and idlelutestart make idledrumstart run the lute animation and viceversa. This list loosly matches up with the order of the animations within the file itself, but more testing needs to be done to determine exactly where in the file this list starts and finishes. [/quote'] This is sounding a lot like the list of animations found in gameplay->animations you know. And some of those animations objects can be duplicated. So maybe if we can duplicate one to get the entry, and then hack the file path... If we can find the path ... except the path is already set up in the animation tab. The things we can dup are below that. So maybe the challenge is to get the entry into that list. [edit] Sorry, that probably makes no sense at all. I think I need a coffee or ten ...
philipcollin Posted February 13, 2012 Posted February 13, 2012 well heres what i think we could do: Add an entry to the end of the list (or in the middle, if someone has got a nice tool that can insert a block of blank hex values into a file instead of overwriting) and then add the entry for the animation we want, then fiddle with it till it works. Its just that one bit where we need to add space into the file to add our animation... anyone know of a good tool that can do that?
philipcollin Posted February 13, 2012 Posted February 13, 2012 Toward the end of the file is a long block of the idle names' date=' seperated with either 1 or 2 null hex values (00), switching idledrumstart and idlelutestart make idledrumstart run the lute animation and viceversa. This list loosly matches up with the order of the animations within the file itself, but more testing needs to be done to determine exactly where in the file this list starts and finishes. [/quote'] This is sounding a lot like the list of animations found in gameplay->animations you know. And some of those animations objects can be duplicated. So maybe if we can duplicate one to get the entry, and then hack the file path... If we can find the path ... except the path is already set up in the animation tab. The things we can dup are below that. So maybe the challenge is to get the entry into that list. [edit] Sorry, that probably makes no sense at all. I think I need a coffee or ten ... Also just checked, the creation kit uses the .bsa, if you remove it it throws an error. Also it doesnt read me edditted files (though it would if i repackaged them into a .bsa)
philipcollin Posted February 13, 2012 Posted February 13, 2012 Another update: A behavior file seems to become invalid if its length changes at all (i added a single 00 value at the end and it stopped working), this leads me to believe theres a size list or something somewhere that checks the files before trying to load them. Also i shifted the Animation path for the lute anims up by a single line, and they stopped working. this means that theres a very specific syntax its in, and not just deliminated by an arbritrary amount of null values (as id first thought)
ToJKa Posted February 13, 2012 Posted February 13, 2012 A behavior file seems to become invalid if its length changes at all (i added a single 00 value at the end and it stopped working)' date=' this leads me to believe theres a size list or something somewhere that checks the files before trying to load them. [/quote'] Sounds like there's a checksum somewhere, which also might explain the second issue.
philipcollin Posted February 13, 2012 Posted February 13, 2012 A behavior file seems to become invalid if its length changes at all (i added a single 00 value at the end and it stopped working)' date=' this leads me to believe theres a size list or something somewhere that checks the files before trying to load them. [/quote'] Sounds like there's a checksum somewhere, which also might explain the second issue. there are however some values you can change, like the title of each animation, and their idle name. This means no checksum or no edits would be possible.
ToJKa Posted February 13, 2012 Posted February 13, 2012 Oh. Never mind me, then Anyway, this sort of experimenting is exactly what i meant with "if it's difficult it's merely a delay, if it's impossible a way around it will be found". Sooner or later someone will crack it open
philipcollin Posted February 13, 2012 Posted February 13, 2012 Indeed, the more people who throw ideas at it the quicker we find the link between the files and entries, and can duplicate them ourselves. Seeing as we dont need any complex behaviour graphs, the stuff we are trying to do is quite basic and should be RELATIVELY easy, i give it a month, tops
prideslayer Posted February 13, 2012 Posted February 13, 2012 Do you expect the end result of this to be the ability to add entirely new animations without affecting any of the vanilla ones? If so, how will they actually be added? Are you going to have to tell users they need to unpack their BSA, add your stuff, and then repack it, in order for it to be available in game and show up in the CK?
DocClox Posted February 13, 2012 Posted February 13, 2012 Do you expect the end result of this to be the ability to add entirely new animations without affecting any of the vanilla ones? If so' date=' how will they actually be added? Are you going to have to tell users they need to unpack their BSA, add your stuff, and then repack it, in order for it to be available in game and show up in the CK? [/quote'] Simplest way would be to register the BSA with the new definitions. Put it at the end of the list and it should override definitions in the vanilla ones. New animations ... are still going to be a pain, but if we can have 100 slots for new idel anims, we can say have user_anim00, user_anim01 ... user_anim99 and new animations can overwrite the user_anim files which can still presumably be loose. And by the time we start runnng short of space, hopefully a more general solution will be in place.
prideslayer Posted February 13, 2012 Posted February 13, 2012 Gotcha, kinda figured it was going to be something like that. If the BSA is entirely new, even if it has everything it needs, the animations are still not going to "show up" unless the animation names have been registered in some other central place. Is that the gist of it?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now