6. Экономика в игре

Методика расчёта цен на товары в зависимости от типа системы.

Алгоритмы, лежащие в основе генерации цен на товары


Цены и доступность рыночных товаров, отображаемых на экране покупки грузов, рассчитываются с помощью нескольких формул, которые берут базовую стоимость каждого товара, смешивают её с парой экономических переменных и добавляют немного случайного поведения. В результате получается основа торговой системы, где умелые торговцы могут заработать состояние (в то время как остальные не могут получить даже небольшой доход).

Как рассчитываются эти цифры? Давайте начнем с формулы для цен, а затем перейдем к доступности.


Формула расчёта


Формула для цены товара price = (base_price + (random AND mask) + economy * economic_factor) * 4


Полученная цена в 10 раз больше отображаемой цены, поэтому мы можем показать её с одним десятичным знаком. Отдельные элементы в вычислении следующие:


- Базовая цена товара (base_price) находится в в таблице рыночных цен, так что для еды она равна 19, для текстиля – 20, для наркотиков – 235 и так далее.

- Каждый раз при прибытии в новую систему генерируется случайное число, это число обозначено как "random" в вышеприведенной формуле.

- Маска товара (mask) находится в таблице рыночных цен, так что для еды она равна &01, для текстиля – &03, для наркотиков – &78 и так далее.


Чем больше установленных битов в этой маске и чем выше их позиция в этом байте, тем больше колебания цены для этого товара, так как случайное число пересекается с маской. Таким образом, цены на наркотики будут сильно варьироваться, в то время как цены на еду и текстиль будут относительно стабильными.

- Экономика системы задается 3-битным значением от 0 до 7. А вот диапазон значений:


0 = Богатая промышленная

1 = Средняя промышленная

2 = Бедная промышленная

3 = В основном промышленная

4 = В основном сельскохозяйственная

5 = Богатая сельскохозяйственная

6 = Средняя сельскохозяйственная

7 = Бедная сельскохозяйственная


- Экономический фактор (economic_factor) хранится в таблице рыночных цен по адресу, для еды он равен -2, для текстиля – -1, для наркотиков – +8 и так далее. Отрицательные факторы показывают товары, которые, как правило, дешевле в сельскохозяйственных экономиках, но ближе к средним ценам в богатых промышленных, в то время как положительные факторы означают, что товары дороже в бедных сельскохозяйственных системах, чем в богатых промышленных. Например, еда дешевле в бедных сельскохозяйственных системах, а наркотики очень дорогие, и наоборот, в богатых промышленных системах наркотики ближе к средней цене, а еда дороже.


Доступность товаров на рынке


Доступность каждого товара также рассчитывается с помощью формулы.

quantity = (base_quantity + (random AND mask) - economy * economic_factor)

Если результат вышеупомянутого вычисления меньше 0, то доступное количество устанавливается равным 0. Полученная доступность сохраняется в таблице AVL.