게임 프로그래머는 디자이너의 비전을 실제로 구현하는 사람으로, 우리가 사용하는 게임 엔진에서 작동하도록 합니다. 저는 Kwalee의 모바일 게임 프로그래밍 팀에서 일하며 주로 Unity를 사용합니다. 예를 들어, 디자이너가 특정 방식으로 주사위를 굴리고 싶다면, 저는 그 논리를 처리하는 스크립트를 작성합니다. 우리는 또한 게임 아티스트와 협력하여 게임이 멋지게 보이면서도 기기에서 뛰어난 성능을 발휘하도록 합니다.
이 블로그에서는 Kwalee에서의 5년 경력을 바탕으로 게임 프로그래머가 되는 데 필요한 통찰력과 조언을 공유합니다. 사용 언어, 도구, 원칙, 그리고 초보자 및 고급 팁을 안내합니다.
게임 프로그래머는 무엇을 하나요?
우리는 코드를 작성하고 게임을 현실로 만듭니다. 게임 디자이너가 개념을 만들고 게임 아티스트가 자산을 만드는 동안, 프로그래머는 기능적이고 플레이 가능한 경험을 만듭니다. 우리는 게임의 성능을 최적화하고, 확인된 문제를 해결합니다.
우리는 게임이 뛰어난 성능으로 잘 작동되도록 보장합니다. 이를 위해 코드를 청결하고 확장 가능하게 유지해야 하며, 이는 생각보다 어렵습니다. 우리는 모든 팀에서 일관된 품질을 유지하기 위해 코딩 표준을 사용합니다. 그러나 때로는 간단하지 않은 문제가 있을 때 창의적으로 해결해야 할 수도 있습니다.
우리의 책임은 최종 사용자 하드웨어에서 게임이 잘 실행되도록 보장하는 것도 포함합니다. 예를 들어, 모바일 게임에서는 오래된 기기가 과열되지 않도록 아티스트와 협력하여 드로우 콜 수를 최적화합니다. 드로우 콜은 CPU에서 GPU로 보내는 명령으로, 화면에 객체를 렌더링하기 위해 사용됩니다. 너무 많은 드로우 콜은 프레임 속도 저하나 버벅임을 유발할 수 있습니다. 이를 해결하기 위한 방법으로 여러 객체를 하나의 드로우 콜로 배치하거나, 고유한 텍스처와 재료의 수를 줄이는 것이 있습니다. 이는 다양한 기술 사양을 가진 많은 모바일 기기가 시장에 존재하기 때문에 특히 중요합니다.
주요 게임 프로그래밍 언어는 무엇인가요?
게임 프로그래머로서 대부분의 시간은 여러 프로그래밍 언어를 사용하여 스크립팅하는 데 사용됩니다. 쉽고 잘 알려진 언어로 시작하면 다른 언어도 쉽게 배울 수 있습니다. 도전을 시작하는 것이 가장 큰 관문입니다.
다음은 인기 있는 게임 프로그래밍 언어들입니다:
- C# - 게임 개발에서 널리 사용되는 다재다능하고 인기 있는 언어로, 초보자에게 가장 쉽게 배울 수 있습니다. 자동 가비지 컬렉션 기능이 있어 메모리 할당을 자동으로 관리해 주어 바쁜 프로그래머에게 매우 유용합니다.
- C++ - 수동으로 메모리를 할당하고 해제해야 하는 언어로, 복잡성과 난이도가 한 단계 올라갑니다. 그러나 더 높은 속도와 제어 및 성능을 제공합니다.
- Java - C#처럼 자체 메모리 관리 및 가비지 컬렉션 기능이 있어 개발자가 메모리를 쉽게 관리할 수 있게 합니다. 웹 개발과 엔터프라이즈 애플리케이션에서 널리 사용되며, 게임 개발에서는 최선의 선택은 아니지만, 여전히 확장 가능하고 효율적인 애플리케이션을 만드는 데 좋은 옵션입니다.
- Swift - iOS 및 macOS용 앱과 게임을 만드는 Apple의 기본 언어입니다. 그러나 Android와 iOS 모두에 모바일 게임을 게시하려는 목표 때문에 교차 플랫폼 개발에는 덜 유용합니다.
어떻게 게임 프로그래머가 될 수 있나요?
게임 프로그래머가 되는 방법은 다양합니다. 제 경로는 꽤 전통적입니다 - 저는 Staffordshire 대학에서 게임 디자인 및 프로그래밍을 공부했습니다. 처음에는 게임 아트를 하려 했지만, 게임 플레이를 만드는 데 더 관심이 생겼습니다. 몇 시간 만에 오리를 날리고 폭발시키는 것이 고폴리 모델 하나를 만드는 것보다 더 빠르게 결과를 볼 수 있었습니다.
그러나 게임 프로그래밍의 매력은 전통적인 경로를 거치지 않아도 대부분의 사람에게 접근 가능하다는 것입니다. 저는 50대 이상의 친구들이 대학에서 새로운 것을 경험하는 모습을 보았습니다. Kwalee에서는 YouTube 비디오를 통해 주로 학습하고 재미로 게임을 만든 사람을 고용한 적도 있습니다. 오늘날 새로운 인재에게는 많은 기회가 있습니다. 새로운 학생들의 포트폴리오를 보면 그들이 얼마나 많은 것을 할 수 있는지 알 수 있습니다. 멋진 인재들이 들어오고 있으며, 산업에 매우 흥미로운 시기입니다.
AI가 프로그래밍 경력에 어떤 영향을 미칠지 궁금할 것입니다. 그것은 매우 유용하고 점점 더 좋아지고 있습니다. 문제를 설명하거나 문제에 갇혔을 때 완벽합니다. AI를 사용하여 버그를 해결하거나, 코드를 리팩토링(정리)할 수 있습니다. 그러나 포트폴리오를 볼 때는 당신이 한 작업과 자랑스러워하는 부분을 보고 싶습니다. AI를 사용하는 것은 괜찮지만, 자신의 기술을 대체하지는 마십시오.
게임 프로그래머의 일상은 어떤가요?
제 삶을 바탕으로 예를 들어보겠습니다. 저는 리드 프로그래머로, 꿈의 직업이라고 할 수 있습니다. 실무와 다른 프로그래머 관리의 멋진 혼합입니다!
저의 일상은 라떼를 마시며 시작하고, QA 팀의 버그나 차단 요소를 확인하는 것입니다. 팀과 확인하여 누군가가 작업을 진행하는 데 필요한 것이 있는지 확인합니다. 그런 다음 음악을 틀고 작업 목록을 확인합니다. 우리는 슬랙을 통해 진행 비디오를 공유하여 빠른 피드백을 받고, 팀원들을 지원하기 위해 2-3개의 프로젝트를 오가며 작업합니다. 또한 프로그래밍을 더 효율적으로 만들기 위해 공유 시스템에 많은 시간을 투자합니다 - 모든 것이 원활하게 작동하도록 정기적으로 유지보수, 업데이트 및 수정해야 합니다.
초보 게임 프로그래밍 팁
프로그래머가 되기를 열망하는 초보자라면, 다음은 저의 팁입니다!
- 온라인에는 배울 것이 많습니다. YouTube에는 예제 게임이 많아 배우지 않을 변명이 없습니다! 인기 있는 엔진은 무료이며, 사용하기에 매우 재미있습니다!
- 완전히 반대의 스펙트럼 끝에는 30년이 넘었지만, "설계 패턴: 재사용 가능한 객체 지향 소프트웨어의 요소"라는 영향력 있는 책을 읽어보세요. 이 책은 우리가 프로그래밍에서 매일 사용하는 게임 패턴의 기초를 소개합니다.
- 자신의 아이디어가 있을 수 있지만, 기본기를 잘 다지고 시작하십시오.
- 상업 프로젝트에 얽매이지 않을 때는 원하는 만큼 코드를 작성할 수 있습니다. 재미있고 미친 것들을 많이 만들어 보세요.
- 포트폴리오를 구축하는 것이 정말 중요합니다(제가 직장을 얻은 방법이기도 합니다). 하지만 같은 오래된 대학 과제를 업로드하지 않도록 조심하세요. 우리는 많은 지원서에서 이러한 것을 볼 것입니다. 리스킨하고 기능을 추가하는 데 하루를 더 투자하는 것이 당신을 돋보이게 할 것입니다.
- 실제 세계 게임을 만드는 것도 현명한 생각입니다 - Google Play에 게임을 출시하는 것은 매우 저렴하므로 휴대폰에서 채용 담당자/출판사/가족/애완동물에게 보여줄 수 있는 것을 출시하세요. 몇 천 달러를 벌 수도 있고, 전업 계약이 체결될 때까지 보너스를 받을 수도 있습니다! 아니면 직접 풀 블로우 게임을 만들고 출판사와 파트너십을 맺고 싶어질 수도 있습니다.
- 프로그래밍 외에도 예술, 디자인, QA 및 상호작용할 다른 분야에 대해 배우세요. 예를 들어, QA 방법론을 이해하는 것은 가치가 있습니다. 무언가가 작동한다고 가정하는 함정에 빠질 수 있기 때문입니다. 사용자가 아닌 코드를 작성한 사람으로서의 시각이 아닌 사용자로서 플레이해야 합니다. 파괴적이 되어, 무작위 버튼을 누르거나 다른 기괴한 행동을 하는 사람들이 할 수 있는 무작위한 것들을 시도하세요.
고급 프로그래머 팁
다음은 저를 주니어에서 프로그래머, 시니어, 리드로 발전하게 한 팁입니다.
- 더 많은 학습을 통해 항상 이익을 얻을 수 있으며, 실수 없이는 배울 수 없습니다!
- 정말 열정적인 것이 있다면, 더욱 전문화할 수 있습니다. 예를 들어, 셰이더와 렌더 파이프라인을 가지고 노는 것을 좋아한다면, 그래픽 셰이더를 사용하여 복잡한 시각 효과를 렌더링하는 능력을 확장하고 렌더 파이프라인을 사용하여 성능을 최적화하거나 멋진 효과를 만드는 방법을 배우세요.
- 정말 멋진 것을 만들어, 복잡한 시스템을 자산 스토어에 업로드하여 계약이 허용할 경우 고급 작업을 선보이세요. 특정 유형의 프로그래머로서 틈새 시장을 개발할 수 있습니다, 예를 들어, 게임플레이 프로그래머, 서버 프로그래머, 그래픽 프로그래머 또는 멀티플레이어 프로그래머로서.
- 또는 저처럼 관리 경로로 가서 사람들을 멘토링할 수 있습니다. 제 경력을 발전시키는 전술은 새로운 책임을 흡수하는 것이었습니다. 처음에는 작은 것들을 개선하기 시작했습니다, 즉, 작은 워크플로우 변경.. 그런 다음 템플릿을 사용하여 새 프로젝트를 만들 때 시간을 절약하는 프로세스를 더 쉽게 만들었습니다. 그런 다음 멘토십과 관리의 맛을 보았고, 자신감을 얻고 이제는 동료 리뷰, 코드 리뷰, 워크샵 주최 및 프로젝트 팀 리딩에 참여합니다.
팀의 일원으로 일하든 관리자로 일하든, 칭찬을 주는 것이 건설적인 비판을 주는 것만큼 중요합니다. 코드 검토할 때, 사람들을 격려하는 것이 좋습니다!
게임 프로그래밍의 핵심 원칙은 무엇인가요?
게임 프로그래밍을 다룬 블로그에 반드시 들어가야 하는 몇 가지 주요 주제가 있습니다. 이것들은 우리가 고려하는 가장 중요한 것들입니다.
소스 제어/버전 제어
게임에 저장 지점이 있는 것처럼, 프로젝트 개발에도 저장 지점이 있습니다. 그것들은 프로젝트의 일반적인 저장소 역할을 하며, 3명 또는 4명의 프로그래머가 시스템에서 동시에 작업하고, 변경을 만들고 서버에 푸시할 수 있도록 합니다. 우리는 이러한 변경을 추적하고, 무언가가 잘못되었을 때 쉽게 롤백할 수 있습니다. 두 명의 개발자가 동일한 파일에서 작업하면, 그 파일은 병합의 일부가 되고, 충돌이 발생하면 수동으로 해결하거나 개인의 변경 사항을 적용할 수 있습니다. Unity 내에서 프리팹이나 장면을 사용할 때 이것은 자주 발생합니다.
이 용어들은 때때로 겹치지만, 일반적으로 소스 제어는 코드에 집중하고, 버전 제어는 모든 프로젝트 파일, 자산 및 문서를 포함합니다.
처음 소스 제어를 사용할 때는 처음에는 조금 무서울 수 있습니다, 매우 압도적으로 느껴질 수 있으며, 충돌이 발생하면 무엇을 해야 할지 확신이 서지 않을 수 있습니다. 그러나 버전 제어의 본질은 시간을 저장하는 데 도움이 되며, 자주 업데이트하고 자세한 커밋 메시지를 사용하는 것이 매우 유용하고 안전합니다. 여러 지점으로 되돌릴 수 있으며, 여러 브랜치를 가질 수 있습니다. 이를 개발자의 안전망으로 생각하세요, 그래서 Pixar의 Toy Story 2처럼 실수로 삭제된 후 기술 책임자의 집 하드 드라이브에서 복구된 대신에 모든 것이 서버에 안전하게 있습니다.
객체 지향 프로그래밍
이것은 Kwalee에서 주로 사용하는 프로그래밍 유형입니다. 객체를 사용하여 실제 사물 또는 추상 개념을 나타내고, 우리가 실제 세계에서 사물과 상호작용하는 방식을 반영하는 원칙을 사용하여 코드베이스를 조직합니다. 이를 통해 코드를 재사용하고, 확장하고, 더 쉽게 유지 관리할 수 있는 개별 클래스들로 조직하여 복잡한 시스템을 유지하는 데 도움이 됩니다.
물론, 그것이 좋은지에 대한 논란이 있습니다. 가장 뛰어난 퍼포머는 아니지만, 잘 작동합니다. 언어와 마찬가지로 각각의 장단점이 있으며 하나를 먼저 배우고 언어와 컴파일러(인간 코드를 기계 코드로 번역하는 것)의 작동 방식을 파악해야 합니다. 또한 수학처럼 다루는 함수형 프로그래밍, 사실과 규칙을 사용하는 논리 프로그래밍, 단계별 데이터 프로그래밍 등 다른 유형도 고려할 수 있습니다.
프로그래밍 패턴
이것들은 매우 유용한 것입니다 - 소프트웨어 디자인에서 직면할 수 있는 일반적인 문제에 대한 재사용 가능한 솔루션입니다. 문제가 발생할 때마다 바퀴를 다시 발명할 필요 없이 입증된 솔루션을 따를 수 있는 템플릿을 제공합니다.
예를 들어, 싱글톤 디자인 패턴은 게임 전체를 통해 클래스의 인스턴스를 하나만 유지하고, 전역 접근 포인트를 제공하는 데 도움이 됩니다. 이 패턴의 코드는 SettingsManager 클래스의 인스턴스가 하나만 존재하도록 하여 필요할 때마다 다시 생성하거나 중복할 필요가 없습니다.
또한 객체를 보다 조직적이고 유연한 방식으로 생성할 수 있는 팩토리 패턴이 있습니다. 입력 매개변수에 따라 캐릭터나 아이템과 같은 특정 유형의 객체를 생성하기 위한 메소드를 정의하여, 매번 새롭게 시작할 필요 없이 유사한 유형의 객체를 더 쉽게 생성할 수 있습니다.
이 블로그가 게임 프로그래밍에 대한 맛을 제공하기를 바랍니다, 당신이 이 분야에 처음이든 경험이 많은 프로그래머든! 열심히 일하지만 재미있는 사람이라면, 우리 팀에 어울릴 것입니다. Kwalee 경력을 더 알아보세요. 그렇지 않으면, 모바일 게임이나 출판에 대해 배우고 개발자 및 출판사로서 우리가 출시한 것에 대해 더 알아보세요.








