250x250

Xtra의 그 무엇

블로그 이미지
욕심많아 진도 느린 Xtra입니다.
by Xtra
  • Total hit
  • Today hit
  • Yesterday hit

728x90
728x90

선 요약

후 사설

 

 

 

 

 

요약

   이 글은 렌파이 2주 사용 소감이다.

   거의 20년 전에 내 기억 속에 있던 오픈 소스 게임 제작 툴과 의외로 크게 차이가 없었다.

   아무대나 변수를 선언해도 상관없던것이 놀라웠다. 확실히 이런 최적화는 필요 없는 성능의 시대 인가?

   변수 기록이 남아 있으니 강재재검사를 자주 해야한다.

   명령어가 가지는 기능이 강력한 만큼 제약이 심하고 비약이 심해서 하나를 알면 그냥 하나이다.

 

 

 

 

 

 

사설

 렌파이를 선택하고 작업을 시작한 이유는 3가지다.

 

 가장 큰 이유는 노트북을 수리 보냈다.

    - 지금 사용하는 노트북에서 제작 가능한 수준의 프로그램은 몇 없고 그 중에서 렌파이가 으뜸이었다.

 그 다음 이유는 나중에 정말 완성했을때 수익률을 생각했다.

 마지막으로 지금 만드려는 육성 게임에 고성능 엔진은 오히려 독이라 생각했다.

 

 나는 렌파이를 설치한 유튜브에서 제작하는 영상을 몇개 감상했다. 보기에는 거의 20년 전에 나왔던 오픈 소스 제작 툴과 같아 보였다. 그때나 지금이나 코드 사이를 점프라는 명령어로 넘나 들면서 별반 차이가 없어 보였다.

 그래서 별거 없나 싶었는데 예제로 모았던 지료들을 보니 기능 상당히 많았는데 알고 보니 이건 엔진으 고유 기능이 아니라 With Python이라는 느낌이다. 명령어에 대해서 알아보기 위해 검색하면 거의 대부분 Python이 거론된다. 나는 이번 제작을 위해서 공부를 많이 할 생각은 없기 때문에 가능하면 Python을 공부하지 않는 범위내에서 자료들을 파악하고 응용해서 게임을 만들까 한다.

 

 이번 육성 게임에 필요한 기술이라한다면

 - 딸 아이의 이름 입력

 - 이미지 버튼

 사실상 이 두가지면 거의 끝이다.

 보통 엔진을 사용한다고 해도 저장 불러오기 인터페이스 만들기 등등 다양한것을 공부 할 필요가 있지만 렌파이는 게임에 필수가 되는 기능들을 기본으로 제공하고 있다.

 

 그래서 2주간 만지작거리면서 느낀점은

 변수

  어디다가 변수를 선언해도 모든곳에서 언제든지 사용할 수 있다. 정말 이래도 되나 싶을 정도로 아무대서나 변수를 사용할 수 있다. 심지어 호출 되지 않은 rpy에 있는 변수도 init: 아래에만 선언 되어 있기만 한다면 사용이 가능했다. 최적화를 무시하는 방법이지만  동시에 변한 방법이다. 변수가 하나 둘이면 모를까 게임을 만들다보면 몇백가지가 되는데 그걸 이리저리 돌려 쓰다보면 또 비슷한 이름을 파생시켜야하고 혼자서 관리하다가 몇일 몇달이고 무시하다보면 다시 손대기 보통 어려운 일이 아니다. 그 부분에서는 속편하게 작업 할 수 있을것 같다.

 

 기능의 제약이 있는 만큼 비약이 심하다.

https://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=38080#p412055 

 

On Screen Text Input - Lemma Soft Forums

A place for Ren'Py tutorials and reusable Ren'Py code. Forum rules Do not post questions here! This forum is for example code you want to show other people. Ren'Py questions should be asked in the Ren'Py Questions and Announcements forum. namastaii Eileen-

lemmasoft.renai.us

 내가 집중적으로 본 자료이다. 내용은 유저에게 입력 받는 정보를 변수에 저장해서 보여준다. 이미지로 만들어진 버튼도 있으니 필요한 기술은 이 자료 하나에 전부 있다고 볼 수 있었다. 즉 이거 하나만 파악하면 사실상 데이터 노가다만 하면 육성 게임을 만들 수 있다. 기술 공부 끝 The End다. 다만 정말로 이것 만으로 괜찮을지 생각해볼 부분은 있었다.

 위 자료는 총 900자가 약 60줄로 되어 있다. 분량 좀 있는것 같다 생각했는데 알고 보니 실제 기능을 하는 것은 imagemap 하나로 이 안에서 이미지를 버튼화 시키고 입력까지 받고 있다.

 즉 불필요한 내용이 상당히 있어서 전부 쳐내면

init python:
    firstname = ""
    def name_func(newstring):
        store.firstname = newstring

define d = Character('')
 
label start:
    show screen text_input_screen
    d "Your name is [firstname]!"
   
screen text_input_screen():
    default screenvar = False
    imagemap:
        ground "background.png"
        idle "idle.png"
        hover "hover.png"
        selected_idle "hover.png"

        hotspot (150,140,475,200) action SetScreenVariable("screenvar",True)
        hotspot (625,140,110,100) action [Hide("text_input_screen"),Jump("start")]
        if screenvar == True:
            input default firstname pos(200,165) changed name_func

 script.rpy에 이렇게 적어도 동일하게 작동한다.

 이게 실제로 모든 기능이 imagemap에 있기 때문에 하나만 공부하면 끝나네 개꿀? 하고 시작했는데 응용을 할 수 없다. 간단한 만큼 제약이 심하고 이 기능에서 안되는것은 죽어도 안되는 것이다. imagemap가 가지는 가장 큰 문제점(제약)은 이미지의 위치나 크기를 결정할 수 없다. 또 버튼으로 만들 수 있는 이미지는 hover혹은 selected_idle로 하나로 정해져 있는듯한다. 이런 경우 달력을 만들어 1~30일을 모두 버튼으로 만들 수는 있어도 달력 위에  다른 이미지를 뿌릴 수는 없다. 만약 이 기능으로 월드 맵을 만든다하면 맵이 되는 그림은 이동해서는 안된다. 이동 시킬 수도 없지만 이동하게 되면 UI 위치가 어긋하게 되는 것이다.

 이 기능 하나만 사용하게 되다면 모든 기획을 여기에 맞추어야 한다. 

 그리고 비약이 심해서 한눈에 기능에 대해서 파악하기가 어렵다. 무조건 실험과정을 거쳐야 한다. hotspot의 경우 한국어로 문서를 번역했더니 x,y좌표라고 나와 있어서 처음에 그림을 그리는 위치인줄 알았더니 알고보니 imagemap에 속한 특정 그림을 잘라서 남겨 놓는 좌표였다.

 지금이야 알고 있으니 우스운 기억이지만 처음에는 환장하는줄 알았다. 뭐냐 이 기능은... 도대체 작동 원리가 뭐지?

 특히나 헷갈렸던것이 이름을 입력 받는 기능인데 실제 명령어는

input default 변수명 pos(위치 x, 위치 y) changed 함수명

 이거다. 그런데 이에 대한 조건문의 조건이 위 자료에서는 hotspot에 붙어있는 바람에 주석 처리하면 같이 사라져 버려서 굉장히 혼란스러웠다. 그래서 조건문까지 날리고 바로 기능만 알 수 있게 만든게 아래이다.

init python:
    firstname = ""
    def name_func(newstring):
        store.firstname = newstring

define d = Character('')
 
label start:
    show screen text_input_screen
    d "글자를 먼저 입력하고 화면을 클릭하시오"
    d "Your name is [firstname]!"
   
screen text_input_screen():
    imagemap:
        ground "background.png"
        input default firstname pos(200,165) changed name_func

 시작하자 마자 입력이 가능한데 딱히 엔터를 칠 필요는 없다. 작성된 글자는 자동으로 변수에 입력된다. 코드의 비약이 얼마나 심한지 알 수 있다. 글자색은 나는 검정, 파랑, 노랑 세가지를 보았는데 아마도 데이터 찌꺼기라 할지 뭔가 흔적이 계속 남는 것 같다. 이런 찌꺼지들은 남으면 게임을 만들때 당장은 정상적으로 작동하지만 나중에 재부팅 후 또는 배포판을 만들었을때 사라지기 때문에 정상적인 작동을 하지 않을 수 있다.

 그러니 뭔가 하고나면 강재 재검사는 필수 이다.

 

 

 

 

내가 작성하고자한 내용을 다시 정리하자면

 - 변수가 너무 자유롭다. 반감을 가질 정도로..

 - 제약과 비약이 심해서 공부하기 쉽지 않고 코딩을 생각한다면 얻는것이 거의 없다.

 - 강재재검사 자주하자

 

 

 

 하지만 확실히 놀라운것도 있다. 기능에 맞추어 기획만 한다면 나는 이 프로그램으로 게임을 만들 준비가 끝난것이 맞다.

 

 

 

 

 

 

 

728x90
728x90
AND

ARTICLE CATEGORY

전체 카테고리 (941)
게임 개발 (10)
기획 파트 (23)
그래픽파트 (73)
思-네트워크 (112)
프로그래밍 (74)
2020 ~ 24 잡탕 (393)
2010 ~ 19 잡탕 (197)
만화 연재 (14)
소설 연재 (12)
기타 연재 (0)
네오스 VR (18)
그란 카 리버리 (15)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

ARCHIVE