청강문화산업대학교에서 언리얼 엔진, 게임 수학, 게임제작을 가르치고 있습니다.
- 이득우의 언리얼 C++ 프로그래밍, 넥슨 코리아 공식 교육 교재 선정 2023
- 스마일게이트 언리얼 프로그래머 양성 프로그램 언신(Unseen) 교육 총괄 2023
- 에픽게임즈 언리얼 공인 강사 (Authorized Instructor) 2022
- 에픽게임즈 개발자 지원 언리얼 데브그랜트 수상 2017
- 언리얼 서밋 2017, 2018, 2019 발표
- 시작해요 언리얼, UEFN 2022, 2023 웨비나 진행
- 대한민국 게임백서 2022 기술부문 편찬위원
- 부산인디커넥트페스티벌(BIC) 2022, 2023 심사위원장
Courses
Reviews
- Lee Deuk-woo's Unreal Programming Part 1 - Understanding Unreal C++
- Lee Deuk-woo's Unreal Programming Part 3 - Understanding Network Multiplayer Framework
- Lee Deuk-woo's Unreal Programming Part 1 - Understanding Unreal C++
- Lee Deuk-woo's Unreal Programming Part 2 - Understanding the Unreal Game Framework
- Understanding Game Math
Posts
Q&A
8강 중간, 분수대의 SetOwner 에 대해 궁금합니다.
네 사실 1인으로 기능 테스트를 해서 그렇게 고안했는데, 다인인 경우에는 어떤 플레이어에 소속된 분수대인지 미리 정보를 넣어줘야 되겠죠.
- 0
- 2
- 19
Q&A
ThirdPerson CDO 에러가 생깁니다.
네 해결되서 다행이네요~
- 0
- 3
- 24
Q&A
캐릭터 스탯 초기 설정 방법 질문
가장 무난한건 게임플레이 이펙트를 사용하는 건데요, 최근에는 대용량 데이터 테이블로도 가능해졌습니다. 제 인프런 강의에서는 이를 다루지 않는데, 다음주에 방송될 에픽게임즈 코리아 유튜브 영상에서 다루니 참고해주시면 될 것 같아요
- 0
- 2
- 22
Q&A
캐릭터가 움직이지 않습니다.
혹시 예제파일은 잘 동작하는지요? 5.7은 아직 프리뷰상태라 권장하긴 어렵고 깃헙의 5.4가 최신 공식 지원 버전입니다만 이후 버전에서 큰 문제 없이 사용할 수 있습니다.
- 0
- 3
- 23
Q&A
가비지컬렉션 주기를 짧게 유지하면 어떤 이슈가있을까요?
회수 연산 역시 공짜가 아니니 빈번하게 진행하면 연산 리소스가 낭비되겠지요. 중요한 상황에 회수한다고 힛치(랙) 현상이 발생할 수도 있고요~
- 0
- 2
- 23
Q&A
언라얼 공식 홈페이지 튜토리얼 강의에 질문 있습니다
안녕하세요.어떤 것이 정답이라고 할 순 없지만, 최근에는 블루프린트의 활용 비중이 높은 사례가 점점 많이 등장하고 있습니다. 관련 기사 : https://www.thisisgame.com/articles/401351이번 인프런 강의는 프로그래머의 C++ 역량 향상을 목표로 했기에 블루프린트를 최소화했습니다. 그리고 GAS 자체가 모든 것이 구현된 프레임웍은 아니기에, 게임에 맞는 기능 추가와 소스 코드 분석이 필요하고, 이를 위해서는 C++ 역량이 중요하게 필요합니다. 두 가지 모두 다 감안해서 공부해주시면 좋겠습니다.
- 0
- 2
- 26
Q&A
11강 TArray TSet 에 대해서 질문있습니다.
아마도 이름 관련 문자열에 인코딩이 잘 설정되지 않은게 아닌지요? 주어진 완성 예제와 비교해보시면 좋을 것 같습니다. C++에서 보통은 이터레이터를 기본으로 컬렉션을 순회하는 것이 원칙인데, 혹시 어떤 기능이 필요하신 걸까요?
- 0
- 1
- 34
Q&A
플레이어(Actor) 로 (리슨)서버에서 생성 되나요?
네 모두 잘 이해하신것으로 보여집니다.
- 0
- 2
- 39
Q&A
2강) HandleBeginPlay 의 역활이 궁금합니다.
안녕하세요.대부분 잘 이해하셨습니다. 부연설명하면,클라이언트 입장에서는 bReplicatedHasBegunPlay 속성의 값에 따라 OnRep_ReplicatedHasBegunPlay() 함수가 실행되는데, 처음 시작할 때 기본 값은 false이기 때문에 서버에서 이 값을 true로 처음 변경했을 때 OnRep_ReplicatedHasBegunPlay() 함수가 실행됩니다. 따라서 질문 주신 내용처럼 클라이언트가 접속하는 시점을 2가지 상황으로 나눠볼 수 있는데 호출 과정은 아래와 같이 정리할 수 있습니다. 1. 서버에서 BeginPlay() 호출 전 접속: 이 때는 일단 OnRep_ReplicatedHasBegunPlay()가 호출되지 않습니다. bReplicatedHasBegunPlay 값이 false이기 때문입니다. 그러다가 서버에서 BeginPlay() 함수를 호출하는 과정에서 bReplicatedHasBegunPlay 값이 true로 설정되고, 이 값이 네트워크를 통해 클라이언트로 전달되면 bReplicatedHasBegunPlay 값이 false에서 true로 변경되기 때문에 OnRep_ReplicatedHasBegunPlay()이 호출됩니다. 2. 서버에서 BeginPlay() 호출 후 접속: 이 때는 서버측 bReplicatedHasBegunPlay 값이 이미 true이기 때문에 이 값을 네트워크를 통해 클라이언트로 보냅니다. 클라이언트의 bReplicatedHasBegunPlay 기본 값은 false인데, 방금 네트워크를 통해서 true 값을 받았습니다. 따라서 이 때 OnRep_ReplicatedHasBegunPlay() 함수가 호출됩니다. 정리하자면, 서버에서는 HandleBeginPlay() -> BeginPlay() 호출 흐름으로 함수가 실행됩니다. 클라이언트에서는 HandleBeginPlay() 실행되지 않습니다. 대신, 클라이언트는 서버에서 전달받은 bReplicatedHasBegunPlay 값이 true일 때 OnRep_ReplicatedHasBegunPlay() 함수가 실행됩니다.
- 0
- 2
- 32
Q&A
3강 중간, 모드 로그로 찍을 시 스탠드얼론이 안찍힙니다.
네 맞습니다. 버전 업이되면서 지속적으로 달라졌습니다. 강의 내용과 똑같은 결과를 얻으려면 5.1을 사용해야 합니다.
- 0
- 2
- 26








