I know this topic has been discussed for a long time, but here's what *I* have to say:
I worked as a server for several years (for around $2/hour), and I got to know the people who came into the restaurant where I worked. I knew who the good tippers were, and who the TokyoRose's were. While it was my job to serve their food, I was forced to do that for everyone. However, for the TokyoRose's, I didn't care that their drinks were low. I didn't care that their food was cold, or took a long time to cook. I didn't care that they were also the people who ALWAYS asked for extra cheese, or dressing, or condiments, while expecting not to pay for them. I didn't care because they were there to eat, and that's what they paid for. If they wanted good service, they needed to pay for that too. If they weren't willing to pay for the service, they didn't get it.
Of course then most of these people would complain to the management, but the management didn't really care. They knew who these people were, because typically they had something to complain about every visit.
And tipping on cruises should be no different. I wouldn't dream of not tipping - The better the service, the more I'm willing to pay for it.