묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
강의 커리큘럼 질문 드립니다
안녕하세요강의 커리큘럼에 대해 알고 싶은 게 있어 질문 드립니다 저는 현직 웹개발자인데1인 방치형 rpg 게임을 만들고 싶어서작년에 M1+C1 강의를 구매했다가 다시 듣기 시작했습니다 그런데 학습 전 수강평을 살펴보는데 M1 강의가 무산됐다는 글이 많더라구요그래서 무산된 프로젝트를 참고하는 것보단 완성된 프로젝트를 참고하고 싶어서컨셉이 MMO RPG라서 구매를 하지 않았던 M2 강의를 구매했습니다 그런데 이 프로젝트도 제 기억엔 작년 하반기나 올해 상반기쯤 마감 예정이었던 듯한데마지막 업로드가 얼마 전인 12월 17일이더라구요 그래서 강의 시작 전 조금 더 확신을 갖고 싶어서 질문 드리고 싶습니다바쁘시겠지만 긴 답변을 원하는 게 아닌 만큼 강사님의 직접 답변을 부탁드립니다 강의 구매목록M1 + C1M2C# 개발시리즈 part1(C# 기초)C# 개발시리즈 part3(유니티 엔진)C# 개발시리즈 part4(게임서버)C# 개발시리즈 part7(Unity + C# 서버 연동 기초) 현재 언어는 다르지만 개념이 겹치는 걸 제외하고 위 강의들을 구매하였고 따로 unity 에셋 정도를 구매한 상태인데강의 금액도 금액이고 제가 이 강의를 수강하려면 적지 않은 시간이 들 거 같아서시작 전 강사님의 시선에서 제 학습 방향이 가능한 것인지 답변을 들어보고 싶습니다 질문 1위 강의들을 완강하고 기획과 아트 리소스를 변경할 수 있게 되면게임을 출시할 수 있을 정도의 완성 구조 소스코드를 제공받을 수 있는 것 맞을까요? 질문 2unity 에셋스토어에서 캐릭터 등의 리소스를 구매하여 사용하려는데가능할지 여부와 만약 그렇게 할 경우 주의 또는 참고해야 될 사항이 있을지 궁금합니다
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
수업질문은 아닌데요^^
켠출 수강생 리뷰 이벤트] M1, M2, D1→ 여기에 이메일 주소 남겼는데 한번 확인해주시면 감사드리겠습니다^^ rookiss@naver.com 여기로도 보내드렸습니다^^ 감사합니다!
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
선 이동과 히트 판정에 대해 질문 드립니다.
안녕하세요. 루키스님!M2 코드를 분석하면서, 약간 다른 게임을 (브롤스타즈같은 모바일 탑뷰 슈팅게임) 만들고 있습니다.선 이동으로 구현하고 있는데, 서버 판정 이후 해결되지 않는 부분이 있어 질문 드립니다. 현재까지 구현한건 키보드 기반 간단한 이동 동기화 입니다. 이동 방법은 키보드나 조이스틱 기반의 선 이동으로 구현하려 합니다.지금 이동 코드는 루키스님 질의응답과 해외 커뮤 글을 토대로 아래 방식으로 구현 했습니다.0.1초마다 동기화를 시도함키보드 입력이 있으면 desirePos를 그 방향으로 0.1초동안 갈 수 있는 pos 를 찍음클라 판단으로 갈 수 있는 곳(벽X, 장애물 X) 이면 destPos를 갱신서버로 전송서버에서 정당한 이동 요청인지 판정맞으면 브로드캐스트각 클라에서 이동 패킷 수신 후 캐릭터 갱신 여기까지 하면 어느정도 자연스럽게 작동은 합니다.하지만 이동을 보낸 클라 입장에서 서버로 부터 받은 판정을 적용하는 부분에 어려운 부분이 있습니다.아무래도 선 이동이 예측 이동 후 보정이라 네트워크 지연으로 예측과 판정이 너무 많이 틀어지는 경우가 있을 것 같습니다.예를들어, 클라에서 단순 우측으로만 움직인다고 가정하고, x 축으로 10 -> 11 -> 12 -> 13 선 이동을 했다는 가정으로 시작하겠습니다.네트워크 지연으로 13에 도달했을 때 서버에서 10 이동 동기화가 왔다면, 선 이동 클라는 10으로 튕겨 버립니다. 그 후 방향을 바꿔 왼쪽으로 움직이면 10 -> 9 -> 8 -> 7 로 먼저 움직이겠지만, 이미 서버로 보낸 이동 좌표로 인해 11, 12, 13이 또 오기 때문에 캐릭터는 퉁퉁 튀면서 움직이지 못하는 상태가 될 것 같습니다.또한, 다른 클라에서 공격을 해도 히트 판정이 다 꼬여 게임이 이상해질 것 같습니다. 이 문제를 해결하기 위해 고민해보니, 클라에서 선 이동 버퍼(기록)을 둔다고 합니다.이 버퍼는 아래 문제가 생겼을 때 서버 판정을 다시 replay 하고, 서버 판정을 완료하면 다시 저장된 선 이동 버퍼를 replay 해 클라에서 너무 앞서나가지 않도록 하더라구요.선이동 버퍼의 index와 서버 판정의 index가 n 이상 벌어지면, 서버 판정 index의 pos 로 플레이어 위치를 되돌리고 클라 선 이동 판정을 다시 실행시킴. 서버 판정으로 이동할 수 없는 pos 라면, 해당 pos 로 되돌리고 그 그 이후 선 이동 버퍼를 replay 여기서부터 질문입니다만,이런 방법이 쓰이는 이유는 게임 전체의 공정성 때문 일까요?네트워크 문제가 있는 일부 클라는 계속 롤백되는 경험을 하지만, 다른 유저들은 서버에서 허가한 상태만 보니까요.보통 선 이동 버퍼와 서버 판정은 어느정도로 갭을 두나요?0.1초마다 동기화 한다고 가정 하고 이동 패킷은 ++1 인 정수형 인덱스로 구분한다고 했을 때, 저는 한 4 정도로 생각했습니다.선 이동과 서버 판정이 약 0.4초이상 벌어지면 롤백하고 다시 동기화 한다 입니다.히트 판정의 경우 클라들, 서버가 같은 ticktime을 공유하고 있고 서버에서 내려준 히트 시작 시간을 보내주면, 클라에서 timejob queue에 넣어두었다가 해당 시간이 되면 애니메이션을 시작하면 되지 않을까? 라는 생각 입니다.고민을 많이 해보았는데, 이 이상 생각이 안되어 질문 드립니다.바쁘시겠지만 답변 주시면 감사히 학습에 사용하겠습니다.
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
Job Scheduler - Cache locality
Hello, games are known from deep performance optimizations that going to thinking about getting data alligned in cache lines. Does Job Scheduler isnt killing it? Isnt this days more like One room = one thread and everything is flaten to array of structs / structs of arrays without lambdas, linq and events? Isnt context switching adding pauses even if there is no allocs because of locks?
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
MMO 3D 게임 서버의 스킬 판정을 어떻게 하면 좋을까요?
3D MMO 중에서 소수점 단위로 이동하고 모든 방향을 바라볼 수 있는 게임은 스킬 판정을 어떻게 하면 좋을까요?어려운 점은 모든 방향을 볼 수 있는 캐릭가 스킬을 사용하면 스킬 범위는 float 형태로 나와야 한다는 것 인데요.기존 강의에서 배운 맵 좌표는 int로 관리할텐데, 3D 게임은 오브젝트 위치 정보를 float 형태로 관리하기 때문에 이 둘을 동기화 하는 방법을 떠올리는게 어려웠습니다. 루키스님 질의응답과 상상을 통해서 두 가지 방법을 생각해봤습니다.(맵에 높이는 없이 x, y 축만 생각하겠습니다.)첫 번째 방법서버의 맵은 2D 타일 맵(int 좌표)으로 관리하면서 캐릭터는 정밀한 위치(float 좌표)를 가지고 있어, 스킬 히트 판단 시 정밀 판단 로직을 추가한다.아래 그림처럼 회색 캐릭터의 정확한 위치는 캐릭터가 가지고 있으며, 점유하고 있는 셀(분홍색 박스 4개)은 서버 맵에 저장합니다.현재 서버 맵에 (0,0), (1,0), (0,1), (1,1)에는 회색 캐릭터가 (3,2)에는 빨간색 캐릭터가 있습니다. 빨간 캐릭터가 방사형 or 투사체를 발사했을 때 서버는 서버는 서버 맵에서 스킬 효과 범위에 들어갈 것 같은 예상 후보가 있는지 탐색합니다.투사체가 닿는 범위인 (1,0), (2,0), (3,0), (2,1), (3,1) 을 대상으로 예상 후보 탐색예상 후보 셀에 포함된 캐릭터가 있는지 확인하고 해당 캐릭터가 실제 효과 범위에 들어가는지 판단합니다.(1,0) 셀에 회색 캐릭터가 있을 수 있으니 스킬 효과 범위 min < 캐릭터 중심점 기반 히트박스 < 스킬 효과 범위 max 인지 판단두 번째 방법캐릭터가 점유하는 셀을 더 작게 쪼개서 캐릭터 히트 박스나 조이스틱 처럼 살짝 이동할 수도 있고, 전방향 이동에 위화감이 없도록 구현 현업에서는 어떻게 구현하는지 궁금합니다!
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
코드 머지와 관련하여.
안녕하세요.코드가 업데이트되는 부분이 풀버전이 아니고 변경된 부분들이 폴더 단위로 자료가 올라오는것 같습니다. 이에 따라 코드를 병합할때,Merge tool을 사용해야되는 것인지?아니면 동일 폴더별로 복사 갱신을 하는 것인지 궁금하여 질문드립니다.
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
퀘스트 처리 시 궁금한게 있습니다.
서버에서 브로드캐스트 이벤트 발생 시 퀘스트 클리어 확인 후 보상을 지급하고 DB 갱신을 하는 부분까지 이해했습니다. DB쪽에서 보상처리 라던지 퀘스트 상태저장 시 실패할 가능성도 있을 듯한데 만약 실패했다면 서버의 메모리를 이전상태로 롤백해줘야할듯한데 서버 메모리를 이전상태로 변경하려니 코드가 많이 지저분해지는듯한데실패가능성은 없나요?
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
Nagle Algorithm
Is there a reason why its not switch off in socket? Isnt it a problem with mmo servers and we hold packets on our own?
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
현재 강의를 이용하여 3D 게임을 만들 경우 변경되야 될 사항들에 대해 궁금합니다.
안녕하세요. 루키스님 강의를 열심히 듣고 있는 초보개발자입니다. 현재 강의는 2D기반의 게임인데, 맵 및 몬스터, 캐릭터를 3D 케릭터로 변경되면, 현재 개발하신 코드들에서 어떤 부분들이 변경되는지.. 그리고 변경될 사항들이 많은지 궁금증이 생겨 문의드립니다.
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
M2는 업데이트가 끝난건가요?
안녕하세요! M2 업데이트 끝날 때 몰아서 듣고 싶어서 기다리고 있는데공지사항과 일정 변동?을 보면 업데이트가 끝났다는 뉘앙스로 말씀하셨지만본 강의 커리큘럼을 보면 아직 챕터 이름?이 살아 있어서 업데이트가 끝난건지 업데이트 예정인지 궁금합니다!
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
Interpolation & Server Tick Frequency
Hey,I have a question server in main loop dont limit execution time, everything happen withouth deltatime only base on JobSerializer Timer. So in the end we dont really know if server is working with 200 ticks per second or 15. Does this approach isnt affecting player objects latency? Does _lastSendTick = System.Environment.TickCount64; is enough to interpolate beetween player last postion and current? static void GameLogicTask() { while (true) { GameLogic.Instance.Update(); Thread.Sleep(0); } }
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
서버에서 디스커넥트되시는분들 JWT 관련 참고하셔요
루키스님이 말씀하신대로, 서버와 클라이언트의 jwt를 맞춰줘야 합니다. 강의자료에는 서버폴더내 config.json 파일에 secretkey가 없기 때문에 "secretKey": "this is my custom secret key for authentication" 이 줄을 추가해서 넣어주시면 잘 작동되실겁니다. 그리고 게임서버 및 어카운트서버 돌리고 클라 접속하면 잘 됩니다. 개발단계에서만 쓰시고 나중에 키는 다른걸로 바꿔야하겟죠
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
aws 와 microsoft azure 중 aws 선택하신 이유가 궁금합니다.
클라우드 서비스로 aws와 microsoft azure 둘중 비쥬얼 스튜디오랑 호환이 잘되있는 microsoft azure도 괜찮은 선택지일수 있을거같은데, 루키스님이 aws 고르신 이유가 궁금합니다. !
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
강의는 끝인건가요?
강의가 더이상 업로드 안되는 것 같은데끝이 난 건가요? 라이브 및 대응도 보고싶은데 너무 아쉽습니다.
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
아이템 강화 테이블 관련
안녕하세요~ 강의 잘 듣고 있습니다 ㅎㅎdb상에서 각 아이템별로 강화수치가 달라질때마다 인스턴스를 따로 두셨던데만약에 장비 아이템이 많으면 천개까지 늘어날텐데 그때마다 +1, +2 .. +10 까지 관리하기에는 너무 많아서이걸 만약에 인스턴스로 관리하지 않고강화를 해서 능력치가 +될 경우 해당 장비에 +된 강화수치를 메모리상에 저장하는 식으로 바꾸면 어떤 문제가 생길지 궁금합니다 ㅎㅎ
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
강의 관련 질문 드립니다.
섹션 6 결제 까지 올라와 있고 그 이후 날짜에는 강의 파일이 없는데 이후에 추가로 올라오나요?
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
리니지1의 이동 질문
한때 오랫동안 리니지를 즐겼던 유저로써 리니지1의 이동은 어떤식으로 구현되었을까요?리니지에서 이동중에 서버렉이 걸리면 케릭터가 찍은 좌표로 클라의 케릭터는 계속 걸어갑니다.렉이걸린시점부터의 클라시점 밖의 NPC나 몬스터는 표시가 안되고 렉이 풀리면 클라 포지션이 렉이 걸린 시점의 포지션으로 순간이동하는 렉이 있었는데요 통신이 안되도 케릭은 일정타이밍까지는 이동이 됩니다.그러타면 서버에서는 도착좌표만 주고 클라에서 보간처리로 이동을 한다는 말이될것같은데그렇게 따지면 클라의 보간처리로 이동한다면 다른 케릭에의해서 길이 막혔을 때 처리가 안될것 같습니다.지금 프로젝트의 구현과 리니지1의 이동 동기화의 차이점도 궁금합니다.
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
버그에대한 썰
현재 프로젝트를 진행하는 과정에서 버그를 어떻게 발견했으며 문제의 코드를 어떻게 추적했고어떠한식으로 수정했다 그래서 느낀점은 이렇다등의 기억에 남는 버그가 있다면 짧게나마 썰을 풀어주시면 그것또한 큰 도움이 될것같아서 제안드립니다 ^^;
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
포탈 프로젝트에 서버 코드에 에러가 뜨네요
포탈 프로젝트에 ELeavType이 없다고 에러가 뜨는데 어떻게 하면 되나요?
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
아이템 수량에 관해서 질문입니다.
DB에서 겹쳐지는 아이템 하나의 컬럼에 수량 1000개를 그대로 저장하고 클라에게 1000개 그대로 보내서 1000개를 50개씩 20개로 쪼게는 부분은 클라딴에서 처리하는 방식은 안되는건가요?