How to use the High-Resolution .DLL

Status
Not open for further replies.

HalestormXV

Deranged
Veteran
Joined
Apr 10, 2013
Messages
99
Reaction score
12
First Language
Sarcasm/English
Primarily Uses
N/A
Well after painful testing and after painful trial and error I figured it out.....but now I cant figure out how to resolve it for the life of me....The issue is that every time i save my project the old .dll file reappears and overwrites the new one. I managed to figure that one out because I had my system folder open while saving the project and had it sorted by date. Sure enough the .dll's date was the 7th of December (since I downloaded it today) and when I click on save project the old .dll from may puts itself into the project folder totally rewriting the new one.....How is that even possible? The .dll isn't even in my RTP or RPGVXAce dirctory folder (when you install the RTP) so it can't be pulling it from there. Thoughts?

EDIT: Alright after some thorough searching with my search folder box. It appears that the original .dll was stored in some other directory (not the RPGVXAce or RTP) somewhere on my computer and my project was pulling from that. Its possible that because I have both a steam installation and a regular installation on different drives that it was just picking one at random (and maybe it was in one and not the other? I dont really know). It seems to work now. If anything changes I will be sure to edit this post or repost.
 
Last edited by a moderator:

EternalShadow

Veteran
Veteran
Joined
Sep 16, 2012
Messages
5,781
Reaction score
1,041
First Language
English
Primarily Uses
Well after painful testing and after painful trial and error I figured it out.....but now I cant figure out how to resolve it for the life of me....The issue is that every time i save my project the old .dll file reappears and overwrites the new one. I managed to figure that one out because I had my system folder open while saving the project and had it sorted by date. Sure enough the .dll's date was the 7th of December (since I downloaded it today) and when I click on save project the old .dll from may puts itself into the project folder totally rewriting the new one.....How is that even possible? The .dll isn't even in my RTP or RPGVXAce dirctory folder (when you install the RTP) so it can't be pulling it from there. Thoughts?

EDIT: Alright after some thorough searching with my search folder box. It appears that the original .dll was stored in some other directory (not the RPGVXAce or RTP) somewhere on my computer and my project was pulling from that. Its possible that because I have both a steam installation and a regular installation on different drives that it was just picking one at random (and maybe it was in one and not the other? I dont really know). It seems to work now. If anything changes I will be sure to edit this post or repost.
You MUST put the new .dll in the Ace directory folder.

By the way, this .DLL isn't restricted to only being usable with Yanfly, as far as I know. I used the graphics.resize function and it worked just fine for me.
 

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,682
Reaction score
3,003
First Language
Tagalog
Primarily Uses
RMVXA
It should only be picking up the DLL from the Ace folder... If you have both the steam and non-steam versions, try replacing the DLL in both of the versions
 
Last edited by a moderator:

HalestormXV

Deranged
Veteran
Joined
Apr 10, 2013
Messages
99
Reaction score
12
First Language
Sarcasm/English
Primarily Uses
N/A
Yes, I am imagining that what happened was that maybe the old .dll was in one directory and not in the other. Perhaps since I develop my project in the cloud it was pulling the old .dll from another cloud storage, or another directory elsewhere. I have a strange development setup and it is quite possible that I had multiple versions of the old .dll stored that the project was pulling from.
 

Bonkers

Get ready to be Wowed!
Restaff
Joined
May 26, 2013
Messages
2,941
Reaction score
2,897
First Language
English
Primarily Uses
RMMV
I have followed the guide exactly and it works well with Shaz's mouse script , however; I am suffering a massive slow down in performance that the extra scripts aren't countering.  I installed everything you listed, and adjusted accordingly.  I'm not sure what I am doing wrong.  Are there specific settings I should stick to to get optimal performance out of a game?
 
Last edited by a moderator:

EternalShadow

Veteran
Veteran
Joined
Sep 16, 2012
Messages
5,781
Reaction score
1,041
First Language
English
Primarily Uses
I have followed the guide exactly and it works well with Shaz's mouse script , however; I am suffering a massive slow down in performance that the extra scripts aren't countering.  I installed everything you listed, and adjusted accordingly.  I'm not sure what I am doing wrong.  Are there specific settings I should stick to to get optimal performance out of a game?
Is your processor AMD?
 

Gothic Lolita

YouTube Starlet
Veteran
Joined
Oct 21, 2014
Messages
1,132
Reaction score
197
First Language
German
Primarily Uses
RMMV
Is your processor AMD?
This doesn't matter so far. :D

I can see, that this line will remain a long time now. :p

The answer is probably no. If you go above 1280x720, you will allways get a performance drop under 30 FPS.

The second thing that mostly has an affect to the performance, if you use Windows 8 or above.

Then I would recommend to use windowed mode, because there is no performance drop up to Windows 7. ;)

If you are looking for a 60 FPS no matter how large the maps is, then I would recommend a resolution of maximum 1024x768.

If you can make costum resolution use 1024x576 which is a widescreen resolution, that runs on my system 60 FPS while testing.

At 720p you will get around 33 ~ 38 FPS without the .dll, with the .dll you get allways 30 FPS, as far I can see. o_O (\s/)
 

EternalShadow

Veteran
Veteran
Joined
Sep 16, 2012
Messages
5,781
Reaction score
1,041
First Language
English
Primarily Uses
Windows 7, Intel.


1344*768.


EDIT: Ok, I'm gonna do some testing for you guys. It seems like certain (very specific) things affect FPS more than others - I think it's a draw/update thing. Showing text is a huge culprit, but FPS isn't normally noticed at that time.


-----------


I did some experimenting on various maps and various settings (thankfully, my pre-existing game had this at hand already!)


INTEL - Windows 7 - Laptop


1344*768


Tidbit: If you are not in fullscreen (Zeus Fullscreen F5) you lose 5 FPS.


I used VGA display script to find the FPS.


21*17 map with no moving events and no text: 60 fps


21*17 map with no moving events and text: 60 fps **


(357 tiles displayed)


42*23 map with parralax background moving left: 40-50 fps


42*23 map with parralax background moving left and text: 30 fps


(966 tiles displayed, mostly black - moreso 230)


22*22 map with no moving events and no text: 30 fps


22*22 map with no moving events and text: 30 fps


(484 tiles displayed)


30*14 with 2 moving events and no text: 60 fps


30*14 with 2 moving events and text: 30 fps


(420 tiles displayed)


42*24 with no moving events and no text: 30 fps


(1008 tiles displayed)


**Falls to 30 fps during text rendering, jumps around a bit, then goes back to 60.


It simply seems to be a quantity-based rendering thing. Text display is an obvious culprit, and the engine seems to find showing maps around 480 tiles in quantity quite hard - but is fine with 420 until text appears.
 
Last edited by a moderator:

_Shadow_

Tech Magician Level:
Moderator
Joined
Mar 2, 2014
Messages
4,078
Reaction score
2,654
First Language
Greek
Primarily Uses
RMMZ
12 FPS sometimes but still this is awesome!  :D   :D   :D
 

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,682
Reaction score
3,003
First Language
Tagalog
Primarily Uses
RMVXA
Drawing text is a another resource hogger as told by the help file. :)


Anyway, even without the new dll and just using the default window already lags on some system so drawing more things would surely decrease the performance further
 

EternalShadow

Veteran
Veteran
Joined
Sep 16, 2012
Messages
5,781
Reaction score
1,041
First Language
English
Primarily Uses
It looks like there could be some fixes in the pipeline (for both normal and high-res for large maps and text rendering) - I'll update this file with the fixes once they're released, if they are!
 

Kaelan

Veteran
Veteran
Joined
May 14, 2012
Messages
797
Reaction score
537
First Language
Portuguese
Primarily Uses
RMMV
There's actually a lot more to it than this. RM has a ton of individual things you have to look at to get decent performance at higher resolutions. I feel like I should write a guide about this sometime  :|
 
Last edited by a moderator:

sinchross

Villager
Member
Joined
Jun 27, 2012
Messages
23
Reaction score
4
First Language
Portuguese
Primarily Uses
N/A
After testing higher resolutions for some time I think that the characters seems smaller now. I try to use the MGC Zoom script, I already made a fix to permit parallax zooming, but if I use the Zoom Script + Kread plane fix, the parallax zoom don't works fine more. My characters already are bigger than normal (70x100 aprox.).

Did someone knows how to integrate the Zoom script and Kread plane fix to works correctly with zooming parallax ??( I'm using parallax mapping on my project.)

And more on thing, I notice a lot of lag when using Victor Fog Script with higher resolution... I don't know why but the fps falls of 59-60 to 30-35 when the fog is called.

Some screens of my game (If you notice, the 640x480 resolution let the player apreciate more details of the characters, that's why I want to use the zoom script, to let the player zoom in the camera besides the main resolution chosen for the game.) :

640x480:



1024x768:



1376x960:

 
Last edited by a moderator:

EternalShadow

Veteran
Veteran
Joined
Sep 16, 2012
Messages
5,781
Reaction score
1,041
First Language
English
Primarily Uses
There's actually a lot more to it than this. RM has a ton of individual things you have to look at to get decent performance at higher resolutions. I feel like I should write a guide about this sometime  :|
Yes, there are a lot of things - but FenixFyreX and some other member(s) are working on them as we speak.

@Sinchross: They appear smaller due to the resolution - more pixels are being drawn over the given area. I'm sure someone more well-versed in actual resolutions/sizes/assets can clue you in on this, as I'm only experienced with -how- to actually use the .dll effectively and get around its performance issues.

As for the fog script, tune back here once the performance fixes are done by the other members and I'll try and integrate them into this guide.
 

sinchross

Villager
Member
Joined
Jun 27, 2012
Messages
23
Reaction score
4
First Language
Portuguese
Primarily Uses
N/A
Thanks for the answer, I know that about the resolutions, but unfortunately the character scale can't be sized up because of some other limitations and for using a lot of different animations and real time battle, what already consumes a lot of Memory RAM.

But if the MGC Zoom script works with the Kread plane fix to adjust the parallax, it will be a great tool for the player choose his own graphics scale for one or another situation.
 

Yes, there are a lot of things - but FenixFyreX and some other member(s) are working on them as we speak.

@Sinchross: They appear smaller due to the resolution - more pixels are being drawn over the given area. I'm sure someone more well-versed in actual resolutions/sizes/assets can clue you in on this, as I'm only experienced with -how- to actually use the .dll effectively and get around its performance issues.

As for the fog script, tune back here once the performance fixes are done by the other members and I'll try and integrate them into this guide
 

Kaelan

Veteran
Veteran
Joined
May 14, 2012
Messages
797
Reaction score
537
First Language
Portuguese
Primarily Uses
RMMV
Yes, there are a lot of things - but FenixFyreX and some other member(s) are working on them as we speak.
Oh, that's not what I meant. I mean, yes, there's more things that could be done in the script/DLL space (a Bitmap rewrite would be pretty huge for performance gains), but what I meant is there's more things than you described that any individual person using high resolution should worry about. For example:

1. Text drawing is slow (the help file itself will tell you this). Text wrapping is even slower. Now add the fact that you have more screen space at higher resolution (and therefore probably want to display more stuff at once), and text becomes a real problem. If you're displaying a lot of text in your game, you will have to consider how to do this without losing much frame rate at high resolutions.

2. The window class is slow. You mentioned Yanfly's script auto-resizing your windows, but that's actually really bad. You really don't want windows to scale with your screen size, their performance tanks extremely fast as they get bigger, even if the window isn't actually doing anything other than having a windowskin. You should prefer lots of small windows over few big windows whenever possible. If you use windows to draw background images (for menus or HUD elements, for example), consider using Sprites instead.

3. This is related to the issues @Sinchross is having - large sprites are slow. But beyond that, how slow is dependant on how much of it is visible at once. For this reason, parallax mapping at high resolution has some significant costs, because more pixels have to be processed every frame. Additionally, the more layers you use in your parallax map, the slower your map will become. This is normally an issue anyway, as anyone that has ever messed with lighting will know, but it's an even bigger issue at higher resolutions. You should try to use as few parallax layers as possible at higher resolutions.

4. The screen tone command is slow. Specifically, it's very slow if you ever use the grey field (you can check the RGSS3 documentation for more info on this). Whenever using high resolutions, avoid using Tones too much, and always leave the Grey tone at 0 - use only RGB.

@Sinchross Can't you just increase the zoom on the sprites / bitmaps? It should be easier to zoom in with full parallax, since everything is a bitmap and you don't have to care about tilemaps anymore. Just increase the sprite zoom values. I'm not sure why changing a sprite's zoom would have any effect on the RAM used. If you don't need to change the zoom during gameplay, another alternative is to just keep the game at low resolution and scale the image to double-size (Zeus81's Fullscreen++ script can do this).
 
Last edited by a moderator:

EternalShadow

Veteran
Veteran
Joined
Sep 16, 2012
Messages
5,781
Reaction score
1,041
First Language
English
Primarily Uses
1. Fenix and other members are rewriting the text drawing.

2. Same case as above. However, do you know of a script that can keep the menu windows the same size, but center them depending on screen size?

3. Generally an issue for all computers anyway, especially if too much is happening onscreen.

4. Good tip on the grey, thanks. Not touched it!
 

Sixth

Veteran
Veteran
Joined
Jul 4, 2014
Messages
2,162
Reaction score
822
First Language
Hungarian
Primarily Uses
RMVXA
Nice tutorial!

And I see one of my snippet there! :D

Here is a new one which fixes picture drawing too, along with the timer fix:

class Spriteset_Map #-------------------------------------------------------------------------- # alias method: Create Viewport #-------------------------------------------------------------------------- alias timer_view_new121 create_viewports def create_viewports timer_view_new121 @viewportTimer = Viewport.new @viewportPicture = Viewport.new @viewportTimer.z = 190 @viewportPicture.z = 170 end #-------------------------------------------------------------------------- # overwrite method: Create Timer Sprite #-------------------------------------------------------------------------- def create_timer @timer_sprite = Sprite_Timer.new(@viewportTimer) end #-------------------------------------------------------------------------- # alias method: Free Viewport #-------------------------------------------------------------------------- alias timer_view_disp_new121 dispose_viewports def dispose_viewports timer_view_disp_new121 @viewportTimer.dispose @viewportPicture.dispose end #-------------------------------------------------------------------------- # overwrite method: Update Picture Sprite #-------------------------------------------------------------------------- def update_pictures $game_map.screen.pictures.each do |pic| @picture_sprites[pic.number] ||= Sprite_Picture.new(@viewportPicture, pic) @picture_sprites[pic.number].update end end #-------------------------------------------------------------------------- # alias method: Update Viewport #-------------------------------------------------------------------------- alias timer_view_upd_new121 update_viewports def update_viewports timer_view_upd_new121 @viewportTimer.color.set($game_map.screen.flash_color) @viewportTimer.update @viewportPicture.color.set($game_map.screen.flash_color) @viewportPicture.update endendclass Spriteset_Battle #-------------------------------------------------------------------------- # alias method: Create Viewport #-------------------------------------------------------------------------- alias timer_view_new122 create_viewports def create_viewports timer_view_new122 @viewportTimer = Viewport.new @viewportPicture = Viewport.new @viewportTimer.z = 190 @viewportPicture.z = 170 end #-------------------------------------------------------------------------- # overwrite method: Create Timer Sprite #-------------------------------------------------------------------------- def create_timer @timer_sprite = Sprite_Timer.new(@viewportTimer) end #-------------------------------------------------------------------------- # alias method: Free Viewport #-------------------------------------------------------------------------- alias timer_view_disp122 dispose_viewports def dispose_viewports timer_view_disp122 @viewportTimer.dispose @viewportPicture.dispose end #-------------------------------------------------------------------------- # overwrite method: Update Picture Sprite #-------------------------------------------------------------------------- def update_pictures $game_troop.screen.pictures.each do |pic| @picture_sprites[pic.number] ||= Sprite_Picture.new(@viewportPicture, pic) @picture_sprites[pic.number].update end end #-------------------------------------------------------------------------- # alias method: Update Viewport #-------------------------------------------------------------------------- alias timer_view_upd122 update_viewports def update_viewports timer_view_upd122 @viewportTimer.color.set($game_troop.screen.flash_color) @viewportTimer.update @viewportPicture.color.set($game_troop.screen.flash_color) @viewportPicture.update endend
Pictures got the same issue like the timer by default, this snippet fixes that too.

Depending on your parallax map settings (if you are using any, that is), you might need to edit the 'z' values of the viewports to avoid visual anomalies. But these shouldn't be hard to edit for anyone, so it should not be a problem. I set the timer.z to 190, and the picture z to 170.

And I see you removed a lot of code from Yanfly's Core Engine, but you left many unused module settings and unused code there still. Here is a complete code clean-up:

#==============================================================================## ▼ 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 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.#============================================================================== 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 / 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 #==============================================================================# ■ 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 #==============================================================================# ■ 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
This contains only the things necessary for the high res dll, nothing else.

And about the text drawing slow-downs...

I get a nice FPS boost with Mithran's Text cache script on my most "texty" scenes.

Although I rarely use 'draw_text_ex' in them, and I guess that one is the more resource costing method.
 

EternalShadow

Veteran
Veteran
Joined
Sep 16, 2012
Messages
5,781
Reaction score
1,041
First Language
English
Primarily Uses
@Sixth Sweet, thanks! I've added your snippet in place of my Yanfly thing, and have relinked the timer fix to your post.

Could we have a link to Mithran's Text Cache script?

Again, thanks! :D
 

Sixth

Veteran
Veteran
Joined
Jul 4, 2014
Messages
2,162
Reaction score
822
First Language
Hungarian
Primarily Uses
RMVXA
It is pinned in the Ace script section, but here is the direct link to it:


http://forums.rpgmakerweb.com/index.php?/topic/1001-text-cache/


This script also fixes some text issues with certain font types (like Monotype Corsiva) when using the high res dll.


I use Monotype Corsiva for my project, and that font type got some serious spacing issues and some letters are cut down if I use the high res dll, but with this script, the issue went *poof* in the abyss. :)
 
Status
Not open for further replies.

Users Who Are Viewing This Thread (Users: 0, Guests: 2)

Latest Threads

Latest Posts

Latest Profile Posts

Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??

Forum statistics

Threads
105,862
Messages
1,017,047
Members
137,569
Latest member
Shtelsky
Top