250x250

Xtra의 그 무엇

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

728x90
728x90

선 요약

후 사설

 

 

 

 

 

 

요약

   정확하게는 label안에서 for문을 사용할 수 없다.

   label안에 선언한 Screen안에서 for문이 작동하는 것은 Screen에서 for문을 쓸 수 있기 때문이다.

   label안에서 python명령어를 사용하기 위해서는 python:을 작성해야 한다.

label 명칭:
    python:
        for 변수 in range(0, 6):

   - python이 선언 되면 그 다음 명령에 있는 show는 작동 하지 않는다.

 

 

 

 

 

사설

 이 문제의 원인을 알아내는 것은 그리 어렵지 않았다. 한번의 실험만으로 충분히 이런 법칙으로 작동하는지 짐작할 수 있는 내용이었다. 다만 납득이 안된다. 왜 스크린에서만 작동하는가? label안에서 사용할 일도 있을텐데 그 대책은 없는가?

 공부 하기 싫으니까 $를 붙여 보았다. 덕지 덕지 붙였더니 다음 줄에 $가 있으면 작동하지 않는다.

 label앞에 붙여 보니 동일한 에러가 나면서 실패했다. 그래서 init python:처럼 label python:을 해보았다. 솔직히 이건 먹힐 줄 알았다. 하지만 실행되지 않았다. 그래서 검색해보니 요약에 적힌 내용이 검색되었다. 이건 정상적으로 작동했다.

 

label 명칭:
    python:
        for 변수 in range(0, 6):

 

 내용은 간단하지만 생각보다 찾는 데 시간이 걸렸다. 나는 처음에 "renpy label for문 사용"이라는 검색어로 국내 해외 사이트를 검색했는데 전혀 도움이 되는 내용이 나오지 않았다. 한참을 해매다가 "renpy label python for"라고 검색하니까 즉방으로 나왔데 이것은 운이 좋았던것이다.

 공식 문서에서 label을 다루는 내용을 보았을때 label안에서 python 명령어를 쓰는 방법 같은것은 일절 확인하지 못했다. 내가 확인 한것은 레이블과 파이썬 두개의 문서 였는데 이 글을 작성하면서 다시 확인했지만 label안에 python:을 선언하는 예제는 하나도 없다. 이게 뭐가 문제인가 할 수 있는데 내가 블로그의 내용을 먼저 보지 못하고 공식 문서대로 작업했다면 코드의 흐름을 상당히 빙글 빙글 돌아가게 만들었어야 한다. 후반으로 갈 수록 점점 더 복잡해진다. 내가 과거에 renpy같은 엔진으로 작업을 하다 포기한 원인이 이거다. 빙글 빙글 흐름을 돌리다 보면 점점 난이도가 올라가서 포기하게된다. 차라리 그냥 C++코딩하는게 더 속편해진다. 지금의 흐름을 유지할 수 있냐 없냐는 상당히 중요한 문제이다.

 

 

 또 여기서 한가지 새로운걸 떠올려 볼수 있다.

 Screen에 명칭 없으면 콜 하지 않아도 작동 하는거 아니야?

   안된다. 사실 이건 공식 문서 조금만 읽어봐도 아는건데 나는 읽기 싫어서 먼저 실험 부터 해보았다.

 

 

 성공하면 좋은거였는데 아무튼 내가 하고 싶은 말은 발상의 전환을 시도 해볼만큼 중요한 정보보 기술인데 공식 문서에서는 일전 보이지 않았다는 것이다. 코드의 흐름을 원활하게 하는것은 정말 너무나 중요한 응용이다. 조금 더 적자면 renpy를 사용해보니 코드의 흐름이 좀 특징이 있다.

 흐름 중간에 call을 하면 call한 내용이 중간에 끼어서 그 rpy 내용의 끝에 자동으로 call 했던 코드로 돌아와 나머지 처리를 진행한다. 이건 정말 흐름을 유지하는데 있어서 renpy 같은 엔진에는 중요한 기능이라 생각한다. jump만으로는 한계가 있다. 난 call을 통해서 기능을 분산시켜 코드가 복잡해 보이지 않도록 정리하려고 계획했다. 그런데 call에는 매우 큰 제약이 있었다. 전체 코드에서 동일 명칭으로는 한번으로 제한되는 것 같다. 나는 기초 공부를 한것이 아니기 때문에 딱 잘라 말할 수 없지만 이것 저것 실험해본 결과 내가 응용 할 수 있는 범위내에서는 다 실패했다. 같은 rpy를 두번 call할 수 없었다. 두번 적혀 있으면 프로 그램 자체가 실행 되지 않는다. 그 결론이 전체 흐름에서 call은 한번이다.

 이 문제에 처음 직면한것은 인벤토리를 여러 종류를 만들고 그 값다마 처리 방식이 조금 다르게 해서 하나의 rpy에 여러게 call대상을 모아 두었다가 여러번 call할 생각이었다. 막상 이 계획을 실행하니 하나의 rpy에서 call한 명령이 하나 이상 있으면 프로그램은 실행 되지 않는다. 이 문제의 해결 방법으로는 각 기능별로 rpy를 여럿 만드는 것과 call하지 않고 show hide 하는 것이다.  처음에는 이 문제에 대해서 납득 하지 못해서 이것 저것 실험 해보았지만 지금은 포기하고 아이템 창에 한해서 show hide를 사용하고 있다. 

 call이 좋은게 명령이 시작된 지점으로 자동으로 복귀한다는 것이다. 전체 흐름에서 점프로 이동할 경우 편법을 통해서 돌아 올 수 있다. 그 방법은 20년 전에도 사용했었다. 때문에 그 한계 또한 잘 알고 있다. 어쩌면 공부하면 더 좋은 방법이 있을지도 모르지만 아주 꽉 막히는 상황이 아니라면...

 

 뭐 이래저래 아직까지는 문제가 없다.

 말이 많이 빠졌지만

 

label 명칭:
    python:
        for 변수 in range(0, 6):

 

 이 발견은 그 흐름을 유지해준 중요한 발견이라는 것이다.

 아 그리고 위 내용을 발견했던 블로그를 자세히 볼려고 다시 검색해는데 나오지 않는다. 가끔 이런 귀신 같은 경우가 있다.

 운이 좋았다.

 

 

 

 

 

728x90
728x90
AND

ARTICLE CATEGORY

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

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/05   »
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 31

ARCHIVE