Se si tenta di programmare una simulazione di gioco in base al modo in cui funziona il mondo reale, si verificheranno alcuni grossi problemi quando si tratta della quantità di informazioni che un computer può elaborare.
Prendiamo ad esempio la pagina seguente che è un tentativo di calcolare quanti atomi ci sono in un granello di sabbia.
http://www.thenakedscientists.com/forum/index.php?topic=6447.0
Ho visto molti problemi come questo nello studio della chimica e della fisica e il numero ridicolmente alto che la persona in questa pagina è arrivata è nel parco di ciò che ho visto vari insegnanti e libri di testo. -> 78.000.000.000.000.000.000.000
Anche se questo è lontano e si rimuovono 6 di questi zero, si avrà comunque un numero troppo grande per il computer medio da gestire a velocità interattive. Soprattutto quando ci sono migliaia di queste transazioni che si svolgono in un dato momento.
Come potremmo eventualmente calcolare e tracciare lo slancio, le posizioni, la velocità, le accelerazioni istantanee, le cariche sul campo, ecc. Di ogni atomo in ogni granello di sabbia su una spiaggia se solo un granello ha 78.000.000.000.000.000.000.000 di componenti individuali. (O ancora di più se si considerano i componenti subatomici).
Una volta ho letto un documento di programmazione grafica nVidia che affermava qualcosa di simile al seguente.
Fai ciò che dà la migliore approssimazione dell'aspetto, perché nessuno sarà in grado di dire se la simulazione non è accurata al 100%. L'efficienza deve essere presa in considerazione.
Lo stesso vale per ogni tipo di simulazione del gioco anche se non ha a che fare con la grafica. Probabilmente dovresti fare solo il minimo indispensabile per far funzionare le cose. Se vai tutto qui, seppellirai il computer in una complessità che non può gestire.
Dovrai anche scrivere e provare e mantenere il codice di questa complessità.
Potresti dare numeri di serie univoci a ogni unità di valuta, ma utilizzerai tutte le risorse del computer solo su questo dettaglio.
Forse un modo migliore per gestirlo è quello di fornire solo 1 identificativo univoco per ogni transazione.
Quindi il giocatore # 1 paga il giocatore # 2 $ 1000000.
Se dai a ogni dollaro un identificativo univoco, i computer di molte persone inizieranno ad avere grossi problemi, per non parlare di tutto il traffico di rete e del ritardo che ciò causerà.
Oppure puoi semplicemente creare un valore che rappresenta l'intera transazione.
uint transferFunds_Player1ToPlayer2 = 1000000;
Anche una calcolatrice tascabile di 20 anni può gestire qualcosa del genere.