학력
- 연세대학교 컴퓨터과학과 학사 졸업
경력
4년차 현역 게임 클라이언트 프로그래머로 재직 중입니다.
첫 입사한 이래로,
Unreal Engine 5 기반의 멀티플레이어 PVP 스포츠 장르 콘솔 게임 개발 프로젝트에 쭉 참여하고 있습니다.
(조만간 정말 재미있는 게임이 출시됩니다... 기대해주세요! 😄)
처음 1년 간 아웃게임 시스템 설계와 컨텐츠 구현 작업을,
이후부터는 인게임 시스템 설계와 컨텐츠 구현 작업을 담당하면서
게임 프로그래머가 UE5 엔진을 활용해 개발할 수 있는 다양한 분야들을 두루 경험하였고,
기획팀, 연출팀, 캐릭터팀, UI 디자인팀 등 타 팀원들과 더 재미있는 컨텐츠를 만든다는 공동의 목표를 가지고 원만하게 협업 해왔습니다.
소개
안녕하세요, 프로그래밍을 학습하던 수강생에서
인프런 지식 공유 챌린지 1기를 통해 지식공유자로 전격 탈바꿈하게 된 Cactuspillar 입니다!
Unreal Engine 에 대해 아무것도 모르는 상태로 입사하여 일감을 받던 막막한 신입 시절에서부터
게임 출시를 위해 열심히 달려가는 4년차 게임 프로그래머가 되기까지,
제가 그동안 습득해 온 각종 개발 노하우와
게임 개발 그 자체가 갖는 놀라운 매력을 최대한 알려드리고자 합니다.
연락처
✉ E-Mail : cactuspillar.inflearn@gmail.com
Khóa học
Đánh giá khóa học
- Hiểu ngay lập tức các thuật ngữ cốt lõi và cấu trúc của Unreal Engine 5!
- Hiểu ngay lập tức các thuật ngữ cốt lõi và cấu trúc của Unreal Engine 5!
- Hiểu ngay lập tức các thuật ngữ cốt lõi và cấu trúc của Unreal Engine 5!
Bài viết
Hỏi & Đáp
블루프린트
블루프린트는 프로젝트의 규모를 막론하고 적극적으로 활용될 것으로 생각합니다.말씀 주신 것처럼 개발하고자 하는 게임의 규모가 클수록 블루프린트 활용 비율은 낮아지고, 규모가 작아질수록 활용도가 높아지는 경향이 강할 것으로 생각하는데요, (아예 블루프린트로만 전체 로직을 구성해서 런칭되는 게임도 있다고 들었습니다.)아무리 프로젝트의 규모가 크고 복잡해도 순수 C++ 로만 개발되지 않을 것이라고 생각하는 이유는, 블루프린트가 C++ 코드에 비해 컴파일 속도와 성능, 복잡한 로직 제어 측면에서 모두 뒤떨어짐에도 명확한 장점과 활용 목적이 존재하기 때문입니다.블루프린트는 꼭 프로그래머가 아니더라도 UI 디자이너나 기획자 모두 얼마든지 접근이 가능하고, 내용 검토와 수정도 손쉽게 진행할 수 있습니다. 시각적으로 해당 블루프린트가 다루는 컨텐츠의 내용을 직관적으로 알아볼 수 있다는 장점, 그리고 소스코드는 수정 한 번에 무조건 빌드 한 번이 다시 돌아가야 하는 반면에 블루프린트의 수정 적용은 저장 버튼 클릭 한 번이면 된다는 등의 장점 덕분에, 기획자나 UI 디자이너는 본인의 설계 의도에 맞게 손쉬운 컨텐츠 수정을 할 수 있고, 프로그래머 입장에서도 짜잘한 수정 요청에 시간을 뺏기지 않아도 됩니다. ("몬스터가 도검류 무기에 피격 당했을 때 이펙트를 이거 말고 이걸로 바꿔주세요" 같은)제가 현재 참여하고 있는 게임 개발 프로젝트를 예로 말씀 드려보자면, UI 와 사운드, 컷씬 재생과 같이 게임의 부수적인 '장식 요소' 들은 무조건 블루프린트에서만 제어하도록 하고 있습니다. 앞서 설명 드렸듯 C++ 코드는 프로그래머 밖에 손댈 수 없고, 이러한 장식 요소들까지 전부 C++ 로 제어하면 폴리싱 과정도 번거로워지고, 덩달아 퀄리티 상승의 한계도 명확해지기 때문입니다. C++ 코드에서는 논리적인 결정과 이로 말미암은 이벤트 발생까지만 처리하고, (물론 일부 간단한 논리 결정 과정도 블루프린트에 포함되겠지만) 블루프린트에서는 이렇게 C++ 에서 정의한 이벤트를 접수해서 그 이벤트가 발생했을 때 어떤 표현과 연출을 적용할지 결정하는 것으로 역할 구분을 명확히 한다면, 한 번 구조가 구축된 이후에는 연출과 관련해서 프로그래머는 더이상 시간을 할애하지 않아도 되고, 디자이너도 번거롭게 요청할 필요 없이 직접 의도에 맞게 블루프린트만 수정하면 됩니다.정리하자면1. C++ 은 도구를 만들고, 블루프린트는 그 도구를 활용한다2. C++ 에서는 주로 복잡한 시스템 로직을, 블루프린트에서는 이로 말미암은 간단한 컨텐츠 로직을 주관한다 (물론 간단한 게임이면 본 강의에서처럼 전부 블루프린트에서 구현해도 무방함)라고 할 수 있겠으며, 그렇기 때문에 언리얼 엔진으로 개발하는 프로젝트라면 블루프린트를 활용하지 않을 이유가 없다고 생각합니다.
- 0
- 1
- 21
Hỏi & Đáp
21번 강의와 22번 강의가 이어지지 않습니다.
강강 님 안녕하세요.말씀 주신 대로 확인해보니 22번 강의의 앞 2분 30초 가량 동안,음성으로 실제 다루고 있는 내용과 달리 화면에서는 생뚱 맞은 부분을 보여주고 있는 것을 확인했습니다.컨텐츠의 상태를 꼼꼼히 검토하지 않아 원활해야 할 학습에 큰 불편을 드려 정말 죄송합니다.해당 부분에 대하여 오류를 안내하는 게시물을 곧 공지하고, 문제 되는 영상 부분은 일주일 이내에 수정하여 다시 공지를 통해 안내드리겠습니다.문제 사항을 선뜻 제보해주셔서 감사드리며, 다시 한 번 학습에 지장을 초래하여 정말 죄송하다는 말씀 드립니다. 앞으로는 더 꼼꼼하게 검토를 거친 후에 컨텐츠를 게시하겠습니다.감사합니다.
- 0
- 2
- 39
Hỏi & Đáp
Layered blend per bone에 대해 질문 있습니다!
정리하신 내용이 정확합니다.제가 thigh_l 과 thigh_r 은 포함시키지 않는다고 설명드린 직후에 pelvis 의 3단계 자손의 예로 thigh 하위의 본들을 들어서 혼동이 있으셨을 것 같습니다. 예시로 들어주신 것처럼 thigh_r 본의 Blend Depth 를 -1 로 설정하면 그 하위의 본들을 blend 대상에서 제외하는 것이 맞으며,Base Pose 와 Blend Poses 의 관계에 대해 정리하신 내용도 블루프린트를 설계했던 의도 딱 그대로와 일치합니다. 그래서 Should Move 값이 true 일 때 슬롯이 UpperBody 인 몽타주를 재생하면 상체만 재생되고, Should Move 값이 false 일 때에는 Layered blend per bone 을 거치지 않기 때문에 전체 본을 대상으로 재생되는 것이죠.정말 잘 정리해주셨습니다.
- 0
- 2
- 43
Hỏi & Đáp
IMC 매핑 관련 질문이 있습니다!
1. 제기해주신 생각이 맞습니다. 우리가 A 키와 D 키를 눌러서 얻고자 하는 것은 하나의 축 상에서의 이동 방향을 정하기 위함이기 때문에, Negate 를 할 때 X 축에 대해서만 체크해주어도 충분합니다.셋 모두 체크한 이유는 개인적으로 두 키가 서로 정반대의 방향을 가리킨다는 것을 직관적으로 확인하기 쉽게 하기 위해서이지만, 사실 그 외에 특별한 이유는 없습니다! 2. S 키가 W 키의 반대로 되어 있는 이유는, 우리가 Move 입력을 처리할 때 캐릭터에 부착된 카메라 액터의 정면 방향을 기준으로 앞뒤를 처리하기 때문입니다. 말씀주신 대로 화면상의 Y 축 방향과는 기준이 다르기 때문임이 맞습니다! 더 궁금하신 점이 있으시면 언제든지 추가로 질문해주세요~ 감사합니다.
- 0
- 1
- 55
Hỏi & Đáp
디폴트로 추가되는 데이터가 존재하지 않아 문의드립니다.
혹시 언리얼 프로젝트 브라우저에서 처음 프로젝트를 생성하실 때, 우측의 '시작용 컨텐츠' 체크박스에 체크가 되어있었을까요? 프로젝트의 컨텐츠 브라우저에 'StarterContent' 라는 이름의 폴더가 존재하지 않는다면, 시작용 컨텐츠를 포함하지 않고 프로젝트가 생성된 것으로 보입니다.해당 레벨은 시작용 컨텐츠에 포함되어 있어서, 만약 체크 해제된 채 프로젝트가 생성되었다면 내부에 존재하지 않는 것이 맞습니다.시작용 컨텐츠 옵션을 활성화하신 뒤 새 프로젝트를 생성해보시기를 권장 드립니다.
- 0
- 2
- 59
Hỏi & Đáp
C++과 에디터 로직 기능의 사용처 구분
어떤 경우에는 C++ 을 사용하고, 또 어떤 경우에는 Behavior Tree 나 Blackboard 를 활용한다기보다는인공지능 컨텐츠를 가지고 타 파트의 동료들끼리 협업을 해야 할 때, 둘을 혼용해서 활용한다고 답변드릴 수 있겠습니다.가령 인공지능 컨텐츠의 행동 로직이 기획 의도에 적합한지를 담당 기획자가 직접 수정을 해나가며 살펴봐야 하는 상황에서는,모든 로직이 C++ 로 설계되어 있는 것보다는 굵직한 수준의 큰 행동 로직은 Behavior Tree 의 각 노드를 통해 정의하고내부의 세부적이고 정교한 로직은 담당 프로그래머가 소스코드로 구현하는 편이 여러모로 바람직할 것입니다.다시 정리해서 말씀드리면100% 소스코드 기반의 AI 로직 구현은 프로그래머 외의 파트 입장에서는 가시성과 접근성이 떨어져 유지보수가 어렵기에,특히 여러 파트 간의 협업이 필요한 컨텐츠라면 Behavior Tree 등을 함께 활용해 큰 흐름을 쉽게 파악하고, 수정 점검도 용이하도록 할 수 있습니다.물론, 기획자가 직접 로직을 구현하지 않고 컨텐츠 기획과 테스트 후 피드백 전달만 맡고 있는 프로젝트 구조라면 100% C++ 소스코드로만 잘 모듈화되어 구현되어도 이상하지 않을 것입니다.단순하고 기본적인 AI 구현 뿐이라면 가능하겠지만, 게임 회사에서 순수 Behavior Tree 와 BlackBoard 만으로 정교한 AI 컨텐츠를 제작하는 경우는 아직 들어보지 못했습니다.혹시 답변이 만족스럽지 않거나 더 궁금한 내용이 있으시면 언제든 추가로 질문해주세요~감사합니다.
- 0
- 1
- 80
Hỏi & Đáp
2-R 맞왜틀 질문드립니다!
https://daisy0461.tistory.com/94저도 77% 에서 틀렸다고 떠서 무엇이 문제인지 찾아보던 중, 같은 처지에 계셨던 분의 블로그 포스팅을 보고 반례를 깨달아서 수정 후 해결했습니다. 혹시 모르니 한 번 참고해보세요.
- 0
- 3
- 115
Hỏi & Đáp
시간초과
와... 문제 처음 풀 때부터 5로 거듭 나눈 몫을 누적시키는 아이디어가 바로 떠올라서 싱글벙글 그대로 제출했더니 시간 초과 뜨는 거 보고... 30분 이상을 계속 고민했는데... 고작 이거 누락했기 때문이라니... 좀 허탈하네요.
- 1
- 2
- 325
Hỏi & Đáp
29:15 부분에서....
Visual Assist 사용하고 계시면 Alt + G 누르시면 됩니다
- 0
- 1
- 253
Hỏi & Đáp
v성분 중에서 a와 수직이라는게 좀 헷갈려요
V 벡터는 a 와 평행한 성분과 a 와 수직한 성분의 합으로 표현할 수 있는데, 이 때 a 와 수직한 성분이 Vㅗa 입니다.그래서 2:58 에서 Vㅗa 을 회전시킨 벡터를 a 와 평행한 성분에 더하면 우리가 원하는 V 를 회전시킨 V' 가 나온다는 설명을 하신 것입니다.
- 0
- 1
- 322