erlang游戏开发

上传人:桔**** 文档编号:570170925 上传时间:2024-08-02 格式:PPT 页数:36 大小:3MB
返回 下载 相关 举报
erlang游戏开发_第1页
第1页 / 共36页
erlang游戏开发_第2页
第2页 / 共36页
erlang游戏开发_第3页
第3页 / 共36页
erlang游戏开发_第4页
第4页 / 共36页
erlang游戏开发_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《erlang游戏开发》由会员分享,可在线阅读,更多相关《erlang游戏开发(36页珍藏版)》请在金锄头文库上搜索。

1、erlang游戏开发游戏开发游戏介绍功能开垦建造收租投资偷窃捡取收费点收费道具(卡片,特效,场景,自动值守)开发语言?我懂Erlang所以选择Erlang!开发时间?SNS平台90个漫漫长夜$ls./include/*.hrlsrc/*.erl|xargswc-l.6139总用量$gitshortloglitao(272):initialcommit,addprotocol.rstaddthearchstuffaddincludeandsrc,compileok.经过272次提交:6139行代码(含1500行测试代码):选择mixi平台产品现状成功的代码,失败的产品缺乏相应的运维推广缺乏用户数

2、据分析缺乏更多收费点的开发好的产品需要好的团队产品美工FlashServer暂忘利益,谈谈过程。选择什么协议?HTTPAMF自定义选择HTTP(JSON):socialgame实时性要求低HTTP简单,成熟便于调试使用开源的mochiwebmochiwebmochiweb简单轻量高效,将Erlang思想贯彻的淋漓尽致,提供了处理HTTP/1.1的基本框架。需要一些额外工作:将URL映射到应用空间。简单方案:http:/localhost/who/litaocheng对应_http_who_litaocheng.erl,通过list_to_existing_atom判断某个URL是否可以处理。交

3、互流程数据存储socialgame数据是核心,数据丢失,游戏没有了价值。数据要存储在哪里mysql,mnesia,redis?mysql访问mysql使用odbc访问mysql,效率较低第三方driver,如erlang-mysql-driver,不够成熟,比如无法处理存储过程返回多个值缺点:mysql有些庞大,适合结构化数据。socialgame中的数据,需要频繁变化,更像一个对象。mnesiaErlang自带的分布式数据库,与Erlang无缝结合,拥有很多不错的特性,如分布式,可配置内存及磁盘存储,存储任意ErlangTerm等。缺点:数据文件大小限制,与其他语言交互不便,效率不是很好。M

4、nesia也是一个不错的选择。Redis不仅仅是key-value:stringlistsetzsetHash特点c实现,简洁高效支持多种数据持久化存储方式(AOF,DUMP)支持VM及Replication将支持Clustercache是否需要引入memcached?多种ErlangmemcachedClient需要评测Redis数据放在内存中Rediskey支持expire因此,Redis可以兼具cache的功能。使用Redis作为Cache和持久化存储。多级cache静态资源采用nginx,用户浏览器cache使用ErlangProcessDirectory,缓存从Redis获取的数据(

5、erlang:put/2,erlang:get/1),HTTPConnection关闭,Process销毁,缓存释放Redis充分利用内存,大量数据位于内存中(类似Memcached)使用redis存储数据每个用户一个key:, Uid, key对应value为:Hash其包含多个field:“bag”,“bui”,“user”,“msg”,“setting”,“extra”,用来存放背包,建筑,用户信息,消息,设置,额外信息。数据通过Erlang的序列化函数term_to_binary/1转化成二进制存储。使用Hash的原因减少Redis中Key的占用关系更加紧密的数据位于相同的field中

6、减少数据更新量,提高效率便于扩展,增加新属性时增加field线上redis运行状态#redis-cliinforedis_version:1.3.14arch_bits:64multiplexing_api:epolluptime_in_seconds:2299743uptime_in_days:26connected_clients:6used_memory:69993192used_memory_human:66.75Mchanges_since_last_save:49533total_connections_received:66total_commands_processed:637

7、3566db0:keys=140638,expires=0引擎运行状态#./motownctlstatusmotownlocalhostisrunninguptime:1728104(20days)connections:5查看内部状态:#./motownctldebug.EshellV5.7.5(abortwithG)(motownlocalhost)1系统负载关于系统容量的思考单机支持多少并发连接?总的用户规模?单用户许要数据空间大小?用户增长速度?总的数据量?.未来很难预测!数日的尝试,结果徒增苦恼。先实现,后优化。舍弃一些想法不考虑数据拆分,丢掉了Redis空间划分的计划不考虑过高的数

8、据可用性,选择数据定期备份,或Redis的slave机制使用AOFsynceverysecond,允许少量数据的丢失不考虑严密的防作弊机制,简单的时间戳+密钥的认证即可.放弃换来轻松,追求完美的路上,需要一些放弃。数据管理及统计统计数据采用mysql存储,便于其他语言(php,python,java)的交互后台管理界面及统计界面采用PHP实现游戏引擎将统计信息实时保存Redis中,定时(半小时)导出到mysql引擎定期导入mysql中的物品数据mysql,php,redis,erlang各得其所,发挥各自特长。测试单元测试:$makeunit_test.All101testspassed.系统

9、测试:$makecomm_test.Testingmotown.server:TESTCOMPLETE,20ok,0failedof20testcasesCoveranalysing.test/log/index.html.donetest/log/all_runs.html.doneCommonTest输出服务器简化数据验证数据操作无主动推送数据如收租:房屋建造后,根据当前时间(now)及房屋属性计算出收租的时间点(rtime),保存并返回给client。client计算剩余时间,开始倒计时,当倒计时完成时,请求服务器收租,服务器判断rtimeNow-do_rent();true-return_failture()end函数式编程没有面向对象普遍Erlang群体较小Erlang涉及概念较多Lua,JavascriptErlang进行框架开发Lua或javascript作为轻量的脚本语言,负责游戏逻辑处理http:/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号