Как правильно реализовать систему распределенных вычислений?
Самый лучший выход на мой взгляд сделать эту возможность как задание в игре. То есть клиент сам выбирает активировать ее или нет и насколько сильно можно загружать проц и взамен за рассчет кадой игры получает какие то внутриигровые бублики, по сути они работают на вас, ведь с таким же успехом вы могли бы майнить битки на их видюхах, вместо рассчета игр, поэтому им за это надо платить, пропорционально работе которую они выполняют, и тогда игроки будут рады это делать. естественно не обязательно говорить им именно про рассчет игр, а обыграть уже геймплеем (например ускоренное изучение магии со сокростью x2 требует дополнительной вычислительной мощности для игрока + обьяснить игроку что чем мощнее комп тем быстрее будет идти изучение). + можно сделать опцию чтобы активировать эту штуку только при питании от сети, таким образом многие игроки будут специально оставлять телефон включенным на зарядке лишь бы получить бонусы.
не уверен на счет того возможно ли это в вашей системе, но можно попробовать ввести систему "временных меток", при этом "неактивные" объекты не просчитывать вашей функцией без особой необходимости, "замораживать" их до момента обращений к ним, когда к ним обратились просчитывать функцию столько раз, сколько это необходимо, для того чтобы "время" в объекте "догнало" объективное, при этом свободные вычислительные мощности (когда мало клиентов) тратить уже на расчет "отстающих" объектов.