XBOX ONE游戏开发常见问题
终于弄懂这个在Unity的sdk在Account Picker切换账号的机制了,一个手柄注册一个账号,在游戏里面的时候,只有另外一个手柄选择自己的账号,系统的Active User才改变
如果同一个手柄选择另外一个账号的话,不改变系统active user
最基本的 如何让XBOX开发机 开启开发模式?
勾开发者套件
在系统里面依次按下LBRBLTRT
然后重启,重启后会有 开发者设置,里面可设定沙盒等参数
1.微软提供了一个DelegatedAuthServer的ASP.NET网站例子,作用是做SSO登陆服务器
restService.svc里面有一个方法messageOfTheDay
主要是用于测试XBOX Console 发来的令牌解密,
在XBOX Console里调用DLL IMPORT 函数XboxLiveService_CallWebService
会返回False或True,一般False表明用户没有登陆,当然还有其它的几种情况
生成证书,原文档有一些错误,主要是最后-号有问题,然后是生成文件名没有放在最后
正确的如下:
makecert -sv RP_Private_Key.pvk -n "CN=Contoso Relying Party" -b 01/01/2015 -e 12/31/2199 -sky exchange -ss My -a sha256 -len 2048 -r -pe RP_Cert.cer
服务器的证书还出过一次问题,现象为XBOX Console没有把令牌发过来,
经查看服务器,发现证书的私钥管理的用户里,原来的SERVICE变成了?号,重新添加了一下
然后又重新导入后RelyingPart证书解决
*如何得知上面说的其它的几种情况?
由于这个代码是C++写的,在C#中调试,需要启动2个visual stuido2013,
c++项目 选择附加到进程-》XBOX Console 的IP ,在列表中选择XboxOnePlayer.exe
这样就可以调试从托管环境到非托管环境
2.使用UNITY来编写XBOX游戏,使用UNITY提供的插件,出现闪退
UNITY提供的插件有托管的和非托管的,是配对的
比如Friends.dll(C++),那么就有一个FriendsImport.dll(C#),
通过非托管和托管之间进行数据交互,回调
如果少导入一个,启动时会出现闪退,并且编译器也不会提示出错
3.在UNITY发布时出现错误
Failed to Push deploy, AUMID and PFN could not be found in the output.
args: Push "C:/Users/FUX-hp/Desktop/MP2105/MP2105/Building\MP2105"
那时因为UNITY生成的文件都很大,每一次编译需好几分钟,为提高发布效率
有几种DEPLOY METHOD
PACKAGE为完整发布
PUSH和PULL是快速发布
必须先完整发布一次,直接使用PUSH就会报这个AUMID and PFN could not be found的错
4.在编写多人游戏功能时,调用tryWriteSessionAsync时报错0x810910900,但是参数是对的
需要先注册RTA,否则会出这个错
RTAMultiplayerManager.RegisterBothCallbacks(
5.XBOXLIVE服务器抽风造成的问题
某天周一,下午下班后仍在调多人游戏接口,结果程序报异常
还打出好多EXCEPTION,开始是以为程序没布好,但是自已没改过代码
经查看发现
NETRUM: MatchmakingSession::BeginMatchmaking()
NETRUM: SwitchState CreateLobby -> Lobby
== [XBOX SERVICE CALL] #8
[HttpMethod]: POST
[URI]: https://momatch.xboxlive.com/serviceconfigs/8d950100-0b51-40ad-a13c-b0fb56d74423/hoppers/GoodReputationHopper
[RequestHeaders]: Accept-Language: en-US; Content-Type: application/json; charset=utf-8; x-xbl-api-build-version: xdk,6.2.13004.0; x-xbl-build-version: current; x-xbl-contract-version: 103;
[RequestBody]: {"giveUpDuration":300,"preserveSession":"never","ticketSessionRef":{"scid":"8d950100-0b51-40ad-a13c-b0fb56d74423","templateName":"LobbySession","name":"lobby-bb81e728-412c-4c57-a6b7-9a30cd6244b1"}}
[ErrorCode]: 0x00000000
[HTTP Status]:
[HRESULT]: 0x801901f8 HTTP_E_STATUS_GATEWAY_TIMEOUT
[ResponseHeaders]: Connection: close; ;
原来是XBOXLIVE服务器抽风,上官网一看果然如此
http://support.xbox.com/zh-CN/xbox-live-status?icid=furl_status