질문과 답변

Extra Form

게임을 만들다 보니까 이런저런 스크립트 쓰면서 맵에 이벤트도 많다보니까

렉이 심해져서 렉을 줄일 방법이 없을까 찾아보다 발견한건데

사용법을 잘모르겠네요 주석을 읽어봐도 스크립트의 사용효과 정도는 알겠는데

정확한 'How to use' 안써져있는 것 같아서 질문드립니다.

(내가 발견못한건가...?;;)

 

일단 효과는 맵에 많은 이벤트가 존재할때 발생하는 렉을

해당 맵에서 플레이할때 화면 밖에 존재하는 이벤트를 생략함으로 렉을 줄여준다는 것 같은데

잘몰라서 그냥 붙여넣고 사용해봤더니 아래에  메세지만 뜨고 게임이 종료되네요..ㅜㅠ

 

ps. 스크립트 원문을 올린 것이 문제가 될 경우 삭제하겠습니다.

 

#==============================================================================
# ** Victor Engine - Anti Lag
#------------------------------------------------------------------------------
# Author : Victor Sant
#
# Version History:
#  v 1.00 - 2012.08.03 > First release
#  v 1.01 - 2012.08.04 > Fixed issue when teleport to the same map
#------------------------------------------------------------------------------
#  This script was designed to reduce the lag cause by many events on map.
# Most anti lag script just skip the update of events that outside the screen
# while still loops though all of them. This one, instead, dinamically manage
# the list of events for update, and keeps events that aren't going to be 
# updated outside of the list.
#------------------------------------------------------------------------------
# Compatibility
#   Requires the script 'Victor Engine - Basic Module' v 1.00 or higher
#
# * Overwrite methods
#   class Game_Map
#     def update_events
#     def event_list
#
#   class Spriteset_Map
#     def update_characters
#
# * Alias methods
#   class Game_Map
#     def setup(map_id)
#     def refresh
#
#   class Game_Event < Game_Character
#     def setup_page_settings
#
#   class Spriteset_Map
#     def create_characters
#
#------------------------------------------------------------------------------
# Instructions:
#  To instal the script, open you script editor and paste this script on
#  a new section bellow the Materials section. This script must also
#  be bellow the script 'Victor Engine - Basic'
#
#------------------------------------------------------------------------------
# Comment boxes note tags:
#   Tags to be used on events Comment boxes. They're different from the
#   comment call, they're called always the even refresh.
# 
#  <always update>
#   Events with this comment on the active page will be always updated
# 
#  <never update>
#   Events with this comment on the active page will be never updated
#   Useful for decoration only events.
# 
#------------------------------------------------------------------------------
# Additional instructions:
#
#  Parallel process events and auto start events will be always updated no
#  matter their positions.
#
#  Remember that your hardware specification still have influence on the
#  performance
#==============================================================================

#==============================================================================
# ** Victor Engine
#------------------------------------------------------------------------------
#   Setting module for the Victor Engine
#==============================================================================

module Victor_Engine
  #--------------------------------------------------------------------------
  # * Setup the update buffer
  #   Setting values higher than 0, you increase the tile area of update
  #   By default, only events on the screen area or 1 tile near the visible
  #   área updates. Increasing the buff increase the update área, but also
  #   increase the potential lag.
  #--------------------------------------------------------------------------
  VE_UPDATE_BUFFER = 0
  #--------------------------------------------------------------------------
  # * required
  #   This method checks for the existance of the basic module and other
  #   VE scripts required for this script to work, don't edit this
  #--------------------------------------------------------------------------
  def self.required(name, req, version, type = nil)
    if !$imported[:ve_basic_module]
      msg = "The script '%s' requires the script\n"
      msg += "'VE - Basic Module' v%s or higher above it to work properly\n"
      msg += "Go to http://victorscripts.wordpress.com/ to download this script."
      msgbox(sprintf(msg, self.script_name(name), version))
      exit
    else
      self.required_script(name, req, version, type)
    end
  end
  #--------------------------------------------------------------------------
  # * script_name
  #   Get the script name base on the imported value
  #--------------------------------------------------------------------------
  def self.script_name(name, ext = "VE")
    name = name.to_s.gsub("_", " ").upcase.split
    name.collect! {|char| char == ext ? "#{char} -" : char.capitalize }
    name.join(" ")
  end
end

$imported ||= {}
$imported[:ve_anti_lag] = 1.01
Victor_Engine.required(:ve_anti_lag, :ve_basic_module, 1.00, :above)

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles maps. It includes scrolling and passage determination
# functions. The instance of this class is referenced by $game_map.
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # * Overwrite method: update_events
  #--------------------------------------------------------------------------
  def update_events
    @update_list.each   {|event| event.update }
    @common_events.each {|event| event.update }
  end
  #--------------------------------------------------------------------------
  # * Overwrite method: event_list
  #--------------------------------------------------------------------------
  def event_list
    @event_list
  end
  #--------------------------------------------------------------------------
  # * Alias method: setup
  #--------------------------------------------------------------------------
  alias :setup_ve_anti_lag :setup
  def setup(map_id)
    @event_list  = []
    @update_list = []
    setup_ve_anti_lag(map_id)
  end
  #--------------------------------------------------------------------------
  # * Alias method: refresh
  #--------------------------------------------------------------------------
  alias :refresh_ve_anti_lag :refresh
  def refresh
    refresh_ve_anti_lag
    refresh_event_list
  end
  #--------------------------------------------------------------------------
  # * New method: screen_moved?
  #--------------------------------------------------------------------------
  def screen_moved?
    @last_screen_x != @display_x.to_i || @last_screen_y != @display_y.to_i
  end
  #--------------------------------------------------------------------------
  # * New method: refresh_screen_position
  #--------------------------------------------------------------------------
  def refresh_screen_position
    @last_screen_x = @display_x.to_i
    @last_screen_y = @display_y.to_i
  end
  #--------------------------------------------------------------------------
  # * New method: refresh_event_list
  #--------------------------------------------------------------------------
  def refresh_event_list
    @event_list  = events.values.select {|event| event.on_screen? }
    @update_list = events.values.select {|event| event.update? }
  end
end

#==============================================================================
# ** Game_CharacterBase
#------------------------------------------------------------------------------
#  This class deals with characters. Common to all characters, stores basic
# data, such as coordinates and graphics. It's used as a superclass of the
# Game_Character class.
#==============================================================================

class Game_CharacterBase
  #--------------------------------------------------------------------------
  # * New method: update?
  #--------------------------------------------------------------------------
  def update?(*args)
    return true
  end
  #--------------------------------------------------------------------------
  # * New method: near_the_screen?
  #--------------------------------------------------------------------------
  def near_the_screen?(*args)
    return true
  end
  #--------------------------------------------------------------------------
  # * New method: on_buffer_area?
  #--------------------------------------------------------------------------
  def on_screen?(*args)
    return true
  end
end

#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
#  This class deals with events. It handles functions including event page 
# switching via condition determinants, and running parallel process events.
# It's used within the Game_Map class.
#==============================================================================

class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # * Alias method: setup_page_settings
  #--------------------------------------------------------------------------
  alias :setup_page_settings_ve_anti_lag :setup_page_settings
  def setup_page_settings
    setup_page_settings_ve_anti_lag
    @mode = nil
    @mode = :always if note =~ /<ALWAYS UPDATE>/i
    @mode = :never  if note =~ /<NEVER UPDATE>/i
  end
  #--------------------------------------------------------------------------
  # * New method: update?
  #--------------------------------------------------------------------------
  def update?
    return false if @mode == :never
    on_screen?(12, 8)
  end
  #--------------------------------------------------------------------------
  # * New method: auto_event?
  #--------------------------------------------------------------------------
  def auto_event?
    @mode == :always || @trigger == 3 || @trigger == 4
  end
  #--------------------------------------------------------------------------
  # * New method: on_screen?
  #--------------------------------------------------------------------------
  def on_screen?(x = 14, y = 10)
    z = [VE_UPDATE_BUFFER, 0].max
    near_the_screen?(x + z, y + z) || auto_event?
  end
end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Overwrite method: update_characters
  #--------------------------------------------------------------------------
  def update_characters
    refresh_characters if @map_id != $game_map.map_id
    refresh_sprites    if $game_map.screen_moved?
    @screen_sprites.each {|sprite| sprite.update }
  end
  #--------------------------------------------------------------------------
  # * Alias method: create_characters
  #--------------------------------------------------------------------------
  alias :create_characters_ve_anti_lag :create_characters
  def create_characters
    create_characters_ve_anti_lag
    refresh_characters_sprites
  end
  #--------------------------------------------------------------------------
  # * New method: refresh_characters_sprites
  #--------------------------------------------------------------------------
  def refresh_characters_sprites
    @screen_sprites = []
    @character_sprites.each do |sprite|
      sprite.update
      @screen_sprites.push(sprite) if sprite.character.on_screen?
    end
  end
  #--------------------------------------------------------------------------
  # * New method: refresh_sprites
  #--------------------------------------------------------------------------
  def refresh_sprites
    refresh_characters_sprites
    $game_map.refresh_event_list
    $game_map.refresh_screen_position
  end
end
 
 
 - 출처 -
http://victorscripts.wordpress.com/
Comment '3'
  • ?
    미루 2013.03.03 23:50

    자동적용됩니다.

  • ?
    임프R 2013.03.04 00:33
    아... 제가 주석에서 사용법만 찾고있느라 중요한걸 간과했네요;;
    베이지 모듈 스크립트가 있으면 되는거였구나
    답변 감사합니다. 덕분에 해결됬네요
  • ?
    미루 2013.03.03 23:52
    Requires the script 'Victor Engine - Basic Module' v 1.00 or higher

    이것때문아닐까 하는 생각이 드는데...

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12391
스크립트 작성 RMVXA 게임 도중 타이틀 bgm 변경 ㄷㄲㅇ 2020.03.01 124
RMVXA 플레이어한테 이벤트 2 여왕폐하 2016.03.07 123
RMVXA 메세지 입력중 일부분만 효과적용방법알려주세요 4 빕새 2017.03.05 123
기타 RMVXA bgm 넣는법 조각사 2020.02.27 123
기타 RMVXA 메뉴의 hp 게이지를 삭제하고 싶습니다 1 file 은예림 2021.03.27 123
RMVXA 메시지 출력 중에 계쏙 오류가 나옵니다 1 file Plossom 2015.08.09 122
RMVXA [미해결] 메세지를 주고받는 중이라면 자동으로 스위치가 OFF되게 설정할 수 있을까요? 2 반내림 2017.03.01 122
RMVXA 동물 페이스칩을 찾고있습니다. 머그컵 2015.06.19 122
RMVXA 연계 스킬 질문 1 체력을가르다. 2015.11.05 122
이벤트 작성 RMVXA 이벤트 시에 그림이 반복으로 움직이면서 다음 행이나 선택지가 나오게 하는 것이 궁금합니다. file laneas 2020.08.01 122
RMVXA RMVXA XAS 스크립트에서 탄의 패턴을 좀더 다양하게 할수 없을까요? file 데크크래프트 2015.12.12 122
RMVXA 이벤트 중에서 파티원이 습격을 받는 이벤트 2 소드 2016.01.01 122
기타 RMVXA 스킬을 mp 대신 hp를 소모시키게 할 수 있나요? 1 겜만들고싶다앙 2021.01.01 122
RMVXA 아이템 소지수 퀘스트 1 슈퍼울트라그레이트딜리셔스 2017.07.22 122
RMVXA 문장표시중에 주인공얼굴그래픽 뜨게할수있을까요? 1 두루뭉실라이버 2017.07.30 122
스크립트 작성 RMVXA 이거 스크립트를 적용하고 싶은데 2 Wolfclaw 2020.03.19 122
이벤트 작성 RMVXA 체력에 따라 자신의 이동속도 감소 이벤트 만드는 법 1 슈필러 2019.02.18 122
RMVXA rpg vx & vx ace 프론트 뷰 사용하고 싶은데 여기서 어떻게 해야되죠? 4 바크지누크 2018.05.10 121
RMVXA 마우스가 이벤트에 반응을 하지 않습니다 1 두솔 2016.04.15 121
RMVXA vx ace 계산식 질문 Tine 2016.07.17 121
Board Pagination Prev 1 ... 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 ... 149 Next
/ 149