아방스 칼럼

파이썬과 함께

1편 : With Construct Classic

0. 들어가며

  파이썬(Python)은 C, Java, Objective-C, C++, C#, (Visual) Basic, PHP 다음으로 많이 사용되는 프로그래밍 언어입니다. RPG Maker(이하 알만툴)에서 사용되는 루비(Ruby)와 마찬가지로 인터프리터가 필요한 스크립트 언어입니다. 알만툴 커뮤니티에서는 루비가 친숙하기 때문에 파이썬은 잘 모를 수 있습니다만, 루비보다 훨씬 많이 쓰이는 언어입니다. 루비보다 먼저 나온 언어이기때문에 커뮤니티도 더 활성화 되어 있어 조금만 검색해보더라도 관련된 정보를 구하기가 훨씬 쉬운 것을 느낄 수 있습니다. 누구나 쉽게 배우는 프로그래밍 언어를 모토로 설계되었기 때문인지 비전공자가 배워도 입문이 편한 언어라고 생각이 듭니다.

  저도 딱히 파이썬을 이전부터 잘 알고 있던 것은 아니었습니다. Construct(지금의 Construct Classic)라는 툴에서 지원하는 스크립트 언어가 파이썬이라는 이야기에 그럼 파이썬은 어떤 언어인가 궁금해 검색해본 것이 첫 만남입니다. Construct의 스크립트 지원이 미약하다는 것에 배우지 않으려고 생각하다가 파이게임(Pygame), 렌파이(Ren'py) 등에서 파이썬을 사용할 수 있다는 것을 알고 가볍게 입문했습니다. 하지만 정작 파이게임이나 렌파이는 손대지 않고 Pythoncard를 사용해서 ESG(http://avangs.info/help_faq/436659)와 같은 간단한 GUI를 제작한 것 외엔 딱히 써본적이 없다는 것은 개인적으로 반성해야 할 점이라고 생각이 드는군요.

  여튼 스크립트이야기 연재 중 '파이썬과 함께'에서는 루비가 아닌 파이썬을 사용하는 것에 대해서 이야기 해보도록 하겠습니다. 이번에는 그 시작으로 Construct Classic에서의 파이썬을 이야기 해보겠습니다.



1. Construct Classic이란?


( △ Construct Classic 공식 홍보 연상 )

  우선 Construct Classic이 무엇인가 살펴볼 필요가 있습니다. 아방스에 Softblow님께서 2011년도에 소개(http://avangs.info/pds_tools/171586)된 2D게임 제작툴로 뛰어난 기능과 손쉬운 제작이 특징입니다. 당시에는 Construct라는 이름으로 나왔습니다만, 이후 Construct2가 정식으로 나오면서 이전버전을 오픈소스화 하는 동시에 Construct Classic이라고 개명하였습니다. 아방스에서 컨스라고 부르는 툴은 이 Construct Classic을 뜻합니다.

  기본적으로 제공하는 Plug-in을 이용해서 손쉽게 2D게임을 제작이 가능하다는 것이 장점입니다만, 그럼에도 국내 알만툴 커뮤니티에서는 잘 사용이 되지 않습니다. 주된 원인으로는 비한글화, 제작의 어려움과 불편함, 홍보의 미흡, 자잘한 버그가 있습니다. 앞서 분명히 뛰어난 기능과 손쉬운 제작이라고 소개했던 것과는 조금 상반되는 것 같습니다만, 그렇지 않습니다. 하나씩 차근차근 이야기 해보도록 하겠습니다.

  일단 비한글화의 장벽입니다. 툴의 번역을 지원하지 않는 것은 아닙니다만, 그냥 무작정 languages폴더내의 파일을 수정할 경우 정상작동하지 않습니다. 누군가 본격적으로 시도해야 할 부분인데, 그렇지 않아 계속 영문판인채로입니다. 아무래도 어린 학생층에게는 영문판이 큰 진입장벽이 됩니다.

30a12_1.png

( △ 알만툴의 커먼이벤트와 유사한 Construct Classic의 이벤트 시트 )

  다음으로 제작의 어려움과 불편함입니다. 툴 자체가 상당히 직관적이기 때문에 간단하게 게임을 제작이 가능한 것이 장점입니다만, 이는 어디까지나 스크롤방식이나 플랫폼 방식과 같은 단순한 게임에 국한되는 이야기입니다. RPG 제작을 하고자하는 알만툴 커뮤니티에서는 기본적으로 제공되지 않아 불편한 부분이 너무 많습니다. 알만툴로 따지자면 커먼이벤트만으로 게임을 제작하는 수준이라서 알만툴에서처럼 많은 병렬처리로 인한 렉유발은 없겠지만, 그만큼 구조화된 이벤트처리를 해줘야 하기 때문에 난이도가 높습니다. 이벤트에서 제공하는 것들도 프로그램 언어를 닮아 입문자가 알아보기 어렵다는 것도 한몫을 합니다. 더불어 소재의 등록/관리가 불편합니다.

  마지막으로 자잘한 버그의 문제가 있습니다. 그 중 기본적으로 제공하는 저장관련 버그는 큰 문제입니다. 물론 Array, Binary, Hash Table, INI, TextManipulator 등의 오브젝트를 추가하여 데이터를 보존함으로써 해결이 가능한 부분이긴 합니다만, 아무래도 RPG Maker에서도 진입장벽을 느끼는 초심자분들께는 다소 진입장벽이 되는 부분이라고 생각이 듭니다.

  그렇기 때문에 일단 보다 쉬운 알만툴이 있는 관계로 그다지 빛을 보지 못하는 툴입니다. 하지만 나름 쓸만한 괜찮은 툴이라는 점에는 부정할 수 없습니다.



2. Construct Classic With Python

  Construct Classic에서 파이썬 2.5를 지원합니다. 하지만 그다지 활용도가 높은 것은 아닙니다. 일단 기본기능인 이벤트의 컨디션과 액션기능들이 프로그래밍 언어와 유사한 형태인데다가 스크립트로 접근가능한 부분이 그리 많지 않다 보니 굳이 따로 스크립트를 사용할 필요가 없을 정도입니다. Construct Classic이 자랑하는 것은 Plug-in 추가를 이용한 손쉬운 게임제작인데 Plug-in 제작은 Plug-in SDK를 사용하여 C++로 작성해야 하기 때문에 파이썬과는 무관한 부분입니다.

  이러저러한 이유로 Construct Classic에서의 파이썬은 잘 쓰이지 않는 편입니다. 하지만 앞서 아쉬운 소리를 많이 한 것과는 달리 일단 파이썬을 아는 사람이라면 안되는 것보다는 되는 편이 확실히 편합니다. 예를 들어보자면 세이브 기능 구현을 위해서 파일 입출력하는 것을 하나의 예로 들 수 있습니다.

  기본 기능을 사용해서 저장 파일을 생성하기 위해서는 Array, Binary, Hash Table, INI, TextManipulator 등의 오브젝트를 추가하여 데이터를 보존해야 합니다. 하지만 파이썬 스크립트를 사용하는 경우라면 pickle모듈을 이용해서 보다 자유롭게 파일을 생성할 수 있습니다.


import pickle

data = 데이터
file = open('파일명.확장자', 'wb')
pickle.dump(data, file)
file.close()

 


  위의 내용은 '파일명.확장자' 라는 파일에 데이터를 피클링 하는 내용입니다.


import pickle
file = open('파일명.확장자', 'rb')
data = pickle.load(file)
file.close()


  위의 내용은 반대로 이전에 작성했던 '파일명.확장자' 라는 파일에 기록된 데이터를 언피클링하는 내용입니다.

  Construct Classic에서의 파이썬은 이런정도의 것이기 때문에 알만툴에서의 Ruby 스크립팅을 생각했다면 많이 다를 수 있습니다. 앞서 언급한 바와 같이 알만툴로 따지자면 커먼이벤트만으로 게임을 제작하는 수준이라서 스크립팅도 커먼이벤트에서 추가한 스크립트 정도의 수준일 뿐입니다. 알만툴과 같이 기본 기능 자체를 뜯어고치는 수준은 아니기 때문에 Construct Classic을 사용하기 위해서라면 파이썬보다는 차라리 C++를 학습하는 것이 더욱 도움이 되리라 생각이 됩니다.(결론이 조금 이상하군요.^^;;)



3. 나가며

  이번에는 Construct Classic에 대해서 이야기해 보았습니다. 주된 내용은 Construct Classic에서 파이썬은 그닥 쓸데가 없지만, 알아두면 편하다는 것과 때문에 C++을 차라리 배우라는 것이 골자였다고 생각됩니다. 다음편에서는 파이썬과 함께할 수 있는 게임제작에 대해서 또 다른 내용으로 찾아뵐 수 있도록 하겠습니다. 그럼 다음 연재에서 뵙도록 하겠습니다.

Who's 습작

profile

* 게임소재 자료실 관리자 (2012.04.17 ~ ) / 게임리뷰 게시판 관리자 (2012.08.23 ~ )
* 개인 블로그 : https://eternalworld.tistory.com
└ RPG Maker VX/Ace 메뉴 편집기 등 배포
* 리뷰 블로그 : https://etude87.tistory.com
└ RPG Maker 시리즈 한글패치 정리, 쯔꾸르 시리즈 이용 규약 등 소개
* 프리 게임 한글화 DB : https://freegame.tistory.com
└ 한글화된 해외 무료 게임 정리

Comment '2'
  • ?
    Softblow 2012.12.12 10:14
    이 게임툴로 입문한 게 잘한걸까 생각이 들기도 하네요. 생각보다 어렵더라구요 ;ㅅ;

    function 같은 것도 있지만.. 말씀하신대로 역시 C++을 얼른 배워서 플러그인을 만드는 편이 나을 것 같더라구요. 쓸 줄도 모르는 파이썬에는 무슨 기능이 있나 하고 기웃거려보기도 하고...

    그나저나 저장 기능에 이상이 있다는 건 처음 듣는군요. 한 번도 안써봐서 그런거려나요...
  • profile
    습작 2012.12.12 10:38
    이러니 저러니 해도 무료라는 점만큼은 칭찬해 줄 만 하지요. 하지만 지금도 열심히 Construct2 버그픽스가 멈추지 않는 걸 보면, Construct Classic은 정말 만들다 만 툴이 아닌가 싶기도….ㅎㅎ

List of Articles
분류 제목 글쓴이 날짜 조회 수
공   지 칼럼 게시판 이용 안내 6 습작 2012.07.09 14001
게임실황살피기 습작의 게임실황 살피기 : RMXP - 아오오니 2Player file 습작 2012.08.11 3098
XNA게임만들기 XNA 게임 만들기 - 5. 컨텐츠 관리 (1) 6 file 재훈군 2012.08.05 2851
XNA게임만들기 XNA 게임 만들기 - 4. 다중 시점 렌더링 5 file 재훈군 2012.08.05 3465
XNA게임만들기 XNA 게임 만들기 - 3. 라이브러리 만들기 1 file 재훈군 2012.08.04 3101
XNA게임만들기 XNA 게임 만들기 - 2. 게임을 만들기 위한 준비 4 file 재훈군 2012.08.04 3680
XNA게임만들기 XNA 게임 만들기 - 1. 목차 3 file 재훈군 2012.08.04 4153
스크립트이야기 습작의 스크립트 이야기 : 파이썬과 함께 - 1편 : With Construct Classic 2 file 습작 2012.07.30 3192
스크립트이야기 습작의 스크립트 이야기 : 비전투스크립트 이야기 - 1편 : RMVX Add-on file 습작 2012.07.27 3580
게임실황살피기 습작의 게임실황 살피기 : RMXP - 물방울 소리 1 file 습작 2012.07.21 3077
단   편 RMVX/Ace 맵배치를 논하다 7 file 습작 2012.07.11 3241
게임실황살피기 습작의 게임실황 살피기 : RMXP - Aooni Blood Online 3 file 습작 2012.07.09 3480
스크립트이야기 습작의 스크립트 이야기 : 번외편 - 3편 : Starter Kit 6 file 습작 2012.06.30 4543
게임실황살피기 습작의 게임실황 살피기 : RM2k3 - 서프라이시아 4 file 습작 2012.06.28 3042
게임실황살피기 습작의 게임실황 살피기 : RM2k - Beyond The World 1 file 습작 2012.06.30 2408
게임실황살피기 습작의 게임실황 살피기 : RM2k3 - Killer Bear 4 file 습작 2012.06.21 2416
게임실황살피기 습작의 게임실황 살피기 : PC - 바퀴투쟁 file 습작 2012.06.20 2426
게임실황살피기 습작의 게임실황 살피기 : RMVX - 어둠, 그 안에서 1 file 습작 2012.06.20 2812
게임실황살피기 습작의 게임실황 살피기 : RM2k3 - 寄生ジョーカー 3 file 습작 2012.06.13 2478
스크립트이야기 습작의 스크립트 이야기 : 번외편 - 2편 : 아방스의 코더들 11 습작 2012.06.12 4397
스크립트이야기 습작의 스크립트 이야기 : ABS를 말하다 - 2편 : Verus Tempus Proelium 5 file 습작 2012.06.10 5151
단   편 RPG MAKER : 걸음마 7 file Lighna 2012.06.06 5435
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9