Tengo un concepto aproximado para un juego de comercio en mi cabeza y no puedo descifrar lo que parece ser matemática básica.
Mis ciudades/estaciones espaciales/puestos comerciales tendrán las siguientes reglas:
Entonces, la idea es que si X produce menos alimentos de los que consume, con el tiempo el precio de los alimentos aumenta y, cuando está casi vacío, se dispara. Mientras que Y es un productor neto, y el precio cae con el tiempo. Esto crea una oportunidad comercial Y -> X cuya rentabilidad depende de cuántas personas recorren la ruta; si muchas personas intercambian Y -> X, entonces los precios se igualan.
Para asegurarse de que los jugadores no se confabulen simplemente para acumular alimentos en las afueras de X, esperando hasta que los precios suban y luego vendiéndolos, los comerciantes NPC saltarían a las rutas comerciales más rentables para mantener las diferencias de precios y la demanda dentro de parámetros razonables.
He pensado en los tamaños de almacenamiento y cómo pueden variar los precios, pero todas las fórmulas que se me ocurren fallan en algunas pruebas simples. Por ejemplo, si el almacenamiento total de X es de 1000 unidades cuando llega el jugador, puede comprar 500, esperar a que suba el precio y luego venderlo nuevamente: obtener ganancias. Obviamente, eso no debería funcionar.
Intenté varias búsquedas tanto en Google como aquí y en Gamasutra y, aunque encontré algunas ideas, no encontré lo que me parece que debería ser una fórmula simple.
Cobra una tarifa por mover los artículos dentro y fuera del almacenamiento.
Cobra una tarifa de negociación por cada transacción.
En realidad, las personas ofrecen diferentes precios por las cosas. Si tiene 50 unidades de A por las que pagó 1000, no quiere vender 10 por 100, pierde dinero. Pero si pagó 100 por 15 unidades, estaría feliz de recibir 100 por 10. De todos modos, si cada vendedor tiene un precio mínimo aceptable diferente, entonces el precio total es diferente. Entonces, si compras 500 unidades, el precio es más alto que si compras 5 unidades. Porque usted paga el precio de 5 unidades por las primeras 5 unidades y luego precios más altos por más unidades.
Puede hacer que esto funcione mediante el uso de un for
ciclo con su función de fijación de precios en el que fija el precio de cada unidad individualmente, o puede promediar los precios. El ciclo es más flexible y preciso, pero el promedio es más simple.
Price(500 of 1000) = 500 * (Price(at 1000) + Price(at 500)) / 2
o más generalmente
Esto funcionará mejor si su función de precio es lineal. Si es algo más, es posible que necesite matemáticas más avanzadas que un simple promedio aritmético.
Usted está comprando y vendiendo a propietarios de almacenes. No quieren venderte a los mismos precios a los que compran. Entonces compran a un precio y venden a otro. La diferencia es su margen o beneficio. Así que cree un factor de margen, por ejemplo, 1.1. Divida el precio de venta por el factor de margen para obtener el precio de compra o multiplique el precio de compra por el factor de margen para obtener el precio de venta.
Si compra y luego vende inmediatamente cualquier cosa, siempre perderá dinero de esta manera.
Lo que usted describe es una realidad clave de los negocios. Si está dispuesto a mantener el inventario correcto, obtendrá una ganancia. Lo que describes suena como lo que se llama "arrinconar el mercado". Usted compra todo el mercado, espera a que la demanda se dispare y luego obtiene ganancias. ¡Incluso si no domina completamente el mercado, le están pagando por sus esfuerzos!
La verdadera pregunta es qué hace un pueblo cuando el jugador Moneybags llega e intenta comprar la mitad de la comida. ¿Qué significa eso para cada persona en la ciudad? ¿Están vendiendo la comida que necesitan para el invierno? Si es así, los precios pueden dispararse cuando la nieve comience a caer. ¿O están vendiendo un excedente que de otro modo se habría podrido?
"Por ejemplo, si el almacenamiento total de X es de 1000 unidades cuando llega el jugador, puede comprar 500, esperar a que suba el precio y luego venderlo nuevamente: obtener ganancias. Obviamente, eso no debería funcionar".
Esta parte de tu pregunta parece bastante fácil:
1) El precio cuando llega el jugador es el precio de equilibrio, cuando hay 1000 unidades. Si compra 1 unidad, debe calcularse un nuevo precio de equilibrio. Si trata de comprar 500 unidades, repita este procedimiento 500 veces, cada unidad más y más cara. (Uso muy pesado del procesador, lo sé, puede probar cada ex 10 unidades más o menos) [No sé cuáles son sus fórmulas iniciales para calcular el precio de equilibrio, por lo que no puedo hacer ajustes de ninguna manera razonable]
2) Menos procesador pesado: en el mercado en cualquier momento solo se ofrece una parte de los productos, digamos 1/20. Esta es la cantidad máxima que el jugador puede comprar en cualquier turno: siguiente turno, siguiente precio
La parte difícil: no existe una fórmula fácil para un buen algoritmo para acumular cosas para los próximos turnos de una ciudad. Todo está basado en la expectativa y en la anticipación de las acciones de otros agentes.
(¿quieres uno horrible, simple?)
Zxyrra
Tomás
Snowlockk
Tomás
Joe blogs