공교롭게도 작년에 포스팅을 마지막으로 남긴지 딱 1년만에 다시 포스팅을 남길 수 있게 되었는데, 그 1년간 있었던 일을 딱 정리하기 적절한 타이밍인 것 같아 간략히 남긴다.
그동안 다른 프로그래머 한 분과 아티스트 한 분을 모아 새 게임을 만들어 출시했다. Google Play, Apple App Store, Steam 이렇게 세 개 마켓에 공개했다. Steam은 Windows, macOS 모두 지원한다. 그래서 기기 종류로 보면 무려 4개에 출시한 셈이다. (ㅎㅎㅎ)
IPv4 유료화 이후 서버 한 대로 IPv4 할당을 줄인 후 거기에 워드프레스 서버를 리버스 프록시로 연결해서 쓰는 방식을 썼었다. (워드프레스 서버는 IPv6만 할당받음)
그런데 이렇게 하니까 워드프레스 페이지 접속은 전혀 문제 없었지만, /admin 페이지만 404 오류가 발생하는 문제가 있었다.
워드프레스 서버에 IPv4를 할당해서 직접 접속하면 나지 않는 오류였다.
잘 되는 경우가 있기에 별 문제 아니겠거니하고 그 때마다 잠깐 잠깐 인터넷 검색해서 해결해보려고 했으나 늘 잘 안됐다.
그러다가 오늘 좀 제대로 살펴봐야겠다하면서 점심 식사 직전부터 문제를 진지하게 파기 시작했다.
nginx 리버스 프록시가 문제를 유발하는 것은 확실했다. 그쪽 로그를 보니 힌트를 얻을 수 있었다. 결정적 힌트였지만, 결정적 오해를 하는 바람에 3시간 가까이를 날려먹고 겨우 해결했다. 그 로그란…
2025/06/28 05:28:20 [error] 25456#25456: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream [이하 생략]
일반 페이지 접근 시에는 나지 않고, /admin 접근 할때만 났으니 이 메시지가 관련 있음은 명백했다.
cgi는 대학생 때 들어나 보고, PHP도 그냥 튜토리얼만 본 수준의 나로서는 FastCGI는 완전히 모르는 키워드였다.
그래서 열심히 구글링도 해보고 AI한테도 물어보고 해서 시키는대로 이게 뭔지도 모르고 다 해봤는데, 해결이 되지 않았다. 그래도 진전이 있었는데, 최소한 404 오류가 나던 것을 nginx 오류로 바꿨다는 점이다.
영향을 주는 부분을 건드리고 있다는 것에 확신이 찬 나머지 많은 시간을 써서 여러 시도를 해 봤지만 해결되지 않았다.
구글링 키워드는 리버스 프록시, nginx, bitnami wordpress, fastcgi 등 핵심 키워드라고 생각하는 것을 넣었는데, 위 로그 메시지와 동일한 질문도 몇 건 보여서 하라는대로 했지만 역시 잘 안됐다.
키워드를 잘못 골랐음이 점점 분명해졌다. 나처럼 bitnami wordpress를 다른 서버에서 리버스 프록시로 접근하는 사례도 거의 없을거고 (취미의 영역)
그리고 reverse proxy란 건 매우 단순해서 그냥 모든 요청을 릴레이해주고, 응답을 릴레이해주면 끝인데, 대체 FastCGI 오류가 날 이유가 뭐가 있단 말인가? 백엔드 서버가 어떻게 구성되었든 리버스 프록시는 그 설정에 영향이 없었어야 함이 맞는데, 그걸 잊고 내가 겪는 문제와는 상관 없는(하지만 대다수의 사람들이 고생하는 일반적인 FastCGI 설정 오류와 직결되는) 것에 빠져든 것이다.
이상한 걸 느끼며 키워드를 이것저것 빼가며 검색해보던 중 “결정적 제보”를 발견하고야 말았다.
막힐 때는 답답하지만… 두 엔진이 각각 같은 개념을 다르게 포장해둔 것을 비교해보는 게 재밌다.
그리고 게임에서 쓰이는 기본 기능들이 다 만들어져 있는 것도 좋다.
유니티를 만든 회사와 언리얼을 만든 회사가 각각 자기 자리를 잘 잡은 것으로 느껴진다.
유니티는 오랫동안 써 와서 이제 좀 질린 감이 있고, 별로 신나게 떠들만한 구석은 없다고 여기고 있었는데, 언리얼을 다루다보니 유니티와 아무래도 1:1 비교가 되는 부분이 많이 보여서 같이 이야기해보려고 한다.
그냥 맘대로 끄적인 글이니까, 진지하게 두 개의 엔진 중 하나를 택하기 위해 이 글을 보고 있다면 다른 진지한 글을 찾아보는 것이 낫다는 것을 우선 밝힌다. 비교를 잘 해둔 글이 넘쳐난다.
유니티는 그래도 풀타임, 파트타임으로 10년 넘게 썼고, 언리얼은 이제 몇 주 다뤄봤을 뿐이므로 틀린 내용도 많을 것이다. (그런 게 있으면 알려주면 좋겠지만… 이 글을 누가 볼 것이며, 댓글도 다 막아뒀다는…)
그리고 두 엔진 중 하나를 선택하고 있는 사람이라면 다른 사람의 경험을 먼저 참고할 것이 아니라, 스스로의 경험/느낌의 비중을 가장 높이는 것이 맞기 때문에… 뭔가 두 개를 며칠 혹은 몇 주 가지고 놀아보고 다른 사람들의 의견에 대해서 참고 삼아 보는 수준으로 읽었으면 좋겠다.
언리얼 엔진은 일단 원활하게 에디터를 구동하기 위한 컴퓨터 사양 자체가 격(?)이 다르다. 2020년형 아이맥, 2021년에 구입한 고사양 라이젠 데스크탑 두 개를 주력으로 쓰고 있는 터라 언리얼 에디터 구동에 무리는 없으나, 유니티만 쓰던 사람이라 언리얼이 엄청나게 무겁게 느껴지는 것은 사실이다. 그러나 이 ‘무겁다’라는 표현만으로는 너무 애매하니 조금 나눠서 설명해보고자 한다.
새 컴퓨터 상태에서 첫 개발 환경을 구축하는 것: 구축하는 절차는 비슷비슷, 걸리는 시간은 언리얼 엔진이 훨씬 많이 걸린다. 두 엔진 모두 각각 Unity Hub, Epic Games Launcher란 프로그램 설치를 시작으로 개발 환경을 구축하게 되는데, 편의성만큼은 둘 다 매우 좋다. 회원 가입과 몇 번의 클릭으로 순식간에 설치가 완료된다.
절차는 비슷한데, 차이가 나는 부분은 첫 실행 시 걸리는 시간이다. 언리얼 엔진이 월등하게 더 오래 걸린다. 언리얼 엔진이 기본 내장된 셰이더 코드가 훨씬 많고, 이를 미리 컴파일해야 실행되도록 만들어둬서 그런 것으로 보인다. 초심자 대상 유니티 실습 강사도 여러 회 맡아 본 경험으로, 개발 환경 구축에 걸리는 시간이 중요할 때도 있긴 하지만, 대부분의 사용 목적에는 일회성 셋업 시간의 차이가 아무리 큰들, 큰 판단 기준은 아닐 것이다. 다만 언리얼 엔진이 인상적으로 더 시간이 걸리기 때문에 언급한다.
두 엔진 모두 에디터 실행이 딱 되면 가장 먼저 ‘새 프로젝트’ 생성을 할 차례이다. (유니티를 써서 쉬워지는 것은 ‘새 프로젝트’ 생성이지 ‘게임’ 완성이 아니라는 농담반 진담반 댓글도 떠오른다…)
새 프로젝트 생성 단계에 있어서도 두 엔진은 확실한 차이를 보여준다.
1인칭, 3인칭, 탑다운, 차량 조종 게임 등 인기있는 게임 개발을 위한 기초 셋업이 완료된 프로젝트 템플릿을 고르는 것과 ‘텅 빈’ 프로젝트 템플릿을 동등하게 두고 고르라고 하는 언리얼 에디터와는 달리 유니티 에디터는 ‘텅 빈’ 프로젝트 생성을 기본으로 추구한다는 점이다. 물론 유니티도 몇 번 클릭하면 프로젝트 템플릿을 고를 수도 있긴하다. 다만 이 ‘기본값’의 힘을 무시할 수는 없을 터… 우리 엔진은 이것도 할 수 있고, 저것도 할 수 있고, 다 할 수 있어요!!! 라고 외치는 듯한 언리얼과는 달리 유니티는 굉장히 소박하게 시작하는 것을 권하는 듯하다.
프로젝트 생성이 끝난 후 나오는 첫 에디터 화면은 내 기준으로 확연한 차이는 느끼지 못했다. 그래도 보이는 차이점 중에 가장 큰 것이 있다면, 느낌상 언리얼 에디터는 ‘내가 정해준 대로 써’ 느낌이라면 유니티 에디터는 ‘일단 이게 기본값인데 맘에 안들면 바꿔서 써’ 느낌이다. 언리얼 에디터의 여명기에 대해서는 내가 겪어본 바 없지만, 오랜 기간 규모 있는 게임 회사의 전유물이었던 것으로 안다. 그러다보니 ‘언리얼 개발자’라는 커리어 키워드가 생겨났을 것이고, 이는 모든 ‘언리얼 개발자’가 최대한 유사한 개발 환경을 공유해서 얻는 이득이 컸음을 짐작할 수 있다. 그래서 언리얼 엔진을 사용해 개발하는 사람이나, 언리얼 엔진 자체를 개발한 개발자나 양쪽 모두 툴의 커스터마이징 필요성은 크게 보지 않았으리라…
기본 조작 방식이나 에디터의 UI 레이아웃을 비교하는 것은 서로 다른 두 게임의 그것을 비교하는 것과 똑같은 느낌이라 과감하게 생략한다.
블루프린트 이야기를 빼 놓을 순 없을 것이다. 이는 언리얼 엔진에 기본 내장되고 ‘권장되는’ 비주얼 스크립팅 시스템이다. 코드를 텍스트 형태로 주르르륵 써 내려가는 대부분의 프로그래밍 언어와는 완전히 다르게 각 필요에 맞는 노드를 배치하고, 노드를 선으로 연결해서 프로그램 로직을 개발하는 것이다. 파워포인트 슬라이드에 그림 그리듯이 만들게 되므로 진입 장벽은 월등하게 낮아지는 장점이 있다.
그나저나 너티독 같은 곳에서도 엔진 공개해주면 좋겠다. 책은 써 놓고 엔진 공개는 왜 안하는가!!!