질문과 답변

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 스테이터스 커스텀 스크립트 관련 질문입니다. T.C.O.L 2010.10.31 610
RMVX 멤버 바꾸기로 뺏다가 다시 합류시키면 레벨이 초기화되나요? 1 바크지누크 2014.06.18 610
RMVX ziifee's Wait Gauge Battle 이 배틀 시스템에 질문있어요~ 빡새 2013.05.18 609
RMVX 무기를 장비할 수 밖에 없게 하려면 어떻게 해야할까요? 13 file 빡새 2013.07.20 608
RMVX 체력이 닳을경우 케릭터의 모습이 색조변경(빨강)으로 바뀌게 하고싶습니다. 41 하얀악어 2014.01.10 608
RMVX HP, MP, 경험치 등을 HUD스크립트를 사용하지않고 이벤트로 필드에 표시하기 똥구리 2011.02.07 607
RMVX 처음 화면에 캐릭터가 다른 것이 뜨게 할 수는 없나요? 2 라이온킹 2013.01.06 607
RMVX VX심각합니다. 여적만든게 물거품이 되는순간 2 file fwnekf 2011.01.09 606
RMVX 스크립트 오류 질문 드립니다 4 후라이팬샷 2014.01.10 606
RMVX 미니맵 표시 어떻게 하나요? 1 준짱돌이 2010.12.22 605
RMVX 전투기 또는 헬리콥터로 스크롤식(탑뷰 또는 사이드) 게임을 만드려는데요 1 FronT 2011.01.05 605
RMVX 배경이 두장으로 보여요. 1 소미여우 2011.02.13 605
RMVX 아이탬,무기,방어구 색깔 3 잉여잉어빵 2010.11.29 604
RMVX 몬스터죽일때.. 2 김인컴 2010.12.03 604
RMVX 걸어가다가 랜덤으로 대화창이 등장하게 하려면 어떻게해야하나요??? 1 포페 2010.12.31 604
RMVX 문자 표시 스크립트 사용시 문제. 1 file 마에르드 2011.02.05 603
RMVX 멀티메시지MultiMessage 스크립트 한 이벤트에서 다분기 여러번 사용하기 1 톨톨 2013.02.28 602
RMVX 스크립트 오류 재질문 file 은색바람 2013.02.04 602
RMVX 제한시간 설정법... 1 뉴리키 2014.05.08 601
RMVX 원거리 액알에 대한 것 1 광우병 멧돼지 2011.01.06 601
Board Pagination Prev 1 ... 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 ... 127 Next
/ 127