possible jump changes #950
Replies: 2 comments
-
@hemberger I tinkered with the spreadsheet a bit and I think I see what you saw when this came up before. If we do this: TURNS_JUMP_MINIMUM = 8 $maxMisjump = max(2, IRound(($distance - $turnCost) * MISJUMP_DISTANCE_DIFF_FACTOR / (1 + $this->getLevelID() * MISJUMP_LEVEL_FACTOR))); It may work out rather well. One side affect is jump traders would be able to operate a 10 distance route at 90% of the turn cost versus 100% at distance 10 before. They would also achieve slightly better efficiency in the 11-15 distance range. Hardly game breaking but it would be a slight buff to jump traders. |
Beta Was this translation helpful? Give feedback.
-
I thought about this, and this is the wrong way to solve the problem. Think what you need is a way to configure the jump distance on per game basis rather than using a Static variable as on a diffeent kind of map, the issues you have would not exist. Though I conceed this would add one extra DB call to jump calculation over using a constant. |
Beta Was this translation helpful? Give feedback.
-
I'm compiling some notes re: possible jump changes to possibly change how maps can be designed. Idea being we can possibly introduce a minimum miss factor into jump drives, which is a good rap on the snout with the nerf stick, and then possibly shorten the minimum jump cost to even it back out. This would allow us to spend less time and effort searching for and checking for jumpable paths through possible minefields. It would also give map designers a little more freedom to work without having to worry about things being within 5 sectors of a warp.
Currently we are at minimum 10 turn cost for a jump. Jumping exactly 10 sectors has no possibility of a miss. Jumping further than 10 always has a possibility no matter what. The miss change grows with distance and shrinks with player level. Jump efficiency is level dependent. A level 1 player saves about 15% of the turn cost of travel, on average, by using a jump drive. A level 50 player saves about 25%.
Jump traders also stand to gain or lose in this. If efficiency changes much it will affect them drastically.
There is a google sheet linked on the wiki which has a current spreadsheet for jump calculations: https://docs.google.com/spreadsheets/d/1fjNYXspvtVpIiEX6qyoZOVkotHEv4JrLgS6WJAMhi34/edit#gid=2
The meat of the jump math is found at:
lib\Default\AbstractSmrPlayer.class.php -> public function getJumpInfo(SmrSector $targetSector)
Turn cost of jumping:
$turnCost = max(TURNS_JUMP_MINIMUM, IRound($distance * TURNS_PER_JUMP_DISTANCE));
Uses two constants defined in htdocs\config.php:
TURNS_JUMP_MINIMUM = 10
TURNS_PER_JUMP_DISTANCE = 0.65
Maximum missed jump in number of sectors:
$maxMisjump = max(0, IRound(($distance - $turnCost) * MISJUMP_DISTANCE_DIFF_FACTOR / (1 + $this->getLevelID() * MISJUMP_LEVEL_FACTOR)));
Uses two constants defined in htdocs\config.php:
MISJUMP_DISTANCE_DIFF_FACTOR = 1.2
MISJUMP_LEVEL_FACTOR = 0.2
[lingering Q: how much maxmisjump is required to miss through a warp? must a warp miss consume at least 5 maxmisjump? or does it merely count as 1? and does it round the cost? IIRC the answers are 5, yes, no, and no. But I have not verified this in code]
getJumpInfo is called from engine\Default\sector_jump_processing.php
There is a possible bug where you cannot make a jump computation while landed on a planet. This likely needs a change to permit the calculate button to be landed. And if that reasoning holds the jump button must be disabled or trapped while landed on a planet.
Beta Was this translation helpful? Give feedback.
All reactions