묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Socket의 Disconnect 해주는 부분에 대해 궁금합니다.
강의들이나 블로그를 보아도 소켓의 연결을 유지해주는 경우는 Receive 부분이나 Send 부분에서 ByteTransferred <= 0 이거나 SocketError != SocketError.Success가 아닐 경우에 Disconnect를 하게 되어있는데 온라인 서버에서는 원래 이렇게 구성을 해주는건가요?이 경우엔 계속 패킷을 보내고 받지 않으면 연결이 끊기는거같아서 ..
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Send처럼 동시다발적으로 Recv가 발생할 경우 생기는 문제점에 대해 궁금합니다
Session#2 내용까지 보고 질문드립니다.Send 요청이 동시 다발적으로 발생할 경우 send 순서, 처리가 완료 되기 전 buffer를 건드리는 문제, sendAysnc의 동시다발적 발생으로 인한 부하 문제로 Queue를 사용하여 처리를 한다고 이해를 하였습니다 이런 경우를 Receive 쪽에서도 생각해볼 때 한 클라이언트에서 동시 다발적으로 send를 보낸다면 어쨌든 OnCompleteReceive릉 통해 처리될 것이고 그럼 그 요청만큼 다시 RegisterReceive가 실행이 될 것이라고 생각하고 있습니다. 그렇다면 또 그 요청만큼 recvAysnc가 실행될 것으로 예상되는데 이때는 sendAysnc가 동시 다발적으로 실행되는 것과 같이 생기는 부하 문제, 혹은 야기되는 다른 문제점은 없을까요?아니면 비동기로 받아주는게 많은 만큼 recv가 쉬워진다던가..
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
소환 위치
안녕하세요 선생님 혹시 나중에 한 자리에같은 속성끼리 3마리 씩 소환예정인가요??아니면 한자리에 한마리만 스폰가능하나요
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-07 별아이템을 bool[] 로 한 이유가 궁금해요.
star 아이템을 획득했을 경우,단 하나의 아이템이라면 star를 획득했는지 여부로, 무언가를 할 지 여부를 결정할 수 있을 것 같은데...bool 값을 배열형태로 갖고 있어서어떤 방식으로 이것을 활용할 건지 저는 상상이 잘 안되요.그래서 강사님께서 의도하신 용도를 알고 싶어요.
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-05 플레이어 원거리공격. 혹시 저처럼 공이 빨리 사라지는 경우
혹시 저처럼 공이 빨리 사라지는 경우가 있는 분들을 위해 글을 남깁니다.공을 생성해서 던질때, 공이 지면과 충돌하면서(공이 수평으로 이동하는 것이 아니라, 대각선으로 이동하면서 충돌)약간의 x방향 속도가 줄어들 수 있습니다.아마도 그런 이유 때문인지, 제가 실습해보니, 지면에 닿자마자 공 오브젝트가 모두 사라집니다.그래서 다음 코드를 이렇게 고쳤어요.void Update(){ if ( movement.IsGrounded ) movement.Jump(); if( Mathf.Abs(movement.Velocity.x) < (originSpeed - some)){ Destroy(gameObject); } }movement.Velocity.x < originSpeed 대신에,originSpeed에서 약간의 값을 빼주는 식으로 했습니다.시험해 보니 0.1f 만 빼줘도 되더라구요.some 대신에 직접적으로 0.1f를 넣으시면 됩니다.
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-02 플레이어 체력에서 if(current >1)을 if(current > 0) 로...
해야 될 것 같아요.그래야 체력이 0으로 떨어질 수 있고,지금 상태에서는 current가 1일 때 사망처리가 되어 버리는 문제..
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
프로젝트 배포 질문있습니다
안녕하세요20강의 마지막 부분에서 배포 부분에서 궁금한 점이 있어서 질문드립니다. 강의 중 20강 26:34 에서 "공유기가 아닌 랜선을 바로 여러분들의 컴퓨터하고 연결을 한다면 공인 ip를 통해 외부에서 여러분들이 생성한 사이트에 접속이 가능" 이라는 설명이 있습니다.무선 네트워크 환경(공유기 or 핫스팟 등)에서는 배포가 불가능한가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
2분 40초쯤 질문있습니다
SetCanvas함수를 왜 UI_Popup과 UI_Scene에서 호출해야되는지 이해가 되질않네요
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
03-01 Hidden Tilmap에서
StartCoroutine(FadeEffect.Fade(tilemap, tilemap.color.a, 0, tilemap.color.a)); HiddenArea.cs에서 이렇게 작성하셨는데,마지막 인자 값이 tilemap.color.a는 삭제해야 될 것 같습니다.그 위치는 fadeTime 위치이고 디폴트로 1로 해 놨었어요.제 생각이 맞나요?
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
리얼타임 데이터베이스 정렬보기 같은게 있을까요?
파이어베이스 리얼타임 데이터베이스에USER 하위 항목으로 저장된 내용들을 보니까제가 저장에 쓰이게 했던 변수들의 순서 나열과 다르게변수이름 시작부분 a~z 순으로 데이터가 저장되는것 같더라구요.....예를들어 제가 변수를public int zzz;public int ccc;public int aaa;이렇게 코드를 쳤다면........파이어베이스 데이터 쪽에는 (USER 하위에)public int aaa;public int ccc;public int zzz;로.... 제가 코드로 순서 맞춰 쓴 변수와 다르게a순부터 z 순까지 자동정렬 되더라구용;;이거 그냥 a~z순 말고 제가 쓴 변수 순서대로 정렬되서저장되게 하는법이 있을까요??
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-04 점프발판 Animation 뷰에서 이미지 나오게 하는 방법이 궁금해요.
제 유니티에서는 이미지가 안보이고, 점으로만 표시가 되요.그래서 챗지피티에게 물어봐도 마땅한 답을 잘 못찾겠어요.스크롤로 확대를 최대한 해도 이미지가 안보여요.무슨 방법 있을까요?
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-03 추락하는 발판에서 isKinematic = true;로 하면, 중력영향 안받으니
내용이 너무 좋은 것 같아서 즐겁게 배우고 있다는 이야기부터 전합니다. rb.isKinematic = true; rb.velocity = Vector2.zero; // 사실상 불필요?. 위에서처럼 rb.velocity 값을 Vector2.zero로 할 필요가 없지 않나요?챗지피티에게 물어보면 불필요하다고 하는데... 정확한지 몰라서 여쭙니다.
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-03 추락하는 발판의 Mathf.PingPong 메소드 설명문 수정해야 겠어요.
ex) Mathf.PingPong(1.1, 1); 일때 반환되는 값은 0.9이렇게 되어 있는데 0.1로 수정하셔야 겠어요. 오타같습니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
파이어베이스 데이터베이스 불러오기 궁금한점이 있어요.
데이터 베이스 불러올때 public void ReadData() 함수에서만약에, 저장된 파일이 없을때 불러오려고 하면 에러날수도있을거같아서 혹시if(그 유저의 저장된파일이 있다면){ ReadData(); //데이터를 불러온다. }else{ return;} 이렇게 코드를 짜보고싶은데위에서 if 안에 들어갈만한 (그 유저의 저장된파일이 있다면) 에혹시 뭐라고 쓰는게 좋을까요? ㅠㅠ
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-02 플레이어와 발판: PlatformBase 상속클래스 어태치문제
이번 강의에서 PlayerController의 다음 코드가 작동하려면void UpdateBelowCollision(){ if( movement.HitBelowObject.TryGetComponent<PlatformBase>(out var platform)){ if(!platform.IsHit){ platform.UpdateCollision(gameObject); // gameObject는 플레이어 } } } 적어도 Platform_00_Moving 프리팹에,PlatformBase를 상속받은 클래스가 있는 스크립트를 어태치해야 될 것 같습니다.그래서 GetComponent로도 찾아지고, UpdateCollision메소드도 실행되구요.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Unhandled Exception 에러 질문.(해결완료)
24.10.29 수정 맨 밑에 해결 방안 적어놨습니다.저처럼 고생하는 사람 없기를 바랍니다. 24.10.24?socket 이 null인데요. 해당 호출스택입니다 socket = null 조사식 캡처본입니다. 이전 강의에서도 처음 실행했을 때 네트워크 허용 관련 창이 떴었는데 빠르게 누르면서 뭘 눌렀는지 모를정도로 가볍게 생각하고 넘어갔는데 계속 이런 상황이라 디버깅이 어렵네요. 다른 질문에도 Unhandled Exception 나온 분꺼도 읽었는데 일단 기본 테스트니까 넘어가라고 하셔서 했는데도 계속 뜨더라고요.. 4강 강의는 계속 이렇게 무시하고 진행해야 할까요? 구글링했을 때 제가 네트워크 허용안한거 같은데 다시 허용 뜨게 하는방법도 모르겠고, 조언 부탁드립니다 ㅠㅠ 24.10.27 추가4번의 호출스택에서 _args.ConnectSocekt이 null 입니다._args는 null이 아니고, SocketError는 success로 넘어옵니다. 그리고 네트워크 허용 창 같은 경우 방화벽을 다 해제하고도 진행해 봤었는데 그대로이며,방화벽 다 해제하고, 다시 진행하니까 Sever를 허용 하시겠냐고 창이 떠서 이번에는 허용을 눌렀는데도 그대로입니다.. 디버깅 모드 하지 않고 실행하면이러고 끝입니다. Socket Error 조사식.This protocol version is not supported. 저는 작업한것들을 강의마다 git으로 올려두고 있는데 혹시나하고 Session3 26강까지는 정상작동했다가Session#4 27강에 해당 에러를 발견하게 됐습니다. 이전에 이런 에러가 없었는데.. 원인을 계속 찾아볼게요 24.10.29 해결구글링과 gpt를 통해서 찾아봤습니다.우선 연결할 port(7777)가 없는 것을 확인. 방화벽에서 차단하고 있는지 체크. 인바운드 규칙으로 포트 추가. 로컬 Ip를 직접 연결하고, TcpListner를 직접 Start 호출. 코드문제 1. Close 매개변수를 사용하지 않았습니다. 강의 따라가다가 놓친것 같네요.. 코드문제 2. _reserveSize == FreeSzie 같으면 null 일때 문제.현재 Open 메서드에서 _reserveSize가 FreeSize와 같을 때 null을 반환하도록 되어 있습니다. 이 경우 OnConnected 메서드에서 Array.Copy를 호출할 때 openSegment.Array가 null이 되어 ArgumentNullException이 발생할 수 있습니다. 이제 에러는 안나지만, 서버와 클라의 연결이 계속 안됐습니다.이런식입니다.그러다 멀티쓰레드를 사용하면 시간이 안맞아서 그럴 수 있다고 하더라고요기존 IPAddress ipAddr을 원복시키고,Thread.Sleep으로 5초 늦게 연결을 하니까 정상작동이 됐습니다 다른 도움이 필요하시면 ChatGPT에 기다려달라고하고 class 전체 복사해서 하나씩 읽게 한 다음에, 문제되는 점을 찾거나 에러 관련 질문을 넣으면 적지않게 도움을 받을 수 있을겁니다.
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
01-04. 부서지는 타일에서 첫번째타일
부서지는 타일에서 이상하게도 첫번째 타일을 정확히 맞추려해도점프가 더 안 올라가면서 막히더라구요. 그래서 게임오브젝트를 찾아보니 부서지는 타일 좌측아래부분에 Level01 게임오브젝트의 BoxCollider가 있어요. 그래서 이것의 크기를 줄여야 했습니다.
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
01-03 부서지지 않고 튀는 타일 충돌처리 부분 코드 바뀌어야 될 것 같습니다.
설마 소스코드가 잘못 되었을 거라고는 상상을 못하고,,,아무리 이것저것 설정을 바꾸고 새로 시도해봐도, 강의처럼 되지 않아서 하루종일 고생했습니다....bounce되는 타일과 충돌했을 경우, 타일이 바운스되어야 되는데 그것이 안되요.그래서 처음에는 내가 잘못 따라한 것인가 싶어서 강의를 몇번 돌려보고 확인하고, 코드도 확인하고, 배포한 소스코드랑도 비교해 보아도 도저히 답이 안나왔습니다.그런데, 강사님은 해당코드로 작동이 잘 되니... 이상합니다.우선, 플레이어가 타일과 부딪치면 타일충돌체에 맞아서 아래로 튕겨나옵니다. 그래서 ResetVelocityY를 해 줄 필요가 없습니다.위로 솟아서 날라가지 못해요. 저절로 충돌되어 튕겨나오면서 아래로 내려옵니다.(혹시 mass를 늘려서 힘이 강하게 되면 모르겠습니다.)진짜 문제가 된 부분은UpdateAboveCollision() 메소드 부분입니다.if(movement.Velocity.y >=0 && movement.HitAboveObject !=null)이렇게 조건을 걸어놓았는데,플레이어가 타일과 충돌하면, 충돌하는 순간 속도가 0 가 되고 곧바로 아래로 떨어지면서 속도가 마이너스가 됩니다.그런데, 위 조건에서는 속도가 0 보다 클 경우로 하니, 이 조건을 만족하지 못해서 그 아래의 코드가 실행되지 못합니다.제가 충돌할 때의 플레이어리디드바디속도를 출력하니 모두 마이너스였습니다.(다른 스크립트에서 속도를 읽을 때는 충돌시점에서 0.0001라도 경과한 시점)그래서 위 조건을 충족하지 못하니, 충돌해도 타일이 위로 바운스 되지 못했었습니다.그래서 void UpdateAboveCollision(){if (movement.HitAboveObject !=null){ 이 조건으로 하면 됩니다.여기서 ResetVelocityY() 도 호출할 필요 없습니다.
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
03-04 배경화면 스크롤에서 MainCamera의 depth를 수정해야 되지 않나요?
원래 있던 depth -1로 했더니, 배경화면만 나와서 depth 1로 했더니 잘 되는 것 같아요.
-
미해결유니티 AR로 만드는 FPS 게임
총 구현_4 강의에 필요한 indicator image 가 없습니다.
올려주신 강의 자료에 총 구현_4 강의에 필요한 indicator image 가 없습니다.