글 작성자: Doublsb

저번 글에 이어서 작성한다.




Create Message Window


함수 목적 : 메세지 윈도우를 만든다.


함수 내용

def create_message_window

    @message_window = Window_Message.new

  end


설명

@message_window를 메세지 윈도우로 선언한다.





Create Scrolling Text Window


함수 목적 : 스크롤 텍스트 윈도우를 만든다.


함수 내용

  def create_scroll_text_window

    @scroll_text_window = Window_ScrollText.new

  end


설명

@scroll_text_window를 스크롤 텍스트 윈도우로 선언한다.





Create Map Name Window


함수 목적 : 맵 이름 윈도우를 만든다.


함수 내용

  def create_location_window

    @map_name_window = Window_MapName.new

  end


설명

@map_name_window를 맵이름 윈도우로 선언한다.





Update Player Transfer


함수 목적 : 장소 이동 시 메소드를 호출한다.


함수 내용

  def update_transfer_player

    perform_transfer if $game_player.transfer?

  end


설명

만약 플레이어 캐릭터의 장소 이동 실행 시, perform_transfer 메소드를 호출한다.





Update Encounter


함수 목적 : 인카운터 시 배틀 씬으로 씬을 이동한다.


함수 내용

  def update_encounter

    SceneManager.call(Scene_Battle) if $game_player.encounter

  end


설명

만약 플레이어 캐릭터가 인카운터했을 경우, 배틀 씬을 불러온다.





Determine if Menu is Called due to Cancel Button


함수 목적 : B키(메뉴키)를 눌렀을 때 메뉴 호출을 관리하는 메소드이다.


함수 내용

  def update_call_menu

    if $game_system.menu_disabled || $game_map.interpreter.running?

      @menu_calling = false

    else

      @menu_calling ||= Input.trigger?(:B)

      call_menu if @menu_calling && !$game_player.moving?

    end

  end


설명

(1)  if $game_system.menu_disabled || $game_map.interpreter.running?

      @menu_calling = false

메뉴 호출이 금지된 상태이거나, 게임 맵 인터프리터가 작동 중인 상태면 메뉴를 부를 수 없게 한다.


(2) else

      @menu_calling ||= Input.trigger?(:B)

      call_menu if @menu_calling && !$game_player.moving?

앞에서 말한 조건이 아닐 시, B키(메뉴키)가 인식되면 @menu_calling을 true로 한다.

이후 @menu_calling이 true 상태이고, 플레이어 캐릭터가 이동 중이 아니라면 call_menu 메소드를 호출한다.





Call Menu Screen


함수 목적 : 메뉴 씬을 불러온다.


함수 내용

  def call_menu

    Sound.play_ok

    SceneManager.call(Scene_Menu)

    Window_MenuCommand::init_command_position

  end


설명

(1) Sound.play_ok

확인 SE(효과음)를 재생한다.


(2) SceneManager.call(Scene_Menu)

메뉴 씬을 불러온다.

(3) Window_MenuCommand::init_command_position
메뉴 선택지 커서 위치를 초기화한다. 
무슨 의미냐면, 만약 '상태' 선택지를 실행한 뒤 다시 메뉴로 돌아갔다면 상태 선택지에 커서 위치가 가 있을 것이다.
이 구문은 변경된 커서 위치를 초기화하여 제일 위의 선택지로 커서를 이동시킨다.




Determine if Debug Call by F9 key


함수 목적 : F9키를 눌렀을 경우, 디버그를 실행한다.


함수 내용

def update_call_debug

    SceneManager.call(Scene_Debug) if $TEST && Input.press?(:F9)

  end


설명

테스트 게임이고 F9키가 입력되었다면, 디버그 씬을 호출한다.

디버그 씬에는 스위치의 ON/OFF와 변수의 값을 변경할 수 있는 기능이 들어 있다.

단, 게임 편집 툴에서 테스트게임을 실행해야만 디버그 씬을 불러올 수 있다.





Player Transfer Processing


함수 목적 : 플레이어 캐릭터의 장소 이동 과정을 관리하는 메소드이다.


함수 내용

  def perform_transfer

    pre_transfer

    $game_player.perform_transfer

    post_transfer

  end


설명

(1) pre_transfer 

pre_transfer 메소드를 실행한다.


(2) $game_player.perform_transfer
게임 플레이어 스크립트에서 perform_transfer 메소드를 호출한다.
내용은 캐릭터를 지정한 방향, 위치에 놓고 장소 이동 내용을 초기화하는 것이다.

(3) post_transfer
post_transfer 메소드를 실행한다.



Preprocessing for Transferring Player


함수 목적 : 장소 이동을 하기 전에 미리 수행해야 할 부분을 관리하는 메소드이다. 장소 이동의 페이드 아웃 기능을 관리한다.


함수 내용

 def pre_transfer

    @map_name_window.close

    case $game_temp.fade_type

    when 0

      fadeout(fadeout_speed)

    when 1

      white_fadeout(fadeout_speed)

    end

  end


설명

(1) @map_name_window.close

맵 이름 윈도우를 닫는다.


(2) case $game_temp.fade_type

    when 0

      fadeout(fadeout_speed)

화면 페이드 타입에 따라 두 가지로 나뉘는데, 0일 경우 검은색으로 fadeout_speed동안 페이드아웃한다.


(3)  when 1

       white_fadeout(fadeout_speed)

1일 경우 하얀색으로 fadeout_speed동안 페이드아웃한다.





Post Processing for Transferring Player


함수 목적 : 장소 이동을 수행하고 난 뒤의 처리를 관리하는 메소드이다.


함수 내용

def post_transfer

    case $game_temp.fade_type

    when 0

      Graphics.wait(fadein_speed / 2)

      fadein(fadein_speed)

    when 1

      Graphics.wait(fadein_speed / 2)

      white_fadein(fadein_speed)

    end

    @map_name_window.open

  end


설명

pre_transfer 메소드와 마찬가지로 페이드 타입에 따라 두 가지로 나뉜다. fadein_speed의 반만큼 잠시 기다린다는 점은 동일하다.


(1) when 0

      Graphics.wait(fadein_speed / 2)

      fadein(fadein_speed)

0일 경우, 잠시 기다렸다가 fadein_speed동안 페이드 인한다.


(2) when 1

      Graphics.wait(fadein_speed / 2)

      white_fadein(fadein_speed)

1일 경우, 잠시 기다렸다가 fadein_speed동안 하얀색으로 페이드 인한다.


(3) @map_name_window.open

장소이동을 완료했으니, 맵 이름 윈도우를 연다.





Preprocessing for Battle Screen Transition


함수 목적 : 배틀 씬으로 전환하기 전에 처리해야 할 것들을 관리하는 메소드이다.


함수 내용

  def pre_battle_scene

    Graphics.update

    Graphics.freeze

    @spriteset.dispose_characters

    BattleManager.save_bgm_and_bgs

    BattleManager.play_battle_bgm

    Sound.play_battle_start

  end


설명

그래픽을 업데이트하고, 잠시 화면을 멈췄다가 캐릭터 스프라이트셋을 없앤다.

배틀매니저에 맵에서 듣고 있었던 bgm과 bgs를 저장해놓고, 배틀 bgm을 실행한다.

그 뒤, 배틀 시작 효과음을 재생한다.





Preprocessing for Title Screen Transition


함수 목적 : 타이틀 씬으로 화면을 전환하기 전에 처리해야 할 것들을 관리하는 메소드이다.


함수 내용

  def pre_title_scene

    fadeout(fadeout_speed_to_title)

  end


설명

타이틀 페이드아웃에 걸리는 시간 동안 페이드아웃한다.




Execute Pre-Battle Transition


함수 목적 : 배틀 씬으로 전환할 때 그래픽 애니메이션을 수행하는 메소드이다.


함수 내용

  def perform_battle_transition

    Graphics.transition(60, "Graphics/System/BattleStart", 100)

    Graphics.freeze

  end


설명

transition 메소드에서 배틀 씬으로 이동하는 조건 하에 호출되는 메소드이다.

BattleStart 이미지로 화면을 전환하고, 잠시 그래픽을 멈춘다.





Get Fade Out Speed


함수 목적 : 기본 페이드 아웃 속도를 조절하는 메소드이다.


함수 내용

  def fadeout_speed

    return 30

  end


설명

기본 페이드 아웃 속도는 30이다. 제작자가 자유롭게 조정할 수 있다.





Get Fade In Speed


함수 목적 : 기본 페이드 인 속도를 조절하는 메소드이다.


함수 내용

  def fadeout_speed

    return 30

  end


설명

기본 페이드 인 속도는 30이다. 제작자가 자유롭게 조정할 수 있다.





Get Fade Out Speed for Title Screen Transition


함수 목적 : 타이틀 씬으로 전환할 때 페이드 아웃 속도를 조절하는 메소드이다.


함수 내용

  def fadeout_speed_to_title

    return 60

  end


설명

기본 타이틀 씬 전환 페이드 아웃 속도는 60이다. 제작자가 자유롭게 조정할 수 있다.





이 34개의 메소드 중, 제작자가 응용할만한 부분을 생각해 보자.

B키를 눌러 메뉴를 호출할 수도 있겠지만, 다른 키를 눌러 메뉴를 호출할 수도 있을 것이다. 심지어는 두 개 이상의 키를 눌러야 메뉴를 호출할 수도 있다.

게임 엔딩의 보상으로, 디버그 씬을 테스트 게임에서만 호출하지 않고 실제 게임에서 호출하게 만들 수도 있을 것이다.


이외에 생각나는 부분이 있다면 댓글로 남겨 보자. 강좌로 만들어질 수도 있다.

물론 쌍쌍뱌의 능력이 닿는 영역까지만 말이다.


다음 시간에는 메뉴 호출 키를 변경 해 보고, 그 다음 시간에는 디버그 씬을 테스트 중이 아니어도 호출할 수 있게 해 보겠다.

반응형