SCALE DOWN THE WORLD AND ITS PARAMETERS

 
The parts of the code in red show the modification to the original Gtest source code.
This tutorial shows you where to modify a world scale down by a factor of 13.5 compared to Gtest. The Gtest Player is 2.7 times taller than the Quake player. Here, we even go smaller, 5 times smaller than Quake. This will allow us to build huge worlds with the World Editor. From the original player size (2.7) of Gtest, we will go to a size of 0.2 for the player and the Bots. We also have to adjust the different world's parameters like the speed, the gravity, the bounding boxes, ...etc.


Go in CLIENT.C inside the function "geBoolean Client_SendMove":
...
    ButtonBits = 0;

    // Reduce the speed of the player.
    // Change forward/back motion
    if (IsKeyDown(KeyLut[VK_UP], hWnd))
        // Client->ForwardSpeed = 4000.0f;
        Client->ForwardSpeed = 400.0f;
    else if (IsKeyDown(KeyLut[VK_DOWN], hWnd))
        // Client->ForwardSpeed = -4000.0f;
        Client->ForwardSpeed = -400.0f;
    else
        Client->ForwardSpeed = 0.0f;

    if (MouseInvert)
        Client->Angles.X -= GlobalMouseSpeedY;
    else
        Client->Angles.X += GlobalMouseSpeedY;
...

Inside the function "static void BuildClientViewXForm":
...
    // HACK the view height till we get it in
    // Just use a vakue that looks good for now...
    // Lower the camera view.
    // Client->ViewXForm.Translation.Y += 140.0f;
    Client->ViewXForm.Translation.Y += 9.0f;
...


Go in GMAIN.C inside the function "geBoolean Game_SpawnClient":
...
    //GenVSI_SetPlayerBox(VSI, PlayerHandle, &Mins, &Maxs);
    // Adjust the bounding box around the player.
    // Player->Mins.X = -30.0f;
    // Player->Mins.Y = -10.0f;
    // Player->Mins.Z = -30.0f;
    // Player->Maxs.X = 30.0f;
    // Player->Maxs.Y = 160.0f;
    // Player->Maxs.Z =  30.0f;
    Player->Mins.X = -2.0f;
    Player->Mins.Y = -1.0f;
    Player->Mins.Z = -2.0f;
    Player->Maxs.X =  2.0f;
    Player->Maxs.Y = 8.0f;
    Player->Maxs.Z =  2.0f;

    Player->GunOffset.X = 0.0f;
    // Lower the "Gun Offset".
    // Player->GunOffset.Y = 130.0f;
    Player->GunOffset.Y = 10.0f;
    Player->GunOffset.Z = 0.0f;

    #else
    Player->Mins.X =-5.0f;
    Player->Mins.Y =-5.0f;
    Player->Mins.Z =-5.0f;
    Player->Maxs.X = 5.0f;
    Player->Maxs.Y = 5.0f;
    Player->Maxs.Z = 5.0f;
    #endif

    Player->Time = 0.0f;
    Player->JustSpawned = GE_TRUE;

    //GenVSI_SetClientGunOffset(VSI, ClientHandle, 0.0f, 130.0f, 0.0f);

    // Reduce the player size.
    // Player->Scale = 2.7f;
    Player->Scale = 0.2f;
...


Go in GMAIN.H:
...
    #define ROTATION_FRICTION  0.90f
    #define PLAYER_GROUND_FRICTION 7.0f
    #define PLAYER_LIQUID_FRICTION 2.5f
    #define PLAYER_AIR_FRICTION  1.00f
    // Adjust the Player Gravity, Jump velocity and his Side Speed.
    // #define PLAYER_GRAVITY   1600.0f
    // #define PLAYER_JUMP_THRUST  700 //17000.0f
    // #define PLAYER_SIDE_SPEED  4000.0f
    #define PLAYER_GRAVITY   1000.0f
    #define PLAYER_JUMP_THRUST  200.0f
    #define PLAYER_SIDE_SPEED  300.0f
...


Go in BOT.C:
...
    #define BOT_GROUND_FRICTION  7.0f
    #define BOT_LIQUID_FRICTION  2.5f
    #define BOT_AIR_FRICTION  1.00f
    // Adjust the Bots Gravity, Jump and Speed.
    // #define BOT_GRAVITY    1600.0f
    // #define BOT_JUMP_THRUST   17000.0f
    // #define BOT_SIDE_SPEED   4000.0f
    // #define BOT_RUN_SPEED   3700.0f
    #define BOT_GRAVITY    1000.0f
    #define BOT_JUMP_THRUST   700
    #define BOT_SIDE_SPEED   200.0f
    #define BOT_RUN_SPEED   370.0f
...


Go in BOT.C inside the function "geBoolean Game_SpawnBot":
...
    Player->Time = 0.0f;

    // Reduce the Bots size.
    // Player->Scale = 2.7f;
    Player->Scale = 0.2f;

    // Adjust the bounding box around the Bots.
    // Player->Mins.X = -30.0f;
    // Player->Mins.Y = -10.0f;
    // Player->Mins.Z = -30.0f;
    // Player->Maxs.X = 30.0f;
    // Player->Maxs.Y = 160.0f;
    // Player->Maxs.Z = 30.0f;
    Player->Mins.X = -2.0f;
    Player->Mins.Y = -1.0f;
    Player->Mins.Z = -2.0f;
    Player->Maxs.X =  2.0f;
    Player->Maxs.Y = 8.0f;
    Player->Maxs.Z =  2.0f;

    Player->GunOffset.X = 0.0f;
    // Lower the "Gun Offset".
    // Player->GunOffset.Y = 130.0f;
    Player->GunOffset.Y = 10.0f;
    Player->GunOffset.Z = 0.0f;
...


Go in BOT.C inside the function "geBoolean Bot_ActorStart":
...
    Player->Time = 0.0f;

    // Reduce the Bots size.
    // Player->Scale = 2.7f;
    Player->Scale = 0.2f;

    // Adjust the bounding box around the Bots.
    // Player->Mins.X = -30.0f;
    // Player->Mins.Y = -10.0f;
    // Player->Mins.Z = -30.0f;
    // Player->Maxs.X = 30.0f;
    // Player->Maxs.Y = 160.0f;
    // Player->Maxs.Z = 30.0f;
    Player->Mins.X = -2.0f;
    Player->Mins.Y = -1.0f;
    Player->Mins.Z = -2.0f;
    Player->Maxs.X =  2.0f;
    Player->Maxs.Y = 8.0f;
    Player->Maxs.Z =  2.0f;

    Player->GunOffset.X = 0.0f;
    // Lower the "Gun Offset".
    // Player->GunOffset.Y = 130.0f;
    Player->GunOffset.Y = 10.0f;
    Player->GunOffset.Z = 0.0f;
...