Chaos Project

RPG Maker => RPG Maker Scripts => RMMZ Script Database => Topic started by: Blizzard on April 15, 2018, 08:23:32 am

Title: [MZ][MV] Ultra Mode 7
Post by: Blizzard on April 15, 2018, 08:23:32 am
Ultra Mode 7
Authors: Blizzard
Version: 2.1.1
Type: Environment Add-on
Key Term: Environment Add-on

Introduction

Ultra Mode 7 simulates the Mode 7 rendering mode from the SNES by using 3D rendering (hence the "Ultra"). Sprites are scaled appropriately and use additional code to determine whether they are visible, because of cut-off distance. The view of a Mode 7 map is defined by the following parameters:


This work is licensed under BSD License 2.0:
Quote from: undefinedCopyright (c) Boris "Blizzard" Mikić
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1.  Redistributions of source code must retain the above copyright notice,
    this list of conditions and the following disclaimer.

2.  Redistributions in binary form must reproduce the above copyright notice,
    this list of conditions and the following disclaimer in the documentation
    and/or other materials provided with the distribution.

3.  Neither the name of the copyright holder nor the names of its contributors
    may be used to endorse or promote products derived from this software
    without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

You may use this script for both non-commercial and commercial products without limitations as long as you fulfill the conditions presented by the above license. The "complete" way to give credit is to include the license somewhere in your product (e.g. in the credits screen), but a "simple" way is also acceptable. The "simple" way to give credit is as follows:
Quote from: undefinedUltra Mode 7 licensed under BSD License 2.0, Copyright (c) Boris "Blizzard" Mikić

Alternatively, if your font doesn't support diacritic characters, you may use this variant:
Quote from: undefinedUltra Mode 7 licensed under BSD License 2.0, Copyright (c) Boris "Blizzard" Mikic

In general other similar variants are allowed as long as it is clear who the creator is (e.g. "Ultra Mode 7 created by Blizzard" is acceptable). But if possible, prefer to use one of the two variants listed above.

If you fail to give credit and/or claim that this work was created by you, this may result in legal action and/or payment of damages even though this work is free of charge to use normally.


Features


v1.1.0

v1.2.0

v1.2.1

v1.2.2

v1.2.3

v1.2.4

v1.3.0

v1.3.1

v1.3.2

v1.3.3

v1.3.4

v1.3.5

v1.3.6

v1.3.8

v1.4.0

v1.4.1

v1.4.2

v1.4.3

v1.4.4

v1.4.5

v1.4.6

v1.5.0

v1.5.1

v1.5.2

v1.5.3

v1.5.4

v1.6.0

v1.6.1

v1.6.2

v1.6.3

v1.6.4

v1.6.5

v1.7.0

v1.7.1

v1.7.2

v1.7.3

v1.7.4

v1.7.5

v1.7.6

v2.0.0

v2.0.1

v2.0.2

v2.0.3

v2.0.4

v2.0.5

v2.0.6

v2.0.7

v2.0.8

v2.0.9

v2.1.0

v2.1.1

Screenshots

Spoiler: ShowHide
(https://gyazo.com/5f937bb0662bf12c8d5e3c6c2f9c6ebd.png)

Spoiler: ShowHide
(https://gyazo.com/aa106ae3f35e621b6b3a13024cbe4885.png)

https://i.gyazo.com/9c7d3250509a967665e978ea608f46af

Demo

Ultra Mode 7 Demo for RPG Maker MZ (https://downloads.chaos-project.com/scripts/UltraMode7-MZ.zip)
Ultra Mode 7 Demo for RPG Maker MV (https://downloads.chaos-project.com/scripts/UltraMode7-MV.zip)

Script

Script Download (https://downloads.chaos-project.com/scripts/UltraMode7.js)

Instructions

Inside the script in the first comment.

Compatibility


Credits and Thanks


Author's Notes

Make sure to read the instructions and study the demo before asking questions.

If you find any bugs, please report them here:
http://forum.chaos-project.com

That's it! N-Joy! =D
Title: Re: [MV] Ultra Mode 7
Post by: huskytrooper on September 09, 2019, 03:20:24 pm
Hello, thank you for such awesome work.
The plugin works awesomely wonderful, the only issue I find is that the event intended to act as extra map layer are not being attached on the ground when you change the pitch of the map.

An extra plugin parameter to don't rise events by default when pitch is used, plus an event note to lock/unlock from the ground (and maybe also a plugin call) would be really appreciated.

Thank you again and I hope to see these parameters soon.

Kindly regards,
HuskyTrooper.

EDIT: I want to take this moment to report also an issue related with your zooming feature, which works wonderful, but only has very few issues.

This is related with the "touch input path indicator", which isn't resized when you zoom in, is displaced and not attached on the ground.
Spoiler: ShowHide
(https://i.imgur.com/uN7YddR.jpg)


Additionally, for the path indicator, you could, if you want (personally I don't need it, but other people might want it), make an addon plugin to provide to the path indicator two sprites, one which is always attached on the ground much like the default white square, where the user can select any image with many frames they want by just indicating on the file name for example 1x4 to make the plugin recognize as the sprite has 4 frames; and anothers plugin parameter for, for example, provide a second arrow indicator, which isn't attached on the ground, so when the map has a pitch, the players playing from touch devices or with the mouse won't miss where the character is going, also another plugin parameter to limit the amount of vertical tiles where the player may click to avoid "endless click".

Finally, an option to zoom-in the character sight, much like in the next image (which would be wonderful to have specially on bigger resolutions) would be wonderful (sorry about the Paint "lazy" example):
Spoiler: ShowHide
(https://i.imgur.com/ANVWDDQ.jpg)


And maybe a plugin command to make the character rotate like this person did on this video (https://www.youtube.com/watch?v=pUlwKRNMuaE) without the need of parallel process and extra third-party plugins.

Keep up the awesome work.

EDIT2:
Sorry about the long post, maybe everything is too much requesting for you.
The last thing which would be good to fix, is that when pitch is below x (for example, 0, or below 20), the map layers display aren't ignored like on this image (character should be behind the mountain, not above it):
Spoiler: ShowHide
(https://i.imgur.com/ohv2yzR.jpg)
Title: Re: [MV] Ultra Mode 7
Post by: Blizzard on September 12, 2019, 04:13:41 am
Unfortunately making events with tile graphics work is not as easy as it may seem. The map rendering code is completely separate from the sprites on the screen and map tiles in events are rendered as sprites. In order to make them work, a complete rewrite of the sprite system in PIXI would be required to support 3D coordinates properly. Since a lot of code depends on the sprite system, it requires rewriting a lot more other code just to make the sprites work and not break everything else. So this is a feature that I won't be implementing.



Can you explain the event rise? If it's what I think it is, this plugin might help you solve that issue: https://forums.rpgmakerweb.com/index.php?threads/character-anchors.105599/



If you want to use zooming, you should use UM7 directly. Other plugins will likely cause issues, because the map rendering in UM7 had to be rewritten completely so it's mostly incompatible with map zooming plugins.
As for the path indicator, I'll fix that. It slipped my mind to apply proper zooming to it. xD

As for the additional stuff for the path indicator, this can be done as a completely separate plugin and it's actually outside of the scope of this one. I don't actually intend to make any more plugins for MV (except for maybe a good localization system). I mostly shared this plugin since I already created it for my own game and I know that people have been looking for a good Mode 7 script since the RMXP days.



You can zoom into the map by changing the camera Z distance coordinate. The rest requires a little bit of extra coding. I likely won't be implementing it, because it's a very, very specific feature and it changes the controls. I was actually asked the same question recently so you can look up some extra info here in these posts: https://forums.rpgmakerweb.com/index.php?threads/ultra-mode-7.94100/page-36#post-991164



As for the sprite priority, this is yet again a 3D issue. Since mountains are flat tiles and sprites are rendered after/above the map, this isn't fixable in a classic sense. Those are simply technical limitations of essentially using a 3D map in a 2D engine/game. Besides limiting the pitch angles the player can have in the game, I can suggest two ways to go about this:

1. When using a flat map, you might want to consider turning UM7 off for them. That way the standard code for maps will be used and the tiles that appear above characters will be rendered properly.
2. Create events for "upstanding" graphics likes mountains or trees. If you run into event render order issues, this is because MV doesn't use a Z coordinate for render order anymore as RMXP did. This guy had the same problem: https://forums.rpgmakerweb.com/index.php?threads/ultra-mode-7.94100/page-37#post-1000156 and Arend suggested to use MOG Event Sensor to fix it.

I actually had a similar issue in my game. I solved it by limiting the pitch to a value that still makes everything look good while also adding a bit of code to make sure characters are rendered from top to bottom on the screen to create the illusion of depth for sprites (along with scale obviously).
Title: Re: [MZ][MV] Ultra Mode 7
Post by: Blizzard on February 22, 2022, 03:03:56 pm
Legal bump for some breaking news: I added RMMZ support.