Ultra Mode 7

huanggaole

Warper
Member
Joined
Feb 29, 2020
Messages
4
Reaction score
0
First Language
Chinese
Primarily Uses
RMMV
Hi, I really like your job.
I want to make a game with orthogonal maps with your Ultra Mode 7.
However, it seems that the direction of this script is wrong. Is this a bug?
 

huanggaole

Warper
Member
Joined
Feb 29, 2020
Messages
4
Reaction score
0
First Language
Chinese
Primarily Uses
RMMV
Hi, I really like your job.
I want to make a game with orthogonal maps with your Ultra Mode 7.
However, it seems that the direction of this script is wrong. Is this a bug?
Hi, I think I have fixed the rendering problem by setting the @param CHARACTERS_ADJUST_SPRITE_DIRECTION false and the @param PLAYER_ADJUST_MOVE_DIRECTION false.
However, the problem of tapping makes roles walk the wrong way is still unsolved.
 

bblizzard

Veteran
Veteran
Joined
Nov 6, 2017
Messages
317
Reaction score
332
First Language
Croatian
Primarily Uses
RMMV
Yes, I was going to mention that you need to change these two parameters.#

Hm, you are right. When using orthogonal projection, the touch coordinates are messed up. I'll fix it and upload a new version.

EDIT: @huanggaole There you go. I fixed it in v1.5.4.
 
Last edited:

huanggaole

Warper
Member
Joined
Feb 29, 2020
Messages
4
Reaction score
0
First Language
Chinese
Primarily Uses
RMMV
Yes, I was going to mention that you need to change these two parameters.#

Hm, you are right. When using orthogonal projection, the touch coordinates are messed up. I'll fix it and upload a new version.

EDIT: @huanggaole There you go. I fixed it in v1.5.4.
Thank you for your reply!

And it seems that the current version also has some bugs in parallaxes pictures.
I want to make an isometric view game with Ultra Mode 7 and parallaxes pictures.
However, there are 2 bugs:
① The player and events' start positions related to parallaxes pictures are wrong with Ultra Mode 7, which are right without the script plugin. I think this may be a bug?
② The parallaxes pictures move in a wrong direction when the player moves. As the map has an isometric view, the parallaxes pictures should also move in an orthogonal projection direction, I think.

Thank you for your work. I like it very much.

 

bblizzard

Veteran
Veteran
Joined
Nov 6, 2017
Messages
317
Reaction score
332
First Language
Croatian
Primarily Uses
RMMV
These two issues are actually symptoms of the same problem.

Are you using parallax mapping? Because if you are, it won't work with UM7. The parallax is a fixed 2D background while UM7 renders the map as a 3D object. Interaction in space between these two is very problematic because it's ambiguous. You should use actual isometric mapping instead: https://forums.rpgmakerweb.com/index.php?threads/creative-eds-isometric-solution-alpha-0-2.98725/
Alternatively you can try to find a plugin that handles isometric movement on a normal map (so it also works with parallax mapping) since this is what you are actually trying to do right now.
 

huanggaole

Warper
Member
Joined
Feb 29, 2020
Messages
4
Reaction score
0
First Language
Chinese
Primarily Uses
RMMV
These two issues are actually symptoms of the same problem.

Are you using parallax mapping? Because if you are, it won't work with UM7. The parallax is a fixed 2D background while UM7 renders the map as a 3D object. Interaction in space between these two is very problematic because it's ambiguous. You should use actual isometric mapping instead: https://forums.rpgmakerweb.com/index.php?threads/creative-eds-isometric-solution-alpha-0-2.98725/
Alternatively you can try to find a plugin that handles isometric movement on a normal map (so it also works with parallax mapping) since this is what you are actually trying to do right now.
Thank you very much.
You helped me a lot.
 

KaYsEr

Koruldia
Veteran
Joined
Mar 14, 2014
Messages
227
Reaction score
455
First Language
French
Primarily Uses
RMMV
Hey Bblizzard, hope everything is fine.
I’ve made further progress and recently used the plugin, check it out:


On Twitter if it doesn't work/load, or the other way around..

It’s GREAT to have the new “border limits” we can manually set, it will allow us to make bigger maps without worrying too much about performances.

On that matter, what is your “maximum map size” recommendation today? I remember when the plugin was still young that we had to be careful about this, is it a thing of the past and we can now do whatever we want? (Since you made a lot of updates and even rewrote some stuff.)


I was also thinking about something, would it be possible to have an option (in the game menu for example) to change the “quality” of the 3D render, something like “Mode7 quality: Normal/High”, and “normal” would be the current and default quality.

Right now it’s pretty good, especially for that kind of “low-res dungeons” I do sometimes (more explanation in the update’s text) it adds some charm to it or at least it’s consistent as a whole, but I wonder how it could look with an extra “pass” (idk if it’s correct to talk about a number of “pass” here, but that’s what I remember from old Mode7 scripts on RMXP/VXA where we could change that value), tell me if it’s something possible or if there’s a part in the code we can modify to tweak those numbers a bit.

From what I can see after many tests on a large number of machines (including weak laptops) it seems we could go a bit further, even a 100x100 map full of events still gives me nice performances.
 

Espilonarge

Veteran
Veteran
Joined
Apr 24, 2016
Messages
128
Reaction score
60
First Language
English
Primarily Uses
On that matter, what is your “maximum map size” recommendation today? I remember when the plugin was still young that we had to be careful about this, is it a thing of the past and we can now do whatever we want? (Since you made a lot of updates and even rewrote some stuff.)
Personally, I currently have maps with UM7 active on them that are 256x256 with doodads that seem to stay well above the 60FPS margin (the primary issues that caused FPS stuttering/lag were resolved quite some time ago). I'm also using Galv's Layer Graphics plugin and Khas's Ultra Lighting plugin to provide weather/time to maps but I do have to impose personal limits so not to cause FPS problems or drive up resource usage (eg = a limit of 10 "active" layers).

Of course, having good hardware and a monitor that supports high refresh rates helps but you should always remember that not everyones systems/devices will handle your game in the same manner or keep a stable FPS (my current rig which has had a GTX1070 and I'm using a MSI OPTIX AG32C that supports 165Hz).

Mind you, there is still an issue regarding MV's engine design. Specifically maps that are larger than 256x256 would "snip" the bottom end of the map with black tiles (eg = 512x512 which some of my "old" maps from VXAce were before they were converted). There's most likely a limiter in place to keep the FPS stable because MV prefers to load the "whole" map rather than split it in to "sectors" which makes "world maps" virtually impossible (you have to split them in to separate maps to pull this off). If someone knows a "fix" regarding this, I'd love to know.
 

bblizzard

Veteran
Veteran
Joined
Nov 6, 2017
Messages
317
Reaction score
332
First Language
Croatian
Primarily Uses
RMMV
@KaYsEr That looks awesome. :D I love that panning effect when you enter the map. It's trippy. xD

I have no idea what a sensible limit could be. I'm running a 50% down-scaled map of 400x350, 2 layers at a resolution of 1280x720 just fine at 60 FPS: https://gyazo.com/ccef0937ae7a1a6f11a60b78f2530f66
I recorded this video on my home PC with an RTX 2080 Ti (GPU utilization in task manager is about 13% on the title screen and jumps between 20 and 26% on that special world map mock-up.), but it ran at unstable 75 FPS (was jumping around at times, but I didn't really notice any stutter in the actual game) on my work PC on a 75 Hz monitor with an Intel HD 630 (even before I outfitted it with a Radeon RX 580 about a month ago).

I don't think you have to worry too much about it as long as you don't go mobile. Fact is that even the weakest GPUs today are capable of rendering millions of polygons easily if you don't use any special effects. (I just watched a video about how the PS1 was technically actually capable of rendering up to 120k polygons at 30 FPS) A 400x350 map with 2 layers is 400 * 350 * 2 * 2 = 560k. (Well, actually it's much closer to 280k since I have barely anything on the second layer there, but let's say it's 560k for the sake of the argument.) So that's "only" half a million polygons. Plus, that's not what's actually being rendered. Hardware optimization cuts off all the polygons that are outside of the camera view frustum so the actual rendered polygon count is far lower. And VRAM usage isn't too bad either. I think the tilemap uses 9 floats for every vertex. That means 560 * 3 * 9 * 4 bytes = 60.48 MB of VRAM for all the vertex data. Most GPUs nowdaays have several GB of VRAM so it shouldn't be a problem (again, unless you want to go mobile).

@Espilonarge You could use TileD for the big maps. I, myself, use a custom made editor as well. The thing with MV's maps is just a relatively needless size limit of 256x256. MV's default tilemap renderer only renders the tiles that are visible on screen and about 2 tiles around. As you move, the tiles disappear and IDs are switched around. It only loads all the map data in memory so it can quickly do this kind of render data streaming. MV doesn't actually need a map size limit because of this approach as larger maps don't impact rendering performance, only RAM usage.

EDIT: @KaYsEr My employee has a laptop with an AMD A8 7410 and a Radeon R5 M335. That overworld map mock-up runs at about stable 40 FPS he says, but he has way more issues with the battle screen which runs at 15-20 (I have to profile and optimize this >_>). Normal maps that have more layers (2-3 usually) at the same time and events run at 25-30 for him. So events and multiple layers definitely change how it behaves. I'd still say that the GPU impact is minimal here though. Especially seeing as the battle screen seems to have much lower FPS than the map.

EDIT: I just want to clarify my mobile comment earlier a bit: A few years ago while I still worked at Cateia Games, at one point I had this weird issue with the credits screen where the last part would completely glitch out on certain Android devices. I realized that the issue is a 65536 unindexed vertex count limit for a single draw call (that would be around 22.5k polygons) so I split that into multiple render calls. Now, I remember during that time that some older phones would struggle a bit with that credits screen to keep things at 60 FPS, like a Samsung Galaxy S2 we had at the office. Smartphones have obviously come a long way since then, but performance is still not comparable to desktop GPUs or probably even consoles. That being said the Nintendo Switch does use a smartphone GPU so I guess newer phones are quite powerful. Still, not all people have the newest phones. So if you want to go mobile, you definitely have to rethink your whole approach to resource management and map size in the game. I'll be facing the same problem for my game.
 
Last edited:

KaYsEr

Koruldia
Veteran
Joined
Mar 14, 2014
Messages
227
Reaction score
455
First Language
French
Primarily Uses
RMMV
Thanks for your feedbacks you guys, good to see everything looks fine too.

@Espilonarge

I can think of a visual trick to bypass the limit (map size) you talk about but it’s a bit complicated to explain, and the result would be “seamless” but in a Zelda 1 (NES) kind of way (when the map only scrolls when you touch the border), to put it simple it would involve careful planning at the limits of a map to show a big picture, a screenshot of “where you are” (boundary of one map stitched to the boundary of destination map) then you scroll that picture and do the teleportation right after that scrolling.

Told you it was hard to explain.. It’s easier to do than to explain with text. Hope it can help anyway.


But yeah, good to know you have great performances too with this plugin, I also tried on weak devices just like you did, the weaker one is an integrated Intel GPU, HD3000.. And the plugin is still fine with that, I realize the real performance issue I can experience (especially on weak mobile stuff, still ok on that HD3000) is with Terrax Lighting system.

You might ask why I don’t use Khas just like you? Well that one is quite dangerous I’m afraid. Many people on integrated GPUs report error messages (crash) with that one and I’ve seen it myself, same with the other companion one (for the cool procedural fog, what a waste I loved it), that one crashes the game on start on the HD3000, probably something to do with the shader support of old GPUs like that one (and/or the way Khas did those plugins), in my opinion it’s better to trade good performances with compatibility and avoid Khas unfortunately. Maybe we can hope for some rewrite/optimization of Terrax one day.


@Blizzard

Thank you for this extra information, great in-depth analysis!
(Ha yes I almost forgot now you implemented some kind of “culling” of the mode7 maps, haha it’s even better than the 2D vanilla ones in a way since MV loads the entire map even when the majority is off screen. Great feature.)

Your employee runs the battle screen at 20fps?? You mean the vanilla MV battle system thing? Wow that’s weird, whenever I playtest something on a weak machine if there’s a thing I’m pretty sure I’ll get a solid 60fps, it’s the battles. (Or maybe you talk about something custom, like a mode7 implementation in battle or something like that. Good luck with the optimization!)

Oh you forgot to tell me if an option to change the quality (internal resolution?) of the 3D render would be possible, you talked about a down-scaled map at the beginning of your message but it’s a bit unclear. The goal would be to use the extra power (since it seems we’re good) to have a cleaner render of the ground and more stable scaling of the sprites, they tend to jitter a little bit when we move (especially if we move slowly) so I was wondering if it could help (or something like Mip Mapping maybe), out of curiosity at least. :)
 
Last edited:

bblizzard

Veteran
Veteran
Joined
Nov 6, 2017
Messages
317
Reaction score
332
First Language
Croatian
Primarily Uses
RMMV
@KaYsEr No, I have a custom battle system with up to 10 animated battlers at the same time on the screen. There's probably something wrong somewhere which is why it's running at just 20 FPS on his laptop. It's unrelated to UM7. As I said, I still have to look into that.

If you want a higher resolution, technically if you just get a plugin that lets you use higher resolution tilemaps (e.g. 96 instead of 48), there's a good chance that UM7 will just work with it out of the box.

I did manage to enable proper mip-mapping on my game, but I upgraded manually to PIXI.js v5 and I upgraded the pixi-tilemap plugin. It took me 3 days to iron out all the compatibility issues with MV and my code. Though mip-mapping only helps with rendering when a polygon is far away. Here's the difference.


You can especially see how the detailed textures in the top-right part of the screen are smoothed out by mip-mapping.

Scaling is a bit tricky. I was able to implement it in my own game, but I use a very customized version of UM7. So I don't plan on implementing it in the public version.
 

giuliani

Villager
Member
Joined
Apr 5, 2020
Messages
6
Reaction score
2
First Language
French
Primarily Uses
RMMV
These two issues are actually symptoms of the same problem.

Are you using parallax mapping? Because if you are, it won't work with UM7. The parallax is a fixed 2D background while UM7 renders the map as a 3D object. Interaction in space between these two is very problematic because it's ambiguous. You should use actual isometric mapping instead: https://forums.rpgmakerweb.com/index.php?threads/creative-eds-isometric-solution-alpha-0-2.98725/
Alternatively you can try to find a plugin that handles isometric movement on a normal map (so it also works with parallax mapping) since this is what you are actually trying to do right now.
You say that parallax mapping won't work with UM7 but I don't understand, because in this scene Kayzer seems to use some parallax with UM7:

So I don't understand how he proceed to get this effect, I read that Yanfly grid-free is compatible with UM7, but it's not a parallax system like in this scene, any idea or plugin?

Thanks in advance
 
Last edited:

bblizzard

Veteran
Veteran
Joined
Nov 6, 2017
Messages
317
Reaction score
332
First Language
Croatian
Primarily Uses
RMMV
I'm not sure how KaYsEr did it. Since there is very little movement going on, I assume it's probably small enough that the offset issues don't appear as glaringly. In any case parallax can't work because the movement of the parallax coordinates is completely detached from how 3D coordinates are moved in UM7. The only way parallax movement could work would be if the image was a single-screen still image or possibly if there was just very little vertical movement present (if that's how KaYsEr did it).
 

giuliani

Villager
Member
Joined
Apr 5, 2020
Messages
6
Reaction score
2
First Language
French
Primarily Uses
RMMV
I'm not sure how KaYsEr did it. Since there is very little movement going on, I assume it's probably small enough that the offset issues don't appear as glaringly. In any case parallax can't work because the movement of the parallax coordinates is completely detached from how 3D coordinates are moved in UM7. The only way parallax movement could work would be if the image was a single-screen still image or possibly if there was just very little vertical movement present (if that's how KaYsEr did it).
Thanks for your answer,
that's exactly what I'm looking for, I plan to conceive my game with multiple small maps (about 40*40 maximum), as Kayzer's one, that's why I was aking about how he proceed if parallax doesn't work with UM7.
UM7 could allow me to create a little effect of depth for this type of map (rather than struggling with scale sprite scripts), my reference is Legend of Dragoon map (which is a 3D game with precalculated scenery), I would like to give the illusion to the player that my 2D project could approach this idea.


Ddbg5lvVAAAfqRF.jpg

By the way, it makes me think to another thing, how many small maps a RPG Maker project could handle?
If all the scenery are unique scene with parallax background about 1280*720 and several layers (overlay, shadows etc...), is it too heavy for this type of project?
I'm very new to RPG maker what would you advice to me?


Thanks in advance
 

bblizzard

Veteran
Veteran
Joined
Nov 6, 2017
Messages
317
Reaction score
332
First Language
Croatian
Primarily Uses
RMMV
Maybe @KaYsEr can answer this one for you then. xD

I think RMMV has a max limit of 999 maps per project. It was like that with RMXP, but people made some scripts that allowed you to have more than 999 maps. I'm not sure if RMMV has that kind of plugin so it's best if you try to check that out first.

No, 1280x720 should be fine. I actually use that resolution myself in my own game with a modified (and more performance demanding) version of UM7 and I have no issues with performance in regard to map size or parallax backgrounds.
 

giuliani

Villager
Member
Joined
Apr 5, 2020
Messages
6
Reaction score
2
First Language
French
Primarily Uses
RMMV
Thank you very much for your answer.

I Hope Kayzer could help me a little too ^^
Take Care and be safe

EDIT: Is there a way to prevent the camera to move or, to not follow the player? I would like to get a fixed plane (same as on Kayzer scene)
 
Last edited:

KaYsEr

Koruldia
Veteran
Joined
Mar 14, 2014
Messages
227
Reaction score
455
First Language
French
Primarily Uses
RMMV
Hey @bblizzard ! Yeah don’t worry I’m good with the 48² tiles (already more than enough even for hand drawn pixel-painted stuff tbh) and I was talking about something more like a “3D render resolution” (if it’s applicable here) to get a bit more precision, like in the other 3D plugin on MV using Babylon JS, you might have stumbled upon it, the render is very smooth and we can draw cubes or rotate the angle of sprites. I still prefer your plugin though, because of the 2D approach it has. MV3D is “too much 3D” to the point it defeats the purpose of.. well “not using Unity instead”.

But anyway, I’m telling you just in case you’d like to have a look at it and maybe discover something.

but I upgraded manually to PIXI.js v5 and I upgraded the pixi-tilemap plugin. It took me 3 days to iron out all the compatibility issues with MV and my code.
Wow.. I remember @Jonforum talked about it (https://forums.rpgmakerweb.com/index.php?threads/next-pixi-v5-bench-demo.104272/) here, I didn’t know someone would actually dare to do it. Does it work flawlessly? I mean even for example Yanfly’s plugins etc?!

If it’s the case, you could maybe ask Degica if they want to officially include V5 in a next update. How does it look performance wise, big boost? (Any other big improvement?)

Congratulation!


@giuliani
Salut!

Got your private message, do you prefer if I explain those things to you in French over there or is it OK if I do it here, in case someone else is interested one day?


In a nutshell: Ultra Mode 7 can give you that kind of result if you break down (like a puzzle) your parallax map in a chipset (there’s more than enough “pixel room” for a 720p map so you can even scroll it) and use charsets for the upper layers, you'd have a nice differential effect when scrolling.
Depending on the situation/map (like bigger maps) it can even be better than the “sprite scalling” method I used in that specific map (pumpkins), and you’d have to block the camera (or set boundaries, a new feature Bblizzard added) and put the right camera pitch.

Tell me if you need to know about the other method.. Which is quite time consuming to implement, as if designing that kind of map wasn’t hard enough haha.
 

giuliani

Villager
Member
Joined
Apr 5, 2020
Messages
6
Reaction score
2
First Language
French
Primarily Uses
RMMV
@KaYsEr
Thanks a lot for your answer. Ok, so in the pumpkins map, it was a scale sprite, not only the mode7 ^^
By the way, you confirm that parallax works with Mode7 (at least, I know it could, but I didn't figure it out yet^^)
I didn't aware about the boundaries feature, my fault.

I really appreciate your help KaYsEr, I wish you have sucess with Koruldia, you deserve it.
Take care.
 
Last edited:

bblizzard

Veteran
Veteran
Joined
Nov 6, 2017
Messages
317
Reaction score
332
First Language
Croatian
Primarily Uses
RMMV
Hey @bblizzard ! Yeah don’t worry I’m good with the 48² tiles (already more than enough even for hand drawn pixel-painted stuff tbh) and I was talking about something more like a “3D render resolution” (if it’s applicable here) to get a bit more precision, like in the other 3D plugin on MV using Babylon JS, you might have stumbled upon it, the render is very smooth and we can draw cubes or rotate the angle of sprites. I still prefer your plugin though, because of the 2D approach it has. MV3D is “too much 3D” to the point it defeats the purpose of.. well “not using Unity instead”.

But anyway, I’m telling you just in case you’d like to have a look at it and maybe discover something.
Yeah, at that point it becomes about "why not use Unity instead". xD

Wow.. I remember @Jonforum talked about it (https://forums.rpgmakerweb.com/index.php?threads/next-pixi-v5-bench-demo.104272/) here, I didn’t know someone would actually dare to do it. Does it work flawlessly? I mean even for example Yanfly’s plugins etc?!

If it’s the case, you could maybe ask Degica if they want to officially include V5 in a next update. How does it look performance wise, big boost? (Any other big improvement?)

Congratulation!
Yeah, this is the same topic that I read which gave me the idea. Once I did some deeper research and realized that I can use some very useful new features like mip-mapping for NPOT textures, I definitely wanted to try it.

Unfortunately that guide at the bottom of the topic was only marginally useful. I had to upgrade the pixi-tilemap plugin as well and there were some issues with it, too, to make it work since they changed some fundamental things. And the pixi-picture plugin doesn't work at all with v5 (there is no v5 compatible version available yet on github). That means that all TiledSprite instances have annoying border artifacts unless they have dimensions that a power of two. This means fogs, parallaxes, etc. I think even the default battle backgrounds use TiledSprite for that. Other than that though, things do appear to work normally.
In any case these are probably the reasons why the MV team is reluctant to forcibly upgrade everyone. Even my custom UM7 implementation needed some adjustments to work properly.

I don't use any external plugins (except for an OGG audio loader that doesn't have a delay) so IDK how compatible it would be with most custom plugins. It would depend on how much the plugin uses WebGL directly under the hood (e.g. UM7). Some high level plugins like sprite manipulation, custom windows, custom data systems, custom functionality built upon MV's engine, etc. will probably work just fine. But I assume that some stuff would definitely break.

I haven't done any benchmarking myself so I have no idea how much of a performance boost I got. xD
 

KaYsEr

Koruldia
Veteran
Joined
Mar 14, 2014
Messages
227
Reaction score
455
First Language
French
Primarily Uses
RMMV
@bblizzard I understand, sounds like a huge amount of work, maybe later versions of PIXI5 will improve those incompatibilities. Wow, been a while since the last time I heard about that power of 2 non-sense, considering we’re in 2020.
(Back in the early days of MV 1.0 we'd have blurry parallaxes when non power of 2.. good times!)

Yeah, at that point it becomes about "why not use Unity instead". xD
Exactly, unless of course you find your fun doing some "demo scene" stuff as a personal challenge.

@giuliani Thank you ;)

Well, parallaxes won't have the regular behavior with Ultra Mode 7 (no matter what 3rd party plugin you’ll use), but in your situation, since you want fixed non-scrolling maps, things are a lot easier and you can even use vanilla MV for parallaxes, just add an exclamation point in front of your parallax (!filename.png), and use the vanilla "show picture" command to show your upper layer.

Then you can use Ultra Mode 7 and set the pitch so it matches the artwork on your map (the camera angle), it would be the "easiest" way. And your characters will scale down when going in depth, you can actually see the effect (it’s subtle) in my last video when my MC goes up in the forest, since the camera stops at that point (thanks to the new 'boundaries' feature) you’ll notice his size slightly diminishes.

If you need an alternative method involving another plugin (to have scrolling maps for example, way more difficult though) tell me and I can help in private.

Good luck!
 

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

Latest Threads

Latest Posts

Latest Profile Posts

My spirit can be so easily wounded by most things that nobody thinks twice about. It may be not a big deal to you, but it means EVERYTHING to me!
I have to make a custom tree for my FSM game and I'm nervous I won't get it right.
Finally got the tablet picture! :LZSsmile:
Working hard on my Mode7 interiors in between calls at work!
A good idea rise a moment before falling asleep, and survive the second coffee the day next morning.

Forum statistics

Threads
97,916
Messages
947,857
Members
129,159
Latest member
Nalkam
Top