用Unity作个游戏(一) - 建立项目时须要注意的点

本文首发自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
服务器


这样作的做用在于能够更好地让unity在git之类的版本控制工具下工做,使全部Assets的Meta文件可见且被版本控制工具管理,强制把全部Assets以文本方式存储,虽然这样作的话可能会使asset的文件尺寸变大,不过以纯文本代替二进制存储在版本控制系统中的好处是不少的,首先能够更方便直观地比较文件版本之间的差别,并且当不一样的人同时编辑同一个文件时,两份文件能够很方便的被合并,二进制存储的话就不行了,只能独占签出来避免冲突。

而后,再找到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

相关文章
相关标签/搜索