[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)
안녕하세요. 강의 정말 잘 듣고있습니다. DB연동 부분에서 궁금한 점이 있어서 질문드립니다. 네트워크는 사용하지 않고, DB만 사용하는 게임을 만드려고 합니다. Connector로 Server와 Client를 연결하고, Session을 두고 Packet 을 보내는 작업이 꼭 들어가야 하나요? EFCore를 사용하려면 꼭 해야 하는 부분일까요?
C#개발을 주로 개발하는 개발자입니다. C#만가지고는 안될 것 같아서 C++을 공부하고있는데 함수나 변수 뒤에 . 찍어서 어떤 기능이 있는지 보여주는 인스펙터 기능이 C#에 비해 너무 불편해서 혹시 편리한 어떤게 있는지 궁굼해서 문의 드렸습니다. ㅠ ;빠진 부분도 오류가 안나와서 함참찾아야하는게 너무힘들어요 ㅠ .찍어도 나올 때도 있고 안나올때도있고 ㅠ 어렵습니다.!
안녕하세요 강사님! 강사님의 수업을 듣고 서버를 넣은 개인 포폴을 제작 중인 학생입니다 서버와 클라이언트 연결문제가 있어서 질문드리고 싶은게 있습니다 같은 공간에서의 서버와 클라 연결에서는 문제가 없습니다 하지만 다른 공간에서 연결이 되지않는 문제가 있습니다 기본 게이트웨이가 다르면 연결이 되지 않는것 같아요 그래서 하마치 같은 프로그램을 사용하면 연결이 됩니다.. 이런 문제는 라우팅이 안돼서 발생하는 문제인가요? 제가 수업에서 놓친부분이 있는건지.. 이런 문제는 어떻게 해결할 수 있을까요?
안녕하세요, 비동기, 논블록 환경의 IOCP 서버를 구현하고 있습니다. 문제는 AcceptEx, ConnectEx 호출 후 GetQueudCompletionStatus 를 호출하면 정상적으로 TRUE 의 값이 출력됩니다. 하지만 서버에서 AcceptEx 를 호출하고, 완료 통보를 받았다면 서버가 클라이언트 소켓을 받아야 하는데 정상적으로 처리 되지 않는거 같습니다. 위 문제에 대한 코드에서 어떻게 해결 방안을 받거나 선생님의 도움을 받을 수 있을까요? 왜냐하면 AcceptEx -> GetQueudCompletionStatus -> setsockopt 에서 AcceptEx 에 들어오는 소켓의 옵션을 설정해 주어야 한다고 마이크로 소프트 공식 문서에 써져 있는 것을 확인했습니다. 하지만 옵션을 바꿔주기 전에 accept 소켓이 연결되어야 하는 상태인데 WSAENOTCONN 의 오류를 반환 받았습니다. 하단 링크는 구글 드라이브 공유 링크입니다. 문제가 있는 솔루션입니다. 참고한 문서들은, 소켓 오류 : https://learn.microsoft.com/ko-kr/windows/win32/winsock/windows-sockets-error-codes-2 Github C 로 구현한 IOCP 비동기 논블록 서버 : https://github.com/YDYDWang/libiocpsocket/blob/master/sock.c#L335 기본적인 IOCP 내용 블로그 : https://narakit.tistory.com/m/category/Computer%20Science%20%EA%B8%B0%EB%B3%B8%20%EC%A7%80%EC%8B%9D/%EC%86%8C%EC%BC%93%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D AccpetEx 에 대한 마이크로 공식문서 : https://learn.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-acceptex Link : https://drive.google.com/file/d/1s8na3xe-o5nPPb8W6xuLMdl27XRfNChQ/view?usp=drive_link 감사합니다 :)
왜 오류가 발생하는지 이해가 가질 않습니다. GameServer.cpp에서 db내용 넣는부분과 추출하는부분만 확인하려고 return 0; 을해서 바로 빠져나왔는데요 DBConnectionPool이 소멸되는 시점에 Clear 해주는데 이때 WRITE_LOCK을잡으려하는데 Lock이 없어지는 거같습니다 코드 그대로 복사해봐도 동일한 오류가 나오는데 이유가 있을까요? main에서 return을 중간에해서 종료하는건 지금만든 서버 에서는 할필요가 없을거 같긴한데요 찝찝한 느낌이 있어서 질문 드립니다..
main쪽 ready=false로 둔 상태에서 t1을 먼저 만드는데, t1이 생성된 후 t2가 만들어지기전에 ready를 true로 하지말아줘 이런 목적일까요?? 쓰레드 생성 후 ready = true를 무시하고 바로 ready에 true를 넣으면 어떤문제가 발생하는 걸까요?
안녕하세요, 좋은 강의 만들어주셔서 큰 도움이 되고 있습니다. WSAECONNRESET의 경우 클라이언트 쪽에서 강제로 연결을 종료했을 때 발생하는 것 같은데, WSACONNABORTED는 언제 발생하는 것인가요? MS 도큐먼트나 구글을 열심히 뒤져도 설명만으로 잘 이해가 안되서 질문드립니다.
안녕하세요 루키스님 질문 게시판을 보다가 루키스님이 주말마다 클라이언트 연동 강의를 진행하고 계시고 마무리 단계라는 글을 봤습니다. 강의 출시 예정이 6개월~1년 텀을 두고 오픈한다고 하셨는데 혹시 더 빠르게 출시하실 생각은 없으신가요?ㅠㅠㅠ 대학교 졸업 작품을 언리얼을 사용해서 작업하기로 했는데 서버랑 연동하는게 생각보다 어려워서요. 그리고 루키스님 강의에 유니티 서버 연동강의가 있는데 그걸 봐도 언리얼에서 연동을 어느 정도 작업을 할 수가 있을까요?
디버깅을 해보니 GameSession.cpp의 전역으로 선언한 GSessionManager가 가생성 될때 Set<GameSessionRef> _sessions; 멤버 변수로 선언한 STL Allocator 의 Set을 만들어야 하는데 코어 글로벌이 아직 만들어지지 않은 상태 같습니다. 제 생각으론 코어 라이브러리 보다 GameServer프로젝트가 먼저 실행되는듯 보입니다.. 이런경우는 처음이라 어떻게 해결해야 하는지 난감하네요...