top of page
Search
  • franzkohout

Architecture Update for Kingdoms Blood&Steel

Kingdoms is like a huge puzzle and I'm trying to put all the pieces together, but before that I have to figure out how many there are.


While working on the concept for phase 1 I realized that there are way more parts to it than I first thought. To get the whole thing configuarable everything has to fit nicely together. In order to prove this idea I created a Java project and prototyped the idea. Through this process the concept grew significantly and I learned a lot. I also got a good overview on many architectural problems I might face later on. But (at least in the prototype) I got it working and now I can confidently tell you about the targeted realization. But before I go into detail I have to talk about the "phases".


 

Blood&Steel


The first idea for phase 1 was a gamemode where multiple teams can fight over the control of all capture points inside of an arena, but this idea changed while I was prototyping it. To only focus on a 'conquest' mode would have been a waste of time, so I also created features like singleplayer arenas (each player against the others), different objectives (player scores, player kills, team scores), rounds with multiple stages. Teams and players can now also have indiviual objectives, leading to endless possibilities.


All of these changes made me come to the conclusion that Phase 1 isn't acutally a "ancestor" for what Kingdoms Classic will become. Instead it is a completly standalone concept. I don't think that I can use many ideas out of it. That doesn't mean that it won't help me with Kingdoms Classic. I do believe that while I figure out what B&S is I will also better understand what Classic is.


Now that "Phase 1" isn't accurate anymore I gave it the name "Blood&Steel" (short "B&S"). From now on I will refere it by that name. If you have any ideas for a better name let me know in the comments, I might rename it.


 

Architecture


The general architecture of Blood&Steel is fairly simple and can be explained in a few sentences, the actual software architecture on the other hand is way more complexe. Simply put: A arena (comparable to a match) can have multiple rounds. After all rounds were played and the last round ends, the player/team that has won the most rounds wins. Every round can have multiple stages, offering the possibility to have progression in them. For more details to stages go to 'Linear Staging'. The stages contain the information on what the teams/players have to do. If all objectives of a team/player are reached the stage ends, starting the next one. When there is no next stage the next round is called.


 

Arena


Currently there are three types of arenas (Solo Arena, Team Arena, Dual Team Arena). For now they are differentiated but I'll try to figure out how to combine team rounds and solo rounds. I'm not sure on the internal structure for that.


The following image shows the combinations for every feature.

Solo Arena


In Solo Arenas players fight for themselves, trying to win the match by reaching their own objectives. Players are not supposed to cooperate with other players and should try to stop the others from winning.


Team Arena


Team Arenas can have multiple teams (more than two), each team competing with the others.


Dual Team Arena


Dual Team Arenas are a subtype of Team Arenas, limiting the arena to only two teams. This subtype is necessary for 'Linear Staging', read more about it further down.



Rounds


Single Stage Round


Single Stage rounds are "normal" rounds without any progression in them. Players/teams will fight till one of them reaches all their goals.


Linear Staging


Linear Staging Rounds can have multiple stages, giving the teams/players the possibility to progress through the rounds.


Eg. There are two teams (team 'red' and team 'blue'), and three stages. Stage 2 is the default stage, here starts the match. If stage 2 is won by team 'red' stage 1 starts, if it's won by 'blue' stage 3 starts. If stage 1 is won by 'red' the match ends and team 'red' wins.


To shorten this blog entry I will reduce everything to the most important information from here on! :D For more/detailed information ask me in the comments!


Stages


Stages handle the objectives of the teams/players. The are differentitated by Team- and SoloStages.


Solo Mono Stage


A single player stage where all players have the same objectives.


Solo Poly Stage


Players have different objectives.


Team Mono Stage


In Team Mono Stages all teams have the same objectives. Giving the opportunity for conquest arenas.


Team Poly Stage


Teams have different objectives.



Objectives


Player Score Objective


Players have to reach the targeted score points (on the Scoreboard).


Player Kill Objective


Player have to kill the targeted amount of players.


Capture Objective


Players/Teams have to capture the specified capture point.


Team Score Objective


Teams have to reach the targeted score points (all team players score points combined).


Configuration example


A configuration for a simple two team conquest mode could look like this:

{
    arenaType: BasicConquest,
    teams: [
        "Red Team",
        "Blue Team"
    ],
    rounds: [
        {
            roundType: SingleStageRound,
            stages: [
                {
                    stageType: TeamMonoStage,
                    objectives: [
                        {
                            objectiveType: CaptureObjective,
                            targetID: 0
                        },
                        {
                            objectiveType: CaptureObjective,
                            targetID: 1
                        },
                        {
                            objectiveType: CaptureObjective,
                            targetID: 2
                        },
                        {
                            objectiveType: CaptureObjective,
                            targetID: 3
                        },
                        {
                            objectiveType: CaptureObjective,
                            targetID: 4
                        }
                    ]
                }
            ]
        }
    ]
}

This could be saved in a file and then be loaded on a server when creating a arena. But this is just an example and I can't guarantee that I will look like this!


81 views1 comment
bottom of page