I've spent a good bit of time this week getting my development environment setup. It's not to the final shape that I would like, but it is in pretty good working order. I'm now able to actively code every day so that's a win.
The development machine I'm working on is a 2012 Mac Mini with a 2.5Ghz Quad core i5, 16GB of RAM, a 1TB 7200 RPM hard drive, and outputs to two Acer 1080p monitors.
I've put this machine together over the last year, and for a machine that cost me less than $1000 all included it works pretty well.
The only downside is the Intel HD 4000 integrated graphics. Thankfully I'm just doing 2D graphics right now so that downside has little effect. Sadly it limits what other games I can play on the machine, but it's a work machine so that's a good thing, right?
For now I'm compiling and executing using Visual Studio 2013 Community Edition on Windows 7 in VWware 11 running in Unity mode. What a mouthful.
I've setup the virtual machine to use half the resources of the Mac so I can get decent performance (so 2 cores and 8GB of RAM). I also have VMware running in Unity mode which allows me to have all the active Windows programs in their own Mac window. This is really nice since all I have to do is cmd-tab over to any Windows program instead of messing with keyboard shortcut changes or clicking on the virtual machine window and then clicking on the program.
As for code I'm using BBEdit. BBEdit is just awesome and beats the pants off pretty much any other text editor (Mac or otherwise).
Ideally I would have a Mac port working and just shell script from BBEdit to build the game as I'm coding (to avoid having Xcode open all the time to just jump over and click compile and run). At the moment I'm too unfamiliar with command line compiling on the Mac and working around Xcode projects in general to get anything done. I've shelved doing that until I have time to devote to figuring it out.
Currently I write the code in BBEdit and save the file into a location on Dropbox. I am thinking I will switch this over to iCloud Drive, but this has little impact since they both work effectively the same.
Then I go over to a Windows command prompt to execute my build.bat file which compiles the code. Since the code is in Dropbox, I don't want it to build in Dropbox. I could just tell Dropbox to ignore the build folder, but that could be tedious and error prone. So instead I compile into a local directory and run it from there. Currently I've setup a virtual drive to whatever local folder I'm using to make life easier.
Once compiled (which takes like 2 seconds) I go over to Visual Studio and run the program in debug mode.
One of the awesome things I picked up from Handmade Hero is separating the game code from the platform layer. if the game is already running I instead just go over to it and check it or preform any testing since once the changes are compiled the game just updates automatically.
Obviously I would like to get the Mac port up and running with command line compiling tools on the Mac using BBEdit.
After that, another thing I would like is to use LLVM to target compile for another platform and compile straight onto a networked PC from within BBEdit. This would allow me to code and compile using the Mac and just turn around on my desk to a networked Windows PC and see the results.
Lastly, but really firstly, I need to setup a daily backup scheme for version control. At the moment I'm thinking I will just create a .bat file that I either run manually or have setup as a daily task.
Why the cloud?
The primary reason is to have an extensive backup option.
Having the code in the Dropbox folder allows all my changes to be propagated quickly amongst any machines that I may use (multiple local copies), plus grabs it to store online (Dropbox remote copy), Time Machine grabs it (local versioned backup copies), and my online backup, Backblaze, grabs it from several computers and stores it online (multiple copies in a different remote location).
A secondary reason is this allows me to continue coding on another computer, code on the go, or compile a local copy to say demo the game on another machine.
Why not git?
Honestly? Because I don't really need it and it's a pain in the ass to learn and use. I can easily create my own version control system, and BBEdit has a nice file dif function.
Why not CMake?
I'm not using CMake because I'm unfamiliar with it, and it takes a bit longer to compile. I also want to learn the manual process for each platform right now so I know what's going on.
I might consider using CMake in the future, but probably just for the game code and only to do the cross-platform builds.