Lave Academy OXP
Moderators: winston, another_commander
Ok, I've found the problem too - even though the random seed was being saved/restored, there are actually more than 1 random seed which the system works with. Saving/restoring the other one fixes the problem (2 lines of code).
Kaks, no need to implement a new random number generator. If you're not too far into it, I can submit my patch, but don't want to steal your thunder
Kaks, no need to implement a new random number generator. If you're not too far into it, I can submit my patch, but don't want to steal your thunder
The glass is twice as big as it needs to be.
Micha, go right ahead! I haven't even started looking at the code yet, so there's no thunder from this neck of the woods!
Hey, free OXPs: farsun v1.05 & tty v0.5! :0)
This explains why some people had the problem and others didn't, across various versions/OSs: it only depended on whether or not the binary was compiled with the Procedural Planets flag. It's also been a problem ever since the Procedural Planets compiler-flag was introduced.
Anyhoo, should be fixed in the latest 1.72.3 (WiP) and in 1.73 (WiP).
[OT]
This leads onto another question though: Should we add a '--version' / '--help' command line argument which shows what compile-time options were used to build Oolite? This might help track down inconsistencies in future. Alternatively I guess we can dump that into the logfile - and on second thoughts that's the better solution. I'll see about adding that in.
[/OT]
Anyhoo, should be fixed in the latest 1.72.3 (WiP) and in 1.73 (WiP).
[OT]
This leads onto another question though: Should we add a '--version' / '--help' command line argument which shows what compile-time options were used to build Oolite? This might help track down inconsistencies in future. Alternatively I guess we can dump that into the logfile - and on second thoughts that's the better solution. I'll see about adding that in.
[/OT]
The glass is twice as big as it needs to be.
I think that sounds like a good idea, save all this faffing about again.
I'll leave LA at v1.01, the Academy where it was and we can all go back to playing the gunnery turkey-shoot
Therefore I now declare this OXP done, at least until another annoying bug shows up or I think of something more interesting to add in terms of new tests.
I'll leave LA at v1.01, the Academy where it was and we can all go back to playing the gunnery turkey-shoot
Therefore I now declare this OXP done, at least until another annoying bug shows up or I think of something more interesting to add in terms of new tests.
My OXPs via Boxspace or from my Wiki pages .
Thargoid TV
Dropbox Referral Link
Thargoid TV
Dropbox Referral Link
- Eric Walch
- Slightly Grand Rear Admiral
- Posts: 5536
- Joined: Sat Jun 16, 2007 3:48 pm
- Location: Netherlands
Probably it is a good thing to write a warning in the source code to not use the Rotrand() function for new additions. The number of times this function is called must stay exactly the same as in the old elite versions or this number generator will get different results as its original. It looks saver to have a new planet-seed based number generator for new additions. There is also no need to use this 16 bit computer emulating generator for generating stuff that was not in original Elite.Micha wrote:Ok, I've found the problem too - even though the random seed was being saved/restored, there are actually more than 1 random seed which the system works with. Saving/restoring the other one fixes the problem (2 lines of code).
At least I am glad this course is solved now. Without the Academy it could have taken some years until someone noticed differences changed since original elite. The only other oxp I know of that would have really suffered from this bug is assasains.oxp
I almost started to like the new difficulty. Once I knew where to look for I always managed to find it. To help others I made a screen shot of how the Academy looked as seen from the main station. Findable but you have to wipe off the dust from your screen first.
UPS-Courier & DeepSpacePirates & others at the box and some older versions
This is getting really OT for this thread, but the best option to future-proof it against unwitting changes might be to profile RANROT and then put asserts() and counters into the code to ensure that RANROT never diverges from its legacy origins (as in, number of times called between critical tasks).
The glass is twice as big as it needs to be.
< OT!>
For the next few days I'll be having fun refactoring all of those methods into a more maintainable generic one.
</OT>
<back on topic(almost!)>
Hopefully by the end of it we'll have something more stable for the Lave Academy to build upon...
Couldn't agree more! At the moment there's about 5 different (but very, very similar) ways of getting planetary textures from PlanetEntity.m and the more I look at the code, the more I go crosseyed! I'm still looking into it, but it might well be the case that adding a predefined texture to a planet using planetinfo.plist might also affect its exact position. Looks like the Oolite universe, even without orbits.oxp, is more dynamic than we suspected...Eric Walch wrote:Probably it is a good thing to write a warning in the source code to not use the Rotrand() function for new additions.
For the next few days I'll be having fun refactoring all of those methods into a more maintainable generic one.
</OT>
<back on topic(almost!)>
Hopefully by the end of it we'll have something more stable for the Lave Academy to build upon...
Hey, free OXPs: farsun v1.05 & tty v0.5! :0)
s/saver/safer/ (the DSP OXP could do with that too…)Eric Walch wrote:It looks saver to have a new planet-seed based number generator for new additions.
16-bit 6502?Eric Walch wrote:There is also no need to use this 16 bit computer emulating generator for generating stuff that was not in original Elite.
- Eric Walch
- Slightly Grand Rear Admiral
- Posts: 5536
- Joined: Sat Jun 16, 2007 3:48 pm
- Location: Netherlands
Sorry, 6502 & 6510 are 8 bit machines but I mend it used a 16 bit representation for its integers (and addressing)_ds_ wrote:16-bit 6502?Eric Walch wrote:There is also no need to use this 16 bit computer emulating generator for generating stuff that was not in original Elite.
I know my English always has been bad. In my exam year I even got a 1 for writing down English. (a pretty pretty low rating in the Netherlands) I was just lucky that I could compensate that with my understanding of English.s/saver/safer/ (the DSP OXP could do with that too…)
This error I noticed already and corrected in 1.03. It is just that the Wiki has been down for some time so my sign still leads to the older 1.0 version. (same for ups) Wiki is on since yesterday so one of these days I start to update things there.
UPS-Courier & DeepSpacePirates & others at the box and some older versions
Bad news, I'm afraid. It looks like Lave's position is not as fixed as previously thought, and Ranrot is producing different absolute position coordinates between 32 & 64 bits linux, and between windows and macs.
Thargoid, we should be able to sidestep the problem by using the pws coordinates system. Within that system, the planet is always at coordinates 0,0,0. The units in pws are planet radii - variable between systems - it's a bit of a pain compared to abs, but at least it should ensure consistency across all platforms...
Thargoid, we should be able to sidestep the problem by using the pws coordinates system. Within that system, the planet is always at coordinates 0,0,0. The units in pws are planet radii - variable between systems - it's a bit of a pain compared to abs, but at least it should ensure consistency across all platforms...
Hey, free OXPs: farsun v1.05 & tty v0.5! :0)
How different? Noticably so (the 20km + from before, or less)?
I'll look at making everything relative to the main station, I think I can see a way to do it at spawn-time as long as things are done carefully.
I'll look at making everything relative to the main station, I think I can see a way to do it at spawn-time as long as things are done carefully.
My OXPs via Boxspace or from my Wiki pages .
Thargoid TV
Dropbox Referral Link
Thargoid TV
Dropbox Referral Link
Noticeably so, I'm afraid. On a mac I'm seeing Lave at abs(-49515.3,60769.4,427622) sorry, looking at the wrong figures! abs(0,0,452760) as opposed to abs (0,0,617400) on an XP pc.
To follow on from what I was saying earlier, something like pws (0,-3,3) as a spawn position should place the academy 3r (planetary radii) towards the sun, and 3r on the opposite side of the planet in relation to the witchpoint.
edit: facing_positon pws(0,0,0) should face the planet, pws(0,0,10) the sun - more or less - and (0,10,0) the witchpoint, if I've got my bearings right....
To follow on from what I was saying earlier, something like pws (0,-3,3) as a spawn position should place the academy 3r (planetary radii) towards the sun, and 3r on the opposite side of the planet in relation to the witchpoint.
edit: facing_positon pws(0,0,0) should face the planet, pws(0,0,10) the sun - more or less - and (0,10,0) the witchpoint, if I've got my bearings right....
Hey, free OXPs: farsun v1.05 & tty v0.5! :0)
The problem will then be the three course buoys outside the Academy, plus the pilot course when triggered. Those are all also absolutely positioned, and somehow I don't think using planetary radii is a suitable measurement for spawning those
I'll rework it in absolute co-ords relative to the main station. It'll be simpler all round.
Those Mac figures look like the earlier reports. Is it something broken in 1.72.2.1 compared to 1.72.2 on the other OS's? I ask as my Ubuntu 32-bit information matched my WinXP position exactly...
I'll rework it in absolute co-ords relative to the main station. It'll be simpler all round.
Those Mac figures look like the earlier reports. Is it something broken in 1.72.2.1 compared to 1.72.2 on the other OS's? I ask as my Ubuntu 32-bit information matched my WinXP position exactly...
My OXPs via Boxspace or from my Wiki pages .
Thargoid TV
Dropbox Referral Link
Thargoid TV
Dropbox Referral Link
I've found the problem, at least between procedural & non-procedural planets on 32-bit linux. Can't test my theory on 64-bit till tonight/tomorrow night.
As far as I can see, there's no easy fix to this that would keep all absolute positions the same as before. However, I think it is possible to change the code in such a way as to ensure all -future- absolute positions will always be the same. However this potential fix would also mean that everything is going to move about on every platform between now and a mythical release including this fix - and that would break every OXP which relies on certain things being at certain absolute positions.
As far as I can see, there's no easy fix to this that would keep all absolute positions the same as before. However, I think it is possible to change the code in such a way as to ensure all -future- absolute positions will always be the same. However this potential fix would also mean that everything is going to move about on every platform between now and a mythical release including this fix - and that would break every OXP which relies on certain things being at certain absolute positions.
The glass is twice as big as it needs to be.
Hmmm, I suppose the best thing to do for the moment is to steer clear of the abs system from within planetinfo.plist until the dust settles on this one...
edit Thargoid, it looks like the underlying random number generator is different between macs and the other platforms. If that's the case, I suspect the breakage is in GNUstep, which didn't manage to come up with an exact replica of the original. I suppose that since it's meant to come up with random numbers, it wouldn't have mattered too much if the numbers in question were different from the original ones.
edit Thargoid, it looks like the underlying random number generator is different between macs and the other platforms. If that's the case, I suspect the breakage is in GNUstep, which didn't manage to come up with an exact replica of the original. I suppose that since it's meant to come up with random numbers, it wouldn't have mattered too much if the numbers in question were different from the original ones.
Hey, free OXPs: farsun v1.05 & tty v0.5! :0)