大家好,请教一些问题

8 views
Skip to first unread message

Van

unread,
Jul 4, 2009, 9:18:16 AM7/4/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
想请教一下,关于使用Python来开发客户端游戏的问题。

公司的产品线以前一直都是在WEB上的FLASH棋牌游戏,最近想立项做客户端的棋牌类游戏(类似QQ游戏大厅),之前对Python也是有耳闻其强大
以及便捷,所以提议使用Python来作为客户端的开发语言,近日都在查阅各类关于Python的资料,调研此项目的可行性。由于本人也不懂
Python,其中产生了一些疑问(甚至是一些比较基础比较简单的问题),在这希望能有更多的朋友能一起来讨论和回答。

1、Python是否适合做此类应用?
2、GUI方面使用哪种框架比较适合?
3、在执行的效率上是否会有问题?
4、在不同的平台上,客户端的移植是否方便快捷?(比如在WIN下跑的与LINUX下跑的客户端,不需要重写程序代码,只是重新打包即可)
5、程序的安全性如何?(如何给Python代码加密--生成pyc是最好的方法了吗?)
6、有否其他可能出现的问题?

shell909090

unread,
Jul 4, 2009, 12:15:00 PM7/4/09
to pyth...@googlegroups.com
Van 写道:
不是技术人员吧?
首先,你先考虑一下客户环境的部署。flash自然有adobe给出安装包。你准备怎么
说服游戏玩家先去弄个python运行环境来装?还是你打算学 keepnote他们,干脆
把python打到安装包里面?
其次,你打算怎么弄GUI?pygtk?pyqt?wx?每个都是要装一堆的客户端框架。
如果你觉得这两个问题好解决,那到没有太多的别的困难。py可以转exe的,到时
候安全性和效率一并解决。移植问题上,python本身就是跨平台的。只要你不用专
属平台的包。

Van

unread,
Jul 4, 2009, 12:39:18 PM7/4/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
> 不是技术人员吧?
> 首先,你先考虑一下客户环境的部署。flash自然有adobe给出安装包。你准备怎么
> 说服游戏玩家先去弄个python运行环境来装?还是你打算学 keepnote他们,干脆
> 把python打到安装包里面?
> 其次,你打算怎么弄GUI?pygtk?pyqt?wx?每个都是要装一堆的客户端框架。
> 如果你觉得这两个问题好解决,那到没有太多的别的困难。py可以转exe的,到时
> 候安全性和效率一并解决。移植问题上,python本身就是跨平台的。只要你不用专
> 属平台的包。


是的,我们现在就是通过FLASH+SWFKIT的方式来打包FLASH来“伪装”成客户端,但是开发的时候诸多不便,所以决定放弃这样的方式,重新开
发过客户端。
是打算把py放进到安装包里。用某些打包工具是否可以把PY打包成EXE,直接运行。(也就是把环境打包进去了)
在网上找了些资料,也问了一些人,都说效率上有问题?不跟VC这些比较,不知道与JAVA和C#这些客户端比较,是否效率上也有差距。
因为是游戏,所以客户端GUI,界面肯定必须自定义,不知道这方面有什么好的框架介绍吗?

Can Xue

unread,
Jul 4, 2009, 12:40:31 PM7/4/09
to pyth...@googlegroups.com
2009/7/5 shell909090 <shell...@gmail.com>:

> Van 写道:
>> 想请教一下,关于使用Python来开发客户端游戏的问题。
>>
>> 公司的产品线以前一直都是在WEB上的FLASH棋牌游戏,最近想立项做客户端的棋牌类游戏(类似QQ游戏大厅),之前对Python也是有耳闻其强大
>> 以及便捷,所以提议使用Python来作为客户端的开发语言,近日都在查阅各类关于Python的资料,调研此项目的可行性。由于本人也不懂
>> Python,其中产生了一些疑问(甚至是一些比较基础比较简单的问题),在这希望能有更多的朋友能一起来讨论和回答。
>>
>> 1、Python是否适合做此类应用?
>> 2、GUI方面使用哪种框架比较适合?
>> 3、在执行的效率上是否会有问题?
>> 4、在不同的平台上,客户端的移植是否方便快捷?(比如在WIN下跑的与LINUX下跑的客户端,不需要重写程序代码,只是重新打包即可)
>> 5、程序的安全性如何?(如何给Python代码加密--生成pyc是最好的方法了吗?)
>> 6、有否其他可能出现的问题

To Van:

1. 如果你的团队都不熟悉 Python,那么真的不适合。单纯从语言的角度,我看除了最好使用汇编的东西之外没有什么不适合用 Python 的。
2.游戏本身可以选择一些有 Python Binding 的 3D game engine,印象中不止一两款,此外还有 PyGame
之类的。棋牌类用 2D 的应该也够了。至于大厅什么的,wxPython、PyGTK 均不错。PyQT 需要商业授权,否则是 GPL 的。
3.不会比 C/C++ 的效率更好,不会比 Flex 开发的效率更差。
4.主要取决于是否使用只有某个平台才有的 API。换句话说,应该用 OpenGL 而不要用 DirectX。
5.搜索列表关于 cython 的讨论。我个人认为 pyc 几乎没有保护作用。
6.不动手不会知道的。Just do it!


> 不是技术人员吧?
> 首先,你先考虑一下客户环境的部署。flash自然有adobe给出安装包。你准备怎么
> 说服游戏玩家先去弄个python运行环境来装?还是你打算学 keepnote他们,干脆
> 把python打到安装包里面?
> 其次,你打算怎么弄GUI?pygtk?pyqt?wx?每个都是要装一堆的客户端框架。
> 如果你觉得这两个问题好解决,那到没有太多的别的困难。py可以转exe的,到时
> 候安全性和效率一并解决。移植问题上,python本身就是跨平台的。只要你不用专
> 属平台的包。
>

To shell909090:

1.打包 python 及所需的包不是难事,通常也不存在授权问题,不应该成为困扰。
2.py2exe 对代码的保护能力与 pyc 一样,无非是多了一 zip 把一堆 pyc 包起来而已。对安全性没有额外的帮助。
3.python 是跨平台不等于库是跨平台的,你能在 *nix 下跑 pywin32?

--
XUE Can

shell909090

unread,
Jul 5, 2009, 1:50:18 AM7/5/09
to pyth...@googlegroups.com
Can Xue 写道:
2009/7/5 shell909090 <shell...@gmail.com>:
  
Van 写道:
    
想请教一下,关于使用Python来开发客户端游戏的问题。

公司的产品线以前一直都是在WEB上的FLASH棋牌游戏,最近想立项做客户端的棋牌类游戏(类似QQ游戏大厅),之前对Python也是有耳闻其强大
以及便捷,所以提议使用Python来作为客户端的开发语言,近日都在查阅各类关于Python的资料,调研此项目的可行性。由于本人也不懂
Python,其中产生了一些疑问(甚至是一些比较基础比较简单的问题),在这希望能有更多的朋友能一起来讨论和回答。

1、Python是否适合做此类应用?
2、GUI方面使用哪种框架比较适合?
3、在执行的效率上是否会有问题?
4、在不同的平台上,客户端的移植是否方便快捷?(比如在WIN下跑的与LINUX下跑的客户端,不需要重写程序代码,只是重新打包即可)
5、程序的安全性如何?(如何给Python代码加密--生成pyc是最好的方法了吗?)
6、有否其他可能出现的问题
      
To Van:

1. 如果你的团队都不熟悉 Python,那么真的不适合。单纯从语言的角度,我看除了最好使用汇编的东西之外没有什么不适合用 Python 的。
2.游戏本身可以选择一些有 Python Binding 的 3D game engine,印象中不止一两款,此外还有 PyGame
之类的。棋牌类用 2D 的应该也够了。至于大厅什么的,wxPython、PyGTK 均不错。PyQT 需要商业授权,否则是 GPL 的。
3.不会比 C/C++ 的效率更好,不会比 Flex 开发的效率更差。
4.主要取决于是否使用只有某个平台才有的 API。换句话说,应该用 OpenGL 而不要用 DirectX。
5.搜索列表关于 cython 的讨论。我个人认为 pyc 几乎没有保护作用。
6.不动手不会知道的。Just do it!

  
1.这点倒是很对,深入一套你不熟悉的技术领域是有风险的。不过,你觉得内核驱动应该用什么语言?汇编还是python?
2.swf用不到那个,要用的到早不用flash了。

  
不是技术人员吧?
首先,你先考虑一下客户环境的部署。flash自然有adobe给出安装包。你准备怎么
说服游戏玩家先去弄个python运行环境来装?还是你打算学 keepnote他们,干脆
把python打到安装包里面?
其次,你打算怎么弄GUI?pygtk?pyqt?wx?每个都是要装一堆的客户端框架。
如果你觉得这两个问题好解决,那到没有太多的别的困难。py可以转exe的,到时
候安全性和效率一并解决。移植问题上,python本身就是跨平台的。只要你不用专
属平台的包。

    
To shell909090:

1.打包 python 及所需的包不是难事,通常也不存在授权问题,不应该成为困扰。
2.py2exe 对代码的保护能力与 pyc 一样,无非是多了一 zip 把一堆 pyc 包起来而已。对安全性没有额外的帮助。
3.python 是跨平台不等于库是跨平台的,你能在 *nix 下跑 pywin32?
  

1.打包真的不是难事,维护才难。客户端附加python包,首先是增大了客户端大小。这到还好说,毕竟用户多数也不在意大小。但是,这样一来客户端就要 细分很多版本。就以python官方来说,就有5种发布。linux,win32,win64,macos,还有一个好像是bz源码。那么,发行就有两种 选择。每次发行的版本都有4个选项给客户选择,或者全部打到一起。无论哪种方式我都觉得很啰嗦,更何况每次升级还要维护这堆东西,想想都觉得头大。
2.如果说pyc不够安全,那就不用多说了。就算你写成内核驱动都可以反汇编,没啥安全的。
3.注意我最后一句话。

Jiahua Huang

unread,
Jul 5, 2009, 2:09:06 AM7/5/09
to pyth...@googlegroups.com
2009/7/5 shell909090 <shell...@gmail.com>:

> 1.打包真的不是难事,维护才难。客户端附加python包,首先是增大了客户端大小。这到还好说,毕竟用户多数也不在意大小。但是,这样一来客户端就要

看来 shell909090 真没打过包 :)

py2exe 对普通的 python 程序,弄出的 .exe 是 2M,
对普通的 PyGtk 程序,则是 4M 多点,


对于 Windows 下绝大多数客户端来说, 2M、4M 绝对不算啥事情。

至于说版本,就更加不是一回事了,
Linux 自然是用系统 Python,
而 Windows 直接用 py2exe 将用到的 python 和其他运行库打包进去,根本就不用理会你系统里到底有没有,是哪个。


而如果说源码安全,关键业务都服务端做了,客户端有啥要在乎,
大不了用 cython 把 .py 弄 .pyd

shell909090

unread,
Jul 5, 2009, 12:06:05 PM7/5/09
to pyth...@googlegroups.com
Jiahua Huang 写道:
2009/7/5 shell909090 <shell...@gmail.com>:
  
1.打包真的不是难事,维护才难。客户端附加python包,首先是增大了客户端大小。这到还好说,毕竟用户多数也不在意大小。但是,这样一来客户端就要
    
看来 shell909090 真没打过包 :)

py2exe 对普通的 python 程序,弄出的 .exe 是 2M,
对普通的 PyGtk 程序,则是 4M 多点,
  
哈哈,这个倒是方便多了。看来keepnote的研发是个小白,TortoiseHg的也是
他们打包里面放了整个python,至少7M以上,而且细分了很多版本。
py2exe是怎么处理32和64的差异呢?


对于 Windows 下绝大多数客户端来说, 2M、4M 绝对不算啥事情。

至于说版本,就更加不是一回事了,
Linux 自然是用系统 Python,
而 Windows 直接用 py2exe  将用到的 python 和其他运行库打包进去,根本就不用理会你系统里到底有没有,是哪个。


而如果说源码安全,关键业务都服务端做了,客户端有啥要在乎,
大不了用 cython 把 .py 弄 .pyd
其实从业务角度说,pyc和pyd的安全性差不多。要说普通用户,都解不开。要说专业程序员,就是python反汇编和反汇编的区别。

Leo Jay

unread,
Jul 5, 2009, 10:54:52 PM7/5/09
to pyth...@googlegroups.com
2009/7/6 shell909090 <shell...@gmail.com>

>
> 哈哈,这个倒是方便多了。看来keepnote的研发是个小白,TortoiseHg的也是。
> 他们打包里面放了整个python,至少7M以上,而且细分了很多版本。
> py2exe是怎么处理32和64的差异呢?
>

64位windows可以运行32位程序的啊,不需要特别做64位版本的吧?

>
> 其实从业务角度说,pyc和pyd的安全性差不多。要说普通用户,都解不开。要说专业程序员,就是python反汇编和反汇编的区别。
>

pyc反向过来是python源码,pyd反向过来是汇编。这个差很多吧。


--
Best Regards,
Leo Jay

shell909090

unread,
Jul 5, 2009, 11:13:41 PM7/5/09
to pyth...@googlegroups.com
Leo Jay 写道:
原始源码?还是中间码?
这个到真没研究,不过感觉上应该是中间码吧?

Leo Jay

unread,
Jul 5, 2009, 11:35:09 PM7/5/09
to pyth...@googlegroups.com
2009/7/6 shell909090 <shell...@gmail.com>:
>
> 原始源码?还是中间码?
> 这个到真没研究,不过感觉上应该是中间码吧?
>

不,已经有一些工具可以把pyc很好的反向到源码了。

shell909090

unread,
Jul 5, 2009, 11:56:52 PM7/5/09
to pyth...@googlegroups.com
Leo Jay 写道:
2009/7/6 shell909090 <shell...@gmail.com>:
  
原始源码?还是中间码?
这个到真没研究,不过感觉上应该是中间码吧?

    
不,已经有一些工具可以把pyc很好的反向到源码了。


  
那py2exe是怎么处理反射的呢?只要有反射,就会有符号。只要有符号,就可以反向。

Leo Jay

unread,
Jul 6, 2009, 12:14:28 AM7/6/09
to pyth...@googlegroups.com
2009/7/6 shell909090 <shell...@gmail.com>:

>
> 那py2exe是怎么处理反射的呢?只要有反射,就会有符号。只要有符号,就可以反向。
>
>

如Can Xue所说,


py2exe 对代码的保护能力与 pyc 一样,无非是多了一 zip 把一堆 pyc 包起来而已。对安全性没有额外的帮助。


没有人说py2exe可以保护代码啊。

beck917

unread,
Jul 6, 2009, 1:09:37 AM7/6/09
to pyth...@googlegroups.com
不靠谱。。。还记得《梦断代码》那本书吗??他们就是一帮对python不熟悉的大牛用python开发了一款桌面程序,最终失败了

说实话,为什么不用air??甚至可以考虑.net??

袁雁波

unread,
Jul 6, 2009, 1:11:09 AM7/6/09
to pyth...@googlegroups.com
我觉得靠谱不靠谱,跟人有很大关系

2009/7/6 beck917 <bec...@gmail.com>

shell909090

unread,
Jul 6, 2009, 2:27:40 AM7/6/09
to pyth...@googlegroups.com
Leo Jay 写道:
2009/7/6 shell909090 <shell...@gmail.com>:
  
那py2exe是怎么处理反射的呢?只要有反射,就会有符号。只要有符号,就可以反向。


    
如Can Xue所说,
py2exe 对代码的保护能力与 pyc 一样,无非是多了一 zip 把一堆 pyc 包起来而已。对安全性没有额外的帮助。


没有人说py2exe可以保护代码啊。


  
哈,谢谢。
我也不是要论证py2exe对代码的保护能力,而是想看看到底这东西是怎么做的。

那么简单总结一下:
1.py2exe可以用来打包,windows和linux的发行都不算太麻烦。
2.目前没什么方法能让python代码变得足够安全,差不多都能还原成源码。(有方法直接转成native代码么?怎么解决的exec "pring a;"?)
3.建议不要用python来开发,因为你们不够熟悉。
4.因为目前所有方法都是基于pyc的,执行效率最高和C#, Java一个档次,肯定比不上C++。
但是个人感觉效率问题应该不很重要,否则你们早停用flash换C++了。

然后是建议:
1.可以用air。不是很熟悉,有熟悉的介绍一下么?不过你们原本用flash的,入手应该比较快。
2.C#,这个比较熟悉,不推荐你用。虽然linux下面有mono,不过版权还比较存疑。
就算版权没疑问,mono也不是标准系统中的,你得说服客户一个个装。就算你能说服别人,也很难说服我,因为我很讨厌C#^_^。
3.Java,这个就不多说了...
Reply all
Reply to author
Forward
0 new messages