Логистика в Dyson Sphere Program имела ряд проблема. На уровне игрока они формулировались просто: «Почему мой корабль везёт ресурс на станцию А, если станция Б – ближе?». А вот на уровне кода всё было гораздо сложнее, как рассказали разработчики.
Ранее станции логистики работали за счёт простого соединения по механизму спрос-предложение. Каждая такая пара станций содержала информацию о следующем получателе, отправителе и транспортируемом ресурсе. Проблема заключалась в том, что для этого каждой станции нужно было постоянно проверять спрос и предложение всех остальных станций во вселенной, записывая это во внутренние маршруты. Таким образом, 10 станций с запросом железной руды и 100 станций, где есть железная руда, образовывали 1000 транспортных линий, и это число лишь росло с каждой новой станцией, запутывая всю систему и увеличивая нагрузку на процессор.
Разработчики оптимизировали эту систему, введя 5 измерений-приоритетов, проверяющихся в порядке очереди:
- Маршруты между конкретными станциями.
- Планетарные маршруты.
- Маршруты между звёздными системами.
- Объединение станций по группам
- Регулярное создание соединений для предметов, не имеющих каких-либо маршрутов.
Но даже эта система изначально работала не так, как задумывалась, поэтому разработчикам пришлось немного отступить от правила жесткого приоритета и в ряде случаев позволить измерениям менять свои приоритеты друг над другом.
Новая система логистики, которая появилась в игре, должна стать более удобной и понятной для игроков.