안녕하십니까. 강의너무잘 듣고있습니다. 서버를 공부하면서 데이터가 유실되면 어떤 방식으로 진행해야하는지 궁굼해서 문의드립니다. tcp/ip특성상 안전성이 높아서 유실이 안되는 걸로 알고있는데 유실될 가능 성도있나요? 데이터 유실이된다면 어떻게 처리해야하나요? 데이터 유실이 실무에서도 일어나나요? 일반적으로 데이터 유실이란게 tcp/ip에서 데이터가 끊어져서 들어오는걸 말하는 건가요? 만약 데이터 유실처리 방법으로 유실 유무를 판단하여 다시 서버에서 요청을 하는 로직을 만든다면 일반적으로 재전송 패킷을 따로만드나요?
내용은 아래 입니다. You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all UnityEngine.MonoBehaviour:.ctor () SoundManager:.ctor () (at Assets/Scripts/Managers/SoundManager.cs:9) Managers:.ctor () (at Assets/Scripts/Managers/Managers.cs:14) UnityEngine.GameObject:AddComponent<Managers> () Managers:Init () (at Assets/Scripts/Managers/Managers.cs:43) Managers:get_Instance () (at Assets/Scripts/Managers/Managers.cs:9) Managers:get_Resource () (at Assets/Scripts/Managers/Managers.cs:18) BaseScene:Init () (at Assets/Scripts/Scenes/BaseScene.cs:19) GameScene:Init () (at Assets/Scripts/Scenes/GameScene.cs:11) BaseScene:Awake () (at Assets/Scripts/Scenes/BaseScene.cs:12)
public static DataManager Data { get { return Instance?._data; }} 와같은 프로퍼티들이 스태틱으로 되어있던데 스태틱이어야하는 이유가 따로 있을까요? 그냥 외부에서 호출 할때 Manager.Instance.DataManager로 호출해도 되는데 이렇게 하신 의도가 궁금합니다. 또 위의 Data 프로퍼티의 정의에 보면 return _data가 아니라 Instance?._data로 하셨는데 이건 C# 7.0문법인 ?을 사용하려고 그렇게 하신건가요?
1. 강의를 듣고 선언된 두 딕셔너리의 용도라고 주석을 달았는데 맞을까요? 2. LoadAllAsync 메서드- 주어진 label에 대해 모든 리소스를 비동기적으로 로드하고, 로드 상태를 콜백을 통해 알려주는 기능 수행 LoadAsync 메서드 - key에 맞는 개별적인 리소스 로드 이렇게 해석했는데 맞나요?? 3. 동기 작업의 결과 - op foreach문의 내용 - 스프라이트만 따로(우선적으로) PrimaryKey로 체크를 하고 로드 [사유 : 폰 이슈] else문에서 그외의 스프라이트가 아닌 것들을 로드
안녕하세요, 실습을 따라 진행하던 도중 질문드릴 것이 생겨 여쭤봅니다. 해당 강의의 커리큘럼 중 채팅 프로그램 세션에서 로그인 강의를 끝까지 듣고 그대로 입력해 실행해 봤을 때, 강의 영상처럼 영어를 입력하면 입력값이 길든 짧든 오류가 나지 않습니다. 그러나 한글로 입력하면 아래의 사진과 같이 아이디, 닉네임 이렇게 짧게만 입력해도 오류가 납니다. 왜 이런 것인지 이유와 그 해결책을 알고 싶습니다. 감사합니다.
3:34초에 Function, Float, int, String, Object 등 모든 변수가 나와야하는데 아무것도 없고 No Function Selected 상태입니다 수업을 그대로 따라하고 있어서 따로 코드 친건 없고 이전까지는 모두 다 똑같이 실행되었습니다 어떻게 해결해야할까요?? 유니티는 2022.3.21f1 LTS 버전입니다
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
모든 계산은 서버에서 하고 실제로 클라이언트는 보여주는 역할만 한다고 배웠습니다. 여기서 궁금한점이 있는데 유니티는 collider를 만들어서 충돌처리를 하는데 서버는 따로 유니티를 통해 키는것이 아니라서 collider게산이 쉽지 않을 것 같다는 생각이 들었습니다. 총의 충돌판정을 검사할 때 총알의 현재위치와 총알의 이전위치를 이용해서 선을 만든 후 충돌처리를 하려고 하는데 여기서 플레이어의 머리 몸통 다리 팔을 각각 collider로 나누고싶다면 직접 서버에서 머리 몸통 팔 다리 위치와 collider를 구상하고 collider를 직접 구현하고.. Raycast를 직접 구현해서 사용한다 충돌 계산 및 유니티 기능 이용을 목적으로 하는 클라이언트를 따로 제작한 후 각 위치에 collider를 직접 생산하고 유니티에 있는 기능을 이용한다. 플레이어의 모든 위치는 동기화 되어있을테니 총알을 쏜 당사자의 컴퓨터에서 충돌판단을 한 후 서버로 충돌여부를 전달한다 보통 어떤 방식이 맞는건가요? 흔히 실무자들이 말하는 모든 계산을 서버에서 한다는 말이 당장 개개인의 클라이언트에선 collider조차 만들지 않는다는 느낌인건가요? 그리고 만약 점프를 한다면 점프에서 계산마다 올라가고 내려가는걸 서버에서 직접 계산한 후 (9.8중력, 이동속도 등..) 각 플레이어에 동기화시켜주는게 맞는걸까요? 아니면 각 클라이언트의 Rigidbody를 이용해서 계산된 높이값을 서버로 전달하는게 맞는걸까요? 로컬상 이동 - 서버로 전달 - 동기화 로컬상 이동명령 - 서버에서 이동계산 - 동기화 및 블랜딩 이 강의에선 2번케이스 같은데 3d게임은 1번이 더 나은 것 같기도 하고 해서 질문드립니다.
강의에서 나오는 코드를 그대로 따라가다 보면, 다음과 같이 하나의 버튼만 보이는 경우가 있었습니다. ... <RadzenDataGridColumn TItem="GangnamguPopulation"> <Template Context="data"> <RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@((args) => EditRow(data))"></RadzenButton> </Template> <Template Context="data"> <RadzenButton Icon="delete" ButtonStyle="ButtonStyle.Danger" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@((args) => DeleteRow(data))"></RadzenButton> </Template> </RadzenDataGridColumn> ... 혹시 저와 같은 문제가 발생하시는 분들은 아래와 같이 코드를 수정하면, 정상적으로 버튼 두 개가 렌더링됩니다. ... <RadzenDataGridColumn TItem="GangnamguPopulation"> <Template Context="data"> <RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@((args) => EditRow(data))"></RadzenButton> <RadzenButton Icon="delete" ButtonStyle="ButtonStyle.Danger" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@((args) => DeleteRow(data))"></RadzenButton> </Template> </RadzenDataGridColumn> ... 이런 문제가 발생하는 이유는 마지막 Template 컴포넌트가 이전 컴포넌트를 덮어쓰는 것 같은데, 정확한 이유는 모르겠습니다. 마지막 Template컴포넌트만 렌더링 되는 것 같습니다. 그래서 하나의 Template컴포넌트에 두 개의 버튼을 포함시키니 강의와 같이 작동합니다. ++ 영상을 살펴보니, 6:28 부분에서는 두 개의 Template 컴포넌트를 사용하시고, 이후 7:21 부분에서 하나의 Template 컴포넌트가 두 개의 버튼 컴포넌트를 포함하는 코드로 바뀌어 있네요. 아마, 편집하시면서 중간에 내용이 빠진 것 같습니다 ㅠㅜ
안녕하세요. 루키스님의 강의를 듣고 멀티플레이 게임을 만들어보려고 하는데, 어디서부터 어디까지는 서버가 처리하고 나머지는 클라이언트가 처리해야 할지 고민이 됩니다. 서버에 침투할 수 있는 핵을 최대한 막을 수 있는 안전한 상황을 구축하고 싶습니다... 그리고 서버와 클라이언트는 동시에 개발하는 게 좋을까요 아니면 클라이언트를 전부 개발 후 서버를 개발하는 게 좋을까요? 감사합니다.
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
선생님 글꼴 및 색에서 기본값 사용하신다고 다른 질문 게시판에서 답변해주셨는데 저도 기본값 사용 중이지만 달라서 질문 드립니다... 예를 들면 강의에선 public Knight Clone이 순서대로 파랑 노랑 주황인데 제 것은 파랑 민트 노랑 이런 식입니다,,,, 옵션-환경-글꼴 및 색에서 c#은 안 보이고 일반 텍스트만 색깔 변경이 가능하고 이렇네요,,,,,,
클라입장에서 Connect를 통해 연결을하고 연결된 소켓에 Send를 하게되면 서버입장에서 Recv하게되는부분에서 1. public void Start(Socket socket) { _socket = socket; _recvArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnRecvCompleted); _recvArgs.SetBuffer(new byte[1024], 0, 1024); _sendArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnSendCompleted); RegisterRecv(); } 이부분에서 RegisterRecv를 하나만 써 준 것이 낚싯대에 비유하여 접근을 하고있을시 다른쪽에서 접근을 못한다고 하셨는데. 이게 구조적으로 그렇게 짜여진 것인가요?? + 또 RegisterRecv() 이것을 여러게 써주면 lock을 걸어야 하는건가요 ?? 2. 그리고 OnSendCompleted 에도 lock을 건 이유가 _sendArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnSendCompleted); 이 부분에서 중복해서 들어오는 것을 방지하기 위해 거셨다고 하셨습니다. 그럼 Recv의 _recvArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnRecvCompleted); 이 부분은 어떻게 다른건가요?? 이 부분은 제 나름대로 이해하려고 예를 든 부분입니다. 제대로 이해했는지 봐주시면 감사합니다! Send와 Recv를 게임의 1:1 채팅에 적용하면 A유저와 B 유저가 1:1 채팅을 하고있는 중에 A유저가 채팅을 보내면 클라에서 Send를 하고 서버에서 Recv를 해 받고 그걸 서버 Send를 통해 B유저 클라에 보내준다 (이 부분에서 서버 Send는 1:1하고있는 B에만 가야하니까 lock을 검 : 또 다른 유저(클라)가 보낸 채팅? 들이 섞이지않게... )
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요? 오늘은 양해를 구하면서 조금 모호한 질문을 들고 왔습니다. 제목대로 완성본을 커스텀하면 메인 포폴로 내세울 수 있을정도인지 궁금합니다. 제가 수강한 강의는 C# Part4. 서버와 Part7. 유니티 연동 입니다. 물론 커스텀 과정에서 멀티스레드 이해 TCP 통신 과정 이해 클라이언트 <--> 서버 간 패킷 송수신 및 로직 이해 은 어느 정도 되었다고 자신하고 있고, 저의 주요 변경 사항은 Zone 단위 개념 삭제 Zone 개념 삭제에 따른 모든 방향 이동 및 모든 방향 투사체 발사 이동_Packet / 발사_Packet 등의 결정 주체 변경 - ex) 강의에서 결정 주체가 클라이언트였으면, 저는 서버가 결정하도록 변경 탑다운 슈팅 게임 방식의 배틀 로얄 컨셉 프로토타입 수준의 완성도 (아래 사진) 이 정도면 포폴 메인으로 써먹을 수 있을지 조심스럽게 질문 올립니다.. ㅎㅎ 답변 미리 감사합니다.
In order to call GetTransformInfoExpectUpToDate, RendererUpdateManager.UpdateAll must be called first. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) 라는 오류가 발생하는데요. 현재까지 Play를 통해 게임을 실행할때 아무 영향을 주지 않으나, Unity를 처음 실행할때만 발생합니다.