묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것
안녕하세요.서버를 IOCP로 준비 중입니다. 레퍼런스는 루키스님 C++ 서버 강의를 생각하고 있습니다.문제가 클라이언트인데 지금 강의가 UE5 + IOCP 연동뿐이라서 그것만 참고하기는 부족하다는 생각이 들었습니다. 그래서 컨텐츠까지도 구현되어 있는 유니티 클라 강의를 일단 따라가고 서버는 C++ IOCP와 연동하고 싶은데, 이게 될까 싶어서 문의 드려 봅니다.물론 현업자나 경력자 입장에서는 되겠죠. 수많은 서비스가 이종 언어 간에도 잘 돌아가니까요.신입 공채 지원이 아니라 경력 지원으로 들어가려고 생각 중이기 때문에, 이걸 이뤄내면 참 좋겠지만걱정이 앞서는 건 사실입니다.제가 현재 결제해 둔 루키스님 C# 쪽 강의가 Part4: 게임서버, Part5: 데이터베이스, Part7: MMO 컨텐츠 구현, Part9: MMO 컨텐츠 구현 이렇게 4가지입니다. 클라를 C#으로 할 거면 Part3: 유니티도 결제해야 할 것 같긴 한데, 이 험난한 길을 가고자 하는 한 마리 늙은 양에게 조언 부탁드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
데드락 이렇게 이해했는데 맞을까요?
class SessionManager { static object _lock1 = new object(); public static void Test() { lock (_lock1) { UserManager.TestUser(); } } public static void TestSession() { lock (_lock1) { } } } class UserManager { static object _lock2 = new object(); public static void Test() { lock (_lock2) { SessionManager.TestSession(); } } public static void TestUser() { lock (_lock2) { } } 강의에는 두 클래스에 같은 _lock 써서헷갈려서 lock1, lock2 로 나누었습니다. SessionManager.Test();하려면lock1을 열고 들어가서 lock2를 열어야함. UserManager.Test();하려면lock2을 열고 들어가서 lock1을 열어야함 예를 들어,t1이 lock1을 열고 들어가서 TestUser()을 하려고 했지만,하필 t2가 lock2를 열자마자 들어갔을경우t1은 lock2가 잠겨있어서,t2는 lock1이 잠겨있어서둘다 아무것도 못하는 상황 =무한 대기 걸려서 프로그램이 멈춘것 처럼 보이는 데드락 상황 이렇게 이해했는데 맞을까요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
BaseUI, ConfirmUI에서 질문있습니다.
함수에서 어떤 행위를 하고 Action 변수를 사용하고 null로 초기화 해주는데 이유가 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
쓰레드의 작업 순서가 너무 헷갈립니다.
안녕하세요. 강의 잘 보고 있습니다. 질문 드립니다.t1, t2 두 개의 쓰레드를 만들고 실행시켰습니다.t1.Start();t2.Start(); Start()라는 함수가 쓰레드 클래스 말고 싱글 쓰레드 개발환경에서의 그냥 아무 함수라고 가정한다면,t1.Start()가 먼저 실행되고Start함수가 끝날때 까지 기다린 후t2.Start()가 먼저 실행되는게 '문법적으로' 맞잖아요?? 하지만 쓰레드 클래스의 경우에는t1.Start() 가 들어왔을때는t1 쓰레드한테 어떤 일을 실행 시킨 후t1이 작업 끝나던 말던바로 다음줄 코드를 실행 시키는건가요?즉, t2.Start() 를 실행 시키는건가요?그렇게 해서 각 쓰레드(일꾼)이 작업을 하다 여러문제들이 생기는거구요 멀티 쓰레드 개발환경에서 일어날 수 있는 문제점은확실하게 이해하고 있는데,제일 첫 부분인 이게 도통 이해가 안돼서 질문 남깁니다.그동안 해오던 코딩이 부정당하는 기분이라...쓰레드 클래스만 저런식으로 작동된다는 정보가 어디에도 없네요..문법적으로 저렇게 된다고 확신이 필요합니다 ㅠㅠ 요약하자면, 컴파일러는 'Start 함수' 를 만나게 될 경우그 쓰레드한테 작업을 실행시키지만,그 쓰레드의 작업을 기다려 주지는 않고바로 다음 줄 코드를 실행 시키는건가요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
다른형식의 근접공격에 대해 질문할것이 있습니다.
다크소울과 몬스터헌터 같은 게임의 근접공격 구현은 스킬의 액션에 새로운 액션을 만든 다음 피격 판정이 있는 무기에 콜라이더를 넣어준 다음 기존의 투사체 공격에 있는 소켓을 이용해서 구현하면 될까요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 루키스님 코드 라이선스 관해서 질문드립니다.
과거에 해당 강의로 공부하고 최근에 다시 복습 중인데 혹시 코드 라이선스가 어떻게 될까요?외주 작업을 받게 돼서 네트워크 관련 코드를 작성하려고 하는데 문제가 생길 수 있을 거 같아 질문드립니다.덕분에 공부 너무 잘 하고 있습니다. 감사합니다.
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
웹서버로 구현되는 기능들이 궁굼합니다.
안녕하세요! 선생님 강의를 거의 빠짐없이 듣고 열심히 공부하고 있는 수강생입니다. MMORPG 개발 9개 시리즈부터 번외편, M1 강의까지 2~3회씩 반복해서 수강하며, 이제는 새로 올라오는 M2 강의를 매주 주말마다 기다리고 있습니다!강의를 기다리며 채팅 기능, 길드, 파티, 우편 시스템을 직접 구현해보려고 하는데, 처음으로 강의 내용과 다른 것을 시도하다 보니 제가 제대로 하고 있는지 확신이 들지 않더라고요. 제가 생각하기에 채팅, 길드, 파티, 우편 기능은 ACCOUNT 서버처럼 WEB 서버로 구현하는 게 좋을 것 같아서, MMORPG 시리즈에서 배운 WEB 서버를 기반으로 위에 기능들을 하나씩 만들어가고 있습니다.서론이 길었네요 ㅠㅠ 궁금한 점이 있습니다! 실제 현업에서는 위에 언급한 기능들이 웹 서버로 구현되는지 아니면 게임 서버로 구현되는지 궁굼합니다!
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
스크롤에 아이템을 선택했을때 강조하는 효과는 어떻게 구현하면 될까요?
안녕하세요.인벤토리 스크롤 영역에 선택한 아이템을 강조하는 효과는 어떤식으로 구현하면 될지 궁금합니다.강의를 본 뒤 선택한걸 강조하는 내용이 있나 돌아봤는데 해당 내용은 없는것 같아서요.아이템을 선택하면 선택된 아이템을 강조하는 효과의이미지를 활성화 시키려고 했는데 오브젝트를 재활용하는거다 보니 엉뚱한 오브젝트에 이미지가 활성화 되는데어떤식으로 해야 좋은 구조로 선택표시를 할 수 있을지 알려주실 수 있으실까요?
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
Item 깨짐 현상
10강 수강 중 Other > Item에 있는 아이템 삽입 시 화면처럼 마젠타 색으로 모든 아이템이 전부 깨져서 표시됩니다제가 가지고 있는 패키지에는 Item 항목이 없어 섹션3의 패키지 파일을 다운 받아 유니티에 드래그드롭으로 넣고 Import 된 Item을 꺼냈더니 저렇게 뜹니다 어떻게 해결해야 하는지 질문 드립니다
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Input 스킬 구현 질문
안녕하세요! 좋은 강의 감사합니다. 리븐 Q와 아트록스 Q와 같이 Input형 스킬이면서 n번째 사용 스킬이 다른 경우(ex) 리븐 Q 3타 에어본) 어떻게 구현하면 좋을 지 질문 드립니다!
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
C++강의 듣다가 왔습니다.
C++과 언리얼로 만드는 mmorpg 시리즈를 구매한 학생입니다. 1주차부터 이해가 안돼서찾아보니 Part3 유니티 (클라 프레임워크)Part4 게임서버 (서버 프레임워크 ServerCore)Part7 게임서버&클라 연동 (클라 서버 연동 기본기)Part8 EF Core (ORM) 를 읽어보면 이해하기 쉽다고 하셨는데part4. 게임서버는 C++강의로 들어도 괜찮을까요??
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
레이케스트 에셋을 다운받았는데 임포트 방법을 모르겠습니다.
위와 같은 폴더가 잔뜩있는데, 어떻게 임포트를 해야하는지 모르겠네요..
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
멀티 스레드 관련 의문점
안녕하세요 강의 잘 보고 있습니다.코드를 보면서 멀티 스레드 관련해서 궁금한게 있어 질문 남깁니다.1.ClientSession에서 Lock을 잡지 않는 이유는 Receive쪽에서 하나의 스레드만 들어오기(낚시대 비유) 때문에 안걸어도 되는건가요? 즉 하나의 스레드가 메서드 안의 메서드를 타고 타고 들어와서 안전한건가요?2. 1번이 맞다면 ClientSession 에서 GameLogic Push 하는 이유는 스레드 안전성 때문이라기보단 멀티 스레드를 활용하기 위함이라 보면 될까요?
-
미해결따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 02
코드 자료를 받을 수 있을까요?
코드 자료를 받을 수 있을까요?
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
포폴용으로 AWS 인스턴스 1개와 탄력적 IP 1개를 항시 켜놔도 비용이 부과될까요?
루키스님 안녕하세요? C# AWS 답변 보고 여기로 와서 클라 입장 공인 IP를 가지고 사설 IP에 접근하는 것 성공했습니다. 아침 답변 감사합니다. 제가 포트폴리오 작성 간에 데모 프로그램을 준비해보려고 하는데 (기준은 C# 파트7 수강 이후입니다) 첫 번째 방법은 클라, 서버 exe 한폴더에 넣고 .bat 파일 만들고 이거 하나만 실행시키서 서버 실행 -> 클라 실행 순으로 입장시키기 입니다. 그런데 이 방법은 .net이 안깔려 있으면 서버부터 크래시가 나길래 인사담당자나 면접관이 못볼 수도 있겠어서 찜찜해서 두 번째 방법으로 생각한건 AWS입니다. 윈도우 프리티어와 인스턴스 프리사양, 그리고 고정용 IP용 탄력적 IP를 만들어서 항시 켜놓으려고 합니다(보안 정책은 여기 강의처럼다 뚫어놓긴 합니다). 그리고 데모 프로그램은 클라이언트만 제시하는 방법을 생각 중입니다. 이 경우 AWS 서비스가 무료거나 소액이면 해볼만한 방법이라고 생각되는데 둘 중에 어느 방법이 괜찮을지 의견 여쭈고 싶어서 질문 드립니다.
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
혹시 어드레서블 강좌 추가계획이 있으실까요?
에센스 도서에 보니까 어드레서블 관련 개정판 내용이 있던데요.혹시 강좌에도 추가해주실 계획이 있으신가 궁금해서 문의드립니다.
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
JobTimer 클래스의 우선순위 큐 질문
안녕하세요. JobTimer 클래스에서 사용된 우선순위 큐 관련해서 2가지 궁금한 점이 있습니다.1. 여기서 사용된 우선순위 큐는 최소힙으로 구현된게 맞나요?PriorityQueue.cs 에 작성된 우선순위 큐는 최대힙 이지만, JobTimerElem 구조체를 정의할 때 CompareTo 메서드를 오버라이딩 해서 최소힙을 사용하게끔 수정한 것으로 이해했는데 제대로 이해한게 맞을까요?2. Pop 메서드에서 힙 정렬 과정 질문 PriorityQueue.cs에 작성된 Pop 메서드의 While 문이 힙 정렬을 담당하는 부분으로 이해했습니다.만약 While 문 한 번으로 정렬이 끝나지 않는 경우는 어떡하나요?예를 들어 다음과 같이 저장된 최소 힙의 경우이렇게 While문이 한 번 끝났는데 최솟값인 2가 루트 위치에 있지 않은 경우가 있어서 질문 드립니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
스텟 연동 관련해서 질문이 있습니다.
제가 기존에 개발해둔 아이템 시스템을 연동시키면서 아이템의 스텟을 정할때 Resources/Stat폴더를 참조하고 그걸 기반으로 Enum으로 해당 스텟들이 있는 스크립트 파일을 만든 다음에 아래에 있는 버튼을 눌러서 일일히 Enum 파일을 동기화시켰는데 너무 번거로운것 같습니다. 생성, 삭제, 수정할때마다 동기화시키면 작업할때마다 딜레이가 너무 커지는데 다른 방법이 있을까요if (dataType == typeof(Stat)){GUI.color = Color.yellow;// Data를 이름 순으로 정렬하는 Button을 그림if (GUILayout.Button($"Press it after you finish editing")){StatEnumSynchronizer.SyncStatEnum();EditorUtility.SetDirty(database);AssetDatabase.SaveAssets();}}아래는 해당 enum파일을 만드는 스크립트입니다.using System;using System.IO;using System.Linq;using UnityEditor;using UnityEngine;public static class StatEnumSynchronizer{private const string StatFolderPath = "Assets/Resources/Stat";[MenuItem("Tools/Sync Stat Enum")]public static void SyncStatEnum(){if (!Directory.Exists(StatFolderPath)){Debug.LogError($"Directory does not exist: {StatFolderPath}");return;}var statFiles = Directory.GetFiles(StatFolderPath, "*.asset", SearchOption.TopDirectoryOnly);var statCodeNames = statFiles.Select(file => AssetDatabase.LoadAssetAtPath<Stat>(file)).Where(stat => stat != null).Select(stat => stat.CodeName).Distinct().OrderBy(name => name).ToList();string enumPath = "Assets/Scripts/Enum/ItemStatusAttribute.cs";using (var writer = new StreamWriter(enumPath, false)){writer.WriteLine("public enum ItemStatusAttribute");writer.WriteLine("{");writer.WriteLine(" Default,");foreach (var codeName in statCodeNames){string enumName = SanitizeEnumName(codeName);writer.WriteLine($" {enumName},");}writer.WriteLine("}");}AssetDatabase.Refresh();Debug.Log("Stat Enum synchronized.");}private static string SanitizeEnumName(string name){return new string(name.Where(c => !char.IsWhiteSpace(c) && (char.IsLetterOrDigit(c) || c == '_')).ToArray()).Replace(" ", "_").Replace("-", "_").ToUpper();}}
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
오브젝트 폴링 문의 합니다.
Add_Queue 함수에서 go.transform.parent = m_pool_Dictionary[path].parentTransform;부모 설정을 하고 다시 Return 함수로 가서 obj.transform.parent = parentTransform; 다시 부모 설정 하는 이유가 궁금 합니다. 아 그리고 스킬 구현 아이디어는 끝났나요 ?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
포트폴리오 문서작성에 있어서 질문드립니다.
안녕하세요 신입 클라이언트 프로그래머 취업을 준비하고 있습니다.다름이아니라.. 제가 강사님의 강의를 열심히 듣고 3D로 포트폴리오를 프로토타입 수준으로 제작을 완료했습니다.플레이어가 메인씬으로 이동해 상점에서 물품을 구매하고 인벤토리를 통해 장비를 장착하고 NPC를 통해서 스테이지로 들어가서 잡몹을 처리후 보스를 처치하고 스테이지를 클리어 하는 부분까지 구현을 했는데요...이번에 포트폴리오를 제출하려고 하는데 포트폴리오에 얼마나 디테일한 부분까지 작성을 해야할까요?? 그리고 영상을 꼭 필요할까요??? 커뮤니티를 찾아봤는데 말이 다 달라서 질문드립니다...