When using a lot of random generation in a game, making things variable enough that you can play over and over again, it's easy to start thinking in terms of making something that you can play forever. Such bold dream, the eternity-game. But nobody's actually going to do it because they die, or even if they dodge that and achieve immortality somehow they can probably find something better to do tbh. The ideal is nevertheless a useful simplification because strategies for it also turn out to be pretty good ideas even if someone's just playing for a while. Aiming for an impossible ideal means trying to make something pretty good. But since it's impossible you do need to forget about it sometimes.
Testing Imbroglio and trying different possibilities there was always a question of whether you could go infinite; maybe some clever combination of weapons would exist that allows you to kill enemies faster than they spawn and heal up faster than they can hurt you. Even if not, you could definitely go quite long. How long did I want the game to potentially be? Of course the game has a finite state space; you can't go on encountering different situations forever; so something less than that seems good? (It is still pretty huge because that's just what happens if you multiply a bunch of times.) So I started thinking about putting in an ending to prevent it ever reaching a boring eternal loop. Simplest ending is just a score target, I'll do the simplest thing unless there's a good reason not to. This stops it looking like a magical "play forever" game because once you get to the maximum score there's no room to improve after that (though you can play it again anyway, same as anything). It is okay to not be for forever.
But then question is where to set this score target. If all I want to do is cut off infinite loops I could set it sufficiently high that nothing else can reach it. But then if that's something you can do, eventually enough people will probably do it and the score tables fill up with infinite loop boards, nothing else is good enough to show up. Plus they'll be pretty boring to play out for so long, maybe spend hours on one board, fully leveled up, just to demonstrate that it can keep going on. Testing endurance more than anything else. Might be more exciting to cut the tail off a bit sooner so more variety is possible. Fast builds that try to grab all the gems before the spawn rate gets too high. Builds that depend on diminishing resources, tenuously trying to stretch them just far enough to reach the target.
I wrote that it's useful to have guiding principles for a design even if they're not necessarily "right". In fact it doesn't even matter if they make sense at all, they can be wild irrational obsessions and still serve the function of pulling things together into a coherent form. So I decided to obsess over the number 4. I had a 4x4 square grid, 4 enemy types corresponding to 4 corners, how far can I take this numerology? Any time I had a question with an unknown numeric value I assumed it was probably 4. How many hit points do you have? How many copies of the same weapon are you allowed? What's the minimum number of steps to the next gem? How many kills does a weapon take to level up? How many characters? How many frames in an animation? I was prepared to use other numbers where necessary, but assuming 4 gave something to start with and see if I could make work. If something was bigger then maybe a multiple of 4 - so I ended up with 4 starting characters and 4 to unlock, 4x4 red weapons and 4x4 blue.
And like obviously this principle is nonsense! By any sensible idea of game balance or whatever, there's no way the right answer for all of these is simultaneously 4, that would be a massive coincidence. I'm not aiming to make the most balanced game, that would be a different guiding principle, instead I'm trying to make the game with the most 4s in it, and with that as my goal all the answers are coincidentally 4.
But the weird thing is that it's ended up no longer being nonsense because now it's a principle that others can use to understand the design, it makes the game readily comprehensible to players because they learn to expect 4s and then never have trouble remembering numeric rules. (Although, I saw one review claiming enemies spawn every 4 turns, which would have been nice but really they need to increase in frequency as you level up. However - the enemy waves are encoded in a 64(=4x4x4)x4 table of 4x4-digit strings so there you go.)
So I took weapons to have 4 levels, each requiring 4 kills. These numbers seemed reasonable playing it out; levels were accessible but not trivial, getting all the way to level four felt like a solid milestone. I tried other numbers, even a super fast-paced version where a single kill was enough to level up (felt inconsequential, they may as well just start at full strength), but these seemed to work well enough so I locked them in and started adjusting the rest of the game around them. So with 4x4 kills per weapon and 4x4 weapons that's 4^4 kills to fully level a board. Each gem heals two hits and each enemy might hit you once, so if we assume two enemies per gem you'll be fully leveled at 4^4/2 = 128 points. (In practice it's usually a bit later but this will do for an estimate.) It seems reasonable to let that be the midpoint, so the maximum score is 4^4=256. I tried to tune the enemy waves around these numbers; making it possible but fairly challenging to level everything / score 128, and tending towards impossibility at the point where you might be approaching 256.
Enemy waves are the least transparent part of the game. A bunch of people suggested showing more information about them, like a timer until the next enemy or whatever. But it seemed important for them to be fairly unpredictable since they're the source of chaos opposing your nice ordered board construction. A lone enemy is usually trivial to deal with so they have to sometimes come close enough together that you're dealing with groups, but if they keep coming that fast you'll quickly be overwhelmed, so they need to spawn at an irregular pace. Also sometimes they'll be an even number of spaces away and get the first hit, it's bad if this happens too often, so the irregular spawn delays need to be sometimes odd and sometimes even. So there can't be a simple display like that imagined "every 4 turns" clock, displaying a spawn forecast would be way too much extra information on the already-packed screen, simpler to keep it hidden. Very common suggestion has been to show the turn count, because regardless of specific details of wave patterns the general principle is that it's getting worse over time so you want to know how much time is passing. I tried it and it was deeply unpleasant. Extra piece of information taking up screen-space and changing every time you act so you're constantly noticing it, creates a sense of pressure, takes up space in your mind when really you don't need to know it, all you need to know is that spending extra turns is bad. Also it just becomes a very large number, I try to avoid large numbers to keep small ones feeling meaningful. Scoring 100 feels like less of a milestone when there's a number in the thousands nearby.
I think a nice thing about having a maximum score is it gives a clear goal to aim for. High score tables can be pretty discouraging for a lot of players, people see that someone got 50000 and think "I'll never get that, might as well not play". This doesn't make sense; nobody thinks they shouldn't go swimming just because they'll never compete in the Olympics; but somehow it is a reaction we are seeing with videogames. Or alternatively if someone's not looking at the top scores they might set a fairly low target for themselves based on what seems plausible within their current understanding of the possibilities, rather than challenging themselves to go deeper. Here I think the 256 goal is low enough not to be discouraging while still being high enough to demand a solid understanding of the game.
I wrote last year some thoughts about putting unlocks in the game; that's mostly still valid. I was having trouble managing the expectation that a game will never give you access to more than you can take in at once. I think as the game started to feel finished people became more willing to accept how it was as being how it was meant to be. There's a line you cross making a thing when it starts to feel self-consistent, then there's a lot more freedom to break conventions because what's there is strong enough there to establish new ones. Good place to be. I think maybe because of the rule complexity or the graphical style Imbroglio took longer to get there than I'm used to, I think the specific point where it really got there was when I put in the animations for damage/restoration/collection. Other games it's different things, never really know in advance what it's going to be just working at it and then one day the thing you're working on happens to be the critical piece and then suddenly it's alive.
I ended up setting 32/64/96/128 as goals to unlock 4 characters each with 4 weapons. This avoided the problem I was having with other unlock systems where people were feeling pressure at having new things before they'd fully understood the old things, because the focus is on the character and that is just one new thing. The new cards are very much de-emphasised, there's not even an announcement screen saying "well done have these new cards", they just quietly show up.