zoukankan      html  css  js  c++  java
  • 转:: 刺鸟:用python来开发webgame服务端(1)

    来源:http://ciniao.me/article.php?id=9

    ---------------

     刺鸟原创文章,转载请注明出处
        在开始之前,先简单描述一下项目的特点:我要实现的是一个mmorpg的webgame,地图上需要看到其他的玩家,战斗系统采用半回合制的模式,所谓的半回合制,即是:采用回合制的画面布局,友方和敌方分列左右,但是战斗的中途,其他的玩家可以及时的随时插入这场战斗。当然,作为一款rpgGame,装备加工,NPC对话,任务逻辑等是必不可少的了。

        在分析了需求以后,我为这款game的程序结构定义如下:客户端,毋庸置疑肯定是flash,服务端分为两块:一是通讯不需要很及时,但是会涉及到很多逻辑处理的模块(如:各UI窗口内的逻辑,NPC对话逻辑,装备加工等),我为此选择了PHP作为服务端,二是需要及时的通讯,但是逻辑处理相对简单的模块(如:地图模块,战斗系统,聊天等),从性能上考虑,要实现这些模块,首选的当然是C、C++等,但若选择这样太底层的语言,再加上当前的人员配置,必将意味着开发周期的增加。经过讨论,在ZengRong的建议下,决定尝试使用python(我选择的版本是2.6,以下代码均基于该版本)。

        首先,要测试的是python的socket处理能力,我选择了Twisted作为网络处理库,在我的开发机(windows 2003)上安装Twisted。安装过程很easy,到pypi上找到Twisted的最新版本:http://pypi.python.org/pypi/Twisted/ 下载Twisted-11.0.0.winxp32-py2.6.msi安装即可。

    测试是否安装成功:

    from twisted.internet import reactor

    在我的电脑上,运行该脚本后提示缺少模块:

    ImportError: No module named zope.interface

    http://pypi.python.org/pypi/zope.interface 下载并安装最新的zope.interface模块:zope.interface-3.7.0-py2.6-win32.egg。好吧,也许很多新手看到这个“蛋”一样的egg文件,不知如何安装,其实很简单,你需要的有以下几步:

    1:先下载并运行一个叫做ez_setup.py的脚本,这个脚本会自动到网上下载相关的安装程序,提示完成后,会在python安装目录的的scripts文件下生成几个exe可执行文件。
    2:将zope.interface-3.6.4-py2.6-win32.egg放到{python安装目录}Scripts下
    3:开始->运行->CMD

    C:>cd Python26Scripts
    C:Python26Scripts>easy_install.exe zope.interface-3.6.4-py2.6-win32.egg


    安装完毕。接下来写一最简单的个socket的服务器:

    from twisted.internet.protocol import Factory,Protocol
    from twisted.internet import reactor
    class gameSocket(Protocol):
        #有新用户连接至服务器
        def connectionMade(self):
            print 'New Client'
        
        #客户端断开连接
        def connectionLost(self,reason):
            print 'Lost Client'
        
        #收到客户端发送数据
        def dataReceived(self, data):
            print 'Get data:' + str(data)
    if __name__=='__main__':
        f = Factory()
        f.protocol = gameSocket
        reactor.listenTCP(5200,f)
        print 'server started...'
        reactor.run()


        你没看错,在python的世界里,一切就是这个简单,这样就实现了一个socket服务器,监听5200端口,我们来运行它试试,看能否正常工作,作为现阶段的socket客户端,最简单的当然就是telnet了:

    telnet 127.0.0.1 5200

     BingGo!一切正常,但是它的处理能力,并发连接等性能如何呢?一切都还需要进一步的测试,不过我们开了个好头,不是吗?
     

    #本文由刺鸟原创,欢迎转载,但请保留出处,也欢迎对本文感兴趣的同学多多交流。#

    ------

  • 相关阅读:
    HDU 4947 GCD Array 容斥原理+树状数组
    Codeforces Round #363 (Div. 2)
    白书 博弈学习
    2016 Multi-University Training Contest 1
    KM算法 PK 最小费用最大流
    final 发布 领跑衫获奖感想
    2016"百度之星"
    爆打团队 2016.05.05 站立会议
    爆打团队 四则运算 beta视频
    爆打团队 2016.04.27 站立会议
  • 原文地址:https://www.cnblogs.com/ezhong/p/3385732.html
Copyright © 2011-2022 走看看