게임 프로그래머는 디자이너의 비전을 실제로 게임 엔진에서 작동하도록 구현하는 사람입니다. 저는 Kwalee의 모바일 게임 프로그래밍 팀에서 일하고 있으며, 주로 Unity를 사용합니다. 가령 디자이너가 주사위가 특정 방식으로 굴러가는 것을 원할 때 저는 이를 처리하는 스크립트를 작성합니다. 우리는 게임 아티스트와 협력하여 게임이 매력적으로 보이고 높은 성능을 발휘하도록 합니다.
이 블로그에서는 Kwalee에서의 5년간 작업을 바탕으로 게임 프로그래머로서의 필수 통찰과 조언을 공유할 것입니다. 사용하는 언어, 도구, 원칙, 커리어 조언, 초급 및 고급 팁을 소개하겠습니다.
게임 프로그래머가 하는 일은 무엇인가요?
우리는 코드를 작성하고 게임이 현실이 되도록 돕습니다. 게임 디자이너가 개념을 만들고, 게임 아티스트가 에셋을 만들며, 프로그래머는 기능적이고 플레이 가능한 경험을 만듭니다. 게임의 성능을 최적화하고 식별된 문제를 해결합니다.
게임이 훌륭한 느낌을 주고 높은 성능을 발휘하도록 합니다. 이를 위해 코드를 깨끗하고 확장 가능하게 유지해야 하는데, 이는 생각보다 어렵습니다. 모든 팀에서 일관된 품질을 유지하기 위해 코딩 표준을 사용합니다. 어떤 때는 항상 직선적이지 않아도 되며, 시간을 맞추기 위해 창의적으로 생각해야 할 때도 있습니다.
또한, 최종 사용자 하드웨어에서 게임이 잘 실행되도록 하는 책임도 있습니다. 예를 들어, 모바일 게임에서는 오래된 기기가 과열되지 않도록 드로우 콜 수를 최적화하기 위해 아티스트와 협력합니다. 드로우 콜은 화면에 객체를 렌더링하기 위해 중앙 처리 장치(CPU)에서 그래픽 처리 장치(GPU)로 보낸 명령입니다. 에셋이나 셰이더와 같은 그래픽 요소를 그리도록 GPU에 지시 합니다. 이 드로우 콜의 수를 최소화해야 합니다. 너무 많으면 프레임 드롭이나 버벅임 같은 문제가 발생할 수 있습니다. 여러 최적화 방법이 있지만, 여러 객체를 단일 드로우 콜로 배칭하거나 고유한 텍스처와 재료 수를 줄이는 것이 도움이 됩니다. 이는 특히 다양한 기술 사양을 가진 여러 모바일 기기가 있는 모바일 분야에서 중요합니다.
주요 게임 프로그래밍 언어는 무엇인가요?
하루 일과 대부분을 다양한 프로그래밍 언어로 스크립팅하며 보냅니다. 결국 우리도 소프트웨어 개발자입니다. 다양한 언어를 선택할 수 있습니다. 일부는 다른 것보다 쉬워 보이지만 하나를 배우고 마스터하면 다른 언어도 익힐 수 있습니다. 중요한 것은 첫발을 내디디는 것 입니다.
여기 몇 가지 인기 있는 게임 프로그래밍 언어에 대한 개요입니다:
- C# - 게임 개발에서 광범위하게 사용되는 다기능 인기 언어입니다. 초보자에게 배우기 가장 쉽습니다. 자동 메모리 관리 기능이 있어 바쁜 프로그래머에게 매우 유용합니다.
- C++ - 관리되지 않은 언어로 메모리를 수동으로 할당 및 해제해야 해서 복잡성이 증가하지만 더 높은 속도, 제어 및 성능을 제공합니다.
- Java - C#처럼 메모리 관리 및 가비지 콜렉션을 가지고 있어 개발자가 메모리를 쉽게 처리할 수 있습니다. 웹 개발 및 엔터프라이즈 애플리케이션에서 널리 사용되지만 게임 개발에서 최고의 선택은 아닐 수 있지만 확장 가능하고 효율적인 애플리케이션을 만드는데 유효한 옵션입니다.
- Swift - iOS와 macOS에 대한 앱 게임 개발에 사용되는 Apple의 기본 언어입니다. 그러나 이는 크로스 플랫폼 개발에 덜 유용합니다. 우리는 양대 모바일 플랫폼에서 게임을 게시하기 때문에...
게임 프로그래머가 되는 법은?
게임 프로그래머가 되는 방법은 여러 가지입니다. 제 길은 꽤 전형적입니다. 스태포드셔 대학교에서 게임 디자인과 프로그래밍을 전공했습니다. 원래 게임 아트를 전공하려고 했지만 게임 플레이를 만드는 것을 발견하게 되었고, 대학에서 아트 모듈을 즐겨했던 것과는 다르게, 게임 플레이를 만드는 것을 매우 즐겼습니다. 많은 시간이 걸려 고폴리 모델을 만들기보다 오리 날리고 폭파하기는 더 쉽다는 것을 발견했습니다.
그러나 게임 프로그래밍의 매력은 전통적인 경로에서 오지 않더라도 대부분의 사람에게 접근 가능하다는 것입니다. 저는 50세 이상의 학생들이 있는 친구들이 있었고, 새로운 것을 경험하는 것은 결코 늦지 않습니다. Kwalee에서는 유튜브 비디오를 통해 주로 배우고 재미로 게임을 만든 사람을 고용했습니다.
아마도 궁금한 질문일 것입니다 - 인공지능(AI)이 프로그래밍 직업에 영향을 줄까요? 매우 유용하며 점점 더 좋아지고 있습니다. 문제가 걸려있을 때 설명이 필요하거나 버그를 해결하는 데 사용하고, 최신 ChatGPT에 코드를 올려 리팩터링할 수 있습니다. 그러나 포트폴리오를 볼 때 우리가 보고 싶은 것은 당신이 자랑스러워하는 작업입니다. AI는 사용할 수 있지만 자신의 기술을 대체하지 않도록 하십시오.
게임 프로그래머의 일상은 어떤가요?
제 삶을 기반으로 설명해드리겠습니다. 저는 리드 프로그래머(제 꿈의 직업이라고 부릅니다)로, 실무와 다른 프로그래머 관리의 훌륭한 조합입니다!
일상의 전형적인 날은 시작할 때 라떼를 얻고 QA 팀의 버그나 차단 요소를 두 번 확인하는 것입니다. 팀과 체크해서 그들의 작업을 차단 해제하기 위해 저에게 필요한 것이 있는지 묻습니다. 그런 다음 음악이 켜지고 작업 목록이 올라갑니다. 빠른 피드백을 얻기 위해 Slack을 통해 진행 상황을 공유하면서, 팀원 지원을 위해 2-3개의 프로젝트 사이에서 이동합니다. 프로그래밍을 더 효율적으로 만들기 위해 투자하는 데 많은 시간을 보냅니다 - 그것은 모두 유지보수되고 정기적으로 업데이트되고 수정되어야 합니다.
초급 게임 프로그래밍 팁
완전한 프로그래머가 되고자 한다면 시작 시의 모든 것이 많고 유튜브에서 배울 수 있는 것도 많으며 많은 예제 게임이 있어서 배우지 않을 이유가 없습니다! 인기 있는 엔진은 무료이며 사용하는 것도 매우 재미있습니다.
완전히 반대의 범위 최족부에서, 30년이 넘었지만 당신은 'Gang of Four' 작가들에 의해 쓰여진 '재사용 가능한 객체 지향 소프트웨어'의 '디자인 패턴: 주된 게임 패턴을 소개한 기본 게임 프로그래밍 기초 책'을 읽어야 한다. 그리고 프로젝트에 묶여있지 않으면 가능한 많은 코드를 작성하고 잘못된 것을 하는 것을 즐기며 재미있게 창작해보세요.
고급 프로그래머 팁
주커리어에서 주니어에서 프로그래머로, 시니어를 지나 리드까지 성장하는데 도움을 준 몇 가지 팁을 공유합니다.
- 계속해서 학습하고, 실수가 없으면 배울 수 없다는 것을 기억하세요!
- 무엇인가에 정말로 열정적이라면, 예를 들면 셰이더와 렌더 파이프라인을 좋아한다면, 셰이더를 사용하여 시각 효과를 확장하는 방법을 학습하여 보다 복잡한 시각적 효과를 만들고 성능을 최적화하거나 멋진 효과를 만드는 방법을 배우는 등의 전문화를 고려해보세요.
- 정말 멋진 것을 만들고 싶다면 커다란 시스템과 같은 것을 만들어 이것을 에셋 스토어에 올리세요
팀의 일원으로 일하든 관리자이든 칭찬과 건설적인 비판을 하는 것이 중요합니다. 코드 검토 시, 사람들을 격려하는 것도 좋은 일입니다!
게임 프로그래밍의 핵심 원칙은 무엇인가요?
게임 프로그래밍을 다루는 블로그에 꼭 담아야 할 중요한 주제 몇 가지가 있습니다.
소스/버전 관리
게임에서 저장 포인트가 있는 것처럼 프로젝트 개발에도 저장 포인트가 있습니다. 이는 프로젝트의 일반적인 저장소 역할을 하며, 3명 또는 4명의 프로그래머가 시스템에 동시에 작업하고 변경을 서버에 푸시할 수 있도록 합니다. 그 변화들을 추적하고 쉽게 롤백할 수 있게 합니다. 파일이 충돌될 경우 수동으로 해결할 수 있으며, 개인의 변경을 적용할 수 있습니다. Unity에서 Prefabs나 Scenes를 사용할 때 자주 발생할 것입니다.
이 용어들은 때론 혼재될 수 있지만, 일반적으로 소스 관리는 코드를 집중적으로 다루고, 버전 관리는 모든 프로젝트 파일, 에셋, 문서를 포함합니다.
처음 소스 관리를 사용할 때는 약간 무서울 수 있고, 충돌이 있을 때 무엇을 해야 할 지 모를 수 있습니다. 그러나 버전 관리의 속성은 시간을 절약하는 데 굉장한 도움이 되고, 자주 업데이트하면서 상세한 커밋 메시지를 사용하는 것은 매우 유용하고 안전합니다. 여러 점으로 복원할 수 있으며, 여러 가지 트리를 가질 수 있습니다. 개발자의 안전망으로 생각해보세요.
객체 지향 프로그래밍
이것은 주로 Kwalee에서 사용하는 프로그래밍 유형입니다. 객체를 사용하여 현실적이거나 추상적인 개념을 나타내며 복잡한 시스템을 쉽게 구별하여 유지할 수 있도록 해줍니다.
물론 이에 대한 찬반 논쟁도 있습니다. 높은 퍼포먼스를 자랑하지는 못하지만 잘 작동합니다. 언어와 마찬가지로 각각 장단점이 있으므로 하나를 배우고 언어와 컴파일러 작동 방식을 이해하세요. 또 수학 같고 논리 프로그래밍, 절차적 프로그래밍 등 다른 유형도 고려해볼 수 있습니다.
프로그래밍 패턴
프로그래밍 패턴은 점차 유용한 요소가 되었습니다 - 소프트웨어 디자인의 일반적인 문제를 해결하기 위한 재사용 가능한 솔루션입니다. 문제를 해결할 수 있는 템플릿을 제공하여 매번 휠을 새로 발명할 필요가 없고 입증된 솔루션을 따를 수 있게 합니다.
예를 들어, 싱글톤 디자인 패턴은 게임 내 설정 관리자와 같은 클래스의 인스턴스를 전역 접근 포인트에서 하나밖에 사용할 수 없도록 보장합니다. 모든 게임에서 설정하는 것처럼 다시 만들거나 복제할 필요가 없습니다.
저는 이 블로그가 게임 프로그래밍에 대한 맛을 제공했기를 바랍니다. 초보자이든 경험 많은 프로그래머이든! 팀에 적합한 분이라면 더 많은 내용은 Kwalee 채용을 확인하세요. 아니면 저희 모바일 게임이나 출판에 대해 배우고 개발자 및 출판사로서 릴리즈하는 것에 대해 더 알아보세요.








