C++로 제작하는 크로스플랫폼 게임엔진 제작기

ounols·2021년 6월 26일
6

CSEngine 프로젝트

목록 보기
1/17
post-thumbnail

📣 프로젝트 Git 주소 : https://github.com/ounols/CSEngine

해당 시리즈는 CSEngine이란 이름으로 제가 직접 개발하고 있는
크로스플랫폼 게임엔진의 제작기를 담고있습니다!

1. 왜 엔진을 만들고 있는건가요?

2017년 쯤에 '나도 직접 게임 프레임워크를 만들어보자!'하는 마음에
덜컥 시작해버린 프로젝트입니다ㅎㅎ;;

그게 어느정도 크다보니 결국 게임 엔진을 만들자로 방향이 바뀌었습니다ㅋㅋㅋ

2. 그럼 프레임워크는 왜 만들게 되었나요?

처음엔...

이 프로젝트 이전까지 게임 프로젝트 몇가지를 진행했었는데
처음엔 무작정 Java와 OpenGL 또는 안드로이드 자체적으로 제공하는 Canvas 개념으로만
게임을 만들다가 유니티를 통해 게임 엔진의 편리한 '맛'을 느껴버렸습니다...

그렇게 유니티를 어느정도 다루다보니 문득 이런 생각이 떠올랐습니다.
'유니티....로만 프로그래머로써 살아남을 수 있을까..?
물론 대부분의 모바일 게임은 유니티가 정말 압도적으로 많습니다.

그러나 유니티가 생산성으로 너무 뛰어나 유니티만 할 줄 안다면
생산성에 특화된 노예(?)로만 되지 않을까 걱정이 정말 컸습니다.

그러다 마침 주력 언어로 밀고있는 C++을 스크립트로 사용하는
언리얼을 보고 언리얼을 공부를 하게 되었습니다!

언리얼 공부 시작!

유니티를 겉햝기로만 하다가 언리얼을 막상 보니 뭔가 적응하는게 좀 힘들었습니다.
그래서 언리얼을 공부하려는 친구와 같이 언리얼의 코어를 연구해보기로 했습니다.

그렇게 한달정도 언리얼의 구조를 대충 확인하며
코어와 컴포넌트 형태의 게임엔진에 흥미를 가지게 되었습니다.

컴포넌트..?

저는 당시에도 프로그래밍을 시작한지 4년이 지난 무렵이였음에도
당시 구조에서 본 컴포넌트라는 개념을 처음보게 되었습니다..ㅎㅎ;;
이건 좀 부끄럽군요 헤헷...

어쨌든 컴포넌트가 생산성에 있어 눈에 띄게 효과적이였기 때문에
저에겐 너무 매력적으로 다가오게 되었습니다.

그렇게 제 모든 대학 과제들을 컴포넌트화하여 보내기 시작했습니다...
컴포넌트...컴포넌트...너무조아...
당시 광기는 위의 사진과 비슷한 느낌이겠네요ㅎㅎ

다시 본론으로

이런 광기는 제가 언리얼을 공부하는걸로만 끝나지 않았습니다.
게다가 그래픽스에도 큰 관심을 보이기 시작할 때라서
엔진을 사용하지 않는 순수한 C++ 프로젝트 형태의 게임 프레임워크를 컴포넌트를 담는 컨테이너를 중심으로 만들기로 했습니다!

3. 게임 엔진 제작...너무 시간낭비 아닐까요?

1년이란 시간은 정말 많은 것을 배울 수 있는 시기입니다.
그러나 게임 엔진 제작하는데 4년...
그런데도 실제로 써먹지도 못하는 단계...

...좀 시간낭비가 아닐까요?

흠, 이 부분은 정말 애매하군요.🤔
사람이 어떻게 받아드리냐에 따라서가 정말 큰 영향을 주는 일이라
애매합니다..흑흑...

게임 엔진은 여러 기술의 집합체입니다.
렌더링도 있고, 물리도 있고, 크로스 플랫폼도 있고, 코어도 있고, 스크립트도 있고....
마냥 쉽게 접근하기엔 할게 정말 많습니다ㅠㅜ

하지만 그만큼 엔진을 이해할 수 있는 방식 중 그 어떤 강의보다 가장 확실하게 이해할 수 있다고 생각을 합니다.

저는 일단 유니티나 언리얼 공부에서 끝내지 않고 엔진을 직접 만드는건
게임을 생산하는 보급형 기계같은 느낌으로 사는 것보다
큰 메리트가 있을 것이다 생각을 하기 때문에 시간낭비라고 생각이 들지 않았습니다.

4. 그럼 지금도 계속 개발을 하는 이유가..

저는 만들면서 '아! 이래서 이 엔진을 이따구(?)로 구현했구나!'라고 깨닫는 순간이 정말 많았습니다ㅋㅋㅋ
저는 이런 경험으로도 충분히 현업 세계에서의 메리트가 있다고 생각하고있습니다.

그리고 제 예상보다 많은 것들이 현재 구현되어있기 때문에
지금 멈추면 좀 아깝다는 생각이 듭니다.
아직 구현해보고 싶은 부분들도 많구요 헤헷
// 간단한 똥피하기정도는 제작 쌉가능입니다ㅎㅎ

여기서 가장 중요한건 그 어떤 프로젝트들보다 성취감이 가장 큽니다ㅋㅋ

포트폴리오로써의 역할과 개인적인 성취감을 느낄 수 있는 이 프로젝트를
계속 진행 안할 이유가 없지 않을까 생각이 드네요ㅎㅎ

5. 마무리

어쨌든 이러한 이야기들을 통해 게임 엔진을 만들게 되었다고 할 수 있겠군요!
사실 이 프로젝트를 진행하면서 제 목표가 클라이언트 엔진 프로그래머가 되었습니다ㅎㅎ

아직 많이 부족하고 그 누구도 관심을 가져주지 않았지만
나름 저만의 보람을 느끼고 있어 진행할 수 있지 않을까 생각이 듭니다.


지금까지는 제작하게 된 계기에 대해 작성하였고
나머지 제작기는 이 시리즈를 계속 읽어주시면 감사하겠습니다!

😮 잠깐!!!

사실 이 글을 작성하는 이유 중 하나는
혹시 엔진이나 그래픽스 관련하여 물어볼 수 있는 분들이 지나가지 않으실까 싶어서도 있습니다!

제가 처음 개발할 땐 주변에 피드백을 받고 했지만 점점 세부적으로 들어가니
물어볼 지인이 점점 적어지더군요..흑흑...

그래서 지금은 거의 제 뇌피셜로만 제작 중이라 중간중간 뇌피셜로 또 갈아엎는 코드들도 많습니다ㅠㅜ

그래서 간단한 피드백이나 개발팁 같은 것에 대한 댓글이나 연락을 주신다면 정말 감사하겠습니다!

profile
(게임 엔진 프로그래머가 되고싶은) 게임 클라이언트 프로그래머

2개의 댓글

comment-user-thumbnail
2021년 7월 29일

과제 검색하다가 여기까지 읽어버렸는데 정말 대단하신 것 같아요!

답글 달기
comment-user-thumbnail
2023년 9월 17일

요즘 유니티 이슈가 생기면서 모든 개발자가 무료로 가격 걱정 없이 개발 할 수 있는 게임 엔진이 있을까 해서 검색하다가 들어오게 되었습니다. 게임엔진 개발은 계속 진행중인가요?? 저도 관심이 있어 한번 프로젝트를 시작해보고 싶습니다.

답글 달기