Page 1 of 6

3D cockpits

Posted: Thu Jan 02, 2014 11:05 am
by robn
So I had a good chat with nozmajner this afternoon and he's convinced me that 3D instrumentation could be possible. I'm not 100% convinced, but he's at least thinking through the details. So I'm tentatively saying yes, lets give it a go, and he's going to give us much more detail to get started with (right?!)

Re: 3D cockpits

Posted: Thu Jan 02, 2014 11:20 am
by bszlrd
Right :)
So first let's think trough properly, how should we turn this large can of worms into a delicious cake.
(I'll edit this document if we decide on something, or making progress, so it can serve as an anchor)

Brief: Creating a good looking, functional 3D cockpit for the ships of Pioneer

Specification:
  1. Fully 3D. (So no glorified cpanel overlay, but this is already obvious :) )
  2. Prefab based as much as possible, to make cockpit creation easy. This requires proper documentation too, both function and modeling-wise
  3. Has subtle dynamic head movement, reacting to ship movement to give a feeling of mass. (could have a magnitude slider in the settings)
  4. Has working, dynamic instruments.
    1. Crucial instruments should fit in the 4:3 frame to ensure wide compatibility.
    2. Instrument and HUD-only view should give the player the same information.
    3. The most important HUD elements, like reticule, prograde marker and target overlays should be on both views.
  5. HUD and instrument elements should use the same newGUI engine and should work consistently. They should go hand in hand really. (best would be if they could be rendered onto textures with the least amount of tweaking in layout)
  6. Has limited mouselook.
    This is important in my opinion, because without it we need to pack every instrument in the 4:3 frame and that will look forced. One important question is that whether flight controls like joysticks and throttle levers should be dynamic/manipulatable.
    1. Middle mouse and alt+mouse movement for looking (with room for Occulus Rift inegration in the future)
    2. Reset view function (similar to external view)
    3. Proposed controls: 8426-93 works like now for viewing direction and 5 switches to cockpit view. "/" resets cockpit view POV
    4. Limited zoom. This shouldn't be necessary to be able to make out the text on instruments. More like a way of concentration. (tied to mouse wheel)
    5. An option to choose default view.
  7. Has click-able buttons, instruments, even touch screens.
    1. Tooltips
    2. Descriptive icons for functions
    3. Minimal amount of text on the texture (localization issues)
  8. Instrument and control layouts shouldn't be too varied functionally, but could have some spatial/visual variation.
    Proposed layout I'm now using on my HUD mockups:
    1. Left side: internal data, ship status, weapon status, thrust, etc.
    2. Center: Flight related data, scanner, basic navigation
    3. Right side: External data: contact list, target information, comms, detailed navigation.
  9. Visual aim:
    1. Cockpits should add to the character of the ship.
    2. Should look good and should be properly modeled and textured
    3. Shouldn't be overdetailed, especially greeble-wise. Should look clean and functional
  10. What should be the polygon and texture size budget?
Vocabulary to ensure that we are at the same page:
  • Static elements: not manipulatable, and doesn't display any information. Only there for the looks. Like those handgrabs or AC nozzles.
  • Dynamic elements: Manipulatable by the player. Switches, buttons.
  • Display elements: They are displaying information. Might be dynamic also, like the contact list you mentioned earlier. Screens and touch-screens for example.
  • Projected elements: which are projectod on the helmet. Reticule, target overlays for example.

Re: 3D cockpits

Posted: Thu Jan 02, 2014 11:20 am
by bszlrd
The main thing for nicely working instruments is a good UI framework. If the HUD is working right, then parts of it can be rendered on textures if I'm correct.

Proposed roadmap (absolutelly open for discussion):
  1. Groundwork
    • UI: Underlying support structure work for HUD rendering
    • Cockpit: Cockpit displays correctly under the current flight UI. Only Eye-candy, no instruments at all. [Done]
      • Mouse look implementation and finetuning [Mostly done. No rotation limit yet, and rotation is visibly stepped]
      • Dynamic head reaction implementation and fine-tuning [It's there for rotation, but not for acceleration]
    • Modeling: Default fully encased cockpit with monitors as view-port, so it can be used on any ship without much handwave. Also serves as a worksite and playground for instrument and prefab modeling and workflow develpoment. [In progress, modeling furnishing]
  2. Basic Instruments stage
    • UI: Text-only instruments and HUD elements.
    • Cockpit: Text-instruments rendered on texture. Scanner works. Reticule visible.
    • Modeling: Default cockpit as test-ground for instrument rendering. Instrumentless cockpits at least for every manufacturer.
  3. Detailing stage
    • UI: Graphical HUD elements (Basic gauges, markers, reticule and crosshair, etc)
    • Cockpit: Bringing over the HUD elements. Work on clickable buttons and control implementation.
    • Modeling: Furnishing the cockpits with the prefabs. Buttons, switches, controls are modeled and animated if needed.
  4. Second detailing stage
    • UI: Advanced instrument work (gauges, logs, navball stuff, contact list, etc)
    • Cockpit: Putting the advanced elements on the instruments
    • Modeling: Polishing the cockpits
  5. Effects and polish stage
    • UI: Special effects (damage glitches, interferencies, etc)
    • Cockpit: Special effects (damage effect rendering, screen glow, frost, etc)
    • Modeling: Polishing and providing artwork needed to FXs.
Of course I don't really know much about the coding side of the whole thing, so tell me for sure if you would do it differently. Not that this is an overly strict thing, and I'm sure we will drift away working our own tempo.
The main aim is that there should be a working and good looking implementation on each stage, that could even be released. Releasing it often would give us some motivation too :)

Hope I didn't left out anything.

Re: 3D cockpits

Posted: Fri Jan 03, 2014 1:20 pm
by FluffyFreak
I'd like to know, do we actually want clickable 3D elements?
What other games have them?

Generally if I'm playing a flight sim the cockpit instruments are all output, for display and information with the keyboard being input. The mouse is just for control.

We're a bit weird as far as the genre goes in that we've followed Frontiers original lead in having the mouse do everything.

Now I'm not saying that's bad but it means there could be a bit of a schism between 3D cockpits and HUDs in other games and ours.

One thing that immediately comes to mind is movement: if you've got 3D clickable interface that's moving due to acceleration, impacts, turning etc then you're going to have a hell of a time clicking anything with a mouse. For that reason it might be better to keep the cockpit as display, and the on-your-face 2D elements as the input (plus keyboard/joystick as usual{/i]).

Damn, totally run over my lunch break now, gotta go.

Re: 3D cockpits

Posted: Fri Jan 03, 2014 3:19 pm
by bszlrd
These are the cockpits which come to my mind, and the way they work:
  • Orbiter: has clickables, working instruments. Rightmouse_hold head rotation. Left and right mouse operates directional switches it seems. View limits are quite large, could be about 320° at least, but it's odd because you can look trough your own shoulder. No shake or head inertia at all. It feels good to use it mostly, but the static guy obstructing some controls is quite odd.
  • KSP: doesn't have clickables, has working instruments. Rightmouse toggles mouselook. More limited view rotation. No shake or inertia. It feels nice to me, but it's usually considered hard mode using them.
  • FlightGear: has clickables, but it feels bad using them. Rightmouse switches between flight control, cursor and mouselook. View rotation has little limits as far as I know, but it seems to depend on craft. Some even have POV translation options too. No shake or inertia as far as I know. I don't like this one, it's like if made of cardboard and not too responsive.
  • X-plane: Has clickables and working instruments. Don't know much about POV control. No shake or inertia as far as I know. It's good as far as I can remember, but I didn't fly too much with it.
  • Il2 Sturmovik has working instruments, I can't remember clickables. Can't recall mouselook controls either apart from HATswitch. It has shake and inertia. I really liked the cockpits in this game. Felt quite natural and added a lot to the game.
  • Trainz: Has working instruments and clickables (with some nice feedback visuals for levers). Can't recall mouselook, but I think it's also right mouse. Some versions seem to have shake/inertia, some versions don't.
Stuff I haven't played:
  • Star Citizen: Seems extremely overdetailed visually as everything on that game, at least for my taste. It seems it will have clickables, instruments, shake, inertia, toilets, back scratchers, little beer fridges, a little tv to watch while flying and a SEGA emulator on some corner of the UI, you name it. For some reason I feel that it will be actually less immersive with all these tidbits and gimmicks and the very odd sense of scale and proportions that game seems to aim for.
  • Elite Dangerous seems to have instruments, limited clickables, inertia and shaking. Their design intentions seem a bit more honest than Star Citizen. Those pop-up weapons are over the top and toylike for me though. The visible RCS plumes are a nice touch. Edit: no real click-able controls, you controll everything with keyboard/joystick. It seems that they had VR in mind right from the beginning. UI is holographic (which feels odd to me.). Head rotation and inertia feels good. Has a nice mouselook, either toggle-able or only when you hold the button. Button remap-able.
  • Battlefield 4 seems to have instruments, but no clickables. Quite loud inertia and shake.
  • No man's sky seems to have instruments but no clickables. And a hint of gimmicky animated displays that seem to be there for the looks. Seems to have shake and inertia.
  • Rouge System seems to have a lot of detailed clickable interaction and instruments. Not much about shake/inertia, I'd guess very little amounts if any. Seems that it's relies heavily on clickables instead of keyboard control, which isn't really a good idea for a fast combat game. Edit: This game has a fully interactive click-able, toggle-able cockpit, with working displays and a virtual monitor. Even a mouse cursor for that. Also it has that monitor viewport, and you actually have to turn it on and everything. Mostly it feels natural, although sometimes the mouselook is a bit off. Also, there's a zoom, so you can actually read the text for the instruments/controls.
  • Freespace SCP seems to have no clickables and only static instruments, but ample amounts of shake and inertia. Diaspora has a working scanner but the else seems static. The empty cockpit is quite an odd sight when the guy look at the seat. (I played Diaspora though, but Cockpits were almost eye-candy, not much to say about them. Looked nice though.)
Just some research :)

I'm not sure about clickable elemets either, I opt for the keyboard too. I'd say the player won't be pushing stuff under acceleration, but given the occasional several day transfer burns we have, it would be a very unrealistic claim. If it's subtle enough, it might not be a problem, but I can't say it for certain. (Impacts are another question though, especially violent ones. Those ought to mess with you while you are trying to push buttons anyway)

Right, the lack of clickable controls could feel restricting given how much stuff we can use on the UI with the mouse.
Clickabe on-your face might feel odd but would add to the consistency between views.

For me, using Orbiter's cockpit feels quite natural, even with it's poor texturing, and KSP's is very nice too, and it's not that odd that you can't really touch anything. But that could be because of the more simplistic visuals. Didn't played much with X-Plane, but it seemed to be easy to use that one, but it was quite cluttered for a guy like me who never flown an airplane (or drove a car for that matter.)

I think the UI/instrument display is more important anyway. I don't know how much work to cook up some simple case study code for clickables, so we can see, if we even want them and how much effort it would be to implement them properly. And would it worth the effort.

Also the lighting will look odd, if there's no self-shadowing. Like now your panel will be iluminated while you are faing away from the sun, even if there's your whole craft to obscure it. (Not that much of a problem for screen-viewport cockpits though, since they emit light anyaway.)

One thing we need to think about is body representation. Orbiter's static pilot is quite distracting, but the empty seat on that Freespace SCP video is equally strange. KSP's little Kerbals are cute and they are moving around which is nice, but that would need a proper armature implementation to look good, and modeling a nice looking pilot in a suit is quite a work too. (I could do the modeling, but I think it doesn't worth the effort, even if it will be reusable. I bet you would say the same about armature animation code :D ) Limited view rotation might solve the problem though, maybe the pilot's boots are visible a bit if the limits are feel resctricting.
I'd say we shouldn't show the pilot.

Re: 3D cockpits

Posted: Sat Jan 04, 2014 2:45 pm
by Zordey
AAARG... I had written up a large reply but clicked on something and lost it, too lazy to type it again so here is the summary:

I really like inertia head movement but how often will you really see this? Also since ships can accelerate at 20+G I assume there is some sort of serious inertia dampening system handwaved into ships, therefore this system would cancel out any ship movement, the only movement that would be perceivable would be unexpected impacts from weapons / ground / other ships etc.

Clickable elements: I am going for NO. even though I use the current clickable icons more than keypresses... I think to make buttons big enough to be usable at low resolutions, the dashboard would look like a Fisher Price toy for babies. One compromise to this would be to click the whole virtual screen to display the nav map for instance.

Lighting: I would like environmental lighting + subtle ambient internal cabin lights + light from instruments (if possible)

Body representation: legs / lower arms should probably be visible and limit view rotation to prevent anything else being visible. Maybe there could be a standard pilot including seat for all cockpits to keep them looking similar (and good)? Making a decent looking pilot is certainly beyond my current modeling skill level.

Re: 3D cockpits

Posted: Sat Jan 04, 2014 4:37 pm
by bszlrd
I also hate that when it happens :)
The main thing in favor of head movement is that it adds a sense of mass and life.

Subtle internal lighting can be done with a glow texture. I use the diff texture as glow on the test mod. I baked in a full render with a bunch of area lights positioned on the screens. I think it works fine mostly, but buttons and stuff will need some illumination even if they will be static.

I could do a pilot model if we decide to have it, for the legs and arms. It might take some time though, but it's mostly cosmetic/modeling question if it will be static. I've already used a simple makehuman guy to make sure the scale is good.
My hunch is that static hands would look odd, so we might want to exclude those.

Re: 3D cockpits

Posted: Sat Jan 04, 2014 10:22 pm
by robn
I think the pilot should be left out. Its going to be hard to make something that everyone likes, and it takes space that could be used for something else.

The head movement looks great, I was surprised just how good. I agree that it makes little sense with the forces we're dealing with, but maybe its worth handwaving over that for something that looks cool.

We have environmental lighting (though the code sucks rights now). We can deliberately render instruments with lighting disabled so they always appear bright.

I'm not really enthused about the idea of interactive elements, but I don't see that we'll have a choice for some. Eg I always imagined you'd be able to click an entry in the contacts list to target that contact. If you can't click the entry on the cockpit version, then you need to duplicate the list in the HUD, which is just redundant. We'll probably just have to try it.

Re: 3D cockpits

Posted: Sun Jan 05, 2014 5:15 pm
by FluffyFreak
I'm ambivalent about the pilot thing, I've been testing the Oculus Rift with Pioneer and I don't mind being totally disembodied it seems :)

When it comes to interactive cockpit elements I'm simply wary of us ending up with something like this: http://www.youtube.com/watch?v=29MoasZNikk, where just starting the engines means turning on the dashboard lights!

I think the proposed roadmap looks mostly good, I'm sure things will bump around a little as we encounter what needs to be done but that's to be expected.

Re: 3D cockpits

Posted: Mon Jan 06, 2014 2:43 am
by robn
FluffyFreak wrote:When it comes to interactive cockpit elements I'm simply wary of us ending up with something like this: http://www.youtube.com/watch?v=29MoasZNikk, where just starting the engines means turning on the dashboard lights!
Eww. I mean, cool if you like that, and I'm inclined to point the next person that asks to be able to get out of their ship and walk around at this, but just no. I can still hear one nutter gushing about Red Orchestra when it first came out because you had to manually work the bolt between rounds. If I wanted a real gun I'D GET A REAL GUN.