스킬시스템을 데이터 테이블화 하는 법에 대해 감이안잡혀서 질문드립니다.
미해결
[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
스킬이나 이펙트가 Flat한 데이터가 아니다보니 어떤식으로 테이블을 구성해야할지 감이 전혀 안잡히는 것 같습니다. 실무에서는 어떤 부분까지 테이블 화 시켜서 처리하는지 궁금합니다. 이에 관련해서 정보나 팁을 얻을 수 있을까요??
- unity
- modules
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
스킬이나 이펙트가 Flat한 데이터가 아니다보니 어떤식으로 테이블을 구성해야할지 감이 전혀 안잡히는 것 같습니다. 실무에서는 어떤 부분까지 테이블 화 시켜서 처리하는지 궁금합니다. 이에 관련해서 정보나 팁을 얻을 수 있을까요??
미해결
[Unity] 멀티플레이 게임 필수 기능 구현 - 서버 & 데이터 관리까지!
안녕하세요! 강의 잘 듣고 있습니다. 다름이 아니라 방 만들기(Room Creation) 기능 과 관련해서 추가적인 커리큘럼이 업데이트될 예정이 있는지 궁금하여 문의드립니다 포톤을 활용한 멀티플레이 구조를 더 깊이 있게 이해하고 싶은데 현재 강의에서 다루지 않은 부분들이 있어 혹시 확장 계획이 있으신지 알고 싶습니다. 감사합니다
해결됨
AI 시대의 혁신적인 게임 개발 입문 with Unity6
Sceene에서 아래와 같은 기본 시점이 그림<1>처럼 세팅되어 있는데, 이중에 시점을 바꾸면 그림<2>처럼 변경됩니다. 그림<2> 상태에서 그림<1> 상태로 변경하려면 어떻게 해야 하나요? 단축키 이런게 있나요? 두번째 질문 그림<2>에서 가운데 사각형을 누르면 Front가 변경되는데 이게 무슨 기능인가요? 그림<1> 그림<2>
해결됨
[AI 시대의 게임 개발을 지탱하는 기술들] 홍사부의 디아블로1 PCG 던전 생성 알고리즘
설명자료만있고 프로젝트파일은 어디서 다운받는지 안나와있네요
미해결
절대강좌! 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG
먼저 정말 배우고 싶었던 부분을 강의해 주셔서 정말 감사합니다. 완강 후 질문 있습니다. 배운 것만 그대로 적용하더라고 멀티플레이 게임 제작이 가능한지 궁금합니다. 혹시 간단하게 100명정도 동시 접속하는 게임을 제작하게 된다면 예상되는 문제점은 무엇이 있을까요? 그럼 사실상 로비나 릴레이를 구현하는 것은 거의 사용하지 않는다고 보면 될까요?
미해결
절대강좌! 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG
질문1. 로비까지는 릴레이를 쓰니까 유니티의 서버를 쓰는 것이고 게임을 시작하면 호스트를 서버로 쓰는 거라고 이해하면 되나요? 그리고 player.GetComponent<NetworkObject>().SpawnAsPlayerObject(playerId); 이 코드로 인해서 playerID를 가진 캐릭터가 생성되서 이 아이디를 가진 사람에게 제어권이 가는건가요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
플레이어를 클릭으로 이동하는데, 이동후에 스크린샷 처럼 기울어짐이 발생합니다. 유니티가 익숙해질 때까지 지속적으로 연습하고 그 후에 서버 인강을 들을예정인데, 다른 답변을 보니 서버에서 다시 설정을 해야된다고 말씀을 하셨습니다. 작은 게임을 만들기위해 이 문제를 고치고 여러가지 간단한 게임을 만들어보고 익숙해지고 싶은데, 어떻게 하면 이문제를 해결할 수 있을까요?? 이 강의로 c# 도 처음 접해보는 저로서는 어떻게 구글링 해야될지도 막막하네요. 아무리 검색해봐도 안나오네요. (참고로 Use Gravity 체크도 해제해봤고, Freeze Rotation도 체크해봤습니다.)
해결됨
유니티 기초 챌린지: 2D부터 3D까지 나만의 게임 만들기
안녕하세요. 11월 30일 강의업데이트가 안되어 있네요. 추후 강의 업데이트가 늦어질 경우, 별도 공지를 해주시면 감사하겠습니다.
해결됨
AI 시대의 혁신적인 게임 개발 입문 with Unity6
콘솔창에서 출력이 안되는데 무슨이유일까요??
미해결
[유니티 레벨 업!] 모듈식으로 개발하는 아이템 시스템
이번에 제대로 모듈식으로 학습해보고 싶어서 강의 3개를 모두 구매했는데요 아이템 -> 스킬 -> 퀘스트 순서로 학습해도 이해하는데 무리가 없을지 궁금합니다
해결됨
게임 엔진 만들기 - Directx11와 imgui를 이용하여 기반 구조 만들기 (PART1)
혹시 영상이 안되는 이유가 있을까요? Members-Only Contents 라고 뜨네요
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
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 기반으로 만들고 있습니다. 클라로 지원을 할예정인데 Part7만을 기반으로 포폴을 만들어도 괜찮나요? 그리고 DB연동같은 부분들을 해보고싶은데 Part8을 듣지 않고도 Part9부터 들어도 괜찮을까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요, 해당 강의에서 만든 코드 기반으로 제 게임에 맞춘 서버를 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# 서버 연동 기초)
.
해결됨
유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
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: 유니티 엔진
어제까지 됬었는데, 갑자기 안됩니다. 찾아보니 갑자기 또 된다고 하시는분 있던데.. 해결 방법 아시는분 답변 부탁드립니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
.