Battles
Once enough credits have been accumulated at a base, both for the attacker and defender, a battle is scheduled at this location. While there can be multiple battles happening at once, only one can be scheduled at the same time. The battle gets a countdown ( more or less long depending on the size of the battle ), and if another battle gets scheduled while a previous one is on countdown, it goes into a waiting queue.
There are currently two kind of battles that can happen which differ in consequences:

Noncritical battles: the winner team of the battle receives a few thousand credits as a bonus

Critical battles: the defending team that loses a critical battle loses its base ( it goes into “destruction mode” and reduces the victory score for the team ).
The probability for a battle to be critical vs noncritical is based on the current victory score of the team. This is the main way to balance a match at the moment. If both teams have the same score, then both teams will get the same probability to get a critical battle. The formula in use is:
P = 0.25 + 2.0 * max ( ratio  0.5, 0.0 )
Where P is the probability for the battle to be critical ( in 01) and ratio is the defender team’s score divided by the sum of all team’s scores.
Ex.: Team A has a victory score of 1500. Team B has a victory score of 2000. A battle spawns for A to attack B’s base. The ratio will be 2000 / (2000 + 1500) = 0.57, hence P = 0.25 + 2.0 * (0. 57  0.5) = 0.39. So in this scenario there’s about a 40% chance that the battle will be critical.
The more imbalanced the team’s scores are, the higher the probability for the attacker team’s ( who is losing ) over a defender ( that is winning ) will be.
While this balancing mechanism is useful to always give the losing team a chance to come back, it can also be seen as “unfair”, as it’s based on a random number generator. In the future we’ll be working on addressing that and maybe removing the concept of noncritical battles.
Once a battle starts, two fleets are spawned roughly from the direction the closest bases ( other than the one at the battle’s) are located. They warp out, fly towards each others and engage.
The fleet compositions are randomized, but kept equal on both sides ( provided the amount of credits spent on that battle from each team is the same. If not, cheaper ships are used instead ). Bigger battles can spawn a carrier. The exact probabilities to spawn a ship of a certain category is proprtional to the ship’s cost, so there will always be more interceptors than bombers, bombers than corvettes, corvettes than destroyers, etc…
Not all the battle’s credits are all spent at once when the battle starts  only a part of it, roughly 50%. Once a team reaches below a certain threshold ( in terms of “battle odds” as displayed in the mission screen ), it spends more credits on a “reinforcement” wave. The second wave will be ~25%, the third wave ~12%, and so on, until the last wave which must contain at least a little squad of ships. Of course, if all credits have been spent, the reinforcement waves stop.
Battle “odds” are calculated based on two things: the credit’s worth of the ships still “alive” in this battle, added to the amount of credits in reserve for future waves. As previously, it’s just a matter of summing up each team’s credits worth and weighting them to find the odds:
Let’s say team A currently has 4000 credits worth of ships in the battle and 2500 credits in the reinforcement reserve. Team B is losing, has 3000 credits in the battle and 1800 in reserve. The odds are:
A = 4000 + 2500 = 6500
B = 3000 + 1800 = 4800
Total = 6500 + 4800 = 11300
A’s odds = 6500 / 11300 = 57%
B’s odds = 4800 / 11300 = 42%
To avoid battles dragging on forever, the battle stops when the odds fall below 25%. At that point, the battle stops and the remaining ships warp out, and the battle’s consequences ( noncritical = team credits bonus ; critical = loser’s base gets destroyed ) are played.
And that’s pretty much it for the game’s rules. I went a bit deeper than I originally wanted to, but hopefully it’s more clear now. If you want more details on some topics just let me know.