A thing I did for a while last year was play a series of characters really sincerely. That is, they were what they said they were; it wasn’t that they lacked substance, but their substances wasn’t particularly obfuscated. I found that really helped me get into the space of all kinds of different characters, good and bad. That might be a thing to try; if you have good characters, make them good, not good by convenience but for reasons, reasons that are hard to corrupt. And if you have evil characters…well, they should have reasons too
There was a thing I noticed back when my meetup did Night Witches. We did the entire run of the game, from training to the end of the war. One of the GMs was pretty cognizant of how terrible the Soviet system was and so we lived in a crapsack world of constant pain from outside. Now, this can be fine: the queer reading of NW is about building your own community in the face of an outside world. But I had been reading “A Dance With Death,” a book of interviews with the actual Night Witches and what stood out to me was that they were a phenomenally high-morale unit: they did a grind any pilot would find overwhelming and did it night after night. So when I rotated into the GMs chair, I made a couple of characters that weren’t so…dark. The new Chief of Staff was an officer of the “my job is to keep you alive and flying” persuasion who was on the characters’ side as much as possible. And the new politruk was…an inexperienced woman who’d have been a better Komsomol camp counselor than hardcore commissar. She really believed in socialism and education. (I modeled her off the political officer interviewed in “A Dance With Death.”) I think having those two around helped; certainly at the end of my run, the PCs organized an off-the-books raid on a German prisoner train with the help of some sexy partisans to rescue the captain
Glimmers of light and hope are why we can stand in the grimdarkness, I suppose.