A downloadable game for Windows

Download NowName your own price

Chat Fight - An epic autobattler with Twitch Chat integration

What is it?

This is an arena army management strategy game, made in two weeks for Twitch Jam 2024 by Frib. Download it for free!

You can play it by yourself offline against one of the 12 AI opponents, or you can connect the game to your Twitch account and allow Twitch Chat to control one or both armies!

This game has a steep initial learning curve, but once you get the hang of it, it should be pretty straightforward to play. Mastering it is another story, as there's quite a lot of complexity and variety to keep every game fresh!

Extensive settings allow you to tailor the game to your needs and wants, to make it a fun experience for everyone involved!

Credits

Credits to Kenney for almost all of the 2D art and sound effects, Lexone's Unity Twitch Chat for Chat integration and the Twitch Unity plugin for channel integration. The font used in-game is Berenika. The in-game music was made mostly with EastWest Hollywood Fantasy Orchestra. The rest of the game was made from scratch during the 2 week Jam period.


TL;DR

Just play the game! Try it in single player and experiment! Or jump onto a Twitch stream and play as a chatter! Follow the instructions and you'll get the hang of it!

The one thing you must not do is change the settings related to Twitch integration. Keep chat enabled, keep polls disabled, keep channel points disabled. These features are untested and most likely broken, because there is currently no way to test the Twitch plugins with a test environment and the Twitch Jam staff was unfortunately unable to provide alternative ways to test this.

You may be able to play the game on my stream here if it is live: https://www.twitch.tv/fribbly

How to play

There are 5 playable gamemodes, of which 3 require a connection with Twitch:

  • Singleplayer vs. AI: Play against one of the 12 AI opponents, each with their own flavor.
  • AI vs. AI: Watch two AIs duke it out against each other!
  • Streamer vs. Chat: Play against Twitch Chat!
  • Chat vs. AI: Let Twitch Chat battle against an AI!
  • Chat vs. Chat: A silly gamemode where chat controls both armies at the same time. This gamemode makes no sense, which adds to the chaotic fun! Try to predict the winning teams, stack the odds with heroes, and more!

Human players control their team with buttons, while the AI plays automatically by itself.

Twitch Chat can cast votes by typing !Vote 1 through !Vote 5 in chat! Every round, a chatter can cast one vote per phase.


Structure of a round

The game is played in rounds. Each round, there are various phases that will allow you to manipulate an army.

Recruitment phase

During this phase, the big table in the middle will show 5 new potential recruits for each team. After choosing/voting for one of these units, they will enter your roster in the bottom row, pushing every other unit upwards one slot. The topmost units are then kicked out of the armies. This means that every unit will play for 5 rounds before being replaced.

AI opponents will choose units that best fit their personality, while Chat will choose the unit with the most votes. In case of a tie, the topmost of the tied units is chosen.

Army balance phase

During this phase, it is time to determine how many units are sent in each unit group. Every group will spawn 20% of the total unit amount by default, but every vote will increase the piece of the pie for that unit while diminishing the others. Got a great unit? Spawn more of them! Don't want a bad unit? Vote for others and there will be less of the one lacking votes!

AI opponents will balance their army based on their personality, with emphasis on their most favoured units. Chat will determine the composition based on all the votes; there is no winner-takes-all as every vote counts.

Betting phase

It may be possible to place bets on which team will win this round. This is only possible for Twitch Chat, and will not work in single player modes.

Choose a Hero unit

Hero units are like beefed up raidbosses of an existing unit. Every player can choose a hero unit from one of the 5 rows on their roster. Every Twitch Chatter can choose a hero as well, allowing for many Hero units to play at once, which the human and AI players can match in amount.

Heroes will persist and heal every round, as long as they don't die in battle. When one of your heroes is still alive, you cannot add a new one, and must wait until your current hero is dead. There currently is no easy way to see if your hero is still alive, but as a chatter you can try spawning a new one.

Battle phase

Now, the battle begins! The initial wave of units are spawned for each side, and they will meet each other in the middle. Every unit will have their own AI controlling it, responding to their surroundings and their equipment.

If there amount of units will exceed the global unit cap, each army is split up into waves of reinforcements. Once the unit count of an army drops below a quarter of the global unit cap, new units are brought in as reinforcements. Once all units are dead and no reinforcements are available anymore, the other team will score a win!

After this, the cycle continues with the recruitment phase, until a team has reached the required amount of victories.

Unit stats

Every unit consists of a combination of races, armor, and equipment. Combined, this will determine the stat block of that unit. There are many stats, which can make things quite intimidating for newer players. 



For example, in the recruitment phase, the big table in the middle shows the stats of the potential new recruits, while the table in the bottom left is a small overview of the current army of each team. We'll ignore the bottom left for now and go through the stats of the new recruits

  • Character icon - shows what this unit may look like in the battlefield. A visual representation, with a small number showing the unit tier (from 1 to 5). Their tier affects their weapon damage and shield damage reduction.
  • Health - their HP total. Once reduced to zero, they die.
  • Strength and Fortitude - Strength increases knockback and allows units to carry more weight before being slowed down. Fortitude increases knockback resistance and prevents units from being moved around a lot by others.
  • Knockback and Weight - Knockback is based on the strength and the weapon of a unit. More knockback = more push when attacking, which has both pros and cons. Weight makes units heavier, affecting how much they can be pushed, and maybe their movement speed if they are too heavy for their strength.
  • Speed and Range - Their movement speed. Faster units move faster, which has advantages and disadvantages, as they might rush in without backup. Range determines how far their weapons can reach. Some weapons shoot projectiles and have a longer range (generally above 3) while melee weapons are usually below 2.
  • Attack damage and Attack speed - Two very important stats. Attack damage determines how much damage each hit will deal before resistances, while attack speed determines how long it takes before they attack again. The transparent icon behind the numbers represents the damage type of the attacks: Slashing, piercing, blunt or magic.
  • Armor - The final four columns represent the armor against each damage type (slashing, piercing, blunt and magic). This stat is hard to understand without context, so here it is: Every attack will deal a minimum of 0.5 damage, regardless of how much is resisted. The number shown is how much raw damage a unit can take of a specific damage type while still reducing it to 0.5 damage. For example, a value of 0.5 shown means it doesn't resist anything, while a value of 5 means that an attack will have to deal more than 5 raw damage just to deal more than 0.5 effective damage. The progress bar in each cell shows a rough estimate of how much % damage reduction is applied on top of that, based on 100 incoming raw damage. In reality, a graph would be a curve, being more effective at resisting incoming damage closer to the displayed value, but it is a good indicator of how well the resistance scales.

Decision making

So, what makes a unit good? It depends on your team composition and the units your team is fighting. Generally speaking, bigger numbers are better, but keep an eye on what you're facing. If the enemy is fully tanked out with slow units, it's hard to break through them but kiting them with ranged units may be a good option, or try to find a damage type they are weak against. Is the enemy going hard on ranged? Try grabbing some flying units, they will harrass the backline if they can break through the frontline without being cut down out of the sky. Lots of mages making your life miserable? Get some demons or hellplate! Are they bashing your skull in with blunt two-handed weapons? Try to tank through the pain with some zombies or ghosts! Is an enemy unit just too strong? It'll disappear in 5 rounds anyway :D


Battle stats

The bottom left shows battle stats. It shows a quick overview of a unit's health and DPS with its damage type, but the next two columns show how much on damage average this unit has dealt and received, with the faded bar showing how much percent of the team's total damage it has dealt and received. Please note that the damage dealt is effective damage (after resistances), while the damage received shows the raw damage (before resistances). Units that show a lot more damage received than their healthbar have done a great job at tanking damage, due to high resistances or perhaps due to heals or other magic. The final column shows how many units are currently alive, and how many are dead.

Settings menu

While most settings are  self-explanatory, some of them may require additional context.

  • Identical draft pool - Every round, both teams get 5 new units to choose from. Enabling this option will make this draft the same for both teams. Not recommended when playing Chat vs Chat, as chat votes for both teams simultaneously.
  • Enable unit amount balancing phase - Allows teams to redistribute the pie, spawning more units of one type while reducing others. Disabling this will give each unit 20% of the total unit pool.
  • Enable heroes - Allows each team to add heroes to their roster. Disable this if you only want puny weakling units.
  • Speed up battles - Basically a fast mode, it will try to squeeze out more speedy gameplay if your PC and my shitty code allows it.
  • Automatic camera - The camera will start to move to active fights on its own periodically, if you don't interact with the camera yourself. Pretty much a requirement for AFK streams.
  • Show tutorials - shows the moving tutorial panels. May be helpful for chatters and for your first few playthroughs, but can be disabled.
  • Maximum amount of units active at once - Basically a global unit cap. For performance reasons, you may want to decrease or increase this number. On my PC, 400 is generally manageable with some instances where the speed reduces to 50% or 33% if there are big clumps of units all doing physics. If there are more units available than this number, the units will be put in reserve and spawn periodically.
  • Minimum amount of units per side - When player singleplayer or against AI, this basically decides each army's size. However, when playing with/against Chat, the viewer count or the vote count will determine how many units will spawn, if this is more than the minimum. So if you're a 10k Andy, you may be seeing battles with 10k units. But if you're a small streamer, this will allow for bigger battles even with fewer viewers.
  • Music volume and SFX volume - Pretty self-explanatory. Due to the battle sizes, SFX may explode a bit. While I have put some safeguards in place, you may still want to reduce the volume if you're talking/listening to others.
  • Army size is determined by viewers instead of votes - When enabled, the channel's viewer count will determine how many units each army has (if above the minimum). When disabled, it is based on the amount of votes. Bigger channels may want to use vote count, while smaller channels may want to use viewer count.
  • Allow betting - Every round, Twitch Chat can vote on who they think will win. The top voters will be shown in the bottom right leaderboard panel.
  • Show blood and bones - When disabled, units will not bleed on the floor and corpses will not dissolve into bones. May help performance and combat bitrate crunch for streamers.
  • Vote time in seconds - Each phase can have a vote timer if Chat is involved, or when doing unit balancing. This determines how much time is available every phase. You may want to increase it if you want chatters to have more time to think.
  • Maximum heroes active per side Basically a unit cap for heroes. If more heroes are available, it will pick this amount at random and will ignore the rest.
  • Game end limit - The game stops after this amount of rounds has been won by a team. When playing solo or for a short period of time, reduce this number to 10 or 20 or something. For longplays, feel free to increase this a lot more.

Twitch specific settings

Basically, do not touch these settings, unless you are willing to test if they work. But they will most likely not work

  • Connect to Twitch Chat - Required, because !voting via chat is the only functional way to interact with the game. Polls and predictions are somewhat implemented, but untested and most likely broken.
  • Use twitch polls - it would increase the player experience by a lot if this is working, but it most likely isn't. And you need affiliate or partner to enable this.
  • Allow predictions with channel points - if this were working, betting would be done with predictions using channel points, rather than polls. But both are most likely broken anyway.

So, keep them as-is. Twitch chat enabled, polls and predictions disabled. Thanks!

Download

Download NowName your own price

Click download now to get access to the following files:

Chat Fight - RC1.zip 107 MB

Leave a comment

Log in with itch.io to leave a comment.