Ho un progetto per creare un gioco di strategia in tempo reale da zero. Sono ancora nella fase di pianificazione iniziale, ma ho programmato un po 'per vedere la meccanica.
So programmare. Ho anche una buona idea di come strutturerò le classi di gioco e l'intelligenza artificiale basata su regole per computer player.
Voglio sviluppare Dottrine, che daranno un comportamento specifico a un'unità specifica (ma che possono essere utilizzate su più unità contemporaneamente), come Scout, Segui la Missione, mantieni la Posizione (attacca qualsiasi nemico in avvicinamento o ritirati se sopraffatto) , eccetera...
Le dottrine si applicheranno solo alle unità, quindi avranno una prospettiva unitaria e non saranno consapevoli dell'intera sitatuazione della mappa.
L'intelligenza artificiale del computer analizzerà l'intera mappa visibile e deciderà su quale soctrina assegnare ciascuna unità in base a un altro insieme di regole.
Lo sto facendo in C # con OpenGL.
Per ora, non ho molto, solo alcune cose nei test prima di iniziare la mia concezione principale. Ho un ciclo di gioco in cui avverrà tutta l'elaborazione del gioco (dove chiamerò l'aggiornamento mouvement, combattimento, rendering, ecc., Uno dopo l'altro), viene chiamato molto spesso se l'evento Application.Idle.
Ora mi stavo chiedendo. Dal momento che ci saranno molte cose da elaborare nel gameloop, l'AI del computer e le Unità dovrebbero selezionare le loro azioni in quel ciclo o sarà troppo lento?
Se voglio che tutte le cose siano simultanee, dovrei creare un thread separato per l'IA del computer? O anche un thread separato per ogni unità?
Non ho molta esperienza con il multi-threading. Quale sarebbe l'approccio migliore per questo?