Holiday Project

GEC: Discuss gaming, computers and electronics and venture into the bizarre world of STGODs.

Moderator: Thanas

User avatar
Hawkwings
Sith Devotee
Posts: 3372
Joined: 2005-01-28 09:30pm
Location: USC, LA, CA

Re: Holiday Project

Post by Hawkwings »

Ooh, are you going to add weather effects perhaps? Day/night missions? Blowing wind? A climactic endgame mission at night in a thunderstorm with the super enemy baddie?

The radar looks a bit flat, if you know what I mean. Too much emphasis on the horizontal axis, and not enough on the vertical. Seeing as how the environment is in 3-d, it just seems odd. Maybe just make it less wide? Or perhaps an option to make the radar overlay full-screen?
Vendetta wrote:Richard Gatling was a pioneer in US national healthcare. On discovering that most soldiers during the American Civil War were dying of disease rather than gunshots, he turned his mind to, rather than providing better sanitary conditions and medical care for troops, creating a machine to make sure they got shot faster.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Hawkwings wrote:Ooh, are you going to add weather effects perhaps? Day/night missions? Blowing wind?
There is day, night, sun, moon, stars, rain, clouds, variable wind (no splash effects) and fog. Sunsets are on the list.
A climactic endgame mission at night in a thunderstorm with the super enemy baddie?
Lightning isn't a bad idea, it's a relatively cheap effect. I'll put it on the list.

The climatic endgame mission absolutely must feature flying through a tunnel under the island. So it was written by the high priests of Namco, so it shall be. :) That will also be a good thing to have for the super-expert-double-hard gliding challenge.
The radar looks a bit flat, if you know what I mean. Too much emphasis on the horizontal axis, and not enough on the vertical. Seeing as how the environment is in 3-d, it just seems odd.
The effect play area (that enemies are found in) is about 6 times larger along the x and z dimensions than the y axis. I think it works fairly well, and it is nicely different from normal radars.
Or perhaps an option to make the radar overlay full-screen?
The A button switches between radar, map (which is nearly full screen) and off. The map will includes all enemy and waypoint positions.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Swan takeoffs and landings;

Image

Still needs water splashes and a swimming animation (currently it looks rather silly when you are floating in the water in flight position). Unfortunately it's impossible to get the shading on the swan's feathers right without using HDR lighting, which is too much of a performance hit ATM (assuming you want >50 FPS). I might come back to it later.

I wonder if anyone else has ever written code to procedurally generate waterfowl foot webbing. :)
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Raven;

Image

This is by far the easiest bird to fly so far, although slightly slower and worse soaring performance than the hawk. Maneuverability is better in some ways than the hawk and worse in others, it's hard to describe; much better than the swan of course. I remain pleasantly surprised at how these different handling characteristics emerge from the model shaping and aerodynamic modelling, without explicit characterisation (though I still have 'easy control mode' on my todo list).
User avatar
Zixinus
Emperor's Hand
Posts: 6663
Joined: 2007-06-19 12:48pm
Location: In Seth the Blitzspear
Contact:

Re: Holiday Project

Post by Zixinus »

What made you decide to make a raven model?
Credo!
Chat with me on Skype if you want to talk about writing, ideas or if you want a test-reader! PM for address.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Zixinus wrote:What made you decide to make a raven model?
I'm picking popular / well known bird species with different flight characteristics. Also ones with personality trait stereotypes for the story campaign (which has shapechanger characters).

I have almost completed the peregrine falcon (geometry and physics done, just needs textures). The other four species I am planning are Bald Eagle, Great Horned Owl, Wandering Albatross and Griffon Vulture - though if you have any requests I will consider them. Note that small birds cause problems for the physics engine due to the high (effective) Reynolds number, so I will not be doing anything smaller than a crow.

Incidentally the definition for the raven looks like this;

Code: Select all

                    FeatherTexture = content.Load<Texture2D>("Textures/Birds/feather_solid");
                    CovertsTexture = content.Load<Texture2D>("Textures/Birds/coverts");

                    mass = 1.3f;
                    staticThrust = 4.5f;
                    artificialStabilisation = 6f;
                    frontalDragCoefficient = 0.25f;
                    lateralDragCoefficient = 0.41f;
                    liftCoefficient = 12.0f;
                    stallOnsetAngle = MathHelper.ToRadians(14.0f);
                    generalTurbulenceOnsetVelocity = 45f;
                    featherStiffness = 0.004f;

                    glideAttack = MathHelper.ToRadians(1.5f);
                    glideDihedral = MathHelper.ToRadians(8f);
                    flightLegSpread = MathHelper.ToRadians(-3f);
                    flightLegPitch = MathHelper.ToRadians(-2f);
                    flightFootSpread = MathHelper.ToRadians(12f);
                    flightFootCurl = MathHelper.ToRadians(74f);
                    flightToeCurl = MathHelper.ToRadians(24f);

                    flapDihedral = MathHelper.ToRadians(50f);
                    flapAnhedral = MathHelper.ToRadians(35f);
                    flapMaxCup = MathHelper.ToRadians(70f);
                    flapMaxTuck = MathHelper.ToRadians(50f);
                    flapMaxTwist = MathHelper.ToRadians(55f);

                    yawForwardSweep = MathHelper.ToRadians(22.0f);
                    yawBackwardSweep = MathHelper.ToRadians(22.0f);
                    yawMaxDihedral = MathHelper.ToRadians(27.0f);

                    yawFlapDamping = 0.3f;
                    yawTailTwist = MathHelper.ToRadians(30.0f);
                    yawTailElevation = MathHelper.ToRadians(20.0f);
                    yawTailSpread = MathHelper.ToRadians(20.0f);
                    pitchTailElevation = MathHelper.ToRadians(15.0f);
                    pitchTailSpread = MathHelper.ToRadians(22.0f);

                    handStretch = MathHelper.ToRadians(30f);
                    tailStretch = MathHelper.ToRadians(30f);

                    stretchAttack = MathHelper.ToRadians(12f);
                    tailFold = MathHelper.ToRadians(14f);
                    handFold = MathHelper.ToRadians(54f);
                    wingFold = MathHelper.ToRadians(10f);
                    foldFlapDamping = 0.6f;

                    wingDownstrokeAcceleration = 180f;
                    wingUpstrokeAcceleration = 400f;
                    jointAcceleration = 360f;

                    secondaryServoRate = 0.26f * 60f;
                    
                    spreadFlutter = 0.0003f;
                    sweepFlutter = 0.0001f;

                    glideFlutter = 0.00007f;
                    beakLength = 0.048f;
                    beakHeight = 0.036f;
                    beakWidth = 0.028f;
                    beakOffset = 0.005f;
                    beakHook = 0.01f;

                    eyeSpacing = 0.5f;
                    eyeSize = 0.02f;
                    headLength = 0.06f;
                    headWidth = 0.09f;
                    headHeight = 0.07f;
                    headRise = 0.025f;

                    neckLength = 0.09f;
                    neckBaseHeight = 0.11f;
                    neckBaseWidth = 0.13f;
                    neckBaseRise = 0.02f;
                    neckTaper = 1.5f;
                    neckPinch = 0.0f;

                    bodyWidth = 0.20f;
                    bodyHeight = 0.15f;
                    bodyFrontLength = 0.17f;
                    bodyFrontTaper = 0.5f;
                    bodyRearLength = 0.34f;
                    bodyRearTaper = 0.6f;

                    shoulderToCG = 0.14f;
                    shoulderSpacing = 0.13f;
                    shoulderHeight = 0.038f;

                    humerusLength = 0.155f;
                    shoulderSweep = MathHelper.ToRadians(11f);
                    ulnaLength = 0.135f;
                    elbowFold = MathHelper.ToRadians(32f);
                    handLength = 0.055f;
                    handSweep = MathHelper.ToRadians(10f);

                    legBaseToCG = 0.06f;
                    legUpperLength = 0.11f;
                    legLowerLength = 0.07f;
                    legDiameter = 0.013f;
                    legBaseDiameter = 0.06f;
                    toeLength = 0.07f;
                    rearToeLength = 0.04f;
                    clawLength = 0.03f;
                    webbedFeet = false;

                    primaryFeathers = 12;
                    secondaryFeathers = 6;
                    tertiaryFeathers = 2;
                    tailFeathers = 13;

                    featherCamber = 0.3f;
                    featherRise = 0.0014f;
                    covertThickness = 0.02f;

                    primaryShaftLength = 0.06f;
                    primaryVaneLength = 0.20f;
                    primaryLeadingWidth = 0.01f;
                    primaryTrailingWidth = 0.028f;
                    primaryVaneCoverage = 0.3f;
                    primarySweep = MathHelper.ToRadians(-10f);
                    primaryCurve = MathHelper.ToRadians(12f);
                    primaryFlare = 0.5f;
                    primaryBulge = 0.3f;

                    secondaryShaftLength = 0.07f;
                    secondaryVaneLength = 0.28f;
                    secondaryOuterWidth = 0.02f;
                    secondaryInnerWidth = 0.025f;
                    secondaryVaneCoverage = 0.3f;
                    secondarySweep = MathHelper.ToRadians(83f);
                    secondaryCurve = MathHelper.ToRadians(5f);
                    secondaryFlare = 0.6f;

                    tertiaryShaftLength = 0.08f;
                    tertiaryVaneLength = 0.26f;
                    tertiaryOuterWidth = 0.016f;
                    tertiaryInnerWidth = 0.016f;
                    tertiaryVaneCoverage = 0.7f;
                    tertiarySweep = MathHelper.ToRadians(102f);
                    tertiaryCurve = MathHelper.ToRadians(-3f);
                    tertiaryFlare = 0.8f;

                    tailToCG = 0.14f;
                    tailRootHeight = 0.03f;
                    tailRootWidth = 0.04f;
                    tailShaftLength = 0.06f;
                    tailVaneLength = 0.32f;
                    tailFeatherWidth = 0.013f;
                    tailFlare = 0.9f;
                    tailSpread = MathHelper.ToRadians(20f);
                    tailDiamond = 0.25f;

                    primaryColour = new FeatherColour(new Color(8, 12, 26), new Color(10, 15, 26),
                                                      new Color(8, 12, 22), new Color(10, 15, 22));
                    primaryFringe = new FeatherColour(new Color(10, 10, 10), new Color(10, 10, 10),
                                                      new Color(10, 10, 10), new Color(10, 10, 10));
                    primaryMarkings = new FeatherColour(new Color(3, 0, 6));

                    tailColour = primaryColour;
                    tailFringe = primaryFringe;
                    tailMarkings = primaryMarkings;

                    covertTopLeadingColour = new Color(10, 15, 20);
                    covertTopTrailingColour = new Color(10, 10, 15);
                    covertTopTipColour = new Color(12, 12, 25);
                    covertBottomLeadingColour = covertTopLeadingColour;
                    covertBottomTrailingColour = covertTopTrailingColour;
                    covertBottomTipColour = covertTopTipColour;
                    covertTopMarkingColour = new Color(5, 0, 10);
                    covertBottomMarkingColour = covertTopMarkingColour;

                    bodyTopColour = new Color(10, 15, 20);
                    bodyBottomColour = bodyTopColour;
                    bodyMarkingColour = covertTopMarkingColour;
                    legFeatherColour = new Color(15, 20, 25);
                    legScaleColour = new Color(25, 30, 40);
                    eyeColour = new Color(0, 0, 0);
                    irisColour = new Color(0, 5, 7);
                    CameraOffset = new Vector3(0f, 0.5f, 1.8f);
Rather than being the usual mesh + bones output from a 3D modeller.

Note; 'flutter' is the noise injection into the joint control servos, not the feather deflection, which is determined dynamically based on the stiffness and airflow characteristics.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Peregrine Falcon (textures suck, might redo them later);

Image

This thing is hell to fly. Extremely twitchy, dynamically unstable, all kinds of bizarre coupling modes. Very fast, and theoretically very maneuverable, but every other attempt at a hard turn ends in spinning wildly out of control. However I am finding it strangely rewarding to learn how to actually fly each bird in 'realistic' mode.
User avatar
salm
Rabid Monkey
Posts: 10296
Joined: 2002-09-09 08:25pm

Re: Holiday Project

Post by salm »

How about a pelican. They´ve got a quite distinctive look.
weemadando
SMAKIBBFB
Posts: 19195
Joined: 2002-07-28 12:30pm
Contact:

Re: Holiday Project

Post by weemadando »

Can we maybe have something like a Spoonbill or other wading bird?
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Bald Eagle; probably essential if any Americans are going to play this game :)

Image

The eagle is challenging to fly, but not as much as the falcon. It feels really heavy, but in a different way to the swan; the swan just refuses to do hard maneuvers, whereas the eagle will do them but you have to fight against the weight trying to throw you off course. It still has a slight nose-down trim under speed that I haven't been able to remove with minor form tweaks.

A pelican is a good idea, I'll add it to the list. Unfortunately a spoonbill would not be practical with the current engine.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

I had major problems with the horned owl model and I'm definitely not happy with it. The issues are cosmetic though, the physics work ok;

Image

The owl is the easiest bird to fly (so far) by a long way, moreso than the raven even. It is the only bird you can reasonably maneuver solely by CG movements, without touching the angle of attack. It is rather slow though.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Wandering Albatross. Some lighting issues on the legs, but good enough for now;

Image

Unsurprisingly, the albatross flies like a sailplane; slow, sluggish, but very good glide ratio and soaring capability. It's good for beginners because you can use very harsh control movements and it won't go out of control, although a tendency to sideslip makes it a little harder to fly overall than the owl.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Completed the eight and last species (at least, for the initial release); the griffon vulture.

Image

The vulture is similar to the eagle but slower, heavier and more stable. You really feel the weight in the turns, even moreso than the swan (because while the swan is heavier, it has much more power, which masks the effect). Because of the stability though it's actually easier to compensate than for the eagle.

Next to do; title screen and menus.
User avatar
Zixinus
Emperor's Hand
Posts: 6663
Joined: 2007-06-19 12:48pm
Location: In Seth the Blitzspear
Contact:

Re: Holiday Project

Post by Zixinus »

I have to ask: is support in WindHeaven for rumble in the Xbox360's controller? That would give great feedback.
Credo!
Chat with me on Skype if you want to talk about writing, ideas or if you want a test-reader! PM for address.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Zixinus wrote:I have to ask: is support in WindHeaven for rumble in the Xbox360's controller? That would give great feedback.
Yes, it pulses the low-frequency rumble once per wingbeat, scaled based on the flap power. The high frequency vibration is used to indicate stall onset, going to max strength if you fully stall. IMHO this adds substantially to the realism.

P.S. The game is called 'Windhaven' rather than 'Windheaven'; in retrospect I think I was somewhat inspired by the classic sci-fi novel of the same name (which I read when I was a child), although obviously it is not based on that continuity.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Montage of loading screens (minus progress bars), plus temporary title card;

Image
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

Ok SDnet, critical decision to make. :)
Which font to use for the title?

Image

Image

I slightly prefer the first one. The textures on the title text are animated of course, to give them a slight glimmer, and they fade in as the camera pulls back over the birds. I may add a particle glow effect for the gold text coming on screen, need to do the main menu first.
weemadando
SMAKIBBFB
Posts: 19195
Joined: 2002-07-28 12:30pm
Contact:

Re: Holiday Project

Post by weemadando »

The first.

So - please, tell me when I can get this - I'm so fucking excited to fly like a bird!
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

weemadando wrote:The first.
First one it is. I have increased the letter spacing slightly.
So - please, tell me when I can get this
There are still some bugs / glitches / problems with it. Another week or two at this rate, for 'free flight' mode to be working satisfactorily.
I'm so fucking excited to fly like a bird!
Thanks for the encouragement, it is good to know that other people are interested in the concept.
User avatar
salm
Rabid Monkey
Posts: 10296
Joined: 2002-09-09 08:25pm

Re: Holiday Project

Post by salm »

Yeah, the first one is better. It looks more "windy". :)

I´m also looking forward to playing this. I don´t have an Xbox but i´ll play it on a friends console.
weemadando
SMAKIBBFB
Posts: 19195
Joined: 2002-07-28 12:30pm
Contact:

Re: Holiday Project

Post by weemadando »

Wait, is this going to be XNA only? OR will I be able to use my PC? Because being in Australia, Microsoft haven't deemed us worthy of having access to XNA.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

weemadando wrote:Wait, is this going to be XNA only? OR will I be able to use my PC?
I will be releasing at least the 'free flight' mode on the PC, but currently you need a 360 controller to play it.
Because being in Australia, Microsoft haven't deemed us worthy of having access to XNA.
That isn't Microsoft's fault. The law in Australia is ridiculous; before you can sell any game legally it must be classified by the Office of Film and Literature Classification (and they reject a lot of stuff out of hand). Obviously that is impractical for indie games developed by individuals in different countries. I don't think there's any legal way for Microsoft to offer non-government-approved games. This is probably a major factor in why Australian game prices are so high, release dates late and so many titles completely unavailable.
weemadando
SMAKIBBFB
Posts: 19195
Joined: 2002-07-28 12:30pm
Contact:

Re: Holiday Project

Post by weemadando »

Online games, DLC etc aren't rated. So that's not the reason.

It's the same reason that we didn't get half the other features until just before x-mas this year - because companies can make more money by providing less services.

And Australian game prices are so high because companies like money and idiots pay that much for them.
User avatar
Starglider
Miles Dyson
Posts: 8709
Joined: 2007-04-05 09:44pm
Location: Isle of Dogs
Contact:

Re: Holiday Project

Post by Starglider »

weemadando wrote:Online games, DLC etc aren't rated. So that's not the reason
Well, that's what I've read on the XNA forums, possibly the people there don't know what they're on about. Not living in Australia, I don't know either way.

Game menu done;

Image

Doing options now. I am including dead zone on/off, in expert mode you are doing constant fine corrections anyway, so it may be better to disable the thumbstick's default (central) dead zone.
User avatar
NecronLord
Harbinger of Doom
Harbinger of Doom
Posts: 27379
Joined: 2002-07-07 06:30am
Location: The Lost City

Re: Holiday Project

Post by NecronLord »

This is totally awesome. You've furnished a use for the Xbox PC controller I've got sitting on my desk unopened too, which is also awesome. I look forward to this very eagerly. Great work so far; shown it to some bird enthusiasts who aren't on the board, too, all very impressed.

Can't wait.
Superior Moderator - BotB - HAB [Drill Instructor]-Writer- Stardestroyer.net's resident Star-God.
"We believe in the systematic understanding of the physical world through observation and experimentation, argument and debate and most of all freedom of will." ~ Stargate: The Ark of Truth
Post Reply