질문과 답변

Extra Form

#==============================================================================
# ★RGSS2
# STR02_マップ画面軽量化 v1.0
# サポート:http://otsu.cool.ne.jp/strcatyou/
# ・画面外のキャラクターのスプライト・自律移動を停止させて負担を軽減させます。
# ・トリガーが"なし"のコモンイベントの更新を止めて負担を軽減させます。
# ・自律移動失敗時にウェイトを設定できます。(それなりに重要)
#==============================================================================
# ■ STRRGSS2
#==============================================================================
module STRRGSS2
  # 画面外のイベントの自律移動を行わない true = 有効 false = 無効
  SELF_MOVEMENT = true
  # カスタム移動失敗時に設けるウェイト 0 以上に設定
  MOVE_FAILED_WAIT = 30
  # 画面外判定
  STR02_RECT = Rect.new(-48, -32, 544+48, 416+64)
end
#==============================================================================
# ■ Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # ★ エイリアス
  #--------------------------------------------------------------------------
  alias setup_events_str02 setup_events
  def setup_events
    setup_events_str02
    @common_events.clear
    for i in 1...$data_common_events.size
      @common_events[i] = Game_CommonEvent.new(i) if $data_common_events[i].trigger != 0
    end
  end
end
#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # ★ 再定義
  #--------------------------------------------------------------------------
  def update_characters
    for sprite in @character_sprites
      if sprite.character.screenin_str02
        sprite.update
      else
        sprite.visible = false
      end
    end
  end
end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :screenin_str02
  #--------------------------------------------------------------------------
  # ★ エイリアス
  #--------------------------------------------------------------------------
  alias initialize_str02 initialize
  def initialize
    initialize_str02
    @screenin_str02 = true
  end
  alias update_str02 update
  def update
    r = STRRGSS2::STR02_RECT
    @screenin_str02 = (screen_x > r.x and screen_x < r.width and
                       screen_y > r.y and screen_y < r.height)
    update_str02
  end
  alias update_self_movement_str02 update_self_movement
  def update_self_movement
    return if STRRGSS2::SELF_MOVEMENT and not @screenin_str02
    update_self_movement_str02
  end
end
#==============================================================================
# ■ Game_Event
#==============================================================================
class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # ● 自律移動の更新
  #--------------------------------------------------------------------------
  def update_self_movement
    if @stop_count >= 30 * (5 - @move_frequency)
      @wait_count = STRRGSS2::MOVE_FAILED_WAIT + (@id / 4) if @move_failed
    end
    super
  end
end

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

이 스크립트 사용시 주인공 기준 화면 밖에선

 

이벤트 설정하고 이동루트에 주인공으로 다가오기 이벤트로 하면 먹히지 않고

 

그 어떤 이벤트의 움직임도 화면 밖에선 되지가 않네요

 

해결 방법이 있나요?

 

이거 맵 렉 줄여주는건 매우 좋은데...말이죠

Comment '4'
  • ?
    AltusZeon 2014.01.10 19:43

    경량화 스크립트의 원리가 특정 범위 밖의 이벤트를 업데이트 하지 않는 것입니다.

    즉 말씀하신 "이벤트 설정하고 이동루트에 주인공으로 다가오기 이벤트로 하면 먹히지 않고

     그 어떤 이벤트의 움직임도 화면 밖에선 되지가 않네요" 라는 방법으로 렉을 줄이는 것입니다.


    병렬처리 이벤트를 하나 만드신 뒤 해당 이벤트의 움직임을 이동경로를 조작하는 방법은 될지도 모르겠군요.

    (확인해보니까 이 방법은 됩니다.)


    그보다 스크립트 설정에도 조작하는 부분이 있군요.

  • ?
    Alkaid 2014.01.10 19:43
    랙감소 스크립트가 하는 일 중에 현재 화면(플레이어 시야)밖의 이벤트 실행이나 갱신을 중지해서 처리량을 감소시키는 것이 있습니다. 스크립트 사용하기 전에 헤더의 설명은 읽어 보셨는지?(번역기 돌려서라도 읽어 보시길)
  • profile
    Omegaroid 2014.01.10 20:13
    # ・画面外のキャラクターのスプライト・自律移動を停止させて負担を軽減させます。
    # ・トリガーが"なし"のコモンイベントの更新を止めて負担を軽減させます。
    # ・自律移動失敗時にウェイトを設定できます。(それなりに重要)

    1. 화면 밖의 캐릭터 스프라이트/자율이동을 정지해서 부담을 경감시킵니다.
    2. 트리거가 "없음"으로 된 커먼 이벤트의 새로고침을 멈춰서 부담을 경감시킵니다.
    3. 자율이동 실패 시에 대기를 설정할 수 있습니다.(꽤 중요)

    module STRRGSS2
    # 화면 밖 이벤트의 자율이동을 실행하지 않는다 true = 유효 false = 무효
    SELF_MOVEMENT = true
    # 사용자정의 이동 실패 시에 설정할 대기시간 0 이상으로 설정할것
    MOVE_FAILED_WAIT = 30
    # 화면 밖 판정
    STR02_RECT = Rect.new(-48, -32, 544+48, 416+64)
    end



    SELF_MOVEMENT = 이부분을 false로 놓으니까 되던데요.
  • ?
    후라이팬샷 2014.01.11 06:47
    감사합니다

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12448
RMVX 게임 안에 동영상을 넣고 싶은데요.. 1 개고기 2014.04.27 695
RMVX 게임 암호화, 확실히 할수있는방법 없나요??? 3 하늘별구름 2012.09.13 1195
RMVX 게임 오버, 엔딩을 보아도 특정 스위치는 그대로되게 하고싶습니다. KAHP 2016.02.25 223
RMVX 게임 올리기 2 안드로이드 2010.09.27 871
RMVX 게임 올리는법 2 키리리키 2012.10.22 810
RMVX 게임 완성했는데 다른컴퓨터에서 소리가 안나요 4 MUTLG 2016.01.12 252
RMVX 게임 자막이 빾뫞쁚딯솤잢 이럿겡 이상하게나와요 해결방법좀요 2 빌리해밀리 2014.10.09 464
RMVX 게임 저장해서 배포할때 폰에서도 실행가능하게하려면 어떻게 저장해야하나요 ㅠ 4 SBㅡ백색 2015.02.24 175
RMVX 게임 종료할떄 특정 변수나 스위치들 조작하는법 1 SCUD 2010.09.19 916
RMVX 게임 처음 시작할 때 페이드 타임 시간 설정 13 뉴리키 2014.02.08 770
RMVX 게임 케릭터 그래픽 문제 1 초밥군★ 2010.10.30 820
RMVX 게임 폴더를 못찾겠어요 1 상생 2010.12.20 616
RMVX 게임내 메시지 2 FD_불홍 2016.07.03 125
RMVX 게임만드는데 많은질문 2 고자몬 2011.07.01 958
RMVX 게임상에서 키가 안먹어요 2 샤랄랄라진성 2011.07.05 1031
RMVX 게임시작.... 3 바론아벨 2011.04.29 966
RMVX 게임시작전에 2 닉나블 2013.09.06 864
RMVX 게임시작하고 이벤트로 전체 화면 스샷을 넣고싶은데요.. 1 아쿠마11 2011.09.16 1525
RMVX 게임시작할떄 3 아쳐 2014.01.22 735
RMVX 게임아이콘변경법 3 우롸이언 2012.08.02 1572
Board Pagination Prev 1 ... 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ... 127 Next
/ 127