I'm working on a project with a buddy, he doesn't have a 360 nor does he have the money to get one right now, but we want our game to be submitted to XBLIG. So right now we're both designing our game on the PC but we're using adapted 360 controllers. What are the things we need to keep in mind during the process so that we can "easily" port our game to the 360 from the PC?
You have to keep in mind that the Xbox360 has far poorer .NET performance than your average desktop PC (and a limited subset of it too!).
There are two main reasons: the Load/Hit/Store penalty (due to the architecture of the CPU/RAM/GPU) and the non-generational Garbage Collector.
For GC issues, which cause 'pauses' or 'freezes' in your game during runtime, you want to avoid any kind of runtime garbage, so be very careful with Strings (never concatenate for instance), never allocate reference type objects after your initial loading (ie no
var obj = new MyCoolObject();), and be careful with foreach. I've made a blog post some time ago that covers some of these points: http://nextstopnowhere.wordpress.com/2010/03/26/garbages-out-pools-are-in/
But whatever you do, you will have to test on the Xbox360, and the sooner the better.
The best way is to periodically test the game in a console to check for performance problems or problematic garbage collections; otherwise you will end with a lengthy debugging and optimization session before publishing the game.
And when porting to Xbox 360, check all the cases specified in the peer review evil checklist.
No one seems to mention this, but be sure to, at the very least, compile your project for the X360 every day. The Xbox only features a subset of .NET (.NET Compact Framework 3.0), missing lots of interesting stuff like Tuples, some collections, optional parameters, etc., so you will get bitten if you rely on any of them and don't realize you shouldn't until too late in the project.