Op het moment ben ik bezig met een programma dat informatie van gameservers moet kunnen halen (naam van de server, map, aantal spelers, spelers die er spelen, etc).
Iedere soort gameserver waar je informatie vandaan wil halen, moet je op een andere manier benaderen: als je informatie van een quake3 server wil krijgen, moet wat anders sturen als je bij een Half-Life server zou moeten. Ook de response die je krijgt van een server hangt af van het spel dat de server host.
Nu heb ik dit tijdelijk opgelost door gewoon 1 class te maken die je kunt gebruiken om informatie van een server te kunnen halen. De class gebruikt vervolgens 2 andere classes om de regels van de server en de spelers op de server te kunnen opslaan. De basis class die alle informatie van de server haalt, heeft bepaalde methods. Zo gebruik ik 1 methode om alle basis informatie van een server te halen, 1 methode voor de regels en 1 voor de spelers (bij Half-Life moet je 3x een packetje sturen naar de server: voor de basis info, spelers en regels).
Wat ik naar de server moet sturen en wat ik met de respons van de server moet gaan doen hangt dus van het speltype af en ik gebruik op dit moment een if-else statement om te kijken welk spel je informatie vandaan wil halen. Dit kan misschien best als je maar 3 speltypes ondersteunt, maar als je dit wil uitbreiden, naar bijvoorbeeld 10 speltypes, dan zit het niet zo overzichterlijk in elkaar.
Zelf dacht ik aan een plugin voor ieder speltype. Voordeel: Iedereen zou eigelijk een spel zelf kunnen toevoegen zonder dat ze afhankelijk van mij zijn. Nadeel: Je krijgt X dll's voor X speltypes dat je support.
Hoe zouden jullie dit ontwerpen, zodat je in de toekomst op een nette/slimme manier nieuwe spellen zou kunnen toevoegen om te ondersteunen?
Iedere soort gameserver waar je informatie vandaan wil halen, moet je op een andere manier benaderen: als je informatie van een quake3 server wil krijgen, moet wat anders sturen als je bij een Half-Life server zou moeten. Ook de response die je krijgt van een server hangt af van het spel dat de server host.
Nu heb ik dit tijdelijk opgelost door gewoon 1 class te maken die je kunt gebruiken om informatie van een server te kunnen halen. De class gebruikt vervolgens 2 andere classes om de regels van de server en de spelers op de server te kunnen opslaan. De basis class die alle informatie van de server haalt, heeft bepaalde methods. Zo gebruik ik 1 methode om alle basis informatie van een server te halen, 1 methode voor de regels en 1 voor de spelers (bij Half-Life moet je 3x een packetje sturen naar de server: voor de basis info, spelers en regels).
Wat ik naar de server moet sturen en wat ik met de respons van de server moet gaan doen hangt dus van het speltype af en ik gebruik op dit moment een if-else statement om te kijken welk spel je informatie vandaan wil halen. Dit kan misschien best als je maar 3 speltypes ondersteunt, maar als je dit wil uitbreiden, naar bijvoorbeeld 10 speltypes, dan zit het niet zo overzichterlijk in elkaar.
Zelf dacht ik aan een plugin voor ieder speltype. Voordeel: Iedereen zou eigelijk een spel zelf kunnen toevoegen zonder dat ze afhankelijk van mij zijn. Nadeel: Je krijgt X dll's voor X speltypes dat je support.
Hoe zouden jullie dit ontwerpen, zodat je in de toekomst op een nette/slimme manier nieuwe spellen zou kunnen toevoegen om te ondersteunen?