Halt!: PostmortemThanks to everyone who played my game! I appreciate all your comments.
Making a game like this was a bit risky, but it was worth it. I haven't done a lot of strategy games like this in Pyweek and my past attempts weren't very good. I'm happy that I was able to make one that I'm satisfied with and it looks like many of you liked it as well. It was also surprisingly time consuming; I spent a lot of time polishing the interface throughout the week and I was just trying to rush everything in in at the end. I'm glad that things worked out and I'm quite happy with how the interface turned out (which is often a weak point of mine). I might avoid strategy games next time though unless I have an idea I really want to try.
Tutorial (or lack of)
I made the mistake of leaving the tutorial to the very end. At least I probably should have done that before adding card variety. Usually when I'm making puzzle games, tutorial levels kind of come out naturally as you develop puzzle mechanics. However, with a strategy game like this with relatively complicated rules, it actually takes a substantial amount of time to develop a tutorial, and I realized at the end that I wouldn't have enough time. This was probably one of the biggest issues with the game and I was aware of it at submission time but I hope that wasn't a big deal for most of you.
Balancing and game mechanics
I think the main risk factor here was balancing. Balancing can really break a strategy game if done poorly. I don't typically have much time to playtest in Pyweeks, and I didn't expect (but at the same time I'm not surprised) to see that so many people thought that the game was hard. There was a few people who initially had issues with difficulty but eventually were able to get the hang of it, which makes me glad.
When I finished the game, the balancing actually felt ok to me but I think it was because I was very biased. In particular, a good strategy here is to get as many guards as you can in the beginning, and focus on solving crimes in a later stage. The reason why guards are so important is that basically you can only do actions where there are guards, and finding a body after 3-4 turns of the kill is not very useful. Moving around is also very important to find bodies if you have few guards. The first crime should probably be left unsolved unless you happen to be particularly lucky. And don't add new cards, turns out that that's not a good strategy even though I wanted it to be. So when I tested, I was already playing with a good strategy and it didn't feel like it was too hard. I need to be more careful with this, but it's kind of hard to avoid. Maybe having a tutorial that made the player to play out a bit of this strategy would have benefited balancing.
Someone also suggested adding a few more turns before the first kill, which I did consider when balancing and I think is a good idea in principle but I didn't really want to do it because hiring guards is the only "building up" action available (besides buying cards, which doesn't really help, and the Curfew card). This would make the early game kind of boring (not to mention confusing if there is no tutorial) and I didn't want to risk that. If I had more interesting actions to let the player build up, I would have probably done it. Anyway, there are a lot of interesting balancing questions here.
There's also a weird property in this game in that chance is a big deal. You could be lucky and catch the killer very early on because you happened to have a guard in a block and there were few people there. You could also randomly target a suspect and have a chance of winning the game. For this reason, I'm not sure if this is an idea that would survive scaling up and maybe it's best that it's just a small Pyweek game. I wonder how a developed version of this idea would look like.
Congratulations to the other winners (Python Prison and Badge Blaster 2112) and to everyone else who completed a game! I don't see ties very often. These were excellent games and there were also other great games in the batch. Thanks mauve for hosting Pyweek. I had limited time to rate games this Pyweek, so sorry if I wasn't able to play yours. See you all next time!