Hey that's really cool. A bona fide PC game programmer! All my day programming has been in business intelligence and dioinformatics data mining.
The way I approached my RTS was thinking about it as just another application, and designing the data structures and algorithms I needed, to replicate something like StarCraft.
I just used the STL to keep track of units over a map divided into 32x32 regions, although actual unit position was on the fine 1x1 grid while stationary, and was calculated floating-point while moving. So each tile basically had a list of each unit that overlapped it.
Then I got into the fog of war, visibility and stuff like that. I wondered if there was a clever way of doing it, other than just keeping a bunch of extra data around like I was doing. I've since learned that basically you just have to keep the extra data around. For example, if you want to keep that building you last saw in the fog even though it may have been destroyed, you have to store that information for that player, and another player may have different fog information. When you start to think of all the information being stored, it becomes a bit of a nightmare unless you really organize it well.
I had simple networking working. I could move a unit on one machine and it moved on the other. I didn't have any prediction or anything, just lockstep simulation, with network orders collected for one frame before things moved on.
All that code is still on my website
http://www.antimeta.com/projects/minion/index.html
Eventually, we got really busy at work (before the company folded) and I couldn't work on my RTS. Since then, I decided that maybe an RTS of the calibre I wanted to create was maybe too much for one person to do, when they have other responsibilities as well. So I decided to make a simpler game, for Pocket PC. At least that game is coming along.
But the world still needs a better series of articles on the specifics of implementing an RTS, with good quality code (i.e. nice classes and STL, not horrific spaghetti C). The Kawick book's code is horrible: he derives Unit from Point so they can have a position. Ugh. And half of the book is his crappy List code.