Jump to content

Riding a dragon


boomnuke35

Recommended Posts

Oh I think its totally possible and I think it will be one of the first things that lots of people work on when the CK comes out.

Like it has been mentioned before in this thread, Someone managed to do this in Oblivion and they only had a static model of the Statue of Akatosh. Meaning someone had to rig the model put the mounting node on, do all the animation and sound effects and then figure out controls. I haven't played oblivion in a few years but it seems like the guys behind that mod were also making it so the dragon could attack and use some type of breath weapon, I am unsure if this ever happened, but if it did that would add even more complexity.

All of this with out any sort of Beth soft support.

Now we have: Fully functional Dragon Models (several different ones I have looked at with 3DMAX) lots and lots of animations for them that look very good if not great(all the movement animations are in the bsa's I checked). animations for attacking from both the ground and in the air, Breath weapon mechanics and a semi cinematic sequence for mounting the dragon (although this is something I would change right away as right behind the head is not where I would want to ride my dragon from). and lovely sound effects. Also about flying, Any 3D engine that will allow for you to fall several levels to your death will allow for flight. Since there is already the functionality built in for you to be clubbed 100 feet into the air by a giant or for a dragon to pick another npc up and fling them hundreds of feet, flight is totally possible. and basically too any where on the map. however things like cities will still have to be entered through the front gate, much like in oblivion, where if you rode your dragon into the city it would look similar but no one would be there. so no dragons in Dungeons or cities

 

I also think the dev's made it so it would be pretty easy as they knew a lot of us would want it. but as a plot device to further the story line kept it out of the game. Remember that it is in a Dragons Nature to Dominate and not be Dominated.

So really someone may just have to figure out how to code the collision data so it works while flying (this already might be there in the dragon models and animations, Again this was done in oblivion where there were no dragons at all)

Then figure out where to put the bone node for riding the dragon, code in the commands for forward backward left right and such and how to trigger the attacks. pick the animations to use (you dont want them all because they wouldn't all apply) and Viola.

 

Course I could be completely wrong but it seems to me that Bethesda would have known we wanted this and would probably build in partial support for it. It may even be the first piece of DLC, and that maybe why the CK is taking so long to get out is they want to have that done before the CK, so they could get there first and charge for it, I would totally pay for it

Edited by red33mer666
Link to comment
Share on other sites

As far as flying, roughly:

 

1. Get player position (GetPos x,y,z)

2. Get player heading (GetAngle x,z) - only need 2 due to how spherical coordinates are defined.

3. Use trig to get new player pos based on heading

/me pulls out Tes4Edit and looks at the Akatosh Mount script...

- The Akatosh mount uses a very basic "flight plane" approach (basically cluster possible angles into 4 ranges, and calculates X,Y,Z transforms accordingly

- If I had some paper I could derive the actual formulas, but too lazy right now.

- Since we have actual trig formulas in Papyrus, we can probably achieve a much finer granularity to movement.

4. Set new player pos to the updated values.

5. Go back to step 1 for the next frame.

 

For collisions, do a check to see if the new vertices, plus an offset (size of the model), intersects an existing object (probably some built in function to do this).

 

So it's fairly easy. Harder is making it smooth (coupling turn animations to the actual animations used by the dragon models, for instance).

 

EDIT: the entire script here:

 

scn 1SSMountFlightScriptFireDrake

 

; Saiden Storm's Mounted Flight Script :)

 

ref FireDrake ; Fire Drake Reference

ref FlightPlane ; Flight Plane Ref

float XPos ; X Position

float YPos ; Y Position

float ZPos ; Z Position

float XAngle ; Flight Planes X Rotation Angle

float Height ; Players X Angle, Used To Rotate FlightPlane

float Direction ; Direction FireDrake Is Facing

 

;Set up references and condition for Flight

 

Begin Gamemode

 

Set FireDrake to SSFireDrake

Set FlightPlane to SSFireDrakeFlightPlane

SetIgnoreFriendlyHits 1

 

;Set FlightPlane to Under FireDrake when player is riding him and is running

 

If Player.IsRidingHorse == 1 && FireDrake.IsRunning == 1

Set XPos to FireDrake.GetPos X

Set YPos to FireDrake.GetPos Y

Set ZPos to FireDrake.GetPos Z

Set Direction to FireDrake.GetAngle Z

Set Height to (Player.GetAngle X)

 

; Adjusts Height to avoid the player from creating an unpassable wall or falling of the FlightPlane

 

If Height < --35

Set Height to -35

Endif

 

If Height > 50

Set Height to 50

Endif

 

; Reposition the FlightPlane so it is always under the FireDrake in Flight

 

If FireDrake.GetDistance FlightPlane > 400

FlightPlane.SetPos X, XPos

FlightPlane.SetPos Y, YPos

FlightPlane.SetPos Z, ZPos

Endif

 

; Sets the Tilt of the FlightPlane Based on FireDrake Facing Direction and Player "X" Angle

 

If Direction > 0 && Direction < 90

FlightPlane.SetAngle X, Height

Set Height to -Height

FlightPlane.SetAngle Y, Height

Endif

 

If Direction > 90 && Direction < 180

Set Height to -Height

FlightPlane.SetAngle X, Height

FlightPlane.SetAngle Y, Height

Endif

 

If Direction > 180 && Direction < 270

FlightPlane.SetAngle Y, Height

Set Height to -Height

FlightPlane.SetAngle X, Height

Endif

 

If Direction > 270 && Direction < 360

FlightPlane.SetAngle X, Height

FlightPlane.SetAngle Y, Height

Endif

 

; Makes it so if you are riding FireDrake and Running the FlightIdle will play

 

PickIdle

 

;Set FlightPlane Above FireDrake when Player is walking

 

Elseif Player.IsRidingHorse == 1 && FireDrake.IsRunning != 1

Set XPos to FireDrake.GetPos X

Set YPos to FireDrake.GetPos Y

Set ZPos to FireDrake.GetPos Z + 1000

FlightPlane.SetPos X, XPos

FlightPlane.SetPos Y, YPos

FlightPlane.SetPos Z, ZPos

 

; Set FlightPlane to Above FireDrake When Player is not riding him

 

ElseIf Player.IsRidingHorse != 1

Set XPos to FireDrake.GetPos X

Set YPos to FireDrake.GetPos Y

Set ZPos to FireDrake.GetPos Z + 1000

FlightPlane.SetPos X, XPos

FlightPlane.SetPos Y, YPos

FlightPlane.SetPos Z, ZPos

Endif

 

End

 

As far as turning and controls, I was thinking of some sort of exponential response curve (i.e. tapping a key only slightly alters your trajectory, while holding down a key creates a wide turn). That, and dragons strafing makes no sense aerodynamically at all. Not sure how intuitive the user experience is going to be though.

Edited by jimhsu
Link to comment
Share on other sites

I've been playing Oblivion since a few months ago and the Akatosh mount mod was completed. The mounts had HD skins, a breath attack, a bite attack, a combat pose (really wild btw) and flight. Since I didn't like how it just added them to the game without a reason for having them I actually modded it so you can only get the dragons from rare spell tome books. Of course I couldn't release because I never had the permissions granted, but it was a cool mod.

 

Anyway, in my mod that I'm making in my sig there will be a Dovah form that will allow the player to transform into a dragon and fly around. Of course this is only available in one of the dozens of possible outcome paths and requires insane dungeon crawling to achieve them, but it will be there and I'm going to script them if I don't find other scripters to help.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...