webgame开发中遇到技术问题总结
201*.8.27(13:00~17:00)PHP通道项目开发交流会的几点总结
1.防并发
并发导致的原因:
当游戏数据库处于高压状态,例如用户同时在线高峰或者数据库备份阶段,会导致sql执行耗时加长。当玩家连续点击或者使用外挂,在短时间内发送多次请求,导致后台多个进程并行执行,前面的进程在处理未更新数据前,后继进程读取的还是之前的脏数据,后继进程最后更新将错误的数据覆盖,导致并发问题的产生。实例图:
解决方案:
方案1:在数据更新前,加where语句判断数据是否被改变,如果数据不对应,取消更实例:$sql=“updategoldsetgold_num=85wheregold_num=100”
数值类型的也可以采用:$sql=“updategoldsetgold_num=gold_num-10where新,回滚操作。gold_num-10>=0”
方案2:在数据库里建一个表user_lock,共两个字段,User_id和Key,User_id当然要作主键,Key用UNSIGNEDsmallint(0,65535)应该就可以了,用户要两次随机到同一样数字的概率是65536分之一,就算该用户RP极好随机到了,那也就是用户的这次操作不成功,并不会造成严重的后果。如果实在不放心,那就用UNSIGNEDmediumint(0,16777215)。用户注册进来的时候,默认为0。游戏里,user静态类,提供user::lock(),和user::unlock()两个方法,在有数据库更新的请求过来时,我们先调用user::lock()方法,获得user_lock表里的key字段的值,并保存在user静态类里,之后按正常过程处理我们的游戏逻辑,完全不用考虑并发,在处理完后,开始更新数据,begin,插入数据,同样不用考虑并发,接下来就是最重要的了,在commit之前,调用user::unlock(),该方法会重新生成一个key值写入数据库,写入的时候,where条件里加入之前得到那个key,然后判断影响条数,如果影响条数为0,表示是脏数据,不能commit,如果为1,表示成功,OK,commit。
实例://开始游戏的逻辑user::lock();
//判断是否达到建筑条件................
//判断是否有建筑队列.......
.......
开始操作数据库conn::begin();//更新资源//插入队列
//改变建筑状态
//最最重要的一步user::unlock();
conn::commit();
show_msg("建筑成功");
点评:建议使用第二种方案,1.模块化易用,2.第一种方案需要严格逻辑判断,容易疏忽导致错误,3.在更新语句较多的情况下,第一种方案需要先把所有数据读出来,增加了数据库负担,和降低了程序效率。
2.事物的处理
产生的问题:事物由begincommit组成,但是当出现beginbegincommit时,第二个begin将自动提交事物,接下去的sql变成非事物执行,不能保证事物执行的完整性,从而导致隐藏的bug发生。
第二个begin的出现,导致自动提交,并且后面的sql语句在非事物中执行,从而产生了问题实例图:
Begin….….….….….Commit
Begin….….commit这个commit处于失效状态这是程序中存在的嵌套的子程序解决方案:
在db类中,加入计数器的概念,但出现begin后计数器+1,再次出现begin再+1,…,当出现commit时,计数器-1。只有当计数器==0,时才真正执行begin和commit,计数器>0都直接跳过,不执行。这样就保证,begin和commit只执行一次,中间的都跳过。
3.MemCahce失败后的重试
MemCache是不稳定的,有一定几率连接失败,或者读取失败,写入失败,这时程序需要有稳健的处理机制,比如重试或者转到数据库读取..
4.Flash通信协议:AMF(二进制类似json数组)
通信协议统一采用:AMF协议。
5.后端服务程序,要做内存限制
后台服务进程,要控制好内存的使用,如果不做限制,会导致服务器失去响应。
这个commit同样失效状态
6.MEMcahce结合采用PHP内存缓存,但要注意清除
在PHP中缓存变量,可以适当减少对MemCache的请求次数,减小压力,提高程序效率实例图:
缓存流程图:
开始获取缓存Md5(Sql)作为Key值第一步判断第二步判断第三步判断php缓存数组中是否存在判断MEM中是否存在从INI库中获取值从MEM中获取值将值写入MEM中写入PHP缓存数组中更新该Key的最后使用时间,使用总次数(该功能可根据参数配置关闭)返回结果
7.尽量不要加载配置文件,而是用MEMcache
优势:避免一次性加载大量数据,提高程序效率,同时便于维护。
8.后台进程控制,统一使用
优势:使用公司统一的进程控制系统,功能和稳定性有保障
9.功能模块的开关
对于已经公测的游戏,大型的新功能,可以采用配置开关,通过开关,可以自由灵活的设置新功能的开启、关闭,方便更新,便于维护。
10.语言包,前后端都用,要尽量小
前台加载语言包缓存,后台记录所有语言包,语言包要控制大小,尽量小。
11.统一直接用SQL,不要用组装
建议直接使用sql,不要采用java概念中的ORM。直接使用方面灵活,便于查找问题。
12.过程化,统一功能,归类,比如金币类,英雄类,建筑类,wiki集中文档
不必追求绝对的对象化,将游戏的逻辑整理清晰,比高程序的共用性,便于维护。将每
人写的模块,发布于wiki中,便于其他成员查找调用,减少沟通成功..
13.数据库字符串自动截断,数值型上限,无符号问题,整型数据传入小数(验证)
1.字符型字段,在插入超过长度的字符串,会自动截断,这时需要判断返回值,如果
存在问题,需要根据返回值进行处理。
2.数值型上限,设计数值型长度时,尽量放宽,因为以后极可能扩展延伸,导致数据
写入超过限定值,导致bug3.无符号数值型,写入极限值,会自动变为0;减成负数,会变成极限大值(这个问题
在mysql版本5.0之前发现,在5.6版本为自动截取)4.整型数据,写入小数,会自动转为整数
14.服务器时间不同步问题,建议统一使用数据库时间
多服务器容易导致时间不同步,此时不要直接采用各服务器时间,统一使用数据库的时间“selectnow()asdb_time”。
15.要执行SQL,才能连接数据库,采用connet不要用Pconnet
框架中,不要每次都直接连接数据库,而是在有sql请求的时候,判断是否有连接,没有再进行连接。不要使用pconnet长连接,因为这个容易导致连接数饱和,后面的连接不上,采用短连接connet。
16.使用xdebug或者xprof调试PHP程序,检查程序瓶颈
适当使用辅助工具,坚持程序执行的瓶颈,帮助优化程序。
17.通用GM系统
使用公司统一的GM系统,可以显著的提高开发效率,避免重复开发
18.框架的统一入口和出口
程序框架中,入口和出口,必须统一,方便集中处理。
19.mysql数值类型与长度的关系
注意:数值的极限值取决于类型(tinyint、smallint、mediumint、int、bigint),而不是其长度,长度只是控制显示。
扩展阅读:1.1.webgame相关技术介绍
人龙游戏工作室
webgame相关技术介绍
Version1.0
编制:日期:李恒201*-12-20批准:日期:变更履历
日期版本修改说明修改人核准人审核意见1/人龙游戏工作室
目录
1游戏类型............................................................................................................................................4
1.1ACT动作类.............................................................................................................................4
1.2FTG格斗类.............................................................................................................................41.3STG卷轴式射击类..................................................................................................................41.4FPS第一人称射击类...............................................................................................................41.5SLG策略类.............................................................................................................................41.6RPG角色扮演类.....................................................................................................................41.7AVG剧情探险类......................................................................................................................41.8SIM模拟现实类.......................................................................................................................41.9SPG竞技体育类.....................................................................................................................41.10RAC赛车类...........................................................................................................................41.11PUZ益智类...........................................................................................................................51.12MUG音乐类..........................................................................................................................51.13ETC其它类...........................................................................................................................5
2什么是网页游戏WEBGAME..............................................................................................................5
2.1.1网页游戏201*十大排行榜...........................................................................................53网页游戏的开发团队...........................................................................................................................5
3.1策划........................................................................................................................................5
3.1.1介绍..............................................................................................................................63.1.2岗位职责.......................................................................................................................63.1.3工作分工.......................................................................................................................63.1.4必备知识.......................................................................................................................63.1.5策划流程.......................................................................................................................63.2美术........................................................................................................................................7
3.2.1工作分工.......................................................................................................................73.3程序........................................................................................................................................8
3.3.1工作分工.......................................................................................................................83.4测试........................................................................................................................................8
3.4.1工作内容:...................................................................................................................8
4网页游戏的实现技术...........................................................................................................................84.1客户端.....................................................................................................................................8
4.1.1纯页面技术:JavaScript/Vbscirpt............................................................................84.1.2Flash插件技术:FLASHActionScript..........................................................................84.1.3自定义插件:ActiveX................................................................................................8
2/人龙游戏工作室
4.2服务端.....................................................................................................................................8
4.2.1页面服务端:ASP/ASP.NET/PHP/JSP........................................................................84.2.2逻辑服务端:C/C++/Java............................................................................................84.3数据库.....................................................................................................................................8
4.3.1MSSQLServer/MySQL..............................................................................................8
3/人龙游戏工作室
1游戏类型
1.1ACT动作类
英文全称ActionGame,玩家控制游戏人物用各种武器消灭敌人以过关的游戏,不追求故事情节,如《超级玛丽》、《星之卡比》、《波斯王子》等等。
1.2FTG格斗类
由玩家操纵各种角色与电脑或另一玩家所控制的角色进行格斗的游戏。按呈画技术可再分为2D和3D两种,2D格斗游戏有著名的《街头霸王》系列、《拳皇》系列等;3D格斗游戏如《铁拳》等。
1.3STG卷轴式射击类
一般指的是卷轴式射击游戏,《雷电》、《鲛鲛鲛》、《空牙》、《沙罗曼蛇》系列、《战区88》等分类:射击、光枪射击(英文缩写均为STG,英文全称ShootGame)。
1.4FPS第一人称射击类
以第一人称视角使用各种武器,主要是枪械进行射击,消灭敌人的游戏。例如我们玩的CS、Quake系列等等游戏。
1.5SLG策略类
分类:策略(SLG,英文全称StrategyGame)、即时战略(RTS,英文全称Real-TimeStrategyGame),代表作有《魔兽争霸》、《星际争霸》、《帝国时代》等等。
1.6RPG角色扮演类
由玩家扮演游戏中的一个或数个角色,有完整的故事情节的游戏。与冒险类游戏区分很简单,RPG游戏更强调的是剧情发展和个人体验,如《最终幻想》、《仙剑奇侠传》、《暗黑破坏神》等。
1.7AVG剧情探险类
AVG的特色是故事情节往往是以完成一个任务或解开某些迷题的形式出现而且在游戏过程中强调谜题的重要性。动作类AVG如《生化危机》系列、《古墓丽影》系列等;解迷类AVG代表是《神秘岛》系列。分类:文字冒险(AVG,英文全称AdventureGenre)、动作冒险(AAVG,英文全称ActionAdventureGenre)
1.8SIM模拟现实类
在模拟育成游戏中,玩家培养的对象主要是人或生物,也可以是机器人或者机械生命体,其游戏目的就是让培养对象不同方面的能力得到提升,根据能力差异可以达成不容的目标或结局。《模拟人生》、《偶像大师》、《美少女梦工场》、《任天狗》都属于模拟育成游戏的范畴。分类:模拟育成、模拟经营(英文缩写均为SIM,英文全称SimulationGame)
1.9SPG竞技体育类
模拟各类竞技体育运动的游戏,花样繁多,如《FIFA》系列、《NBALive》系列、《实况足球》系列、《VR网球》系列等。
1.10RAC赛车类
在电脑上模拟各类赛车运动的游戏,通常是在比赛场景下进行,代表作有《极品飞车》、《山脊赛车》、《摩托英豪》等。
分类:竞速(RAC,英文全称RacingGame)竞速游戏俗称“赛车游戏”,因为其中大部分游戏需要驾驶车辆进行比赛,或对速度进行挑战。著名的赛车游戏系列有《GT赛车》、《头文字D》、《火爆狂
4/人龙游戏工作室
飙》等。但并不是所有的竞速游戏驾驶的都是车辆,也有摩托艇、飞行器或是一些科幻色彩浓重的未来交通工具,比如《F-ZERO》、《反重力赛车》等。
1.11PUZ益智类
PUZ游戏多需要玩家对游戏规则进行思考,判断。系统表现相当多样化,主要依游戏规则制定。由于对游戏操作不需要太高要求,代表作品为《俄罗斯方块》系列,《泡泡龙》系列等。分类:益智(PUZ,英文全称PuzzleGame)
PUZ原来指用于培养和开发儿童智力的拼图游戏,之后概念得到扩展,引申为各类益智休闲游戏。《俄罗斯方块》是其中最为经典的作品,《宝石方块》、《旋转泡泡球》、《LUMINES》等也是大家喜闻乐见的益智游戏。本次分类会将益智游戏的范围进一步扩充,《脑白金》、《找碴博物馆》等原本归于ETC类型的健脑类游戏,也一并归为益智游戏类型。其他归为益智类的还有少量以智力问答为核心内容的游戏。
1.12MUG音乐类
培养玩家音乐敏感性,增强音乐感知的游戏。伴随美妙的音乐,有的要求玩家翩翩起舞,有的要求玩家手指体操,这类游戏的代表作品有《复员热舞革命》系列,《太鼓达人》系列,《DJ》系列。
分类:音乐、节奏节拍(MUG,英文全称MusicGame)音乐游戏是一种音乐节奏、指令编排和操作反馈之间彼此互动的游戏类型。该类型出现时间较晚,最早曾被认为是“方块游戏”的变种,但随着Konami把这一类型做大做强。音乐游戏在街机和家用机时常都曾有不俗的表现,《劲舞革命》(DDR)更是引发过社会现象。现在比较活跃的音乐游戏有《太鼓之达人》、《DJMAX》、《应援团》等,而销量火爆的“《吉他英雄》系列”也让音乐游戏重新得到了玩家和市场的重视。
1.13ETC其它类
分类:实用软件(ETC,即为etc.(etcetera))
原先的ETC,也就是所谓的“其他类”游戏,是个比较偷懒的分类方式。比如NDS上的那些学英语、学礼仪、学做菜、学品酒、学美容、学瑜珈、欣赏文学名著的软件,还有PSP上的《TALKMAN》以及多年前的《RPG制作工具》等游戏均可归为实用软件类型。
2什么是网页游戏WEBGAME
网页游戏又称Web游戏,无端网游,其实就是用浏览器玩的游戏,它不用下载客户端,任何地方任何时间任何一台能上网的电脑就可以快乐的游戏,尤其适合上班一族。网页游戏只要能打开浏览器(IE,FF等),10秒钟即可进入游戏,不用下载庞大客户端,更不存在机器配置不够的问题,最重要的是关闭或者切换极其方便。
2.1.1网页游戏201*十大排行榜
1.赛尔号2.摩尔庄园3.弹弹堂4.烽火战国5.丝路英雄6.仙域
7.天书奇谈8.热血三国9.武林英雄10.飞天西游
3网页游戏的开发团队
3.1策划
5/人龙游戏工作室
3.1.1介绍
游戏策划(GameDesigner),又称为游戏企划、游戏设计师。是游戏开发公司中的一种职称,是电子游戏开发团队中负责设计策划的人员,是游戏开发的核心。主要工作是编写游戏背景故事,制定游戏规则,设计游戏交互环节,计算游戏公式,以及整个游戏世界的一切细节等。
3.1.2岗位职责
以创建者和维护者的身份参与到游戏的世界,将想法和设计传递给程序和美术;设计游戏世界中的角色,并赋予他们性格和灵魂;
在游戏世界中添加各种有趣的故事和事件,丰富整个游戏世界的内容;调节游戏中的变量和数值,使游戏世界平衡稳定;制作丰富多彩的游戏技能和战斗系统;
设计前人没有想过的游戏玩法和系统,带给玩家前所未有的快乐。
3.1.3工作分工
1.游戏主策划:又称为游戏策划主管。游戏项目的整体策划者,主要工作职责在于设计游戏的整体
概念以及日常工作中的管理和协调。同时负责指导策划组以下的成员进行游戏设计工作。
2.游戏系统策划:又称为游戏规则设计师。一般主要负责游戏的一些系统规则的编写,系统策划和
程序设计者的工作比较紧密。
3.游戏数值策划:又称为游戏平衡性设计师。一般主要负责游戏平衡性方面的规则和系统的设计,
包括AI、关卡等,除了剧情方面以外的内容都需要数值策划负责游戏数值策划的日常工作和数据打的交道比较多,如你在游戏中所见的武器伤害值、HP值,甚至包括战斗的公式等等都由数值策划所设计。
4.游戏关卡策划:又称为游戏关卡设计师。主要负责游戏场景的设计以及任务流程、关卡难度的设
计,其工作包罗万象,包括场景中的怪物分布、AI设计以及游戏中的陷阱等等都会涉及。简单来说,关卡策划就是游戏世界的主要创造者之一。
5.游戏剧情策划:又称为游戏文案策划。一般负责游戏的背景以及任务对话等内容的设计。游戏的
剧情策划不仅仅只是自己埋头写游戏剧情而已,而且还要与关卡策划者配合好设计游戏关卡的工作。
6.游戏脚本策划:主要负责游戏中脚本程序的编写,类同于程序员但又不同于程序员,因为会负责
游戏概念上的一些设计工作。通常是游戏设计的执行者。
3.1.4必备知识
洞察能力。
对市场的调研能力。
对系统工程的操作能力。
对程序、美术、音乐的鉴赏能力。对游戏作品的分析能力。文字、语言的表达能力。部门之间的协调能力。天马行空的思维能力。常用软件的使用能力。
3.1.5策划流程
1.2.3.4.5.6.7.8.9.1.2.3.4.5.6.
6/人龙游戏工作室
3.2美术
3.2.1工作分工
1.原画师。2.3D模型师。3.动画师。
7/人龙游戏工作室
3.3程序
3.3.1工作分工
1.架构师
工作职责:
a)游戏整体架构建设;
b)游戏各功能模块总体把控设计;c)游戏架构平衡设计;
d)主持产品架构分析和架构设计,构建系统核心原型;e)参与关键技术问题的紧急攻关活动;
f)和各项目开发组进行技术交流,指导日常开发工作;
g)全面的软件知识结构(操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全);2.客户端程序
工作职责:
a)根据功能需求,实现相关的游戏模块;b)开发与维护相关的辅助工具;c)产品线上技术问题处理;3.服务端程序
工作职责:
a)精通Windows/linux平台下C/C++/Java开发;
b)精通各种网络通讯协议,熟悉Socket、TCP/IP编程;c)熟悉数据库开发,有MySQL或PostgreSQL开发经验;d)熟悉Lua或Python脚本语言开发;
e)具备良好的分析解决问题能力,能独立承担任务和有系统进度把控能力;f)具有团队协助意识,责任心强,有较强的沟通、表达、协调能力;4.数据库程序
工作职责:
a)MSSQLServer/MySql;b)XML;
3.4测试
3.4.1工作内容:
1.2.3.4.
负责公司游戏产品的测试设计,制订测试策略,评估测试风险;编写测试计划,测试用例;
对游戏整体功能进行合理性评测;撰写并提交测试报告。
4网页游戏的实现技术
4.1客户端
4.1.1纯页面技术:JavaScript/Vbscirpt4.1.2Flash插件技术:FLASHActionScript4.1.3自定义插件:ActiveX
4.2服务端
4.2.1页面服务端:ASP/ASP.NET/PHP/JSP4.2.2逻辑服务端:C/C++/Java
4.3数据库
4.3.1MSSQLServer/MySQL
8/
友情提示:本文中关于《webgame开发中遇到技术问题总结》给出的范例仅供您参考拓展思维使用,webgame开发中遇到技术问题总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
《webgame开发中遇到技术问题总结》
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/673063.html
- 下一篇:第二阶段WEB开发基础学习总结