루키스님 책 추천 해주실수있으신가요
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
안녕하세요 루키스님 파트1~9강까지 다 구매하여 지금 이제 파트3보고있는 수강생입니다 학과도 컴공쪽이여서 나중에 게임개발자가 될려고 열심히 공부하고있습니다 따로 책을보고 더 공부를하고싶어서 추천을받고싶은데 자료구조, 알고리즘, 유니티 지금까지 보셨던 책중에 좋았던것들 베스트 추천해주실수있나요😊😊
- C#
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
안녕하세요 루키스님 파트1~9강까지 다 구매하여 지금 이제 파트3보고있는 수강생입니다 학과도 컴공쪽이여서 나중에 게임개발자가 될려고 열심히 공부하고있습니다 따로 책을보고 더 공부를하고싶어서 추천을받고싶은데 자료구조, 알고리즘, 유니티 지금까지 보셨던 책중에 좋았던것들 베스트 추천해주실수있나요😊😊
미해결
[유니티6] 따라하면서 배우는 하이퍼캐주얼게임 시리즈 01
(2D환경을 기준으로 궁금한 점입니다....) 현재 2DPinCirlce, 2DWave까지 학습을 진행하던 중 2D 게임인데 오브젝트를 변경할 때 Transform의 Scale에서 Z까지 변경하고 있습니다. 만약 Z값을 변경하지 않고 0으로 두었을 때 대부분은 영향을 주지 않는 것 같았는데 혹시 Z값의 변경이 2D게임에서도 영향을 주는 경우가 있을까요? 1. 영향을 주지 않는다면 현재 설명하시고 있는 게임에서는 Scale의 Z값을 모두 0이라 두거나 어떤 값으로 두어도 상관이 없게 되나요? 2. 영향을 주는 경우가 있다면 어떤 경우가 있을까요? 구체적인 사례가 있을까요? 도움 부탁드립니다. 감사합니다 ^^
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
지금 3번째 들으면서 지나가는 수강생입니다 진짜 첫 번째 들을 때 두 번째 들을 때 세 번째 들을 때 이해되는 범위가 다릅니다 처음에는 그냥 코드 따라 치면서 완주만 해보세요. 두 번째는 코드의 흐름만 본다는 느낌으로 따라가고, 세 번째는 강의를 눈으로만 보고, 혼자 힘으로 코드를 완성해 보면 확실히 체득이 되는 느낌입니다! 다들 화이팅입니다! 저 같은 말하는 감자도 하는데 여러분도 할 수 있습니다! ps. 루키스님 강의 찍으시랴, 부트캠프 준비하시랴 많이 바쁘실텐데 항상 감사합니다!
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 선생님! 클라이언트에서 온 패킷이 자꾸 이렇게 띄엄띄엄 출력 되는데 왜 그런지 알 수 있을까요?
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
웹서버의 경우 실무에서 docker를 많이 사용하는 것 같은데요, 혹시 소켓 기반 실시간 게임서버개발에도 docker를 많이 사용하는지 궁금합니다!
해결됨
[유니티6] 따라하면서 배우는 하이퍼캐주얼게임 시리즈 01
Pin Circle 게임에서 Reset 버튼을 눌러도 스테이지1로 전환되지 않습니다. 예) 스테이지 3까지 클리어 -> 리셋버튼 클릭-> 시작버튼클릭 -> 스테이지4에서 시작(타겟에 적혀있는 스테이지 숫자만 1) 이미 클리어 될때 씬이동이 일어나기 때문입니다. 리셋버튼을 누른후에, 게임 시작을 누르면 타겟에 적혀있는 숫자는 1로 바뀌지만 스테이지1로 씬 전환이 일어나지는 않습니다. 리셋버튼을 누르면 호출되는 함수에서 Level 1로 씬 이동 해주는 코드를 넣어줘야 할것같습니다. 저는 MainMenuUI.cs 에서 이렇게 수정했습니다. -기존 코드- public void ButtonClickEventReset() { PlayerPrefs.SetInt("StageLevel", 0); } -수정 코드- public void ButtonClickEventReset() { PlayerPrefs.SetInt("StageLevel", 0); int index = PlayerPrefs.GetInt("StageLevel"); SceneManager.LoadScene(index); }
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 항상 좋은 강의 감사합니다. 이 강의를 통해서 포트폴리오를 제작하려고 하고 있습니다. 그런데 이동 관련에서 문제가 생겼습니다. 2D 횡스크롤 처럼만들어서 캐릭터를 이동시키려고 합니다. 캐릭터가 이동할 때마다 패킷을 보내고 있고 상대방에게는 방향과 애니메이션은 잘 전송이 되는데 posX와 posY는 적용이 되지 않습니다. movePacket에는 State, Dir, posX, posY 값이 잘 들어가 있습니다. 서버와 클라간의 패킷값들도 정상적으로 잘 전달이 되어 있습니다. 혹시 유니티 선생님 강의와 다르게 박스콜라이더와, 리지드바디를 적용을 했는데 이것이 이동패킷에 영향을 주기도 하나요..? breakpoint를 계속 찍어가면서 오류발생구간을 찾고 있는데도 값이 매우 잘 들어가 있어서 더 혼란입니다. 어떻게 해결을 해야 하는지 여쭙고 싶습니다..
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 따로 3D 프로젝트를 만들고 서버를 돌려보고 있는데요 디버그 모드로 브레이크 포인트를 잡아서 디버깅하고 싶은데 2 Players 이상으로 실행하게 되면 디버깅을 못하는지 궁금합니다.. 또 질문하는 김에 하나 더 질문하자면 2 Players로 실행을 하게 되면 첫번째로 생성된 창에서는 조명이 있지만 두 번째 실행 창에서는 뭔가 조명이 꺼져 어두워 보이는데 해결방법이 있을까요?
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
우선순위큐 안에 요소를 디버그 모드로 확인해보니 계속 한개의 요소만 있는데 0.25초마다 flushroom이 큐에 들어가고 처리되고 반복이어서 그런건가요? 아니면 flushroom action 만 있어서 복잡하지 않아서 그런건지 잘 모르겠습니다.
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameScene : BaseScene { Coroutine co; protected override void Init() { base.Init(); SceneType = Define.Scene.Game; Managers.UI.ShowSceneUI<UI_Inven>(); co = StartCoroutine("ExplodeAfterSeconds", 4.0f); StartCoroutine("CoStopExplode", 2.0f); } IEnumerable CoStopExplode(float seconds) { Debug.Log("Stop Enter"); yield return new WaitForSeconds(seconds); Debug.Log("Stop Execute!!!"); if (co != null) { StopCoroutine(co); co = null; } } IEnumerator ExplodeAfterSeconds(float seconds) { Debug.Log("Explode Enter"); yield return new WaitForSeconds(seconds); Debug.Log("Explode Excute!!!"); co = null; } public override void Clear() { } } StartCoroutine("CoStopExplode", 2.0f); BreakPoint 를 여기에 잡아서 유니티에 연결해 실행해 보았지만 두번째 StratCoroutine은 실행이 되지 않고 Stop Enter 로그도 찍히지 않고 넘어가 버립니다. 그냥 Explode Excute가 찍혀버리는데 혹시 StaretCoroutine을 중복 사용할 수 없게 업데이트가 된 걸가요?
미해결
C# 입문부터 Xamarin Forms(자마린 폼즈) + Maui(마우이) 안드로이드, 윈도우 앱(UWP) 동시에 만들기
<Image Source="assets/robot.png" HeightRequest="150" Aspect="AspectFit"/> 4:19분 UWP로 실행했을때 robot이미지가 나오지 않습니다. 모바일로 실행했을때 정상작동합니다. Assets폴더아래에 robot.png가 있는 상태입니다. 안되는 이유가 뭘까요
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
안녕하세요! 항상 좋은 강의 잘 보고 있습니다!! 버그 수정에 대해 궁금한게 있습니다 게임을 만들던 도중에 unityChan이 바닥을 향해 달려가는 버그가 발생해서 하루 종일 디버깅 해보고 오류를 수정하려고 했지만 결국 원인을 찾지 못하고, 처음 부터 다시 했더니 진짜 갑자기 됐습니다,, 근데 저는 아직도 그때 왜 버그가 났는지 이유를 모르겠습니다,, 그래서 제가 궁금한것은 게임을 만드시는 분들도 다들 이렇게 버그의 원인을 찾지 못하는 경우가 많나요? 저는 버그의 원인을 잘 찾지 못하는것 같은데,,, 다른 분들은 어떻게 하시나요?
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
강의와는 상관 없는 질문일수도 있는데... c# 알고리즘 파트 부분이 어려워서 이해가 완벽히 되지가 않는데요 ㅠㅠ 다음 유니티 엔진 파트에 들어가기 전에 완벽하게 이해하고, 그 다음에 넘어가는 것과 일단 대충 이해하며 넘어가고 유니티 엔진 파트를 들은 후 돌아오는 것 중에 강사님은 무엇을 추천하시나요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
session#3 까지는 어찌어찌 따라온것같은데 #4에서 어질어질 해졌습니다. 그냥 이해는 못하고 따라 치고 있습니다..ㅠ 이럴 때는 그냥 끝까지 듣고 복습하는게 좋을까요? 이금 복습하고(처음부터?) 이해하고 다음 수업을 듣는게 좋을까요?? (_ㅇ_)
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
복학 전에 개인 작업으로 FPS게임서버를 만들고 있습니다. 구현된 것들: - 신규 유저 접속 시 기존 유저 데이터 전송, 기존 유저에게 신규 유저 스폰 전송 - 키보드 입력(Vertical, Horizontal)을 하나의 Vector3에 저장하여 이전 값과 다를 경우 패킷을 전송 ( 데드레커닝이 맞는진 모르겠음) - 카메라 회전 값을 각 클라이언트에서 0.25초 단위로 동기화 패킷 전송 ( 회전값은 서버에서 검증이 필요없을 거라 생각해서 검증 없이 Echo ) 위에 적은 대로 위의 기능은 문제없이 잘 작동하지만 이동 동기화에 대해서 문제가 심각합니다.... 데드레커닝처럼 이전값과 다를 때만 패킷을 보내는데, 상대 클라이언트는 회전값 동기화가 0.25 + (내RTT/2 + 상대RTT/2)이상이라 이동패킷이 더 빠르게 가버리면 위치값에 대한 데이터 일관성이 깨집니다. 그래서 추가로 1초 단위로 현재 위치를 서버에 전송합니다. 서버는 새로운 위치값을 받고 자신이 갖고 있던 해당 플레이어의 위치값 ( 서버 내에서도 이동방향, 회전값, RTT/2, 오차범위를 기준으로 위치값을 0.25초 단위로 업데이트함) 과 비교하여 이 값이 정상적인 데이터인지 검증합니다. 만약 결과가 정상적이라면 Broadcast, 비정상적이라면 Leave로 구현했습니다. 그런데 문제는 서버에서 검증하는 시간 + 내 RTT / 2 + 상대 RTT / 2 차이 때문에 데드레커닝으로 예측하더라도 계속 이전 위치로 돌아가는 현상이 발생했습니다. 데드레커닝을 포기하자니 너무 느린 반응때문에 FPS에 적합하지 않은 것 같고, 서버 검증을 포기하자니 에디터에 Inspector에서 위치 이동만 해도 핵처럼 보였습니다. FPS에서는 검증을 어떻게 하는게 맞을까요?
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
강의 내용중 8:23에 말씀하시는 2의 보수의 장점중에 첫번째 말씀하신 " 0 이 두번 나오지 않고 한번만 나온다 "는 말씀이 잘 이해가 가지 않습니다. 조금만더 상세 설명 가능 하실까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요 이동패킷 동기화 관련해서 여쭤볼려고 합니다. 다른 사람들 질문에 답하신것 처럼 이동패킷은 보통 1초에 4번 보낸다 라고 되어 있더라구요. 여기서 4번 보낸다 라는 뜻은 4강 서버 강의 후반에서 배운것처럼 Server에서 JobTimer에 pendingList에 250ms 만큼 모아놓고 그리고 보낸다라는 뜻인가요?? 즉 Client에서는 키 입력을 받게 되면 실시간으로 Server에 보내지만 반면에 Server쪽에서는 같은 방 안에 있는 다른 플레이어한테 BroadCast를 실시간으로 해주는게 아닌 0.250초 만큼 쌓아 놓은 패킷을 모아서 보낸다는 뜻인가요?? 또는 클라이언트에서 아예 0.250초마다 보낸다는 뜻인지 잘 모르겠어요...
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
온라인 게임을 하다보면 pc의 성능이 안좋거나 인터넷 환경이 불안정한 경우 렉이 걸려 해당 유저의 캐릭터가 멈추는 경우를 봤습니다. 이는 아마도 서버와 패킷을 전송하는 과정에서 pc성능의 문제로 패킷을 소화하지 못하거나 인터넷이 끊겨 패킷을 제때 전달받지 못해서 발생하는 문제라고 생각합니다. 그렇다면 반대의 경우 pc 성능이나 인터넷 환경이 타유저에 비해 압도적으로 뛰어난 경우는 타 유저에 비해 보다 많은 패킷을 주고 받을 수 있을 거라 생각합니다. 그럴 경우 타인보다 더 많은 이동, 공격을 하는 등 유저 간 벨런스에 문제가 생길 것 같고 그를 방지하기 위해 패킷 전송에 있어 일종의 상한선을 걸어야 하지 않을까 라는 생각을 합니다. 마치 프레임 제한을 거는 것처럼요. 이게 맞다면 제 개인적인 판단으로는 그러한 한 번에 전송할 수 있는 패킷의 양, 전송대기 시간 등을 클라이언트 쪽에서 제한하는 쪽으로 코드를 짜야하는 게 맞다고 생각이 드는데 이런 부분을 클라쪽에서 관리를 해야할까요? 아니면 서버 쪽에서 관리를 해줘야 할까요? -- 번외의 질문입니다. 롤의 경우 렉이 걸리는 유저는 혼자 렉이 걸리고 심할 경우 게임에서 나가지는 식인 반면에 닌텐도의 슈퍼마리오메이커2는 유저대전에서 한 명이 렉이 걸리면 전원이 렉이 걸리는 방식으로 알고 있습니다. 게임을 개발하는 개발자로서 마리오 방식보다는 롤의 방식이 유저에게 좀 더 긍정적인 평가를 받을 수 있을 거라 생각하는데 게임사 측에서 마리오 방식을 택하는 이유가 있을까요? 늘 좋은 강의 감사합니다.^^
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
며칠째 여러방법으로 시도를 해보아도 안되는 부분이 많습니다..ㅠㅠㅠ 혼자 간단한 3D게임을 만들면서 공부중입니다. 접속하는 부분까지는 잘 됩니다. Protocol 에서는 Pox. Poy, Poz를 float로 변경한 후 조이스틱 입력을 받을 boolean을 추가해줬습니다. 이후 클라 프로젝트 쪽에서 UI_button이라는 스크립트 파일을 만들어서 UI_Base의 BindEvent를 통하여 조이스틱을 조작하여 조이스틱의 Vector2의 값을 MyPlayercontroller의 SetMyPlayerMoveDir이라는 프로퍼티로 set안에서 설정후 get부분에서는 Vector3의 값을 내벝어 주게 하였습니다. 그리고 나서 isInputJoyStick이 true일 경우 이렇게 State를 변경해 주었고 UpdateMoving일 경우에는 IsInputJoyStick이 false일 경우 State를 변경하도록 하였습니다. Move함수의 인자로는 아까 MyPlayerController의 프로퍼티인 SetMyPlayerMove을 받아서 transform.forward랑 포지션을 움지기게 한뒤, movePacket을 만들어서 PosInfo를 Send 해주는데 동기화가 안됩니다. 현재 서버의 로그를 보면 서버를 킨 후 클라에서 조이스틱을 클릭하고 이리저리 움직이면 최초의 드래그 한 값만이 이런식으로 계속 보내 지는거같습니다. 가령 같은 값으로 패킷을 보낸다고해도 다른클라에서는 제 플레이어를 봤을 때 뚝뚝 끊기는것 처럼 보여야 하는데 접속만 되고 동기화가 통 되질 않습니다..
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI 자동화 #1 강의를 보다 Bind() 함수가 이해가 잘 안되어서 질문드립니다. enum ‘Buttons’는 Button을 컴포넌트로 가진 GameObject들의 목록이다. Bind()는 이 Buttons의 Type를 넘겨받아서 Dictionary ‘_objects’에 Key: 해당 컴포넌트 종류 Value: 해당 컴포넌트를 가진 GameObject들의 배열 형태로 맵핑해준다. Bind()는 나의 자식들 중, 해당 컴포넌트를 가진 GameObject들을 찾아주는 역할을 한다. 라고 이해하면 되는 걸까요?