in 포스트

책 예판 시작됐습니다

예판 링크 (20일 배송/도착)

저의 오지고 지리는 유니티 책 예판이 드디어 시작되었습니다!!

소셜네트워크에 공식 홍보자료를 배포할 것이지만, 일단 기쁜 소식이라 두서 없이 먼저 알려드립니다 🥳🥳🥳🥳🥳


덧글 쓰기

Comment

  1. ㅎㅎ 유데미에서 공지 보고 언제나오나 생각날때마다 검색했었는데 드디어 나왔네요!! 주문 완료했슴당!

  2. 책 구매해서 마지막 장(19) Done 프로젝트를 실행해서 돌려보았습니다.
    그런데 방을 만든 플레이어 말고 방에 참가한 플레이어의 총알이 이상한 곳으로 발사되는데 무슨 문제일까요?
    콘솔 오류 내용은 이렇게 나옵니다.
    Coroutine couldn’t be started because the the game object ‘Gun’ is inactive!
    UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
    Gun:ShotEffectProcessOnClients(Vector3) (at Assets/Scripts/Gun.cs:160)
    System.Reflection.MethodBase:Invoke(Object, Object[])
    Photon.Pun.PhotonNetwork:ExecuteRpc(Hashtable, Player) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs:447)
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Player, Boolean, Object[]) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs:1231)
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Boolean, Object[]) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs:2682)
    Photon.Pun.PhotonView:RPC(String, RpcTarget, Object[]) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs:409)
    Gun:ShotProcessOnServer() (at Assets/Scripts/Gun.cs:154)
    System.Reflection.MethodBase:Invoke(Object, Object[])
    Photon.Pun.PhotonNetwork:ExecuteRpc(Hashtable, Player) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs:447)
    Photon.Pun.PhotonNetwork:OnEvent(EventData) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs:2155)
    Photon.Realtime.LoadBalancingClient:OnEvent(EventData) (at Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs:2567)
    ExitGames.Client.Photon.PeerBase:DeserializeMessageAndCallback(StreamBuffer) (at C:/Dev/photon-sdk-dotnet/PhotonDotnet/PeerBase.cs:632)
    ExitGames.Client.Photon.EnetPeer:DispatchIncomingCommands() (at C:/Dev/photon-sdk-dotnet/PhotonDotnet/EnetPeer.cs:553)
    ExitGames.Client.Photon.PhotonPeer:DispatchIncomingCommands() (at C:/Dev/photon-sdk-dotnet/PhotonDotnet/PhotonPeer.cs:1428)
    Photon.Pun.PhotonHandler:FixedUpdate() (at Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs:130)

    • 해당 워닝은 넘어가도 되는 부분이에요. 좀비서바이버를 구현하면서 만든 총 발사나 재장전 등의 코루틴 메서드를 실행하는 도중에 플레이어가 죽어서 게임 오브젝트가 비활성화되어 도중에 강제 종료되면 나오는 경고거든요.

      총 발사 방향이 이상하게 보이는 것은, 그것보다는 동기의 시점의 오차나 패킷 손실 때문이이요. 네트워크를 쉽게 설명하기 위해, 예제는 코드가 복잡해지는 것을 줄기이 위해 대역폭 최적화를 고려하지 않았는데, 기능에 비하면 예제는 대역폭을 많이 사용하는 편이에요.

      다른 말로 화면, 회선의 상태에 영향을 많이 받아요. 즉, 인터넷이 매우 빠른 상태가 아니거나, 또는 사용하는 클라우드 서비스의 품질이 낮거나, 클라우드 서버의 위치와 컴퓨터의 위치가 차이가 많이 나는 등의 문제가 겹치면, 서로 정보를 교환하는데 발생하는 지연시간이 길어지거든요.

    • 거기에 이어서, 네트워크 게임 예제에 앞서 설명했듯이, 우리의 게임은 치팅을 막기 위해 모든 처리를 호스트에서 해요. 호스트가 아닌 클라이언트들은 그저 그림을 그리는 것일 뿐이죠. 다른 말로 하면, 자신의 컴퓨터에서는 플레이어가 오른쪽을 보고 있지만, 그 정보가 지연시간에 의해 미쳐 동기화가 완전히 되지 않아서, 호스트에서는 해당 플레이어가 아직 왼쪽을 보고 있는 상태에요.

      그래서 총을 쏘면, 실제로는 왼쪽으로 발사되는 것이죠. 사실 모든 형태의 FPS 게임들이 가지고 있는 문제긴 한데, 예제 게임의 경우, 무료 클라우드 서비스를 사용하고, 동시에 예제를 돌리는 컴퓨터들의 대역폭이나 성능이 뒤죽박죽이라서 예제는 지연시간 없는 빠릿한 성능을 보장하긴 힘들어요. 그렇게 되려면 본격적으로 유료 클라우드 서비스를 사용하거나, 데디케이티드 서버를 마련해야겠죠.

    • 그런거였군요… 감사합니다 ㅠㅠㅠㅠ
      이런질문들 여기다가 올려도 되는거 맞죠?
      또 한가지 궁금한 사항이있어서요 ㅠㅠ

    • 넹. 근데 여기보다는 이메일이나 유튜브가 좀더 답장이 빠를거에요~