본문 바로가기
loading

교육과정

게임프로그래밍

교육배경 이해 :: 게임 프로그래밍은 게임 클라이언트를 구현하는데 사용되는 프로그래밍 기술입니다.

CURRICULUM 교육과정
게임프로그래밍
교육배경 이해
게임 프로그래밍 정의
게임 프로그래밍은 게임 클라이언트를 구현하는데 사용되는 프로그래밍 기술입니다. 비디오, 사운드, 조종기 등 하드웨어의 입출력을 구현하기 위한 OS, 시스템 프로그래밍을 기본으로 하고 있습니다. 이 외에도 2D/3D 그래픽스, AI, 알고리즘에 대해 포괄적으로 이해하고 적용할 수 있어야 합니다.
게임 프로그래밍 가치
흔히 컴퓨터 게임은 비쥬얼 아트와 프로그래밍 기술이 결합하여 만든 첨단 종합 예술로 일컬어 집니다. 게임 클라이언트 개발은 사용자의 다양한 입력에 즉시 반응하면서, 동시에 고품질의 비쥬얼과 사운드를 실시간으로 생성해내는 고난도 프로그래밍 역량을 요구합니다. 또한 게임 클라이언트 프로그래밍은 제한된 하드웨어 환경에서 조금 더 높은 반응성과 고품질의 렌더링을 위하여 하드웨어의 성능을 최적화하는 고난이도 소프트웨어 기술로 여겨집니다. 또한 게임 개발은 개인용 컴퓨터를 혁신시키고 고성능 컴퓨터를 일반에 보급하는 기술 선도 산업으로 분류되기도 합니다.
최근 게임은 엔터테인먼트에서 벗어나 다양한 분야에서 폭 넓게 활용되고 있습니다. 학습이나 교육, 치료에도 쓰이고 있고, 현장의 문제 해결에도 적극적으로 이용되고 있습니다. 대지진이 발생하여 폐허가 된 아이티(Haiti)를 돕는 소셜게임을 만든 사례, 단백질의 분자 구조를 맞추는 간단한 게임을 공개하여 연구원들이 몇 년씩 걸려 조합해야 되는 분자 구조를 일반인 수만명의 집단 지성을 활용하여 해결한 사례 등은 앞으로 게임이 우리 삶에 매우 긍정적인 형태로 활용될 수 있다는 가능성을 보여주고 있습니다. 다양한 형태로 진화하고 있는 게임 시장에서 게임 프로그래머에게 주어지는 기회는 매우 흥미롭습니다.
게임 프로그래밍 교육과정 특징
게임 프로그래밍 교육 과정은 게임 제작, 구현 뿐만이 아니라 고성능 시스템 설계에 필요한 프로그래밍 언어 기술, 하드웨어 최적화 등 세부적인 내용을 포함하고 있습니다. 미들웨어나 게임 개발 툴을 사용한 게임 개발, 네트워크를 통한 온라인 게임 플레이 동기화, 다양한 플랫폼에서의 컨텐츠 호환 및 포팅 등 현장 경험을 중심으로 교육과정을 디자인 하였습니다.

현장 인터뷰 :: NHN ToBe스튜디오 조상준 과장

롤모델 인터뷰
게임 프로그래밍 화려한 그래픽으로 인해 화려해 보이지만 제한된 리소스 내에서 최고의 효과를 내기 위한 부단한 노력의 과정입니다.사실 그게 게임프로그래밍의 묘미이지요.
NHN ToBe스튜디오조상준 과장
조상준 과장 이미지
조상준과장은 한게임 모바일 게임개발을 하고 있으며, 모바일 윷놀이, 한게임 체인지 팡팡 등을 출시하였습니다. 게임 자체가 즐거움이고 그 즐거움을 만드는 과정이 게임프로그래밍인 만큼, 어린 시절 자신만의 월드를 구현해보고 싶은 기억이 있다면 도전해보라고 권합니다.
한게임에서 모바일 윷놀이, 체인지 팡팡을 출시하였고 차기 버전을 준비하고 있습니다
1년전부터는 모바일 게임을 만들고 있습니다. 현재 출시한 모바일 게임으로는 한게임 모바일 윷놀이, 한게임 체인지 팡팡이 있습니다. 그전에는 'Neon'이라는 게임클라이언트 플랫폼을 만들었는데, 클라이언트 개발 시 각 게임에 공통적으로 들어가는 그래픽 라이브러리 집합입니다.
visual
앞으로의 포부는
내가 맡은 분야의 최고가 되는 것입니다.
지금의 일을 잘 하고 싶습니다. 구체적으로는 코드를 쌓는데 있어서 가장 최적의 방법을 익히고 전파하고 싶습니다. 이를 위해 각 언어의 신규표준이 제정되면 내가 만든 게임에 빨리 도입하고 검증하는 일을 합니다. 예를 들면 C#, Objective C 는 C++과 문법은 비슷하지만 그 프로그래밍 언어에는 가장 효과적인 코드가 어떤 것인지를 확인하면서 구현해야 합니다. 클래식한 코드는 문법적 오류는 없지만 최적의 코드는 아니기 때문에, 늘 새로운 언어를 익힐 때 단순히 사용법에 대한 익힘이 아니라 최적의 튜닝포인트까지 꿰뚤어야 합니다. 또한 버전이 올라가면서 더 효과적인 API 가 제공될 수 있고, 또 신규 API가 오히려 독이 될 때도 있으므로 API의 원코드를 보는 것도 도움이 많이 됩니다.
게임 프로그래밍만의 매력은, 디바이스라는 제한적 환경에서 최소의 비용을 들여 최고의 화려한 그래픽을 만들어내는 과정에 있습니다.
사용자의 입력과 행위에 바로 반응하는 부분을 맡는다는 것이 굉장한 즐거움이지요. 눈에 보이는 화려한 그래픽을 구현해 내는 일로 스포트라이트를 받는 무대 위의 배우에 비유되지요. 그런데 어려움도 많습니다. 클라이언트 프로그래밍은 유저의 컴퓨터에서 구동되므로 그 환경이 모두 다르고 제한적이며 특이사항이 많지요. 사용자의 디바이스에 대한 다른 대응이 빠르고, 전통적으로 코드량도 많고요.
특히 모바일의 경우 단말기별로 다르게 처리해야 하는 경우, 네트웍 상태에 따른 처리. 하드웨어에 대한 회전이 너무 빠르고, 의도치 않은 오작동이 많지요. 한정된 디바이스의 픽셀 필레이트(Pixel fillrate, 그래픽 칩이 처리할 수 있는 시간당 최대 픽셀 수)를 잘 제어하여 화려한 그래픽을 쓰면서도 느려지지 않도록 최고의 효과를 낼 수 있는 방법을 찾아내는 일이 어렵습니다. 그 어려움을 하나 하나 해결해 나갈 때 나만의 짜릿한 즐거움을 갖습니다.
모바일 게임을 개발은 드로잉 성능을 최대화 하는 과정이 중요합니다.
사용자가 게임을 즐기는 데 있어서 도로잉 성능이 중요합니다. 그런데 모바일의 경우 디바이스의 하드웨어 사양이 빠르게 바뀌다 보니 사용자들에 갖고 있는 디바이스의 성능격차가 큽니다. 격차가 나는 디바이스에서 비슷한 클라이언트 성능을 내려면 소스코드가 가벼워져야 합니다. 예를 들면, 클라이언트가 그래픽적으로 안 해도 되는 일을 찾아내는 것이 매우 중요합니다.
그래픽 미들웨어의 활용만 집중하는 건 좋지 않습니다. 이 엔진이 어떻게 구동되는지 그 핵심 기술을 이해하는 탄탄한 기본기가 중요합니다.
조상준 과장 이미지
내가 만든 게임을 버스나 지하철에서 하는 것을 볼 때 보람 있죠.
내가 만든 게임이 1등을 한 경험을 자랑하고 싶지만 아쉽게도 없습니다. (웃음) 버스나 지하철에서 내가 개발한 게임을 다른 사람이 즐기는 것을 자주 볼 수 있는데 그때 매우 보람 있습니다. 그런데 사실 개발자들은 그 광경이 즐거우면서도 동시에 불안합니다. 많은 테스트와 QA를 거친 후 출시 했음에도 불구하고 내가 개발한 것을 즐기는 것을 편안하게만 볼 수가 없더군요. 게임을 하는 것을 옆에서 조용히 지켜보면서 더 사용성 좋은 게임을 위한 힌트를 자주 얻습니다.
클라이언트 프로그래밍을 지망하는 학생들에게 ..
게임이라는 것 자체가 즐거움 아닌가요, 게임을 개발한다는 것은 즐거움을 만드는 과정이라고 말해주고 싶습니다. 게다가 게임분야에 일하는 사람들은 남녀노소 다들 코드가 잘 맞습니다. (웃음)
준비하는 과정에서는 기초에 대한 탄탄한 공부를 강조하고 싶습니다. 최근에는 좋은 그래픽엔진이 많이 나와서 이를 이용할 줄만 알면 된다는 인식을 가진 개발자가 있는데요, 절대 그렇지 않습니다. 컴퓨터 그래픽스에 대한 탄탄한 이론을 쌓기를 권하며, 특히 클라이언트 개발이 연산이 많아 수학과 물리에 대한 기초 학문을 강조하고 싶습니다.
인터뷰펄치기
인터뷰접기