Disclaimer: il mio tipo di gioco preferito in assoluto è basato sul testo e lo scrivo come programmatore di lunga data di un vecchio MUD.
Penso che una domanda importante che devi porti sia questa: hai bisogno di discussioni? Capisco che un gioco grafico abbia probabilmente un maggiore utilizzo di MT ma penso che dipenda anche dalla meccanica del gioco. (Potrebbe anche valere la pena considerare che con GPU, CPU e tutte le altre risorse che abbiamo oggi sono molto più potenti, il che rende le tue preoccupazioni di risorse tanto problematiche come potrebbero sembrare; in effetti 100 oggetti sono praticamente zero). Dipende anche da come definisci "tutti i personaggi contemporaneamente". Intendi allo stesso tempo? Non lo avrai, come giustamente sottolinea Peter, quindi tutto in una volta è irrilevante in senso letterale; sembra solo così.
Supponendo che andrai con i thread: sicuramente non dovresti considerare 100 thread (e non ho nemmeno intenzione di capire se è troppo per la tua CPU o no; mi riferisco solo alle complicazioni e alla praticità di esso).
Ma ricorda questo: il threading multiplo non è facile (come sottolinea Philipp) e ha molti problemi. Altri hanno molta più esperienza (di gran lunga) di me con MT ma direi che anche loro suggerirebbero la stessa cosa (anche se sarebbero più capaci di me, specialmente senza pratica da parte mia).
Alcuni sostengono che non sono d'accordo sul fatto che i thread non siano utili e alcuni sostengono che ogni oggetto dovrebbe avere un thread. Ma (e di nuovo questo è tutto il testo, ma anche se si considera più di un thread non è necessario - e non si dovrebbe - considerarlo per ogni oggetto) poiché Philipp sottolinea che i giochi tendono a scorrere tra gli elenchi. Ma non è solo (come suggerisce anche se mi rendo conto che sta solo rispondendo ai tuoi parametri di così pochi oggetti) per così pochi oggetti. Nel MUD sono un programmatore perché abbiamo le seguenti (e questa non è tutta l'attività che si svolge in tempo reale, quindi tienilo a mente):
(Il numero di istanze varia ovviamente - superiore e inferiore)
Mobiles (NPC cioè personaggio non giocante): 2614; prototipi: 1360 Oggetti: 4457; prototipi: 2281 sale: 7983; prototipi: 7983. Ogni stanza ha la sua istanza di solito ma abbiamo anche stanze dinamiche, vale a dire stanze all'interno di una stanza; o stanze all'interno di un cellulare, ad esempio lo stomaco di un drago; o stanze negli oggetti, ad esempio si inserisce un oggetto magico). Tieni presente che queste stanze dinamiche esistono per oggetto / stanza / mobile che le ha effettivamente definite. Sì, questo è molto simile a quello di World of Warcraft (non lo gioco ma un amico mi ha fatto giocare quando avevo una macchina Windows, per un po ') idea di istanze tranne che ce l'avevamo molto prima che esistesse World of Warcraft.
Script: 868 (attualmente) (stranamente il nostro comando statistico non mostra quanti prototipi abbiamo, quindi lo aggiungerò). Tutti questi sono tenuti in aree / zone e ne abbiamo 103. Abbiamo anche procedure speciali che si svolgono in momenti diversi. Abbiamo anche altri eventi. Quindi abbiamo anche prese collegate. I cellulari si muovono, svolgono diverse attività (oltre al combattimento), interagiscono con i giocatori e così via. (Così fanno altri tipi di entità).
Come gestiamo tutto questo senza alcun ritardo?
socket: select (), code (input, output, eventi, altro), buffer (input, output, altro), ecc. Vengono sottoposti a polling 10 volte al secondo.
personaggi, oggetti, stanze, combattimenti, tutto: tutto in un ciclo centrale su impulsi diversi.
Inoltre (la mia implementazione basata sulla discussione tra il fondatore / altro programmatore e me stesso) disponiamo di un ampio monitoraggio dell'elenco collegato e di test di validità del puntatore e abbiamo risorse gratuite più che sufficienti se ne avessimo effettivamente bisogno. Tutto questo (tranne che abbiamo ampliato il mondo) esisteva anni fa quando c'erano meno RAM, potenza della CPU, spazio sul disco rigido, ecc. E infatti anche allora non abbiamo avuto problemi. Nei loop descritti (gli script lo causano così come i ripristini / ripopolazioni delle aree come altre cose) mostri, oggetti (oggetti) e altre cose vengono creati, liberati e così via. Anche le connessioni vengono accettate, eseguite il polling e tutto ciò che ci si aspetterebbe.