Pactwarden
In ontwikkelingRealtime multiplayer auto-battler in pixel art: als summoner roep je wezens op in drie lanes, die zelf vechten tot ze de ward van de tegenstander bereiken. 1v1 of 2v2, met bots.
Alpha-screenshots: het spel is nog in ontwikkeling, dus graphics en balans kunnen nog veranderen.
- 20ticks per seconde, berekend op de server
- 8wezens, elk met een eigen rol
- 4spelers per potje, aangevuld met bots
- 30 som terug te komen na een verbroken verbinding
Over het project
Pactwarden is een realtime multiplayer auto-battler die je in de browser speelt. Je bent een summoner: je mana loopt vanzelf op en daarmee roep je wezens op in een van de drie lanes. Die lopen vooruit en vechten zelf; bereiken ze de ward van de tegenstander, dan raken ze de summoners erachter.
Een team wint als alle summoners van de tegenpartij zijn gevallen. Na zes minuten wint het team met de meeste levenspunten over. Je speelt 1v1 of 2v2 en lege plekken vul je met bots.
Wat ik bouwde
- Een lobby met alle open spellen, live bijgewerkt; meedoen met een klik of met de pijltjestoetsen en Enter
- Een wachtkamer met twee teams, Dawn en Dusk: van plek wisselen, klaar melden, chatten, en bots toevoegen als host
- Acht wezens met eigen rollen: zwermen, vliegers, tanks, afstandsaanvallers en een kolos die recht op de ward afgaat
- Een bestiarium met de stats, eigenschappen en een tip per wezen, plus een matchup-tabel
- Opnieuw verbinden binnen 30 seconden na een reload of een verbroken verbinding; zolang stuurt een bot je summoner
- Een uitslagscherm met per summoner de opgeroepen wezens, de schade en de levenspunten die over zijn
Hoe het werkt
De server beslist
De simulatie draait op de server, twintig keer per seconde, en stuurt compacte snapshots naar de spelers. De client tekent net iets achter de laatste snapshot en interpoleert daartussen, zodat alles vloeiend beweegt, ook als een pakketje wat later binnenkomt.
Een matchup-tabel die zichzelf uitrekent
Wie wint van wie is niet met de hand ingevuld: een script laat elk paar wezens bij gelijke mana tegen elkaar vechten in de echte simulatie en schrijft de uitkomst weg. Een test faalt als de tabel niet meer klopt met de stats, dus na elke balanswijziging wordt hij opnieuw berekend.
Niets van een CDN
Een script bouwt de sprites tot één atlas, alle geluid wordt met WebAudio in de browser opgewekt en de lettertypes worden zelf gehost. Het spel laadt niets van buitenaf.
Eén container
Een multistage Docker-build draait de tests en stopt bij een fout. Het eindimage bevat alleen Node en de bundel, draait als gewone gebruiker en heeft een health check. HTTP en de WebSocket delen één poort, dus achter een reverse proxy is één host genoeg.
Mitchel van Emmerik