I'm no expert with DOs but you could think of it like you have a DO per game, use in-memory (or transactional) storage for your game state and then you can
deleteAll()
the storage when the game has ended and that DO will never cost you another penny unless you request it again.