Predictably, I haven't had as much time as I'd like to work on this but I thought I should at least show where I'm up to (in part, spurred on by
Zireael's request).
Way back in this thread...
Redspear wrote:My motivation is to address the inter-scale relationships within the game, not as a 'fix' but rather as an exploration of 'optimisation' and what that might mean to different people (me in particular, I admit

).
Nothing here is likely to make you think, "Wow! look at the size of that!", rather it's to reduce those little moments where the unrealistic scale becomes more glaring.
So, where am I up to?
Changes to Source
I've
emboldened (if that's right) the core files that I've altered (within the myoolite/oolite/src/core folder, and most in the entities folder within that). The parts that I've changed or added have been
underlined so that you can see what I've done.
Larger systems
We all know that planets, suns and distances are too small to be realistic and these alterations won't fix that. However they will make it a little less obvious. Encountering anything large like a station or a bulk hauler (or even another ship when close to the surface) tends to show up just how small the planet/sun is, the changes here should reduce that effect.
OOPlanetEntity.m - to increase body size and distances by a factor of 3.3
int radius_km = [dict oo_intForKey:KEY_RADIUS defaultValue:[planetInfo oo_intForKey:KEY_RADIUS]];
collision_radius = radius_km * 33.0; // Scale down by a factor of 100
OOTechLevelID techLevel = [dict oo_intForKey:KEY_TECHLEVEL defaultValue:[planetInfo oo_intForKey:KEY_TECHLEVEL]];
OOStellarBody.h - reduce planet size on F7 screen (cosmetic change to prevent all planets looking enormous)
#define ATMOSPHERE_DEPTH 500.0
#define PLANET_MINIATURE_FACTOR 0.0005
#define MAX_SUBDIVIDE 6
Immediate problems:
- It takes ages to get anywhere (see Faster System Travel below)
Mass lock with suns and planets is extreme (see Reduced Mass-locking below)
Considerations:
- May affect encounter rates (seems ok so far...)
May want to adjust position of main station and station buoy (cosmetic)
Faster System Travel
Predictably, larger systems require greater travel times. For comparable gameplay we need to traverse these distances at a faster rate whilst maintaining current combat speeds.
Luckily there are two key environments within this picture:
- 1. Scanner range - determines mass-lock of ships and is the environment for combat
2. Space compass range - the system itself and the travel within it
Fortunately, each environment already uses a different method of travel, so we need to addreess the 2nd method: the torus drive.
PlayerEntity.h - increase torus drive speed
#define HYPERSPEED_FACTOR 100.0
PlayerEntity.m - to sharpen torus drive decelleration (to prevent gliding past, or even into, things too easily)
UPDATE_STAGE(@"slowing from hyperspeed");
// slow back down...
if (travelling_at_hyperspeed)
{
// decrease speed to maximum normal speed
flightSpeed -= (float)(speed_delta * delta_t * HYPERSPEED_FACTOR * 50);
if (flightSpeed < maxFlightSpeed)
flightSpeed = maxFlightSpeed;
Results:
- Intra-system travel times are now comparable with the game as we know it and combat remains unaffected
Considerations:
- I've given a pretty fierce decelleration here (you might want to halve or even quarter it) with one eye on adressing sun-skimming
Problem Solved?:
- Yes

Reduced Mass-locking
Whilst planetfall is an oxp environment, sunskimming is a core environment inherited from elite, so we need the latter to work from a gameplay perspective (and the former would be nice too). Therefore masslock radii need to be reduced. This is however, particularly fiddley to get just right. The values below will give a functional version but I'm still not entirely happy with it.
HeadUpDisplay.m - to decrease mass lock influence from larger bodies
double dist = stellar->zero_distance;
double rad = stellar->collision_radius;
double factor = ([stellar isSun]) ? 0.2 : 0.4;
// plus ensure mass lock when 25 km or less from the surface of small stellar bodies
// dist is a square distance so it needs to be compared to (rad+25000) * (rad+25000)!
if (dist < rad*rad*factor || dist < rad*rad + 50000*rad + 625000000 )
Results:
- sunkimming and planetfall are now viable again
Considerations:
- sunskimmiing is a bit quick in many cases and so needs some adjusting to compare to the original
Problem Solved?:
- ..kind of. I thought I'd cracked it with some different values but it's a matter of finding values that will work in most sytems. Testing made sunskimming practical wherever I tried it but a bit too easy.
Feel free to try your own values and let me know but bear in mind that, as cim explains...
cim wrote:The square root of factor is the number of radii from the centre you have to be before a masslock from a planet or sun - note that it's already closer in for stars. (Or as you'll see, within 25k of the surface)
Current Status:
- Playable?: Yes
Issue free?: Not quite - sunskimming is a bit too quick and easy
Preferable?: For me, yes 
Questions:
Universe.h has
Code: Select all
#define SUN_SKIM_RADIUS_FACTOR 1.15470053838
is there anything useful I could do with that?
In StationEntity.m there's
Code: Select all
- (HPVector) beaconPosition
{
double buoy_distance = 1000.0; // distance from station entrance
but changing the value (even dramatically) doesn't seem to do anything.
How can I change the position of the main station?
...and indeed, can the witchpoint beacon be placed further from the planet?
Thanks to those who've shown interest and/or helped with this
