Универсальный механизм — обфускация кода на клиентской стороне и хоть какое-нибудь шифрование трафика. Это не прикроет возможность читерства, но сделает его сложнее/дороже.
p.s. личное нохау, попробуйте периодически вместе с обфускацией постоянно изменять алгоритмы шифрования, меняйте все что возможно, формат структур критичных ко взлому (игровых) данных. Подкидывайте в код обманки, делайте в коде специальные ошибки (например функцию назвали md5, но в ее коде сделайте несколько изменений). В общем максимально усложняйте жизнь тем кто будет декомпилировать и изучать ваш код.
Универсальная, что-либо гарантирующая альтернатива, — перенести всю или часть обработки логики игры на сервер. Основной недостаток — серьезные повышения требования к сети (чаще невыполнимые для мобильных устройств) и, иногда, повышение нагрузки на сервер.
p.s. p2p связь возможна? перенесите часть обработки (проверки валидности/реальности событий управления персонажами) на соседнего клиента (ближайшего с точки зрения сети) — это поможет частично разгрузить сервера.
В любом случае защититься от автоматизаторов действий все равно будет нереально, ведь можно изучать изображение на скрине и имитировать нажатия на кнопок. От этого можно спастись только вменяемой игровой логикой, не требующей от игроков тупых монотонных действий…