17-08-2020, 12:15 PM
HBANZ | FUTSAL™
TL: DR - What is this?
In the past couple of weeks, we focused on developing a self-sustainable, 3 vs. 3, "dynasty" Futsal experience. We hope to finalize the code and launch the dedicated server by today evening, which will run back-to-back, winner-stays-on games on a Futsal map adapted for HBANZ users.
How does it work?
The Host Bot will automatically assemble teams of 3, with the winning team staying on. The losing team is automatically moved to spectators at the end of the match, being replaced by a team formed from the existing spectators. Since there are no captains, the aim is to provide fair playing time for all players. This means that the players at the top of the spectating "team" will be selected to play next. The room format will be a score limit of 2, and a time limit of 2 minutes.
Why Futsal?
As some of you already know, Futsal is a map played with a smaller ball. It not only rewards skillful maneuvering of the ball, but also accurate passing, shooting and strategic positioning. Goalkeeper quality is especially important, as clever clearing and 2 vs. 1 situations are critical. So if you are a keeper and often feel left out of the game, I guarantee that you will be much more engaged. As a result, the game feels a lot more fast-paced. Passing, blocking, clearing, reading the play and overall precision are very rewarding skills to have. High IQ is the name of the game.
What if there aren't enough players in the room?
The room will house around 10-12 players maximum, but in the event where there aren't enough players for a 3 vs. 3 game, the bot will switch to a 2 vs. 2 or 1 vs. 1 on a scaled-down version of the larger map. Games will continue until there are enough people for 3 vs. 3 again. So you may be moved to spectator if there are only 5 players in the room - but don't worry, as soon as one more joins you will be back in!
What if someone fills the room with multiple users?
There is a limit of 2 users per IP, which we hope will stop certain people from taking up space in the room. In the event that someone does manage to successfully introduce 12 players of their own to the server, it will be extremely difficult to maintain as users do get kicked for being AFK for too long when in-game. For regular players, you will receive a warning notification before being kicked from the room:
There is no function to stay in the room as AFK (i.e. "!afk"), and we do not intend to include this in the future.
What does the bot do?
Besides operating the room as described, the room/bot provides match performance ratings for individual players after a game has ended. The players are ranked and an MVP is identified. As of this post, all-time statistics are not recorded; however, by sending "stats" in the chat, users can see a detailed breakdown of how their rating was calculated and how well they performed in each aspect. The criteria and weightings are detailed below (note that all statistics are converted to display a figure out of 5). The maximum overall score is 5/5, which is very difficult to achieve as you need to have excelled in all of the following areas. Weighting out of 100 is in brackets for that category.
Attack
Defense
Skill
Penalties/Deductions
Defense
Skill
Penalties/Deductions
- Scoring (15/100) - This is the number of goals you have scored. As the score limit is just 2, it is either 0, 50 or 100.
- Assisting (10/100) - This is the number of assists you have made. As the score limit is just 2, it is either 0, 50 or 100.
- Dribbling (20/100) - This measures how involved you are in the game, by counting how many touches (or kicks) you have made. This is then compared with the total number of touches in the game from all players. For a 6-player game, this averages to around 16.7% per player. To get the full 20 points, you will need to have at least 20% of the total touches in the game.
- Passing (15/100) - To emphasize the importance of passing, this category is heavily weighted. This is a measure of how accurate your passing is, and is measured by counting the number of successful passes you have made to your teammates. A pass is detected if you have kicked or touched the ball which is then touched (and not necessarily kicked) by one of your teammates. Performing 50 passes in a game will get you the full rating in this criteria.
- Intercepting (15/100) - This measures how many passes from players in the opposing team you have intercepted (this includes touches, as this can alter the direction of the ball without having to kick it). Intercepting 50 passes will give you the total points for this category.
- Keeping (10/100) - Clean sheets are awarded on a team-basis. Covering the goal when the keeper is under pressure is as critical as being a full-time keeper, so we feel this should be a shared reward.
- Clutching (10/100) - Scoring a goal can be done with or without an assist. When scoring with an assist (i.e. the last two kicks were from you, most likely resulting from a wall kick) then this is considered a clutch goal. Scoring two of these will give you full points (you will also be rewarded for "Scoring").
- Forcing (10/100) - An assisted goal is typically when your teammate passes you the ball and you score. But there is another type - when an opponent concedes an own goal a a result of you kicking the ball into them or forcing them to push the ball in. A maximum of two of these can be scored per game (you will also be rewarded for "Scoring".
- Blocking (10/100) - Blocking is very important in opening the game and allowing the keeper to make comfortable clearances. We reward players for blocking, which is determined by the total amount of time one player is in contact with another. A "block" is defined when one player is between an opponent and the ball, thus blocking them from reaching the ball. The closest player to the ball will receive blocking time. Ten seconds per game will result in a full score.
- Winning (5/100) - Bonus points are awarded for scoring the winning goal. Of course, there is only one winning goal per match.
- Conceding (-10/100) - Conceding goals will result in a deduction of 5 points per goal (applied to the team).
- Own Goals (-10/100) - Self-explanatory, can be either forced or not. Each own goal will result in a deduction of 5 points (to the player only).
Notes on the above:
- The keen eye will spot that there are 120 points awarded across these measures when combined, which might cause the maximum overall should be 100. But this cannot the case as some categories are not mutually exclusive. For example, scoring goals can either be assisted by your teammate, a clutch, or a forced OG. Players will no be able to achieve all 3 at the same time. Because of this, "Clutching/Forcing" are combined in the detailed statistics view. Similarly, goal scorers cannot receive points for scoring and assisting at the same time. Taking this into account, the maximum is 100 points.
- Scores are combined in the groups and converted to a ranking out of 5 - similarly with the overall score. This is because there is no point showing 0/100, 50/100 or 100/100 for things like "Scoring" or "Assisting" when it can't be anything in between (since Futsal has a 2 goal limit)
- This performance system is not final and will likely be tweaked as we get real games happening (as it was very difficult to test with just two people or alone)
Fancy - what else can it do?
- The bot reports the score, game duration, possession and winning streak at the end of each game
- Overall stats are calculated as per above, with an MVP identified
- Goal speed is recorded at the time of passing the goal line, and not the speed the moment it left the player's "foot"
- As of now, the only command is "stats" - admins can be given a code in special circumstances to kick/ban players
What next?
We are hoping to further develop this if it becomes more popular. Your suggestions for improvements are welcome, so please feel free to tell us about any ideas you have. For now, we have the following notes in mind for future updates, but this list is not final nor comprehensive:
- A captain system for 3v3 games. How this will work is if there are 6 players or less in the server, the bot will randomly generate 1v1, 2v2 or 3v3 games depending on the number of players. If there are 7+ players, the top players in each team will become captains (unless they already have 3 players) and will be able to choose their team. As the game mode will remain "dynasty", this new team will have a chance of picking a stronger team to try to take down the winners.
- For player selection, captains will be able to type the players name they wish to choose, or their ID. The name option will be "smart" so that if one makes a typo or is unable to enter specific special character(s) it should detect the closest match to what was input. This is still under testing.
- Player ratings will be updated. They were a bit too detailed. Yesterday I've worked on grouping these into Attack, Defense and Skill. I've adjusted the weightings and formulas for each to hopefully give a better overall calculation. The usual penalties for own goals will still apply. As before, I would like to test this in real situations and tweak it as we go.
- All games are automatically saved, but we will add the !save feature so the archives are not spammed and will try to include Kuma's sexy heatmap implementation as well if you have not yet seen that.
- Updated map aesthetics to give it a sleeker look and feel, along with nicer announcements for goals, stats, etc. from the Bot.
- If Futsal becomes more popular, we will implement user authentication which will allow for better all-time statistics tracking integrated with HBANZ.org
- Ability to see detailed match statistics for other players (e.g. "!stats winky")
- Goalkeeper detection and therefore clean sheet detection to be recorded as per point #6
- Goal net physics - a nice to have but not sure as this is difficult to implement with smaller ball radius
- Increasing room size (given server limitations) to around 14 or so. Game style will remaining 2 mins, 2 goals to avoid long waiting times especially with the captain system. Happy to change this according to demand/feedback.
- I have taken a short break from the Futsal bot and worked on something else - a Rambo Bot! This is currently complete (thanks to those who beta tested it) and will be hosted 24/7 starting tomorrow. For now it will replace one of the pub rooms. If this is an issue we will get a separate server to host Futsal and Rambo.
- Finally, I would like to test VPS hosting on Singapore-hosted servers. If the ping is decent for Australia, it will provide much more traffic from other countries as we have seen from the Singapore servers. If this is the case, I will get another dedicated server to host 2 more rooms specifically for Futsal, one being 3v3 and possible another for 4v4. If not, we will stick to 100% Australian free-range servers. Note that separate sever will mean that the current 4 rooms will be unaffected.
Special thanks
Special thanks to @Kuma, who has kindly shared his wealth of knowledge and experience with me while developing the other Host Bots for HBANZ. I have been bombarding him constantly with questions over the past 12 days, so his patience will always be appreciated!
Unfortunately due to my ping, I will not be able to play competitively on these servers. But will try to spectate and definitely join for a few games whenever I return. I hope you will give this game style and map a chance as I have been playing it myself regularly in international servers and it has been very entertaining so far!
Here is a save from Fonk: