TTLG|Thief|Bioshock|System Shock|Deus Ex|Mobile
Results 1 to 25 of 25

Thread: Short Morrowind - UW mod update

  1. #1
    Member
    Registered: Aug 2001

    Short Morrowind - UW mod update

    No screenies this time, but some nice info!
    http://www.rpgplanet.com/morrowind/g...nderworld7.asp

    Enjoy!

    Taz

  2. #2
    Member
    Registered: Dec 2000

    I'm not complaining, but the admins might prefer that you use a single thread for updates like this.

    Keep up the good work.

  3. #3
    Moderator
    Registered: Sep 2000
    Location: Hong Kong

    Sounds very promising indeed! Is this a solo effort, or are you going to gather a team, much like the other ultima remakes.

  4. #4
    Member
    Registered: Aug 2001

    Originally posted by -_-:
    I'm not complaining, but the admins might prefer that you use a single thread for updates like this.

    Keep up the good work.
    If they do, I wish they'd tell me! Heh!

    Originally posted by twisty:
    Sounds very promising indeed! Is this a solo effort, or are you going to gather a team, much like the other ultima remakes.
    Right now, primarily solo, with the guidence of Bethesda. They aren't doing any actual work on it... but they are providing me with 3DS Max info that pertains to Morrowind, and will probably be giving me scripting language support, when I get to that stage.

    Will I look to gather a small team in the future?

    I don't know. So far, the only thing I really see that I would need help with is getting all the dialog from each NPC (That can talk, obviously). It would be very time consuming to go through the game and talk to each NPC over and over to get their full dialog. That is time that would be taken away from physically working on the mod.

    Of course... if there was a hack to look at the dialog files... that would make it even easier.


    Taz

  5. #5
    Member
    Registered: Jul 2000
    Location: Brittyland!

    heh, keep all this to one thread? this is whats keeping this forum alive, (other than arx)
    Its looking good, as Ive said numerous times before.

  6. #6
    Administrator
    Registered: Oct 2000
    Location: Athens of the North

    Originally posted by TazMan:

    Of course... if there was a hack to look at the dialog files... that would make it even easier.
    The conversations are in an interpreted byte code instruction format, that acts almost like a mini virtual conversation machine. Decoding the strings for the conversations is easy enough, and I did write a small program that allowed you to step through some of the conversation code, although it was very primitive and was just for my own use.

    I know that Jim's done some work on documenting the conversation structure for the shack project, so you could take a look at the information there.

    Alistair

  7. #7
    Member
    Registered: Aug 2001

    Originally posted by Al_B:
    The conversations are in an interpreted byte code instruction format, that acts almost like a mini virtual conversation machine. Decoding the strings for the conversations is easy enough, and I did write a small program that allowed you to step through some of the conversation code, although it was very primitive and was just for my own use.

    I know that Jim's done some work on documenting the conversation structure for the shack project, so you could take a look at the information there.

    Alistair
    Hmmm... I found nothing regarding conversation structure on Jim's site. I even downloaded and ran the latest shack viewer.

    Even if he had some info regarding the structure... I doubt I have the programming ability to utilize the info. I haven't touched C / C++ in like 10 years, LOL!

    Maybe you would be open to obtaining the conversation trees for me in UW1, since you have fiddled with it already. In exchange for credit on the project, Of course.

    If possible, I would like to get the conversation tree in "sort of" a flow chart format per NPC. That way, porting the dialog into the Morrowind Editor would be fairly straight forward data entry.

    Let me know if you are interested

    Regards,

    Taz

  8. #8
    Member
    Registered: May 2000
    Location: London

    TazMan: There is some information on the bytecode format for the Underworld conversation engine in the unofficial specs document. If you download the TSSHP source release you will find it in the doc/ subdirectory, or there's an online copy at http://madeira.physiol.ucl.ac.uk/peo...s/uw-specs.txt . The latter isn't guaranteed to be bang up-to-date though.

    As far as strings go that's easy ... I've written a program to dump those out in text format which you are welcome to a copy of, or just the text file itself if you'd prefer.

    If you need anything else hacking-related just yell. I can probably get you geometry information on the original 3D models, such as the ankh (did you know the damn thing was Gouraud-shaded? In 1991?) --I've pretty much cracked the 3D model format except for the colour information which is coded in a really weird way.
    "I could NOT STOP! I had a STREENGY BIT!"

  9. #9
    Member
    Registered: Aug 2001

    Originally posted by jim the hairy:
    As far as strings go that's easy ... I've written a program to dump those out in text format which you are welcome to a copy of, or just the text file itself if you'd prefer.

    If you need anything else hacking-related just yell.
    /ME YELLS

    Heh!

    Looking at that latter link... the info looks like it's assembly language, which is way over my head.

    So anything you wish to contribute as far as getting the dialog out of UW would be very much appreciated!

    I've pretty much got the rest of it licked!

    Thanks,

    Taz

  10. #10
    Member
    Registered: May 2000
    Location: London

    Originally posted by TazMan:

    Looking at that latter link... the info looks like it's assembly language, which is way over my head.
    It is assembly language, in a manner of speaking, though for a virtual processor.


    So anything you wish to contribute as far as getting the dialog out of UW would be very much appreciated!
    I've made a dump of all the game strings and put it at http://madeira.physiol.ucl.ac.uk/tsshp/uwstrings.txt which should give you something to look at at least ... I'm not quite sure how we'd go about converting the scripts proper into something that could be used by Morrowind though, what format does it use?
    "I could NOT STOP! I had a STREENGY BIT!"

  11. #11
    Member
    Registered: Aug 2001

    Well... the conversion would probably have to be manually entered in the Morrowind Editor.

    Since Morrowind isn't out yet, I don't have access to the Morrowind Editor.

    But the conversation system works similar to Underworld's... A NPC has "known" info and you have a "set of questions" to choose from in the Dialog window.

    The text file you linked to helps some... but I'm looking for pretty much a flow chart of conversation to each NPC.

    Like... when you talk to the king of the Green Goblins on Level 1... you have a multiple choice of things to say to him... he responds... you have a new multiple choice of things to say... he responds.... etc etc. there is a a flow that sometimes loops back to something said eailier too.

    That's about the only way I can think of describing it.

    Taz

  12. #12
    Member
    Registered: May 2000
    Location: London

    Yeah, it'd pretty much have to be done by hand. Underworld's conversation engine is a complete programming language - is Morrowind going to be up to it? Conversation outcomes can depend on pretty much anything in the game: whether you've spoken to the character before, the character's attitude towards you (which in turn depends on what you say), your strength and experience, what you give the character etc. Strings in the conversation block can refer back to global (@GSxx / @GIxx) and local (@SSxx / @SIxx) variables within the code. It's very flexible and sophisticated, and very complicated.
    "I could NOT STOP! I had a STREENGY BIT!"

  13. #13
    Member
    Registered: Aug 2001

    Yes, the Morrowind Conversation system has "faction / reputation" considerations, and "attitude" considerations (Like saying things "respectfully, arrogantly, etc. etc."). It actually can be more complicated than Underworld's... but I don't plan to use EVERY aspect of Morrowind's conversation system.

    It's suffice to say, I can mimic Underworld's conversation system fairly well.

    If you ever played Daggerfall, the conversation system is much like that, but with several enhancements (According to what the Morrowind Devs have said).

    What I'd like to do... is get a basic flow of conversation for each npc working, then "tweak it" according to faction, attitude, whatever.

    For instance.... a snip from your text file:

    ---------------------
    Block 120 at 000372D7, 8 strings

    Block 120, 8 strings
    0
    1 Human! We no see one like you here very much, and when we do, is not for long. Heh heh.
    2 I do not like the tone of thy voice.
    3 It is a pleasure to meet thee.
    4 I must be on my way.
    5 Ho, ho! Well, you not need to listen to it for long.
    6 Pleasure to meet, yes, but more pleasure to eat!
    7 Yes, on way to my stomach!
    ---------------------


    That looks like a piece of conversation from the Golem on level 6 (I'm not sure... at this point it doesn't really matter what NPC it is).

    Line 1 is obviously the NPC.
    Line 2 could be either the NPC or the Player, But I'm pretty sure it's the Player, given the pattern.
    Line 3 is probably the Player, given the pattern.
    Line 4 is obviously the Player.
    Line 5 is obviously the NPC.
    Line 6 is obviously the NPC.
    Line 7 is obviously the NPC.

    Ok... let's break this down...

    Line 1 is the NPC's initial talk.
    Lines 2 and 5 look like they go together.
    Lines 3 and 6 look like they go together.
    Lines 4 and 7 look like they go together.

    Ok... that's a simple example that can be manually deciphered. A more complicated conversation would be difficult to manually decipher, as far as what lines go with what lines. I haven't really studied your text file yet, but given the example... if the pattern is near the same for all conversation... there might be a way to organize your output file via some programming, that shows basic flow and matches lines to corresponding conversation. Which would make manual entry to Morrowinds conversation, fairly straight forward.

    What do you think?

    Taz

  14. #14
    Administrator
    Registered: Oct 2000
    Location: Athens of the North

    Originally posted by TazMan:
    Ok... that's a simple example that can be manually deciphered. A more complicated conversation would be difficult to manually decipher, as far as what lines go with what lines.
    Yes, but the problem is that the strings give you no indication of how the branching and loops in the conversation occur. A more serious problem is that there are a number of global variables that control conversation flow which can be set by talking to other characters or performing actions and you start to need to study the conversation VM code.

    There are other issues such as inventory checks and trading that I don't know if you will be able to do in Morrowind.

    Alistair

  15. #15
    Member
    Registered: Jun 2000
    Location: France, Paris

    Originally posted by jim the hairy:
    Conversation outcomes can depend on pretty much anything in the game: (...) your strength and experience.
    !!! really ? in UW1 ???? are you sure ? that means the dialog would change whether you talk to someone at first at the begining or at the end of the game...


    Morrowind will introduce something very interesting : for the very first time your apperance will influence a conversation : you'll really have to check what clothes you're wearing (it's no the same to talk to the king in rags or in usual clothes or ... )

    [ September 28, 2001: Message edited by: Le Magot d'Oz ]

  16. #16
    Member
    Registered: Aug 2001

    Originally posted by Al_B:
    Yes, but the problem is that the strings give you no indication of how the branching and loops in the conversation occur. A more serious problem is that there are a number of global variables that control conversation flow which can be set by talking to other characters or performing actions and you start to need to study the conversation VM code.

    There are other issues such as inventory checks and trading that I don't know if you will be able to do in Morrowind.

    Alistair
    That's why I'm asking you UW hackers if ya can figure something out that has the output a little "more orderly" than that text file. It wouldn't have to consider global variables... just give base conversation for each npc. Then I could data enter it in Morrowind... THEN tweak it for conditions such as the global variables whould have.

    Regards,

    Taz

  17. #17

    Right; who wants to write the Underworld conversation flow-chart generator?

    Hey, does Morrowind allow plug-ins that introduce their own state and executable code? A cool solution would be to include a UU conversation VM interpreter within the mod, and then use the VM code directly

    (That's perhaps not a sensible approach, though. It is an aesthetically appealing one, however And perhaps Jim is doing something similar anyhow?)

  18. #18
    Member
    Registered: Aug 2001

    Originally posted by Shadowcat:
    Hey, does Morrowind allow plug-ins that introduce their own state and executable code? A cool solution would be to include a UU conversation VM interpreter within the mod, and then use the VM code directly
    No, I don't think so. I'm pretty sure you can't do any type of "Hardcoding". Only scripting language for the "game itself". The scripting language gives you a lot of power, but you can't change the main MW gaming rules. I'll ask Bethesda if they can include a script command that would access an external DLL or something, though. I kind of doubt they'll do it, but hey... it doesn't hurt to ask!

    Regards,

    Taz

  19. #19
    Member
    Registered: May 2000
    Location: London

    Al is correct; there is a lot of global state for the Underworld conversation engine. (I believe the defaults live in data/babglobs.dat in the Underworld directory, by the way). I'm going to implement it in the way I think the original did; most of the work is done by emulating the (imaginary) machine and running the code directly, with some helper functions the conversation can call (which are hardwired into the game; this may or may not be a problem for Morrowind).

    A `strings' run on the executable is instructive : http://madeira.physiol.ucl.ac.uk/tsshp/u1strings.txt . OPADD about a quarter of the way down is the start of the opcodes list. OPNEG is the end. Then come the globals files, initial and saved. From babl_menu to play_name are built-in helper functions. You start to see what we're up against.

    Decompiling object code is hard. Decompiling made-up object code into a made-up language which is different from the made-up language it was originally written in ... well, I'm not saying it's impossible. I'll have a hack at a conversation disassembler soon. Though you might just have to code them up by hand.

    edit: You're welcome to drop by the hackers' forum on http://sourceforge.net/forum/forum.php?forum_id=85711 - on the other hand, we could only be said to be monopolising this one because nobody else uses it

    [ October 01, 2001: Message edited by: jim the hairy ]
    "I could NOT STOP! I had a STREENGY BIT!"

  20. #20
    Member
    Registered: May 2000
    Location: London

    Right. I had a bit of a hack last night and came up with a rough draft of a decompiler to turn the object code for conversation scripts into something somewhat resembling C. It's not very good with flow control at the moment, so if/else/while constructions tend to come out garbled. Here is the conversation with Lakshi Longtooth, which looks to be one of its better attempts. I did add the strings in the comments manually, to show the player's available responses.

    `s...' variables are stack variables. `g...' are globals, as are named variables from the imports table. `p...' are function parameters from the stack. Globals are private to the NPC in question. For each NPC, the file babglobs.dat gives the conversation number and the number of globals. bglobals.dat for the save games has the same but with the globals themselves filled in. Characters can retrieve various information about the player through the imports. For example, Lakshi checks the player's knight status through get_quest() (quest 32); if this is more than 1 the player is a Knight of the Crux and is treated accordingly.

    The last function is quite interesting. If you say "Ha! Try it!" in response to a challenge Lakshi will size you up. If you're more than 5 levels above him, or 4 with a drawn weapon, he'll run away. If you're more than a level below him, or 2 with a drawn weapon, he'll attack you. Otherwise he won't fight.

    Think you can make anything of this?
    "I could NOT STOP! I had a STREENGY BIT!"

  21. #21
    Member
    Registered: Aug 2001

    Well... I'm not sure since I don't have the Morrowind Editor yet.

    The Morrowind Editor has a conversation editor built into it. I'm not exactly sure what all of it's capabilities are... and if there are any "lacking" abilities, whether you can use the game scripting language to make up for the conversation editor not being able to directly do alll UW features.

    I'll pass on your hacked output to Bethesda and see what they have to say.

    Thanks for the thought and effort!

    Regards,

    Taz

  22. #22
    Administrator
    Registered: Oct 2000
    Location: Athens of the North

    Originally posted by jim the hairy:
    Right. I had a bit of a hack last night and came up with a rough draft of a decompiler to turn the object code for conversation scripts into something somewhat resembling C.
    (Said with the same tone as: "Oh, last night I found a solution to world peace" or "Last night I discovered if you increase the alpha portion of the gaussian field concentration that cold fusion takes place.")

    The only, very minor, thing that I might disagree with your listing is the order that logical operators take. For example:

    if (npc_goal == 5 || npc_goal == 6 || npc_goal == 9 && npc_gtarg == 1 || npc_attitude == 0)

    would probably be better represented by:

    if(((npc_goal == 5 || npc_goal == 6 || npc_goal == 9) && npc_gtarg == 1) || npc_attitude == 0)

    But then - what's a few brackets between friends

    One thing I would be interested in - how do you tie in between the conversation index and the strings.pak page number? For UW2 it seems to be the conversation number in the cnv.ark file + 34, but I'm sure that this is stored somewhere sensible.

    Alistair

  23. #23
    Member
    Registered: Aug 2001

    Well...

    Bethesda is a little "hammered" at the moment, so it will probably be about a week or so, before I can get more info. I am trying to get exact dialog info, and sample files of dialog data and quest data. IF I can get those things, a converter might be possible!

    Anywho, this might help in the meantime, but I doubt it! LOL!
    http://gamespy.com/devdiary/october01/morrow1/

    Regards,

    Taz

  24. #24

  25. #25
    Member
    Registered: May 2000
    Location: London

    You flatter me Al; I said it was hard, I didn't say it was cold fusion In fact it's very hard; I've rewritten the flow analysis 3 times and it still doesn't work properly with all the looping and flow constructs the original conversation compiler used. And it (my code that is) is a huge spaghettiferous mess of special cases anyway. Ah well. I'm going to put the decompilation project to one side for the moment to work on improving the TSSHP engine, but from a (very) cursory glance at the Morrowind scripting it looks likely that we can pull this off. It'd need quite a lot of hand-hacking of scripts though.
    "I could NOT STOP! I had a STREENGY BIT!"

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •