扑克手游 手游服务端下载和终端 是怎么通信

求教:用python写游戏的后端服务器,有什么好的实践? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
推荐学习书目
Python Sites
值得关注的项目
Python 编程
求教:用python写游戏的后端服务器,有什么好的实践?
19:57:18 +08:00 · 9604 次点击
不是大规模实时在线游戏,主要的需求是登录验证,用户数据的请求,以及某些操作的响应。比如偷菜、抢车位这种社交游戏,或者类似大掌门这种需要在线进行的手游。虽然实时性要求不是非常高,但是如果流量上去的话,并发和IO也会比较高。用python做后端有没有什么问题?有什么框架比较适合这类应用?Django能不能搞定这种事情?
13 回复 &| &直到
08:00:00 +08:00
& & 20:16:20 +08:00
似乎跟你要求很match
& & 20:34:56 +08:00
@ 确实很不错的样子,我去看看
& & 20:43:18 +08:00
我这里的开发是用Erlang写的服务端,以前的是C++,python的游戏服务端我还没有见到过。从业经历可能太短了解太少了
& & 20:49:28 +08:00
@ 云风BLOG不是说他们是LUA的,而且也开源掉了貌似
& & 20:55:31 +08:00
@ 国内可能用python的不多,有家被google收购的slide,以前在fb上做社交游戏的,就是用python。不过他们开发实力比较强,自己搞的架构
& & 21:45:35 +08:00
@ 云风的服务器框架是C的,开源在github,叫skynet。
& & 22:39:47 +08:00
哈,先生,在这里也能看到你。
& & 23:20:02 +08:00
& & 00:04:34 +08:00
前几天朋友还说让我看看他们用python做的服务器端的代码,我就在想为毛做游戏要用python做后端。。
& & 12:31:17 +08:00
用过twisted写过德州扑克和斗地主的游戏服务端
不过那已经是前几年的事情了
不过楼主的需求貌似不需要实时的。。
& & 12:35:53 +08:00
@ C&LUA吧,不过说真的我没看过代码……
& & 01:34:47 +08:00
忽然想起了这个帖子
后来翻看了朋友写的手游后端 棋牌对战的 还不算复杂 -,-
web框架是flask
数据库是mangodb
用了flask-admin 来管理后台数据 很方便 这是用flask的主要原因吧
特别的地方是 通讯是把json格式的数据转换成protobuf 第一次知道这玩意-,-
好了 希望能给你点启发
& & 23:55:36 +08:00
@ 多谢。
这两天我也又考虑了下,觉得可能我自己把需求想复杂了。初步像一般的web架构大概就可以搞定,比如你说的flask。
打算先用熟悉的技术把功能搞定,后面再做压力测试,根据瓶颈来优化。
& · & 2395 人在线 & 最高记录 2607 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.5 · 67ms · UTC 06:15 · PVG 14:15 · LAX 23:15 · JFK 02:15? Do have faith in what you're doing.一个棋牌的1
一个多人在线的棋牌类游戏的临近尾声,我参与了该项目的整个设计流程,并且完成了90%的核心。关于这个项目,有很多地方值得聊一聊。本系列不打算把这个项目将得多么详细规范,那是设计文档应该描述的,我打算只说说一些值得注意的地方。  这个项目的一个特别之处是,是,用户通过移动网络与通信。和PC相比,手机的处理能力极弱,而且网络流量费用昂贵。因为除了要考虑普通网络游戏的一些问题之外,这两点也需要在设计中充分考虑。  首先是开发语言的选择,由于服务器是的环境,MS的直接排除,至于MONO嘛,我实在不放心。可供选择的是和,Java胜在网络能力强大,开发周期短,有众多框架和开源库的支持,要写出烂得不可接受的代码也不容易;则胜在速度快。综合各方面因素,C++更容易把这个项目变成一堆代码噩梦,我们选择了Java。一、网络  网络游戏,首先面临的问题当然是如何进行网络通信。首先考虑的是HTTP协议,因为所有的J2ME手机都支持这个,我们当然想尽可能的兼容用户。而且HTTP协议封装程度已经非常高了,不用去考虑线程、同步、状态管理、连接池,不过HTTP协议有两个不爽的地方:  ◇ 协议无状态,这个问题已经困扰过很多人很多次了。我曾考虑过的解决办法是改造HTTP协议,在数据传输完成之后不关闭socket,但是这样做工作量非常大,在项目周期中,基本上就是Mission impossible,不予考虑。那么客户也就只能通过轮询的方式向服务器请求数据。  ◇ 网络流量过大。就这个项目来说,网络间传递的只是指令,但是每次传递都要加上一堆毫无用处的HTTP Head,再加上客户端需要做轮询,这个流量对于手机来说简直恐怖,经简单测试,按照0.03元/K的GPRS网络费用计算,一局牌居然要消耗1元多的费用(每秒轮询),实在不可接受。也许我们可以采用流量费包月的资费方式,不过这个话题与技术无关。  以上问题导致我们选择了Socket,这意味着我们将没有一个web环境,很多东西都要靠自己去实现:线程管理、客户状态监控、对象池、控制台……….  网络部分打算采用Java NIO来实现,这是一种新的网络监听方式,基于事件的异步通信,可以提高性能。每个客户端连接之后,会有一个独立的SocketChannel与它通信,这个SocketChannel会在用户的整个生存周期中存在。用户如果断开连接,服务器会得到-1,并且会抛出Connection reset异常,通过捕获这两个特征,可以在用户意外断开连接后清理相关的资源。由于NIO是异步通信的,所以没有复杂的线程管理。二、通信协议  这个项目并没有复杂的通信指令,命令数量很有限,但是还是有个关键问题需要关注:流量。为了尽量减小流量,我们使用字节代替来保存系统指令,这样可以使流量减少一半,比如使用一个字节来保存一张扑克牌,字节高位表示花色,字节低位表示数字,如果0代表黑桃,那么黑桃三就应该是0x03,这个需要靠位操作来实现:
byte card=(byte)(m)&&4)|((byte)n; //m左移四位,然后与n左或操作  游戏中需要传递用户的积分,这是一个大整数,使用四个字节来保存比较保险,将整数转换为四个字节的操作如下:public static byte[] translateLong(long mark){
byte[] b = new byte[4];
(int i = 0; i & 4; i++)
b = (byte) (mark &&& (24 - i * 8));
}  将四个字节转回来的操作如下:public static long translateByte(byte[] b){
int mask = 0
int temp = 0;
int res = 0;
for (int i = 0; i & 4; i++)
res &&= 8;
temp = b &
}三、连接池  由于没有一个web环境,所以我们需要自己实现一个数据库连接池,有一个项目叫做commons DBCP,这是一个基于自己的对象池(apache commons pool)实现的数据库连接池,我们可以直接拿来使用,apache的未必是最好的,但是极大可能比我们自己写的要好。Commons DBCP需要三个.jar:
commons-collections-3.1.jar、commons-dbcp-1.2.1.jar、commons-pool-1.2.jar这三个文件都可以在apache – Jakarta – commons项目下下载,加入到工程中即可。构造一个数据库连接池的代码如下:
import .sql.*;
import com.gwnet.games.antiLord.util.*;
import mons.dbcp.ConnectionF
import mons.dbcp.BasicDataS
import mons.dbcp.DataSourceConnectionF
private static BasicDataSource bds=new BasicDataSource();
private static ConnectionFactory fac=
//初始化连接池
bds.setDriverClassName(“org.postgresql.Driver”); //数据库驱动
bds.setUrl(“jdbc:postgresql://:5432/myDB”); //数据库url
bds.setUsername(“postgres”); //dba帐号
bds.setPassword(“XXXXXXXX”); //密码
bds.setInitialSize(100); //初始化连接数量
bds.setMaxIdle(10); //最大idle数
bds.setMaxWait(1000*60); //超时回收时间
fac=new DataSourceConnectionFactory(bds); //得到连接工厂
Connection conn=fac.createConnection(); //从池中获得连接
conn.close(); //释放连接,回到池中
//销毁连接池
bds.close();
fac=请自行处理操作中的各种异常。
无相关信息网络游戏开测表
网页游戏开服表新服
热门活动 共
开始:03-09|yxgg
开始:03-09|6637
开始:03-07|xunyou
开始:03-02|1k2k
开始:03-02|1k2k
开始:03-02|游戏王国
开始:03-01|虎牙
开始:02-29|武汉斗鱼网络科技
开始:02-29|武汉斗鱼网络科技
开始:02-27|bjl777
最新网络游戏入库
网络游戏动态
人气超动作武侠RPG我去玩《剑雨江湖》又推出新副本啦!单人副本栏中新推出“论剑江湖”副本,在这个副本中,玩家将与各大武林高手上演生...
网络游戏视角
网络游戏评测
网游期待榜
不删档内测
网页游戏 最新收录
网页游戏CG视频
搜索方式:
不删档内测
网页社区游戏
网页游戏试玩堂
手机游戏 进入
友情链接:
CopyRight&
聚游戏网 蜀ICP备号-6 All rights reserved. Design:Juren Technology
中国.四川省.成都市高新区府城大道西段399号(天府新谷)8栋2单元12层
版权:人人互动(集团)旗下 成都聚人科技有限公司 所有
禁止盗用本站风格,违者追究法律责任

我要回帖

更多关于 手游一键商业服务端 的文章

 

随机推荐