我不确定实时这个术语是否被滥用,但是这个想法是服务器上的许多玩家都有一个城市每秒产生n个资源.可能有一千个这样的城市.奖励所有玩家城市的最佳方式是什么?
当游戏"活着"时,这样的循环最好的方式是在无限循环中运行吗?(请用这种简单的逻辑忽略明显的错误)
foreach(City c in AllCities){
if(c.lastTouched < DateTime.Now.AddSeconds(-10)){
c.resources += (DateTime.Now-c.lastTouched).Seconds * c.resourcesPerSecond;
c.lastTouched = DateTime.Now;
c.saveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
我不认为你想要一个无限循环,因为这会浪费很多CPU周期.这基本上是维基百科模拟软件的常见模拟情况,我可以想到几种方法: