-
Notifications
You must be signed in to change notification settings - Fork 0
Game Loop Overview
Main loop är den övergrippande process som hanterar de olika events, state changes och dylikt som behövs för att få till ett turn based spel. Denna loop är främst event baserad där olika event förändrar game statusen.
Word | Description |
---|---|
Game | Från början av spelet till någon förlorar/vinner |
Round | En omgång av x antal olika turns |
Turn | En entity får göra en action, ex. spelare som får använda ett kort. |
Setting | Value |
---|---|
GameMode | PvP / PvE |
Player | One / Two |
Render View | Left / Right / Bottom |
Status | En jädra massa game states (event baserat) |
Name | Note |
---|---|
GameStarts | När spelet börjar |
GameRestarts | Spelet startar om |
GameOver | Någon vann/förlorade |
WaitingForRoundStartsEvent | När spelarna får flytta runt sina kort |
RoundStarts | En ny runda börjar |
RoundEnds | Rundan är över |
TurnStarts | En ny turn börjar |
TurnProcess | Hanterar entity Actions |
TurnEnds | Turn är över |
InBetweenTurns | Event mellan turns för att hantera game state |
Denna del är mer linjär en själva Game loopen som är event baserad.
Här så börjar man med att först leta rätt på nästa entity som ska spela. Eftersom en turn endast består av en Entity Action så får man hålla reda på föregående entities ID så att man alltid tar nästa entity. Eftersom vi har både PvP och PvE så skiljer sig logiken lite mellan varandra men i PvE så är det alltid att man först tittar på spelare 1 -> spelare 2 -> Boss. Så att både spelare 1 och spelare 2 måste ha spelat 1 gång innan bossen får göra sin action.
Det kan förekomma att t.ex. spelare 2 inte har något kort att spela och då kommer det att bli spelare 1 -> Boss, men en spelare måste alltid ha gjort en Action innan bossen får göra sitt drag.
I PvP så är det alltid spelare 1 -> spelare 2 i en loop till ingen spelare har ett drag kvar. Om en runda har börjat så kör man till korten utlagda är ospelbara (borta eller inte spelbara). Exempelvis om spelare 1 bara har 1 kort och spelare 2 har 5 så kommer spelare 2 köra 4 gånger utan att spelare 1 får göra något.
Det finns också funktionalitet för att reagera på en action. Exempelvis när en spelare skadar någon så ska vi uppdatera deras attribut, det kan även vara så att vi vill logga vad som har hänt och andra funktioner.