来西山居上班有一段时间了。像我这种从小公司过来的,除了食堂的饭菜比较好吃外,也没有发现大公司有什么特别的地方。9.25我们就开始放假了,很多功能单的截至日期都是9.25。过去的这一周我都是在赶进度。因为接手的系统差不多要重新做吧,时间还蛮赶。不过今天发现功能肯定有一个单完不成了。既然完不成,也没有办法。下面进入正题。
这周我在调试好友系统。这个系统是我接手过来的,当初接手时说服务端已经完成了,接入客户端的新 UI 即可。碰巧我开始做这个功能时,策划那边也在催。我大概看了一下服务端代码,觉得加班加点差不多,我当初是周五接到单,心想这周六和周日都加班吧,下周三之前应该可以搞完,就和策划说下周三搞定,接着搞下一个内容。接下来就是苦逼的加班了。到了周一时,策划临时下了个单过来说很急要搞,只有先放下手头的了。搞完之后,第二天也就是周二,老大说要给一个服务端的设计方案。我心想代码都差不多了,直接来对就好了,对完之后发现一些问题,要改,既然是问题,那我就改了。第二天又开始急着对,我的解决方案,我心想代码都快写完了,一会就可以对。老大这时走到我的卡坐,问我为什么非要代码写完。我当时说的是“写完代码才可以确定最终的结果”。后来我回想了一下,我其实想表达的意思是这种玩法内的游戏,其实没有必要花时间还要设计什么的吧,大体上把数据的存储想好之后,就开始写代码了,毕竟进度是第一位。如果真的有什么问题,我觉得也很快可以应急过来,最多半天时间搞定。毕竟只是 UI 玩法的东西。因为之前在广州的页游公司,竞争真的很激烈,节奏很快,所以功能下来都是尽快完成最好,有问题也火速解决,这样子。所以和西山居这边的工作方式有些不同。而且之前是需要代码审核的,现在在这个项目组不用代码审核,就是说前期把想好完成代码就可以了,而我们之前就是快速完成后,其他组员会审核代码,所以虽然速度快,但是一般出问题真不会太多。还有一点就是之前说的设计设计,我一直觉得没有什么内容可写,都是玩法之类的逻辑,写代码就好。现在我知道了,先画好流程图,然后贴上关键的数据结构的设计就可以了。现在知道设计到底要表达哪些东西,我下次也好完成这部分工作了。
另一点就是后端开发。我之前的公司一个服导量时,大概就几万人吧。量比较少,后端的逻辑即使效率不好,也不会有太大问题。只要不出bug就好。所以我那时的观点就是逻辑简单清晰,效率低一点没有关系。现在做手游更觉得不用太过关注执行效率方面的东西吧。所以接手了邮件系统,发现一次查询邮件操作距离有三次查询数据库,我当时和之前的开发者确认了后,后来就觉得没有也没有啥问题。但是压测就出了问题, 邮件效率很低。后来就和同事讨论了邮件系统的改造。听另外一个同事说他们之前的一个项目,开服那几天被卡在邮件系统那里,我意识到现在还是要注重一下效率,也要更了解 mysql 的一些东西了。
总体来说:
1) 离线玩家的数据尽量少载入到内存,要考虑到中期时注册玩家很多但很多是没有用,这时全服数据载入到内存就很不好了。
2) mysql 还是要注意一下效率的。比如一个表玩家一条记录存一行。加入有 10w 个玩家,每个玩家 5 条记录,就有 50w 行。如果索引又是字符串的话会比较低效。所以尽量一个玩家只存一行数据,多条记录用类似于 protobuf 之类的东西序列化成二进制后再保存到一列中。总之要注意 mysql 表中的记录是否一直膨胀,只增不减。
3) mysql 中与需要玩家登陆时有关的操作还是要认真考虑是否有低效的可能。
4) 序列化确实是个很棒的东西,Json,Base64 编码项目中都有用到。
5) 大公司的压力测试是一个标准流程,提供数据来表明项目中哪些功能效率不高,这一点还是很赞的。
游戏开发观念又转变了-需要学习更多
时间: 2024-10-29 19:11:34
游戏开发观念又转变了-需要学习更多的相关文章
lua游戏开发实践指南学习笔记1
本文是根据lua游戏开发实践指南做的一些学习笔记,仅用于继续自己学习的一些知识. Lua基础 1. 语言定义: 在lua语言中,标识符有很大的灵活性(变量和函数名),不过用户不呢个以数字作为起始符,也要避免下划线(_)接大写字母,因为这种格式为lua自身保留如_Start. 建议用户使用如下格式和命名规则来定义变量.常量和函数名: ① 常量用全大写和下划线,例如:MY_CONSTANT ② 变量第一个字母小写,例如:myVariable ③ 全角变量第一个字母用小写g表示,例如:gMyG
Unity游戏开发学习之路——数据持久化
数据持久化 谈到数据持久化,在Unity的游戏开发中十分重要的,不管是是在本地和服务器端,数据持久化都是我们学习的难点,数据持久化的技术有很多种,这里只选取几种,目前也是我所学到的,在接下来的时间里会陆续整理到这里. Part1:PlayerPrefs类 这是unity圣典中给出的, PlayerPrefs 游戏存档 Description 描述 在游戏会话中储存和访问游戏存档.这个是持久化数据储存,比如保存游戏记录. Editor/Standalone 编辑器 / 桌面平台 Mac OS 在M
cocos2dx游戏开发学习笔记3-lua面向对象分析
在lua中,可以通过元表来实现类.对象.继承等.与元表相关的方法有setmetatable().__index.getmetatable().__newindex. 具体什么是元表在这里就不细说了,网上很多介绍,这里主要讲与cocos2dx相关联的部分. 在lua-binding库中extern.lua里,有如下方法: --Create an class. function class(classname, super) local superType = type(super) local c
cocos2dx游戏开发学习笔记1-基本概念
这里主要讲构建整个游戏需要的基本元素,很大部分都摘自cocos2dx官网. 1.Director 导演 导演,顾名思义,就是对整个游戏进行整体控制的. "Director"是一个共享的(单元素集)对象,负责不同场景之间的控制.导演知道当前哪个场景处于活动状态,允许你改变场景,或替换当前的场景,或推出一个新场景.当你往场景堆中推出一个新场景时,"Director"会暂停当前场景,但会记住这个场景.之后场景堆中最顶层的场景跳离时,该场景又会继续活跃.此外"Di
cocos2dx游戏开发学习笔记2-从helloworld开始
一.新建工程 具体安装和新建工程的方法在cocos2dx目录下的README.md文件中已经有详细说明,这里只做简单介绍. 1.上官网下载cocos2dx-3.0的源码,http://www.cocos2d-x.org/ 2.安装python2.7 3.运行setup.py安装 4.执行cocos new helloworld -p helloworld -l cpp,生成新工程 二.新建工程中包含的东西 -Classes AppDelegate.cpp -----游戏真正开始执行的地
[游戏开发-学习笔记]菜鸟慢慢飞(一)
"菜鸟"就是我自己. 分享一下我从零开始学习游戏开发的过程,心得什么的.本篇先扯个开头,说说个人一些乱七八糟的想法. 从0开始 其实,只要有心,不管干哪一行,都不能算从零开始.总会有办法了解到行业的信息.我之前是干船舶电气的,一路过来,最大的感觉是:不怕你找不到资料,就怕你没时间.我要做的是分清楚自己想学什么,怎么样去提高自己,然后沿着自己路线"慢慢"朝前飞.比如:知乎就是个很好的地方,我最早接触游戏开发,是在这里.决定学这个,也是在知乎喝了鸡汤. 游戏开发 对我来
[游戏开发-学习笔记]菜鸟慢慢飞(二)-迷宫
简介:练手Demo,<走出迷宫>,文章主要说说如何创建迷宫. 学习Unity3D有一段时间了,自己想了一个项目来练手手.然后就有了这篇. 一.固定的格数,开局后随机生成. 说明:这个迷宫10*10,开始后随机生成,四周留下一个空做出口. 先说如何实现: 主要准备了三个Prefab:横墙,竖墙,柱子,墙高度是10,宽度是10,厚度是1,柱子高度是10.宽度和厚度都是10. 手动按照10*10排列(参考下图) 脚本 #region //初始化游戏 #endregion using System.C
《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音
<Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内容主要都是介绍如何在屏幕上显示图像,事实上除了图像之外,音乐的播放也可以被理解为一种显示的方式,本节将学习在Cocos2d-x中播放声音的方法. (1)在HelloWorld.h中对HelloWorld类进行如下定义: class HelloWorld : public Cocos2d::Layer { pu
cocos2dx游戏开发&mdash;&mdash;微信打飞机学习笔记(三)&mdash;&mdash;WelcomeScene的搭建
一.场景与层的关系: cocos2dx的框架可以说主要由导演,场景,层,精灵来构成: 1.其中导演,意如其名,就是操控整个游戏的一个单例,管理着整个游戏. 2.场景就像电影的一幕剧情,所以说,懂得如何划分好游戏的场景,是开始动手做游戏的第一步. 3.一个场景会有很多层,用来处理场景不同的功能. 4.而精灵则是最小的单位,比如子弹,飞机,敌机都是一个个的精灵所组成的. 二.WelcomeScene的搭建: 1.场景和层的二种搭建方法: (1)一种就是跟HelloWorld示例一样的方法,以一个