게임제작과 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의 프로그래밍 요소를 추출하여볼까 한다. 이번엔 소개만~ ^^

 

맥노턴

글쓴이: 맥노턴

초등교사커뮤니티 '인디스쿨' 대표