게임제작과 KODU 프로젝트

컴퓨터 게임

컴퓨터게임의 즐거움에 대해 이야기해서 무엇하리. 모바일 기기로 즐기는 성난새angrybird나 애들팡anipang과 같은 게임도 컴퓨터 게임이다. 오래되지 않은 과거만 하더라도 컴퓨터게임(이하 게임)은 애들이나 즐기는 것이라며 무시하던 시기가 있었다.

신경망 알고리즘

사실 컴퓨터게임의 역사는 컴퓨터 탄생의 역사와 맞먹는다고 볼 수 있다. 핑퐁pingpong을 알고 있을지 모르겠다. 다이얼이 유일한 컨트롤러이고, 사용자와 컴퓨터가 벽 또는 라켓을 맞고 튄 공을 뒤로 빠지지 않도록 받아 치는 게임이다. 이 게임은 단순히 레벨이 올라가면 점점 컴퓨터 라켓의 속도가 빨라지는 단순한 알고리즘부터, ‘신경망’을 이용한 인공지능 알고리즘을 적용하기도 한다.

신경망을 이용한 인공지능 알고리즘을 적용하면, 처음 한동안은 잘못 프로그래밍한 것으로 착각할 정도로 바보같이 움직인다. 가만히 서있다가 스코어 차이가 벌어지기 시작하면서 공 쪽을 이동하고 직선으로 튀어오는 공만 받을 수 있다가 벽에 맞아 튀는 공도 받아 칠 수 있는 수준이 된다. 게임의 결과는 굳이 꺼내지 않겠다. 내가 만든 코드에 감탄하면서도 승부에 집착하면 건강을 해칠 수 있다…

게임 중독

최근의 게임들은 기막힌 시나리오와 함께 고성능, 소형화된 개인용컴퓨터의 발달로 실사와 유사한 3차원 화면과 영화같이 화려한 액션이 가미되어, 한 번 빠져들면 헤어나올 수 없을 정도로 멋지게 제작되고 있다.

내가 봐도 멋진데, 아이들은 오죽할까. 특히나 요새 아이들은 컴퓨터 게임을 정말 좋아하고, 또 쉽게 빠져든다. 컨텐츠의 우수함도 한 몫 하겠지만, 사회적인 문제도 크다. 함께 놀 친구도 (학원가서) 없고, 부모님도 맞벌이 나가시고, 형제도 없는 상황에서 TV와 곰인형, 컴퓨터와 친구가 될 수 밖에…

나이, 학년, 학력의 수준과 상관없이 학생들에게 프로그래밍을 가르치는 건 결코 쉬운 일이 아니다. 프로그래밍이 어려워서가 아니고, ‘동기부여’가 되지 않기 때문이다. 설령 ‘동기부여’가 잘 되었다 하더라도 어느 정도의 사고력이나 문제해결력이 갖추어지지 않았다면 넘어야 할 산이 좀 더 많을 수 있겠다.

아이들이 즐거워하는 게임을 개발하는 것으로 동기부여를 하면 어떨까? 즐기는 게임을 벗어나 만들어 보는 게임이다.

RPG2000

한 때, RPG2000 이라는 롤플레잉게임RPG 제작 도구를 통해 프로그래밍을 시도했었다. 하지만,

  1. 유료SW이기 때문에, 라이센스를 구입해 컴퓨터실에 설치하기 곤란했고,
  2. 시나리오가 없으면 제작의 의미가 없었고,
  3. 심지어 바닥과 벽의 타일을 깔아서 배경을 만들어야 하므로 시간이 오래 걸렸고,
  4. 배우는 시간이 필요했다.

이런 점에서, 학생들과 교실에서 수업하려면

  1. 가능하면 무료로 교실과 가정에 보급이 가능해야 하고,
  2. 배우는 시간이 짧아야 하며,
  3. 문제 해결의 실마리를 인터페이스가 제공해야 하고,
  4. 즉각적인 수정과 재프로그래밍으로 재미를 높여야 한다.

프로그래밍을 이해하기 위한 첫걸음의 의미로도 RPG보다는 한 판짜리 아케이드 게임이 더 잘 어울린다. 즉각적인 피드백으로 오류를 찾아내고 조금 더 재미있게 재구성하는 과정에서 성취감을 느껴야 발전 속도가 빨라지게 마련이니까.

KODU Project

모든 것을 만족시킬 Microsft사의 프로젝트. KODU Project http://fuse.microsoft.com/page/kodu 를 소개한다.

banners-kodu

(게임에서 흔히 사용되는) 몇 가지의 필수 영단어들 – Load, Save, Mouse, Click, Left, Right 수준? – 을 알고 있거나, 영단어가 어렵다면 아이콘의 의미 정도는 알아낼 수 있을 정도의 상식만 있으면 어렵지 않게 원하는 아케이드를 제작할 수 있다.

더 놀랍고 흥미로운 사실은 2차원 상의 아케이드 게임이 아닌, 3차원으로 진행되는 게임을 만들어 볼 수 있다는 점이다.

KODU의 놀라운 점들을 정리해 보면,

  1. 키보드를 이용하는 복잡한 스크립트script 언어대신에, 조건문에 맞는 아이콘의 선택과 배열로 게임을 제작할 수 있다. Xbox 컨트롤러가 있다면 조금 더 게임을 즐기기 편하다.
  2. 별도의 랜더링이나 제작 과정에서 즉각적으로 수정하고 반영할 수 있다. 반응이 빠르고 부드러우며 논리오류를 발생시킬 여지가 적으며 확실하다.
  3. 변수/상수/분기/반복/조건문을 모르더라도 생각 자체를 그대로 구현할 수 있다. 구상하고 – 예상하고 – 제작하고 – 즐기고 – 고칠점을 찾고 – 다시 예상하고 – 제작하고 – 즐기는 반복이다.
  4. 놀이다. 그 자체로 동기부여와 친구간의 협력과 선의의 경쟁을 통해 더 나은 결과를 생산할 수 있다.

이런 의견의 뒷켠에는 ‘KODU’와 프로그래밍과의 연관성은 인정하지만, 그 과정이 ‘교육적’인 의미가 있느냐는 질문을 받게 마련이다. 질문자가 바라는 잘 디자인된 유의미한 활동의 ‘학교 안 교육’도 있겠지만, 학생들이 자발적 동기로 경험하는 활동 자체가 ‘학교 밖 교육’이라고 볼 수 있지 않은가? 라고 반문할 수 있지 않을까?

‘학교 안 교육’이라는 의미는 ‘잘 짜여진’ 교육과정과 교육 시스템, 교사에 의해 제공되거나 의도된 활동 속에서 깨달음을 얻는 ‘서비스’를 통칭한 것이다. 사교육도 마찬가지… 그 이외에 학생의 개인적, 사회적 경험을 통한 깨달음을 ‘학교 밖 교육’이라고 해보았다.

실제로 80분 수업에서 학생들의 KODU 학습 속도는 무척 빨랐다. KODU 안내 동영상을 같이 시청하면서 다른 영상을 보는 방법을 설명해주니 금새 따라하기 시작했고, (개인적으로 시도해본 적 없는) 2인용 게임까지 만들어 함께 진행하고 있었다. (ASDW키와 화살표방향키를 이용한 슈팅게임)

Installing Kodu video

KODU Install

First Game tutorial

KODU First Game

일부 학생들은 게임과 액션 자체에 흥미가 부족해 다른 친구의 작품을 ‘즐기는’ 정도에 머무르긴 했지만, 이렇게 친구가 게임을 만들 수 있다는 사실 자체를 학습한 것을 활동 결과로 평가하였다.

아쉬운 점

다만, 몇 가지 아쉬운 점은

  1. 친구간에 결과물을 네트워크를 통해 쉽게 공유해 즐길 수 있으면 어땠을까 하는 생각,
  2. 아니면, 게임을 패키징하여 친구와 주고받으면서 즐길 수 있도록 하면 좋겠고,
  3. 저학년을 위해 한글화를 지원했으면… (그저 바램일 뿐일 수도… 필수 라이브러리인 XNA의 Unicode Font 처리 문제가 있어서… 불가능해 보인다… 뚱뚱한 OpenGL이나 DirectX로 다시 탄생하면 모를까…)
  4. 게임의 시작과 종료에 실제 판매하는 게임처럼 멋진 인터페이스를 제공하면 어떨까 하는 생각 정도?

어떤 분야든 한 번쯤 ‘제대로 미쳐’보면, 다른 학문과도 쉽게 통한다고 한다. KODU는 한 번쯤 중독되어도 좋다고 본다.

– 추후 프로그래밍 이야기에서 KODU의 프로그래밍 요소를 추출하여볼까 한다. 이번엔 소개만~ ^^

 

맥노턴

Spore 크리처 창조기

컴퓨터로 구현된 3차원(3D), 컴퓨터그래픽(CG) 기술은 워크스테이션과 메인프레임, 고도로 훈련된 전문가들의 영역에서 내려온지 오래다. 여전히 이를 구현하고 적용하는데에는 상상을 초월하는 노력과 시간이 필요하지만, 그 용어와 흔한 쓰임 덕분에(?) 이미 ‘흔한’기술이라고 생각되고 있는 것이 현실.

컴퓨터를 이용하여 3차원 디자인을 구현한다는 것은 제작 도구의 기능과 생소한 용어들과 같은 기술적인 면을 떠나, 학생들의 연령에 따른 성장 단계개인적인 능력과 성향의 문제가 고려되어야 하기 때문에 그리 간단한 일이 아니다.

2차원 평면인 모니터에서 3차원 입체형상을 표현하려면 남다른 공간감각이 요구되고, 창조적인 캐릭터를 생성하기 위해선 상상력이 뒷받침 되어야 한다.

그래서 아이들 수준에서 3차원 그래픽을 경험하게 하는 방법으로 Spore(EA) 게임 속 캐릭터를 생성하는 도구 Spore 크리처 창조기를 소개한다. Spore라는 중독성 강한 엄청난 게임 중 크리처창조기 부분만 떼어서 만든 프로그램이다. 트라이얼 버전은 EA코리아를 통해 무료로 제공되며, 정식버전보다 (팔다리눈코입귀뿔 등의) 오브젝트가 적지만 학습을 진행하는데 전혀 문제가 없다. http://www.ea.com/asia/spore-creature-creator

여기서 잠깐 인터프리터와 컴파일러에 대한 이야기로 빠져보자면, 프로그래밍 입문자의 경우에 C 또는 BASIC을 권장하던 시기가 있었다. C와 BASIC의 가장 큰 차이를 들자면, 소스코드의 실행 방식에서 찾아볼 수 있는데 C는 컴파일러이고 BASIC은 인터프리터라는 점이다. 두 언어 모두 인간이 알아보기 쉽도록 만든 소스코드를 컴퓨터에서 구동 가능한 바이너리코드로 변환하는 컴파일의 과정이 필요하지만, C는 매 실행마다 C컴파일러로 컴파일 후 운영체제상에서 구동되는 반면 BASIC은 인터프리터가 항상 컴파일하여 소스를 감시하고 실행즉시 구동한다. 복잡한 이야기를 떠나 C는 컴파일하기 전까지는 논리/구문 오류error를 찾아내는게 쉽지 않은 반면 BASIC은 코드를 실시간으로 컴파일하는 인터프리터 덕분에 빠르게 실행하고 오류를 쉽게 찾아낼 수 있다. 그래서 BASIC을 이용해 순차,반복,분기,모듈,함수 등의 구조를 익히고 개념을 형성하는데 기가막힌 환경을 제공했었다(?)

Spore 크리처생성기가 BASIC의 인터프리터의 개념과 유사하다고 보면 이해가 빠를듯 싶다. 3차원 모델링, 랜더링, 영상편집의 과정을 매 번 거치지 않아도 모델링과 랜더링이 실시간으로 이루어지고, 미리 제공되는 몇 가지 동작과 카메라뷰를 통해 어렵지 않게 창조적인 캐릭터를 생성해 낼 수 있다.

프로그램의 사용법은 가르쳐주지 않아도 단 몇 분이면 익힐 수 있고, 팔다리눈코입귀뿔 등을 자유롭게 만드는 몸통에 붙이고 특성에 따라 다르게 행동하므로 창조적 활동에 몰입할 수 있는 멋진 기회를 줄 수 있다.

교실에서

* 상상 속 동물 만들기

  1. 크리쳐생성기로 상상 속 캐릭터 만들기
  2. 지점토/점토를 이용해 실물로 만들어보는 활동
  3. 만들어진 캐릭터를 촬영하여 SNS/게시판 공유

* 외계인 발견

  1. 상상속 외계인을 만들어 (사진찍기, 애니메이션Gif 생성, 영상으로 저장) SNS 또는 게시판에 공유
  2. 외계생명체의 이름을 붙이고, 특징, 성격, 일화 등 상상하여 글쓰기
  3. 에버노트를 이용하여 활동을 기록하고 보존

* 진화 타임머신

  1. 다양한 생물의 서식 환경 조건을 찾아보기
  2. 입의 모양, 귀, 눈, 뿔 등을 조합하여 초식/육식, 공격적/온순, 수중/육지 등의 서식환경에 맞도록 창조
  3. 현존하는 동물도 유사하게 만들어 보고 생물의 진화에 대해 이해

* 나(친구)의 아바타

  1. 나(친구) 성격과 외모, 나에게 필요한 능력에 대한 브레인 스토밍
  2. 현재 나의 모습과 비슷한 아바타 창조. 미래의 나에게 필요한 능력을 추가
  3. 사진으로 찍고, SNS의 프로필 사진으로 교체

 

비디오카드의 3D 가속기능이 필요하다. 보드에 내장된 비디오칩셋은 3D 기능이 미약하여 지원되지 않을 수 있으므로 확인 필요.

맥노턴.