timethinker
2022-03-18 12:59:30 +08:00
语言用 C++是有优势,但是相比较之下,良好的架构更加重要,要兼顾到日常逻辑开发的便利性,如何权衡取决于公司的用人成本。用 Java 配合 Netty 已经足够承载绝大多数游戏类型了,并且招人也很方便。
游戏服务端一般是有状态的,而 web 开发大多数是无状态的,有状态就意味着容易出现单点事故,比如网络不可靠,机房出现故障,服务端宕机等等,因此就需要通过日志的方式来存储状态变更操作,尽量减少事故带来的影响。类似于 redis 的 AOF ,mysql 的 binlog 。
要知道大多数在线游戏后端主要是计算密集型的应用,跟 web 开发的区别之一就在于基本上所有的状态都会保存在进程内存中,目的就是尽量避免 IO 操作。数据库的作用仅仅只是用于存档落地,甚至简单的来讲都可以不要数据库,直接二进制文件也可以。比如我经常在开发调试的过程中将整个玩家对象序列化为一个 JSON 文本,特别方便用于测试的时候,设置各种玩家的快照还原。
还有很多关于游戏后端开发的知识要点,一次也说不完,比如线程模型,元数据(配置)管理,网络 IO ,二进制消息协议,GM 管理后台,第三方系统集成等等,是一个很庞大的内容。
值得庆幸的是,随着用户的爆炸增长,现代的服务部署以及运维都比以前要好上太多了,使用云服务和容器成本更低,更有保障,但一切的前提是要根据游戏类型选择合适的技术架构。