问题标签 [photon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
114 浏览

unity3d - 如何断言产卵是“填充”的?

我有两个重生点,玩家将在连接时出现。

我需要这样,当其中一个玩家连接到一个点时,任何其他玩家总是会在另一个点产生。

如果有帮助,这里有一些视觉效果:https ://goo.gl/Y0ohZC

在此先感谢,我

0 投票
1 回答
285 浏览

c# - 如何将 .net 套接字服务器中的现有代码迁移到 Asp.net REST web api?

我正在尝试将逻辑从基于实时 .NET 的套接字服务器迁移到基于 RESTful 的 ASP.net Web api。原因是我们的游戏设计发生了变化,我们不再需要对套接字服务器进行任何实时处理。

为了迁移,我需要做以下事情,但我没有使用 Asp.net 的经验,所以希望有人能指出我正确的方向:

1) 在套接字服务器中,当玩家建立连接时,我们将该玩家的所有数据从数据库加载到 Player 类的实例中,例如玩家的库存。我们在服务器端的连接对象上保持这个实例处于活动状态,这样只要 tcp 套接字连接处于活动状态,这个 Player 对象就相当于在内存中保存玩家数据的缓存。但是我不知道将这个 Player 实例放在 Asp.net Web API 中的等效位置,这会是会话状态吗?

2) 游戏有所有连接的客户端都可以使用的静态数据,例如武器造成的伤害。我们将这些数据从数据库加载到服务器应用程序实例上的 StaticData 对象中。在 Asp.net web api 中保存应用程序范围数据的地方是什么?

3)我们不使用 MVC 架构,目前我们在客户端和服务器之间进行通信的方式是我们发出请求(例如出售商品),服务器验证并处理请求,并通过序列化将更新的状态发送回客户端更新后的数据到 object[] 数组中。似乎对于 asp.net MVC,很多事情都是“自动的”,相当于在 asp.net 中执行“向服务器发送请求 -> 服务器进程并发送回更新的状态 -> 客户端反序列化状态” Web API 世界?

0 投票
2 回答
15015 浏览

c# - How could I use OnPhotonSerializeView?

I am currently to to instantiate a box when the player drops it (using "PhotonNetwork.Instantiate"). Now this box, when the player drops it is given data about that box, in the form of an Enum and then distributes the value to the box. But, when the other client picks it up, the box has no values.

When user client drops box:

When other client drops it:

code:

As you can see the client that drops the box has the values. but they arent being passed over to the other clients on the network. how can i fix this?

0 投票
1 回答
479 浏览

.net - Akka.NET + 光子服务器

是否可以将 Akka.NET 与 Photon Server 一起使用?

找不到任何有关此的信息。

这个解决方案的可扩展性如何?找到一些关于 Akka + Scala 游戏服务器的文章,但没有关于 Photon + Akka 兼容性的文章。

0 投票
2 回答
1094 浏览

unity3d - 如何让相机跟随一个带有光子的滚动球

我用统一的光子创建了一个多人游戏。球员是一个滚动的球,我想为每个球员设置一个相机,但它不能是球的孩子,否则它会旋转。在没有光子的情况下,它可以在相机上使用脚本,但现在在多人游戏中,相机不会跟随滚动的球。我该如何解决?

0 投票
0 回答
547 浏览

c# - photon rpc 调用不正确(带有字符生成的 Photon RPC)

我正在尝试用脚本生成字符。我在资源文件夹下有 ' playerObj' 和 ' model' pref。playerObj具有所有与脚本相关的控制,和photonView,,Camera等,模型有animation,,skin rendererphotonView

我想要做的是,playerObj一起实例化和实例化模型对象。对于模型 obj,我想添加一些皮肤网格,使其具有角色模型(我这样做是为了让玩家能够更改模型的装备),然后playerObj与模型一起育儿。

问题是它正确地实例化了自己的角色,但实例化的其他角色是错误的。它将同时实例化playerObjmodel Obj。但它不会渲染皮肤网格,也不会养育这两个……我不知道我做错了什么或遗漏了什么……

正如您在脚本中看到的那样,我正在使用三个不同的脚本来生成字符。

谢谢你。

播放器初始化.cs

字符生成器.cs

当前字符.cs

0 投票
0 回答
639 浏览

rpc - Photon RPC 或 OnPhotonSerializeView 没有调用

我正在制作多人游戏。我的游戏允许玩家进入同一个大厅和同一个房间。它也实例化了 playerObj。但问题是 RPC 或 OnPhotonSerializeView 没有调用

我放了“Debug.Log()”函数来检查它是否确实调用了这两个函数……结果证明它根本没有调用。我不知道我做错了什么,或者光子有什么问题。因为我的代码可以与其他更简单的项目一起正常工作。所以它不是拼写错误或其他东西。

任何帮助都会有帮助谢谢

0 投票
1 回答
1236 浏览

unity3d - Photon Unity Networking 不需要的跨场景实例化

我对 PUN 有一个大问题,那就是 PhotonNetwork.Instantiate 在每个房间的基础上实例化对象,而不是在每个场景的基础上。我现在的设置是一个“服务器”,主客户端,然后其他人加入同一个房间。这是因为我需要能够在游戏开始前向服务器发送 RPC 调用,以用于登录和角色创建目的。

这样做的问题是,已经在世界中的玩家会出现在任何新玩家客户端的登录和角色创建场景中,并且会在玩家改变场景时消失。理想情况下,我只想实例化与客户端在同一场景中的玩家,但我不知道该怎么做。

任何帮助将不胜感激。

0 投票
3 回答
2760 浏览

networking - Unity 和 Photon Networking - 等待其他玩家

我目前正在尝试通过光子网络将多人游戏选项集成到我的统一游戏中。但是,我确实有一些问题:我使用 Unity 的新 GUI 系统创建了 GUI。我根本没有使用 OnGui。我想做的是让用户创建一个房间。在他/她创建房间后,用户将被重定向到某种“等候室”,他在其中等待其他玩家加入。这样的事情是怎么做的?所有的教程基本上都涵盖了如何直接进入游戏。但我想做的是将他们聚集在这个“等候室”内,并在达到最大玩家数后开始游戏(通过切换场景)。

我可以在编辑器中创建一个房间。我还做了一个构建,所以我可以在我的笔记本电脑上测试它。我试图显示更新()内的所有房间。但它根本不会显示任何房间,尽管我已经创建了一个。

我想我错过了一些东西,有什么建议吗?

谢谢!

0 投票
1 回答
415 浏览

c# - 注册子服务器(登录)到主服务器 - Photon Server -CJR Gaming MMO Framework

我正在关注关于使用 Photon Server 进行 MMO 开发的 Christian Richards 教程。对于那些不知道那是什么的人,它基本上涵盖了使用 MMO 类型架构从头开始重写光子框架。我遇到了许多问题,我找到了解决方法或修复方法,但这个错误我很难过。服务器启动并加载我的代理服务器和登录服务器后,我遇到以下错误。服务器启动正常,查找它很好,但是一旦它尝试注册子服务器,它就会在我的代理日志中抛出这个错误。

代理服务器日志:

2015-07-22 14:56:10,892 [1] 信息 Photon.SocketServer.ApplicationBase [(null)] 应用程序停止:AppId=Proxy

2015-07-22 14:57:01,913 [1] INFO Photon.SocketServer.ApplicationBase [(null)] - 应用程序启动:AppId=Proxy;AppPath=C:\Photon\deploy\ComplexServer,类型=ComplexServer.ComplexProxyServer

2015-07-22 14:57:01,968 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 AverageCounter: Name=''

2015-07-22 14:57:01,977 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:01,986 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:01,993 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,001 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:02,008 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,017 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:02,026 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,035 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,043 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:02,051 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,058 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,066 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:02,084 [13] 调试 Photon.SocketServer.ApplicationBase [(null)] - OnInit - ConnID = 2,IP 127.0.0.1 在端口 4520,类型 = TCPListener

2015-07-22 14:57:02,108 [13] DEBUG Photon.SocketServer.Protocol [(null)] - 为应用程序 Master 解析的初始化消息,客户端版本 3.0.5,协议 GpBinaryV2 版本 1.6

2015-07-22 14:57:02,120 [11] 调试 MMO.Photon.Application.PhotonConnectionCollection [(null)] - 收到初始化请求 127.0.0.1:4520 - Photon.SocketServer.InitRequest

2015-07-22 14:57:02,127 [11] 调试 MMO.Photon.Application.PhotonApplication [(null)] - 收到来自子服务器的初始化请求

2015-07-22 14:57:02,154 [11] DEBUG Photon.SocketServer.ApplicationBase [(null)] - OnInit - 发送到 ConnId 2 的响应,SendResult Ok

2015-07-22 14:57:02,331 [7] 错误 Photon.SocketServer.ApplicationBase [(null)] - System.NotImplementedException:方法或操作未实现。在 C:\Programming\SoftwareDevelopment\C#\MMO\MMO.Photon\Application\PhotonRequest.cs 中的 MMO.Photon.Application.PhotonRequest.MMO.Framework.IMessage.get_Code():MMO.Photon.Server.PhotonServerHandlerList 的第 48 行.HandleMessage(IMessage message, PhotonServerPeer peer) in c:\Programming\SoftwareDevelopment\C#\MMO\MMO.Photon\Server\PhotonServerHandlerList.cs:MMO.Photon.Server.PhotonServerPeer.OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) 的第 140 行在 c:\Programming\SoftwareDevelopment\C#\MMO\MMO.Photon\Server\PhotonServerPeer.cs:Photon.SocketServer.ServerToServer.ServerPeerBase.OnReceiveInternal(Byte[] 数据的第 36 行,

*如您所见,它将初始化响应/请求正确地发送到主服务器并登录,直到它尝试注册子服务器。通过观察下面的 Login.log 以及比较“注册子服务器”上的时间戳可以看出,在登录服务器尝试注册子服务器后几乎一秒钟就抛出了上述异常。

2015-07-22 14:56:10,845 [1] INFO Photon.SocketServer.ApplicationBase [(null)] - 应用程序停止:AppId=Login 2015-07-22 14:57:01,541 [12] 调试 Photon.SocketServer.ServerToServer .TemporaryServerPeer [(null)] - OnOutboundConnectionEstablished: 发送初始化请求 2015-07-22 14:57:01,541 [1] DEBUG MMO.Photon.Application.PhotonApplication [(null)] - 在 127.0.0.1:4520 2015 连接到 master -07-22 14:57:01,584 [1] INFO Photon.SocketServer.ApplicationBase [(null)] - 应用程序启动:AppId=Login;AppPath=C:\Photon\deploy\ComplexServer,类型=LoginServer.LoginServer 2015-07-22 14:57:01,592 [12] 调试 Photon.SocketServer.ServerToServer.TemporaryServerPeer [(null)] - SentInitRequest: ConnID=2, ChannelId =0,结果=确定大小=41 字节 2015-07-22 14:57:02,157 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 AverageCounter:

以下代码来自我认为相关的类。

PhotonRequest 类:

PhotonServerHandlerList 类:

消息界面: