假设我有一个Android格斗游戏的APK。游戏的机制包括角色如何使用技能,如何计算伤害等。此类机制是否存储在apk中?还是在服务器端?提前谢谢。

#1 楼

简短答案

单人游戏最经常包含APK中所有硬编码的信息。
多人游戏通常需要做更多的工作,例如数据包分析和更多的黑匣子工作,但可能包含一些硬编码的机制。



通常

取决于应用程序,通常,大多数单人游戏不需要任何在线验证除了应用内购买等。多人游戏制作人不太可能透露游戏背后的机制,而是尽可能多地依赖服务器端验证。尤其是在存在PvP的游戏中,因此即使是用于计算命中率的伪随机数生成器也可能会被用户黑盒包装,以防止游戏机制的任何滥用/利用。不同的连接强度很重要,为维持合理的游戏体验,可能需要做出牺牲,因此一些游戏机制仍在APK中进行硬编码,以提高性能并减少服务器上的负载(并可能由服务器端加密和验证)
,例如,不是要求服务器在每次输入时更新玩家位置,而是定期发出请求以同步服务器和客户端的位置副本,这意味着核心移动和物理机制必须存储在客户端。

为了了解单人游戏的机制,而无需进行任何类型的在线验证,并且很少与服务器端进行交互。简单的反编译(例如在混淆和使用NDK的情况下进行反汇编)将提供了解所有游戏机制所需的所有信息。

在多人游戏中,通常您需要通过研究来寻求更多信息包括:


数据包分析-观察与服务器的交互非常有用,并揭示了许多有用的信息。但是请注意,此信息可能经常被黑框显示,例如包含类似于hit target_object的字符串的请求,并且响应可能只是带有相同数字的同一包。观察和分析从服务器下载的数据,这可能有助于揭示游戏机制(物品的xp速率乘数​​,物品的其他隐藏统计信息等。)有时,您可能会发现自己尝试对每次下载并经过验证的加密数据进行解密旨在通过观察请求和响应来揭示有关机制的一些信息。

由于服务器崩溃和断开连接,有时可能很难调试在线游戏,这可能是导致不同步的原因而tgus观察内存在更密集的在线游戏中不太实用,在线游戏每隔几毫秒就会与服务器同步一次。

总之,这很大程度上取决于如何游戏是根据客户端-服务器交互的性质构建的。

评论


哇,多么彻底的回应!非常感谢!是的,我在考虑一些多人对战游戏。反编译一些apk,也发现其中包含加密内容。我想没有什么更进一步的研究了,因为我主要在研究游戏的机制方面很有趣。顺便说一句,由于您的声誉少于15,我无法接受您的回应:(

– tonytz
18年7月20日在18:22



@tonytz谢谢,很高兴能为您提供帮助!

– Elian Kamal
18年7月20日在19:36