We did a scavenger hunt for the kids last Christmas. Each clue led them to another clue and the final one was a printable, personalized Disney ticket like the one here:
https://www.pinterest.com/pin/483574078714135634/
The scavenger hunt didn't cost us anything and having the kids running around the house looking for hidden clues really helped build excitement. We usually open gifts in the evening but we did the scavenger hunt in the morning since many of their gifts were related to the cruise (new goggles, swim suits, formal wear, etc.). We also had lots of other little clues that morning that they didn't pick up on. I was wearing Minnie Mouse PJs, I made them Mickey waffles for breakfast, there were some Disney ornaments on the tree. After they found out about the cruise they had a lot of fun finding all the other clues they had missed.
This year, I'm planning short 4 night cruise with the 4 days pre-cruise in the keys so the husband can do some fishing. My 12 year old and I are doing all the planning and are the only ones who know about it. We made a silly little movie trailer on the computer, which we will give DH to open Christmas morning. Aside from the disc it's burned on, this surprise was free too!