讨论问题顺便庆祝5个三角
用java开发游戏外挂有多少可行性,是否有现实意义(就是说有没有必要用java).如果可行需要使用哪些技术来实现,难点在哪里,是否有开源的东西做参考,请按下面的内容分别回答; 如果不可行,指出用其他语言和java相比在这个方面的优势
1) 网络游戏
2) 单机游戏
3) 游戏存档编辑器
感觉第3个应该是最容易处理的了,直接读文件.不过分析数据的功夫应该会很麻烦,如果加密了的话,修改起来要一定的技巧.当然上面那两个也会涉及到解密的内容吧
恭喜楼主! ^_^
总听说“私服”、“外挂”什么的,不懂,这都是啥呀?是一回事儿吗?唉,老了,跟不上形式了~~
私服,望文生义,大概就是用盗版的软件私自架设一个游戏服务器吧?那外挂又是什么呢?
先恭喜楼主
网络游戏用java比较好,稳定性高,不会因为内存问题当掉
单机游戏的话偶觉得还是不要用java,因为速度比较慢,VC会比较好点
至于游戏存档编辑器,偶不甚了解
其实JAVA都可以做,只是速度和性能的问题
呵呵
顺便接分
恭喜一下楼主
首先,要看这些外挂所对应的游戏是用什么技术来做的,如果是用VC,那么你用java来做外挂,保证能和VC对接上吗?其次,看这些游戏在什么OS上运行的,如果是windows,那么java在windows上的功能,远及不上VC,DELPHI强大,之前很多初学者问过怎样用java来调用windows系统的功能,例如进程管理器,执行硬盘扫描等,其实这些都是集成在windows上的,java是一个不针对任何OS的语言,所以它的类库也没有调用某个OS系统功能的方法,要实现,只能用JNI来调用windows的动态连接库来实现,这不但增加了编码的难度,而且用JNI来写代码,是很难调试的。而相对于vc,delphi,他们只需一两行代码,就可以方便地完成这些功能了。我做过两年delphi,vb程序员,也搞过两年java,经验告诉我,如果写在windows平台上使用的软件,用delphi或.net来做比用java来做,无论开发难度或开发时间上都大大减少。
恭喜楼主:)
java应该是可以做的,只是运行速度和开发速度的问题。
--maquan('ma:kju)
总听说“私服”、“外挂”什么的,不懂,这都是啥呀?是一回事儿吗?唉,老了,跟不上形式了~~
私服,望文生义,大概就是用盗版的软件私自架设一个游戏服务器吧?那外挂又是什么呢?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
个人理解
私服是自己架设数据库,在本地就可以运行游戏
外挂就是通过非正常手段(挂接外部程序)是游戏变的简单,比如游戏人物无敌什么的,不过就是锁定某些值
这里只想讨论外挂的问题
***********************************************************************************
--graybaby(天灰灰)
网络游戏用java比较好,稳定性高,不会因为内存问题当掉
单机游戏的话偶觉得还是不要用java,因为速度比较慢,VC会比较好点
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
网络游戏用java稳定性高好何解?用socket发包么,别的语言开发会当掉的么?
单机游戏的话速度比较慢?怎么个慢法,慢在哪里,有什么解决的办法
***********************************************************************************
--terry_yip(搞了几年开发,现在才来恶补基础,请别见笑!)
首先,要看这些外挂所对应的游戏是用什么技术来做的,如果是用VC,那么你用java来做外挂,保证能和VC对接上吗?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
管理内存需要对接的么?
我没用过vc,只是听说过有个钩子可以用来进行这种开发,如果用java来作,是不是一定要用jni,一定要调用windows的api呢.
向 terry_yip 请教:
什么是外挂?能简单说一下吗?
你提到“如果是用VC,那么你用java来做外挂,保证能和VC对接上吗”,这里的对接是指什么?如果是 socket 通信的话,没有理由对接不上的呀~~ 不好意思,我真的不了解这个 ;)
1) 网络游戏 (这个java可以,现在好多呢。)
2) 单机游戏 (这个java没戏,手机游戏还行。)
3) 游戏存档编辑器(这个无所谓,不过用java的话还要JRE支持,windows上还是C++或.net合适)
到网上搜了半天,还真找到一篇文章讲“什么是外挂”:
http://news.chinabyte.com/297/1759797.shtml
这里面讲的“外挂”是针对网络游戏的,相当于“机器人”,代替玩家做重复性的动作。基本方法是模拟游戏客户端跟服务器进行通信(应该就是 socket 通信吧)。对于这类软件,用 Java 开发我看没什么不行的,甚至可以说是 Java 的长项,除了需要带个 JVM 略显庞大算个缺点。
不过,从前面楼主的说法看,好像你说的“外挂”并不是指这种,而是像早年间 GameBaster 那种,切入到游戏程序里面,监控内存变化,锁定特定字节等等。这种的话,还是用 C/C++ 吧。
--maquan('ma:kju)
好像你说的“外挂”并不是指这种,而是像早年间 GameBaster 那种
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GameBaster? 我记得早些年有个GB是在dos下修改内存的,不知道是不是这个,功能强到可以重现环境,不过那时候内存也不高,后来都用fpe了
网游和单机游戏都有外挂吧,操作方式应该是不同的。网游我想改本机的内存应该没什么用
没错,就是那个 GB :) FPE 是后来功能更强的。
前面我提到的那篇文章专讲的是网游,至于单机游戏,外挂玩太深了恐怕也没太大的意义,有个 GB、FPE 啥的通用工具足够了,hehe
网游的外挂看样子主要是以 socket 通信来实现的,这方面用 Java 编程很爽啊。Java 的 socket API 比 C 的简单多了,看着很清爽。虽说有时候感觉数据流解析比较吃力,可实际上适应了之后就不成问题了。
1 如果游戏是单机版的,那么修改内存这块,java是弱项。
2 如果游戏是网络版的, java跟.net能直接通讯吗?socket传个字符串倒方便,传对象呢?或者调用远程方法呢,.net可没有rmi或hessian之类的东西。我之前做过java网站跟.net网站通讯,用的是soap或cobra的,这就是我所说的“增大编程难度”的理由。
关于“java跟.net能否直接通讯”这类的问题,我的理解是:
作为网络通信,按说应该先制定通信协议(比如像 HTTP),双方按照协议要求来做输入输出,这样就完全不必考虑对方是用什么语言实现的。
当然,游戏厂商自己包揽客户端和服务器端,根本没指望跟第三方进行互联互通,所以不一定要制定什么通用协议(我这里说的“通用协议”指不依赖于某种具体语言特点的通信协议),或者说,即使有也不会公布出来。那么,事实上我们要做外挂的话,还是要从分析数据流入手,猜出它的通信协议。所以,说到底是要对着字节流来说话。结论就是,游戏厂商用什么语言写的网游程序并不重要了,重要的是你自己擅长用什么语言写网络通信程序。
作游戏这些基本就别用java了,虽然俺是其爱好者,不过它专长不在这,让c,c++去吧!
主要是解密~ 这个搞定了 其他的就行了
剩下的只是需要使用的人 安装JRE或者LZ做成集成版的~
接分 ^_^
首先恭喜楼主!
我比较同意maquan('ma:kju)的说法,与游戏厂商用什么语言写的网游程序无关。重点在数据包的分析。至于网络通信编程技术的问题,这个是基础,不用多说。
哦,另外,请高人帮忙解决关于JAvac编译器GJC源代码的下载问题。虽然是开放了源代码,要SUN公司的授权,偶找不到,郁闷!
顶顶,希望楼主能给点分。
首先恭喜楼主!
java 做网游或者是外挂估计不太好用。大多数游戏都不是java写的,接起来麻烦。
单机游戏可以,尤其是手机游戏。
存档编辑器,没有问题,可以用java搞。
说起五个三角,我在这里说一个令人哭笑不得的事情,有一个人,他从来回贴都是“路过,友情up”,至于楼主的问题他看也不看,而且有段时间每个版,每张贴都见过他,昨晚发现,他不到一个月内,由1个三角变成5个了。更可笑的是,我看不过眼,有两次跟贴骂他,竟然楼主结贴时也给了我分,唉~~~~
我试过花了三个小时帮楼主调试代码,一分也没拿到,有时骂人也得到30分。
说正题了,其实现在大部分流行的游戏,都是客户端程序连接服务器端的方式来做的,所以本地程序的反汇编跟服务器端的数据包的拦截分析都一样重要。了解游戏运作的原理,才能针对他的漏洞来做外挂。
--terry_yip(搞了几年开发,现在才来恶补基础,请别见笑!)
你说地这个人大家都见着了,几个三角无非是身外之物,没必要太往心里去,本着友善的精神有空帮别人搞定点东西,心里暗爽就足够了,得不得分不要太往心里去.很多一个三角的网友也很牛啊.
1) 网络游戏:
一:客户端:现在java也出了不少图形图像API,官方的开源的都不少,前一阵Codefund上有人还介绍了一个做JOGL的介绍,感觉功能蛮强的,相当
于有牛人帮我们写好了很多实用的JNI,不过如果想用这个做游戏,内存估计要备足......,而且用户不要要求付出了同样的内存显卡CPU后
,可以得到和极品飞车一样的画质。毕竟是用JNI是一种昂贵的代价,而且貌似脚本的、没有怎么优化java跑起来也不是很快。
二:服务器端:java做网游的服务器端应该没有什么问题,而且可以发挥java语言的优势,让开发更迅速,运行更稳定。java语言越来越快,
现在nio里java的网络性能比较令人满意了,再加上很多开源项目也提供了对java访问网络的api的封装,可以说,用java开发出一个高性能的
服务器端可行性比较大。
2) 单机游戏:和开发客户端一样。
3) 游戏存档编辑器:这个需要很对对文件的原子级操作,而且粒度应该是byte甚至是bit型的。java的byte类型没有无符号数,用起来很别扭
,而且,相比其他语言,java的位操作比较弱。但是可以肯定的是一定能够写的出来^_^
DeepNightTwo(深夜两点) 没看明白我得问题,要么就是我写的问题太含糊了.
现在我只是想讨论游戏外挂的可行性,在网络游戏的外挂和单机游戏的外挂是否能够开发.不是游戏本身.BTW java应该是可以开发游戏的,不过对于3d类型的游戏恐怕速度上达不到要求,而且标准一直在改,版本不稳定后面没办法做开发.
【也说路过,友情up】
这个事情恐怕大家已经都很熟悉了,而且见怪不怪了。根据那个帐号的行为模式,我高度怀疑那是个机器人。虽然做这么个机器人并不是什么超难的任务,但总是要花不少时间的。我想那个帐号的主人未必就对三角啊、星星啊什么的那么看重,恐怕还是“炫耀技术”的成分重一些吧。否则,就算养出两个星星,以这种不光彩的出身(大家有目共睹的),也未必能得到大家的尊重。
再者,这种机器人应该算是 Codefund 的“外挂”了吧?hehe
“路过,友情up”,其实也没什么大不了,有时我发贴子,都感谢帮顶的人。帮顶的人也并非个个都想捞分,有的网友可能是想知道题目的答案,所以顶上去的。问题如果是张张贴子都有这句话,而且每次都是同一个ID发出的,我觉得有扰乱社区秩序的嫌疑,这时候,版主该行使职责了,而且作为楼主,如果这种人也给分他,无疑是有鼓励作用的。
感觉用java做外挂还是有难度的,不管是单机的还是网游的,都需要很多针对底层硬件的直接操作,需要和系统特殊API甚至驱动直接打交道,而且这个应该是比较重要的部分,如果用java做的话,就必须要用到很多JNI,这样的话就有点挂羊头卖狗肉的感觉了,呵呵
不过做肯定是可以做的,只是不再是纯正的Java了