How to use the High-Resolution .DLL

Discussion in 'RMVX Ace Tutorials' started by EternalShadow, Dec 4, 2014.

Thread Status:
Not open for further replies.
  1. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English

    THE ORIGINAL .DLL IS NO LONGER AVAILABLE - AN UPDATE IS COMING SOON
    PLEASE SEE THE LAST POSTS OF THIS TOPIC FOR THE MOST RECENT NEWS



    High-Resolution .DLL Guide

    Introduction
    The High-Resolution .DLL is part of the high-resolution RPG Maker Project, found here:
    http://forums.rpgmakerweb.com/index.php?/topic/31953-high-res-rpg-maker-project/

    It is important to note this .DLL is NOT a hack – it is a modification to the original .DLL which is legal because it has been approved by Enterbrain themselves. Further modifications to this .DLL are illegal unless Archeia can obtain permission from Enterbrain after each one.

    Despite the legalities slowing down the process of updates, the .DLL is stable and works with a variety of resolutions, even those different from the resolution you set the window to function at, through Yanfly Engine Ace.

    Essentially, all the .DLL allows is for the maximum resolution of 544*416 of RPG Maker to be broken, and fixes some bugs that appear as a result of this. However, to be able to use the .DLL to its fullest, you will need a series of scripts to optimize the game’s performance as well as a resolution-changing script. This guide will take you through the steps of installation, and introduce you to the scripts that you require to obtain the best performance from your game.


    Installation
    Please note: In this guide, whenever I refer to ‘RPG Maker Program’, I refer to RPG Maker VX ACE, NOT your game project.

    To install the High-Resolution .DLL on its own, please download the file from here:
    http://forums.rpgmakerweb.com/index.php?/topic/31953-high-res-rpg-maker-project/

    Once the file has been downloaded, open the location in your computer where RPG Maker is.
    - For example, if you are running Steam RPG Maker, you will need to go here:
    C:\Program Files (x86)\Steam\steamapps\common\RPGVXAce
    Just paste that into your Windows Explorer at the top.

    - However, if you are not running Steam RPG Maker, it will be here:
    C:\Program Files (x86)\Enterbrain\RPGVXAce
    Again, paste that into your Windows Explorer.

    I recommend making a shortcut to these directories in your favourites sidebar so you can access them again if need be.
    Now in either instance, you should see a file named RGSS300 or RGSS301. This is your original RGSS file. Right-click that, select ‘cut’, and go to your desktop. Paste the file there. This will serve as your backup, so you can put it into a folder if you like. Now go back to your RPG Maker program. You should not have any RGSS300/301 file(s) there anymore. Go to your downloads, and find the High-Resolution .DLL you have just downloaded. Cut and paste that into your RPG Maker program. Make sure it is named RGSS301.

    Now, if you open Ace via Steam or normally, it should open fine. If it says something like ‘Cannot find RGSS301 file’ or something like that, name your RGSS file accordingly.

    However, any games you create will not yet be high-resolution. For this .DLL to work, we need to install Yanfly Engine Ace.
    However, YEA comes with a lot of additional material that is not needed for this .DLL. I have cut out the unnecessary parts of YEA for your convenience, here:

    Code:
    #==============================================================================## ▼ Yanfly Engine Ace - Ace Core Engine v1.09# -- Last Updated: 2012.02.19# -- Level: Easy, Normal# -- Requires: n/a##==============================================================================module YEAmodule CORE#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# - Screen Resolution Size -#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# RPG Maker VX Ace has the option of having larger width and height for# your games. Resizing the width and height will have these changes:## Default Resized Min Tiles Default Min Tiles New# Width 544 640 17 20# Height 416 480 13 15## * Note: Maximum width is 640 while maximum height is 480.# Minimum width is 110 while maximum height is 10.# These are limitations set by RPG Maker VX Ace's engine.## By selecting resize, all of the default menus will have their windows# adjusted, but scripts provided by non-Yanfly Engine sources may or may# not adjust themselves properly.#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-RESIZE_WIDTH = 1344RESIZE_HEIGHT = 768end # COREend # YEA#==============================================================================# ▼ Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#==============================================================================Graphics.resize_screen(YEA::CORE::RESIZE_WIDTH, YEA::CORE::RESIZE_HEIGHT)#==============================================================================# ■ Game_Event#==============================================================================class Game_Event < Game_Character#--------------------------------------------------------------------------# overwrite method: near_the_screen?#--------------------------------------------------------------------------def near_the_screen?(dx = nil, dy = nil)dx = [Graphics.width, $game_map.width * 256].min/32 - 5 if dx.nil?dy = [Graphics.height, $game_map.height * 256].min/32 - 5 if dy.nil?ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32ax >= -dx && ax <= dx && ay >= -dy && ay <= dyendend # Game_Event#==============================================================================# ■ Game_Map#==============================================================================class Game_Map#--------------------------------------------------------------------------# overwrite method: scroll_down#--------------------------------------------------------------------------def scroll_down(distance)if loop_vertical?@display_y += distance@display_y %= @map.height * 256@parallax_y += distance if @parallax_loop_yelselast_y = @display_ydh = Graphics.height > height * 32 ? height : screen_tile_y@display_y = [@display_y + distance, height - dh].min@parallax_y += @display_y - last_yendend#--------------------------------------------------------------------------# overwrite method: scroll_right#--------------------------------------------------------------------------def scroll_right(distance)if loop_horizontal?@display_x += distance@display_x %= @map.width * 256@parallax_x += distance if @parallax_loop_xelselast_x = @display_xdw = Graphics.width > width * 32 ? width : screen_tile_x@display_x = [@display_x + distance, width - dw].min@parallax_x += @display_x - last_xendendend # Game_Map#==============================================================================# ■ Spriteset_Map#==============================================================================class Spriteset_Map#--------------------------------------------------------------------------# overwrite method: create_viewports#--------------------------------------------------------------------------def create_viewportsif Graphics.width > $game_map.width * 32 && !$game_map.loop_horizontal?dx = (Graphics.width - $game_map.width * 32) / 2elsedx = 0enddw = [Graphics.width, $game_map.width * 32].mindw = Graphics.width if $game_map.loop_horizontal?if Graphics.height > $game_map.height * 32 && !$game_map.loop_vertical?dy = (Graphics.height - $game_map.height * 32) / 2elsedy = 0enddh = [Graphics.height, $game_map.height * 32].mindh = Graphics.height if $game_map.loop_vertical?@viewport1 = Viewport.new(dx, dy, dw, dh)@viewport2 = Viewport.new(dx, dy, dw, dh)@viewport3 = Viewport.new(dx, dy, dw, dh)@viewport2.z = 50@viewport3.z = 100end#--------------------------------------------------------------------------# new method: update_viewport_sizes#--------------------------------------------------------------------------def update_viewport_sizesif Graphics.width > $game_map.width * 32 && !$game_map.loop_horizontal?dx = (Graphics.width - $game_map.width * 32) / 2elsedx = 0enddw = [Graphics.width, $game_map.width * 32].mindw = Graphics.width if $game_map.loop_horizontal?if Graphics.height > $game_map.height * 32 && !$game_map.loop_vertical?dy = (Graphics.height - $game_map.height * 32) / 2elsedy = 0enddh = [Graphics.height, $game_map.height * 32].mindh = Graphics.height if $game_map.loop_vertical?rect = Rect.new(dx, dy, dw, dh)for viewport in [@viewport1, @viewport2, @viewport3]viewport.rect = rectendendend # Spriteset_Map#==============================================================================# ■ Scene_Map#==============================================================================class Scene_Map < Scene_Base#--------------------------------------------------------------------------# alias method: post_transfer#--------------------------------------------------------------------------alias scene_map_post_transfer_ace post_transferdef post_transfer@spriteset.update_viewport_sizesscene_map_post_transfer_aceendend # Scene_Map
    Please credit Yanfly, not me.

    To install this script, paste it into the materials category of your script editor, above Main. Press [iNS] in that list to add in more space to put this in, if need be. Remember to name the script!

    Once this script is installed, observe where I have entered this information near the top:

    RESIZE_WIDTH = 1344
    RESIZE_HEIGHT = 768

    This is the closest size to my screen, divisible by 32. I have chosen a size smaller than my size of 1366 because choosing a size larger would’ve meant that the map would’ve scrolled. I’ll come back to this later, but it is perhaps entirely possible to have a resolution of 1378*768 on a 1366*768 screen without issues. Feel free to experiment with screen sizes, but keep in mind that whatever resolution you put here may affect what’s shown on your map size, and vice-versa. It’s a juggling act.

    Remember to save your project and test it out. If done correctly, the game should launch. However, performance may be poor. We’ll come to the rest of the necessities for this .DLL, as well as how to improve performance next.


    Necessities
    Personally, I have the following scripts installed:
    - Zeus’ Fullscreen [F5]:
    http://forums.rpgmakerweb.com/index.php?/topic/14081-fullscreen/

    - FenixFyreX’s Plane Fix:


    - Dekita’s Resolution Setter [ALT+Arrow]:
    http://dekitarpg.wordpress.com/2014/10/16/resolution-setter/

    - Sixth’s Timer and Picture Display Fix:
    http://forums.rpgmak...n-dll/?p=346713

    - Killozapit’s Word Wrap:
    http://www.rpgmakervxace.net/topic/6964-word-wrapping-message-boxes/

    - Kread’s Offscreen Custom Movement fix: [Number 8 on the linked list]
    http://rpgmaker.net/tutorials/816/
    (This is critical if you use custom move routes because otherwise the events won’t work outside of the default 17*13 window.)

    UPDATE: You can now use resolutions that are not a multiple of 32, with Hudell's script snippet! To use this, extend your map's area to the right by one tile - it essentially tricks the engine into thinking there is one tile less than what it is displaying, thereby preventing a wraparound. This updated snippet allows you to use smaller maps that have been centered by Yanfly's Engine snippet.
    Code:
    class Game_Map  
      def width    
        if Graphics.width % 32 == 0      
          @map.width    
        else      
          @map.width - 1    
        end  
      end    
     
      def height    
        if Graphics.height % 32 == 0      
          @map.height    
        else      
          @map.height - 1    
        end  
      end  
    end 
    
    class Game_Player < Game_Character  
      def center_x    
        ((Graphics.width / 32).floor - 1) / 2.0  
      end  
     
      def center_y    
        ((Graphics.height / 32).floor - 1) / 2.0  
      end
    end
    
    This High-Resolution .DLL is compatible with Galv’s Bust Script, should you wish to assure yourself that showing busts is still possible, hassle-free.

    You will also need to redraw your maps so that they conform to the new screen size you set.
    For example, if you are using 1344*768, you will need maps that are 42 tiles wide and 24 tiles high.
    However, the Yanfly Engine Ace snippet above will auto-center anything smaller than this, so feel free to experiment with smaller (and larger, if you have Hudell's script!) sizes.

    All of these together should give you basically this result:
    http://i.imgur.com/m3JuxKk.jpg


    Various Resolution Optimizations
    One of the flaws I have found so far via large-scale testing is that if you give someone a game that is 1344*768 and they run it on a 1024*768 screen, the game will be blurry. I do not yet know why (but I suspect this is downscaling in action, though it is only blurry on 1024*768 and 800*600)
    - A potential fix might be this: http://forums.rpgmakerweb.com/index.php?/topic/33783-resolution-selection-script/
    Therefore, if you can force the player to use a resolution other than 1024 or 800 while you are using 1344, the graphics can probably be redrawn or resized. I have not been able to test this thoroughly yet, but it may be an apt solution.

    There may be one small bug: The window size decreases, if the game is played on a larger-resolution screen. However, this may be because the larger-resolution screen is trying it display more pixels per inch, thereby reducing the size of the display on the smaller-resolution game. I will see if there is a workaround.

    Remember that when using this .DLL, it does not matter what resolution you set the original screen to. For example, here are some screenshots from the 1344*768-set resolution, through other various resolution windows:


    You can see that there are some resolutions at which 1344*768 becomes very blurry, but a very slight blur on the 1366 resolution is due to the screenshot program, subsequent uploading and downloading (which thereby reduced the quality of the screenshot very slightly anyway).

    The game screen also changes size depending on what the original resolution was set at, and what resolution the game-playing computer screen is. I look forward to more tests in this department.

    There are some scripts you can install to assist with automatic resolution resizing/displays:
    - Tsukihime's Battle Sprite Auto-Position (I don't use this one as I have CP Battle System)
    [Note: apparently does not work with YEA]
    http://himeworks.com/2013/02/battle-sprite-auto-position/


    Performance Optimization
    When running this .DLL on a game without performance optimizing scripts (and just the .DLL alone) you will notice a significant slowdown.
    For other performance issues pertaining to the user’s computers, try these in conjunction with each other:

    - Yanfly Stop Movement:
    https://yanflychannel.wordpress.com/rmvxa/utility-scripts/stop-all-movement/

    - Galv’s Move Route Extras:
    http://galvs-scripts.com/galvs-move-route-extras/

    - Mithran's Text Cache
    http://forums.rpgmakerweb.com/index.php?/topic/1001-text-cache/

    Please note: The performance was tested on one of the lowest high-end laptops you can find. This laptop can run games like Skyrim and Naruto Storm 3 at about 20-30 frames per second, but with significant lag unless the game(s) are put to their lowest graphical quality and in the case of Storm 3, the lowest resolution possible.


    Things to Consider
    Even for professional game developers, it is very difficult to account for every single resolution.
    However, here is a list of common resolutions:
    http://forums.rpgmakerweb.com/index.php?/topic/31953-high-res-rpg-maker-project/page-21#entry352937
    You can still choose to 'bypass' this and use your own, such as 1344*768, since it is the closest to the resolution of 1366*768.
    For reference, 1344*768 consists of 42*24 tile-sized maps.

    Many of the solutions I’ve provided here are simply band-aids, and will not fix the underlying issue – that they may need fixes in the actual .DLL. However, they work visually, and that’s what matters with this .DLL, since the main advantage of this .DLL is to break Ace’s previously-default limits and show far more onscreen, much like an actual game.

    If you are a scripting expert, it is highly recommended that you work with other resolution scripters to see if you can make an options window that adjusts the game window, and is compatible with all the other scripts listed above. If you can do this, then Ace can have a true resolution revolution.

    Additionally, please remember that this .DLL is experimental. It is fine to distribute games with this, but it is by no means announced as a finished ‘product’. The more testing that can come of this, the better the final result will be.

    End Result
    If you are able to achieve a lag-free experience (lag-free for me is defined as going no lower than 30fps, as the difference between 30 and 60fps is minimal compared to the difference between 0 and 30) with a perfect display that accounts for all resolutions like the image below:
    http://i.imgur.com/m3JuxKk.jpg
    Then you’re golden.

    Please share your results!
     
    Last edited by a moderator: Dec 31, 2018
    #1
    Archeia, felsenstern, Dymdez and 13 others like this.
  2. Susan

    Susan Veteran Veteran

    Messages:
    2,766
    Likes Received:
    8,389
    Location:
    somewhere on this planet~
    First Language:
    No idea...
    Primarily Uses:
    RMMV
    Wow! Great tutorial, Hotfirelegend!

    This will certainly come in handy. ^^

    Just one thing, maybe you can place the scripts in spoiler tags?
     
    #2
  3. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English
    No problem! And fixed!
     
    #3
  4. Gothic Lolita

    Gothic Lolita YouTube Starlet Veteran

    Messages:
    1,132
    Likes Received:
    197
    Location:
    Germany
    First Language:
    German
    Primarily Uses:
    RMMV
    If I use this method, there is still a little question left.
    For me it will sure work, but the .dll file is in my maker placed.
    So if someone else is downloading my project, they need to basicaly add this .dll file too to their RPG Maker.
    Or will the .dll file be copy to your project after that? (\s/)
     
    #4
  5. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English
    When you put the .dll in the maker (and when you open the game file and save it), it copies it automatically to your game file, so your game file will include the .dll.
     
    Last edited by a moderator: Dec 4, 2014
    #5
    Gothic Lolita likes this.
  6. Gothic Lolita

    Gothic Lolita YouTube Starlet Veteran

    Messages:
    1,132
    Likes Received:
    197
    Location:
    Germany
    First Language:
    German
    Primarily Uses:
    RMMV
    Did so, but it crashes for me, with the error RGSS Player doesn't work anymore. o_O (\s/) 
     
    #6
  7. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English
    Are you putting the high-resolution dll in place of the old dll, in the RPG Maker VX Ace program?


    Did you name the high-res dll RGSS301?


    If so, you have to then open your game project and save the game project.


    Then you start the game, and it should show high-res if you have the Yanfly script above.


    If you do this and it doesn't work, can you screenshot what you have done?
     
    #7
  8. Gothic Lolita

    Gothic Lolita YouTube Starlet Veteran

    Messages:
    1,132
    Likes Received:
    197
    Location:
    Germany
    First Language:
    German
    Primarily Uses:
    RMMV
    So there it works only with Yanfly in it. I got a different high res script. 

    But Yanfly stays in conflict with the Victor Sants scripts. :/

    Anyway I got on 720p 33 => 38 FPS, so it doesn't run that bad I guess. :D

    On the highes I can go without any crashes is 1920x1200 => 13 FPS, not really recommended for playing. :/

    But for some the FPS isn't that important for an RPG, so I give them the option to decide it. With letting them know, what performance I got. :D
     
    #8
    EternalShadow likes this.
  9. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English
    Here is your alternative option: (Just paste this in line 6 in 'main', at the bottom)

    Graphics.resize_screen(1344, 768)

    None of the YEA features will be applied if you comment the entire lot of YEA out, but this will allow you to use Victor.

    EDIT: However, I can suggest a compromise.

    Use this for Yanfly:

    #==============================================================================## ▼ Yanfly Engine Ace - Ace Core Engine v1.09# -- Last Updated: 2012.02.19# -- Level: Easy, Normal# -- Requires: n/a##==============================================================================module YEA module CORE #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Screen Resolution Size - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # RPG Maker VX Ace has the option of having larger width and height for # your games. Resizing the width and height will have these changes: # # Default Resized Min Tiles Default Min Tiles New # Width 544 640 17 20 # Height 416 480 13 15 # # * Note: Maximum width is 640 while maximum height is 480. # Minimum width is 110 while maximum height is 10. # These are limitations set by RPG Maker VX Ace's engine. # # By selecting resize, all of the default menus will have their windows # adjusted, but scripts provided by non-Yanfly Engine sources may or may # not adjust themselves properly. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # RESIZE_WIDTH = 1344 # RESIZE_HEIGHT = 768 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Adjust Animation Speed - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # By default, the animation speed played in battles operates at 15 FPS # (frames per second). For those who would like to speed it up, change this # constant to one of these values: # RATE Speed # 4 15 fps # 3 20 fps # 2 30 fps # 1 60 fps #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ANIMATION_RATE = 3 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Digit Grouping - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Setting this to true will cause numbers to be grouped together when they # are larger than a thousand. For example, 12345 will appear as 12,345. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- GROUP_DIGITS = true #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Font Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Adjust the default font settings for your game here. The various settings # will be explained below. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- FONT_NAME = ["VL Gothic", "Verdana", "Arial", "Courier"] # This adjusts the fonts used for your game. If the font at the start of # the array doesn't exist on the player's computer, it'll use the next one. FONT_SIZE = 24 # Adjusts font size. Default: 24 FONT_BOLD = false # Makes font bold. Default: false FONT_ITALIC = false # Makes font italic. Default: false FONT_SHADOW = false # Gives font a shadow. Default: false FONT_OUTLINE = true # Gives font an outline. Default: true FONT_COLOUR = Color.new(255, 255, 255, 255) # Default: 255, 255, 255, 255 FONT_OUTLINE_COLOUR = Color.new(0, 0, 0, 128) # Default: 0, 0, 0, 128 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Forced Action Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # For those who would like to allow the game to remove a forced action # battler from the queue list, use the switch below. If you don't want to # use this option, set the switch ID to 0. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- FORCED_ACTION_REMOVE_SWITCH = 0 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Gauge Appearance Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # You can modify the way your gauges appear in the game. If you wish for # them to have an outline, it's possible. You can also adjust the height # of the gauges, too. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- GAUGE_OUTLINE = true GAUGE_HEIGHT = 12 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Held L and R Menu Scrolling - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # VX gave the ability to scroll through menus quickly through holding the # L and R buttons (Q and W on the keyboard). VX Ace disabled it. Now, you # can re-enable the ability to scroll faster by setting this constant to # true. To disable it, set this constant to false. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- QUICK_SCROLLING = true #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - System Text Colours - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Sometimes the system text colours are boring as just orange for HP, blue # for MP, and green for TP. Change the values here. Each number corresponds # to the colour index of the Window.png skin found in Graphics\System. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- COLOURS ={ # :text => ID :normal => 0, # Default: 0 :system => 16, # Default: 16 :crisis => 17, # Default: 17 :knockout => 18, # Default: 18 :gauge_back => 19, # Default: 19 :hp_gauge1 => 28, # Default: 20 :hp_gauge2 => 29, # Default: 21 :mp_gauge1 => 22, # Default: 22 :mp_gauge2 => 23, # Default: 23 :mp_cost => 23, # Default: 23 :power_up => 24, # Default: 24 :power_down => 25, # Default: 25 :tp_gauge1 => 10, # Default: 28 :tp_gauge2 => 2, # Default: 29 :tp_cost => 2, # Default: 29 } # Do not remove this. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - System Text Options - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Here, you can adjust the transparency used for disabled items, the % # needed for HP and MP to enter "crisis" mode. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- TRANSPARENCY = 160 # Adjusts transparency of disabled items. Default: 160 HP_CRISIS = 0.25 # When HP is considered critical. Default: 0.25 MP_CRISIS = 0.25 # When MP is considered critical. Default: 0.25 ITEM_AMOUNT = "×%s" # The prefix used for item amounts. end # COREend # YEA #==============================================================================# ▼ Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#============================================================================== Font.default_name = YEA::CORE::FONT_NAMEFont.default_size = YEA::CORE::FONT_SIZEFont.default_bold = YEA::CORE::FONT_BOLDFont.default_italic = YEA::CORE::FONT_ITALICFont.default_shadow = YEA::CORE::FONT_SHADOWFont.default_outline = YEA::CORE::FONT_OUTLINEFont.default_color = YEA::CORE::FONT_COLOURFont.default_out_color = YEA::CORE::FONT_OUTLINE_COLOUR #==============================================================================# ■ Numeric#============================================================================== class Numeric #-------------------------------------------------------------------------- # new method: group_digits #-------------------------------------------------------------------------- def group return self.to_s unless YEA::CORE::GROUP_DIGITS self.to_s.gsub(/(\d)(?=\d{3}+(?:\.|$))(\d{3}\..*)?/,'\1,\2') end end # Numeric #==============================================================================# ■ Switch#============================================================================== module Switch #-------------------------------------------------------------------------- # self.forced_action_remove #-------------------------------------------------------------------------- def self.forced_action_remove return false if YEA::CORE::FORCED_ACTION_REMOVE_SWITCH <= 0 return $game_switches[YEA::CORE::FORCED_ACTION_REMOVE_SWITCH] end end # Switch#==============================================================================# ■ Game_Event#============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # overwrite method: near_the_screen? #-------------------------------------------------------------------------- def near_the_screen?(dx = nil, dy = nil) dx = [Graphics.width, $game_map.width * 256].min/32 - 5 if dx.nil? dy = [Graphics.height, $game_map.height * 256].min/32 - 5 if dy.nil? ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32 ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32 ax >= -dx && ax <= dx && ay >= -dy && ay <= dy end end # Game_Event#==============================================================================# ■ Game_Map#============================================================================== class Game_Map #-------------------------------------------------------------------------- # overwrite method: scroll_down #-------------------------------------------------------------------------- def scroll_down(distance) if loop_vertical? @display_y += distance @display_y %= @map.height * 256 @parallax_y += distance if @parallax_loop_y else last_y = @display_y dh = Graphics.height > height * 32 ? height : screen_tile_y @display_y = [@display_y + distance, height - dh].min @parallax_y += @display_y - last_y end end #-------------------------------------------------------------------------- # overwrite method: scroll_right #-------------------------------------------------------------------------- def scroll_right(distance) if loop_horizontal? @display_x += distance @display_x %= @map.width * 256 @parallax_x += distance if @parallax_loop_x else last_x = @display_x dw = Graphics.width > width * 32 ? width : screen_tile_x @display_x = [@display_x + distance, width - dw].min @parallax_x += @display_x - last_x end end end # Game_Map #==============================================================================# ■ Game_Event#============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # overwrite method: near_the_screen? #-------------------------------------------------------------------------- def near_the_screen?(dx = nil, dy = nil) dx = [Graphics.width, $game_map.width * 256].min/32 - 5 if dx.nil? dy = [Graphics.height, $game_map.height * 256].min/32 - 5 if dy.nil? ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32 ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32 ax >= -dx && ax <= dx && ay >= -dy && ay <= dy end end # Game_Event #==============================================================================# ■ Spriteset_Map#============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # overwrite method: create_viewports #-------------------------------------------------------------------------- def create_viewports if Graphics.width > $game_map.width * 32 && !$game_map.loop_horizontal? dx = (Graphics.width - $game_map.width * 32) / 2 else dx = 0 end dw = [Graphics.width, $game_map.width * 32].min dw = Graphics.width if $game_map.loop_horizontal? if Graphics.height > $game_map.height * 32 && !$game_map.loop_vertical? dy = (Graphics.height - $game_map.height * 32) / 2 else dy = 0 end dh = [Graphics.height, $game_map.height * 32].min dh = Graphics.height if $game_map.loop_vertical? @viewport1 = Viewport.new(dx, dy, dw, dh) @viewport2 = Viewport.new(dx, dy, dw, dh) @viewport3 = Viewport.new(dx, dy, dw, dh) @viewport2.z = 50 @viewport3.z = 100 end #-------------------------------------------------------------------------- # new method: update_viewport_sizes #-------------------------------------------------------------------------- def update_viewport_sizes if Graphics.width > $game_map.width * 32 && !$game_map.loop_horizontal? dx = (Graphics.width - $game_map.width * 32) / 2 else dx = 0 end dw = [Graphics.width, $game_map.width * 32].min dw = Graphics.width if $game_map.loop_horizontal? if Graphics.height > $game_map.height * 32 && !$game_map.loop_vertical? dy = (Graphics.height - $game_map.height * 32) / 2 else dy = 0 end dh = [Graphics.height, $game_map.height * 32].min dh = Graphics.height if $game_map.loop_vertical? rect = Rect.new(dx, dy, dw, dh) for viewport in [@viewport1, @viewport2, @viewport3] viewport.rect = rect end end end # Spriteset_Map #==============================================================================# ■ Window_Base#============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # overwrite method: reset_font_settings #-------------------------------------------------------------------------- def reset_font_settings change_color(normal_color) contents.font.size = Font.default_size contents.font.bold = Font.default_bold contents.font.italic = Font.default_italic contents.font.out_color = Font.default_out_color endend#==============================================================================# ■ Scene_Map#============================================================================== class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # alias method: post_transfer #-------------------------------------------------------------------------- alias scene_map_post_transfer_ace post_transfer def post_transfer @spriteset.update_viewport_sizes scene_map_post_transfer_ace end end # Scene_Map
    And put in the small code snippet (the graphics_resize one) I put above, into main.

    Let me know if you still have any issues with Victor.
     
    Last edited by a moderator: Dec 4, 2014
    #9
  10. Gothic Lolita

    Gothic Lolita YouTube Starlet Veteran

    Messages:
    1,132
    Likes Received:
    197
    Location:
    Germany
    First Language:
    German
    Primarily Uses:
    RMMV
    Actually not sure, if I want to get rid of what I allready have.
    It took me 20 hours for trying to figure out how it could work and after that time, Venka was so kindly and helped me configure it so it runs on different resolutions. :)
    The player can chose from 640x360 - 1920x1440 Pixel the framerate is from 60 - 11 FPS.
    But every resolution from 640x360 - 1280x960 runs with 60 - 28 FPS, which is super fine to play. :D
    Only if it drops below 24 FPS makes the game really annoying slow. ;) (\s/)
     
    #10
  11. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English
    so you have Victor running on different resolutions, using Venka's script? Could you show us? (And any fixes that may have to be applied?)
     
    #11
  12. Gothic Lolita

    Gothic Lolita YouTube Starlet Veteran

    Messages:
    1,132
    Likes Received:
    197
    Location:
    Germany
    First Language:
    German
    Primarily Uses:
    RMMV
    Last edited by a moderator: Dec 4, 2014
    #12
  13. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English
    Ah, but didn't that particular script have some plane and drawing issues (i.e: black bar on the right)? Have you used it to play on a large map and a small map to see if this is the case?
     
    #13
  14. Gothic Lolita

    Gothic Lolita YouTube Starlet Veteran

    Messages:
    1,132
    Likes Received:
    197
    Location:
    Germany
    First Language:
    German
    Primarily Uses:
    RMMV
    You can avoid it by simply doing a small math like 1920/32=60 and then 1440/32=45.
    Then you have the minimum map size of 60x45 for this example. Works of course for low resolutions too. :)
    The one I need the most help from Venka was with a new game plus script, that doesn't liked the resolution script for some weird reason. o_O
    The script of Venka loads from folders the graphic sized files. The other script auto scales for your screen.
    In example with 640x480, I got left and right huge bars.
    If I use 1280x720, then everything shows up correct.
    If I use 1680x1050, then there are really small bars on the left and right.

    But these facts belong to your Graphiccard and what native resolution your TV has.
    Because an old 1600x1200 screen will run 640x480 perfect.

    A 1920x1200 screen will run the resolution 1680x1050 perfect.

    Because all of this has the basic of screen ratio's that are mostly 4:3, 16:9 or 16:10.
    There are also more rare one's like 5:4 or 21:9.
    But after all, unlimited resolution is kinda wrong, because if you use for example 2560x1600, then the player crashes with the error message: "RGSS player has stopped working." (\s/)
     
    #14
    EternalShadow likes this.
  15. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English
    Ah, I didn't mean the black bar on the right was a result of the math being wrong - I meant that like in the early versions of this .dll, when your character moved right and scrolled the screen right, the screen flickered. The same issue was still in that other higher-resolution script you used, last I checked.
     
    #15
    Gothic Lolita likes this.
  16. Gothic Lolita

    Gothic Lolita YouTube Starlet Veteran

    Messages:
    1,132
    Likes Received:
    197
    Location:
    Germany
    First Language:
    German
    Primarily Uses:
    RMMV
    I done this with the basic .dll, because the new one crashes with this combination.

    Tested resolutions that way with the FPS:

    640x360 => 60 FPS

    640x400 => 60 FPS

    640x480 => 60 FPS

    800x450 => 58 FPS

    800x500 => 58 FPS

    800x600 => 40 ~ 57 FPS

    1024x576 => 57 FPS

    1024x640 => 36 ~ 40 FPS

    1024x768 => 31 ~ 37 FPS

    1280x720 => 33 ~ 38 FPS

    1280x800 => 28 FPS

    1280x960 => 28 ~ 31 FPS

    1600x900 => 18 FPS

    1680x1050 => 18 FPS

    1600x1200 => 14 FPS

    1920x1080 => 15 FPS

    1920x1200 => 13 FPS

    1920x1440 => 11 FPS
    All the results are benchmarked with Nvidia Shadow Play. Should be super accurate, because I got 24 FPS in Metro Last Light without and 24 FPS with.So doesn't change a thing for me. (\s/)
     
    #16
  17. HalestormXV

    HalestormXV Deranged Veteran

    Messages:
    99
    Likes Received:
    11
    First Language:
    Sarcasm/English
    Primarily Uses:
    N/A
    This guide is great but I seem to still be having issues....When I run my game after following these instructions TO THE TEE (even used the same resolution setting as my monitor supports up to 1920) the game gets forced into 640 x 480. Now how do i know it is getting forced back into it? Because the screen slightly adjusts itself at the start of every game. I just can't seem to figure it out. I've downloaded all the scripts and put them in the order as per the guide and it still fails. Now for the curveball of this all.

    If i enable the Unlimited Resolutions (in combo with resolution selector) script - I can switch between resolutions no problem and everything works fine and dandy. EXCEPT upon a map transfer a viewport error occurs in the Yanfly script. So I am guessing that unlimited resolutions does not play nice with Yanfly Engine because once I disable the Unlimited Resolutions script, poof everything works fine but the game forces itself back into a 640x480 resolution. Any idea on what could be going on?
     
    Last edited by a moderator: Dec 7, 2014
    #17
  18. Engr. Adiktuzmiko

    Engr. Adiktuzmiko Chemical Engineer, Game Developer, Using BlinkBoy' Veteran

    Messages:
    14,466
    Likes Received:
    2,860
    Location:
    Philippines
    First Language:
    Tagalog
    You need the DLL for it to work... Make sure you copied it into the RTP folder because if not, then once you hit save, the engine will re-copy the old DLL from the RTP folder into your game's folder...


    Also, if ur using yanfly's make sure you set the resolution inside his script
     
    #18
  19. EternalShadow

    EternalShadow Veteran Veteran

    Messages:
    5,805
    Likes Received:
    1,049
    First Language:
    English
    Sometimes the .DLL behaves a bit funnily: copy the .DLL over to your Ace folder again, then open the game project, save it, close everything, then reopen your project in the editor. Save again and playtest.It is entirely possible that the viewport thing won't work properly with YEA. To test this, just use the one line of code for graphics resizing instead of YEA and let me know if the issue persists.
     
    Last edited by a moderator: Dec 7, 2014
    #19
  20. Gothic Lolita

    Gothic Lolita YouTube Starlet Veteran

    Messages:
    1,132
    Likes Received:
    197
    Location:
    Germany
    First Language:
    German
    Primarily Uses:
    RMMV
    If you use the .dll, you can only use Yanfly. You need to put in the Yanfly Core Engine script in the resolution part for example:

    RESIZE_WIDTH = 1920 RESIZE_HEIGHT = 1080But I wouldn't recommend resolutions above 1280x720, because else the FPS drops below 20.

    With the Unlimited Resolution & Resolution Select script you need to get rid of the Yanfly Core, because these two brings up a lot of errors.

    Some of the errors later in testplay will bring you even crashes. ;)

    I didn't used the .dll, because for some really strange reason, it only works with Yanfly. But not so for the Unlimited Resolution and Resolution Select script. :/

    Anyway, it would be interresting to see, what FPS you get, if you copy the .dll. Anyone wanna do so? (\s/)
     
    #20
Thread Status:
Not open for further replies.

Share This Page