Git Product home page Git Product logo

libunity's Introduction

gonet/2 Unity 客户端网络库

  1. 打开Unity, New project
  2. 打开project所在目录, 新建文本文件Assets/smcs.rsp, 内容如下:
    (2、3顺序如果错了就要重启Unity)
-unsafe
  1. clone网络库
$ git clone https://github.com/en/libunity.git Assets/Scripts/NetLib
  1. Create Empty, 新建一个空的GameObject, 选择GameObject, 添加脚本组件Assets/Scripts/NetLib/Sample/Main.cs
  2. 部署好gonet/2服务端, 修改Main.cs中的IP地址, 运行Unity测试

简明易懂的服务端部署教程(适用于快速体验或开发环境)

我的机器环境(不同的发行版可能有区别):

$ cat /etc/os-release | head -n +1 | awk -F'"' '{print $2}'
Arch Linux

$ go version
go version go1.6.3 linux/amd64

$ docker -v
Docker version 1.11.2, build b9f10c9
  1. 首先, 保证机器可以科学上网, 不然会卡在某些步骤
  2. 安装和配置docker
$ sudo pacman -S docker

# 启动docker服务
$ sudo systemctl restart docker

# 把普通用户加入docker组, 这样就不用sudo了, 替换ys为你当前在用的普通用户
$ sudo gpasswd -a ys docker

# 使用上面的用户重新登陆或下面命令使用户组生效
$ newgrp docker

# 看输出是否正常
$ docker info
  1. 使用docker运行一些基础设施

关于docker pull镜像慢的问题, 有必要安利一下kcptun+proxychains/proxifier

$ docker run -d -p 80:80 -p 8125:8125/udp -p 8126:8126 --name kamon-grafana-dashboard kamon/grafana_graphite

# 如果没有172.17.42.1这个地址, 添加一个:
$ sudo ip addr add 172.17.42.1/16 dev docker0

# 安装etcd
$ export HostIP="172.17.42.1"
$ docker run -d -p 4001:4001 -p 2380:2380 -p 2379:2379 --name etcd quay.io/coreos/etcd:v2.0.3 \
  -name etcd0 \
  -advertise-client-urls http://${HostIP}:2379,http://${HostIP}:4001 \
  -listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
  -initial-advertise-peer-urls http://${HostIP}:2380 \
  -listen-peer-urls http://0.0.0.0:2380 \
  -initial-cluster-token etcd-cluster-1 \
  -initial-cluster etcd0=http://${HostIP}:2380 \
  -initial-cluster-state new

# 填充一些必要的数据到etcd
$ docker exec etcd /etcdctl -C http://172.17.42.1:2379 set /backends/game/game1 172.17.42.1:51000
$ docker exec etcd /etcdctl -C http://172.17.42.1:2379 set /backends/snowflake/snowflake1 172.17.42.1:50003
$ docker exec etcd /etcdctl -C http://172.17.42.1:2379 set /seqs/userid 0
$ docker exec etcd /etcdctl -C http://172.17.42.1:2379 set /seqs/snowflake-uuid 0
  • 注意: 快速体验mongodb/elk等暂时不需要, 游戏配置也不需要上传到etcd
  1. 获取代码和编译
$ mkdir -p ~/gonet2/src
$ cd ~/gonet2/
$ export GOPATH=`pwd`
$ git clone https://github.com/gonet2/agent.git ./src/agent
$ git clone https://github.com/gonet2/game.git ./src/game
$ git clone https://github.com/gonet2/snowflake.git ./src/snowflake

# 需要go版本支持vendor, 比如1.5.2就不支持
$ go install snowflake
$ go install game
$ go install agent
  1. 运行
# 启动snowflake
$ ~/gonet2/bin/snowflake

# 开一个新的终端
$ ~/gonet2/bin/game

# 再开一个终端...
$ ~/gonet2/bin/agent

# Unity观察Console, 服务器自己调整日志级别吧
  • 注意: 如果服务之间的rpc有改动, 需要运行tools/pb-gen.sh(可能要根据自己情况改一下)更新.pb.go文件; 如果和客户端的协议有变化, 需要在tools/proto_scripts下生成新的协议文件, 拷贝到服务器和客户端的相应位置

FAQ

  1. 这个库有没有在生产环境跑过?

有!跑过大约一个多月, 简单的使用, 应该没有问题

但我c#并不太会, 只是实现了基本功能, 没有太注意结构, 很多地方都可以改进

建议用来上手、调试, 之后魔改

  1. 有没有改进计划?

没有!之前那个游戏停了, 改了现在也没机会规模性的测试

  1. 支不支持kcp?

不支持!我想啊...

libunity's People

Contributors

en avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

libunity's Issues

启动报错

[Singleton] An instance of NetCore is needed in the scene, so '(singleton) NetCore (UnityEngine.GameObject)' was created with DontDestroyOnLoad.
UnityEngine.Debug:Log(Object)
NetProto.Singleton`1:get_Instance() (at Assets/Scripts/NetLib/Singleton.cs:51)
Sample.Main:Start() (at Assets/Scripts/NetLib/Sample/Main.cs:18)

System.Net.Sockets.SocketException: 使用了与请求的协议不兼容的地址。

at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP, Boolean requireSocketPolicy) [0x00000] in :0
at System.Net.Sockets.Socket+Worker.Connect () [0x00000] in :0
UnityEngine.Debug:Log(Object)
NetCore:ConnectCallback(IAsyncResult) (at Assets/Scripts/NetLib/NetCore.cs:180)
System.Net.Sockets.Worker:Connect()

@en 能说下gonet2在mac 环境下配置开发么

因为之前没有处理过 docker 的缘故,看作者使用的方式是 docker+mac开发方式,要想在本地 mac+docker 跑起来还是很费劲的事情,求@en 指导

1:根据作者的https://github.com/gonet2/doc/blob/master/INSTALL.md安转指南,
$curl -s https://raw.githubusercontent.com/gonet2/tools/master/clone_all.sh | sh
这里应该是同步到本地代码吧?理解为 goget 一样的功能可否?

2:Docker启动服务,如果我采用gogland 编译器!本地怎么调试呢?
或者是开发方式不是这样的?

3:各个模块在 gonet2的用途,都是必须安装的么?我如果安装高级版本是否影响框架?

StatsD + Graphite + Grafana 2 + Kamon Dashboards 监控系统
http://skaka.me/blog/2015/07/21/kamon-statsd-graphite-grafana-introduction这个博主介绍了他的用处
不明白为什么是 JVM 项目可视化,怎么做到 golang 项目的执行可视化?
共享和服务发现
etcd-browser 管理
etcd

mongo
数据库
根据博主写的地址,我 mac 里面有一个 mongo 但是我还是要基于 docker 安装

这两个是处理日志的系统
ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
https://my.oschina.net/itblog/blog/547250
stdout汇聚
http://dockone.io/article/373
https://yq.aliyun.com/articles/30344 基于Logspout+ELK实现docker日志自动化

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.