精华内容
下载资源
问答
  • 去年从传统软件公司辞职,下定决心转互联网,由于对游戏的热爱,去了一家游戏公司,待了将近10个月,参与开发了一款动作卡牌手游,游戏最终也上线了。最近抽空写写过去对游戏后端的一些感想吧。最近又去另外一家游戏...

    去年从传统软件公司辞职,下定决心转互联网,由于对游戏的热爱,去了一家游戏公司,待了将近10个月,参与开发了一款动作卡牌手游,游戏最终也上线了。最近抽空写写过去对游戏后端的一些感想吧。最近又去另外一家游戏公司,参与开发一款MMO手游。准备开始从动作卡牌手游谈到MMO手游,也算是对游戏开发的一些感悟。

    动作卡牌游戏,相对而言,时延性要求没有那么高,所以架构没有那么复杂,不过也是值得学习的。本文重点介绍卡牌游戏的架构。

    整个后端架构分成5个主要模块,后面新增2个模块,主要用于跨服对战。

     

    整个游戏的架构如上图所示。

    每个区服对应这样一组进程:

    loginserver、dbserver、gameserver、worldserver,gmserver,然后matchserver和pvpserver用于跨服系统。

    各个进程间通信使用socket,通信协议采用protobuf,对消息包进行序列化和反序列化。账号数据以及打点日志信息存放在mysql,角色数据存放在redis中。这边这样设计的原因是,角色数据要求时延性高,并且是经常写入,因此采用redis可以提高吞吐量,而账号数据以及日志信息是基本不变动的,而且采用mysql基本满足需求,并且稳定性比较高,还方便运营后台维护。这边可以优化的地方是可以把日志单独拎出来,做成一个日志服务器。

    下面简单介绍下各个模块功能,后续会继续分析这样设计的意义,以及实现的功能。

    loginserver:登录服务器,主要有二种,第一种是中心登录服,所有的客户端连接这个服务器获取服务器列表信息,第二种是普通登录服,用于选择区服之后的登录验证。

    gameserver:逻辑服务器,管理游戏的基本逻辑,包括各个基本系统。

    worldserver:世界服务器,管理游戏的一些数据,包括门派数据,竞技场,世界boss等数据。

    dbserver:数据库服务器,主要管理mysql,包括登录验证以及日志打点入库。

    gmserver: GM服务器,一般只有一个(可做成多节点),主要用于运营后台的管理,包括邮件的发送,道具发

    送等等功能。

    matchserver:一般只有一个(可做成多节点),主要用于跨服系统的匹配,以及监控pvpserver服务器。

    pvpserver:用于管理跨服战场,和gameserver采用同样的代码,只是初始化不一样。

    这个动作卡牌游戏的架构基本上是这样,主要是单服的人数不会太高,所以这样的架构基本上能满足实际需求。

    这个游戏单区服最高在线人数一般不会超过5000,所以这样的设计完全合理。如果是MMO游戏,架构上将会有很大

    的不同。后面将会对一些比较重要的地方如登录流程、网络底层、战斗系统、跨服系统等进行重点分析,并且给出

    一些优化方案。

    展开全文
  • 谈一下java的GC 对于游戏服务端开发这个岗位,有什么认识? 最近在玩什么游戏? 针对项目问的:个人博客项目数据库表是怎么设计的,一对多多对多这些关系怎么设计,有设置外键吗? 针对项目问的:对于分类表,有一...

    一面:9.15,线下面

    一面更像HR面,是一个女面试官,应该是HR,不是技术官,问的专业知识也很浅,没有深挖

    1. 我们这个这个岗位是需要转语言的,可以接受吗?(转Erlang)
    2. 你的GPA挺高的,平时是怎么学习的,有什么好的的学习方法吗?
    3. 目前有拿到其它公司的offer吗,你的期望薪资是多少?
    4. 为什么想来面试我们公司?
    5. 你的大学四年是如何规划的,对未来的职业发展道路有明确的规划吗?
    6. 实习期间,你最大的收获是什么,技术上有哪些提升?
    7. 个人博客网站上发布了多少篇文章,以哪些内容为主?
    8. 你认为自己对数据结构与算法这块掌握得怎么样,谈谈你比较熟悉的数据结构与算法
    9. 对于mysql的了解有多少,谈谈索引、mysql底层使用到的数据结构
    10. ………………

    二面:9.23,电话面,30min

    二面问的是项目以及基础

    1. SpringMVC的执行流程
    2. 快速排序和归并排序的思想,代码如何实现?
    3. HashMap的底层原理,怎么将线程不安全的HashMap转为线程安全的?
    4. Hashtable与HashMap的区别是?
    5. 谈一下java的GC
    6. 对于游戏服务端开发这个岗位,有什么认识?
    7. 最近在玩什么游戏?
    8. 针对项目问的:个人博客项目数据库表是怎么设计的,一对多多对多这些关系怎么设计,有设置外键吗?
    9. 针对项目问的:对于分类表,有一个创建时间的字段,需要经常根据这个字段进行排序,怎么优化?

    HR面:9.29,线下面,25min

    HR面聊得挺好的,后面反手就给我挂了hhh😷

    (速游好像加班挺严重的,HR也问了我能不能接受加班,还问加班到多晚不能接受😂)

    展开全文
  • 游戏服务端开发之基础概念扫盲篇

    万次阅读 多人点赞 2016-09-13 16:17:29
    从事手游服务端开发也快3年了,整理了一份资料,介绍在开发过程中碰到的概念以及自己的理解,希望能够帮到即将从事该职业的朋友。

    13年毕业后,做了一年多外包web开发,因为受不了在客户现场工作的氛围,愤然辞职。转行做了一名手游服务端开发。

    在广州,据我所知,选择java作为服务端开发语言的公司大概有37互娱,百田,银汉,易娱,要玩等等。其实游戏服务端开发语言可说是百花齐放,c++、java、python、elang,不一而足。

    记得刚入坑的时候,我连策划数据和玩家数据都傻傻分不清,服务进程还天真地认为是tomcat启动的。被策划与测试联手虐待了近3年后,我终于成为一名有经验的“业务狗” (=。 =)

    下面说一下手游开发中碰到的一些名词。这些概念都是自己理解的。刚入坑的朋友可以草率看一看,瞧一瞧。(^-^)

    架构是简单的服务器架构,也就是说,大部分业务处理都是在同一个进程。没有分布式服务的概念。

    996

    提起游戏公司,比较受众人认可的便是它高强度的工作时间。从刚开始的996制度(每天上午9点上班,晚上9点下班,中间休息2个小时,每周6个工作日),到后来的9106,甚至9116,简直是残暴剥削从业者的剩余价值啊。不过,不加班的游戏公司估计也没多少人敢去上班,工资能不能按时发都是未知数了。也许有些人会说,游戏行业工资高,奖金多。说点心里说,虽然游戏行业普遍工资是比较高,但综合工作时间考虑,性价比奇低。近几年来,手游行业发展迅速,每年都有非常多的手游工作室成立,当然,也有很多手游公司倒闭。总体来说,手游这块大蛋糕已被市场瓜分所剩无几,特别是腾讯和网易两个大厂就拿了七成左右

    展开全文
  • 排行榜几乎是每个网络游戏都有的系统,以下用Erlang以例,分享一种排行榜实现方式。 结构 每个排行榜对应一个actor,State使用如下结构: %% 通用排行榜结构 -record(rank_list, { key = undefined, %% 排行榜的...

    开头

    排行榜几乎是每个网络游戏都有的系统,以下用Erlang以例,分享一种排行榜实现方式。

    结构

    每个排行榜对应一个actor,State使用如下结构:

    %% 通用排行榜结构
    -record(rank_list, {
        key         = undefined, %% 排行榜的唯一key
        sort_list   = [], %% [one_rank{}] 已经排好序的列表
        ready_list  = [], %% [one_rank{}] 待排序的列表
        sort_time   = 0 %% 排行榜的刷新间隔
    }).
    
    -record(one_rank, {
        user        =   0, %% 玩家id
        num         =   0, %% 用于排行榜排序的字段
        rank        =   0  %% 排名
    }).
    

    排序时间间隔

    排序是一种消耗性能的操作,因此服务端要尽量避免实时刷新的排行榜。最好是定下每种排行榜的刷新间隔,再用定时器实现定时排序。

    实现

    1. 有数据插入排行榜时,插入or更新ready_list里的数据
    2. 执行排序时,对ready_list里的数据进行排序,同时赋值给sort_list

    性能提升

    1. 限制排行榜的长度,也是就限制sort_list的长度,提高查找sort_list的性能
    2. 增加1个标志位,记录在刷新间隔时间内,ready_list是否发生过改变,若没有改变,即使到达排序时间也不进行排序
    3. 每次执行排序后,同时产生两个map, 一个以user(玩家id)为key,#one_rank{}为value;另一个以rank(排名)为key,#one_rank{}为value; 以空间换时间,提高查找速度



    游戏服务端开发系列

    游戏服务端开发-好友系统

    游戏服务端开发-排行榜

    游戏服务端开发-邮件系统

    游戏服务端开发-全局唯一ID

    游戏服务端开发-AOI-九宫格法解析

    展开全文
  • 游戏服务端开发要点

    千次阅读 2017-02-15 02:50:03
    前言ps:一直希望有个游戏服务端的技能树,此文算是指明方向,故记录于此。 知道该去哪打怪、打什么怪,升级才快。 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和...
  • 游戏服务端开发-随想

    2014-09-30 14:23:21
    最近公司上线了一款游戏,后台f
  • 本门课程讲解棋牌游戏服务端的架构、数据库的设计、数据库异步存储、帐号管理、房间管理等棋牌游戏服务端的核心技术,有意向从事棋牌研发的同学,就不要错过这门课程了。...
  • 游戏服务器开发都要学什么

    万次阅读 多人点赞 2019-08-22 17:26:27
    一,游戏服务器开发工作介绍 近来遇到有很多人想从其它开发领域转到游戏服务器开发行业上来,他们或许觉得游戏服务器开发工资高,或许觉得做游戏服务器需要掌握的技术更高级,可以锻炼自己,或许觉得想换个环境等等...
  • 使用了新悦游戏框架,参考:https://gitee.com/wgslucky/fishing-hunter 配置nacos:https://gitee.com/wgslucky/fishing-hunter#%E4%BD%BF%E7%94%A8nacos%E7%AE%A1%E7%90%86%E5%B9%B3%E5%8F%B0 配置好之后要在...
  • 目前做游戏服务端开发的同行们大多数使用的是C++、JAVA,最近几年也有使用node.js和python的,甚至一些卡牌游戏使用了php作为服务端开发语言,我这篇文章不是要喷哪个语言的好坏,而是客观的分析不同语言所能适应的...
  • 在RPG游戏中,玩家角色移动,攻击,放技能等操作都需要向其他玩家广播,但服务端由于性能原因,会避免往整张地图上的角色进行广播。为了把性能消耗降到最低,同时不影响玩家的游戏体验,就只会向玩家关注并感兴趣的...
  • 这是一个通过unity开发的一个网络游戏,包括服务器端和客户端两部分,对于学习unity网络游戏开发以及服务器开发来说都是很有帮助的。
  • golang开发的h5小游戏服务端domo
  • 游戏服务端开发-好友系统

    千次阅读 2018-11-27 09:38:55
    好友系统几乎是每个网络游戏都有的系统,以下分享一种好友系统的具体实现方式。
  • 游戏服务端开发-一

    千次阅读 2011-06-25 13:50:00
    数据存储服务器游戏中的数据大致分为静态配置数据和动态的玩家数据。这里主要讨论玩家数据存储的解决方案。虽然游戏应用的写操作要多于读操作,但是加入缓存层仍然有其必要性。多个应用服务器启动时从数据库读取数据...
  • 游戏服务端开发-邮件系统

    千次阅读 2020-05-20 09:00:49
    邮件系统几乎是每个网络游戏都有的系统,以下用Erlang以例,分享一种邮件系统实现方式。 数据库表 tableName: user_mail mail_id title content from_user_id to_user_id item_list is_read send_time 123 ...
  • 未来每一周我都会更新一篇关于Java游戏服务端开发的文章。绝对的干货满满。如果你认为这不是干货,那应该是我的表述不够好!哈哈~~ 专栏地址如下:https://blog.csdn.net/huanghailiang_ws/category_7184643.html ....
  • 服务器结构探讨 -- 最简单的结构 本文从最简单的游戏服务器架构开始讲起,结合主流的WOW等大型游戏服务器设计思路和mangos的一些理念,一步一步揭开网络游戏服务器的架构设计方法,对初学者尤其有帮助
  • 前言 01 TCP 的核心意涵是什么? TCP 是面向连接的可靠的传送协议。...应用层每次发送数据都会被开发人员认为是一个独立的数据包,可是在底层由于TCP是可靠的传送协议,每次发送数据都要收到确认,所以底层有可能把
  • 从Web后端(Java)转到游戏服务端的感受

    万次阅读 热门讨论 2018-10-21 10:25:18
    大四的秋招阴差阳错的就投了一家游戏公司,允许Java后端转到游戏服务端,而且团队的大佬还是与我同校同专业的比我大五届的师兄。看在缘分,我就被招了进去。 技术感受:Web后端跟游戏后端的区别:...
  • web服务端和游戏服务端的区别

    千次阅读 2018-02-26 13:59:55
    最近几天在技术交流群里讨论到游戏服务端的一些技术细节,小说君发现有些做服务端的同学因为没有接触过游戏服务端,所以对游戏服务端产生了一些误解。因此今天的文章就从web服务端和游戏服务端的区别说起,简单介绍...
  • 棋牌游戏服务端架构(1)

    千次阅读 2020-08-23 22:14:23
    选择服务器(select server) App通过UDP访问选择服务器,获取到网关服务器的IP和PORT。
  • 游戏服务端开发入门

    千次阅读 2011-01-10 12:36:00
    x 是做服务端开发的,windows的书不用看了,机制跟Linux很多都不同的 linux不熟悉先看台湾鸟哥的那本《鸟哥的linux私房菜》繁体版,简体版的语言太装B不好看,之后把C语言学扎实,做到可以在linux系统自己建立开发...
  • 近年来,我身边的朋友有很多都从web转向了游戏开发。他们以前都没有做过游戏服务器开发,更谈不上什么经验,而从网上找的例子或游戏方面的知识,又是那么的少,那么的零散。当他们进入游戏公司时,显得一脸茫然。...
  • id自增,对MySQL的InnoDB索引十分友好 可根据ID区分出不同平台、区服的角色,支持合服的情况,也十分适合做跨服、滚服的游戏 游戏服务端开发系列 游戏服务端开发-好友系统 游戏服务端开发-排行榜 游戏服务端开发-...
  • 攻击范围计算
  • 是我喜欢的游戏服务端开发,我又做了很多与之相关的研究和加紧学习,之前没看完的经典书籍又在继续看了,也敲了很多代码写了一些demo,希望能最大程度发挥自己所能带来的价值。  这篇博客主要是回忆我过去的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,624
精华内容 13,849
关键字:

游戏服务端开发