[REQ] BioWare Style Dialog Scenes

Post » Sat Feb 19, 2011 2:06 pm

An example video of what I'd like to see for FO:NV

http://www.youtube.com/watch?v=9Twxo_Y-cbM

Basically, instead of the first person eyelock dialog, something that seems a bit more cinematic, where you can see your character when you make responses.

I dunno, I think it'd be neat.
User avatar
Darlene DIllow
 
Posts: 3403
Joined: Fri Oct 26, 2007 5:34 am

Post » Sat Feb 19, 2011 1:42 am

I second, could be neat.
User avatar
Britney Lopez
 
Posts: 3469
Joined: Fri Feb 09, 2007 5:22 pm

Post » Fri Feb 18, 2011 11:41 pm

I'd love it, and the Creation Engine used for Skyrim will do this, so Fallout 4 will likely as well. However, I believe it is an engine limitation/design choice hard coded and not likely to be modded in to the current F3/FNV games.
User avatar
MatthewJontully
 
Posts: 3517
Joined: Thu Mar 08, 2007 9:33 am

Post » Fri Feb 18, 2011 11:11 pm

I'm sure a lot of people would think it'd be neat. Would also be nice to eliminate the freeze-frame effect of everything around the speaker.

Of course, if it were possible I'm sure it would've been done for Oblivion ages ago. I think it's just one of those things that's hard-coded and needs to be filed away as impossible.


It's one reason I'm really looking forward to Skyrim.
User avatar
Kayla Bee
 
Posts: 3349
Joined: Fri Aug 24, 2007 5:34 pm

Post » Fri Feb 18, 2011 11:42 pm

I'd love it, and the Creation Engine used for Skyrim will do this, so Fallout 4 will likely as well. However, I believe it is an engine limitation/design choice hard coded and not likely to be modded in to the current F3/FNV games.


I thought the creation engine was simply going to have conversations similar to that of the Half Life Series? That's what I understood when I read the previews and such...then again, it doesn't make much sense if you were to choose a dialogue option...

Anyway, I often hoped someone would try to attempt this...would greatly help in the immersion factor seeing as how zoomed faces freeze the world around you...I have always loved how Bioware does it.
User avatar
Josephine Gowing
 
Posts: 3545
Joined: Fri Jun 30, 2006 12:41 pm

Post » Sat Feb 19, 2011 9:03 am

Can't be done here. Engine doesn't allow it, dialog is a hardcoded function. Skyrim is supposed to have something closer to this, however.
User avatar
scorpion972
 
Posts: 3515
Joined: Fri Mar 16, 2007 11:20 am

Post » Sat Feb 19, 2011 10:01 am

Camera angles are what I'm talking about, surely it can't be impossible.
User avatar
Loane
 
Posts: 3411
Joined: Wed Apr 04, 2007 6:35 am

Post » Sat Feb 19, 2011 10:27 am

Camera angles are what I'm talking about, surely it can't be impossible.


The most you could possibly do (and I'm not even sure this can be done) is change how far the camera zooms in when you engage in conversation with someone. Thats it. You could not make the camera float around the player and NPC in a fasion like that. It simply can't be done. You would have to change things in the game engine which we cannot do for several reasons.
User avatar
Damian Parsons
 
Posts: 3375
Joined: Wed Nov 07, 2007 6:48 am

Post » Sat Feb 19, 2011 9:47 am

In FO3 there were a couple of cutscenes, like when you first arrive at the Citadel, where NPCs are talking to one another and the only change is that the player's controls are frozen. It'd be an absurd amount of work, but wouldn't it be possible to turn all of the dialog into those sort of conversations, driven by a custom menu rather than the dialog menu? It'd mean creating a message box for every possible set of player responses. I can't see this being done for the entire game, but I could maybe see a quest mod adding one or two conversations that are handled in this manner.
User avatar
Far'ed K.G.h.m
 
Posts: 3464
Joined: Sat Jul 14, 2007 11:03 pm

Post » Fri Feb 18, 2011 11:12 pm

I'm sure a lot of people would think it'd be neat. Would also be nice to eliminate the freeze-frame effect of everything around the speaker.

Of course, if it were possible I'm sure it would've been done for Oblivion ages ago. I think it's just one of those things that's hard-coded and needs to be filed away as impossible.


It's one reason I'm really looking forward to Skyrim.

Well not pausing everything that happens while you're talking would be problematic. You can't leave dialogue quickly enough to react to an attacker. What if someone shoots the person you're talking to mid-sentence?

Something like that would surely have to be hard-coded into the game itself as it would have huge repercussions.
User avatar
Tyler F
 
Posts: 3420
Joined: Mon Aug 27, 2007 8:07 pm

Post » Sat Feb 19, 2011 11:31 am

Well not pausing everything that happens while you're talking would be problematic. You can't leave dialogue quickly enough to react to an attacker. What if someone shoots the person you're talking to mid-sentence?

Something like that would surely have to be hard-coded into the game itself as it would have huge repercussions.


Not if they set it up right.

They could just do what the Dragon Age cinematic system does and just stop in-combat characters in their place and make them go through their combat-ready idles until you're done with the conversation. It still won't produce the most realistic results, but it's still far better than having them freeze in time mid-step. Most dialogue should be initiated well out of combat scenarios anyway.

Ideally, people shouldn't even strike up a conversation while you're in the middle of fight, and could just go through barks like "Leave me out of this!" or "Not until we're the only one's left standing!" if you try interacting with them.
User avatar
Ladymorphine
 
Posts: 3441
Joined: Wed Nov 08, 2006 2:22 pm

Post » Sat Feb 19, 2011 4:31 am

Replacing all dialog with a scripted cut-scene just isn't feasible. Way too many NPCs, way too much dialog, and NPCs move locations. Not to mention any dialog added by a mod wouldn't be covered.
User avatar
Gemma Woods Illustration
 
Posts: 3356
Joined: Sun Jun 18, 2006 8:48 pm

Post » Sat Feb 19, 2011 11:01 am

Ive done some testing with scripted camera sequences and basic cutscenes before using a clone of the player and having the player orbit around various dummy objects using forced orientation. It works just fine, but it can be a pain to set up.
While in dialogue you can test your idea though by setting the npc to restrained in the console (so it no longer turns to face the player), and using the moveto command on the player to move him to an object behind the target npc, if you do this you will see that the player will automatically turn to face the npc, which could be useful in order to attain the illusion your after. Just need to intercept the dialogue itself and find some way to time it i think.

I dont remember exactly how i achieved a perfect clone of the player in Fo3 including correct facial hair, but i did it somehow... maybe theres an easier way in FNV
User avatar
NO suckers In Here
 
Posts: 3449
Joined: Thu Jul 13, 2006 2:05 am

Post » Sat Feb 19, 2011 5:31 am

You can clone the player easily, but that's not the issue. The issue is it, like I said before, is IMPOSSIBLE. Let me explain.

Here is what you would need to do in order to achieve this:

1. Turn all dialog into conversation's instead of topics. ; This can be done, but the player cannot give input during a conversation. Thus instantly making this whole thing impossible as you cannot have the player give input, which is crucial to about 99% of dialog in the game.
2. Script the camera to move around the player. ; Again, can be done, but the camera would often clip through walls and it would look horrible.
3. Rename and move all the dialog lines. ; This can be done, but it would take hundreds, if not thousands of hours to do, and the mod's filesize would be like 2-4 gigs. Making it incredibly impractical.

This simply is not a practical thing to want to achieve. You will have to wait for Skyrim, as this is much like how it sounds their dialog is set up.

I'm not trying to rain on anyones parade or anything, I'm just letting you guys know that it simply cannot be done. The game engine, unfortunatly, does not support it. :(
User avatar
Sherry Speakman
 
Posts: 3487
Joined: Fri Oct 20, 2006 1:00 pm

Post » Sat Feb 19, 2011 4:09 am

The OP asked for different camera angles while in dialogue, I've just tested something similar to that, though its quite unrefined. It uses a Quest Script with a low processing delay and GetCrosshairRef to set a potential dialogue REF and IsTalking while in MenuMode 1009 to turn to the speaker when talking and back to a Clone or Dummy Ref when not.
Most issues ive had have been sorting out the two sets of math equations and getting the camera to be angled correctly in X/Y. I dont see why youd need to touch any dialogue or topics unless you were pushing things further and also hoping to trigger some new idle animations corresponding to what was said.
I wont argue with that there may be clipping using this method. However the camera (player) could be positioned just over or near the shoulder, as you'd see in a movie or a comic book, which would minimize the chances of it.
User avatar
Daramis McGee
 
Posts: 3378
Joined: Mon Sep 03, 2007 10:47 am

Post » Fri Feb 18, 2011 10:03 pm

razorwire is the light in the darkness.
User avatar
Charlotte X
 
Posts: 3318
Joined: Thu Dec 07, 2006 2:53 am

Post » Sat Feb 19, 2011 3:24 am

Well for a good equation to position things relative to a referenced object use this http://geck.gamesas.com/index.php/Useful_Scripts
and scroll down to forced relative orientation. It's how I got nightkin to randomly stealth and jump around behind the player a la displacer beasts.
User avatar
JD FROM HELL
 
Posts: 3473
Joined: Thu Aug 24, 2006 1:54 am

Post » Sat Feb 19, 2011 11:18 am

Well for a good equation to position things relative to a referenced object use this http://geck.gamesas.com/index.php/Useful_Scripts
and scroll down to forced relative orientation. It's how I got nightkin to randomly stealth and jump around behind the player a la displacer beasts.


Scripting maths isnt one of my strong points, but these are the two sets of equations ive been using to test this with:
(set upon entering menu mode)

set CamAngle1Z to player.getangle Z +235 ;Rotates Camera Angle 1 to point behind the player 235 degrees
set CamPos1X to player.getpos x + (sin CamAngle1Z) * 50 ;Pulls Camera Pos 1 out in X 50 units based on Z angle
set CamPos1Y to player.getpos y + (cos CamAngle1Z) * 50 ;Pulls Camera Pos 1 out in Y 50 units based on Z angle
set CamAngle1Z to CamAngle1Z +150 ;Rotates Camera Angle 1 back to 0 and adds 25 degrees in order to point towards the Target

set CamAngle2Z to convoTarget.getangle Z +125 ;Rotates Camera Angle 2 to point behind the target 125 degrees
set CamPos2X to convoTarget.getpos x + (sin CamAngle2Z) * 50 ;Pulls Camera Pos 2 out in X 50 units based on Z angle
set CamPos2Y to convoTarget.getpos y + (cos CamAngle2Z) * 50 ;Pulls Camera Pos 2 out in Y 50 units based on Z angle
set CamAngle2Z to CamAngle2Z +210 ;Rotates Camera Angle 2 back to 0 and adds 25 degrees in order to point towards the Player

Using these to offset the Player during IsTalking should place him/her roughly up by the face of the Clone & Target.
Pulling out another 10 or 20 units and playing with Z pos based on NPC height may help to bring in more of the shoulder.
Youd also need to set the camera up to take into consideration whether they're sitting.
If however the NPC is restrained too early and they aren't allowed to initially turn to face the player then these may not work as intended.


Edit:
Also Ive just found out that adding a simple wander package with only the Must Complete and Must Reach boxes ticked,
turns off head tracking during dialogue and still allows you to set a target with the look command.
User avatar
Amiee Kent
 
Posts: 3447
Joined: Thu Jun 15, 2006 2:25 pm

Post » Sat Feb 19, 2011 4:36 am

This sounds very promising.
User avatar
Sammygirl
 
Posts: 3378
Joined: Fri Jun 16, 2006 6:15 pm

Post » Sat Feb 19, 2011 7:45 am

Ya, well I'm the Einstein of scripted maths, can't do em worth a crap, but my ideas are big! I, unfortunately, am losing much of the description of what ails you in your current attempts at this sort of thing. Could you give one more go of explaining why you're having difficulty getting it to work? I'm working on redoing all the legendary encounters atm and my plate is full, but it would be good to pool whatever effort you have into this thread in case something prevents you from completing it. Then T3T could come here and pine over how close he came to getting his cherished camera angles.
User avatar
Roberta Obrien
 
Posts: 3499
Joined: Tue Oct 23, 2007 1:43 pm

Post » Sat Feb 19, 2011 3:35 am

Tonight I have added the clone & gear setup script, height and scale based positions, as well as a dynamic position for camera 2 which no longer requiring npcs to face the player.
The maths part is pretty much done. In terms of brain busters that are holding this back, well.. heres the major annoyances:

-Finding a way to turn off pc head tracking while in dialogue, X & Y can be told to constantly reset to 0 but the stutter from this is quite annoying.
-Finding a way to unfreeze npcs in dialogue to play a generic idle animation on the player clone... this is not essential, but would look nicer than it standing dead still.
-Adding more checks for sneaking, sitting, etc...

Otherwise it works, but needs some general refinement and optimization.
User avatar
Vicki Blondie
 
Posts: 3408
Joined: Fri Jun 16, 2006 5:33 am

Post » Fri Feb 18, 2011 11:54 pm

Sounds good, wish I had some clue as to how to do the things you need done. Until little baby jesus imparts said knowledge unto me, best of luck!
User avatar
Saul C
 
Posts: 3405
Joined: Wed Oct 17, 2007 12:41 pm

Post » Sat Feb 19, 2011 12:51 pm

Well the thing is I dont really have time to mod much myself. At this stage it works ok, but its often the little tweaks that take the longest. Here's the entire script I've been testing in the hope that someone smarter comes along and pushes it further. As mentioned earlier, it also requires a simple AI Package for the NPC head tracking to work, I don't think its necessary to have anything ticked but I usually tick 'must complete' & 'must reach' by default just to be sure. The quest is set to a processing delay of 0.0100. Has only been tested on Fo3 so far.

Please excuse the mess, not sure how to indent it properly, just run it through cipcsis script validator.
Spoiler

scn RZWTestingSCript

Int ConvoMode

Float CamPos1X
Float CamPos1Y
Float CamPos1Z
Float CamPos1Scale
Float CamAngle1Z
Float CamPos2X
Float CamPos2Y
Float CamPos2Z
Float CamPos2Scale
Float CamAngle2Z
Float Cam2OffsetZ
Float CamPosZ
Float OriginPosX
Float OriginPosY
Float OriginPosZ
Float OriginPos1Z
Float OriginAngleZ

Ref BDHead
Ref BDArmor
Ref BDLHand
Ref BDRHand
Ref BDWeapon
Ref BDPipBoy
Ref BDBackPack
Ref BDNecklace
Ref BDHeadBand
Ref BDHat
Ref BDGlasses
Ref BDNoseRing
Ref BDEarrings
Ref BDMask
Ref BDChoker
Ref BDMObj
Ref BDBObj1
Ref BDBObj2
Ref BDBObj3
Ref convoTarget
Ref PlayerDummy

BEGIN GameMode
set convoTarget to getCrosshairRef

set BDHead to player.GetEquippedObject 0
set BDArmor to player.GetEquippedObject 2
set BDLHand to player.GetEquippedObject 3
set BDRHand to player.GetEquippedObject 4
set BDWeapon to player.GetEquippedObject 5
set BDPipBoy to player.GetEquippedObject 6
set BDBackPack to player.GetEquippedObject 7
set BDNecklace to player.GetEquippedObject 8
set BDHeadband to player.GetEquippedObject 9
set BDHat to player.GetEquippedObject 10
set BDGlasses to player.GetEquippedObject 11
set BDNoseRing to player.GetEquippedObject 12
set BDEarrings to player.GetEquippedObject 13
set BDMask to player.GetEquippedObject 14
set BDChoker to player.GetEquippedObject 15
set BDMObj to player.GetEquippedObject 16
set BDBObj1 to player.GetEquippedObject 16
set BDBObj2 to player.GetEquippedObject 18
set BDBObj3 to player.GetEquippedObject 19

If ConvoMode == 1
PlayerDummy.disable
PlayerDummy.markfordelete
convoTarget.removescriptpackage RZWTestPackage
convoTarget.stoplook PlayerDummy
player.setpos x OriginPosX
player.setpos y OriginPosY
player.setpos z OriginPosZ
player.setpos Z CamPos1Z
player.setscale CamPos1Scale
player.setangle z OriginAngleZ
set CamPos1X to 0
set CamPos1Y to 0
set CamAngle1Z to 0
set CamPos2X to 0
set CamPos2Y to 0
set CamAngle2Z to 0
set OriginPosX to 0
set OriginPosY to 0
set OriginPosZ to 0
set OriginAngleZ to 0
convoTarget.setrestrained 0
player.setrestrained 0
set convoTarget to 0
set ConvoMode to 0
EndIf
END

BEGIN MenuMode 1009
If player.getsitting == 0
If ConvoMode == 0
set PlayerDummy to player.placeatme 7 1
player.setrestrained 1
convoTarget.setrestrained 1
convoTarget.addscriptpackage RZWTestPackage
set OriginPosX to player.getpos x
set OriginPosY to player.getpos y
set OriginPosZ to player.getpos z
set OriginAngleZ to player.getangle Z

set CamAngle1Z to player.getangle Z +235
set CamPos1X to player.getpos x + (sin CamAngle1Z) * 50
set CamPos1Y to player.getpos y + (cos CamAngle1Z) * 50
set CamAngle1Z to CamAngle1Z +150
set CamPos1Z to OriginPosZ
set CamPos1Scale to player.getscale

set Cam2OffsetZ to convoTarget.getheadingangle player
set CamAngle2Z to convoTarget.getangle Z + (125 + Cam2OffsetZ)
set CamPos2X to convoTarget.getpos x + (sin CamAngle2Z) * 70
set CamPos2Y to convoTarget.getpos y + (cos CamAngle2Z) * 70
set CamAngle2Z to CamAngle2Z + 210
set CamPos2Z to convoTarget.getpos z
set CamPos2Scale to convoTarget.getscale

If player.IsChild
set CamPos1Scale to CamPos1Scale * 0.8
EndIf
If convoTarget.getsitting == 3 || convoTarget.getsleeping == 3 || convoTarget.IsChild
set CamPos2Scale to CamPos2Scale * 0.6
EndIf

If (BDHead != 0)
PlayerDummy.additem BDHead 1
EndIf
If (BDArmor != 0)
PlayerDummy.additem BDArmor 1
EndIf
If (BDLHand != 0)
PlayerDummy.additem BDLHand 1
EndIf
If (BDRHand != 0)
PlayerDummy.additem BDRHand 1
EndIf
If (BDWeapon != 0)
PlayerDummy.additem BDWeapon 1
EndIf
If (BDPipBoy != 0)
PlayerDummy.additem BDPipBoy 1
EndIf
If (BDBackPack != 0)
PlayerDummy.additem BDBackPack 1
EndIf
If (BDNecklace != 0)
PlayerDummy.additem BDNecklace 1
EndIf
If (BDHeadband != 0)
PlayerDummy.additem BDHeadband 1
EndIf
If (BDHat != 0)
PlayerDummy.additem BDHat 1
EndIf
If (BDGlasses != 0)
PlayerDummy.additem BDGlasses 1
EndIf
If (BDNoseRing != 0)
PlayerDummy.additem BDNoseRing 1
EndIf
If (BDEarrings != 0)
PlayerDummy.additem BDEarrings 1
EndIf
If (BDMask != 0)
PlayerDummy.additem BDMask 1
EndIf
If (BDChoker != 0)
PlayerDummy.additem BDChoker 1
EndIf
If (BDMObj != 0)
PlayerDummy.additem BDMObj 1
EndIf
If (BDBObj1 != 0)
PlayerDummy.additem BDBObj1 1
EndIf
If (BDBObj2 != 0)
PlayerDummy.additem BDBObj2 1
EndIf
If (BDBObj3 != 0)
PlayerDummy.additem BDBObj3 1
EndIf
If (BDHead != 0)
PlayerDummy.equipitem BDHead
EndIf
If (BDArmor != 0)
PlayerDummy.equipitem BDArmor
EndIf
If (BDLHand != 0)
PlayerDummy.equipitem BDLHand
EndIf
If (BDRHand != 0)
PlayerDummy.equipitem BDRHand
EndIf
If (BDWeapon != 0)
PlayerDummy.equipitem BDWeapon
EndIf
If (BDPipboy != 0)
PlayerDummy.equipitem BDPipboy
EndIf
If (BDBackPack != 0)
PlayerDummy.equipitem BDBackPack
EndIf
If (BDNecklace != 0)
PlayerDummy.equipitem BDNecklace
EndIf
If (BDHeadband != 0)
PlayerDummy.equipitem BDHeadband
EndIf
If (BDHat != 0)
PlayerDummy.equipitem BDHat
EndIf
If (BDGlasses != 0)
PlayerDummy.equipitem BDGlasses
EndIf
If (BDNoseRing != 0)
PlayerDummy.equipitem BDNoseRing
EndIf
If (BDEarrings != 0)
PlayerDummy.equipitem BDEarrings
EndIf
If (BDMask != 0)
PlayerDummy.equipitem BDMask
EndIf
If (BDChoker != 0)
PlayerDummy.equipitem BDChoker
EndIf
If (BDMObj != 0)
PlayerDummy.equipitem BDMObj
EndIf
If (BDBObj1 != 0)
PlayerDummy.equipitem BDBObj1
EndIf
If (BDBObj2 != 0)
PlayerDummy.equipitem BDBObj2
EndIf
If (BDBObj3 != 0)
PlayerDummy.equipitem BDBObj3
EndIf
set ConvoMode to 1
EndIf
If convoTarget.isTalking == 1
PlayerDummy.setpos x OriginPosX
PlayerDummy.setpos y OriginPosY
PlayerDummy.setangle z OriginAngleZ
player.setpos X CamPos1X
player.setpos Y CamPos1Y
player.setpos Z CamPos1Z
player.setscale CamPos1Scale
player.setangle Z CamAngle1Z
convoTarget.look PlayerDummy
convoTarget.pickidle
Else
PlayerDummy.setpos x OriginPosX
PlayerDummy.setpos y OriginPosY
PlayerDummy.setangle z OriginAngleZ
player.setpos X CamPos2X
player.setpos Y CamPos2Y
player.setpos Z CamPos2Z
player.setscale CamPos2Scale
player.setangle Z CamAngle2Z
convoTarget.look PlayerDummy
convoTarget.pickidle
EndIf
EndIf
END

User avatar
Eduardo Rosas
 
Posts: 3381
Joined: Thu Oct 18, 2007 3:15 pm

Post » Sat Feb 19, 2011 12:15 am

You've obviously put a lot of work into it, I thank you for getting this far.
User avatar
JESSE
 
Posts: 3404
Joined: Mon Jul 16, 2007 4:55 am


Return to Fallout: New Vegas