用java开发游戏外挂有多少可行性,是否有现实意义(就是说有没有必要用java).如果可行需要使用哪些技术来实现,难点在哪里,是否有开源的东西做参考,请按下面的内容分别回答; 如果不可行,指出用其他语言和java相比在这个方面的优势
1) 网络游戏
2) 单机游戏
3) 游戏存档编辑器

解决方案 »

  1.   

    先恭喜楼主
    网络游戏用java比较好,稳定性高,不会因为内存问题当掉
    单机游戏的话偶觉得还是不要用java,因为速度比较慢,VC会比较好点
    至于游戏存档编辑器,偶不甚了解
      

  2.   

    其实JAVA都可以做,只是速度和性能的问题
    呵呵
    顺便接分
    恭喜一下楼主
      

  3.   

    首先,要看这些外挂所对应的游戏是用什么技术来做的,如果是用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来做,无论开发难度或开发时间上都大大减少。
      

  4.   

    恭喜楼主:)
    java应该是可以做的,只是运行速度和开发速度的问题。
      

  5.   

    向 terry_yip 请教:什么是外挂?能简单说一下吗?你提到“如果是用VC,那么你用java来做外挂,保证能和VC对接上吗”,这里的对接是指什么?如果是 socket 通信的话,没有理由对接不上的呀~~ 不好意思,我真的不了解这个  ;)
      

  6.   

    1) 网络游戏 (这个java可以,现在好多呢。)
    2) 单机游戏 (这个java没戏,手机游戏还行。)
    3) 游戏存档编辑器(这个无所谓,不过用java的话还要JRE支持,windows上还是C++或.net合适)
      

  7.   

    到网上搜了半天,还真找到一篇文章讲“什么是外挂”:
        http://news.chinabyte.com/297/1759797.shtml这里面讲的“外挂”是针对网络游戏的,相当于“机器人”,代替玩家做重复性的动作。基本方法是模拟游戏客户端跟服务器进行通信(应该就是 socket 通信吧)。对于这类软件,用 Java 开发我看没什么不行的,甚至可以说是 Java 的长项,除了需要带个 JVM 略显庞大算个缺点。不过,从前面楼主的说法看,好像你说的“外挂”并不是指这种,而是像早年间 GameBaster 那种,切入到游戏程序里面,监控内存变化,锁定特定字节等等。这种的话,还是用 C/C++ 吧。
      

  8.   

    --maquan('ma:kju) 
    好像你说的“外挂”并不是指这种,而是像早年间 GameBaster 那种
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    GameBaster? 我记得早些年有个GB是在dos下修改内存的,不知道是不是这个,功能强到可以重现环境,不过那时候内存也不高,后来都用fpe了
    网游和单机游戏都有外挂吧,操作方式应该是不同的。网游我想改本机的内存应该没什么用
      

  9.   

    没错,就是那个 GB  :)  FPE 是后来功能更强的。前面我提到的那篇文章专讲的是网游,至于单机游戏,外挂玩太深了恐怕也没太大的意义,有个 GB、FPE 啥的通用工具足够了,hehe网游的外挂看样子主要是以 socket 通信来实现的,这方面用 Java 编程很爽啊。Java 的 socket API 比 C 的简单多了,看着很清爽。虽说有时候感觉数据流解析比较吃力,可实际上适应了之后就不成问题了。
      

  10.   

    1 如果游戏是单机版的,那么修改内存这块,java是弱项。2 如果游戏是网络版的, java跟.net能直接通讯吗?socket传个字符串倒方便,传对象呢?或者调用远程方法呢,.net可没有rmi或hessian之类的东西。我之前做过java网站跟.net网站通讯,用的是soap或cobra的,这就是我所说的“增大编程难度”的理由。 
      

  11.   

    先恭喜楼主
    网络游戏用java比较好,稳定性高,
      

  12.   

    关于“java跟.net能否直接通讯”这类的问题,我的理解是:作为网络通信,按说应该先制定通信协议(比如像 HTTP),双方按照协议要求来做输入输出,这样就完全不必考虑对方是用什么语言实现的。当然,游戏厂商自己包揽客户端和服务器端,根本没指望跟第三方进行互联互通,所以不一定要制定什么通用协议(我这里说的“通用协议”指不依赖于某种具体语言特点的通信协议),或者说,即使有也不会公布出来。那么,事实上我们要做外挂的话,还是要从分析数据流入手,猜出它的通信协议。所以,说到底是要对着字节流来说话。结论就是,游戏厂商用什么语言写的网游程序并不重要了,重要的是你自己擅长用什么语言写网络通信程序。
      

  13.   

    作游戏这些基本就别用java了,虽然俺是其爱好者,不过它专长不在这,让c,c++去吧!!
      

  14.   

    主要是解密~ 这个搞定了 其他的就行了剩下的只是需要使用的人 安装JRE或者LZ做成集成版的~接分  ^_^
      

  15.   

    首先恭喜楼主!!我比较同意maquan('ma:kju)的说法,与游戏厂商用什么语言写的网游程序无关。重点在数据包的分析。至于网络通信编程技术的问题,这个是基础,不用多说。哦,另外,请高人帮忙解决关于JAvac编译器GJC源代码的下载问题。虽然是开放了源代码,要SUN公司的授权,偶找不到,郁闷!顶顶,希望楼主能给点分。
      

  16.   

    首先恭喜楼主!!
    java 做网游或者是外挂估计不太好用。大多数游戏都不是java写的,接起来麻烦。
    单机游戏可以,尤其是手机游戏。
    存档编辑器,没有问题,可以用java搞。
      

  17.   

    --terry_yip(搞了几年开发,现在才来恶补基础,请别见笑!)  
    你说地这个人大家都见着了,几个三角无非是身外之物,没必要太往心里去,本着友善的精神有空帮别人搞定点东西,心里暗爽就足够了,得不得分不要太往心里去.很多一个三角的网友也很牛啊.
      

  18.   

    1) 网络游戏:
    一:客户端:现在java也出了不少图形图像API,官方的开源的都不少,前一阵CSDN上有人还介绍了一个做JOGL的介绍,感觉功能蛮强的,相当于有牛人帮我们写好了很多实用的JNI,不过如果想用这个做游戏,内存估计要备足........,而且用户不要要求付出了同样的内存显卡CPU后,可以得到和极品飞车一样的画质。毕竟是用JNI是一种昂贵的代价,而且貌似脚本的、没有怎么优化java跑起来也不是很快。
    二:服务器端:java做网游的服务器端应该没有什么问题,而且可以发挥java语言的优势,让开发更迅速,运行更稳定。java语言越来越快,现在nio里java的网络性能比较令人满意了,再加上很多开源项目也提供了对java访问网络的api的封装,可以说,用java开发出一个高性能的服务器端可行性比较大。
    2) 单机游戏:和开发客户端一样。
    3) 游戏存档编辑器:这个需要很对对文件的原子级操作,而且粒度应该是byte甚至是bit型的。java的byte类型没有无符号数,用起来很别扭,而且,相比其他语言,java的位操作比较弱。但是可以肯定的是一定能够写的出来^_^
      

  19.   

    DeepNightTwo(深夜两点) 没看明白我得问题,要么就是我写的问题太含糊了.
    现在我只是想讨论游戏外挂的可行性,在网络游戏的外挂和单机游戏的外挂是否能够开发.不是游戏本身.BTW java应该是可以开发游戏的,不过对于3d类型的游戏恐怕速度上达不到要求,而且标准一直在改,版本不稳定后面没办法做开发.
      

  20.   

    【也说路过,友情up】这个事情恐怕大家已经都很熟悉了,而且见怪不怪了。根据那个帐号的行为模式,我高度怀疑那是个机器人。虽然做这么个机器人并不是什么超难的任务,但总是要花不少时间的。我想那个帐号的主人未必就对三角啊、星星啊什么的那么看重,恐怕还是“炫耀技术”的成分重一些吧。否则,就算养出两个星星,以这种不光彩的出身(大家有目共睹的),也未必能得到大家的尊重。再者,这种机器人应该算是 CSDN 的“外挂”了吧?hehe
      

  21.   

    感觉用java做外挂还是有难度的,不管是单机的还是网游的,都需要很多针对底层硬件的直接操作,需要和系统特殊API甚至驱动直接打交道,而且这个应该是比较重要的部分,如果用java做的话,就必须要用到很多JNI,这样的话就有点挂羊头卖狗肉的感觉了,呵呵不过做肯定是可以做的,只是不再是纯正的Java了