查看: 739|回复: 0

针对新手的游戏服务端编程入门指导

[复制链接]

4783

主题

5079

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
18913

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2020-3-25 13:59:18 | 显示全部楼层 |阅读模式
针对新手的游戏服务端编程入门指导 https://www.gmbbs.net/


游戏服务端源码也已经写了好几年了,有时候我觉得如果我现在给自己一些建议可能会有帮助。
语言选择
一开始,更建议从高级语言比如开始。在此期间,你可以用一些游戏服务端引擎来学习。如果你学习编程是因为你喜欢游戏服务端,你可能不喜欢总是打印一些单词,你可能更喜欢输出图片。
可以直接从相应的游戏服务端引擎语言中做几个小的演示来理解游戏服务端结构,但是游戏服务端引擎有一个缺点就是太多的API介绍有点困难.
游戏服务端引擎的优点是玩游戏服务端速度更快,但是引擎整体来说还是有点大,不适合学习代码。
之后,你可以使用pico-8、love2d、pygame、SDL或者direct javascript来操作画布来创建并尝试制作游戏服务端来挑战你的编程能力。
但是,C语言(包括C语言)可以放在后续的研究中。学习C语言可以理解语言底层的东西。指针允许你直接访问内存,这在其他语言中很少见。一般来说,可能很难感觉到它的强大,但是当您面对资源受限的系统(需要手动内存管理),比如GBA和NDS时,您就无法绕过C语言甚至汇编语言。
向导显示如何区分先渲染和后渲染(渲染级别)
每次播放特殊效果时生成一个对象然后销毁它是不是有点浪费内存?可以一次生成多个重用吗(引入了对象池)
如果在归档完成之前,A向归档写入数据,B向归档写入数据,会有什么问题吗(只介绍了一种文件系统使用情况)
我跑去拿一本opengl 红宝书,在我开始写代码后不久就开始啃它。我写了很多代码,但最终什么也没学到。
首先不要考虑3D。最好从简单的2d开始。此时,我想推荐看看代码的性质和游戏服务端人工智能来锻炼代码的能力。
即使你想学习图形中的着色器,我建议直接使用Unity来学习如何编写着色器(推荐的Unity着色器和屏幕特效开发技巧),编写一些特效,然后回去编写那些渲染管道Opengl,这会更感人。
不要被锁定在游戏服务端引擎中
现在游戏服务端引擎非常方便。编写软件的目的是使它更容易使用。
然而,初学者很难通过一直使用游戏服务端引擎来提高他们的编程水平。个人建议是从游戏服务端引擎开始,然后尝试不使用引擎来制作游戏服务端,使用上面提到的框架或工具来获得一些底线。
比如使用上面提到的低级框架(比如SDL)来制作游戏服务端,然后编写一个简单的地图编辑器、粒子系统、档案文件保存和读取系统或菜单系统。虽然你所做的无法与专业引擎相比,但总有一天你会回到引擎上,用不同的方法来解决一些问题。
事实上,有专门的书籍来解释这一点。我只是在上课。我将只谈论我刚开始学的一些东西。
单例模式:当许多人第一次接触游戏服务端引擎时,他们将面临切换场景而不破坏数据的问题。也不建议一些初学者将数据保存在本地,然后在下一个场景中阅读。这种直接的读写操作是不可取的,并且在保存一个游戏服务端对象时无法完成(当然,也可以序列化该对象并将其保存在本地,但这仍然是不可取的)。此时,最好保存到全局静态对象/变量中,这将引入单例模式。还有比如一些系统只能有一个入口,不允许随便使用,否则会出现错误,比如典型的文件输入输出和控制器输入控制。
数据驱动:在Unity的脚本对象中,它显然是数据驱动的。它的核心思想是在不改变代码的情况下改变数据。但是,当您想要使用数据驱动时,您必须清楚地区分哪些可以硬编码,哪些可以数据驱动。过多的配置会极大地影响开发效率和可读性。
减少指针跳转消耗:我认为这也是ECS提出的原因之一。大型游戏服务端面临着大量的游戏服务端对象。此时,由游戏服务端对象中的各种指针跳跃引起的性能消耗不能被忽略。因此,在编写代码时,应该注意减少指针跳转,并使用结构和数组尽可能保持内存连续分布比如。当然,连续的内存分配也可以减少内存碎片。
原型模式:这一个最初似乎在Cocos2d-x中出现过,一个克隆当前对象的界面。事实上,这在实际游戏服务端中也很常见。比如在GBA的木叶战争中,鸣人可以用他的影子副本创造一个新角色,但是他的攻击和生命减半。在Unity中,当预置从项目窗口拖到场景时,也使用了类似的想法。
最后,制作游戏服务端很有趣,写游戏服务端源码也很开心,希望你也能享受游戏服务端编程的快乐!

【GM论坛[www.gmbbs.net]免责声明】
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
4、论坛的所有内容都不保证其准确性,完整性,有效性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请告之,本站将立即删除。
   提问发帖求助请点此发帖 https://www.gmbbs.net/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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