在做游戏服务器开发之前之前一直有疑问,服务器是干什么的?问了几位前辈,得到的答案大概都是:服务器就是一台电脑,你可以访问,然后做一些事情(我现在觉得这个答案是很精辟的)。这个答案对于之前的我来说,由于根本没接触过服务器,不能理解其中的含义。百度得到的答案也不是我想要的。
现在做游戏服务器开发两个月了,分享一下自己对游戏服务器的理解,希望能以另外的角度给想做游戏服务器开发的新人一些不同理解方向。如果有什么说的不对的地方,请见谅。
游戏服务器其实就是处理游戏逻辑的(这话说的,新手谁看的懂啊。 = =!)
举个大话例子:餐厅
将一个餐厅点菜比喻成一个游戏,桌子上有菜单,菜单上有:鱼香肉丝,清蒸牛肉,有一位客人看了菜单之后点了一道菜(鱼香肉丝)后,服务员将这道菜名告诉了厨房,厨房做好菜后递给服务员,最后服务员给你端上来了。
在这个游戏中,餐桌相当于游戏的客户端,厨房相当于游戏服务器,服务员相当于客户端与服务器的通信,客人相当于玩家。
客户端:桌子上的菜单和上的菜(鱼香肉丝),这些都是客户端给玩家显示的。
服务器:当菜名到达了厨房之后的一系列操作都是服务器做的(厨房开始准备,切菜,炒菜,完成后,告诉服务员,让他把菜端出去)。
做这个游戏的服务器开发,就相当于,增加餐厅能提供的菜。比如餐厅要求增加一道番茄炒蛋的菜,你就要教会厨房怎么弄番茄炒蛋,确保经过你的调教之后,厨房在收到这个菜名时一定能做出这道菜,或者做不出菜的时候会给客户端提示(卖完了之类的)游戏就能更新,客户端就会在菜单上新增加一道番茄炒蛋的菜,客人就能点这道菜。
出现bug又是个什么情况呢?例如你在调教厨房做这道菜时,只教会了厨房做菜,没有做什么别的操作。当点了这道菜,然后番茄用完了,这时候厨房由于你只教厨房做菜,没告诉它出现这种情况怎么办,厨房就不知道怎么办(出现了bug),最后客人一直在等,最后却没有上这道菜。
举个实际游戏例子:简单描述斗地主的一个简单流程
当你(玩家2)的上家(玩家1)出了一个3,轮到你出牌,你手上有345JK。
客户端:1.显示三位玩家的牌,你的上家和下家的牌都是背对着你的。
2.显示你的手牌,供你选择。
3.收到服务器发来的消息(玩家1出了3),显示给你看。
这时候你点了一个3,然后点击出牌。客户端------->服务器,玩家2出个3。
服务器:1.收到客户端发来的消息(玩家2出3)。
2.判断你是否能出这张牌。
3.将判断结果(不符合出牌规则,不许出)返回给客户端。
这时候客户端收到消息。
客户端:1.显示提示:你出的牌不服务规范。(这张牌一直出不去)
这时候你点了一个4,然后点击出牌。客户端------->服务器,玩家2出个4。
服务器:1.收到客户端发来的消息(玩家2出4)。
2.判断你是否能出这张牌。
3.将判断结果(可以出牌)返回给客户端。
这时候客户端收到消息。
客户端:1.你的手牌少了一张4。
2.牌桌上多了一张4。
然后轮到下一家出牌。
在这些例子中,服务器做的事情,都是需要游戏服务器开发人员通过代码来实现的。回到我几位前辈对我的回答:服务器就是一台电脑(电脑是硬件服务器,写的游戏服务器是软件,需要有硬件载体),你可以访问(客户端连接服务器),然后做一些事情(玩家出了一张3,请服务器告诉我,可不可以出)。
以上就是对游戏服务器的理解,希望能给你提供一个理解游戏服务器是干什么的思路。如果有什么说的不对的地方,请指出,我会尽快修改。