올려주신 소스코드는 제대로 실행이 되는 코드인가요? 수업들으면서 올려주신 소스코드와 비교하며 보고 있는데 소스코드를 한번 실행해보니 제대로 실행이 되지 않고 개발자도구를 통해 에러를 보니 favicon 관련 에러가 발생하여 해당 파일도 제대로 wwwroot에 넣었습니다. 그런데도 잘 실행이 되지 않아 문의드립니다. 감사합니다.
제가 강의를 놓친걸수도 있는데 질문드려서 죄송합니다. 스포닝풀을 스크립터블 오브젝트로 관리하는데 (M1 에서는 타일맵에 찍어서 관리 했었던걸로 기억합니다) 스크립터블 오브젝트로 Pivot PosX , Pivot PosY 를 어떻게 직관적으로 보고 작업 할수 있나요? 그냥 찍어서 좌표 확인하는건지 아니면 더 편한 방법이 있는건지 궁금해서 질문남겨요
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
루키스님 안녕하세요. 한 달 전에 올린 질문에 추가 질문드립니다. 서버는 C++, 클라이언트는 유니티 조합으로 준비하고 있다는 질문이었고, 루키스님이 답변을 해주셨었습니다. 그 답변 이후로 열심히 C++ 서버 공부하고 있어요. 오늘 들어와서 답변을 다시 살펴보니까, C# 강의에서 들어야 할 강의 중에, C# Part4 게임 서버도 써주셨더라고요. C++ 서버만 듣는 건 부족해서 C# 서버도 들어보라고 하신 걸까요~? 아니면 강의 마지막에 유니티 연동 관련한 부분 때문에 그러신 걸까요~? C++ 서버 강의 너무 좋은데 완강하는데 많은 시간이 걸려서 살짝씩 멘탈이 흔들리지만 다잡으면서 가고 있습니다. 늘 좋은 강의 감사합니다.
이전까진 문제없이 잘 이해하고 코드도 실행되었습니다. 그런데 [ 로비생성] 강의를 보고 따라했더니 오류가 발생했습니다. Unity.Services .Lobbies.LobbyServiceException: lobby code 'BARB6QOAUYDBBMLVUPZQBE' contains an invalid character 'O' (U+004F) at index 6 ---> Unity.Services .Lobbies.Http.HttpException`1[ Unity.Services .Lobbies.Models.ErrorStatus]: (400) HTTP/1.1 400 Bad Request ...생략 ... ... 호스트는 잘 만들어지는데요, 다른 플레이어로 조인하려고 하면 저런 빨강 글씨의 오류가 발생합니다. 인터넷에 찾아보니 외국 포럼만 나오는데요, 버그같기도 하고 그러네요. 제가 고치기 힘들어서요. 혹시 중간강의에서 코드를 통째로 올려주실 수 있나요? 저 오류때문에 코드를 실행하진 못하고, 코드 따라치면서 논리만 이해하는 식으로 공부하고 있습니다. 코드를 실행하면서 게임을 돌려보는 실습까지 해보면 재밌긴 하겠지만요. 강의는 재밌게 잘 보고 있는데, 저 오류가 아쉽네요.
PacketSession OnRecv 마지막부분에 buffer에서 패킷의 사이즈 만큼 자르고 buffer의 사용하지 않은부분은 buffer에 다가 새로 만들어서 넣어주고 있는데요 여기서 저걸 왜 다시 넣어야 하는지 이해가 안갑니다. 왜냐하면 읽은 데이터량만큼 processLen을 증가시켰고 processLen을 반환하면 read커서가 그만큼 증가하게 되고 이부분에서 readPos증가한만큼 new로 새로 만들어서 가져오는데 말이죠.. 굳이 필요가 없을거 같은데 맞나요..?
안녕하세요! 추후에 프로젝트에 유지보수로 참여하는 데 있어서 기존 프로그램에 만든 라이브러리를 using해서 사용한다고해서 라이브러리에 대한 강의 찾다가 아침부터 보고있습니다!! 라이브러리에 대한 굉장히 유용한 부분을 많이 배우고 갑니다. 또한, 개인적으로라도 라이브러리는 추후 코딩하는데 도움될만한 메서드는 만들어놓으면 도움이 될 것 같다는 생각을 많이 하게되었네요! 좋은 강의 감사합니다.
가장 기초적인 부분을...몰랐네요 가끔 원하는 것처럼 이벤트가 작동하지 않을 때가 있었는데,,, 그게 routing 시키는 걸 e.Handled를 true로 처리하면 된다는 것을 알았습니다. C# 의 WPF의 이벤트는 복잡하네요.. Vue 같아요..;;; MVVM패턴으로도 알려준 이벤트에 대한 특성은 참고해서 작업하면 되는걸까요?
ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
HomeController.cs 에서 LoginController.cs 확장하고 NewUser 도 분리할때 발견 한건데요...한참 헤맸네요... LoginController -> LoginContloller 즉 Controller 스펠링은 규칙 정의된 용어 인가요? 이게 다르면 404notfound 뜨더라고요 어차피 상속 받았고 클래스 이름 같으면 되는거 아닌가 했는데... Views 폴더도 마찬가지인지....그 안에 폴더 이름을 Home이 아닌 hom 으로 사용하고 진행할 경우 인지가 안되나요? 몬가 절대 변경되면 안되는 것들이 있는것 같아서요 그리고 ASP.NET CORE 웹 서버 개발하면 디버깅 노하우 강의도 해주셧으면 좋겠어요....이게 웹으로 넘어오니 디버깅이 쉽지 않네요 ㅋㅋㅋ
class SpinLock { volatile int _locked = 0; private readonly object _lock = new object(); public void Acquire() { while (true) { //int original = Interlocked.Exchange(ref _locked, 1); //if (original == 0) // break; // CAS : Compare-And-Swap //int original = Interlocked.CompareExchange(ref _locked, 1, 0); //if (original == 0) // break; //int expected = 0; //int desired = 1; //if (Interlocked.CompareExchange(ref _locked, desired, expected) == expected) // break; lock (_lock) { if (_locked == 0) { _locked = 1; break; } } } } DeadLock 시간에 배웠던 lock 방식을 이용해서 작성해봤는데 출력 값은 0이 잘 나옵니다. Q. SpinLock 구현할 때 InterLock 계열의 메서드를 사용해 구현한 것과 lock을 이용해 구현한 것은 어떤 차이가 있는지 궁금합니다. 강사님께서는 InterLock 을 통해 구현하셨는데 그 이유는 간단하게 사용할 수 있기 때문인가요?? SpinLock / BackOff Lock / Assisted Lock 이런 것을 구현할 때 위와 같이 lock 을 써서 구현하는 것은 구조적으로 잘못된 것인가요?? 제가 이해한 것은 Lock 방식과 InterLock 방식은 하드웨어의 Instruction을 원자적으로 처리하기 위해 프로그래머가 C++/C# 같은 언어로 시키기 위한 방법인 것 같은데 이해를 똑바로 한 것인지 궁금합니다.
안녕하세요. C# WPF 학습 중인 사람입니다. 다름 아닌, 기존 MainWindow.xaml를 만든 Views 폴더에 넣고 App.xaml의 startupUri에서 Views/ 폴더 경로만 추가해주었는데요. 정상적으로 작성되는 것을 확인했습니다. 해당 프로젝트명을 변경했다면, Views/ 변경한 View.xaml 로 설정해주면 되는 걸까요? 추가적으로 주의할 점이 있다면 무엇이 있을까요?
이러한 이슈가 발생해 찾은 결과 Monster Script의 37번 째 줄인 FindClosetTarget 함수에서 타겟을 찾지 못해 NPR이 발생한 내용으로 확인되었는데 Spawner에 Players를 넣어주어 플레이어인 Cleric과 Barbarian이 잡히나, 간헐적으로 Null을 return 해주는 현상이 발생하는데, 이게 Update 문 안에서 실행되어 FindClosetTarget 구문이 매우 빠른 속도로 실행되어 발생한 시점 문제인지 궁금합니다. 현재 강사분과 코드는 동일한 것으로 확인됩니다.
안녕하세요. 강의를 마지막까지 공부하고, 에디터에서 실행할시에 잘 동작 함을 확인 했습니다. 그런데, 안드로이드 빌드를 해보면 빌드 실패도 하지 않습니다. 생성된 APK 를 핸드폰에도 넣어보고, 녹스플레이어, 블루 스택에서 넣어서 실행해보면 파란 에디터에서 보이는 최초 파란 화면만 뜨고, 게임씬이 동작 하지 않고 있습니다. 혹시나 해서, UI_TextMeshPro 에서Text 를 넣고, 테스트하던중 에디터 실행할때는 bbb 가 출력되고, 게임도 잘 돌아가는데, 안드로이드 플레이어나, 모바일 기기에서는 aaa 까지만 출력되고 다음줄이 실행 되지 않습니다. 비동기를 디버그 해보려고 노력했는데, 에디터에서는 오류가 나지 않고, F11 눌러서 한단계씩 들어가다보면 "모듈에 프레임 없음" 페이지가 나오고, 어드레서블에 있는 목록이 Resource 에 채워지는 것을 확인 하기가 어렵습니다. 비동기 이후에는 Resource 에 22개 딕셔너리가 채워진것을 확인 가능하긴 하더군요. 해결이 몇일째 안되고 있는데, 도움 부탁드립니다. public TextMeshProUGUI textComponent; // Start is called before the first frame update void Start() { textComponent.text = "aaa"; // "F:\p4v\TangTang\Assets\Scripts\Scenes\GameScene.cs" Managers.Resource.LoadAllAsync<Object>("PreLoad", (key, count, totalCount) => { Debug.Log($"로딩바 추가 {key}, {count}/{totalCount}"); if (count == totalCount) { textComponent.text = "bbb"; // Debug.Log("test"); // StartLoaded(); } }); }
루키스님 안녕하세요? 소켓 함수쪽에서 동기방식과 비동기방식의 장단점을 고찰하고 있습니다. 이번 강의에서 Listen쪽을 동기 -> 비동기로 전환하면서 논블로킹 성질로 인해 어느 누군가의 입장 지연 등을 기다려도 않아도 되므로 그런 부분에서 이점이 있다. 이렇게 이해를 하였는데요, 입장자 별로 스레드를 부여하여 동기적으로 입장시킴. 단, 너무 지연이 되면 해당 스레드는 종료 등으로 처리. 이런 식으로 동기적 방법을 고수하면 콜백 함수 없어도 되니까 코드 복잡도도 줄고 컨텍스트 스위칭도 덜 일어나지 않을까? 라는 생각을 하게 되었습니다. 그러므로 동기적으로 소켓 함수를 계속 사용하는 것은 잘못된 생각인지, 아니면 비동기 동기가 각각 장단점이 있는 방식인지 루키스님 조언 얻으려고 질문 드립니다. 답변 미리 감사합니다. +수정 이 내용과 같은 맥락일까요? 그렇다면 Listen과 Accept는 동기, Send와 Receive는 비동기로 처리 이런 방식은 어떤지 고민도 되고 하네요 https://www.inflearn.com/community/questions/140160/%EA%B5%B3%EC%9D%B4-%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9D%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0
LobbyUIController = FindObjectOfType<LobbyUIController>(); 강의대로 위의 코드로 진행하는 과정에서 오류가 있어서.. LobbyUIController = FindFirstObjectByType<LobbyUIController>(); 이렇게 수정하라고 나오는데, 이 때문인지 로비 쪽의 Scene을 로드하면 Log에서 아래와 같이 Error가 찍힙니다. NullReferenceException: Object reference not set to an instance of an object LobbyManager.Start () (at Assets/Scripts/Lobby/LobbyManager.cs:23)