묻고 답해요
144만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
.net core가 중단되었다고 하네요..
.net core가 중단되었다고 하네요..
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의에서 만드신 코드들에 대한 짧은 질문
안녕하세요.본인은 게임 클라이언트 개발자를 희망하지만,인디게임 수준의 서버는 직접 만들기 위해본 강의를 3회독 하는 중입니다. 강의해 주신 코드들은예를들면 Listener 클래스를 직접 만드셨는데,TcpListener이란 클래스가 있더라고요.대형 게임 회사는 자체적으로 서버를 구축하니까Listener클래스를 비롯한 모든 서버를 최대한 하드코딩 하는건가요?TcpListener같이 구현되어있는 것들을 사용하지 않는 이유가 있을까요?물론 Listener 클래스를 직접 만들면서 지식이 깊어지고 그런건 매우 좋습니다. 하지만 제가 배우고 작성하는 클래스들의 완성의 수준을 가늠잡을 수 없어 불안합니다. 그래서 일부 클래스들은 TcpListener 같이 이미 나와있는 클래스들을 섞어가며 사용해보고 싶은데 이런 부분에서 강사님 의견이 궁금합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
파이어베이스 유저 저장 주기가 고민되요.
첫번째 질문..유저데이터 저장을 위해서 주기적으로 파이어베이스 리얼타임 데이터베이스에쓰기로 저장을 해주고 싶은데요.. 요즘 파이어 베이스에 관심을 가지고 이래저래 알아보고있는데1분주기로 데이터를 리얼타임데이터에 쓰기(저장)을 하게되면 유저가 적을경우는 괜찮을수있겠지만, 왠지.... 많은 유저가 접속을 한 상황에서그 유저들의 데이터가 1분마다 저장이 계속 된다면 파이어베이스 서버이용요금?? 도 엄청날것같은데일정시간마다 주기적으로 파베에 저장되게 해도 괜찮을까요?한명 유저당 파베에 아무리 자주 저장하더라도 파베 사용량 데이터량 변화는 크게 없는것인지...아직 파베에 대한 지식과 파베 요금 관련해서 아무런 개념이 없어서인지 잘 모르겠네요 ㅜㅜ ----------------------------------------------------------------------------------------두번째 질문..게임을 빌드 한 후 APK 파일을 앱플레이어(녹스, LD플레이어)에 설치후 플레이 하다가(정상적인 게임종료를 누르는게 아닌, 상단탭의 x버튼을 눌러서) 강제로 게임을 꺼버리는경우 OnDestroy 함수가 제대로 호출이 안되는건지.. 게임 데이터를 저장하지않은채로게임이 꺼지더라구요.(혹시나해서, OnApplicationQuit() 함수와 OnDestroy() 함수 내용에도 게임이 꺼지거나파괴될때 '파베에 쓰기'가 되게 코드를 짰을때, 정상적으로 백버튼을 눌러서 게임종료하겠다는버튼을 누르면 저장이 잘됬는데, 갑자기 또는 강제로 게임이 의도치 않게 게임이 꺼지게되면 데이터가 저장이 안되던데... 혹시 좋은 방법이 있을까요?? )
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
첫 강의 manager 가 재생이 안됩니다.
첫 강의 manager 가 재생이 안됩니다.
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
T2는 어떻게된걸까요?
T2가 지금 멈춰있는것같은데..어떻게 진행 되는걸까요?ㅜㅜ
-
해결됨[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
9주차 강의 'Stage 분할' 이 로딩만 뜨고 재생되지 않습니다
전후 강의 동영상은 정상적으로 재생이 되는데, 이 강의는 로딩만 계속되고 화면이 나오지 않네요. 혹시 제가 뭐 세팅을 변경해야 하는 것이 있으면 알려주시기 바랍니다.맥/윈도우 크롬 브라우저를 이용해서 수강 중입니다.가능하다면 빠른 해결이 되었으면 합니다.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
Animator오류
안녕하세요 똑같이 다 수정했는데 공격 애니가 실하지않고 사진처럼 저 오류 가나옵니다 뭐가 잘못되고있는건가요 선생님
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Selct에 대해서 질문드립니다.
안녕하세요 강사님 궁금한게 있어서 질문 드립니다.제가 구현하고 싶은 부분은 리그오브 레전드의 스마트키 기능과 같은 부분입니다.제가 이해한 것이 맞다면 강의 안에서는Select로 비동기적 처리를 할 때 추가 입력을고정된 입력값(마우스 클릭)을 받아서 Select의 비동기적 처리를 구현한것으로 이해했습니다.만약 제가 롤의 SmartKey 기능과 같은 눌렀다가 키를 뗄때(스킬이 등록된 키마다 받아야할 입력이 달라짐)의 입력으로 비동기적 처리를 구현하고 싶다면 어떤식으로 구현해야 할까요?제가 고민해본 방법은 다음과 같습니다.Skill에 ReleaseInput()이라는 함수를 만든다.그리고 TargetSelectionAction에 똑같은 이름의 ReleaseInput() 함수를 만든다.ReleaseInput() 함수는 SkillSlot의 바인딩된 키 값을 기준으로 키를 뗄 때 호출된다.Skill의 RealeseInput()호출되면 Skill -> TargetSearch -> TargetSelectionAction 의 순서로 TargetSelection에 접근하여 TargetSelection의 추가로 만든releaseInput()함수를 호출한다.TargetSelectionAction에 releaseInputOccur이벤트를 만들고 ReleaseInput()함수로 이 이벤트를 Invoke해준다."키를 뗌" 액션을 Select의 비동기 방식에서 추가 입력값으로 이용하고 싶다면 releaseInputOccur이벤트에 추가적인 함수를 구독하여 기능을 구현한다.이런 식으로 생각해봤는데. 제가 아직 이 TargetSearcher 시스템에 이해도가 부족해서, 구현해주신 TargetSearcher 의 흐름을 망치지 않고 추가 기능을 만든 것 인지 아직 헷갈립니다.그래서 강사님께서 SmartKey방식을 구현하신다면 어떤 방식으로 구현하실지 궁금해서 여쭤봅니다.
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
강의 완료 시기
강의 완료시기가 언제쯤인지 알 수 있을까요?
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
네트워크 오브젝트 설정
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요 안녕하세요 선생님 Hero에게 network Object 넣었을때 hash값이 저는 0이고 선생님은 다르네요 그래서 Default network Prefabs 에 자동으로 추가되지않아서플러스 버튼 눌러서 추가하면 정상 작동되긴하나 선생님이랑 방법이 틀려서 찝찝합니다 뭐를 실수하고있는건가요
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
싱글턴 적용된 클래스가 현재 씬을 재로드하면 이상해요
싱글턴이 적용된 클래스는 사라지지 않고또 한 개만 존재해야 할 텐데가끔식 씬을 재로드시 한 개가 더 생깁니다
-
미해결유니티 2D 로그라이크 게임 만들기 [한글자막]
플레이에는 문제가 없는데 빌드에서 문제가 계속해서 발생하네요.
Android 플랫폼에서 빌드하려고 하는데 아무리 해도 해결이 안되는 오류가 발생하네요. Building Library/Bee/artifacts/Android/d8kzr/libil2cpp.so failed with output:ld.lld: error: undefined symbol: JS_FileSystem_Sync>>> referenced by Assembly-CSharp.cpp:14373 (Library/Bee/artifacts/Android/il2cppOutput/cpp/Assembly-CSharp.cpp:14373)>>> Library/Bee/artifacts/Android/d8kzr/gqh0me0k2d9s.o:(GameManager_JS_FileSystem_Sync_m246A574BB47ADA18D3D17EE297B47F03B281F5C3)>>> referenced by Assembly-CSharp.cpp:16220 (Library/Bee/artifacts/Android/il2cppOutput/cpp/Assembly-CSharp.cpp:16220)>>> Library/Bee/artifacts/Android/d8kzr/gqh0me0k2d9s.o:(MainMenu_JS_FileSystem_Sync_m6882592881D0992397C77FED445CBB536B836232)clang++: [0;1;31merror: [0m[1mlinker command failed with exit code 1 (use -v to see invocation)[0mUnityEditor.BuildPlayerWindow:BuildPlayerAndRun () (at /Users/bokken/build/output/unity/unity/Editor/Mono/BuildPlayerWindow.cs:200)Chatgpt 한테 물어보고 제시한 해결책 전부 다 해봤는데도 안됩니다. 부탁드립니다- 빈 프로젝트에 파일 추가하면서 해봤는데 그 곳에서는 빌드가 잘됌- WebGL 관련 함수 사용 안함- Library 지우고 다시 해봤음- Android SDK & NDK Tools 있음
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
UseInAction에 대해서 질문드립니다.
제가 TargetSelectionTimingOption을 useInAction으로 했는데 SpawnSkillObjectAction클래스의 Apply부분에서 에러가 발생합니다.public override void Apply(Skill skill){foreach (var targetPosition in skill.TargetPositions) // 이 부분에서 에러 발생{var skillObject = GameObject.Instantiate(skillObjectPrefab).GetComponent<SkillObject>();skillObject.transform.position = targetPosition + (Vector3.up * 0.001f);skillObject.Setup(skill, targetSearcherForSkillObject, duration, applyCount, objectScale);}} 에러는 다음 오류가 발생합니다.NullReferenceException: Object reference not set to an instance of an objectSpawnSkillObjectAction.Apply (Skill skill) (at Assets/Scripts/Core/Skill/Action/SpawnSkillObjectAction.cs:25)Skill.Apply (System.Boolean isConsumeApplyCount) (at Assets/Scripts/Core/Skill/Skill.cs:643)InActionState.Apply () (at Assets/Scripts/Core/Skill/StateMachine/State/InActionState.cs:75)InActionState.Enter () (at Assets/Scripts/Core/Skill/StateMachine/State/InActionState.cs:23)StateMachine`1[EntityType].ChangeState (StateMachine`1+StateData[EntityType] newStateData) (at Assets/Scripts/Core/StateMachine/StateMachine.cs:88)StateMachine`1[EntityType].ChangeState (State`1[EntityType] newState, System.Int32 layer) (at Assets/Scripts/Core/StateMachine/StateMachine.cs:99)StateMachine`1[EntityType].TryTransition (System.Collections.Generic.IReadOnlyList`1[T] transtions, System.Int32 layer) (at Assets/Scripts/Core/StateMachine/StateMachine.cs:117)StateMachine`1[EntityType].Update () (at Assets/Scripts/Core/StateMachine/StateMachine.cs:135)Skill.Update () (at Assets/Scripts/Core/Skill/Skill.cs:396)SkillSystem.UpdateSkills () (at Assets/Scripts/Core/Skill/SkillSystem.cs:165)SkillSystem.Update () (at Assets/Scripts/Core/Skill/SkillSystem.cs:76)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
스핀락이 올바르게 작동하지 않는 것 같습니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ServerCore { class SpinLock { volatile int _locked = 0; // true: 잠겨있음, false: 잠겨있지 않음 public void Acquire() { while(true) { ////Interlocked.Exchange의 반환값은 원래값이다. //int original = Interlocked.Exchange(ref _locked, 1); ////original == 0이면 잠금 성공, original == 1이면 잠금 실패 //if (original == 0) //{ // //내꺼 // break; //} //CAS (Compare-And-Swap) 함수라고 한다. int expected = 0; int desired = 1; if(Interlocked.CompareExchange(ref _locked, desired, expected) == expected) { break; } } } public void Release() { //잠김을 푼다. _locked = 0; } } class Program { static int _num = 0; static SpinLock _lock = new SpinLock(); static void Thread_1() { for (int i = 0; i < 1000000; i++) { _lock.Acquire(); _num++; _lock.Release(); } } static void Thread_2() { for (int i = 0; i < 1000000; i++) { _lock.Acquire(); _num--; _lock.Release(); } } static void Main(string[] args) { Task task = new Task(Thread_1); Task task2 = new Task(Thread_2); task.Start(); task2.Start(); task.Wait(); Console.WriteLine(_num); } } } 다음과 같이 작업 후 디버깅해보았는데 결과값이 때로는 맛이 간 값을 출력합니다.제시된 코드와 같은 것 같은데 이유를 모르겠습니다!그리고 다음과 같은 상황일 때 어떻게 브레이크포인트를 잡아서 버그수정을 시도해야 할 지 감이 안잡힙니다ㅠㅠ
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
Instantiate 관련 질문 드립니다
GameObject Instantiate(string key, Transform parent = null, bool pooling = false) 함수에서 GameObject prefab = Load<GameObject>($"{key}"); 이 부분에 Load<GameObject>(key)가 계속 null이 반환 되는데 왜 그런걸까요 나머진 전부 똑같이 했고 어드레서블에 넣은 프리팹만 제가 아무 오브젝트나 이름만 바꿔서 프리팹으로 만든 뒤에 넣은거 말곤 차이가 없는데 이게 차이가 있는걸까요
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
NetworkVariable<>, ClientNetworkTransform 사용 질문
강의를 보던 중 궁금한 점이 생겼습니다. 몬스터의 체력변경을 수동으로 ServerRpc,ClientRpc를 사용했는데, NetworkVariable<>을 사용하지 않으신 이유가 있으실까요? NetworkVariable<int> 같은 형식으로 해당 변수를 선언하면 그 변수가 알아서 다른 클라이언트에게 전파되어 동기화 된다고 배웠습니다. ugs 패키지를 임포트하고나면 오브젝트에 ClientNetworkTransform 컴포넌트를 부착할 수 있더라구요. 이걸 추가하면 그 오브젝트의 TRS(이동,회전,크기) 모두 자동으로 동기화를 해주는 듯 하던데 이것을 사용하지 않으신 이유가 있으실까요? 처음 배우는 입장에서 동기화를 신경쓰기가 제일 까다로운 부분인데 이 컴포넌트를 사용하면 적어도 트랜스폼에 한정해서는 동기화에서 도움을 받을 수 있는 것처럼 보입니다.
-
미해결따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-05 레벨시작(마지막 강의)에서 SelectLevelController오브젝트의 SelectLevelController 컴포넌트조작
SelectLevelController 컴포넌트를 우클릭해서, Reset Data 하는 것의 의미가 무엇이죠?해당 스크립트를 다시 로드하는 건가요?무슨 원리인지 궁금해요.추가로, 그렇다면 만약 앞서처럼 레벨구성을 바꾸게 되면,항상 이렇게 해주어야 각각의 레벨들이 제대로 반영되게 되는 거죠?
-
미해결새싹부터 시작하는 Unity 게임 개발
Game화면에서 캐릭터가 끊기듯 움직입니다.
섹션4 3D캐릭터 이동 구현까지 진행헸습니다. Scene에서는 아무 문제가 없는데 Game화면에서는 캐릭터가 끊기면서 움직입니다 카메라 문제 같은데 정확한 이유를 모르겠네요 ㅠ 영상에 있는 Lerp 까지 그대로 따라했습니다
-
미해결따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
간혹 벽의 콜라이더를 뚫고 빠지는 경우
위에서 아래로 내려올 때, 잘못하면 옆의 벽으로 들어가서 떨어지고, 그 이후로 못 빠져 나옵니다. 그래서 콜라이더가 느슨한가 봐도 그렇지도 않더라구요.그리고 우측에 회전칼날 근처의 벽도 그런 적이 있어요..이런 현상은 왜 일어나죠?
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
안녕하세요 초반 프로젝트 생성 버전 관련해서 질문 드립니다.(2022.3.6f1)
https://unity.com/kr/releases/editor/archive안녕하세요 강사님 ! 현재 유니티 공식 홈페이지에서 지원하는 유니티 LTS의 경우 2022.3.51이 최신으로 나와있고 이후에는 2023으로 넘어가는것 같습니다. 구글링을 통해 찾아보니 유니티 공식 홈페이지가 아니라 다른 깃허브나 외부 링크를 통해 다운로드를 받을 수는 있지만 안정성 면에서 공식 홈페이지를 통해 다운로드를 하는 것이 좋아보여서 질문을 남깁니다. 혹시 2022.3.6f1 버전을 공식 홈페이지가 아니라 다른 경로로 설치를 해야 할까요? 아니면 최신 2022인 3.5를 통해 프로젝트를 진행해도 괜찮을까요??