转:: 刺鸟:用python来开发webgame服务端(5)
摘要:来源:http://ciniao.me/article.php?id=19---------------刺鸟原创文章,转载请注明出处在前面的文章中,我们已经开始了不少逻辑功能的开发,在这期间也有不少可以分享的经验点,这个我们以后慢慢道来。今天,我们主要讨论下如何让服务端能进行分布式部署和工作。一:为什么要支持分布式部署和开发众所周知,python是单线程的语言,存在GIL锁、无法利用多核CPU等诸多限制,为了能让服务端能承载更多的用户,我们必须让程序能在逻辑上、甚至物理上分开,当用户达到一定数量的时候,我们能新开一个进程来响应请求,或多加一台服务器来处理请求。这样就能达到理论上无限扩展的可能性
阅读全文
转:: 刺鸟:用python来开发webgame服务端(4)
摘要:来源:http://ciniao.me/article.php?id=14---------------刺鸟原创文章,转载请注明出处前面的工作都已准备就绪,现在我们得来看看服务端怎么和客户端之间进行通信了,Python和FLASH之间的通信,我整理为以下3种:1、用现成的协议及类库处理,比如:pyamf2、自己封包进行二进制数据流通信3、用JSON字符串通信一、JSON和二进制数据流的优缺比较pyamf有比较现成的文档,因此,这里我主要研究研究后两种。我们先简单分析下JSON和数据流各自的优缺点:JSON:优点:数据结构灵活,无需先制定复杂的协议;跨语言之间基本都有完整的解决方案。缺点:传送的
阅读全文
转:: 刺鸟:用python来开发webgame服务端(3)
摘要:来源:http://ciniao.me/article.php?id=11---------------刺鸟原创文章,转载请注明出处在之前的准备工作中,我们已经建立了一个socket服务器,并且经过了简单的测试,得到的结论是python可以满足我们的需求,那么接下来,我们要解决的是身为webgame服务端必须的几个功能模块:一、记录和维护所有客户机的状态更新:按照jinmin_lan同学的建议,这里直接用self.transport.sessionno即可,查twisted文档的时候我忽略了这个东西。因此无需按照我下面的方法来手动维护,好吧,我造了一次轮子……为了实现这个功能,我们先回过头来分
阅读全文
转:: 刺鸟:用python来开发webgame服务端(2)
摘要:来源:http://ciniao.me/article.php?id=10---------------刺鸟原创文章,转载请注明出处就在刚才,我们用基于python下的Twisted库写了一个简单的socket服务器,不知道它的性能和基本的承载到底如何呢?接下来,我们作一个简单的测试。说是简单的测试,一点也不假,因为这确实只是最基本的测试,流程是这样的:用python写一个客户端,设定连接数,然后向我们指定的端口发起socket连接,连接成功后,向服务端发送一个字符串并一直保持连接状态,服务端在收到客户端的内容后,向它回复:bingo!igotyourmsg:{content}。好啦,有了需求
阅读全文
转:: 刺鸟:用python来开发webgame服务端(1)
摘要:来源:http://ciniao.me/article.php?id=9---------------刺鸟原创文章,转载请注明出处在开始之前,先简单描述一下项目的特点:我要实现的是一个mmorpg的webgame,地图上需要看到其他的玩家,战斗系统采用半回合制的模式,所谓的半回合制,即是:采用回合制的画面布局,友方和敌方分列左右,但是战斗的中途,其他的玩家可以及时的随时插入这场战斗。当然,作为一款rpgGame,装备加工,NPC对话,任务逻辑等是必不可少的了。在分析了需求以后,我为这款game的程序结构定义如下:客户端,毋庸置疑肯定是flash,服务端分为两块:一是通讯不需要很及时,但是会涉及
阅读全文