I think the above are good guidelines...just wanted to add housekeeping, $1 per person, per night.
For good service at a sit down restaurant, I usually tip about 20%. I might tip more than 10% at a buffet too because a good server will come and check on you, make sure you have filled glasses, etc. And there might be some buffets (like Akershus in Norway), where you need to order your hot items from the server.