묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AI 시대의 혁신적인 게임 개발 입문 with Unity6
질문있습니다
콘솔창에서 출력이 안되는데 무슨이유일까요??
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 아이템 시스템
안녕하세요 강좌 진행 순서에 대해 문의드립니다.
이번에 제대로 모듈식으로 학습해보고 싶어서 강의 3개를 모두 구매했는데요아이템 -> 스킬 -> 퀘스트 순서로 학습해도 이해하는데 무리가 없을지 궁금합니다
-
해결됨게임 엔진 만들기 - Directx11와 imgui를 이용하여 기반 구조 만들기 (PART1)
혹시 영상이 안되는 이유가 있을까요?
혹시 영상이 안되는 이유가 있을까요? Members-Only Contents 라고 뜨네요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Input 적용과 관련하여 질문 있습니다.
Q&A 답변을 참고하면서 세팅 및 코드를 수정했지만 여전히 transform 움직임이 적용되지 않아 질문 드립니다. Player Input을 new로 변경하기Player에 Script 적용하기 위 방식으로 모두 수정해봤으나, 캐릭터가 움직이지 않습니다. AI의 답변 중 새로운 Input 문법으로 시도해 보라는 답변이 있어서 아래와 같이 코드를 수정했으나 적용이 되지 않는 상황입니다. 어떤 부분을 수정하면 될까요? void Update() { if (Input.GetKeyDown(KeyCode.W)) transform.position += new Vector3(0.0f, 0.0f, 1.0f); if (Input.GetKeyDown(KeyCode.S)) transform.position -= new Vector3(0.0f, 0.0f, 1.0f); if (Input.GetKeyDown(KeyCode.A)) transform.position -= new Vector3(1.0f, 0.0f, 0.0f); if (Input.GetKeyDown(KeyCode.D)) transform.position += new Vector3(1.0f, 0.0f, 0.0f); }
-
미해결절대강좌! 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG
기초적인 질문
현재 16강을 듣고 있는데요. 코드를 짜시는 형태가 대부분 c#클래스와 인터페이스를 구조로 해서 필요할 때 가져와서 사용하는 구조인 것 같은데요. 궁금한 점은 하이어라키에 있는 스크립트와 그냥 스크립트로만 존재하는 것은 어떤 차이가 있을까요? 질문이 이해가 잘 되지 않으실수도 있을 것 같은데요. 저는 거의 모든 스크립트를 만들어서 하이어라키 오브젝트 안에 넣어서 만들었거든요.
-
해결됨AI 시대의 혁신적인 게임 개발 입문 with Unity6
카메라 보더
카메라 흰색 보더라인은 어디서 켜고 끌수있나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Part7 Part9 질문이 있습니다.
포폴을 Part7 기반으로 만들고 있습니다.클라로 지원을 할예정인데 Part7만을 기반으로 포폴을 만들어도 괜찮나요?그리고 DB연동같은 부분들을 해보고싶은데 Part8을 듣지 않고도 Part9부터 들어도 괜찮을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
UnhandledException 으로 서버 터지는 경우
안녕하세요,해당 강의에서 만든 코드 기반으로 제 게임에 맞춘 서버를 AWS EC2에서 몇 주째 실행중입니다. 개발 컴퓨터에서 테스트할때도 그렇고 EC2에서 할때도 그렇고 강제 종료될때가 있어서 꺼지면 로그 남기게 해서 몇개 원인을 찾았는데요, UnhandledException이 뜨면서 강제종료 되는 경우가 두가지 있는 것 같습니다.제 유추 상으로는 포트포워딩으로 게임 포트 이외에는 인바운드를 거절했는데도 쓰레기IP들이 서버를 터트리고 가는 것 같습니다. 첫번째.[11-24 18:31:38] FATAL [UnhandledException] System.Net.Sockets.SocketException (10054): An existing connection was forcibly closed by the remote host. at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName) at System.Net.Sockets.Socket.Shutdown(SocketShutdown how) at ServerCore.Session.Disconnect() in \Server\ServerCore\Session.cs:line 103 at ServerCore.Session.OnRecvCompleted(Object sender, SocketAsyncEventArgs args) in \Server\ServerCore\Session.cs:line 193 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.Sockets.SocketAsyncEventArgs.<>c.<.cctor>b__173_0(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading.ThreadPoolTypedWorkItemQueue`2.System.Threading.IThreadPoolWorkItem.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()이 오류는 Session.cs에 소켓 Shutdown에서 발생했습니다.public void Disconnect() { if (Interlocked.Exchange(ref _disconnected, 1) == 1) return; OnDisconnected(_socket.RemoteEndPoint); _socket.Shutdown(SocketShutdown.Both); _socket.Close(); Clear(); }서버가 터지면 안되니 임시 방편으로 try catch로 감싸놨습니다.try { _socket.Shutdown(SocketShutdown.Both); } catch (Exception e) { Console.WriteLine($"[NEW ADDED] SOCKET SHUTDOWN Failed {e}"); } try { _socket.Close(); } catch (Exception e) { Console.WriteLine($"[NEW ADDED] SOCKET CLOSE Failed {e}"); } 두번째.[11-25 10:16:12] FATAL [UnhandledException] System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.Net.Sockets.Socket'. at System.Net.Sockets.Socket.get_RemoteEndPoint() at ServerCore.Listener.OnAcceptCompleted(Object sender, SocketAsyncEventArgs args) in Server\ServerCore\Listener.cs:line 45 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.Sockets.SocketAsyncEventArgs.<>c.<.cctor>b__173_0(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading.ThreadPoolTypedWorkItemQueue`2.System.Threading.IThreadPoolWorkItem.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() --------------------------------------------------이 오류는 Listener.cs의 RemoteEndPoint를 가져오는 부분에서 발생했는데요, void OnAcceptCompleted(object sender, SocketAsyncEventArgs args) { if (args.SocketError == SocketError.Success) { Session session = _sessionFactory.Invoke(); session.Start(args.AcceptSocket); session.OnConnected(args.AcceptSocket.RemoteEndPoint); } else Console.WriteLine(args.SocketError.ToString()); RegisterAccept(args); }비쥬얼 스튜디오에서도 args.AcceptSocket.RemoteEndPoint 는 null일수도 있다고 뜨기는 하는데이부분도 != null을 붙여서 해야하는지 try catch로 감싸야하는지 궁금합니다.근본적인 원인은 예외가 왜 발생하는지 알아야하는데 전부 API 단이라 try catch 혹은 != null 빼고는 대책을 강구하기가 어렵습니다. 요약하자면이런 UnhandledException이 나올때 해당 코드를 try { } catch로 해주것이 괜찮은 방법인가요?혹시 근본적인 해결책이 있다면 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Protobuf 설치
요즘도 Protobuf 사용할려면 수동으로 설치 해야 하나요? 수동으로 하지 않고 Nuget에서 Google.Protobuf, Grpc.Tools 설치하고 메모장(텍스트 문서) 확장자 .proto 만든 다음에 비주얼 스튜디오에 추가하기만 해도 되나요?
-
미해결유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
UserDataManager 코드 질문입니다.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class UserDataManager : SingletonBehaviour<UserDataManager> { public bool ExistsSavedData { get; private set; } public List<IUserData> UserDataList { get; private set; } = new List<IUserData>(); protected override void Init() { base.Init(); UserDataList.Add(new UserSettingData()); UserDataList.Add(new UserGoodsData()); } public void SetDefaultUserData() { for(int i = 0; i < UserDataList.Count; i++) { UserDataList[i].SetDefaultData(); } } public void LoadUserData() { ExistsSavedData = PlayerPrefs.GetInt("ExistsSavedData") == 1 ? true : false; if(ExistsSavedData) { for (int i = 0; i < UserDataList.Count; i++) { UserDataList[i].LoadData(); } } } public void SaveUserData() { bool hasSaveError = false; for(int i =0; i < UserDataList.Count; i++) { bool isSaveSuccess = UserDataList[i].SaveData(); if(!isSaveSuccess) { hasSaveError = true; } } if(!hasSaveError) { ExistsSavedData = true; PlayerPrefs.SetInt("ExistsSavedData", 1); PlayerPrefs.Save(); } } }위 코드의if(!hasSaveError) { ExistsSavedData = true; PlayerPrefs.SetInt("ExistsSavedData", 1); PlayerPrefs.Save(); }이 부분에서 PlayerPrefs에 "ExistsSavedData"를 1로 저장해주는 이유가 있나요??제 짧은 생각으로는 ExistsSavedData가 어차피 true로 처리되기 때문에 필요가 없지 않을까라는 의견입니다이와 더불어 LoadUserData()에서도 PlayerPrefs.GetInt()를 안하고 if(ExistsSavedData) 문만 가지고는 안되는지 궁금합니다. 강의 잘 듣고 있습니다. 감사합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
디버그 불가.. Unity에 연결 불가
어제까지 됬었는데, 갑자기 안됩니다. 찾아보니 갑자기 또 된다고 하시는분 있던데.. 해결 방법 아시는분 답변 부탁드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
바이너리 직렬화
MMO 현장에서 Xml, Json, Protobuf와 같은 포맷을 사용 하지 않고 바이너리 직렬화만 하는 경우가 있나요?
-
해결됨데이터베이스를 결합한 Unity 실전 게임 만들기
GetValueAsync(1)강의에서 Update메소드 질문입니다.
질문은 언제든지 해주세요!질문은 강의와 관련된 부분만 해주시면 됩니다!userInfoCache로 처음 Start할때 불러와서 저장을 한다음에 Update에서 비동기프로그래밍으로 CoinText를 업데이트 해주셨는데어차피 캐시값을 불러와 UI를 계속 갱신하는건 불필요한 작업 아닌가요?Update메소드에서 왜 작업을 하는지 궁금합니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
Addressables로 등록한 Slice된 Sprite의 하위 Sprite 접근법에 대해 질문드립니다
현재 Effect animation을 만드는 중, animator의 사용 대신 SpriteRenderer의 sprite만 교체하는 방식으로 최적화를 시도하고 있습니다.여기서 문제된 점이 class에 sprite[]를 선언 후 해당 class를 부착한 GameObject에 inspector에서 미리 slice된 sprite의 내용물들을 할당해줄 경우, Sprite(2D and UI)타입은 메인 스레드 외에서 할당되면 안된다는 에러가 나서 런타임 내에 할당하는 방식을 시도중입니다.Addressables를 이용하여 slice된 Sprite를 로딩할 경우, Sprite의 slice된 첫번째 sprite만 Load가능하고 나머지는 호출이 불가능합니다. 이를 해결하기 위해 LoadAssetAsync대신 LoadAssetsAsync를 이용한 LoadAsync 생성 등 여러가지로 시도해보았으나 전부 실패하여 결국 Sprite를 Unity 내에서 slice하는 대신 각자 개별 Sprite로 만들어서 import해야 한다는 방식에 이르렀습니다.다만, 이 방식은 최적화를 위해 굳이 animator를 사용하지 않으려고 한 의미가 없어진다고 판단되어 Addressables에서 Slice된 Sprite의 사용 방법에 대한 의견 여쭤보고 싶습니다.
-
해결됨【2025年版】Unity×C#入門講座|2Dタワーディフェンスゲーム開発マスター|クリック&バトルシステムの作り方
수업 자료 링크를 어디서 볼 수 있나요?
쩝.. 일본 강의를 번역한 거였군요.좀 표시해 두시지.수업 자료 링크만 알려주십시오.한번 공부해 보겠습니다.
-
해결됨[Unity] 멀티플레이 게임 필수 기능 구현 - 서버 & 데이터 관리까지!
17강 우편 보내기 메일박스 버튼 클릭 부분
Init 씬을 클릭하면 Main 씬으로 씬전환이 안됩니다.PlayerPrefs 를 지우고 실행하면 'Firebase 연결에 성공했습니다.', '게스트 로그인 성공' 메시지가 떠도 메인씬 전환이 안되고 계속 까만 화면만 나오고, 그 이후에 다시 실행하면 'Firebase 연결에 성공했습니다.' 만 나오고 닉네임 입력도 없이 여전히 까만 화면만 나옵니다.DB 부분이 안되는 것 같은데, 코드는 이상이 없습니다. => 파이어베이스에서 다시 DB 프로젝트 생성해서 해결했습니다. 지금 현재로서는 db에 접속한지 30일이 지나서 안됐던 것 같습니다.
-
미해결[Unity] 멀티플레이 게임 필수 기능 구현 - 서버 & 데이터 관리까지!
Main 씬에 Manager 오브젝트는 삭제하는 건지요?
DB를 먼저하고 파티, 그리고 우편으로 강의를 이어가고 있는데 Main 씬에 있는 Manager 오브젝트는 Init 씬으로 옮겨진 건지요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
TargetSearcher에 대해서 질문이 있습니다
강의 내의 TargetSearcher는 기준점 하나를 잡은 뒤 그 기준점으로 타겟을 선정하는 방식으로 이해했습니다.저는 이 방식을 응용해서 기준점을 여러 개 잡는 방식(다중 타겟 선택)을 구현하고 싶은데어떻게 접근 해야할지 감이 잡히지 않아서 질문 드립니다.일단은 select를 여러번 하는 방식으로 대략적인 설계를 했는데이 경우 인디케이터와 상호작용을 어떻게 고려해야할지 모르겠습니다.그래서 강사님께선 어떤식으로 구현하실지 궁금해서 질문 남깁니다.추가로 머리가 턱 막히는 기능을 구현해야 할 때 어떤 식으로 문제에 접근 하시는지도 여쭤보고 싶습니다.
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제
수업에서는 게임 로직 루프에서의 게임 틱(game tick)에 대해 다루지 않아 CPU 사용률이 항상 높게 유지되는 문제가 발생한다.
-
미해결절대강좌! 유니티6 - ECS/DOTS 프로그래밍 마스터클래스
ecs관심이 있었는데 강의 잘 보았습니다.
현재 강의는 심화과정 2강의 빼고 다 보았습니다. 몇가지 궁금한 사항들이 있어서 질문드리려고 합니다. ecs, dots 병렬처리를 위해서 유니티에서 사용하는 시스템인데요. 이 강의에서도 여러 쓰레드를 사용하기 위해 잡에 작업들을 할당하는 코드를 사용하는 것으로 보입니다. 그리고 발사체와 적이 충돌시 HP를 깍는데 EnemyComponentLookup[enemy] = enemyData; 이런 코드가 있던데 이는 실제로 해당 컴포넌트에서 hp 변수를 수정하는 내용으로 보입니다. 하지만 멀티쓰레드에서 lock이나 뮤텍스같은 안전장치가 없는데 저런식으로 사용할 수 있는지 묻고 싶고... 두번째는Enemy오브젝트에서 여러 엔티티 update 이벤트를 사용하고 있습니다. EnemyComponent는 발사체에서도 사용하고 있고 moveComponent에서도 사용하고 있고 hpBarComponent에서도 사용하고 있습니다. Enemy가 죽었을때 수십만 이벤트가 현재 할당된 상태에서 문제가 없는것인지 추가적인 내용을 알 고 싶습니다. 현재 만마리 이상 스폰을 시키면 간혹 죽은 Enemy들이 살아있는 것 같은데 ecs, 멀티쓰레드 강의에서 젤 중요한 내용이 빠진게 아닌가 싶어서 여쭈어봅니다.