Handling resources for multiple players and syncing values between servers and clients while preventing cheats is complicated stuff. Taking a step back, I’ve have looked into this conventional approach to virtual resources and think I have come up with a alternative, novel design.
The underlying reasons for me to have multiple resources is to allow for players to engage in trade, and for various player to have diverse opportunities making the game’s dynamics more interesting. In the end resources are supposed to be used in a production of new resources, which could either be different but similar or of a different nature such as military troops, or new gameplay options. Usually you would take some amount of a resource and convert it, but rather than thinking of resources as an accumulated value I want to think about them as units of production. In my system you don’t trade one coal and one iron for one steel but rather you dedicate one unit of coal and iron production to one unit of steel production. Rather than converting values to other values you set up a production grid.
Each resource can either be used to give a buff to the player in itself, be used in the production of another unit or be dedicated to trade so that another player can hook up their production grid to another player. In this way, all resources can be valuable, resource management as well as trade becomes more easy and intriguing and server-client payloads smaller.