The rules I have at the moment are coming along well for playtesting - they are 'published' here under the 'Corps Level Rules' tab on this blog, but I am finding blogger pretty bad for publishing in this format .. so they are barely readable on this blog.
I can only fix that by posting them as a PDF and hosting them somewhere other than blogger. Easy enough - I have a bunch of web servers that can handle that.
Still a lot of work to get them completed, presentable, and presented. Playtesting however is working well with what I have.
Anyway, here is a quick and dirty summary of how I currently handle actions at Corps level, and cover the problem you mentioned above, with tanks attacking infantry in towns, etc. This is a bit long winded to explain, but its all simple mechanisms at the end of the day, so bear with me please :
- Ranges and game scales .. the battlefield is divided into a grid system. A grid represents around 2km x 2km squares. (I use 4" square = 1 grid, as that suits my terrain tiles).
- Each grid square can stack up to 6 battalions, and 3 of those can be used at 1 time during fighting.
- To complicate that simple setup, a number of grids make up a Sector. Most of my terrain tiles are 8" x 8" (see http://2mm-madness.blogspot.com/2011/11/russian-buas-in-early-winter.html for a board setup), which is 2x2 grids per sector. Woods / Towns / Mountains, etc are 1 grid = 1 sector. Big open areas, 3x3 grids make up a sector. If you have a look at my example game board made up of tiles, you can easily see variable sized sectors made up of consistently sized grids.
- Most units have a movement rate of 2. Infantry move 2 grid squares per turn, all mechanised units move 2 sectors per turn. Thats the basic movement rate, there are also mechanisms for HQs to spend command points and rush units along a little further, but so far, no tables to lookup and no tape measures needed.
- For modern extensions to this, whilst gun ranges are in grid squares, guided missle (Sagger / TOW, etc) have ranges in sectors.
- 2 types of attacks - ranged combat and assault combat. Tanks and heavy support weapons are the only types of units that can fire on ranged combat. Infantry for example, can only attack using assault combat. Tanks can conduct ranged fire on infantry if they sit back at a distance and pound them. Most direct ranged weapons have a range of 1 grid square, some excellent ranged weapons can fire out to 2 grid squares. Artillery can indirect fire out to 4-6 grid squares (8-12km range)
- Each type of battalion has 2 combat factors. Attack vs Armour, and vs Everything else. Attack / Defence factors are in the range 1-10, So an attack factor of 4 represents a 40% chance to "score a hit" during a turn of combat. Friendly support weapons in range of the target can add +1 to the attack factor of the attacking unit.
- Each Division has a grading, or 'Combat Proficiency' rating, on a scale of 1-10. Average troops are rated 5, special troops get higher ratings. This grading applies to all battalions in the Division. The CP rating is critical, as it provides the "Saving Throw" number on a D10 for any unit in that Division to survive a hit.
- Each unit has an armour rating (generally 0), which is a + added to the saving throw for that unit. Armour bonuses are ignored in assault combat.
- A battalion which fails to save vs a hit is removed from the board, and considered dispersed. During the game, HQ units get the opportunity to try and recover dispersed units, which again requires a saving throw vs CP.
- Infantry are generally rated 4 vs soft targets, and 3 or 4 vs Armour. Tanks are generally rated 2 vs soft targets, and 4-6 vs Armour, depending on the class of tanks. Straight away, you can see that a tank battalion conducting ranged fire on an infantry unit has a very low base chance of success. It can improve this by adding supporting fire from mortars, artillery, HMG companies, etc.
- Assault combat occurs when up to 3 battalions attempt to storm a grid square. (place the units on the border between 2 grid squares). Players nominate which unit in the group leads the attack / or defence. Calculate the attack factor, and add +1 for each fire support in range. Assault combat continues during the turn until one side or the other breaks.
- Towns and woods are nasty things to attack - if the defender suffers an unsaved hit in a town or wood or mountain .. and there is another friendly grid square of the same type adjoining this grid, then the defending unit retires to that grid square rather than being dispersed. Big Stalingrad maps with lots of adjacent city grids = slow grinding bloodbath for all involved.
Thats a quick and dirty summary anyway. I must get some time to put all this into a decent document soon :)
So, having said all that, if a tank unit close assaults an infantry battalion on it's own, it will more than likely get destroyed. If it assaults together with a friendly infantry unit, then assign the infantry to lead the assault (it has a better attack value vs infantry than the tank unit), and get the tanks to provide fire support.
Tanks attacking into towns on their own, are pretty much certain to be destroyed.
Tanks are deadly against other tanks (in the open), but not that useful in close fighting.
Tanks are quite fragile if the player allows them to get bogged down or isolated - infantry remain the best unit for taking and holding ground. Tanks are best used to exploit breakthroughs in the line, drive deep and take out the enemy HQs at the rear.
The simple mechanisms above reward that sort of behavior from the commander.
Have a play with those ideas anyway and see it feels for you.