질문과 답변

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 13178
RMVX 기본 능력치는 어떤거와 연관이있나요? 1 디프링 2014.01.11 994
RMVX 이벤트로 경험치 증가 안되나요? 2 유나인 2014.01.11 768
RMVX npc 와 캐릭터 동시 이동 2 김훈 2014.01.11 779
RMVXA 어떤 이벤트를 이용할수록 필요한 돈이 증가되게 하는법 4 쿨쿨팬더 2014.01.10 794
RMXP 이벤트에서 캐릭터가 나타나게하는법(빨리부탁이요) 2 태권돌이 2014.01.10 701
RMVX 스크립트 오류 질문 드립니다 4 후라이팬샷 2014.01.10 609
기타 vx 아이콘 질문좀요 1 늑대고양이 2014.01.10 897
RMVX 체력이 닳을경우 케릭터의 모습이 색조변경(빨강)으로 바뀌게 하고싶습니다. 41 하얀악어 2014.01.10 608
RMVX 엑터들마다 타일 이동을 다르게는 못하나요? 1 2014.01.10 778
RMVXA 메뉴의 '아이템'을 바꿀수 있는 방법이 있나요 4 전파개구리 2014.01.10 761
RMVXA 이벤트 커맨드 스크립트 질문이요.. 3 비바체 2014.01.10 769
RMVXA 캐릭터 이동속도에 질문이요! 5 비바체 2014.01.10 1811
RMVX 타이틀 화면 문구 변경 5 마성 2014.01.09 947
RMVX 오토타일 선택해서 쓸수 있는 방법 없나요? 1 유나인 2014.01.09 1066
RMVXA 인벤토리 질문 1 inone98 2014.01.09 861
RMVX 맵칩 스크립트 크리스토퍼 2014.01.09 879
RM2k3 텍스트에서 영어 사용시 겹쳐지는 현상 해결 방법은 없나요? 2 file 영감쟁e 2014.01.09 1045
RMVXA 한 맵에서 여러개의 bgm이 랜덤으로 나오게 하고 싶습니다. 3 Violet 2014.01.09 795
RMVX 화면 여백을 없애고 늘리는 방법 10 file 크리스토퍼 2014.01.09 1182
RMVXA 이름 표시 스크립트에 관해 질문드립니다. 7 file 토끼토끼 2014.01.09 962
Board Pagination Prev 1 ... 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 ... 517 Next
/ 517