#archived-networking
1 messages · Page 120 of 1
ill just have to get used to the fact that server code is writen in the same scripts then
Without even thinking about it
You can also do that same thing with mirror, but commands are the simplified version
idk, server and client code in the same scripts is really throwing me off haha
Basically when you call CmdShootgun() it sends a ShootgunNetworkMessage{} and then that message gets handled by CmdShootGun
and do commands need to have the [command] attribute ?
YES
ok
but if i want my colleagues to understand whats happening it would be best practices to use commands?
alright, i thank you for pointing me in the right direction
@quaint moon sorry, last question. when calling a command, wouldnt every client in the game execute the command that was called since each player has the script with the command in it? like if player 1 calls the shoot command, wouldnt player 2,3,4 also execute the CmdShoot method? is that what hasAuthority is for?
sorry for that question being everywhere, im starting to finally understand how this all works, but need clarifying on that little bit
To all the PUN wizards out there I have a question. I am trying to instantiate a LoadBalancingClient to access lobbies while I am in a photon room. I am having trouble with getting the connection to work though, it keeps getting hung up in the ConnectingToNameServer State. Does anyone have any advice on that process?
Command only goes to server, targetrpc goes from server to client, clientrpc goes from server to all clients
Hi does anyone have some knowledge about communication/networks? I have an App I want to use in unity for my scientific paper, but I cannot seem to get a handshake going (pairing my phone app with unity). I got it to work with Unreal engine, but for my paper I prefer using Unity. So ports and ip adress should all be correct, maybe I am missing something. It's this here:
https://www.youtube.com/watch?v=SldHuy6OnIw
They provided a demo and all the scripts and a guide with step by step on their page, but once i just have to go on the app and press tap to pair the devices, it just fails and nothing happens. Would greatly appreciate some help. Thanks!
This video demonstrates our AI technology running on an iPhone X and paired with the Unreal Engine and Unity 3D to animate an avatar and provide motion controller input.
Our software is currently available for testing by developers in our free open beta, and for licensing from January 2022.
Learn more and contact us at www.poseai.co.uk.
0:0...
You can still put your server code in different components or partial classes on the same gameobject if you like
Hi! general question, how to get into the "scene view" while being on client side?
because if I click on build and run there is no way to get in scene view, and in editor if I click on play im playing as mater client
i'd just like to debug how to get navmesh working on client side, atm I dont even know if clients have one or no, because it seems their agents cant move, as if there was none
hi for mirror, is it normal for the NetworkManager.OnStopClient to NOT be fired when NetworkManager.StopClient is called? because mine isnt
it is only fired on StopHost
if anyone's interested the solution is to build and run and create a game from there
and then start the game in the editor and join, you will have access to the scene view of a client
(Photon PUN) can someone send me resources or tutorials on HOW to make lag compensators? I cannot find any worthwhile ones anywhere
hello, I am working on a basic multiplayer game, I wondered if player UI elements ( health bar, map, inventory etc... ) parts of my Player GameObject or in the scene ? thanks and sorry if this is a bad question
hi all, I have a question, I have a dictionary of <string, NetworkconnectionToClient> on my network manager, on the playerprefabs onStart(), I made the clients add themselves in the dictionary. So I tried making a command/RPC to find a specific NetworkConnectionToClient and activate its UI. I dont get any compiler errors but a ton of errors in my unity console. Could anyone help? thanks!
public void CmdSendNudge()
{
NetworkConnectionToClient conn;
networkManager.playersDictionary.TryGetValue(nameInputFieldForNudge.text,out conn);
//Debug.Log(conn);
RpcSendNudge(conn);
}
[TargetRpc]
void RpcSendNudge(NetworkConnectionToClient conn)
{
conn.identity.gameObject.GetComponent<PlayerPrefab>().friendRequestPanel.SetActive(true);
}```
Anyone want to make the argument as to why Mirror may be better than photon? Photon user here. Just curious.
And does anyone have any good courses for steam multiplayer?
I found DapperDino's videos on Steam and Mirror very helpful
As for why Mirror might be "better", it's all down to personal needs and preference
No, you need to actually ask a question to get help
Hello Folk!
Is it acceptable to use appsettings.json file in the Web API as a kind of database? I mean I have some variables (key values) and want to put them into a json file in the project.
Thanks
The other question is : which approach is more consistent?
1: Making a WEB API is getting triggered by Azure Watch (every 2 minutes)
2: Making Serverless Azure Function to execute the DB works. (every 2 minutes)
hi, i've a problem with photon pun. like in the video, when i input the player, other player animations, and positions are not synchronized. how can i fix this ?
you need 2 PUN components: photon animation view + photon transform view
On my side I have a problem for understand something:
my playerStatut UI is override each time a player enter the scene :/
don't understand why other UI are just ok
Your IDE seems like it isn't configured for Unity, which is a requirement.
Check the IDE setup guides in #854851968446365696 for instructions.
is anyone familiar with photon for vr?
specifically getting a network player (speaker and name tag) to follow my main XR Rig
We recommend looking into Fusion (by the Photon team) for new project and VR. There are recent demos for this (and those show how to make an XR Rig networked).
https://doc.photonengine.com/en-us/fusion/current/samples/fusion-dragonhunters-vr
Looking for a good tutuorial for setting up a multi player fall guys style game - X amount of rounds, random level selection for each round and upto 8 players for example
No lobbies, just throw each joining player into a new game if no capacity in any waiting rooms etc
Why don't you search for information on each of those things, and pull together your new knowledge to apply it to your game
This is where tutorials end
Now you do
@quaint moon 👍
Just really wanted a tutorial on setting up networking and player spawning using photon fusion to be fair and how to go about creating/joining rooms
Plenty of samples available detailing these things on the photon website
i wanna ask, why my photon always detect master room player ? for example in photon view only detected master room player.
what i mean is photonview is mine always return room master
help me :)
This looks as if you are using PUN Classic? It does not necessarily support the Unity Editor version you are using as it's outdated.
Use at least PUN 2 or better look into Fusion.
IsMine is true on the client that controls the object (and sends its updates). This may be the Master Client.
It seems you are not aware of some of the basics, so I would recommend reading and coding-along the PUN Basics Tutorial before experimenting a while on your own.
The Fusion doc pages should explain how to join/create sessions and there is a sample project that only shows the Fusion "Application Loop" (not gameplay):
https://doc.photonengine.com/en-us/fusion/current/samples/fusion-application-loop
Hey guys Im using Photon pun and I have a problem with syncing animator.SetIK I use OnAnimatorIK but it works only on start and then stop syncing how can I fix it??
private void OnAnimatorIK(int layerIndex)
{
var rightHand = _switching.CurrentThrdpWeapon.RightHand;
var leftHand = _switching.CurrentThrdpWeapon.LeftHand;
_thrdpAnimator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1);
_thrdpAnimator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1);
_thrdpAnimator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1);
_thrdpAnimator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1);
_thrdpAnimator.SetIKPosition(AvatarIKGoal.RightHand, rightHand.position);
_thrdpAnimator.SetIKPosition(AvatarIKGoal.LeftHand, leftHand.position);
_thrdpAnimator.SetIKRotation(AvatarIKGoal.RightHand, rightHand.rotation);
_thrdpAnimator.SetIKRotation(AvatarIKGoal.LeftHand, leftHand.rotation);
}```
hey unity fellas, i want to know if it's possible to add a networking solution (photon, .Net multiplayer, nakama and mirror) to a project that is already made? for example i have this board game project in hand it's player by two players, it's turn based can i add networking solution, creating sessions and synch data at this stage?? or the whole project has to be created from scratch for this porpuse?
yeah you can
dont have to create from scratch
Do we have no choice but to use Newtonsoft Json when Parsing JSON classes in C# and we encounter an unexpected JSON Property with an unclassified name as such cs [JsonProperty("sdk3-manda")] public string Sdk3Manda { get; set; }
?
It doesn't bother me as much, but if it can be done in anyway within Unity's built-in JSON parser, that'd be much more convenient!
Can anyone point me in the direction of the quickest way to networking? I want to put it in before anything else. I really only need to see where each-other is facing and sync animations/physics, no damage or anything.
Is fishnet a good solution for a simple first person project?
I use mirror, it’s free in asset store and has example games included
I had considered it before, but some people said its for mmos so I shouldnt
Guess I'll just go ahead with dapper dino's tutorials since no one else is responding
{
photonView.RPC("Launch",RpcTarget.All);//
}
[PunRPC]
void Launch()
{
if(photonView.IsMine)
{
Debug.Log("working");
Physics.gravity = Vector3.up * gravity;
ball.useGravity = true;
}
}```
launch function not working
"just sync animations/physics" is actually the hard part. Damage and health would be something you control anyways but it is harder to sync state (properly), when the physics- and animation-systems do the work and you have less control.
Depending on your genre and expectations, I would suggest to check out Fusion. It likely supports you most, to get good results.
Start() will call the RPC on any client that has this script running. So all clients call Launch() on all clients. Likely, none of them will do anything, as only the controlling player reacts (checking IsMine)...
I wanna ask, why this is not syncronize. I'm using photon pun for it and i already add photon view, photon transform view and photon animator view
Won't isMine make the controlling script execute and start() wil call the RPCs on all to update on everyone's machine what happened in the controlling script?
All clients, which have this script will call Start(). All of them will also call the RPC. This is networked, so everyone will Launch().
Only inside of Launch(), you check if "this" client controls the PhotonView (IsMine).
It looks as if input is applied to all characters. The Pun Basics Tutorial shows how to avoid that (I can't summarize that here)...
Checking IsMine is related, yes. Assuming every player uses PN.Instantiate() to get a character, that should be an easy fix.
so is this related to gameobject instantiation with PN or not ?
i read the tutorial but I still can't solve the problem
Networked objects (with a PhotonView) should be instantiated with PN.Instantiate. Else, they are just local objects...
i already do that, like this
public class PlayerSpawner : MonoBehaviour
{
public GameObject[] playerPrefabs;
public Transform[] spawnPoints;
private void Awake()
{
PhotonNetwork.CurrentRoom.IsOpen = false;
Transform spawnPoint = spawnPoints[PhotonNetwork.LocalPlayer.ActorNumber - 1];
GameObject playerToSpawn = playerPrefabs[PlayerPrefs.GetInt("playerAvatar")];
GameObject currentPlayer = PhotonNetwork.Instantiate(playerToSpawn.name, spawnPoint.position, Quaternion.identity);
}
}
or am i wrong ?
Looks fine. But (e.g.) I don't know who is running this script and when. So .. could still be an issue. Hard to say without knowing the hierarchy, etc.
In the end, I would recommend to just try from scratch in a simple experiment project.
The script ConnectAndJoinRandom gets you into a room really quick, so you can test instantiation and control scripts in no time, without a bigger project around it. Just bare bones. What you do there, applies to a bigger project, so you can re-check what you did there.
Has anyone setup Photon Fusion usng the new Unity Input System and managed to get movement data to OnInput without using Input.GetKey("w") as the documents are basically useless unless your game is using keys only and wasd by default
I'm not using a character controller ( another exectation of the documents )
Can't you pull the input from the input system with your preferred method, cache it and then provide it OnInput?
the fusion karts demo uses the new input system
Dont you have to pay for that
actaully going insane trying to find a way to make a net core standalone multiplayer server for unity with net core
been looking for days
and can support websocket connection
if anyone knows of a solution id be really happy
following this tutorial, currently stuck in this spot because only the client player can be seen, unlike in his video
https://youtu.be/oBRt9OifJvE?t=454
Join Our Community: https://student.dapperdino.co.uk/
https://assetstore.unity.com/packages/tools/network/mirror-129321
https://mirror-networking.com/docs/
-----------------------------------------------------------------------------------...
my player script has zero errors and Ive watched back the whole thing before that point 3 times now making sure I have all the same components and settings
of course when I type all this, I just click stop client and client again and it magically works fine somehow
thankyou discord I guess?
Hello everyone, I'm facing issue where I want to assign color for player pre-entering the room and apply it on the renderer. Currently, I'm using PUN2, with PunCallbacks I used OnJoinedRoom to call my function to assign color which basically set custom properties for player with a material name. Then, on the player prefab I have a component which is apply the player custom property material on the body. The thing is it is assign colors for players properly but each player see different colors from the other players. Like everyone has its own networking for coloring
Currently, I fixed the problem of randomness colors and everyone having their own colors. But I'm facing a problem that my player component doesn't recognize any of the Custom Properties I have assigned unless if the player rejoin the lobby
It is more like the local player can not read the other player custom properties to apply it on their materials. Unless if they leave/rejoins
Got it fixed by using "OnPlayerPropertiesUpdate"
does Photon RPC support Structs
i don't think so, I think I have to manually serialize it, but I have no clue how to
if I had to make a struct the definition would be: cs struct Collectable { int ID; Vector2 position; int TypeIndex; }
looks like you need to register your own structs with Photon
https://doc.photonengine.com/en-us/pun/current/reference/serialization-in-photon#:~:text=Back To Top-,Custom Types In C%23,-All of our
Photon Unity Networking framework for realtime multiplayer games and applications with no punchthrough issues. Export to all Unity supported platforms, no matter what Unity license you have!
Thanks @mortal horizon - I'll take another look
yes if you register them
malzbier linked it
Hello all, looking for some advise for multiplayer. Do people here generally prefer PUN or Mirror when building a client server model multiplayer game?
How do I do that, from the docs(which I don't understand) looks hard
Now Fusion is what you want to look into when it comes to Photon products. What kind of game are you making?
5player horror game. The server builds a randomly generated map and sends to clients. Clients have to escape before monster kills them. 2D
I’ve been working with mirror a lot having hell of a time with server generated maps
GameObject bulletHole = PhotonNetwork.Instantiate(AssetDatabase.GetAssetPath(gunStat.bullet).Replace("Assets/Resources/", "").Replace(".prefab", ""), hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal)) as GameObject; this doesnt work in a build because UnityEditor doesnt exist in builds, is there a wya to fix this without having to manually type out the path to increase workflow?
Are there any comparison articles/videos on Netcode for Gameobjects vs Photon Fusion? We made a pun2 prototype which we now want to take into full production but we are not sure the best way to go... The main requirement will be voice chat and many players. No competitive, 'twitch' gameplay so high levels of lag are ok to an extent
anyone?
anyone?
So this is for later reference, making a battle royale and I have 2 questions.
1: I am going to use steam servers but how can I make auto matchmaking and the match to end like a normal br(last man standing)
- How can I make character selection, so you get to pick your character every match start?
im using mirror
hey! How can I send a RPC to a specific player if I have their Photon View?
or ID
What is the best option for multiplayer in unity without a framework
for a 2d game with playermovement
with 15 clients max on each server
I was thinking about WebSockets but recently I read about Hazel and it seems better as it uses UDP
@steel gyro Could use enet maybe?
@steel gyro https://github.com/nxrighthere/ENet-CSharp
It's a low level networking library
I think it's what photon products are built with
yo, i need help with fixing multiplayer
if there's 2 players, they do controll their own camera but controll the movement of the other
making an fps game, i do have the (Photonview.IsMine) on the character movement script, and the photon transform View Classic and synchronized the positions
AFAIK only their legacy product (pun2) uses enet, newer solutions like fusion and quantum have their own custom libraries
I'll check it out thans
im having issues with my script with a warning about it needing to be auth ```cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mirror;
public class Gun : NetworkBehaviour
{
public GameObject bulletPrefab;
public GameObject BulletSpawnPoint;
// Start is called before the first frame update
void Start()
{
}
[Command]
void CmdFire()
{
// This [Command] code is run on the server!
// create the bullet object locally
var bullet = (GameObject)Instantiate(
bulletPrefab, transform.forward,Quaternion.identity);
bullet.GetComponent<Rigidbody>().velocity = transform.position * 4;
// spawn the bullet on the clients
NetworkServer.Spawn(bullet);
// when the bullet is destroyed on the server it will automaticaly be destroyed on clients
Destroy(bullet, 2.0f);
}
// Update is called once per frame
void Update()
{
Debug.Log(isLocalPlayer);
if (isLocalPlayer == true) { return; }
if (Input.GetMouseButtonDown(0))
{
CmdFire();
Debug.Log("Shooting");
}
}
}
im using mirror
Again, why are we returning when we are the local player?
It should return when we're not the local player
Hello, i can't understand it from the documentation, Does anyone now how to push this from Photon working?
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)```
I thought all of them used the same transport provided by Realtime. @high night
Wow. Photon just really dropped down in my eyes.
Why would you not let me get a list of all the rooms(including full rooms)?🤦♂️
Is OnRoomListUpdate incomplete?
Yep. It only lists rooms that are joinable, i.e. not full.
And according to their support it's "by design", but i feel like it's a bad design.😅
Simple: You create a game that's successful and end up with 10k+ rooms. Clients try to get the list, download forever, get updates and feel really sluggish, eating someone's mobile data.
Most players enjoy the game itself, not the room listing.
Of course, we are aware that there is something missing, if you look closely. I know what you mean. If it's really important, you can do your own matchmaking and combine that with Photon (the clients would join/create games depending on your own rules)...
Sure. You don't need to make it list all the rooms by default, but you could still leave it as an option. There are games with lower room count or those that are fine with waiting for a list of rooms. I've yet to see a game that has 10k rooms let alone one that uses photon.
And sure, I can use my own matchmaking, but then what's the point in using photon at all?
Or is there a way to connect clients bypassing the lobby/room system of photon?
I've yet to see a game that has 10k rooms let alone one that uses photon.
Then you're not looking close enough 😉
Hint: Not all games announce they are using Photon..
Or is there a way to connect clients bypassing the lobby/room system of photon?
Yes. That's what I meant. Your matchmaking just has to assign a room name (region, etc) and the clients can use that to meet in-Photon, which does the synchronization.
How would I implement something like that? Can I get other players info without them joining a room?
The clients would contact your service to do the matchmaking. Whatever is needed to implement it, needs to be sent by the clients or (better) you have a backend which provides such data (e.g. skill, etc).
There are the WebHooks in Photon, which can call your service when rooms get created, fill, empty and get removed, so your backend / matchmaking service can get updates from Photon about existing rooms.
Cache as much as needed and provide a list of rooms to clients on demand or any way you like.
To be fair, that's quite some effort. But if matchmaking is essential .. anything is possible.
We've got a tournament system, which does this for Photon games.
We've done tournaments with several thousand players.
Well, for now we're just going to hack our way through with adding 1 additional player slot and treat it as a full room when it's the only one left. Doesn't feel right though. I feel like an API shouldn't limit the user just because of assumptions like "that's for users sake". I can see more reason to list full rooms than not to. Anyways. That was just a small runt, so let's not take it too far.
I agree: More flexibility would be nice for sure.
I think there is a solution to your case. DM me (I can't reach out to you), if you like.
Is anyone here familiar with photon engine and would know why I can connect locally, but my friend isn’t able to connect to my game/room?
I was reminded that lobbies actually list full and closed games too, unless there are more than 500 entries to send to clients. The update-list will first list joinable games (not closed nor full), then full, then closed games for up to 500 entries initially and in updates.
You can also hide rooms deliberately.
First question would be if your friend has a connection issue (and won't connect) or if the other client just doesn't find your game.
The latter can be fixed via the Matchmaking Checklist: https://doc.photonengine.com/en-us/pun/current/lobby-and-matchmaking/matchmaking-and-lobby#matchmaking_checklist
I'll check again, but I've run the game with some breakpoints in the IsVisible and IsOpened setters of the Room class and they didn't get triggered. Unless it could be set in a different way, I think they're not checked.
I did try to set the region in server settings, do I need to also set the app id and app version? Think I left those blank, and where would I make sure UserID isn’t the same?
You need an AppId, yes. The version can be blank but it would be better if you just use some version.
Unless your clients make up a UserID and send it as auth values, the UserID will be unique (a guid assigned by the server).
i was told to get here
Are there any comparison articles/videos on Netcode for Gameobjects vs Photon Fusion? We made a pun2 prototype which we now want to take into full production but we are not sure the best way to go... The main requirement will be voice chat and many players. No competitive, 'twitch' gameplay so high levels of lag are ok to an extent
PUN2 Dev. here. I've been switching over from PUN2 to fusion. I'm attempting to have a user create a server that switches scene to the proper sandbox environment. How do I make Fusion switch to the Sandbox scene when creating the game? In addition, OnPlayerJoined never gets called- but the "Started a server!" log gets called. Maybe I'm approaching creating the server wrong. Is their only supposed to be one network runner per session? Thanks.
NetworkRunner nR = gameObject.AddComponent<NetworkRunner>(); //Add network runner.
nR.ProvideInput = false; //Allow user input.
StartGameArgs sGA = new StartGameArgs() {
GameMode = gM, //Gamemode?
SessionName = serverName, //Server name.
Scene = SceneManager.GetSceneByName("Sandbox").buildIndex, //Sandbox scene.
SceneManager = gameObject.AddComponent<NetworkSceneManagerDefault>(), //Scene manager?
PlayerCount = maxPlayers //Max players.
};
await nR.StartGame(sGA);
print("Started a server!");
}```
It's probably best to ask this in the #fusion channel of the Photon Engine Discord. The developers of Fusion are more often online there.
link please, couldnt find it
You can join that Discord server via the Photon Account page:
https://dashboard.photonengine.com/en-US/Account/Profile
From there it should be self explaining...
(ping me if it isn't)
thanks
im using photon for a flight sim microgame
and the camera is included in the player prefab , stuff works great
but when player 2 join the lobby , player 1 camera become the same as player 2
Did you follow the tutorial from the Photon website?
https://doc.photonengine.com/en-us/pun/current/demos-and-tutorials/pun-basics-tutorial/intro
It has a specific page for what you ask for
no , but from a video that was using a fixed camera
It will still explain why the ownership of your camera is wrong.
yes , i included the camera into the player prefab while iwas coding yesterday just so ican check other stuff , seems it wasnt a good idea
ididnt get it well...
so i need to have a camera in scene ? idk how to setup it
I'm sorry I have no idea how photon works, I only know how DOTSNET works. I can only read the tutorial for you but you can do that yourself.
ididnt see that last line
i think ineed to see a video that have stuff showen up in unity not just texts
Well good luck with that 👍
as far as i understood , have a main camera and player prefab
attach cameraworks script to both of them
error
so using Photon, does any object I create in the game need to be spawned in via code with PhotonNetwork.Instantiate or is there a way to get objects that you just place in your scene normally to also move around for all players? Just giving objects in your scene the photon transform view classic / photon view components isn't enough right? It needs to be first Instantiated?
also this still isn't working for me, I tried with another friend and they can't connect either - I have the App ID set in the photon server settings but still can only connect locally might have figured this one out
Hello everyone
I'm using UnityWebRequest to send data to the server, data here includes strings and Images, it works well on some images while for some reason it returns
<html>
<head><title>413 Request Entity Too Large</title></head>
<body>
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>(Ubuntu)</center>
</body>
</html>
I've also tried post man and it worked fine there without any issue but gives me errors in unity, please what do I need to do, this is my code
public IEnumerator DetailsUpdate(string url, Texture2D display_pic, DetailUpdate detailUpdate)
{
var form = new WWWForm();
if (detailUpdate.email != null)
{
form.AddField("email", detailUpdate.email);
}
if (detailUpdate.address != null)
{
form.AddField("address", detailUpdate.address);
}
if (detailUpdate.phone != null)
{
form.AddField("phone", detailUpdate.phone);
}
if (detailUpdate.fullname != null)
{
form.AddField("fullname", detailUpdate.fullname);
}
if (detailUpdate.dob != null)
{
form.AddField("dob", detailUpdate.dob);
}
if (display_pic != null)
{
var bytes = display_pic.EncodeToPNG();
form.AddBinaryData("display_picture", bytes);
}
using (UnityWebRequest www = UnityWebRequest.Post(url,form))
{
www.method = "PUT";
UImanager.Instance.Loading.InstantShow();
yield return www.SendWebRequest();
if (www.isNetworkError)
{
UImanager.Instance.Loading.InstantHide();
}
else
{
if (www.isDone)
{
UImanager.Instance.Loading.InstantHide();
}
}
}
}
you need to share more details, for example, what errors you get
<html>
<head><title>413 Request Entity Too Large</title></head>
<body>
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>(Ubuntu)</center>
</body>
</html>
this is the error
@austere yacht
A 413 HTTP error code occurs when the size of a client's request exceeds the server's file size limit. This typically happens when a client attempts to upload a large file to a web server
--> make your files smaller
--> increase the upload limit on the server
okay thanks alot
hi everyone,
im having an issue using photon where everything works fine when only one player in the scene, but players stop moving once the second player connected to the same scene (could see each other but cant do anything else), im nt sure what is the problem
what would be the best way to send a request to everyone expecting a reply of type Vector2? 2 RPCs?
can you do PhotonNetwork.transform.position?
Hello i use Steam Networking to show the username and pfp in the canvas
The name works but the pfp dont
Any ideas?
You're gonna need to show the code you use to get the image
Likely an issue with handling input for the character/unit each player controls. Network instantiated characters exist in each client (you can see the other player's character), so you have to make sure your input is only used by the character you control.
The PUN Basics Tutorial in our docs explains and solves this issue.
Yes, likely 2 RPCs. It depends a bit on why you trigger everyone to send the Vector2. Might be it's part of the synchronized state anyways.
PhotonNetwork.transform does not exist, no.
not PhotonNetwork.transform sorry, PhotonView.transform
Hi all
If i still wanna make use of gpu for compute shaders in server build, is it possible?
Or gotta NOT have -nographics but turn off every graphics related manually?
Any idea why photon doesn't have reference to pun?
because its ancient technology they do not want to support any longer, they've been VERY explicit in advising against use of PUN for a long time
Any idea why photon doesn't have reference to pun?
It's still easy to find, as far as I know. Where did you look?
But yes, we would suggest to have a look at Fusion if you start a new project now.
Do we pay for networking services? If yes, how much (cheapest)
Depends on the service, and what you want
I'm getting unity error CS0501 when I try use ConnevtUsingSettings
Using photon pun 2
`using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
public class ConnectToServer : MonoBehaviour
{
static bool ConnectUsingSettings();
}`
Error CS0501 'ConnectToServer.ConnectUsingSettings()' must declare a body because it is not marked abstract, extern, or partial Assembly-CSharp
Give it a body and directions
That's all the tutorial I followed said to do
Hi all, this is kinda borderline to a game design question:
Is it possible to blur the line between instance room based Mp and central server persistence?
Yes, certainly possible. It’s how all MMOs worked before open world WoW-style became the norm.
My question's actually a bit more specific but i'll get to that next time
Another question, i happen to need GPU on server side
The cheapest GPU server i can find on Vultr is $90
Is there like a... cheaper alternative?
It's not like i'm using it for mining or super rendering or ML, i'm using Crest and the collision testing uses compute shaders
I think the solution for that would include players connecting to multiple servers simultaneously
When nearing the chunk borders
Oh no sry, not trying to do sophisticated runtime loading in between game servers like that
I'm just using fusion, which has shared mode which is not server auth
Originally i'm only doing server auth, but maybe can have a "less serious" client auth type of game too
But i want these room based client auth games to still be "connected" to the server auth server somehow
WoW with instanced dungeon is like this, except that dungeon session is also server auth bcoz, well, they can't be cheating in the dungeon
So i guess something 1 directional: what happens in the server auth "main server" still replicates in the casual client auth room sessions, somehow..
Just wondering if anyone got ideas in what ways this can be interesting
The server could maybe do a validation after a player hosted session ends?
Some simple checks maybe
Looking at the game state and inputs over time
But I'm not talking about re-simulating the session entirely
If the game was deterministic, random players could validate eachother via resimulating the whole session perhaps
like in the background
your game's persistence, chat and shops should be handled by servers completely independent from the actual game servers. in a way the game client is just a fancy ui for say 5 different servers, one of them being the gameplay server, the others being just web APIs to buy things and chat
`using System Collections
Which networking solution to you recommend if the goal is to make a game like Valheim/Rust/Minecraft/V Rising?
Were people can host their own servers on their PC or rent a server from one of those server hosting websites.
I am looking for a networking solution that allows me to run a decentralised game that I can share the client but allow users as much freedom to run their own servers as possible.
It depends, is it a pc, console, mobile game?
Steam Network: is good if you want to release it on Steam 🙂
Crossplatform with PC and Mobile would be the ideal
public void LeaveLobby()
{
PhotonNetwork.LeaveRoom();
}
// public override void OnLeftRoom()
// {
// Debug.Log("Player left the room!");
// roomMenu.SetActive(true);
// gameObject.SetActive(false);
// }
Even though the code below is commented out, a part of it is run, specifically "roomMenu.SetActive(true);"
If i uncomment it, the function never ever gets called. I'm in total confusion. All other overrides worked fine till now until this one. I searched through my entire code for possible sources of the bug but there is no trace
And the "roomMenu.SetActive(true);" is the only thing that happens everytime, and there are only 2 places with this line of code.
nvm i figured the bug
Can I disable the infinite drag when adjusting the value on Unity inspector and viewport control? I often connect to my desktop remotely but when using Unity with it and when my cursor reach the border of the screen, it gets crazy increasing the value like more than 3000.
I’ve been looking for the option for more than an hour. Ngl It’s making me crazy.
I said actually ask a question
Nobody wants to have to ask you what you need, you're best off being straight up about the problem
but im using normcore multiplayer and theres a problem in realtime + vr player that says Prefab has missing scripts. Open Prefab to fix the issue. how do i fix???
Open the prefab by double clicking it and remove or replace any missing scripts
hi there, i am trying to find a tuturial on how to manage players. as in how to whrite code to work in multiplayer (i already know how to setup server linking ect)
anyone have a suggestion?
photon)
nevermind, found somthing
Are photon voice and PUN2 (or Photon Fusion) charged separately? Do you pay per service? Or do you just pay per app for Photon cloud?
If I did the $95 one time charge for 12 months for example, would that get me photon voice and also networking through either PUN2 or Fusion? Or would I have to pay $190?
Their server is pinned in this channel you could ask directly.
for a moba game what should i use?
guys, i've a problem when i used PhotonView.RPC. I want to sync data player each other but it didn't work at all. i attached this code on each player.
OK I NEED HELP! i have it set up so i have 2 players.. it works.. both can move arround. but it doent look in the right direction when i look arround.. like the other player caracter follows the rotation of you... but that is not visable from the other perspective. how can i fix this?
is better photon or mirror
most of the ppl use photon
i had a problem like this sometime ago. i fix it with adding PhotonView.IsMine in player controller, cause player didn't know where the exact player to control character. but why it's only show in own client, it cause PhotonNetwork.Instantiate, it will sync object in different client.
idk, maybe it doesn't work with you, but just try it.
you need to ask specific questions to get help here
Or you can just ask a question properly, or you can go to Photon's Discord
Both of those methods would likely garner faster answers
can you give me invite url, please.
You can join the public Photon Discord server via the Photon account page:
https://dashboard.photonengine.com/en-US/Account/Profile
Hi guys i dont really understand how to restart game with all clients do you guys know ??
if(PhotonNetwork.IsMasterClient)
{
PhotonNetwork.AutomaticallySyncScene = true;
PhotonNetwork.LoadLevel("Game");
}
but it dont work idk
Use a code bin site. The bot has become upset with code.
#854851968446365696 at the bottom has links
sorry
i dont see link where wait i am going to press all
wait
its not working ;D
bruh
You copy the link to chat.
Hi guys i dont really understand how to restart game with all clients do you guys know ??
Hello ! i'm trying to connect my game to my dedicated server running on my computer in local via UnityEngine.networking but i can't find how to get it any ideas why ?
Stop using UNet
what should i use then ?
i've been searching for solutions but it's the only one i found
Well UNet is deprecated, the new Unity solution is Netcode for GameObjects, but there's Mirror and various Photon products too
I quite like Mirror atm
is netcode only for 3d ? sounds dumb but every tutorials says to start a 3d project
@hollow adder For networking it makes very little difference.
once i've cloned the Netcode repo what should i do ?
because i've tried adding it to unity packages
but it doesn't find it
Are you on a supported editor version?
good question i'm on Unity 2021.3.4f1
i'm on ubuntu
i've tried it but nothing happens
No Console messages?
Apparently 2021.3 isn't supported but .2 is, I imagine this is irrelevant in reality
i got error searching for packages
What does it say?
Oh look, their GitHub says different to their docs site, so 2021.3 is supported
Is that it?
Are you signed into Hub?
i am stuck with this like 2 days when we start game yes and we die that master client press restart and PhotonNetwork.LoadLevel(2); but other client dont load idk why ?
can anyone help me pls
automaticSyncScene is set to true on the other clients?
Best networking soulution for an fps GO
Why don't you search them up, and find one you like
"Best" is relative
i followed a tutorial to install mirror and everything works fine except for one thing. whenever i join as a client on my cloned window, it auto moves my character on my original window as well. but for me to fix it, i have to manually go into the hierarchy, select my main cam attached to my player, and switch the display port from 1 to 2
anyone know how to fix this issue and make the display auto update after another player joins?
Generally, the local player should have their camera and movement scripts etc enabled, and then the other player's objects on their client should have those things disabled
how so i check if thats alr set to true?
So on player 1's computer, player 1's camera and movement is on, but player 2's are both off
NetworkBehaviour has a IsLocalPlayer property
wait but wont that make it so that player 2 cant move or see tho?
On player 1's computer, yes we want those things disabled
just asking fo peoples prefrence\
Player 1 shouldn't be able to control player 2
Mirror
k
Player 2's movement on player 1's computer would be done through their NetworkTransform
so do i have to add this to my alr existing player movement script?
You should check if this is the local player before allowing them to change the position, yes
You could just put a guard clause at the start of your Update method
ok thx ill try and look for a tutorial on how to do that!
Mirror documentation page has a lot of tutorials. This one is a good introductory one to core concepts. https://youtu.be/8tKFF0RP9Jw?list=PLXEG2omgKgCapAmGe20XBgd87rmxFdKhK
do yall think photon is good for fps games
Photon Fusion probably
On all clients? not only on the master
Yes when master press
why only fusion
ok here thanks
DefaultPool failed to load "Enemy". Make sure it's in a "Resources" folder. Or use a custom IPunPrefabPool.
help please
Well tbh, PUN is now sort of their legacy system isn't it
They do say new projects should be using Fusion
ok
can you help with few issue i have ??
please
DefaultPool failed to load "Enemy". Make sure it's in a "Resources" folder. Or use a custom IPunPrefabPool.
can you send code here i want to see
how it works
k
Yoo! I trying to follow the hello world tutorial on the netcode page on unity´s website and the part when you need to assign your your prefab to default player prefab doesn´t work because the checkbox doesn´t exist on the component
hello anyone is there
i am making archer multiplayer game
and i don't know how to syncronise arrow on both player side
if you can help me then please help
i can share code
Just track the transform properties on both sides.
hi there, i am learning networking in unity.. but i cant seem to find a lot about Photon Pun.. is there a different networking option that is easyer to learn? and is someone willing to help me for a bit?
All the main 3 systems for multiplayer are very very similar, Unet vs Pun vs Mirror, they all use the same kind of logic, I don't think there is an easier version of that
Mirror is maybe the most accessible, kindof
mmmh okay, yeah its just really hard to learn i guess... its a shame, and ppl talk bad about PUN, is it true? is it bad?
i don't really know why ppl say its bad, i find it quite good actually, but thats just my opinion
ok ok
also i don't know your level on unity or c#, but if you're a beginner, i would recommend not making game with multiplayer yet
i mean, i know a bit. still learning.
but you might be right...... i am just sad, i had such a nice idea
once you'll get more experienced you'll be able to it, don't worry
I think it important to note, that the new Unity official solution is Netcode for GameObjects. UNet has been deprecated for years
but unet is hard to learn right?
UNet should not be used, it is deprecated
The new solution is Netcode for GameObjects
huh? xD
is it easier than Photon PUN?
That's a matter of perspective, I find Mirror easier out of all the solutions
But it totally depends on you, and what you need from it
ok
but i cant find a video on like what the difference is between all of them, so i dont know wich one to choose
You can look at them all individually and compare them yourself
yeah but even if i searched what is photon used for, or like info photon pun, and all the others, cant find much on it
And to be honest, Photon PUN shouldn't be used for new projects, they are replacing it with Photon Fusion
or i am jsut searching wrong
PUN is now described as legacy
That is on the Photon site
I need help with photon voice . I can’t hear everyone only one person
Hello. So I'm currently trying to get Plastic SCM working with Unity but any time I try to create a cloud repository I get this error:
Does anyone have any advice on how I might fix this?
if anyones know fish networking i would apericeat if u coudl help me out with smth
do you guys recommend fusion or mirror for a team deathmatch-styled fps game?
https://github.com/Bugslogger/unityphotonarchergame.git
this is my game code
and my problem is i want to connect photon to my game to make it online multiplayer game.
right now it is single player offline game.
this all code does not belongs to me except photon codes
i have connected photon to the game and can bale to show players in scene with photonNetwork
now the problem is how should i sync the attack of player
means
when 1st player attacks to another then weapon should show same in both player scene. and also to move camera with that
if anyone knows please help me
😢
Fusion or mirror?
hey, im just wondering how to install the new unity netcode for gameobjects package. When i follow the install instructions, it provides me with a test project which does not wish to load. I am wondering if there is a direct way to download just the netcode for gameobjects package. thanks
Fusion is replacing pun, you should not start a new project with pun
@pliant sundial
Its not the same, fusion is a newer product from the same company that made pun. Its better and makes pun obsolete
ok but for now can you help me with problem i have
i fixed it so i get no errors but nothing spawns
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
is there a way to make people host by themselves on PUN 2 or do you just have to keep adding CCU?
How does that new fusion compare to mirror?
Fusion has more features and is more advanced, you can achieve the same with mirror but you have to code it yourself. But to have those features in fusion you also pay for it, while mirror is free.
what types of features?
Afaik you are paying licensing fees one way or another, since Photon server has a separate pricing. You also need servers to completely avoid users having to manually open their ports.
Hi Guys,
I stumbled across a problem with Unitys Lobby and Relay system.
I managed to implement creating and joining a lobby but when I try to get the allocation data I get a bad request "invalid schema or decoding failure".
Does someone have a clue where I can do some further investigation to fix it?
Code:
allocation = await Relay.Instance.JoinAllocationAsync(_lobbyCode);
The lobbyCode is the same I use to join the lobby.
Does it really matter which networking I use? I'm choosing between Fusion, Mirror and Fishnet
Hi guys, i am new with game dev, and i am beginner with programming too. I have a 2d game with Photon Networking. I have rooms, which spawn enemies and close doors after entering. The enemies target a random player. In multiplayer they attack sometimes different player. How can i deal with aggro in multiplayer?
oke guys im trying to do onclick function
if photon is connected to master and joined lobby it just activates and disactivates gameobjects
if not it connects and do somethings
here is the script to better undestand
but it just says like this in the console log
hello, so i am trying desperately to make unity netcode work with my movement controller. right now i have an issue where the client will not identify as a local player when i am using it. does anyone know how to fix this issue? i am running both instances on one pc. heres some screenshots. thanks in advance
the editor is running as a client at the moment
do you want to connect to photon on click ??
what tf i just wrote a code here and it just got disappeared
seriously
??
its a bug, use pastebin
ok
how do i properly instantiate the bullet on all clients and server, and than delete when it hits something?
(PUN 2)
i also have the same problem but i want to instantiate Arrow
Hey everyone, I got an issue that I need some help with, I'm using Photon PUN 2 for my PONG ripoff game
I wanna get the first player to create the match to load into the game, then the second player who joins gets instantiated, I'm at a loss on how I would do this in code
Did you have a look at photon docs?
Yeah I did, I figured I'd use something with TransferOwnership?
I'm really new to networking and gamedev in general
Hi there, i didn't do any networking a since 2 years, which solution is the best at the moment, or which should take a look at?
Just like 2 years ago, depends on the project 😛
very physics driven gameplay with 8-12 players per room
Photon Fusion and Quantum are probably what you want to look into.
oh i forgot to say i would like to have everything server auth, does the new photon solution support this? With normal PUN it wasnt really possible to host a auth server, thank you for your help
Yea you can have dedicated servers with Photon Fusion (among several other topologies).
great thank you!
need help with deleting a bullet with RPC
no matter how hard i try, it keeps not deleting
Hi guys! im working on a multiplayer top down 2d shooter game. I have a line (see below) is there any way to skip the firePointPos.right? Cause i use RPC to pass things to the host, but i can't send a whole object and i am new and i don't know how can i handle this.
rb.AddForce(firePointPos.right * bulletForce, ForceMode2D.Impulse);
Well you can probably send the Vector3. You also could give them IDs of some sort and just agree on all clients which ID maps to that reference, if it's trivial in the context.
@cedar epoch would need more communication for game servers to validate stuff
How do you manage the server connections? through a database?
my game servers talk to the matchmaking server too
I'll likely use something like LiteNetLib for the matchmaking server
do you use a static IP address for the matchmaking server? That's the one thing I haven't really looked into yet is how to find the matchmaking server
game server starts up, connects to the matchmaking server, and then sends a GameInfo packet ever 15 seconds with some info like player count, fully qualified DNS name, and IP
I use Azure's FQDN
<container instance name>.mycustomdns.azure.io
i can rely on that by only knowing the name of the server
But the server's also report their current IP address
from Azure
ah ok I see
i basically get the server name from the game server (which Azure supplies to the server using the container command line)
then i use that server name to cross reference Azure's Data
kind of confusing tbh
but Azure starts the server with -servername "name"
Im sure it will make sense once I get to that point
and then the server grabs that argument and sends it to matchmaking
then matchmaking takes that name and finds the Container with that name in the list
and grabs more metadata
what kind of authentication do you use to verify that you're a valid client?
I suppose so, yeah
i don't yet
but Steam would be taking care of that with AuthTickets
it's not really a problem anyways
ah ok you're going through steam
clients only send input
so they can't really cheat or cause problems
someone would need to write something super sophisticated to read the game server info and reply with the right packets
yeah, server-authoritive models are imo much better
In the end, it's just a fake client that can't really do anything but read/send inputs
exactly!
pretty much how you make bots/AI
I think RL does something similar when you play with/against bots
Thanks for your input @glacial totem it makes things a bit easier once I get to that point 👍
@cedar epoch i've spent a good amount of the last 3 years teach myself game networking from the RL GDC talks
so reach out about shit if you got questions
i love talking about what I've learned
This was the last little game jam i was working on
basically all my game jams are physics sports games on top of this networking "engine" I've developed over the 3 years
very nice. What is the current project you're currently working on that involves the replay system?
dang haha. It almost looks like it's VR
yeah i got that a lot from people thinking it was VR
I bet. I could tell it wasnt, but I think that would be one awesome feature if it was an option.
VR would never work with client side prediction physics imo
the movements are too fast to reliably predict
you need a game like RL where the game feels fast but all the movements are a small distance over time
that's the challenge with physics predictions
maybe what you could do is make it partial VR, like the inputs are keyboard/controller, but head movement is tracked by the headset
ever play Boneworks?
Yeah a little when a friend of mine had his VR headset over
idk what has changed since then, as that was like 3 years ago
it would need to be like that but slowed down even more
where it punishes you for moving too quick
in Boneworks if you lift something heavy you need to act it out and act like it's heavy haha
so this game you would need to act like slow motion?
idk
haha
yeah boneworks is probably a good base for future realism of VR imo
given how everything is free-range with no constraints like, weight
you could be hulk but the game doesnt know that xD
Hey guys, I have a small 2 player multiplayer game set up that sends both players into a room once two people are finding a match, was wondering if anyone could tell me how from there I could have the server randomly select one of them to be the starting player
(or do anything that requires the server to do something and send it to all players, really, but specifically that)
does anyone know if Netcode's NetworkManager.Singleton.ConnectedClients automatically purges Client ID keys that are disconnected? Or does it need to be done manually?
Im trying to sync a transform, I cant get it to work,
It's not possible to use the ClientNetworkTransform on spawned gameobjects? I cant manage to get them work,
What is the easiest way to sync a player picking up a object without change the parent,
I want each player to pick up a cube and all other players can see the movement, NetworkTransform with continous position update is the only solution?
hey I'm building multiplayer chess game and I want to select random players with each other at the start of the game. how can I do it
like one player is me and other player will be randomly online selected player
You could do random matchmaking, before the players get into a session/room ...
Which networking solution do you use?
I don't know much about multiplayer as it will be my first multiplayer game
so which networking is good and how I will do random matchmaking
Like I have 0 knowledge of multiplayer
How do you use the networkobject change owner, and also can i use the localclientid for this? Clientid did not work
Or is it wrong to use clientnetworktransform on a block that can be moved by everyone?
I've got an issue with my multiplayer game i'm working on. My cinemachine camera seems to follow the wrong character and I would need to do an: if (view.IsMine) but there is nowhere to put that code for it so I need help.
@bold stag Cleanup your extra cross-posts.
hello, I have been having some trouble installing MLAPI. When I follow the unity guide (https://docs-multiplayer.unity3d.com/netcode/current/migration/install) it installs a test project, but i wish to be able to create my own projects, and I don't know how to add the necessary packages to the new project. Could i get some help with this issue?
Install the on-going development version of Unity Netcode for GameObjects from a cloned respository.
I am creating multiplayer 2D game and I have camera that follows player.How can I make it so when two players are in scene that camera follows each player.
figure out which one is the local player and run the code only on that one
Doesnt it has to do something with PhotonPun??
photon should help you figure out which one it is
idk how photon PUN works in detail but as a matter of principle it is what you have to do
I dont know how to do it
Probably want to use PhotonView.IsMine https://doc-api.photonengine.com/en/pun/v2/class_photon_1_1_pun_1_1_photon_view.html#a67184424cffe2daae9001e06a6192d21
Example usage in the official documentation here https://doc.photonengine.com/en-us/pun/current/demos-and-tutorials/pun-basics-tutorial/player-networking#camera_control,
WHICH YOU SHOULD FOLLOW FROM START TO END AT LEAST ONCE
I don't use Photon products and I found it in a dozen of seconds
I will try it tomorrow
good luck, have fun
can someone tell me what i'm missing, i checked out Unity Relay services and its says it would need the UTP (Unity Transport) to work, but relay is engine agnostic, but seems that UTP is private at git and docs are not very full of infos, how could i implement the UTP in my acual networking Solution? Docs are confusing in this point.
I'm assuming this is the right chat to ask, but could you use unity web request to download mp3 files or get a url to play music?
Unity Transport is probably not required, though I don't know if alternative transports are available.
Unity Transport itself should be available on the package manager: https://docs.unity3d.com/Packages/com.unity.transport@1.1/manual/index.html
Documentation: https://docs-multiplayer.unity3d.com/transport/current/about
Can you maybe elaborate in more detail what you are missing?
I imagine Netcode for GameObjects would be an example implementation of Unity Transport, if nothing else.
could also try RiptideNetworking https://github.com/tom-weiland/RiptideNetworking
Does it have Unity Relay integration?
Nope you'd have to roll your own hosting solution.
Maybe worth looking into building out some sort of integration for that though
can someone PLEASE help me with this, i want to choose a Hunter (lets say impostor) and i need all the player scripts to know if MY player is hunter or not.. i have found a video on how to make among us and saw a piece of where he chose the impostor.. but i cant seem to recreate it. i just dont know what im typing, i have tried the photon documentation but still didnt manage to come up with somthing. please help me and explain what to do.. and also explain a bit what i am typing so i understand and can learn from it...
If you want you can DM me... its a bit easyer than the server
using Photon Pun btw
Ayo, so im trying to make a multiplayer game rn using photon, but whenever the two clients connect, their controls get swapped, so yeah, heres the code https://paste.myst.rs/fbqxfmfz
a powerful website for storing and sharing text and code snippets. completely free and open source.
its your cameras
they're stacking on eachother
if anyone is online to help, photonengine isn't replicating my position coords, any help is appreciated
Guys, in cloud firestore, is it a good idea to put top 1-10k players in 1 document, then 10001-20000 in 1 document, then 20001-30001 in 1 document and so on, so that the read count is small so that it won't cost so much ? Will that work ?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
public class Abilities : MonoBehaviourPun, IPunObservable
{
public bool[] global;
public PlayerController controller;
public int id;
public static Abilities instance;
public int[] ids;
[SerializeField]
private PhotonView photonView, target;
private void Awake()
{
photonView = this.gameObject.GetComponent<PhotonView>();
if(photonView.IsMine)
controller = this.GetComponent<PlayerController>();
instance = this;
}
public void init()
{
//Invoke("ability" + id.ToString(), 0f);
if (global[id - 1])
{
photonView.RPC("ability" + id.ToString(), RpcTarget.All);
}
else
{
if(target != null)
photonView.RPC("ability" + id.ToString(), RpcTarget.All, photonView.ViewID, target.ViewID);
}
}
[PunRPC]
private void ability6(int sender, int _target)//int _target)
{
if(photonView.IsMine)
{
if (photonView.ViewID == _target)
{
Debug.LogError("REC");
//if (_target == this.GetComponent<PhotonView>().ViewID)
{
}
}
if (photonView.ViewID == sender)
{
Debug.LogError("SND");
}
}
}
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
}
}
so that's my code on short
I got more instances of this script
one for each player
the problem is that when I call ability6 it only calls one method (which is attached to the same player) on every side
@spring crane got any idea ?
do not ping people (especially mods) that are not in conversation with you
you might have mistaken his response for an offer to help
maybe
I said I think
oh nvm
I got an idea
DONE IT
private void ability6(int sender, int _target)//int _target)
{
if(photonView.IsMine)
{
if (photonView.ViewID == _target)
{
Debug.LogError("REC");
{
}
}
if (photonView.ViewID == sender)
{
Debug.LogError("SND");
}
}
else
{
PhotonView.Find(_target).gameObject.GetComponent<Abilities>().ability6(sender, _target);
}
}
ILY ALL
:D
I'm trying to make a lobby for the players to wait until 1 player joins the same room. if I try to join the room with 2 different devices, then it only saids there is 1 person in it. (cause the 2 players stay in the lobby instead of going to the game.)
Can anyone help me?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;
using TMPro;
using UnityEngine.SceneManagement;
public class WaitingForPlayers : MonoBehaviour
{
public TextMeshProUGUI amountOfPlayersText;
public TextMeshProUGUI RoomCodeText;
private int NewPlayer = 0;
// Start is called before the first frame update
void Start()
{
RoomCodeText.text = "Room Code: " + PlayerPrefs.GetString("JoinCode");
}
// Update is called once per frame
void Update()
{
if (PhotonNetwork.CountOfPlayersOnMaster == 1)
{
amountOfPlayersText.text = "Waiting for friend (1/2)";
NewPlayer = 1;
}
else if (PhotonNetwork.CountOfPlayersOnMaster == 2)
{
amountOfPlayersText.text = "Waiting for friend (2/2)";
NewPlayer = 2;
}
else if (PhotonNetwork.CountOfPlayersOnMaster > 2)
{
NewPlayer = 3;
}
if (NewPlayer == 2)
{
PhotonNetwork.LoadLevel("ClassicMMode");
}
if (NewPlayer > 2)
{
SceneManager.LoadScene("Menu");
}
}
}
Imo, you don't have to worry about this. The usual path is to just create a room and wait in that, until someone joins.
You can still show some lobby / wait screen until that happens, so there is no difference for the user but it simplifies your workflow.
CountOfPlayersOnMaster is updated lazily, so it's not highly up to date anyways.
Guys this is my player script and I have change skin menu where on button you change skin but when I change skin only I can see my skin changed and other players cannot. How can I fix that? Pls help! Here is script: https://hastepaste.com/view/ToqcZl0CZ
Yes. I was trying to create that usual path when someone joins it, but I didn't knew how, so I tried the way to check when CountOfPlayersOnMaster is equal to 2.
Do you know a way to do this?
I'm currently making an online game with Photon. How can I check if a Room with an ID does already exist? Pls Ping for awnsers thx
nobody an idea?
How do I check for Error Messages?
you could try to create a textBox that pops up after a fiew seconds. Normally if the room name exists, you won't be able to create the room. (the button just doesn't work). so the box will pop up and tell the player to choose a new name or checking internet connection (if it would have delay.)
If the room doesn't exist, then you will create and join it automaticly, the textBox would still pop up in the lobby, but then the player is already in the game. (so he wouldn't see it)
@gritty olive
this is how I would fix it, but you can do it on another way if you know a better one
idk if this is the right place to ask this but how can I keep my fps camera from clipping the head of the player? Is there a way to make the mesh invisible for just the fps camera? I looked it up and some people say I can use isLocalPlayer to check and disable the mesh for the client. I don't know anything about networking so I would appreciate some help!
i got this erro when other player joins
Autoconnected Player "Autoconnected Player" NullReferenceException: Object reference not set to an instance of an object.
also my host and client is not syncing with each other during play ... i added photon view and photon transform view in both player
then also they are syncing and working
what can I do.. I'm noob at this
@glacial totem I'm thinking about switching to LiteNetLib.... Mirror is nice and all, but it's kinda slow. Plus, the HLAPI isn't that big of an improvement over LLAPI of LiteNetLib. Also, LiteNetLib has an HLAPI called LiteNetLibManager that looks very similar to Mirror.
I’ve only used LiteNetLib so I can’t compare, but it’s feels like any other TCP or UDP library for C#
I like it a lot
And it’s extremely fast
do you use the manager or nah?
I don’t believe so?
Also I know 7 Days To Die is a popular game on Steam that uses LiteNetLib
yeah I didnt know that till looking at LitNetLib
IMO it would be better if I switched, because then I can control what everything does, especially since I need to connect to a match-making server that wouldn't be Mirror base
Yeah the flexibility and control is what I desired the most
I’ve done plenty of client/server code before I got into Unity so it was already extremely familiar
The way I see it is the client will have a seperate Unity scene then the server. In that scene would be a bunch of scripts that just listen for server events.
My client and server use the same scenes and everything since they run identical code
The only difference is some minor stuff for client side prediction and rollbacks on the client’s end
The only thing the server sends is the last game state of all players and the ball
And then events like replay starts and goals
is the script that's on both the server and client the same component, or do you have one for server and client separately?
are you making another game like the one you showed me?
Not at the moment but they all involved the same concept lol
Players and a ball or puck
All interacting with physics
Still havent gotten my reconciliation script working yet haha
I drifted off into making a replay system I forgot what the primary goal was
Reconciliation is the tough part haha
Because you need a good way to be able to calculate and sync client and server time
Knowing that client time should always be in the future
yeah for me that's the part I haven't quite solved yet
The server has a concept of a queue of inputs waiting for each player
If the server sends the queue’s count, the client then has a lot of good info to use
The queue should be full of only future tick input, so if the queue is small, the client needs to move further into the future to get ahead
If the queue is too large, the client needs to slow down because at that point it’s just adding unnecessary delay
RL uses this model in 2 ways
And actually let’s you switch between them
One model is like I described, and the other model is the same except the server explicitly speeds up or slows down the client by duplicating or dropping inputs
Instead of the client defecting it itself
yeah, 2-3% game slowdown CSTS
Yeah I believe my model is CSTS
I can’t remember which they default to at this point
Because they were attempting to change it
CSTS is the preferred if you have shitty internet
STS is the same as CSTS, but without the slowdown
Okay maybe I should look at trying to implement STS instead in the future
Unless I’m wrong and I actually have STS implemented
I have to research more
Yeah idk exactly all the details. I could be wrong about STS having no slowdown
I do know CSTS is recommended over STS or default if you have bad internet
Ahhh so legacy is the one where they just duplicate or skip inputs
Where as CSTS and STD are the same concept of the client running faster or slower
yeah thats what I figured
Just whether the client is the one detecting or or whether the server is explicitly telling it to
So I believe I do CSTS then and that it sounds like it’s a good model to have
yeah, plus you can always add more models if you feel like it
in RL I think I use CSTS, but I need to switch it
the random slowdowns throw me off sometimes
@glacial totem thanks for mentioning the input buffer count on the server end, didn't think of it. that actually might be what I need to get the reconciliation working
Also for what it’s worth, I reconcile on every server state packet
No matter what lol
so basically every physics update?
Yeah
I used to have error detection
But the truth is that it’s off enough every tick
That it’s more reliable to just correct every time
Worst case is extra CPU cycles just to arrive at the same place
so you reconcile every physics update regardless?
yeah that's what I ment sorry
which is half of my physics tickrate
How many objects do you correct for? every client present on the users end or just his client?
for all physics objects
all players and ball
client should ALWAYS end up at the same position if they aren't interacting with other players
because the client has its own inputs already to replay
and the ball interactions is 100% predictible
other players are what are impossible to predict
makes sense
How might I fix that?
Maybe somehow disable the non local player cameras
How???? (Sorry I’m just, Very, new to this kind of thing)
@glacial totem just to clarify, the FirstPeer from the net manager is effectively the server peer on the client?
Currently making a few scripts to handle networking in LiteNetLib. Messaging, Rpc, and Commands are being worked on as of now
kinda doing what mirror does and use attributes to populate their commands and Rpc methods. Only difference is you invoke them with the name or a hash code of the method
I don’t use any RPC tbh so I’m not sure about that @cedar epoch
The client should have a single peer, which is the server of course
And the server should have a list of peers, which are all the clients
Hey guys, been getting into Netcode for GameObjects recently and noticed a weird issue. On the docs for reparenting over the network it has the diagram where you have the main player object then a networkObject on the hands that way you are able to parent networkobjects to those hands. However in practice it throws a "You can't have multiple networkObjects on a nested prefab". So how would I go about spawning in a sword and correctly parenting it to the player's hand?
there is no point in having the hands of a player prefab be separate network objects as it is also generally pointless for a weapon to be a network object. They all should be NetworkComponents that share the network object ID of the player. Only entities that will exist or act independently of a player or AI pawn would need to be distinct network objects.
https://www.youtube.com/watch?v=QG3VIUFcif0&t=468s I made a Twitch chat game with this tutorial. In Editor an as exe it works just fine, but when I tried to upload it as html it gave me this error message. Does anybody know how to fix?
We will look at how to connect your game to Twitch chat so they can play it, like in Twitch plays, or affect it like they cna add power ups or create enemies, etc.
Previous Tutorial
https://youtu.be/tdkdRguH_dE
(づ ̄ ³ ̄)づ ~(˘▾˘~)
TWITCH ( ͡° ͜ʖ ͡°)
https://www.twitch.tv/PabloMakes
TWITTER (ಥ﹏ಥ)
https://twitter.com/PabloMakes
#unity ...
Could you explain to me how I might potentially do that? (Again, sorry, just never done this kind of thing before)
yeah I actually decided to just keep it clean and use exclusively messages. It is however simplified down by just having an attribute with a message lookup table you can use. Otherwise, you just send a message to the client(s) by message name using a delegate signature. I strictly use byte[], so serialization is mandatory on both message ends regardless (no auto-serialization like some APIs do because it can get slow at times from all that boxing)
I also limit to unmanaged types, or pre-converted byte[] for stuff like strings.
is anyone aware of any good tutorials for setting up server authoritative movement with rigidbody controlled players using netcode for gameobjects?
hey PLS HELP, I have script for sending messages and input field but when I click "Slash" it wont send message idk why. This is script https://hastepaste.com/view/O3L7lt0qi
As you've been told twice already, you need to show your code and implementation. How is anyone going to even guess where to begin.
what is implementation
It means explaining how you did it.
My problem is i added the code of killing and respawning and i put the tag enemy on the cube and i tested it on a cube and worked perfect fine i added the tag enemy on my player nothing happened? everything works completely find i just need to know how to be able to make the player die
heres my code
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public Transform respawnPoint;
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Enemy"))
{
other.transform.position = new Vector3(-22, 2, 10);
}
}
}
So why is it called NewBehaviourScript?
yea no i fixed that i just ran into other problems but @worldly mirage can u please tell them the problem cause i mclueless lol u helped with everything
we changed NewBehaviourScript to DeathScript
Yes it's rather crucial that the class and file name match
now thats not the problem anymore we got the script we made colliders
its just not workinh
borked can maybe explain the problems
if u would like
Something breaks when @grand relic Tries to run the game in the editor, it only works when you build it out which makes it very difficult to debug
I recommended starting in a new scene and trying to get some controls working with keyboard and mouse
yea ik
but we added colliders and triggers and the scripts but when we test it still dosent work
plus im very dumb on text i understand in talks so thats gonna be a problem...
You've gotta move from trying to get it done to trying to learn. Otherwise you'll be too stressed to do anything.
yea ik but this has marks and my mom is very strict with marks
Here's what you can do:
Make a numbered list of everything you've done,
and everything you've learned doing the things you've done
Even if you can't get it ultimately working like you'd hoped, you can present this to your teacher and any reasonable teach will give you a decent grade
Okay that makes sense, but don’t you need an networkobject to spawn things over the network?
your weapon should be already spawned as part of the player object and you would only turn it on/off with a RPC or based on a syncVar
Im working on an entire equip/unequip system with differing weapons so I kind of have to work with instantiating the weapons
What makes you think there's such a method available to override?🤔
@wide girder it doesn't even call OnJoinedRoom
I'm also working with something that makes you able to join a game, if you're a party owner, and therefore I have to keep a dictionary of players and party names, to map the party to the owner. How do I make this list appear the same, with the same values, for everyone on the network?
Then debug in onjoinroomfailed
Sync it with master client.
doesn't do anything either
ok
Are you making sure that the join room call returns true?
yep I tested that as well
Well, hard to say anything without any details.
also I have a couple functions that I use throughout the game, such as CreateParty, JoinParty and LeaveParty, however these are all in a PartyManager script, and I have my player in the dontdestroyonload scene. Therefore I must have two partymanager gameobjects with the partymanager script attached to them, in both of the scenes, in order for me to be able to execute those party functions from both my player's wrist UI (in the DontDestroyOnLoad scene) and from physical buttons on the ground (in the main scene)
How should i tackle that without using two of the PartyManager scripts/gameobjects?
but idk how to access that from the actual scene
especially not on a button, where I have to have the component directly linked there
Use a proxy script for the button. It shouldn't be referencing something far away anyway. There are many ways to reference an object in your loaded scenes. If you don't know how to do that, I think it's a bit early for networking.
ok
No you don’t. You can just activate/deactivate them.
I am using a Streamwriter to make a Twitch Chatgame and in Editor and as .exe it works as intended, but the webgl version doesn't work. Does anybody know why, and how to fix?
Pls Ping for answers thanks
I'm using Photon Engine, and when I try to join a party that I know exists, it tells me that the party does not exist, and won't do anything when I press the button to join. I found this out by using the OnJoinRoomFailed() function. Would anyone know why this could be? I can share my script if necessary
Kind of a long shot, but WebGL does not support UDP
So if you use UDP that might be the problem
I think I use tcp
yes I use a TcpClient
Maybee itch.io blocks internet communication?
Usually you would be informed about that in some way
Does your network tab give you any information about blocking connections or something?
Only development Console
That most likely won't work out of the box. Afaik you need to send the packets over JS with WebSockets. You don't need to implement this if you get a browser compatible network transport. Unity WebSocket libraries should handle this for you.
ok thx
So I just need the right library? Sorry, I don't 100% understand what you mean...
hello, i'm working on netcode right now, all the tutorials I found are on host client. I need server client. I am currently using the host client with the third person character in standard asset without any problems. but when I do the same test with the server client, the client cannot move the player even though it sees its own object and player object.
I'm so sorry for my bad english I hope was able to explain my problem
I can't control the character on client, but I can walk the server-side character, the client just spectating own player character
Hi there, I'm planning on programming a mobile experience that will have very little and simple gameplay but will need to support 50k live concurrent devices. The game will just synced across the devices and maybe some simple gestures/taps will update some graphics and animations on the screen. Anyone familiar with working with that many concurrent live players? What kind of technical things do I need to think about? Any suggestions for solutions - will Photon (Fusion?) be best or is there something else to consider? Thank you!
What kind of networking architecture do you want to have? Peer to peer? One server? Rooms? Do you want the logic to be handled by the server? Do all of the 50k players need to be able to interact with each other?
Thanks. It's more like all players need to be able to interact with the server at the same time, not really with each other. I'm not sure if server-client or peer to peer would be better. A really simple MVP would be each player being able to send a message to the server and the server being able to update all clients a couple times a second or something like that.
You can have a look at Google Firebase Real Time Database. They have a SDK for Unity. But I can't remember their quotas from the top of my head, so can't answer for the 50k CCU, you'll have to find out yourself.
I made a node.js server that makes a multiplayer game. It works flawlessly and has been tested with 2 windows and 2 Linux PCs, but when I tried with a iMac, it couldn’t connect. I tried hosting the server on it, and replacing ip with localhost, but it had the same problem (timeout). When they put in the url in chrome, it worked. Do Macs have some guard against in safe webpages with web requests in unity, or do unity web request just not work with macs, and if so is there an alternative
Hello everyone, I watched the lessons in this playlist (https://www.youtube.com/playlist?list=PLI9CK8e_e3MeDv8K1vi0FosBV4dKmcOo3 ), I've done everything, everything works. But I noticed that it is useless to disconnect on the server, it says "A user with such a key already exists". I tried to do something about it, but nothing really works, please can someone help... Here is the code:
static class GameManager
{
public static Dictionary<int, Player> playerList = new Dictionary<int, Player>();
public static float playerSpeed = 0.1F;
public static void JoinGame(int connectionID, Player player)
{
NetworkSend.InstantiateNetworkPlayer(connectionID, player);
}
public static void CreatePlayer(int connectionID)
{
Player player = new Player()
{
connectionID = connectionID,
inGame = true
};
playerList.Add(connectionID, player);
Console.WriteLine("Player '{0}' has been added to the game!", connectionID);
JoinGame(connectionID, player);
}
}
internal static void DisconnectionPlayer(int connectionID)
{
for (int i=1; i<GameManager.playerList.Count; i++)
{
if (GameManager.playerList[i] != null)
{
if (GameManager.playerList[i].connectionID == connectionID)
{
GameManager.playerList.Remove(i);
}
}
}
}
does anyone have any resources on how to connect a database to a unity project and keep it safe, a lot of instruction is weak on security
I doubt there is a tutorial for unity, so u might want to look for a tutorial outside of unity
Also, unless you're worried about hackers or keep the database on the client side, it should be secure enough without any additional manipulations.
Hi guys, i’m trying to install cloud code package but my package manager doesn’t show it when I search for it can anyone help
already irrelevant, solved the problem
You tried with those steps ? https://docs.unity.com/cloud-code/implementation.html#SDK_installation
Yes, actually I solved it by manually adding packages to manifest
Hey, I have a simple question. My game has three teams: Team 1, Team 2 and Monsters (computer). I am creating now Units for Team 1 and Team 2 (AI), which will fight between each other (like in Dota or LoL). What is the best way to make teams?
Component for storing the team on the gameobjects is probably the most straightforward approach.
Is it optimal though?
It's a good way of doing it yes
thanks
I'm following this Photon tutorial, they use PUN Classic, does it matter if I use PUN 2 Classic?
Or should it be the same version?
I did start using PUN 2 and got these errors
Is that because I'm not using the other version?
Yea you have to pay a lot more attention to what is being done and how it converts to PUN2, but the change is generally pretty mild. PUN didn't fundamentally change between 1 and 2. https://doc.photonengine.com/en-us/pun/v2/getting-started/migration-notes
if I import the first one there's no option to add the AppID ,has that carried over from the second?
what is a good way to store multiplayer data, (I am using Photon)
What kind of data? And store where?
Define "multiplayer data"
so I want to make a game like rpg
I just want to store data such as levels, items, locations etc
The quick way: Playfab. The expensive way: expensive kits from the asset store. The best way: Create your own react/angular web API.
The answer is always PlayFab (or similar services) unless you have a dedicated team and the actual need to build a custom backend. If its for an MMO, just stop doing it and make a realistic project. The challenge is not in making it work for 10 players, its making it secure and scale to 100s of players and more. With PlayFab (et al) this scaling is taken care of.
it either is or isnt an MMO
no
--> Massively <-- multiplayer
Which includes storing data sorry
mmo often implies persitent world
It's a casual game
thats a genre
Yea
But I want to save player data and location of building
Since they can build stuff
Kinda like class of clans type game but rpg
you do want to run this on a dedicated server?
yes
then you just store all the persistence stuff on the host computer
no need for cloud storage, no point even
Oh ok
just save the game state like a normal savegame
but save automatically at short intervals
If I do host computer will I need my PC running 24/7
yes
As in safe in local file
that would then be a dedicated server
Could I store data using photon?
btw: you personal PC running 24/7 for a game is also -not free-
you can always store data on the computer that runs the server application, it does not matter what networking library you use to implement your game
Like storing data on their local file?
you would only need "cloud" storage, separate from the server-application's computer, if you have multiple servers
yes
Hmm... Well I'm actually very new to these networking terms sorry
Should I use binary to make it safe?
binary does not make it safe
Ah
also you don't need safety if its for "friends"
its not about stealing money from your bank, its about cheating in the game
if you need to prevent cheating, your project will be way more complicated
Ah
I see
I might do the local file
While slowly researching about the more complict method
But I think for now the local file will work.
So I have a map I guess, and they can spawn houses etc, but when they log off / quit application the building also disappears. How would I be able to keep it, if I'm storing data using local file?
you spawn that stuff on the server, while the server runs it will stay there, if they log back in, it'll still be loaded and available to them (you need to implement that ofc), only if the server shuts down you loose the stuff that was spawned and exists only in memory, which is when you need to save the state of it to persistent storage (a file on disk), so you can load it back when restarting the server.
mind you, this is a lot of work, if you aren't experienced in how all these pieces are implemented and how they work together i'd do a few toy projects focusing on the individual elements before working on a full game
Yea that's what I'm doing
But I was wondering where to start
And what to learn
Yea, I just wanted to make sure it was possible
definitely possible
Using photon. Etc
Ah
if you say "photon" you could be referring to anything they offer
Oh I see
if you mean PUN, idk really why people still use that
Is pun not good anymore?
it never was good
Is there any alternative free?
Netcode for GameObjects, Mirror and Photon Fusion would all be free for your use-case
Also sorry still bit confused when you mean server do you mean PUN etc? Send as for persistent storage is that my local file or their local file?
Oh
So when I add a safe button is won't save on their storage but instead mine?
Is that why my PC needs to be oh 24/7?
the only thing photon gives you in terms of service is a "relay" server that you can use to route messages through to avoid issues with local networking and discovery of other players
unless you buy a cloud server from "them" and run your server on it, its all on your machines at home
Oh like when I mean their storage i mean the players' storage
thats for you to decide in the code you write
as i said, if you don't care about cheating, you can just have players store their state locally
Alr
really, for a private, casual game with friends, you can just skip most of the things that are complicated about "public" multiplayer games
So correct me if I'm wrong but
- My PC needs to be on 24/7
- All file will be stored on my PC.
that is an option, yes
no
Oh
you should aim at restarting your server every 12 hours
even if its supposed to run 24/7
if you can restart it, that makes it much easier to fix issues caused by long up-time
also lets you ignore a lot of problems only caused by long up-times
Ok
typical MMOs restart their servers once every day or more often
Yea that may be a good starting point
"server" refers to a machine(computer) that runs an .exe of your game that "clients" i.e. other machines aka. your players can connect to.
that "connection"-bit is what PUN is for
and only that
alt + f4 and double-click on the .exe
or something more elegant you handle with custom code
technically "terminate all the processes involved in running the game and start them again"
Just my side?
yes, that is the point, you shut down everything, kick out all players, start again, have them reconnect
Because even if my game is not running can't other people still be in it?
technically their client app will still be running, but they will not be able to sync with each other
Why is that the case? My game is the same as everyone else's?
because the server handles all the sync/communication
When you mean game you mean the "build and run" things?
yes
Yea
clients/players are connected to a server, NOT to each other
only the server can send stuff to other clients
peer to peer networking, where everyone is connected to everyone else, without a server, does not (really) exist in multiplayer gaming outside extremely advanced middlewares you do not have access to
Sorry I'm not getting it.
So for example player A has the game. And starts it will connect to the game using PUN. Player B also joins.
If player A closes application and restart, wouldn't Player B still be in the game and connected with PUN. Meaning that it can still interact with other people?
connected to what?
PUN does not connect to anything outside the applications running on your player's PCs
Ok
you do not join a "game"
this is only an abstract concept
a way to talk about it
So to restart server I need to close my game file
But how would that effect other players?
you need to make sure you actually understand how applications/computers work
you don't close a game file
you terminate a process ("close a running application")
But since other player has the game couldn't they start it up
What's the difference between my game and everyone else's game?
How come if my game close it effects other people
what exactly do you mean by "game" here?
The build and run system
It creates a file
Or application should I say
Don't I send that application to other people
So they can also connect?
if your "game" is the master/server and you shut down, in the ordinary case, that would eject all players, but depending on how you implemented everything, it could just make any other player the master/server
depends on your networking library and custom code
just understand this: if you use PUN, you will remain confused and never learn how multiplayer networking is actually supposed to work
What should I use/ learn instead?
PUN is easy to get stuff running for a prototype or small scale experience with firends but it is very limited in what it can do
That is hopefully free
and most concepts people talk about in regard to multiplayer are not supported by it
Hmm ok