질문과 답변

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 12448
RMVXA 이벤트가 적에게 닿을 시 적에게 데미지를 주도록 이벤트를 만드는 방법 2 제빵군 2015.02.02 151
RMVXA 불사 스테이터스가 먹히지 않습니다 폴라 2015.03.09 151
RMVX srpg2 스크립트의 파티인원증가 file SIES 2015.07.07 151
기타 vx ace 타이틀 관련 질문입니다 뉴르고크 2015.06.05 151
RMVXA 반격 스크립트 관련 질문입니다. 2 기폭 2015.07.16 151
기타 rpg vx ace 예기치 못한 파일 형식입니다 1 야느와르 2015.10.13 151
RMMV 프로그램 내의 텍스트와 테스트 플레이시의 화면이 깨집니다. 1 file 고슴도 2016.03.16 151
RMVXA 아이템 특정갯수 조건을 맟추게 하는법있나요? 1 발악의시번 2016.04.21 151
에러 해결 RMMV 아이템 선택창의 위치 변경. 7 file 대네온 2020.03.26 151
RMVX RPG VX 전투 회피 아이템은 어떻게 만드나요? Trsiword 2016.10.08 151
RMVXA 액터 변경 질문 7 파랑빛 2017.04.19 151
기타 인텔xdk 배포 문제 2 [team]ㅎㅅㅎ 2017.05.08 151
RMMV 문 유지하는 법 2 송캠 2017.05.27 151
액션 전투 RMVXA 특정 키를 눌렀을 때 조준점이 만들어져서 키보드 또는 마우스로 움직이고 조준할 수 있게 하려면 어떻게해야할까요 2 무명유실 2019.10.25 151
이벤트 작성 RMMV 세이브파일을 로드하여 불러왔을때마다 따로 생기는 분기는 어떻게 생성하나요? 2 일반적잉간 2019.03.15 151
스크립트 작성 RMVXA Ace에서 게임 파일이름과 아이콘 변경방법을 알고싶습니다. 1 file 홍홍이1 2020.06.21 151
기타 RMVXA vx ace) 크리터컬 피해 증가 패시브를 만들고 싶습니다 5 게임이만들고파 2020.12.31 151
라이선스 게임찾기 개인방송 및 유튜브 이용 2 류선유 2019.04.27 151
기본툴 사용법 사이트 이용 드디어 알만툴(VX ACE)을 샀습니다...! 1 풀죽신도 2019.12.31 151
스크립트 추천 RMVXA 큰 페이스칩 여러 개 띄우는 스크립트 limitation 2020.02.25 151
Board Pagination Prev 1 ... 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 ... 516 Next
/ 516