数据库三大范式通俗理解网络之框架制作
先从实质性的层次划分它,首先要有玩家,那么就设计玩家的一个结构,其实所做的工作就是把传统的对象实体设计成计算机面向对象的实体,然后给这些实体一些操作方法,就这么简单,不要被那些软文给讲蒙了,就是这么一回事!啥单件模式,三层模式,观察者模式最终都离不开这个出发点,继续启动~~ 首先肯定要有玩家对吧,没有玩家咱玩呀~那么就先设计一个玩家类,如下:
Class 或 Struct 都可以,如果是Class最好加上抽象(abstract)声明至于为什么要加问别人吧,在使用C++的时候都被C#的完全面向对象所吸引,然后给这个类赋一些属性,天呐,C#下面实现这些属性太棒了get 和 set 以及那么成熟高级的特性(什么不会设计这样一个类,那么就此打住先收藏本文学习这部分知识之后再来阅读)不像C++下面的那样古老级的做法,不过可不要忘记哦一切源自C++的设计灵感才会有现在的C#~. 称C++可是杀手锏~~~~ 
游戏玩家类
{
属性:
  玩家在系统的唯一标识
  玩家的帐户名
  玩家的昵称
  玩家的积分
  玩家的注册时间
网站建站设计  玩家的当前登录时间
  玩家的当前登录IP
  玩家的等级
svg中文名叫啥  玩家的信誉度
  是男是女还是人妖
  是不是喜欢老温
  ……..略
}
这儿讲句题外话,在设计属性时,对Set操作时一定要进行判断规则,这样才能从基层保证了数据是OK的,合法的,比如玩家的等级不可能小于0标识,最好做个判断,玩家的金币不可能超出多少钱做个判断,如果不符合就抛出异常,好像从哪本EFFCT C++啥中看到的,英文单词肯定打错啦,学到的知识!
具体有哪些属性要看自己的发挥了,要知道这一切都是由你来决定,没有人能够阻止!切记,自由很重要,人类为了追求自由流了多少鲜血呀!怎么竟讲蠢话。上面的这个类就是一个纯的玩家实体类,没有啥功能,就是一个概念级的东西描述符罢了。也就是一个玩家就有这些特性,够简单吧!好了,这是一个玩家,那么要是有上百个玩家进行管理呢,怎么组织它们,数据结构发挥了它魅力的部分了,一个个玩家链在一起就方便程序员管理它们了,再次感谢微软,感谢老盖,C#下面实现了这些数据结构类,什么不知道,LIST类总
知道吧,连排序方法都搞定了。打个比方,要把用户一个个组织串起来,然后就依次对它取一个出来操作或遍历它或删除它等。也就是玩家退出大厅和登录大厅这样的情况下的操作罢了。
有了一个玩家类还不够,得给它生命,让他学会叫,学会叛逆才行。那么这一切工作就需要编写一个操作它的类,就叫它逻辑类(生命类)吧,又要告诉您,不要在乎别人怎么讲,游戏设计是很自由的,这个世界属于自己的! 由这个逻辑类负责给这个玩家实体类产生生命的源泉! 嘿它是单性繁殖的。
在这儿有必要提出另一种设计方法:一开始还是比较倾向把这些实现逻辑部分的代码放进这个实体类本身,因为按照面向对象的原则性是这样做的,一只猫,一只狗都有自己的属性而且都有自己的方法,所以它是一体的!但是从另一层次讲可以把这些叫方法独立开来,让一只猫就是一只猫,需要叫,需要吃都由另外负责类处理!这一点在WEB应用程序中一直这么做! 其实在明白这些道理之后就会对啥工厂模式啦,啥三层模式啦都明白啦,就是那个味,只是给它套上了一个专业术语,有些还是啥英文的,奶奶的咱们中国民族的文化可比强多了,可惜现在所学的知识仍然完全是由老外控制的,哎~~讲这话腰酸呀!
fckeditor是什么
那么这个负责处理玩家的类需要哪些方法呢?
玩家需要登录就有一个 登录方法();玩家需要退出游戏 就需要一个 退出方法();有一次项目中偿试方法都用汉字来定义差点被团友给扔出去C#是可以用汉字来命名的吧)。如果想要得到一位玩家资料就有一个获取方法();删除玩家方法();给玩家发送通知方法();让玩家强制下线方法();玩家注册方法()等等;发挥想象力,但是一定要拥有一个原则,它是围绕玩家类来实现的。这一切都会在设计项目时就已经很清晰的画出来了,
好的,亲爱的旅客已经离开了地球,坐好了!会开启双核亚光速引擎,速度提高双倍!尽可能快的到达火星; 听人家说美国的的火星探车程序用JAVA编写用来通讯的!
经过以上部分的阅读,已经初步有了一个概念,那么接下来就是很重要的部分,来分析一下这种游戏的总体架构模型,认为很重要,不知道认为重要不重要,重不重要得看了才知道哟!Let’s GO!将这个系统划分为这几个重要组成部分:
1) 客户端大厅程序
2) 游戏服务器(集)
3) WEB游戏站点
4) 辅助GM工具
逐一讲解,先看最简单的部分就是WEB游戏站点,既然选择了C#还干嘛要用PHP,JSP呢,可惜人家PHP是FREE的呀,羡慕ing,不过用盗版,嘿嘿!等做大了还怕出不起这几个版权费用嘛,最贵的可是SQL系统哦,好几万啊,所有的预算加起来要十几万啊才一个解决方案! WEB游戏站点用ASP.NET实现,新建一个解决方案,再建立一个网站项目,想做网站任何人都比来的强,这个网站就是给用户查询积分,在线交流,新闻发布,用户注册,修改密码,互动娱乐等等作为一个推广的平台!这中间没啥好讲的,唯一能够打交道的就是数据库,因为和游戏系统 交互纽带就是通过数据库。既然讲到数据库,那么就顺便讲一下如何设计数据表结构吧,这中间不想用更多的废话讲,很简单,把策划与需求分析好,转成数据表,规划好数据完整约束,建立好索引,命名好规范,合理设计好用户表等等;其实前面所讲到的玩家类就是一个数据表的体现。博客园的人谁不会呀!
OK,在双核亚光速的旅途中已经建立好了游戏站点,玩家可以申请帐号,登录管理中心等等操作!让地球的玩家通过WAP连接进来吧,什么这种无线技术延时……….现在很振奋吧,
的站点架设完毕了!一切看上去都是那么的真实美妙,只有自己知道还没有做出来呢?,伟大的C#,在做游戏站点的时候已经拥有了sqlhelper类,通常为了能够给游戏中使用将它单独划入一个公用类库中,想大家也是这么做的。(比如:www.sfibm)这儿将这个数据帮助类已经写好了,下载即可,只有几个方法很简单也够全面,几乎可以用这几个方法操作所有的需求,学习过那个叫什么Pet什么的工程就清楚了。看不懂这段话吗? SqlHelper类你不知道吗,网上一大把呀,做Asp不用它吗? 这位旅客请下船,什么下船还要拿走SqlHelper类?接着继续来观看辅助GM工具的设计,其实这类工具未必要做成WINFORM形式的,完全有必要集成在游戏站点的后台中,依情况与心情决定吧!它主要负责的就是给一些用户增加积分,删除一些用户,注册一些用户,禁用一些用户,配置一些游戏参数,积分双倍,活动定义,游戏公告,游戏通知,广告通知等等操作!这其中涉及到的一些操作可能不是十分完全明白,不知道怎么和游戏结合,OK,只要把操作保存到DB中即可,如果是单独用WINFORM操作也可以把它保存到INI文件或XML文件中,注意这可是配置服务参数,不要搞进客户端哦!
游戏站点的设计!辅助工具的编写,接下来就是的最后冲刺部分,启动四核亚光速引擎全面
现在开始全面讲解游戏服务器方面的知识
游戏服务器是非常重要的组成部分,游戏的性能以及安全和稳定全靠它来支撑,所以设计一个合理的游戏服务器是非常重要的~这是一个很严肃的问题,因为太阳风暴就要来临了,搞不好咱们全玩了,回不了地球了~~很严肃,注意看!游戏辅助框架免root
在这类设计中,通常会使用C/S的应用程序模型。客户端不会处理逻辑判断,仅仅是一个收发器,如果把重要的逻辑判断放在客户端处理就完了,那还有什么信任可言呀,客户随时可以搞个外挂模拟提交~~隔位刺杀,极速外挂!!全乱套了。客户端负责与玩家的交互,接收玩家的操作事件,然后发送给服务端,服务端负责处理判断,然后再发给客户端,客户端收到服务器的消息后再转成UI展现出来,就是这么一个流程,如果想要让通信安全把这些数据包经过一层加密或数字签名~其实所有的游戏都是这么做的,客户端就是存储着些声音图形等界面性的东西。
好了,花了数十个通宵才完成的一个例子,现在先展示它,一层层剖析,可能这不是最好的方案,但是它代表了一家的风范,有权拒绝也有权接受,是讲人权的呀 
由一个DEMO解决方案组成,下面有Chess、ChessServer、Common、DataServer、GameClient、HallServer、LoginServer、OnlyServer八大部分组成。其中Chess是一个棋类游戏的实现,也就是房间,ChessServer是负责这个棋类游戏的服务端逻辑判断部分,Common是存放公存类库的,DataServer是专门用来处理数据库层的服务,GameClient是游戏的客户端是一个Windows应用程序,HallServer是一个负责处理大厅事务请求的服务器服务,LoginServer是负责处理用户登录的服务器服务,OnlyServer是仅给服务器应用程序提供的类库,为了安全起见不能将它与Common弄在一起,要不然发布的时候客户端中也会有这类服务逻辑处理代码,那样就很危险了!grep by命令
好了介绍完了这个工程下面就开始讲解这些服务器之间是如何协同工作的,以及为什么要采用这种设计模式?之所以采用这种设计模式是有很肯定的原因的,废话,要不然这么做干啥!首先做为客户端它不可能知道有这么多服务器的存在,也就是客户端它只要知道登录到哪里,也就是用户要知道要登录到哪个服务器呀,用户需要选择一个最近的服务器,做的这个客户端是一个典型的休闲客户端,其中分二层第一层就是浮在上面的登录层,必须要进行登录后才可以进入第二层;其中登录层是可以托动的,实现了不规则窗体透明效果,这些在C# Windows开发下还是比较方便实现的!
大家看到首先会让用户选择服务器,不同的服务器根据用户距离而决定,其次就是这中间还会加上一层智能判断,来协调哪个登录服务器是爆满的哪个登录服务器是空闲的,这个方法利用计数器就可以实现,其中大家可以看到这些登录按钮都是双个图片进行变的鼠标移上去就会发生变换。上面灰部分是准备嵌套一个公告网页的,这样就可以动态告知用户系统举行了哪些活动等;还可以收入广告费用~~其它系统都不是这样设计的吗其实这个弹出框就是一个窗体,封装了一个MessageBox窗体类,专门用它来处理与用话对话返回确定,取消还有其它种类的返回值! 再来看一张点击了关闭后弹出的对话框:看界面就已经很明白它要完成哪些功能了,下面再看一下代码:
        private TcpListener myListener;
        private IPAddress localAddress;
        private Service service;
        private UserOperat pubuserop = new UserOperat(System.Configuration.ConfigurationManager.AppSettings["Sqlconnstring"].ToString());//单独线程用于处理用户在线;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。