unity Server

Unity教程之-C++服务器与unity之间TCP网络通信

 

上篇文章我们了解了《C++服务器与unity之间UDP网络通信》,本篇文章我们继续来学习下利用tcp协议来实现C++服务器与unity之间的通信,以下采用TCP单线程连接。

C++服务端

建立一个Qt的GUI项目,在界面上放一个label显示连接状态,两个button作为指令发送控制。

记得在pro文件中加入network模块 More

Unity教程之-C++服务器与unity之间UDP网络通信

 

服务器的开发选择有很多:java + javascript, c+python, c+lua, scala, go, erlang。我们面向性能的服务器用 java,面向逻辑服务器 python,面向高并发的会选择 scala,早年开发游戏必须用C++,这没得说,2000-2004年,java还没有nio,其他动态语言不抗重负,只能C/C++能开发出完整可用的游戏服务端,下面我们来看下用C++采用udp开发一个简单的服务器与unity通信,众所周知UDP通信,发送速度快,更加灵活,UDP实际相当于是对等通信,不用建立连接,但是这里为了有个server的概念,在服务端绑定了端口,而客户端则是发送时随机分配的端口

C++服务端 More

Unity教程之-unity3d移动端与PC端的数据交互

 

本篇文章我们来看下,unity3d移动端与PC端的数据交互,针对目前功能越来越强大的智能手机来说,在PC端支持对手机中的用户数据作同步、备份以及恢复等保护措施的应用已经急需完善。不仅要对数据作保护,而且用户更希望自己的手机跟PC能够一体化,以及和远程服务器的一体化。用户希望在手机端的操作能够转移到PC端,对于PC端大屏幕的电脑来说,完成同样的操作可以大量的节省用户的时间。对于功能强大的手机来说,有近1/2的应用可以在PC端同步。所以对PC端应用的规划要以系统的角度来对待。同时要保证手机端和PC端的主流交互模式应保持一致。个人观点:数据的一体化和管理的多元化是以后发展的一个趋势。下面进行今天的学习,今天的实验室移动端和PC端的数据交互及解析。

1,如何实现移动端和PC端的数据交互?

答:1,蓝牙 2,NFC技术 3,红外 4,Socket. More

Unity教程之-Unity3d的网络通讯:对接RoyNet的聊天室例子

 

之前的文章中说unity3d可以用WWW来做http通讯。但我还是使用了WebRequest(HttpWebRequest)。本次示例创建三个Scene:登录场景loginScene、服务器选择场景servScene、游戏主场景mainScene

一、首先创建登录loginScene
 

More

Unity教程之-资源版本管理工具Asset Server的搭建

 

本篇文章我们来学习下Asset Server的搭建,Asset Server是目前Unity内部自带的资源版本管理工具。类似于我们平时所熟知的SVN,perForce,但对于目前的Unity,Asset Server要比SVN和perForce等版本控制软件要好用一些,因为Unity3.x版本对于SVN等软件的支持并不是很好,在多人协同工作时,经常会发生数据丢失等情况。因此,本文重点介绍一下Asser Server的搭建方法。至于日常用法,其实与SVN等软件的用法非常相似,所以在这里就不多讲了。

关于Asset Server的搭建步骤,官网论坛上已经有了解释得比较详细明了,在这里我只将其归纳总结一下,使其更加清晰明了。Asset Server的搭建步骤如下所示:

 

1、  首先去官网下载Asset Server工具,地址为:http://unity3d.com/unity/team/assetserver/。下好后在你的服务器上进行安装,这里有个重要的地方,即Asset Server的密码设置,界面如下,这个密码即为以后Asset Server的管理员密码。

Asset Server More

Unity教程之-创建你自己的游戏服务器(五):游戏服务器

 

上篇文章《Unity教程之-创建你自己的游戏服务器(四):服务器间通信》,那么在此基础上,本篇unity3d教程我们来搭建我们的游戏服务器!下面开始!

终于要对游戏服务器开刀了。

此前先提一下,其实只是用SS就可以完成一个简单的游戏服务器了。SS本身就是一个很强大的服务器框架,你可以在SS上就完成登录相关的操作,其他与游戏内容有关的操作也全部通过他的Command,用CommandFilter来筛选掉未登录过的Command,保证与游戏内容有关的操作Command都是登录过的玩家,也就是玩家数据是有效的。

分离开来之后也有好处,第一个是账号可以通用了,再一个连接也挺费机器资源的能够集中到一起了,分开部署有利于机器资源的利用嘛。

这次的游戏服务器搭建,没有新的框架引入了,主要还是上回讲到的用于服务器间通讯的NetMQ。与上回不同的是,上回使用的因为有严格的同步需求,所以是RequestResponse模型,这回只要用PushPull模型即可了。因为是双向通讯,所以还得有两个队列。

涉及到游戏信息的传递,就需要解码和编码报文。这里我选用的是ProtoBuf。第一回也有提到。有稍些听说过U3D用ProtoBuf在iOS上遇到的麻烦,其实勤奋的同学也可以自己写一个序列化的工具,想怎么序列化反序列化就怎么搞,可能会比PB还好用(我以前的公司一个项目就是这样搞的),不过对应多语言什么的可能有不小的工作量。 地址:https://github.com/mgravell/protobuf-net

游戏服务器这里开始代码量就会比较大了,所以不再像之前那样把所有的代码贴出来。因此,我在GitHub上建了个项目,你可以访问这个地址https://github.com/Roytin/RoyNet来获取最新的代码。

下面讲下主要的代码段和思路 More

Unity教程之-创建你自己的游戏服务器(四):服务器间通信

上篇文章《Unity教程之-创建你自己的游戏服务器(三):网关服务器》,本篇unity3d教程我们来实现服务器的通信,下面开始!

本回要引入的是:NetMQ NetMQ是开源消息队列ZeroMQ的.NET版本,也是基于socket,所以可以在不同主机进行通讯。基于安全性的考虑,服务器内部的通讯必须是可信的,所以可以使用NetMQ。NetMQ的使用非常简单,如下几步走:

  • CreateContext
  • CreateSocket
  • Connect/Bind
  • Send/Receive
  • Dispose

这里我使用Push->Pull模型 代码差不多是这个样子 More

Unity教程之-创建你自己的游戏服务器(三)

 

前两篇文章《Unity教程之-创建你自己的游戏服务器(一)》 《Unity教程之-创建你自己的游戏服务器(二)》我们学习了如何搭建服务器,本篇unity3d教程我呢么继续来学习下,创建自己的服务器–网关服务器的搭建,下面开始

一、引入SS

首先,下载最新版的ss,或者通过NuGet安装。我是下载源码的,当前版本是1.6.4。之后运行build脚本,生成之后,到bin目录下拷贝相应.net版本的dll到项目中。

我在原来的解决方案新建了一个GateServer项目,同样是Console应用。新建文件夹Reference,将刚才复制的dll粘贴到目录中。将ss需要用的log4net的配置文件放到项目根目录下的Config目录中。添加引用。

最后的结构大概如下图: More

Unity教程之-创建你自己的游戏服务器(二)

 

上篇文章《创建你自己的游戏服务器(一)》,本篇unity3d教程我们继续来学习下,登录服务器与Nancy,下面开始

首先,用VS新建一个项目,我使用的是VS2013。以我的风格命名为Roy.GameEngine.LoginServer。这是一个控制台应用。

准备工作

接下来安装NancyFx

我们通过NuGet来获取Nancy.Hosting.Self和Nancy.Owin两个包,因为依赖于Nancy,所以也会自动获取Nancy。

由于需要读取玩家的账号信息,所以还需要连接数据库,我使用的是MySQL,那么继续通过NuGet获取MySql.Data。添加之后在App.Config中将出现如下图的配置节点。

More

Unity教程之-创建你自己的游戏服务器(一)

 

本篇Unity3d教程我们来学习下搭建自己的游戏服务器,搭建一个简单的游戏服务器框架。

基本结构

先说基本的组成:

  • 一个登录服务器负责简单的登录验证
  • 一个网关服务器负责验证与维持跟客户端的连接
  • 几个游戏服务器,包括世界场景服务器、PVP战场服务器、副本服务器等现阶段不考虑的游戏内容相关的服务器。

下面以玩家第一次登录来展示各个服务器之间的协作。

登录服务器

More