So we need a set of decay functions. For 0 ≤ t ≤ 1, spanning from game start to the configured resource depletion time…
1-t
cos(tπ/2)
1-cos(tπ)/2
1-sin(tπ/2)
etc.
Or a resource map of some sort. Mappers could create objects (non-blocking) which the engine subdivides and ‘fills’ with resources which then get depleted over time, according to distance from the resource-gathering building. Overlapping areas would be allowed, creating prime sites for mining :) If there are no resource objects then randomly fill the map, or something.
It may not be possible to mine all of the resources, so there'd have to be something like a per-team time-out (which is reset whenever resources are mined).