Разобрался:
по неизвестной мне причине, игра возвращала разные типы хэша, нативка на клиенте signed 32-bit, а сервер unsigned 32‑bit (или наоборот..?), после добавления функции на перевод хэша в unsigned 32‑bit все заработало корректно. Всем спасибо!
JavaScript:
function normalizeHash(hash) {
return (hash >>> 0); // переводит в беззнаковое 32-битное число/значение
}