2d cockpit EVOLUTION (Point and click etc... )

Talk among developers, and propose and discuss general development planning/tackling/etc... feature in this forum.
Post Reply
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

2d cockpit EVOLUTION (Point and click etc... )

Post by ezee »

Hi !

I just spent 1 hour to play with vegastrike , and one of the things that i would change is the layout of the HUD .
I think in term of gameplay , it would be more efficient to :

_ be able to minimise a panel or hide it ( Do we need all the screens all the time ? )
_ Interact with buttons and switchs ( better immersion in the vessel )
_ MouseLook ( to check my enemy at my 3 o'clock ... )

I play with a joystick 2 axes + throttle ( sidewinder ) , and i know some like to use the mouse as controller .
Perhaps a trick could be done ( or exists ) to allow those players to disengage the mouse control and use the mouse
to interact with the panels ?

I imagine a solution that would engage the autopilot ( for the roll and pitch ) when the 3rd button of the mouse is clicked ,
for exemple .
So the course won't be affected by the mouse movement , and the pilot could interact safely with his panels .

Also , i think the message screen could be better used , too much lines for me ( too much visual occlusion )
Your opinions ?
:)

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
TBeholder
Elite Venturer
Elite Venturer
Posts: 753
Joined: Sat Apr 15, 2006 2:40 am
Location: chthonic safety

Re: 2d cockpit EVOLUTION (Point and click etc... )

Post by TBeholder »

ezee wrote:_ be able to minimise a panel or hide it ( Do we need all the screens all the time ? )
A good point. And probably the easiest to implement: we only need to add "OFF" VDU mode that doesn't really draw anything, then it's as simple as adding 3 letters and a space to arbitrary subset of cockpit VDUs. And perhaps a key to invoke it on all VDU that have it.
Also, some controls already invoke relevant VDU - e.g. switching weapon groups via Cockpit::MissileMode / Cockpit::ReverseMissileMode chooses Weapons VDU, while MisSelKey / ReverseMisSelKey don't.
ezee wrote:_ Interact with buttons and switchs ( better immersion in the vessel )
Not sure this is always an improvement. But mostly possible - some old 3D cockpits were already made to look this way.
ezee wrote:_ MouseLook ( to check my enemy at my 3 o'clock ... )
A mouse equivalent of HAT? Perhaps, mostly for completeness. I won't choose it over "Cockpit::ViewTarget" (default binding: "7") that views and tracks on its own the current target - but it's a matter of taste.
ezee wrote:Perhaps a trick could be done ( or exists ) to allow those players to disengage the mouse control and use the mouse
to interact with the panels ?
Clicking pictograms like in Frontier Elites? An entirely different can of worms. Once the clicking part itself is supported, it would be very easy to add, though - just give gauges in XML an equivalent of keybindings, perhaps state-dependent.
ezee wrote: Also , i think the message screen could be better used , too much lines for me ( too much visual occlusion )
PgDn to the end tidies it up to 8 lines.
"Two Eyes Good, Eleven Eyes Better." -Michele Carter
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: 2d cockpit EVOLUTION (Point and click etc... )

Post by ezee »

Hi , and thank you for that consistent answer .
:)

Just to explore deeper the idea of mouse Hat , the idea suppose the use of a camera .
And i don't know how is done the rendering in the VS engine , but in every 3d rendering system there is an active camera .
So technically , is it possible to dynamically rotate the cam here ?
( i have downloaded the source , i will search myself how to do , but any help is welcome )
edit : okay , i have now the source code , and i've found where is the camera :

Code: Select all

class GameUniverse : public Universe
   40 {
   41 protected:
   43 //unsigned int current_cockpit;
   44 //std::vector <Cockpit *> cockpit;
   46     Camera hud_camera;
   48     void StartGL();
Gameplay in sight , imagine you are pressing the mouse Button 3 , and the mouse now act like in a fps .
When you release the mouse button , the camera is back to front view centered .
We could implement an interpolation for the movement , to smooth that movement .

And hey , from that point , when we have control with the camera , we can also derive new cool features :

_ Head shaking ( when you collide , when you use overdrive , when you are hit , etc ...
_ ... ( what you will imagine )

Edit : Code reference for the cockpit from the source code :

Code: Select all

CockpitKeys Namespace Reference
Functions :
void 	TextMessageCallback (unsigned int ch, unsigned int mod, bool release, int x, int y)
 
void 	TextMessageKey (const KBData &, KBSTATE newState)
 
void 	QuitNow ()
 
void 	SkipMusicTrack (const KBData &, KBSTATE newState)
 
void 	PitchDown (const KBData &, KBSTATE newState)
 
void 	PitchUp (const KBData &, KBSTATE newState)
 
void 	YawLeft (const KBData &, KBSTATE newState)
 
void 	YawRight (const KBData &, KBSTATE newState)
 
void 	LookDown (const KBData &kbdata, KBSTATE newState)
 
void 	LookUp (const KBData &kbdata, KBSTATE newState)
 
void 	LookLeft (const KBData &kbdata, KBSTATE newState)
 
void 	LookRight (const KBData &kbdata, KBSTATE newState)
 
void 	Quit (const KBData &, KBSTATE newState)
 
void 	Inside (const KBData &, KBSTATE newState)
 
void 	ZoomOut (const KBData &, KBSTATE newState)
 
void 	ScrollUp (const KBData &, KBSTATE newState)
 
void 	ScrollDown (const KBData &, KBSTATE newState)
 
void 	ZoomIn (const KBData &, KBSTATE newState)
 
void 	ZoomReset (const KBData &, KBSTATE newState)
 
void 	InsideLeft (const KBData &, KBSTATE newState)
 
void 	InsideRight (const KBData &, KBSTATE newState)
 
void 	PanTarget (const KBData &, KBSTATE newState)
 
void 	ViewTarget (const KBData &, KBSTATE newState)
 
void 	OutsideTarget (const KBData &, KBSTATE newState)
 
void 	InsideBack (const KBData &, KBSTATE newState)
 
void 	CommModeVDU (const KBData &, KBSTATE newState)
 
void 	ScanningModeVDU (const KBData &, KBSTATE newState)
 
void 	ObjectiveModeVDU (const KBData &, KBSTATE newState)
 
void 	TargetModeVDU (const KBData &, KBSTATE newState)
 
void 	ViewModeVDU (const KBData &, KBSTATE newState)
 
void 	DamageModeVDU (const KBData &, KBSTATE newState)
 
void 	ManifestModeVDU (const KBData &, KBSTATE newState)
 
void 	GunModeVDU (const KBData &s, KBSTATE newState)
 
void 	ReverseGunModeVDU (const KBData &s, KBSTATE newState)
 
void 	MissileModeVDU (const KBData &s, KBSTATE newState)
 
void 	ReverseMissileModeVDU (const KBData &s, KBSTATE newState)
 
void 	SwitchLVDU (const KBData &, KBSTATE newState)
 
void 	SwitchRVDU (const KBData &, KBSTATE newState)
 
void 	SwitchMVDU (const KBData &, KBSTATE newState)
 
void 	SwitchULVDU (const KBData &, KBSTATE newState)
 
void 	SwitchURVDU (const KBData &, KBSTATE newState)
 
void 	SwitchUMVDU (const KBData &, KBSTATE newState)
 
void 	Behind (const KBData &, KBSTATE newState)
 
void 	Pan (const KBData &, KBSTATE newState)
And i've found cool stuff about camera here :

Code: Select all

void LookDown( const KBData& kbdata, KBSTATE newState )
  361 {
  362     if (newState == PRESS && QuitAllow)
  363         QuitNow();
  364     if (newState == PRESS || newState == DOWN) {
  365         if (_Universe->AccessCockpit()->GetView() <= CP_RIGHT) {
  366             InitPanInside();
  367         } else if (_Universe->AccessCockpit()->GetView() == CP_PANINSIDE) {
  368             _Universe->AccessCockpit()->SetInsidePanPitchSpeed(game_options.camera_pan_speed*1000.0);
  369         } else {
  370             PitchDown( kbdata, newState );
  371         }
  372     } else if (newState == RELEASE) {
  373         if (_Universe->AccessCockpit()->GetView() == CP_PANINSIDE)
  374             _Universe->AccessCockpit()->SetInsidePanPitchSpeed(0);
  375         else
  376             PitchDown( kbdata, newState );
  377     }
  378 }
So yeah , a lot of functions already exists , i will try to invent new methods for using them .

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
TBeholder
Elite Venturer
Elite Venturer
Posts: 753
Joined: Sat Apr 15, 2006 2:40 am
Location: chthonic safety

Re: 2d cockpit EVOLUTION (Point and click etc... )

Post by TBeholder »

ezee wrote:Just to explore deeper the idea of mouse Hat , the idea suppose the use of a camera . [...] So technically , is it possible to dynamically rotate the cam here ?
See how it's done with keyboard - "Cockpit::PitchDown", etc (default "q", "z", "s", "f", "9", "0"). It's available in "Pan ..." modes (both main screen and VDU!).
ezee wrote: Gameplay in sight , imagine you are pressing the mouse Button 3 , and the mouse now act like in a fps . When you release the mouse button , the camera is back to front view centered .
Fun, but what's the point? Looking slightly aside does nothing until the ship turns there. With gun control axis this would be more interesting, yes. Besides, simply making Pan view angle count relative to the ship rather than to abstract reference would do much the same.
ezee wrote:And hey , from that point , when we have control with the camera , we can also derive new cool features :
_ Head shaking ( when you collide , when you use overdrive , when you are hit , etc ...
Seems to be already mostly implemented, but limited to low values in graphics/ confvar settings. shake_speed, shake_reduction... it also controls damage flashes.
"Two Eyes Good, Eleven Eyes Better." -Michele Carter
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: 2d cockpit EVOLUTION (Point and click etc... )

Post by ezee »

Thank you TBeholder for the help , and also for the good ideas . ( gun axis control , yeah !! )
I will explore the ways you showed me .

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
Post Reply