I could see it working out on campaign boards with all the resources and buildings contributing to what you get during fights, but just playing straight skirmishes may be slightly trickier.
For just playing battles, perhaps have a separate army for 'buildings', a separate army for fortifications, and a separate one for your actual units.
For example, you're playing, I dunno, a 1500pt game. You get an additional 10% of the points level to spend on buildings and fortifications (both using the same pool). To give a few examples:
Lumber Camp - You get an extra
D6 of wood at the start of each turn - __pts
Mining Camp - Get an extra
D6 of either stone or gold, or a D3 of each (decide before rolling) at the start of each turn - __pts
Farms - Get an extra
D6 of food at the start of each turn - __pts
House - Increase the amount of units you may have on the field at any one time by +1. This effect is cumulative with other houses - __pts
Barracks - Increase the amount of infantry units you can queue by +1. This effect is cumulative with other Barracks.
Stables - Increase the amount of cavalry units you can queue by +1. This effect is cumulative with other Stables.
Market - You may re-roll a single resource
D6 each turn. Each market after the first increases the number of re-rolls, but you may never re-roll a re-roll.
Blacksmith - You may re-roll a single failed wound roll or armour save each turn. Each blacksmith after the first increases the number of re-rolls, but you may never re-roll a re-roll.
Fortifications:
Outpost - Your opponent must tell you his first unit in his queue at the end of each of his turns. This is not cumulative with other outposts, and if all your outposts are destroyed, you lose this ability.
Tower - Your opponent may not bring on units within 12" and
LoS of the tower, or 6" out of
LoS. Each turn, the tower may fire upon a single enemy unit within 12" and
LoS, adding +1
D6 to every volley for each of your own ranged infantry units in base contact with the tower.
Palisade - Blocks
LoS and movement through it. Palisade wall sections are immediately destroyed if an enemy unit moves into base contact with them, or they are successfully hit by siege equipment. For every 5 sections of Palisade on the field, the owning player loses 1
D6 of Wood generation as upkeep. If the player would lose all Wood generation, remove enough sections to allow generation of 1
D6 of wood.
Stone Wall - Blocks
LoS and movement through it. Stone wall sections are immediately destroyed if an enemy unit has spent 3 player turns in base contact, or if a battering ram has spent 2 player turns in base contact. For every 5 sections of stone wall on the field, the owning player loses 1
D6 of stone generation as upkeep. If the player would lose all stone generation, remove enough sections to allow generation of 1
D6 of stone.
Castle - Allows for the building of unique units. Your opponent may not bring on units within 18" and
LoS of the castle, or 12" out of
LoS. Each turn, the castle may fire upon a single enemy unit within 18" and
LoS, adding +1
D6 to every volley for each of your own ranged infantry units in base contact with the castle. Only siege equipment can destroy castles, and a castle is immediately destroyed if a battering ram has spent 5 turns in player contact. For every castle on the field, the owning player loses 2
D6 of stone generation. Unlike stone walls, if this would cause the player to no longer generate stone, then the player must wait until enough castles are destroyed to allow for generation.
Resource generation could work, as noted above on
D6. Most civs start with 2
D6 of wood, and food, and 1
D6 of gold, and stone as default. At the start of each player turn, the player who's turn it is generates their resources (including any extras from buildings in their list. Then they can choose to queue units to build depending on the resource cost (perhaps units could have a points costs for the ones you start off with, and a resource cost for creating them in-game). A queue can only contain a certain number of units as default, but certain buildings can increase this.
Queued units can arrive from any board edge on your half of the table so long as it is also within 6" of one of your units, and more than 6" from an enemy unit, otherwise it arrives from your table edge.
After queueing units, any units set to arrive that turn do so.
The game then goes to movement, on to ranged, and finally on to melee.
When melee is done, it is the other player's turn.
The game ends either when a player has no units on the board, a non-scout unit from one player stays in contact with the opposing player's table edge for an agreed number of player turns, time is up, or until both players agree to end it.
Stats-wise, we could go for:
M - Movement
S - Sight
RS - Ranged Skill
MS - Melee Skill
Sp - Speed
P - Power
Sv - Save
For attacking, perhaps have:
Ranged attack - Check to see if the enemy you're firing at is in your sight range. If there is an allied scout model within your sight range, who has the same enemy model within his sight range, the sight range of the unit attacking is doubled. Roll to hit using Ranged Skill. The enemy unit then rolls his save. If it is failed, roll against the weapon's power. If your roll exceeds the rating, the unit dies. If the roll meets the power, then the unit is wounded, and removes a wound (some weaker models may only have 1 wound). If a unit's wounds drops to 0, he dies. If the roll fails to meet or exceed the power rating, the the attack is shrugged off. A power rating that is better than a model's save (say a Militia with a 6+ save gets hit by an Arbalest with a 3+ power rating) will automatically wound the unit hit, but you must still roll against the power rating to see if the model dies, unless it only had 1 wound to begin with.
Melee attack - A unit in base contact with an enemy unit may attempt to strike it in melee. First, compare Speed stats. The unit with the highest speed strikes first, unless a unit charged, in which case, the charging unit will always strike first. The unit striking first rolls to hit using his melee skill + 1
D6, whilst the defending unit tries to block the attack by doing the same, and comparing the values. If the attacker's roll beats the defender's, his attack hit If it matched the defenders, the attack still hit, but the power of it is halved (rounding down). If it fails to match or exceed the defender's roll, it misses.
If the attack hit, the defending unit rolls his save. If the save is failed, the attacking unit rolls against his power in the same way as with ranged attacks.
You see how this is going? Good, because this was just meant to be a post seeing if I could make a comprehensible ruleset. Whether or not it's actually half decent doesn't matter.