SlideShare a Scribd company logo
使用Photon Server來
建立可以動的Unity連線程式
DS HEP. I
較好的教學內容
我之後有重新編寫Photon Server的教材,並修正了一些錯誤
建議可以直接轉去看新的教材
Photon Server基礎與部署
https://lightofhexagram.wordpress.com/2016/09/13/photon-server基礎與部署/
Photon Server/Unity Client基礎通訊實例
https://lightofhexagram.wordpress.com/2016/09/14/photon-serverunity-client基礎通訊實例/
學習內容
建立純粹只是可以動的Unity連線程式(以電腦桌面平台為主)
學習指標:
內容: ★★★☆☆☆☆☆☆☆
深度: ★★☆☆☆☆☆☆☆☆
實用性: ★★★★★★★☆☆☆
連線程式基本需求
有一個伺服器端(Server) 接收來自外部的連線
伺服器端可以接收已連線客戶端(Client)的請求並回復 或是 主動傳送資料
有一個客戶端作為使用者操作介面 連接伺服器
兩個可以在同一台電腦上
如果要架設對外的伺服器 要確定伺服器的網路具有實體IP
為什麼不從頭開始造Socket Server
如果只是為了通訊功能 從頭開始造Socket Server代價太高
除非有很多時間資源 自己的能力和知識也很充足 不然只是為了通訊功能只是自我毀滅
TCP分頁, UDP可靠性, 序列化, 加密, 安全性, 附載平衡, 伺服器對伺服器, 多平台
可靠性, 除錯, 性能, 分析 等等
有10年以上專業知識的公司已經幫你把產品做好了 100個連線以下免費
除非你想鑽研通訊的部分 不然不建議把時間花在這部份上
為什麼用Photon Server
因為我自己學Unity線上遊戲看的書用這個
支援許多平台
資訊自己看:http://doc.photonengine.com/zh-tw/onpremise/current/getting-started/photon-
server-intro
可以使用C#來寫伺服器程式
準備工作
Photon Server需要架設在Windows平台上
如果你不想用Windows可以去研究一下Photon Server 的Plugin 或是找找其他的SDK
有Unity開發環境 最好有Visual Studio可以用
申請Photon Engine帳號 拿100連線免費授權 https://www.photonengine.com/zh-
tw/account/signup
下載Server SDK https://www.photonengine.com/zh-tw/OnPremise/Download
有基本的C#知識
準備工作
把license丟到Photon的資夾 deploybin_Win64 下
開個Visual Studio C# 類別庫專案
我把專案名取PhotonServerExercise
好了之後把自動生成的Class1刪掉
給方案加入參考:
ExitGames.Logging.Log4Net.dll
ExitGamesLibs.dll
log4net.dll
Photon.SocketServer.dll
PhotonHostRuntimeInterfaces.dll
這些dll在Photon資料夾lib下
建立必要類別
建立2個class 作為伺服器主體 Application 和 與客戶端連結的Peer
這裡我使用ExerciseApplication 和 ExercisePeer
首先建立ExerciseApplication
要using以下命名空間
using ExitGames.Logging;
using ExitGames.Logging.Log4Net;
using log4net.Config;
using Photon.SocketServer;
using System.IO;
ExerciseApplication
把類別設成public 並繼承
public class ExerciseApplication : ApplicationBase
實作抽象類別(可以用VS的自動完成)
會有3個方法
CreatePeer:新Client建立連線的時候會被呼叫 用來創建Peer
Setup:伺服器程式啟動的時候會執行的部分
TearDown:伺服器程式關閉的時候會執行的部分
接下來換ExercisePeer
ExercisePeer
使用命名空間:
using System;
using Photon.SocketServer;
using PhotonHostRuntimeInterfaces;
方法:
public ExercisePeer(InitRequest initRequest) : base(initRequest) { } Constructor
protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail) Client斷線的時候要做的事
{
throw new NotImplementedException();
}
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) Client發Operation過來的時候要做的事
{
throw new NotImplementedException();
}
實作ExerciseApplication
按照你自己的需求建造 CreatePeer的地方 記得要回傳自己實作的Peer
如果你怕之後找不到生出來的Peer的話,記得要先用一些集合把它存起來
這裡介紹用Photon Server的Logger
給ExerciseApplication加入一個靜態欄位方便在Peer的地方也可以寫Log
public static readonly ILogger Log = LogManager.GetCurrentClassLogger();
在Setup()的地方進行路徑設定
沒需要實作的地方記得要把throw new NotImplementedException();
刪掉 才不會出錯
Setup()
protected void Setup ()
{
log4net.GlobalContext.Properties["Photon:ApplicationLogPath"] =
Path.Combine(this.ApplicationPath, "log");
FileInfo file = new FileInfo(Path.Combine(this.BinaryPath, "log4net.config"));
if (file.Exists)
{
LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
XmlConfigurator.ConfigureAndWatch(file);
}
}
寫Log
你可以在Setup()最後加上 Server Setup Successiful.......的Log
來確認伺服器程式啟動後沒出錯
這樣寫
Log.Info("Server Setup Successiful.......");
Log還有很多方法可以用 可以自己研究看看
實作ExercisePeer
OnDisconnect()有需要的話再寫就好
重點是OnOperationRequest
operationRequest.OperationCode 這是Client端發送過來的OperationCode 型態是byte
根據這個值來處理不同的operations
operationRequest.Parameters這是Client端發送過來的operation參數
型態是Dictionary<byte, object>
根據不同的operation來存取這個參數
因為這個參數是你自己從client端送來的 所以你應該自己知道那些key對應什麼型態的什麼
參數
發送Response
用
Peer的SendOperationResponse方法來送response
第一個參數是response主體 第二個是資料傳輸的設定 用new SendParameters()就可以了
第一個參數型態是 OperationResponse
Constructor第一個參數是要傳回去operationCode 你可以用和發來的同一個
第二個是型態是Dictionary<byte, object> 的參數 看你要傳些什麼
C#基本型態Photon有支援 可以查看官方文件 至於其他類型就需要比較進階的處理方法
Response 可以給return code 來告訴client有沒有哪裡出錯了 整個response差不多會長這樣
OperationResponse response = new OperationResponse(operationCode, parameter)
{
ReturnCode = (short)ErrorCode.NoError
};
如果沒有要回送參數 也可以不要參數 只有operationCode就好
發送Event
除了發送Response之外 也可以發送Event 這和response的差異是你可以在client端分開處理
這兩種回應 作為server端主動送資料的行為 而不是operation response的被動行為
如果這兩種還不夠用的話 就需要自行對這部分加一層抽象化了
用peer的SendEvent方法來送 和送response差不多 只是第一個參數換成EventData
EventData 沒有ReturnCode
Constructor 的參數可選 Code是像operationCode的東西
Parameters則相同
這樣Server端的部分就差不多完成了 可以建立連線 接收operation並回應(不一定要回應)
發送Event
Server部屬
程式寫好之後 建置專案
打開Photon資料夾
deploy 建一個放你伺服器的資料夾
在資料夾裡建立兩個資料夾 bin 和 log
把建置的檔案全部放到bin當中
打開deploybin_Win64PhotonServer.config
把裡面有MMoDemo的地方都改寫掉
改寫Config
第一個 <MMoDemo 這個MMoDemo改成你喜歡的名字 這裡記做A 記得對稱的
</MMoDemo> 也要改成一樣的
DisplayName=“MMO Demo” 這個是在Photon Server 程式列表顯示的名字 可以隨便取
有3個OverrideApplication=“MMoDemo” 要改成OverrideApplication=“A”
<Applications Default=“MMoDemo”> 改成 <Applications Default=“A">
< Application >< /Application >包起來的裡面如下頁
Application
Name=“MMoDemo”
=> Name=“A”
BaseDirectory=“MmoDemo”
=> 你放bin log 的資料夾名稱
Assembly=“Photon.MmoDemo.Server”
=> 你自己建的dll 名稱 像是PhotonServerExercise.dll 沒有.dll
Type=“Photon.MmoDemo.Server.PhotonApplication”
=> Type=“PhotonServerExercise. ExerciseApplication” application類別全名(命名空間+類別)
其他不用改
啟動Server
好了之後啟動bin_win64的PhotonControl.exe
他會像防毒軟體那樣自動加到隱藏工具列
開啟後 點隱藏工具列小圖示右鍵 你的應用程式 Start as application 就可以了
按Open Logs可以查看Log 自己開啟應用程式下的log資料夾 打開log
看看有沒有成功setup
Client端
新建一個Unity專案
在Asset下建立資料夾Plugins
放入在lib下的
Photon3Unity3D.dll
建立一個類別
使用命名空間 using ExitGames.Client.Photon;
繼承IPhotonPeerListener
要有一個element 類別是PhotonPeer
我通常取名叫peer
實作
DebugReturn是方便給你Debug用的 看你要怎麼寫 像是簡單的Debug.Log(message);等等
OnEvent是給你處理Server送過來的EventData 依照eventData.Code來做對應的操作
OnOperationResponse也差不多 只是這是response的
OnStatusChanged是連線狀態變更的時候會呼叫的 通常要這樣寫
switch (statusCode)
{
case StatusCode.Connect: 連線之後要建立加密
peer.EstablishEncryption();
break;
case StatusCode.Disconnect: 斷線的時候要做的事(這裡什麼都不做)
break;
case StatusCode.EncryptionEstablished: 加密建立完成(通常這裡之後才算正式連線完成)
break;
}
Peer操作
PhotonPeer主要做4件事情
Connect 和伺服器連線
Disconnect 中斷和伺服器的連線
Service 讓peer運作(需要在像FixedUpdate/Update的地方一直呼叫他)
OpCustom 發送Operation
Disconnect和Service沒有參數 直接呼叫就好
Connect
我通常是要連線的時候才創建peer 因為創建的時候要指定通訊方法 通常是用udp 根據需
求更換其他的
this 是個IPhotonPeerListener 因為在類別內使用所以用this
peer = new PhotonPeer(this, ConnectionProtocol.Udp);
peer.Connect(serverAddress + ":" + udpPort.ToString(), serverName)
Connect有兩個參數第一個是要連線的 address:port 如 “127.0.0.1:5055” (udp預設5055port)
第二個是你在PhotonServer.config <Appplication 的 Name >
回傳值是bool表示有沒有連上這個server address 之後會連動OnStatusChanged
OpCustom
OpCustom有很多個constructor
簡單使用的是bool OpCustom(byte customOpCode, Dictionary<byte, object>
customOpParameters, bool sendReliable, byte channelId, bool encrypt);
customOpCode就是送過去的operationCode
customOpParameters就是送過去的parameters
sendReliable 設 true
channelId 設 0
Encrypt 設 1
前兩個也可以組成OperationRequest再送出去 效果相同
Client端完成
創建IPhotonPeerListener的實作之後
寫個script不斷執行.Service()
對peer進行Connect 連線 伺服器創建Peer
peer發送operation Server端peer收到 做出response
peer接收到response 做對應的動作
Server peer送event client peer 收到event做對應的動作
peer斷線 server收到斷線訊息
基本的網路通訊就是這樣 其他的部分就根據自己的需求建造
總結
因為這裡只有教可以動的Unity連線程式
這就真的只是可以動而已 什麼都沒有 只有通訊功能
整個系統剩下的部分需要自己去開發
有出錯或是有問題可以問我
我的GitHub上有一些用過的範例
DSforGITHUB(舊)
Resource-Emperor(有點舊)
IANT(比較新)
DoorofSoul(最新)
也有自己造Socket Server的範例
MonopolyOnlineGame(有點舊)

More Related Content

Viewers also liked

Socket programming
Socket programmingSocket programming
Socket programming
harsh_bca06
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Intro
ericpi Bi
 
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手
Will Huang
 
Chapter 3 : User Datagram Protocol (UDP)
Chapter 3 : User Datagram Protocol (UDP)Chapter 3 : User Datagram Protocol (UDP)
Chapter 3 : User Datagram Protocol (UDP)
Ministry of Higher Education
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
 
Socket programming
Socket programmingSocket programming
Socket programming
chandramouligunnemeda
 
User datagram protocol (udp)
User datagram protocol (udp)User datagram protocol (udp)
User datagram protocol (udp)
Ramola Dhande
 
공성대전 C# 사용기
공성대전 C# 사용기공성대전 C# 사용기
공성대전 C# 사용기Myoung-gyu Gang
 
[系列活動] 文字探勘者的入門心法
[系列活動] 文字探勘者的入門心法[系列活動] 文字探勘者的入門心法
[系列活動] 文字探勘者的入門心法
台灣資料科學年會
 
Socket Programming Tutorial
Socket Programming TutorialSocket Programming Tutorial
Socket Programming Tutorial
Jignesh Patel
 
UDP - User Datagram Protocol
UDP - User Datagram ProtocolUDP - User Datagram Protocol
UDP - User Datagram Protocol
Peter R. Egli
 
Tcp and udp
Tcp and udpTcp and udp
Tcp and udp
Ahmad Khalid Nasrat
 

Viewers also liked (14)

Socket programming
Socket programmingSocket programming
Socket programming
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Intro
 
Basic socket programming
Basic socket programmingBasic socket programming
Basic socket programming
 
保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手保哥線上講堂:LINQ 快速上手
保哥線上講堂:LINQ 快速上手
 
Chapter 3 : User Datagram Protocol (UDP)
Chapter 3 : User Datagram Protocol (UDP)Chapter 3 : User Datagram Protocol (UDP)
Chapter 3 : User Datagram Protocol (UDP)
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
 
Socket programming
Socket programmingSocket programming
Socket programming
 
User datagram protocol (udp)
User datagram protocol (udp)User datagram protocol (udp)
User datagram protocol (udp)
 
공성대전 C# 사용기
공성대전 C# 사용기공성대전 C# 사용기
공성대전 C# 사용기
 
TCP Vs UDP
TCP Vs UDP TCP Vs UDP
TCP Vs UDP
 
[系列活動] 文字探勘者的入門心法
[系列活動] 文字探勘者的入門心法[系列活動] 文字探勘者的入門心法
[系列活動] 文字探勘者的入門心法
 
Socket Programming Tutorial
Socket Programming TutorialSocket Programming Tutorial
Socket Programming Tutorial
 
UDP - User Datagram Protocol
UDP - User Datagram ProtocolUDP - User Datagram Protocol
UDP - User Datagram Protocol
 
Tcp and udp
Tcp and udpTcp and udp
Tcp and udp
 

Similar to Unity Photon server 基礎設施

容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
Andrew Wu
 
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Justin Lin
 
Lab01 cloud project
Lab01 cloud projectLab01 cloud project
Lab01 cloud projectJeff Chu
 
Appserv setup
Appserv setupAppserv setup
Appserv setupHt Wang
 
輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14
twMVC
 
twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC#14 | 輕鬆上手ASP.NET Web API 2twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC
 
深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabricJohn Chang
 
大话Php之性能
大话Php之性能大话Php之性能
大话Php之性能
liqiang xu
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 
zhuwenlongChinese
zhuwenlongChinesezhuwenlongChinese
zhuwenlongChineseWenlong Zhu
 
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除5045033
 
2010.09.21專題報告
2010.09.21專題報告2010.09.21專題報告
2010.09.21專題報告黃振庭
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
Cyril Wang
 
Vlog02 [eng sub]什麼是controller和如何在asp.net核心中創建controller?-what is controller ...
Vlog02  [eng sub]什麼是controller和如何在asp.net核心中創建controller?-what is controller ...Vlog02  [eng sub]什麼是controller和如何在asp.net核心中創建controller?-what is controller ...
Vlog02 [eng sub]什麼是controller和如何在asp.net核心中創建controller?-what is controller ...
SernHao TV
 
系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體
鍾誠 陳鍾誠
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇
建興 王
 
Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學
Wei-Xiang Wang
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
Fred Chien
 

Similar to Unity Photon server 基礎設施 (20)

容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
 
Lab01 cloud project
Lab01 cloud projectLab01 cloud project
Lab01 cloud project
 
Appserv setup
Appserv setupAppserv setup
Appserv setup
 
輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14
 
twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC#14 | 輕鬆上手ASP.NET Web API 2twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC#14 | 輕鬆上手ASP.NET Web API 2
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 
Jobforcompal
JobforcompalJobforcompal
Jobforcompal
 
深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric
 
大话Php之性能
大话Php之性能大话Php之性能
大话Php之性能
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
zhuwenlongChinese
zhuwenlongChinesezhuwenlongChinese
zhuwenlongChinese
 
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除
 
2010.09.21專題報告
2010.09.21專題報告2010.09.21專題報告
2010.09.21專題報告
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
 
Vlog02 [eng sub]什麼是controller和如何在asp.net核心中創建controller?-what is controller ...
Vlog02  [eng sub]什麼是controller和如何在asp.net核心中創建controller?-what is controller ...Vlog02  [eng sub]什麼是controller和如何在asp.net核心中創建controller?-what is controller ...
Vlog02 [eng sub]什麼是controller和如何在asp.net核心中創建controller?-what is controller ...
 
系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇
 
Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
 

Recently uploaded

GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
微信 tytyqqww业务接单
 
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
微信 tytyqqww业务接单
 
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
ictglzse
 
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
微信 tytyqqww业务接单
 
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
微信 tytyqqww业务接单
 
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
h0wovd5
 
Lesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptxLesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptx
priscilleng1
 
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
微信 tytyqqww业务接单
 
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
ssuserd66db11
 
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
微信 tytyqqww业务接单
 
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
微信 tytyqqww业务接单
 
Unit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptxUnit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptx
priscilleng1
 
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
h0wovd5
 
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
h0wovd5
 
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
h0wovd5
 

Recently uploaded (15)

GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
GPA不高,申硕有点困难。想问问能不能改一下成绩单呢?留学生学历认证为什么不通过美国成绩单办理|修改美国大学成绩单|美国假成绩单定制【微信:oojjiijj】
 
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
前置学历问题应该怎么处理?GPA低申硕困难,可以修改成绩单吗?毕业难?学历认证来帮忙!留服中心授权机构🎓【微信:oojjiijj】
 
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
 
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
 
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
 
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
 
Lesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptxLesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptx
 
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
黑客常用的邮件入侵方式如何破解Instagram帐户和密码,留才认证和留服认证的区别中留服认证•海外学历认证•国外学历学位认证留才认证和留信认证(留信认证...
 
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
 
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
🎓挂科?不存在的! 想修改成绩却怕麻烦?别担心,我们有绝招! 💡🌟一分钟内搞定,轻松0元就能改好哦~ #快速修复#省心省力#技术爆棚#简单易操作【微信:o...
 
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
 
Unit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptxUnit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptx
 
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
 
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
 
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
 

Unity Photon server 基礎設施