Hallo,
Al een hele tijd kom ik niet op een ideale oplossing voor een probleem in de architectuur van typische roll playing games zoals Monopoly, Risk,...
Het is duidelijk dat dit soort games zeer grafisch zijn en updates naar de GUI heel frequent gebeuren. Meestal maak ik gebruik van een MVC-structuur.
Wanneer het model een code aan het uitvoeren is die een lange verwerkingstijd eist doet het zich in een single-threaded applicatie zich vaak voor dat de gebruiker daardoor ook niets meer in de GUI kan doen. In een extreem geval bijvoorbeeld als er een aantal of enkel AI spelers in het spel zitten kan de gebruiker zelfs niet meer het scorebord bekijken vooraleer hij weer aan de beurt is of het spel gedaan is.
Dit kan natuurlijk verholpen door de applicatie op te bouwen met meerdere threads. Maar welke verwerking kan dan best in eenzelfde thread gebeuren. De volledige GUI kan bijvoorbeeld in 1 thread zitten en het Model in een andere thread wat bij dit soort grafische applicaties als gevolg heeft dat er continue gesynchroniseerd moet worden. Het hele model in 1 thread laten draaien geeft ook nog niet een volledige oplossing want als een AI speler aan zijn zet bezig is en de gebruiker vraagt bijvoorbeeld het scorebord op dan zal bij deze actie ook weer data van het model nodig zijn waardoor er toch nog gewacht moet worden totdat de AI speler gedaan heeft. Tevens zal na een zet volgens mij de uitvoering van een thread beëindigen en bij elke actie of start van een beurt weer een nieuwe thread aangemaakt moeten worden?
Ik heb al een aantal van dit soort applicaties gemaakt maar nooit was er een ideale oplossing die gemakkelijk te onderhouden is of uitbreidbaar is omwille van dit probleem. Daarom vraag ik jullie mening over het implementeren van dit soort applicaties.
Al een hele tijd kom ik niet op een ideale oplossing voor een probleem in de architectuur van typische roll playing games zoals Monopoly, Risk,...
Het is duidelijk dat dit soort games zeer grafisch zijn en updates naar de GUI heel frequent gebeuren. Meestal maak ik gebruik van een MVC-structuur.
Wanneer het model een code aan het uitvoeren is die een lange verwerkingstijd eist doet het zich in een single-threaded applicatie zich vaak voor dat de gebruiker daardoor ook niets meer in de GUI kan doen. In een extreem geval bijvoorbeeld als er een aantal of enkel AI spelers in het spel zitten kan de gebruiker zelfs niet meer het scorebord bekijken vooraleer hij weer aan de beurt is of het spel gedaan is.
Dit kan natuurlijk verholpen door de applicatie op te bouwen met meerdere threads. Maar welke verwerking kan dan best in eenzelfde thread gebeuren. De volledige GUI kan bijvoorbeeld in 1 thread zitten en het Model in een andere thread wat bij dit soort grafische applicaties als gevolg heeft dat er continue gesynchroniseerd moet worden. Het hele model in 1 thread laten draaien geeft ook nog niet een volledige oplossing want als een AI speler aan zijn zet bezig is en de gebruiker vraagt bijvoorbeeld het scorebord op dan zal bij deze actie ook weer data van het model nodig zijn waardoor er toch nog gewacht moet worden totdat de AI speler gedaan heeft. Tevens zal na een zet volgens mij de uitvoering van een thread beëindigen en bij elke actie of start van een beurt weer een nieuwe thread aangemaakt moeten worden?
Ik heb al een aantal van dit soort applicaties gemaakt maar nooit was er een ideale oplossing die gemakkelijk te onderhouden is of uitbreidbaar is omwille van dit probleem. Daarom vraag ik jullie mening over het implementeren van dit soort applicaties.