本文首发自inspoy的杂七杂八 | 菜鸡inspoy的学习记录php
以前那篇cocos转unity的系列算是坑了(撒花html
本身是在用unity去尝试作游戏的,中间也遇到了不少不少各类各样的问题,也都在努力去解决。
到目前为止也取得了很明显的成果:主流程都是通的,如今容许多个玩家同时在线,在同一个场景中移动,转向,释放技能;服务器也能稳当的同步各个玩家的信息给全部人。
不过问题也愈来愈多,因为如今网络通信机制的问题,老是会出现莫名其妙的网络断开,并且断开的只是客户端接收响应的通道,客户端依然可以发给服务端消息, 服务端也能够收到,固然也正常地返回结果给客户端,然而这里客户端就收不到了。
另一个状况是:如今的同步机制是客户端各自模拟逻辑和运动,服务端只是负责同步各自的位置,某个玩家把本身的位置告知服务端,服务端再广播给全部其余玩家。这样就会有个问题,因为网络延迟的存在,不一样玩家看到的场面局势是不同的,并且如今也没有对技能释放出来的抛出物进行同步,那些火球的攻击断定也是客户端自行判断的,并且不一样客户端的判断结果颇有可能不同,这已经很难再进行优化了,要改的话必须改为由服务端计算全部移动断定逻辑,客户端只负责发送指令和显示服务端推送的位置信息,本身移动时客户端不作移动,仅当传送给服务端的指令信息被处理,服务端推送给客户端位置变化的git
既然以前的项目写崩了,仍是从新新开一个坑吧233此次决定开源,以后的博客会尽可能同步实际的开发进度,文章里也会贴出部分代码,完整的代码能够去github上找,地址是这里。
固然如今的话,想作个完整的游戏仍是很难,主要问题仍是没有美术,没有美术,没有美术orz
反正作这个项目的主要目的仍是学习,美术资源的话考虑去AssetStore找找。
じゃ、 始まりましょうね~github
新建一个unity项目(我使用的是此时unity的最新稳定版5.5.2f1),首先为了版本控制,先作一些设置:
在Edit->Project Settings->Editor
里面找到Version Control-Mode
,选择Visible Meta Files
。还有Asset Serialization-Mode
,选择Force Text
服务器
而后,再找到Edit->Project Settings->Player
,把里面的Run In Background
打上勾
网络
这个根据我的习惯来定就行了,我这个项目是这样:编辑器
Assets - Assets根目录 | - Resources - 可能须要在程序中动态加载的资源 | - Prefabs - 保存全部预设体 | - Views - 每一个UIView的预设体,即MVP结构UI的M部分 | - Materials - 材质 | - Scenes - 游戏场景 | - Scripts - C#脚本 | - Conf - 配置相关,包括Data和Utils | - Entity - 游戏场景中各类类型的实体,如角色,火球 | - Event - 事件系统 | - Gameplay - 游戏逻辑相关 | - Network - 网络通讯相关 | - UI - MVP结构UI的VP部分 | - Editor - 编辑器扩展相关
上面贴出的代码片断因为篇幅限制只保留了关键部分,完整的代码可在个人github上找到wordpress