질문과 답변

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 배포용 게임 작성시 3 file emblock 2013.07.03 804
RMVX 배포용 게임을 다시 프로젝트 파일로 되돌릴 수 없을 까요? 1 카르와푸딩의아틀리에 2018.05.09 137
RMVX 배포용 게임작성 오류 7 file 빨간버섯 2015.02.16 269
RMVX 배포용 파일을 만들었는데 설치가 안 돼요. 3 아민 2011.04.07 1403
RMVX 배포용게임 업데이트시 세이브파일과 런타임 2 unuseid 2011.07.13 1421
RMVX 배포용게임작성시 RTP데이터포함은 어떤기능이 있나요 2 Lamancha 2012.07.19 1326
RMVX 배포용게임작성시 경고문구가 뜨네요 네이피어 2012.02.26 2076
RMVX 배포용파일 작성시 타이틀 화면 초기화 unuseid 2011.07.13 1200
RMVX 뱀파이어 SBABS 9 스킬 관련 질문 센♬ 2011.11.27 2191
RMVX 뱀파이어 sbabs에서 스킬 쓸 때 무기 아이콘 뜨게할 순 없나요? 닉네임은2와20 2012.01.13 2714
RMVX 뱀파이어 액알에서 Die Self Switch A 어떻게 사용하는 건가요? 3 닉네임은2와20 2012.01.16 7269
RMVX 뱀파이어 액알에서 액터 방어율 설정 가능한가요? 닉네임은2와20 2012.01.21 2429
RMVX 뱀파이어 액알을 사용 중인데 상태가 이상하게 먹히네요... 닉네임은2와20 2012.01.17 2745
RMVX 뱀파이어에서 파티원도 같이 공격하잖아요. 1 정말귀인★ 2013.10.29 834
RMVX 버튼 안눌렀는데 이벤트로 버튼누르는법 3 kallat 2011.08.08 1660
RMVX 버튼누르면 공격하는방법 2 김건우님 2011.08.25 1568
RMVX 버튼눌렀을때나오는소리 3 아아아ㅏ앙ㅇㅇㅇㅇ 2015.02.08 147
RMVX 버튼사용시 물건이동방법 6 레고주민 2013.03.31 969
RMVX 버프 천운 2011.01.05 403
RMVX 버프 스킬 만드는법 [ 액션RPG ] 2 널지킨다 2011.08.12 1456
Board Pagination Prev 1 ... 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ... 127 Next
/ 127