[Photon Pun] RPCs wont get called when testing locally

I’m testing a round system and it all works if I create the room in the editor and join in the build, but if the built version of the game is the master client, the editor won’t be receiving any of the RPCs it’s sending. Is this only happening because I’m testing it locally or is it an issue I should worry about?

What is a master client? Did you mean host?

Since we don’t see any of your code we can’t tell whether you’ve made a mistake or ran into a misconception.

The Master Client is the equivalent of a “host” but not really running any simulation and authority is distributed.

It should not matter if you run the app locally or on various machines.

Make sure the build actually is the Master Client in this case. If the RPCs are not received in the Editor, maybe check the build’s log if they are sent in the first place.

Are you switching scenes?

I am going from the main menu scene to the game scene. I tried using log statements in the RPCs and confirmed that when the build is the master client, it runs the rpc but the editor doesn’t. I’ve also tried waiting for when the scene finishes loading to run the rpc, that didn’t work, I tried waiting 5 seconds after the player joins before running the rpc, that also didn’t work. Even when I see on the build that it’s sending an rpc it doesn’t appear on the editor

After further testing, I realized the RPCs are just extremely delayed. The editor will get teleported like 30 seconds after when the RPC was called on the build.
Here’s my code

    void Awake()
    {
        view = GetComponent<PhotonView>();
        CheckPlayerCountAndStartRound();
    }

    public override void OnPlayerEnteredRoom(Player player)
    {
        CheckPlayerCountAndStartRound();
        base.OnPlayerEnteredRoom(player);
    }

    public override void OnPlayerLeftRoom(Player otherPlayer)
    {
        CheckPlayerCountAndStartRound();
        base.OnPlayerLeftRoom(otherPlayer);
    }

    void CheckPlayerCountAndStartRound()
    {
        playersNeededTxt.text = "Waiting for players\n" + PhotonNetwork.CurrentRoom.PlayerCount.ToString() + "/" + neededPlayers;

        if ( PhotonNetwork.IsMasterClient )
        {
            if ( PhotonNetwork.CurrentRoom.PlayerCount >= neededPlayers )
            {
                StopAllCoroutines();
                StartIntermission();
            }             

            else
            {
                StopAllCoroutines();
                view.RPC("TeleportPlayer", RpcTarget.All, waitingPos);
            }
        }
    }

    void StartIntermission()
    { 
        view.RPC("TeleportPlayer", RpcTarget.AllBuffered, intermissionPos);
        roundMusic.Stop();
        inRound = false;
        
        StartCoroutine(Timer(intermissionTime, "StartRound", "SyncIntermissionTimer"));
    }
    
    [PunRPC]
    void TeleportPlayer(Vector3 pos)
    {
        player.position = pos;
    }

The problem might be due to how you load scenes in this multiplayer situation.
A new scene will destroy all old objects, including those of remote players (which you would want to keep, actually).

Maybe make use of the built in scene synchronization of PUN: