Monday, September 10, 2007

Google Earth flight simulator




By now the word is well out there that Google Earth has an Easter Egg flight simulator. It's even mentioned in Wikipedia. I've played with this a bit, and I think its worth having, but only because it is worth having Google Earth. It is fun, but you are not likely to get much actual flying enjoyment from it.

It made perfect sense to implement this feature, as they already had most of the ingredients: the imagery, a method to map the imagery to contours, and a way to manipulate the view so that you can it all from any perspective. All they had to come up with was a way to dynamically move through this world, with a motion that mimicked the behavior of an airplane. The result is fairly primitive flight simulator that feels like an arcade game. It's buggy too-- I can't give any better evaluation of the flight dynamics because when I fly it keeps resetting the throttle. However, there is a smidgen of realism. You can make it can stall, and it is smart enough to register a crash if you attempt to land on water.

There is no cockpit beyond a HUD, and there is no outside view, which is not surprising because that would take a major development effort. I would be very happy if they at least added the usual preset views that you could use with the number pad or hat switch. As it is, you can't see your house unless you are flying right at it. There is a way to pan the view (Alt+ arrow keys, or Ctrl+ arrow keys for slow and fast panning, respecively) but this is not easy to use in flight. As a result, landings are hard to set up.

There are 3D buildings for some major cities, which are not on by default but can be activated using the layers options. I find they really slow down the performance, and as you can see many are unpainted.

So you can have a bit of fun flying over your own house, flying to work, or zooming through the Grand Canyon. All in the daytime, in a single (mixed-up) season, and without weather. Beyond that there's not too much to do. But this is exciting because this is that clearly this is the future of flightsimming. Surely live streaming imagery will be in MSFS eventually. (I know there is a project to do this in FSX now, but someday this will be the way it is out of the box.) Maybe Flight Gear will beat them to it.

2 comments:

Nate Homier said...

Streaming scenery would require some fast bandwidth and I don't see that happening anytime soon in the us. Would not fast planes like fighter jets or the blackbird be at a serious disadvantage with streaming scenery. Flightgear has terrasync for downloading scenery in real time but I am assuming your thinking of something that does not make permanent deposits to your hard drive.

Joost said...

Flying with GE-FS F-16 looks nice but that HUD looks like something out of a comic book. So I went and changed a little here and there. Looks a lot more like an F16 now! I cant get the compass to show heading every 10 degrees. Can anyone help??

Copy this into generic.ini (C:\Program Files\Google\Google Earth\res\flightsim\hud):

% Generic Head Up Display Config
AirSpeedX = -0.4
AirSpeedFactor = 0.194384 % 1/kt
AirSpeedY0 = -0.2
AirSpeedY1 = 0.1
AirSpeedRange = 16
AirSpeedDV = 1
AirSpeedSmallInLarge = 5
AirSpeedLargeX0 = -0.05
AirSpeedLargeX1 = 0
AirSpeedSmallX0 = -0.03
AirSpeedSmallX1 = 0
AirSpeedValueX = -0.06
AirSpeedValueTextFlags = [left middle]
AirSpeedPointerX = 0.005
AirSpeedPointerAngle = 3.14159265
AirSpeedPointerLength = 0.015

AltitudeX = 0.4
AltitudeFactor = 0.0328084 % 1/ft
AltitudeY0 = -0.2
AltitudeY1 = 0.1
AltitudeRange = 16
AltitudeDV = 1
AltitudeSmallInLarge = 5
AltitudeLargeX0 = 0
AltitudeLargeX1 = 0.05
AltitudeSmallX0 = 0
AltitudeSmallX1 = 0.03
AltitudeValueX = 0.06
AltitudeValueTextFlags = [right middle]
AltitudePointerX = -0.005
AltitudePointerAngle = 0
AltitudePointerLength = 0.015

VerticalSpeedFactor = 196.85 % min/ft
VerticalSpeedRound = 10.0
VerticalSpeedX = 0.4
VerticalSpeedY = -0.25
VerticalSpeedTextParams = [center middle]


VelocityMark =
[
-.01 .00 .00 .01
.01 .00 .00 .01
-.01 .00 .00 -.01
.01 .00 .00 -.01
-.03 .00 -.01 .00
.01 .00 .03 .00
.00 .02 .00 .01
]
VelocityMinSpeed = 0

CompassSmallInLarge = 2
CompassLargeInHuge = 3
CompassTextParams = [center bottom]
CompassSmallY0 = -0.310
CompassSmallY1 = -0.295
CompassLargeY0 = -0.325
CompassLargeY1 = -0.295
CompassHugeY0 = -0.330
CompassHugeY1 = -0.295
CompassTextY = -0.331
CompassRange = 20
CompassX0 = -0.15
CompassX1 = 0.15

RollScaleHalfAngle = 60
RollScaleR = 0.2
RollScaleCenterX = 0
RollScaleCenterY = 0
RollScaleLarge = [30 60]
RollScaleSmall = [10 20 45]
RollScaleLargeR0 = 0
RollScaleLargeR1 = 0.025
RollScaleSmallR0 = 0
RollScaleSmallR1 = 0.0125
RollScaleTextR = 0.07
RollScaleTextParams = [center bottom]
RollScaleSegments = 10
RollScalePointerR = 0.005
RollScalePointerL = 0.02

SkidIndicatorMark =
[
-.01 .005 .01 .005
.01 .005 .01 -.005
.01 -.005 -.01 -.005
-.01 -.005 -.01 .005
]
SkidIndicatorY = 0.17
SkidIndicatorX0 = -0.1
SkidIndicatorX1 = 0.1
SkidIndicatorMin = -2.5
SkidIndicatorMax = 2.5

PlaneMark =
[
-.01 .04 .01 .04
.00 .05 -.00 .03
]

PitchLadderDV = 5
PitchLadderSmallInLarge = 2
PitchLadderSmallMark =
[
-0.08 0.0 -0.04 0.0
0.08 0.0 0.04 0.0
]
PitchLadderLargeMark =
[
-0.13 0.0 -0.04 0.0
0.13 0.0 0.04 0.0
]
PitchLadderY0 = -0.35
PitchLadderY1 = 0.35
PitchLadderXOffset = 0
PitchLadderLetterOffset = 7000

HUDColor = 65280
StallColor = 255
StallX = 0.7
StallY = -0.65
StallText = STALL
StallMinSpeed = 6
StallTextParams = [center bottom]
GearX = -0.85
GearY = -0.65
GearText = GEAR
GearTextParams = [center bottom]
FlapsX = -0.7
FlapsY = -0.65
FlapsText = FLAPS
FlapsTextParams = [center bottom]

HUDLineWidth = 1.3
HUDLineSmooth = true

ThrottleIndicatorX = -0.95
ThrottleIndicatorY0 = -0.8
ThrottleIndicatorY1 = -0.8
ThrottleIndicatorWidth = 0.00

ElevatorIndicatorX = -0.7
ElevatorIndicatorY0 = -0.5
ElevatorIndicatorY1 = -0.5
ElevatorIndicatorWidth = -0.0

AileronIndicatorY = -0.5
AileronIndicatorX0 = -0.8
AileronIndicatorX1 = -0.8
AileronIndicatorWidth = 0.0

RudderIndicatorY = -0.6
RudderIndicatorX0 = -0.8
RudderIndicatorX1 = -0.8
RudderIndicatorWidth = 0.0