Si intentas programar una simulación de juego basada en cómo funciona el mundo real, te encontrarás con grandes problemas cuando se trata de cuánta información puede procesar una computadora.
Tomemos, por ejemplo, la siguiente página, que es un intento de calcular cuántos átomos hay en un grano de arena.
http://www.thenakedscientists.com/forum/index.php?topic=6447.0
He visto muchos problemas como este al estudiar química y física y el número ridículamente alto al que llegó la persona en esta página está en el estadio de lo que he visto inventar a varios maestros y libros de texto. -> 78 000 000 000 000 000 000
Incluso si esto está muy lejos y elimina 6 de esos ceros, aún tendrá un número que es demasiado grande para que la computadora promedio lo maneje a tasas interactivas. Especialmente cuando hay miles de estas transacciones que tienen lugar en un momento dado.
¿Cómo podríamos calcular y rastrear el momento, las posiciones, la velocidad, las aceleraciones instantáneas, las cargas de campo, etc., de cada átomo en cada grano de arena en una playa si solo un grano tiene 78 000 000 000 000 000 000 de componentes individuales? (O incluso más si considera los componentes subatómicos).
Una vez leí un documento de programación de gráficos nVidia que decía algo como lo siguiente.
Haga lo que ofrezca la mejor aproximación del aspecto, porque nadie realmente podrá saber si la simulación no es 100% precisa. La eficiencia debe ser tomada en consideración.
Lo mismo se aplica para todo tipo de simulación de juegos, incluso si no tiene que ver con los gráficos. Probablemente solo deberías hacer lo mínimo necesario para que las cosas funcionen. Si haces todo lo posible aquí, enterrarás la computadora en una complejidad que no puede manejar.
También tendrá que escribir e intentar mantener un código de esta complejidad.
Puede dar números de serie únicos a cada unidad de moneda, pero utilizará todos los recursos de la computadora solo con este detalle.
Quizás una mejor manera de manejar esto es dar solo 1 identificación única para cada transacción.
Entonces el jugador # 1 paga al jugador # 2 $ 1000000.
Si le da a cada dólar un identificador único, las computadoras de muchas personas comenzarán a tener grandes problemas, sin mencionar todo el tráfico de red y el retraso que esto causará.
O simplemente puede crear un valor que represente la transacción completa.
uint transferFunds_Player1ToPlayer2 = 1000000;
Incluso una calculadora de bolsillo de 20 años puede manejar algo como esto.