inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

TLS 관련하여 질문 드립니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

TLS를 사용하면 공용 공간에 있는 데이터를 최대한 많이 자신의 쓰레드로 가져와서 각각 처리하고 다시 돌려주는걸로 이해를 했는데 그럼 나중에 각각의 쓰레드에서 처리하고 난 결과가 서로 상충되는 경우가 나타날수도 있지 않나요? 아니면 한명씩 싱글 쓰레드로 처리하는데 가져오는 데이터 양이 많아져서 처리속도가 빨라지는것이라고 이해해야 할까요? 1 Rookiss 2021.03.15 데이터를 갖고 간다는게 의존성이 서로 묶여 있는 데이터를 각자의 TLS로 갖고 가라는 것이 아니고 독립적으로 사용할 수 있는 (Buffer라거나) 데이터를 갖고 가는 것이라 상관없습니다. 그리고 애당초 TLS에 자신만 사용할 객체를 할당할 수도 있구요. 위 글에 대하여 이렇게 답변을 주셨습니다. 이에 대하여 궁금한 점이 독립적으로 사용할 수 있는 데이터를 갖고 가서 처리하는 것이라면 TLS를 사용하지 않고도 처리하면 되는 것이 아닌가요? 위 과정에서 처리한 정보들이 계속해서 저장되어야 하기 때문에 TLS가 의미가 있는 것인지.. lock을 걸어 처리하고 있는 복잡한 일(의존성 있는 데이터?)을 가져와서 각자 처리한다는 내용이 잘 이해가 안되네요 ㅠㅠ

  • C#
  • unity
  • 네트워크
동혁 댓글 2 좋아요 1 조회수 173

기능 구현 질문드립니다.

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

강의 영상 알차게 잘 보고 있습니다! 출시까지 목표로 두고 있는 프로젝트라고 하셔서 캐릭터 장비요소는 필수라 생각되어 혹시나 장비드랍 및 장착기능 구현이 업데이트 내용에 있나 궁금해서 여쭤봅니다. 1.장비아이템도 드랍 및 가챠뽑기방식 2.장비아이템이 추가된다면 같은 장비라도 옵션이 다르게 보여지고 인벤토리로 저장되는 방식으로 구현되는지 궁금합니다. (예시 : 디아블로 아이템 옵션수치 및 옵션랜덤 방식)

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
안상후 댓글 2 좋아요 0 조회수 197

(Interlocked) Race condition에서 number가 0이 되는 경우가 너무 신기합니다.

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Interlocked 강의 부분에서 전역 변수 number = 0에 대해 Thread 1은 for문으로 number++ Thread 2는 for문으로 number-- 여기서 Thread 두 개가 race condition으로 인해 반복횟수가 많아지면 number를 가져오고, 연산하고 대입하는 과정에서 원자성이 보장되지 않아 number가 변한다고 설명하셨는데요. 오히려 그러면 for문에서 1만번의 반복 과정에서는 number = 0 으로 제대로 나타났는데, 그게 이해가 되지 않습니다. 반복 과정에서도 각 Thread가 race condition이기 때문에 number가 변동할 것 같은데, 제 컴퓨터로 돌려봐도 어느정도 연산량이 적으면 number = 0으로, 이상하게 올바르네요. 이유가 무엇일까요? Thread 2가 실행되기 전에, 컴퓨터의 연산이 빨라서 Thread 1에서 number를 1만번 ++의 계산이 끝나는 걸까요?

  • C#
  • unity
  • 네트워크
Rein 댓글 2 좋아요 0 조회수 151

WriteLock이 기존 진행 되는 ReadLock이 끝남을 기다리는 과정에 대해서 질문드립니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

int desired = (Thread.CurrentThread.ManagedThreadId << 16) & WRITE_MASK; while (true) { for(int i = 0; i < MAX_SPIN_COUNT; i++) { if (Interlocked.CompareExchange(ref _flag, desired, EMPTY_FLAG) == EMPTY_FLAG) return; } Thread.Yield(); } desired 부분에서 마스크를 통해 WriteThreadId를 제외하고 밀어버린 뒤 Interlocked부분에서 비교를 통해 ReadLock과 WriteLock이 없는지 비교하고 있습니다. 위 과정에서 만약 먼저 ReadLock이 잡혀있다면 ReadLock이 풀릴 때 까지 기다리게 되는데 만약 끊임없이 Read가 일어나 ReadLock이 풀리는 틈이 없어 Write가 되지않는 극단적인 경우는 일어나지 않는건가요? 혹시라도 일어나지 않는다면 Read 하는 과정이 매우 짧기 때문에 그런 일이 발생하지 않는 것인지 궁금합니다.

  • C#
  • unity
  • 네트워크
동혁 댓글 2 좋아요 0 조회수 179

안녕하세요 강의 무한로딩 문의합니다.

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

9월 20일 추가 하신 강의 중 가챠 2 강의 제외하고 모두 무한 로딩 뜨는데요 혹시 무슨 문제 일까요?

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
쿠쿠 댓글 3 좋아요 0 조회수 341

작성된 코드 다운로드 에 대해서 질문드려요

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

안녕하세요 다름이 아니라 파트가 끝난 코드는 다운로드 받을수 있게 안되나요? 똑같이 따라 친거같은데 무언가 오류도 많이 발생하고 잘안되네요 파트가 끝난 부분에 대해서 코드 다운로드 를 제공해주실수 있는지 문의드립니다.

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
THEPLACE 댓글 2 좋아요 0 조회수 168

안녕하세요 어플 에서 실행

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

안녕하세요 선생님 컴퓨터로 강의 실행은 잘되는데 인프런 어플로 재생했을때 34강 부터 실행이 안됩니다 ㅠㅠ 동영상을 준비중에 있습니다 이렇게 나옵니다 확인 부탁드립니다

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
anhyeokjun 댓글 3 좋아요 0 조회수 207

UI 창이 안떠요

해결됨

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

UI 화면 관리 시스템 Pt4와 게임설정 강의에서 팝업 창과 설정창이 안뜹니다.. 하이어라키 창에서는 창이 존재는 하는데 씬창과 게임 창에서 보이지 않습니다.. .

  • C#
  • unity
  • 객체지향
댓글 2 좋아요 0 조회수 278

지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

안녕하세요. 서버를 IOCP로 준비 중입니다. 레퍼런스는 루키스님 C++ 서버 강의를 생각하고 있습니다. 문제가 클라이언트인데 지금 강의가 UE5 + IOCP 연동뿐이라서 그것만 참고하기는 부족하다는 생각이 들었습니다. 그래서 컨텐츠까지도 구현되어 있는 유니티 클라 강의를 일단 따라가고 서버는 C++ IOCP와 연동하고 싶은데, 이게 될까 싶어서 문의 드려 봅니다. 물론 현업자나 경력자 입장에서는 되겠죠. 수많은 서비스가 이종 언어 간에도 잘 돌아가니까요. 신입 공채 지원이 아니라 경력 지원으로 들어가려고 생각 중이기 때문에, 이걸 이뤄내면 참 좋겠지만 걱정이 앞서는 건 사실입니다. 제가 현재 결제해 둔 루키스님 C# 쪽 강의가 Part4: 게임서버, Part5: 데이터베이스, Part7: MMO 컨텐츠 구현, Part9: MMO 컨텐츠 구현 이렇게 4가지입니다. 클라를 C#으로 할 거면 Part3: 유니티도 결제해야 할 것 같긴 한데, 이 험난한 길을 가고자 하는 한 마리 늙은 양에게 조언 부탁드립니다.

  • C#
  • unity
literate_t 댓글 2 좋아요 0 조회수 353

데드락 이렇게 이해했는데 맞을까요?

미해결

[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이 잠겨있어서 둘다 아무것도 못하는 상황 = 무한 대기 걸려서 프로그램이 멈춘것 처럼 보이는 데드락 상황 이렇게 이해했는데 맞을까요?

  • C#
  • unity
  • 네트워크
아휘 댓글 2 좋아요 0 조회수 208

BaseUI, ConfirmUI에서 질문있습니다.

해결됨

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

함수에서 어떤 행위를 하고 Action 변수를 사용하고 null로 초기화 해주는데 이유가 궁금합니다.

  • C#
  • unity
  • 객체지향
moonfgg 댓글 2 좋아요 0 조회수 196

쓰레드의 작업 순서가 너무 헷갈립니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요. 강의 잘 보고 있습니다. 질문 드립니다. t1, t2 두 개의 쓰레드를 만들고 실행시켰습니다. t1.Start(); t2.Start(); Start()라는 함수가 쓰레드 클래스 말고 싱글 쓰레드 개발환경에서의 그냥 아무 함수라고 가정한다면, t1.Start()가 먼저 실행되고 Start함수가 끝날때 까지 기다린 후 t2.Start()가 먼저 실행되는게 '문법적으로' 맞잖아요?? 하지만 쓰레드 클래스의 경우에는 t1.Start() 가 들어왔을때는 t1 쓰레드한테 어떤 일을 실행 시킨 후 t1이 작업 끝나던 말던 바로 다음줄 코드를 실행 시키는건가요? 즉, t2.Start() 를 실행 시키는건가요? 그렇게 해서 각 쓰레드(일꾼)이 작업을 하다 여러 문제들이 생기는거구요 멀티 쓰레드 개발환경에서 일어날 수 있는 문제점은 확실하게 이해하고 있는데, 제일 첫 부분인 이게 도통 이해가 안돼서 질문 남깁니다. 그동안 해오던 코딩이 부정당하는 기분이라... 쓰레드 클래스만 저런식으로 작동된다는 정보가 어디에도 없네요.. 문법적으로 저렇게 된다고 확신이 필요합니다 ㅠㅠ 요약하자면, 컴파일러는 'Start 함수' 를 만나게 될 경우 그 쓰레드한테 작업을 실행시키지만, 그 쓰레드의 작업을 기다려 주지는 않고 바로 다음 줄 코드를 실행 시키는건가요?

  • C#
  • unity
  • 네트워크
댓글 2 좋아요 0 조회수 232

안녕하세요 루키스님 코드 라이선스 관해서 질문드립니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

과거에 해당 강의로 공부하고 최근에 다시 복습 중인데 혹시 코드 라이선스가 어떻게 될까요? 외주 작업을 받게 돼서 네트워크 관련 코드를 작성하려고 하는데 문제가 생길 수 있을 거 같아 질문드립니다. 덕분에 공부 너무 잘 하고 있습니다. 감사합니다.

  • C#
  • unity
  • 네트워크
ghwls328 댓글 2 좋아요 0 조회수 162

웹서버로 구현되는 기능들이 궁굼합니다.

미해결

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

안녕하세요! 선생님 강의를 거의 빠짐없이 듣고 열심히 공부하고 있는 수강생입니다. MMORPG 개발 9개 시리즈부터 번외편, M1 강의까지 2~3회씩 반복해서 수강하며, 이제는 새로 올라오는 M2 강의를 매주 주말마다 기다리고 있습니다! 강의를 기다리며 채팅 기능, 길드, 파티, 우편 시스템을 직접 구현해보려고 하는데, 처음으로 강의 내용과 다른 것을 시도하다 보니 제가 제대로 하고 있는지 확신이 들지 않더라고요. 제가 생각하기에 채팅, 길드, 파티, 우편 기능은 ACCOUNT 서버처럼 WEB 서버로 구현하는 게 좋을 것 같아서, MMORPG 시리즈에서 배운 WEB 서버를 기반으로 위에 기능들을 하나씩 만들어가고 있습니다. 서론이 길었네요 ㅠㅠ 궁금한 점이 있습니다! 실제 현업에서는 위에 언급한 기능들이 웹 서버로 구현되는지 아니면 게임 서버로 구현되는지 궁굼합니다!

  • C#
  • unity
  • mysql
  • MMORPG
  • ef-core
  • asp.net-web-api
소리차 댓글 2 좋아요 0 조회수 267

6. 이벤트 생성, 호출 이벤트 변수 null 발생

미해결

윈폼C#.NetFramework 0.5년차~3년차(파트1)

안녕하세요. 이벤트 생성, 호출을 하다가 다시 배운거 정리하는데 이번에도 문제가 있네요... 제가 소스의 일부분을 드리는것 보다 프로젝트를 통으로 드려야지 문제를 확인할 수 있을거 같아서 git에 올렸어요 https://github.com/justkjy/ThreadTest 그래도 간단하게 요약 하면 public delegate void SampleEventHandler(int persent); public event SampleEventHandler OnEvent; 작성한다음에 버튼을 클릭하면 이벤트가 발생됩니다. OnEvent가 계속 null이네요.. BeginInvoke 해도 null이구.. 그리고 요즘 C#은 kotlin 처럼 널 처리(?.)도 하네요.. 언제부터 이런 기능이 생겼지 ..... private void button1_Click(object sender, EventArgs e) { /*this.BeginInvoke(new Action(() => { OnEvent(1); }));*/ OnEvent?.Invoke(10); }

  • C#
  • .net
just kim 댓글 3 좋아요 0 조회수 261

스크롤에 아이템을 선택했을때 강조하는 효과는 어떻게 구현하면 될까요?

해결됨

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

안녕하세요. 인벤토리 스크롤 영역에 선택한 아이템을 강조하는 효과는 어떤식으로 구현하면 될지 궁금합니다. 강의를 본 뒤 선택한걸 강조하는 내용이 있나 돌아봤는데 해당 내용은 없는것 같아서요. 아이템을 선택하면 선택된 아이템을 강조하는 효과의 이미지를 활성화 시키려고 했는데 오브젝트를 재활용하는거다 보니 엉뚱한 오브젝트에 이미지가 활성화 되는데 어떤식으로 해야 좋은 구조로 선택표시를 할 수 있을지 알려주실 수 있으실까요?

  • C#
  • unity
  • 객체지향
댓글 2 좋아요 0 조회수 249

Item 깨짐 현상

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

10강 수강 중 Other > Item에 있는 아이템 삽입 시 화면처럼 마젠타 색으로 모든 아이템이 전부 깨져서 표시됩니다 제가 가지고 있는 패키지에는 Item 항목이 없어 섹션3의 패키지 파일을 다운 받아 유니티에 드래그드롭으로 넣고 Import 된 Item을 꺼냈더니 저렇게 뜹니다 어떻게 해결해야 하는지 질문 드립니다

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
KUMU 댓글 2 좋아요 0 조회수 345

System.InvalidOperationException: '크로스 스레드 작업이 잘못되었습니다. 'label1' 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다.'

미해결

윈폼C#.NetFramework 0.5년차~3년차(파트1)

안녕하세요. 강의를 중반 쯤 듣고 강의한 내용 정리할겸 해서 새로운 프로젝트를 생성해서 테스트 진행 중입니다. 분명 강의 따라하면서 코딩을 할땐 잘 되었는데 제가 프로젝트를 만들어서 시작 하면 아래처럼 에러가 나오네요 일단 제가 작성한 코드를 알려드리면 아래와 같습니다. =================================== namespace TestThread { public partial class Form1 : Form { Thread thread1 = null; Thread thread2 = null; public Form1() { InitializeComponent(); } delegate void MySettingDelegate(string str); private void btnThread_Click(object sender, EventArgs e) { thread1 = new Thread(new ThreadStart(ThreadFirst)); thread1.IsBackground = true; thread1.Priority = ThreadPriority.Normal; thread1.Start(); thread2 = new Thread(new ThreadStart(ThreadSec)); thread2.IsBackground = true; thread2.Priority = ThreadPriority.Normal; thread2.Start(); } private void ThreadFirst() { MessageBox.Show("Thread1"); } private void ThreadSec() { MessageBox.Show("Thread2"); } private void Form1_Load(object sender, EventArgs e) { MySettingDelegate mySettingDelegate = MySetting; mySettingDelegate.BeginInvoke("aaa", null, null); } private void MySetting(string str) { label1.Text = str; // ----- 여기서 문제 } } } ======================================= 좀 이해가 되는데 호출한 쓰레드에 작성된 label1 컨트롤에 새롭게 생성된 쓰레드에서 찾으려니 없는게 당연할듯 한데 ... 지금까지 강의을 따라하면서 저런 에러는 본적이 없거든요.... 분명 같은 코드인데 다른 코드를 생성하고 있나 하고 코드를 비교 해봐도 다를껀 없는데 ... 추가 이미지 입니다.

  • C#
  • .net
just kim 댓글 2 좋아요 0 조회수 363

C++강의 듣다가 왔습니다.

미해결

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

C++과 언리얼로 만드는 mmorpg 시리즈를 구매한 학생입니다. 1주차부터 이해가 안돼서 찾아보니 Part3 유니티 (클라 프레임워크) Part4 게임서버 (서버 프레임워크 ServerCore) Part7 게임서버&클라 연동 (클라 서버 연동 기본기) Part8 EF Core (ORM) 를 읽어보면 이해하기 쉽다고 하셨는데 part4. 게임서버는 C++강의로 들어도 괜찮을까요??

  • C#
  • unity
  • mysql
  • MMORPG
  • ef-core
  • asp.net-web-api
유민영 댓글 2 좋아요 0 조회수 309

인기 태그

인프런 TOP Writers

주간 인기글