找回密码
 立即注册
查看: 127|回复: 5

独立游戏开发者应该如何开发处事端?

[复制链接]
发表于 2024-7-15 18:14 | 显示全部楼层 |阅读模式
大哥们,独立游戏一般都是选哪个处事端引擎啊,有人能指点下我吗?就像unturned rust dayz那样的游戏,单服也就100人摆布,使用独立处事端网上保举 kbengine 光子 啥的不少,但是这种处事端引擎不都是做大型网游的嘛,独立游戏的处事端用这个东西去做会不会消耗太多时间?学习成本太高?
发表于 2024-7-15 18:14 | 显示全部楼层
step1:具备网络游戏开发的基础:编程语言+数据结构+网络+协议+数据库
step2: 为游戏服务器选一些可用的技术框架,比如protobuf, http, 网络,数据库等
step3: 设计一个分布式多游戏服务器架构,提出基于这个架构开发的逻辑开发模式;
step4: 掌握各种游戏类型的同步技术与处理方式:状态同步,帧同步等。
如果这些都不想,想快速上手,可以参考腾讯等推出的云游戏服务器。
发表于 2024-7-15 18:15 | 显示全部楼层

这种问题不说具体需求,怎么还能一本正经地说推荐这个,推荐那个解决方案。

独立游戏设想场景是家庭环境两人连线还是全球同服做个简单的数据服务呀?
需求是多人连线实时射击服务器,还是仅仅一个卡牌战棋类排行榜需求?


没有需求定义就回答不了。其他人还 Skynet、还百万同服、还现成云服务解决方案呢。《百万在线》这本书你要卖货也要过脑子呀,何况还是个作者。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2024-7-15 18:16 | 显示全部楼层
其实推荐大公司提供的数据托管服务。 理论上服务器端只是帮你把数据存下来,以及把你的数据共享给其他玩家。
独立游戏其实更多时候是单机向的,保存个进度做个排行榜就行了。 这时候什么服务器架构都没啥用,最好的就是托管数据,撑多少人跟你卖多少份有关,也很好计算和付费。
如果你希望做一些重交互、联网的游戏,但是又希望使用简单的服务器框架去实现,其实不大现实,封装的再傻瓜也有上手成本。 除非你在这块业务上有一定的基础, 会的超简单,不会的就难上天。
kbengine算是某个前前同事拿BigWorld轻量化改出来的,不过还是商业化了,做MMORPG肯定没问题。 Skynet更多是网络库的封装,对业务支撑可能不足,也需要有经验的团队驾驭。 Pomelo到是比较合适,只是太古老了,还是Node0.x时代的产物,很多团队(像我们自己)都做了二次封装,使之适应了新版本的Node环境和添加了更多的集群、API支持,才能支撑商业化游戏后台。
理论上如果游戏对后端要求不高,用Http的后端网络库都没问题,走短连接。不一定要长连的。
发表于 2024-7-15 18:16 | 显示全部楼层
具体用什么要看自己对各个方面的熟悉程度,skynet确实是一个不错的选择,但前提是你要熟悉linux和lua,如果你都不了解肯定是用不了的~kbengine做MMORPG更好,你做dayz和unturned这种不太适合~光子引擎c#的,以前是收费引擎,就我个人而言,对于c#做游戏服务器持消极态度,两个原因加在一起也不推荐~还有网易的pomelo,已经停止维护了~
大概七八年前我面对过和楼主一样的问题,kbengine和pomelo都试过,当时还自己学过一段时间的netty,最终发现问题的关键不是在于学习哪种框架,而是要对游戏服务器的整体架构有一些最基本的了解,换句话说你需要知道怎么做,然后用一个框架去减少自己的工作量。
dayz和unturned这种类型的游戏关键在于怎么处理同步问题,而不是服务器要怎么搞的问题,这类游戏的服务器通常只做一个逻辑的转发,具体要怎么处理还是在客户端~从我的经验来看,如果你熟悉c/c++,做好的解决方案是网上找个游戏服务器的教程,完整一点的,看完对游戏服务器的全貌有所了解,然后跟着教程写一个最基本的数据转发服务器就完活了,否则你会花大量时间在学习一个服务器框架上,经过了一段痛苦的时光之后发现你学的框架并不是特别符合你的需要,到时候的场面会非常尴尬~
发表于 2024-7-15 18:17 | 显示全部楼层
推荐skynet,它是当前游戏公司用的比较多的,不过有些学习门槛。好在已有较为完善的教程,花几天时间学习就能够做个简单服务器,也不会很难。

以下文章是介绍skynet相关服务端书籍《百万在线》的,可以做个参考。

历经多年筹划,新书《百万在线》上市啦,京东自营:
《百万在线:大型游戏服务端开发》(罗培羽)【摘要 书评 试读】- 京东图书客户端 VS 服务端

刚毕业到游戏公司工作时,项目组用了纯C++技术方案,主管丢给一本400+页的《TCP/IP详解》,说啃完它就算入门了。可是对于毕业生而言,看这种书就像在看字典,看了很久也写不出有实际意义的程序。又记得有新人问某大神服务端该怎么学,大神把Linux源码翻出来告诉新人把源码看懂就行了。显然,新人会学的很痛苦。
下面这张图本意是以制造汽车的步骤来类比产品经理的迭代思维,它也能用来类比客户端和服务端的学习过程。对于客户端,入门后就可以制作demo、参加gamejam,每一步学习都能够做出点东西——只是简单和复杂的区别。服务端不一样,要全面掌握好网络编程、数据库、多线程等等多方面知识,才能写出基本能用的程序,学习路径很长,过程也很枯燥。



服务端和客户端的成长路径

我们经常能够听说某某大神自己做了一款单机游戏,放上steam、taptap获取好评,却很少听说某某大神自己做了一款网络游戏。这是因为开发网络游戏的工作量要比单机游戏大的多,而且服务端还不太好学。
现状:不再绕进网络编程的旋涡

上古时代,学习客户端编程也很艰难,要从opengl、directX等图形API学起,学很久才能够写出玩具级别的程序,很枯燥;随着游戏引擎的发展,现在大家会先学Unity或虚幻4引擎的使用法,后期再去深入学渲染,降低了学习客户端的门槛。
游戏公司带服务端新人,也遵循类似“游戏引擎”的路径,项目组会有一套较为成熟的服务端代码,新人先在这套代码上写功能,后期再逐步的深入去做优化、修改底层。边学边做,一步步有产出,才符合游戏公司对人才的要求。不仅仅是游戏,Web后端也有类似“游戏引擎”的发展趋势,一些常见的模块会被抽象成“基础设施”,开发者站在巨人的肩膀上,开发越来越复杂的功能。
游戏服务端的重点,在于和游戏有关的部分,比如符合游戏业务的拓扑结构是什么样的?实体同步有哪些方法?怎么做断线重连?角色、场景的数据结构怎么设计?如何解决热更新问题?等等。而像网络编程、线程调度应该由成熟的“基础设施”去解决。
尽管游戏公司已经遵循“边学边做,一步步有产出”的技术成长路线,然而市面上不少服务端教程仍把重点放在操作系统、网络编程,读者就算认真读完,也只能写出玩具级别的程序,陷入了旋涡。
所以一直在想,能不能有一本教程,就是按照游戏公司带新人的路径来组织。下图是书籍早期的一张内部宣传图,体现了《百万在线》的设计,就是希望将入门阶段最需要的知识呈现出来,让学习有“性价比”,花最少的时间学到最实用的,立马就能够上手做项目。而不是写一本像字典一样的书


随着学习的深入,啃大块头、看源码还是很必要的,但每个阶段的侧重点应有不同。按照这个思路,2017年10月,我写下了第一版的目录,而后又试写了一些章节。
就像学开车,最好就是先有一辆车,告诉你怎么踩油门、怎么转方向盘,然后坐在副驾陪你开上道路;而不是在教室里教发动机原理。
抉择:没有统治地位的游戏后端引擎

书中第一章有句话“先不择手段(用现成的库)把游戏做出来,再深入了解”,这个理念贯穿着书籍第一部分,“做出来”是重点。然而“不择手段”要用哪个手段?
如果是编写客户端的书籍,那便很简单,无非在Unity和UE引擎中二选一,然编写服务端,却很难抉择。
游戏业界并没有一套游戏服务端方案能占据统治地位,意味着无论选择哪个引擎来讲解,都无法覆盖大部分读者;而如果不选择一个引擎,那依然会掉进“网络编程的旋涡”,因为要花一大半篇幅讲基础。到了2019年10月,我必须在下面的三个方案中做出抉择。
方案1:c++和lua方向,前一半介绍用c++和lua实现服务端底层的方法,内容包括分布式模型、线程调度、网络连接、数据存储、脚本和热更新等方面。后一半介绍逻辑实现,内容可能包括同步算法、AOI、无缝地图、服务端如何运行游戏逻辑等内容。
方案2:skynet方向,用一两个章节介绍skynet的基础,再在此基础上搭建一套登陆、消息分发系统,然后开始用范例介绍逻辑实现,内容可能包括同步算法、AOI、无缝地图、服务端逻辑、热更、战场回放等内容。
方案3:Erlang方向,与方案2相似,将skynet改为erlang。
(PS:以上为调研时发出的原文)
为了做方案调研,还知乎上发了个问题《大家的游戏服务端采用什么技术方案》,得到了几十个回答,还询问诸多在不同游戏公司工作的朋友。
大家的游戏服务端采用什么技术方案?最终,我选择了方案1和方案2相结合,即先用Skynet介绍服务端业务怎么写,让读者先能把游戏做出来,做到“学以致用”;有了业务基础,就容易理解底层的设计,于是进入第二部分“入木三分”,用C++仿写Skynet,在仿写的过程中去掌握网络编程、并发编程、嵌入Lua等知识,做到知其然知其所以然。如此,便有了如下所示的知识线。



《百万在线》知识线

写作:每天三小时历经九个月

手机厂商会将产品分为旗舰机型、性价比机型,写一本书大概也可以分为这两种,要不就不计成本写一本“代表作”,要不就快准狠写些热点事件。
对我而言,此前已出过几本技术书,数量上多写一两本对我意义不大,众所周知写书的经济收益可以忽略不计,所以质的突破才有意义。
有次我到游戏公司参观,发现工位上摆着不少技术书,好些作者还是我认识的。于是我找呀找呀,希望找到自己的书,给对方一个惊喜。然而……并没有找到。如果未来到任何一家游戏公司参观,随便一瞥就能看到自己写的书籍,那是一件很令人兴奋的事。
在签订出版合同的时候,预留了很充裕时间,大概,比实际交稿时间多了一年,这样就能够不背负太多进度压力安心写作。实际上,每天抽出3小时,历经9个月完成书稿。整体过程大概是:

  • 2017.10-2019.9:意愿阶段,有写作的打算,做出初步的规划,试写一些章节。
  • 2019.8-2019.11:规划阶段,做调研,做出最终的目录规划
  • 2019.11-2020.3:试写阶段,编写了第一和第三章,大概以两个月一章的速度编写,过程中逐步总结写作技巧。
  • 2020.3-2020.8:坚攻阶段,大概每个月一章的节奏进行。
而后又多次校对、修改,在2021.8终于出版。

在互联网行业,写作的最大成本,在于很难维持每天几个小时的空闲。这不仅仅是自身勤奋与否的问题,更多是大环境的限制。要排解无节制占用时间的威胁,意味着要放弃一些机会。这些机会的经济效益远远超过书籍版税,但我仍相信写作是值得的。就算最终一无所获,至少也能沉淀自己的经验,也算有一点点社会价值。
致谢

书籍编写期间,一些同事帮我做了宣传,谢谢他们。
PS:以下是一些实拍,宣传期间采用名字《百万在线:游戏服务端开发实战》









文章首发“华章计算机”公众号,原标题“《百万在线》罗培羽:服务端入门不该陷进网络编程”
《百万在线》罗培羽:服务端入门不该陷进网络编程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-8 11:15 , Processed in 0.104623 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表