inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

Connect를 이용하여 여러소켓 생성후 문제점

미해결

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

안녕하세요 루키스님 정말 강의 도움 많이 받고 있어요 !! 소켓을 10번 생성과함께 커넥트를 요청하는 부분에 0.1초 딜레이를 주면 (*대부분*) 잘작동하더라구요 하지만, 저 딜레이를 빼면 아래 그림과같은 에러가 나와요! 저는 이것을 비동기에서 발생하는 문제점이라고 생각했습니다. 그래서 Receive에 _lock을 걸어서 실험도해봤지만 여전히 같은 오류를 내고 있더라구요 혹시 이런 에러가 발생하는 부분의 가능성이나 해결방법이 어떤게 있을까요? 딜레이를 주는경우 대부분 잘되는것은 비동기 문제가 맞는걸까요?

  • C#
  • network
  • unity
neohtux 댓글 8 좋아요 0 조회수 1668

Player GameObject의 name이 이상해요.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

전 캐릭터 오브젝트 이름을 Player로 하고 있는데, 이런 식으로 생성되는 캐릭터들의 이름에 Player_Root이 붙더니 실행할 때 마다 이름이 초기화가 되지 않고 _Root가 계속 뒤에 붙고 있습니다. vs에서 확인해보니, Root.name = $"{original.name}_Root"; 이후에 Original의 name도 뒤에 _Root가 붙고 있습니다.

  • C#
  • unity
leomessi 댓글 3 좋아요 0 조회수 340

mac에서 실행창

미해결

파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)

실행이 되는데 깨져서 나옵니다.

  • python
  • pygame
  • GUI
댓글 3 좋아요 0 조회수 656

transform.TransformDirection()에 대한 질문입니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

안녕하세요 강의를 듣다 의문점이 생겨 질문을 드립니다 Debug.DrawRay()와 Physics.RaycastAll()은 월드를 기반으로 되어있고 레이저를 유니티짱이 바라보는 방향(로컬)으로 쏘기위하여 Vector3 look = transform.TransformDirection(Vector3.forward);로 좌표를 대체하셨는데, 1. Vector3.forward는 월드벡터를 나타내고, transform.TransformDirection()은 로컬벡터를 월드벡터로 바꾸는 기능을 한다고 알고 있습니다. 이것은 월드벡터를 월드벡터로 바꾸는 작업이라고 생각되어 이해가 잘 가지 않습니다. 2. 또, look 대신 Debug.DrawRay()와 Physics.RaycastAll()에 transform.forward를 집어넣어도 같은 기능을 하는 것 같은데 이렇게 써도 되는건지 궁금합니다.

  • C#
  • unity
도곡 댓글 2 좋아요 2 조회수 909

Input Manager 강의를 듣고 이해가 안되는 부분이 있어 질문드립니다

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

안녕하세요 유니티 처음이라 이해가 잘 안되는 부분이 많아 다시 강의를 복습하던 도중에 이해가 안되는 부분이 있어 질문드립니다 Input Manager 강의 5분 30초 쯤에 보면 Manager 클래스에 InputManager를 생성할려고 InputManager _input = new InputManager(); public static InputManager Input { get { return s_instance._input; } } 이런 코드를 작성하셨는데 이 부분이 이해가 잘 안됩니다 1. Mangers 객체인 s_instance 는 static 변수로 선언을 했는데 왜 InputManager 객체인 _input은 static 변수로 선언하지 않았는지 그 이유가 궁금합니다 Manger 객체와 똑같이 입력을 처리하는 InputManager 객체는 1개만 필요할텐데 static이 아닌 일반 변수로 선언한 이유가 궁금합니다. (InputManager를 static 변수로 선언하면 안되나요??) 2. InputManager _input = new InputManager(); public static InputManager Input { "get { return s_instance._input; }" } "get { return s_instance._input; }" 이 코드에서 s_instance.input을 한 이유가 궁금합니다 그냥 get { return _input; } 을 하면 안되는 이유가 궁금합니다 Input을 사용할때 Mangers.Input.KeyAction 이런식으로 사용될텐데 Managers 클래스 안에 _input이라는 변수가 정의되어 있는데 왜 굳이 s_instance. 을 붙이는 이유가 궁금합니다 매번 친절하고 자세한 설명 감사드립니다

  • C#
  • unity
시슴 댓글 2 좋아요 0 조회수 294

제공되는 학습자료는 없나요?

미해결

김대리님 이게 바로 업무 자동화입니다 (엑셀 + 파이썬)

강의와 관련있는 질문 을 남겨주세요. • 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등) • 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색 을 해주세요. (중복 질문을 자제해주세요.) • 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’ 를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달 에도 요령이 필요합니다. • 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요. • 강의실 페이지 (/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다. • 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재 해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드 를 남겨주세요! 구체적인 질문 일수록 명확한 답을 받을 수 있어요. • 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요. • 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요 . • 정확한 질문 내용과 함께 코드 를 적어주시거나, 캡쳐 이미지 를 첨부하면 더욱 좋습니다. 기본적인 예의 를 지켜주세요. • 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용 은 스팸 처리 등 제재를 가할 수 있습니다.

  • 인프런 신규강의 (유료)
  • excel
  • python
  • 인프런 신규강의 (유료)
kimdaehwan 댓글 3 좋아요 0 조회수 450

생성자가 제대로 작동하지 않습니다.

미해결

파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자

marine 생성자가 작동을 안합니다... 생성자를 전부 맞게 적은 것 같은데 다음과 같은 오류가 발생해요. line 113, in <module> m1 = Marine() TypeError: __init__() missing 4 required positional arguments: 'name', 'hp', 'speed', and 'damage' from random import * # 일반 유닛 class Unit: def __init__ ( self , name , hp , speed): self .name = name self .hp = hp self .speed = speed print ( "{0} 유닛이 생성되었습니다." .format(name)) def move ( self , location): print ( "[지상 유닛 이동]" ) print ( "{0} : {1} 방향으로 이동합니다. [속{2}]" .format( self .name , location , self .speed)) def damaged ( self , damage): print ( "{0} : {1} 데미지를 입었습니다." .format( self .name , damage)) self .hp -= damage print ( "{0} : 현재 체력은 {1}입니다." .format( self .name , self .hp)) if self .hp <= 0 : print ( "{0} : 파괴되었습니다. " .format( self .name)) # 공격 유닛 class AttackUnit(Unit): def __init__ ( self , name , hp , speed , damage): Unit. __init__ ( self , name , hp , speed) self .damage = damage def attack ( self , location): print ( "{0} : {1} 방향으로 적군을 공격합니다. [공격력 {2}] " \ .format( self .name , location , self .damage)) class Marine(AttackUnit): def __int__ ( self ): AttackUnit. __init__ ( self , "마린" , 40 , 1 , 5 ) def stimpack ( self ): if self .hp > 10 : self .hp -= 10 print ( "{0} : 스팀팩을 사용합니다. (hp 10 감소)" .format( self .name)) else : print ( "{0} : 체력이 부족하여 스팀팩을 사용하지 않습니다." .format( self .name)) class Tank(AttackUnit): seize_developed = False def __int__ ( self ): AttackUnit. __init__ ( self , "탱크" , 150 , 1 , 35 ) self .seize_mode = False def set_seize_mode ( self ): if not Tank.seize_developed: return # 현재 시즈모드가 아닐 때 -> 시즈 모드 if not self .seize_mode: print ( "{0} : 시즈모드로 전환합니다." .format( self .name)) self .damage *= 2 self .seize_mode = True else : print ( "{0} : 시즈모드를 해제합니다." .format( self .name)) self .damage /= 2 self .seize_mode = False class Flyable: def __init__ ( self , flying_speed): self .flying_speed = flying_speed def fly ( self , name , location): print ( "{0} : {1} 방향으로 날아갑니다. [속도 {2}]" .format(name , location , self .flying_speed)) class FlyableAttackUnit(AttackUnit , Flyable): def __init__ ( self , name , hp , damage , flying_speed): AttackUnit. __init__ ( self , name , hp , 0 , damage) Flyable. __init__ ( self , flying_speed) def move ( self , location): print ( "[공중 유닛 이동]" ) self .fly( self .name , location) class Wraith(FlyableAttackUnit): def __init__ ( self ): FlyableAttackUnit. __init__ ( self , "레이스" , 80 , 20 , 5 ) self .clocked = False def clocking ( self ): if self .clocked == True : print ( "{0} : 클로킹 모드 해제합니다." .format( self .name)) self .clocked = False else : print ( "{0} : 클로킹 모드 설정합니다." .format( self .name)) self .clocked = True def game_start (): print ( "[알림] 새로운 게임을 시작합니다." ) def game_over (): print ( "Player : gg" ) print ( "[Player] 님이 게임에서 퇴장하였습니다." ) # 게임 진행 game_start() m1 = Marine() m2 = Marine() m3 = Marine() t1 = Tank() t2 = Tank() w1 = Wraith() attack_units = [] attack_units.append(m1) attack_units.append(m2) attack_units.append(m3) attack_units.append(t1) attack_units.append(t2) attack_units.append(w1) for unit in attack_units: unit.move( "1시" ) Tank.seize_developed = True print ( "[알림] 탱크 시즈 모드 개발이 완료되었습니다." ) for unit in attack_units: if isinstance (unit , Marine): unit.stimpack() elif isinstance (unit , Tank): unit.set_seize_mode() elif isinstance (unit , Wraith): unit.clocking() for unit in attack_units: unit.attack( "1시" ) for unit in attack_units: unit.damaged(randint( 5 , 20 )) # 공격은 랜덤으로 받음 # 게임 종료 game_over()

  • python
댓글 1 좋아요 0 조회수 575

백그라운드/메인 쓰레드 그리고....

미해결

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

1. PackatQueue 를 OnRecvcallback 을 통해 거치게되면 유니티에서 사용되는 메인쓰레드로 사용할 수 있다는 얘기로 들리는데. 유니티에서 그렇게 작동하도록 만든것인가요? 즉 유니티 오브젝트와 서버를 연동시키려면 쓰레드는 무조건 큐( Push , Pop )를 거쳐서 와야한다? 라고 유니티 측에서 규칙을 정해둔거? 그리고 2. 전 강의에서 설명하셨을 수도 있는데 너무 많은게 지나가서 질문 드립니다... HandlePacket 만으론 유니티와의 연동이 되지않은 걸로 보이는데 HandlePacket 을 자동화해서 사용하는 이유가 있나요. 제가 이해한 바로는 1번에 해당하는 경우에만 유니티가 제대로 작동되는 걸로 보여져 HandlePacket 은 뭘하는지 잘 모르겠습니다. 3. 기존에는 (유니티 연동 전) 백그라운드 풀에서 쓰레드를 뽑아와서 쓴다고 하셨는데.. 이 부분은 제가 잊은건지 모르겠지만.. 쓰레드 풀 자체를 어디서 생성해줬는지 기억이 가물가물합니다... 분명 첫수업시간 때 Task를 이용해 쓰레드 풀을 만드는 건 어렴풋이 기억이 나는데 그런 코드는 여기서 작성한 기억은 없고... 쓰레드 자체가 어디에서 왔는가에 대해 알려주실 수 있나요.. 메모하면서 진행해왔는데 찾기가 어렵네요. 4. 그리고 복습하는 도중에 알려주신 모든 부분을 응용해서 학습할 수 있게 해주신점 감사드립니다. 그런데 한가지 ThreadLocal을 이용한 최적화는 파이널 프로젝트에 응용한게 없는듯한데 파트 7정도 때에나 이런 것들을 한꺼번에 볼 수있을까요. 감사합니다. ---------------------------------------------------

  • C#
  • unity
  • network
J Han 댓글 1 좋아요 0 조회수 482

강의에서 말씀하신 방식으로 기업의 코딩테스트도 통과할수있나요?

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

이번에 다루신 문제에는 입력이 작았기 때문에 for문 내부에서 sort를 해도 문제가 없었다고 생각합니다. 그러나 코딩테스트 경험상, for문안에 sort()를 넣으면 대부분 시간 초과 오류가 났던 경험이 있는데요. 첫째, 입력이 더 큰 경우에 이 방식(매번 정렬)을 써도 되는지 둘째, 만약 시간 복잡도가 너무 커져서 시간초과가 날 가능성이 높다면 더 효율적인 방법은 없을까요?

  • python
  • 코테 준비 같이 해요!
drather 댓글 2 좋아요 12 조회수 434

page not found가 계속 뜹니다.

해결됨

파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap

강의내용대로 따라했는데 저렇게 뜹니다. 강의내용을 돌려서 제가 pycharm속 코드들과 비교해봐도 다른게 없는데 제가 어느부분을 놓치고 있는 걸까요?

  • django
  • bootstrap
  • python
김아영 댓글 6 좋아요 1 조회수 543

생선판매 while 구문 질문

해결됨

Python 부트캠프

fish = 5 while True: num = int(input("고등어 몇 개를 구매하실 건가요?")) if fish >= num: fish = fish - num print(f'고등어 {fish}개 남았습니다.') if fish == 0: print('완판되었습니다.') break else: print(f'손님, 죄송하지만 구매할 수 있는 고등어 {fish}개 남았습니다.') fish = 0 break 위 예제에서 이 코드대로 실행이 된다면 5마리일 때 6마리를 구매하겠다고 하면 바로 남은 생선이 0마리가 되어버리는 것 아닌가요? else: print(f'손님, 죄송하지만 구매할 수 있는 고등어 {fish}개 남았습니다.') 이렇게 되어야 완판 될때까지 판매를 하는 것 아닌가요?

  • python
이승철 댓글 1 좋아요 0 조회수 303

span.imax

미해결

파이썬으로 영화 예매 오픈 알리미 만들기

안녕하세요. 그 사이 cgv 페이지 구조가 바뀌었는지 그냥 접속했을때와 아이프레임 소스 주소 따서 접속했을때 보여지는 페이지가 다릅니다. http://www.cgv.co.kr/theaters/?areacode=01&theaterCode=0013&date=20200718 http://www.cgv.co.kr/common/showtimes/iframeTheater.aspx?areacode=01&amp;theatercode=0013&amp;date=20200718 아이프레임 소스 주소로 연결되는 페이지에는 imax관이 포함되어 있지 않아서 강의를 따라갈수가 없네요. 페이지 구조가 어떻게 바뀐건지 잘 모르겠습니다.

  • python
Lee Soyon 댓글 1 좋아요 -1 조회수 682

in 구문에서 튜플 관련 질문

해결됨

Python 부트캠프

10 in (10,20,30), (2) in (10,20,30), (1,2) in (10,20,30) 강의에서 위 코드를 실행하였을 때 (True, False, False)가 나왔는데 제가 아래 코드를 실행했을 때에 10 in (10,20,30), (20) in (10,20,30), (10,20) in (10,20,30) (True, True, False) 가 나왔습니다. 리스트의 경우에는 [2]를 in 구문으로 할 수 없지만 튜플에서는 (20)을 튜플로 인식하는 것이 아닌 그냥 숫자로 인식을 해서 True가 나오는 건가요?

  • python
이승철 댓글 1 좋아요 1 조회수 263

문제의 def count관련된 질문입니다!

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

문제에서 받는변수로 len이라는 길이만 받으시고 함수에서 Line배열을 사용하셨는데요. 함수 밖에서 설정된 Line배열 이름을 함수 안에서 사용해도 원래 인식이 가능한것인가요??? def count(len,Line): 이런식으로 하지않으시고 Line를 함수안에서 바로 호출하셔서 그것이 원래 가능한 것인지 궁금해 질문드립니다!

  • 코테 준비 같이 해요!
  • python
proshy1 댓글 1 좋아요 0 조회수 303

python IDLE

미해결

파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자

맥북으로 강의 듣고 있는데 vscode로 파이썬 익스텐션 설치 안하고 파이썬 IDLE로 해도 강의 끝까지 시청 가능한가요

  • python
댓글 4 좋아요 0 조회수 382

TCP Remote Access 관련 질문입니다.

해결됨

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

강사님의 서버개발 강의를 다 보고 완성해서 Windows App, Android App을 만들어 테스트를 해보려고 했는데 원격지에서 TCP 접속이 계속 Timeout이 발생합니다. 서버와 클라이언트(Windows, Android)는 동일한 Hub 내에서 동작하고 있어요 고정 IP 하나에서 DHCP로 내부 아이피 할당받아 사용중입니다. 예로 서버의 내부 아이피는 192.168.0.40 이고 포트는 7777번 사용 중이고 Client는 192.168.0.40:7777로 접속을 시도하는 중이에요. 혹시나 Server 쪽에서 In/OutBound 정책을 설정을 안했나 싶어서 TCP 7777번 포트를 모두 열어놓았으나 Timeout이 발생해 모든 포트를 다 열어서 테스트했는데 동일하게 Timeout이 발생합니다. 원격지에서 TCP서버로 접속하려면 다른 설정이나 코드가 필요한것인가요?

  • C#
  • network
  • unity
댓글 5 좋아요 0 조회수 433

GameRoom 관련 질문입니다.

해결됨

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

아무리 보고 또 봐도 생각을 아무리 해봐도 이해가 잘 안돼서 질문 남깁니다. 질문이 너무 잦아 부끄러운 마음이 먼저 드네요..ㅠ class ClientSession : PacketSession { public GameRoom Room { get; set; } public override void OnConnected(EndPoint endPoint) { Console.WriteLine($"OnConnected: {endPoint}"); Program.Room.Enter(this); // 1 } public override void OnDisconnected(EndPoint endPoint) { SessionManager.Instance.Remove(this); // 2 if (Room != null) { Room.Leave(this); Room = null; } Console.WriteLine($"OnDisconnected: {endPoint}"); } ... OnConnected 메소드에서 주석 1번과 OnDisconnected 메소드에서 주석 2번 영역인데요. OnConnected 에서는 Program 의 Room에 입장을 시키는데 어째서 OnDisconnected 에서는 Room에 Leave를 하는지 아무리봐도 모르겠습니다. 코드대로 읽어보면 Enter는 Program영역이고 Leave는 ClientSession의 영역이라 서로 다른 처리를 하고있는게 아닌가 하는 생각이 들고요. 또 하나 신기하면서도 이해가 안되는 부분은 public static void ClientChatHandler(PacketSession session, IPacket packet) { ClientChat chatPacket = packet as ClientChat; ClientSession clientSession = session as ClientSession; // 여기! if (clientSession.Room == null) return; clientSession.Room.Broadcast(clientSession, chatPacket.chat); } clientSession에는 Room을 넣어준 적이 없는데 if를 통과하는 부분이에요. 분명 어디선가 초기화가 되고 있다는 뜻인데 암만 봐도 모르겠습니다... ㅠ 심지어 ClientSession의 Room 은 초기화 되는 곳이 그 어느곳을 찾아봐도 없어요.ㅠ

  • network
  • unity
  • C#
댓글 2 좋아요 0 조회수 530

캐스팅 질문 드려요.

미해결

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

Connect 구현 중에 캐스팅 코드관련해서 궁금한 것이 있습니다. 명시적 캐스팅을 진행할 때 Socket socket = (Socket) args.UserToken; 이렇게 진행한다고 배웠는데 Socket socket = args.UserToken as Socket; as 키워드로 하는 캐스팅이 나와 당황스러웠어요. 둘 차이점이 있나요?

  • C#
  • unity
  • network
댓글 5 좋아요 3 조회수 411

numpy 와 pandas 표준편차 결과 차이가 나는 이유는 무엇인가요?

미해결

30분 요약 강좌 시즌2 : Python 활용편

안녕하세요? 좋은 강의에 도움을 많이 받고 있습니다. numpy 패키지의 표준편차를 구한 결과와 Pandas 패키지의 표준편차를 구한 결과가 다른데 그 이유는 무엇인지요? import pandas as pd import numpy as np data = np.arange(0, 50, 10) a = pd.Series(data, index = ['a','b', 'c', 'd', 'e']) print(np.std(a)) print(a.std()) 결과가 아래와 같이 다르게 나옵니다. 14.142135623730951 15.811388300841896

  • python
아쿠아라이드 댓글 1 좋아요 1 조회수 829

인기 태그

인프런 TOP Writers

주간 인기글