Mode 7
Authors: MGCaladtogel
Version: unknown
Type: 3D Map Display
Key Term: Custom Environment System
Important NotesI did NOT make this!Please read the instructions in the script, they contain informations how to use it.
IntroductionThis script can display maps in a type of 3D with depth. It is has a low lag factor.
Features
- draws your map in Mode 7, type of 3D perspective
- less lag than other Mode 7 scripts
- adjustable, even in-game
- optional horizontal and/or vertical looping
- supports animated autotiles
- can use a fixed panorama
- optional "whitehorizon" display to give a feeling of distance
- can resize sprites if on a world map
Screenshots(http://img135.imageshack.us/img135/2207/mode7screenlk0.th.png) (http://img135.imageshack.us/img135/2207/mode7screenlk0.png)
DemoNormal Demo (http://www.sendspace.com/file/yfnezm)
PKE/Dyna Demo (http://www.sendspace.com/file/vtpxr2)
ScriptJust make a new script above main and paste this code into it.
The script can be found in the demo.
InstructionsInside the script in the first comment.
CompatibilityMost probably not compatible with special map display customizations that affect sprites.
Credits and Thanks
- MGCaladtogel
- Blizzard for rewriting the instructions and optimizing the code slightly
It's very good, I consider using it in Chaos Project as well when I sort out the compatibility issues. I will also make a compatbility plugin so it can work with Blizz-ABS since I doubt that it will work with it just like that.
=< I would wait for the fixed version better to try it out.
No, I meant the issues are with my game specifically. That script works great. It even has a very low lag factor. Only the memory usage is a bit nasty with bigger maps. <_<;
I've been looking for a good one and am gonna try it out on my world map now gj finding it blizz
This would be kinda cool with the ABS, but i'm not sure I would use it. I'm goin for the old-school style. It's a great script though. Maybe I'll make a minigame with it...
Awesome work! ;D
So, how did they pull it off? I know they just made the panorama show up at the top for one, then just made all the layer above like 1 be normal, then rendered the first layer?
He/She/They made it the same way I suggested. My idea was the display of a special sprite, the idea here that was used is one sprite per screenline. Surprisingly it doesn't lag as much as I thought it would. I think the sprites could be made more lightweight. This script gave me a good idea of how to make such a script better. I might attempt it some day when I have more time.
this is probly the best mode 7 i seen, verry realistic, exept it lags.
Quote from: BlizzHard on March 09, 2008, 11:01:16 am
It's very good, I consider using it in Chaos Project as well when I sort out the compatibility issues. I will also make a compatbility plugin so it can work with Blizz-ABS since I doubt that it will work with it just like that.
;D Thanx Bro!!! i will make patience for the Plugin for Blizz ABS!
lags a lot less than other mode7's
I agree. It lags way less than mewsterus'.
On my PC running XP with 2.2 Ghz processor and 1 gig ram, I can hardly notice it at all. But this just shows how slow Ruby is compared to other languages, and even then the speed at which Ruby does stuff is astounding sometimes to me. I can hardly imagine the speed of C++/Java...
I have a DualCore at 17.3Ghz with 1GB RAM, it doesn't lag much on bigger maps.
OMGZ 17.3 GHZ AND JUST 1 GIG?????
lol, major typo there...
how do i make things with this script that are long i used it but the back of it is in the air like then tent
Sorry, I don't know if that is even possible with this script. You could try using several events that are flat and floating, but then you'd still have no side walls which will still look weird. >.<
AMD 5400 2x 3.0 ghz with 2 gigs memory and a 256 mb e-PCI card.
In other words, powerful and no lag even on a 500x500 map
hmm... So I'm guessing you'd have to create a cutom tent or any other thing that doesn't look nice on the mode 7? :-\
Mode7 tends to be better for a side scrolling game rather then forward and backward. However if you've ever played FFVI it's the exact same thing that was used on the overworld map. This script is perfect for those 2 main things, but on small maps because of layering and things like that, it tends to have a lot of graphical, and logistical problems.
I suggest using it somewhat sparingly. But if you want to make tents and things like that, just copy it from the tilesets and make a character set for them on say.. a 640x640 (160x160 tiles) format. That should give you the "pop up" feel. When it comes to things like walls at a length, there really is no way to make those look right, but the best way is to have just parts of the wall as individual character sprites (32x32 for those) and it should look ok.
Quote from: WcW on March 11, 2008, 08:21:18 am
On my PC running XP with 2.2 Ghz processor and 1 gig ram, I can hardly notice it at all. But this just shows how slow Ruby is compared to other languages, and even then the speed at which Ruby does stuff is astounding sometimes to me. I can hardly imagine the speed of C++/Java...
So you know ruby is and INCREDABULY slow language compared to C++ the reason is because of how simplified it is. The C++ equivalent of a 3 line Method is probably 9 -10 lines eg. A 2000 line ruby script is 12000 + is C++. I doubt that you could go any simpler with out the need for a photonic transistor in the processer (about 20 times faster than a normal) and that, so you know, has not been invented in a working form yet
Uhm... What's the point of saying that? I already know that stuff. But, think about it, C++ does have some useless stuff about it. A more Ruby-like syntax would benefit it greatly.
I Don't Know just another Random Useless fact
It's true, C++ has a couple of flaws. That's why Java (originally Oak) was made, they tried to use only the good stuff from C++ and kicked out many features. But what they got wasn't that good either, so Microsoft returned the strike and made C# as a Java derivative that has some good stuff added again. IDK how J# came to existence, though. O_o
Microsoft wanted their own, coffee, duh. How dumb a question was that.
But they have C#. (-_-')
If you need someone with BLIZZ ABS to test the future plug in MODE 7 i can help you guys ;D
Ah, THIS was the other Mode7 script I was mentioning now and then. Very nice, isn't it?
@Blizz; love the Important Notes'. And did they correct the credits of 3DPBC in RRR?
Not yet. xD
Blizzard I think this will speed things up abit here MGCaladtogel helped me make some of the compatibility issues between Blizz-ABS and Mode07 by MGCaladtogel go away. The only issue left with Mode7 compatibility is that picking up items is harder (they get bigger and smaller but are in the air!), he's working on the rest but he hasn't replied in a while.
Well here they are 2 scripts :
# Compatibility Mode7 - Blizz-ABS
# 01/04/08 - MGCaladtogel
# mode7 script must be above ABS scripts and this one below all
class Game_Player < Map_Actor
attr_accessor :map_number_x # map's number with X-looping
attr_accessor :map_number_y # map's number with Y-looping
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias initialize_BlizzABS_game_player initialize
def initialize
initialize_BlizzABS_game_player
self.map_number_x = 0
self.map_number_y = 0
end
#--------------------------------------------------------------------------
# * Handle the option : center around the hero
#--------------------------------------------------------------------------
alias center_BlizzABS_game_player center
def center(x, y)
if !$game_system.mode7
center_BlizzABS_game_player(x, y)
return
end
$game_map.display_x = x * 128 - CENTER_X
$game_map.display_y = y * 128 - CENTER_Y
end
end
#============================================================================
class Player_Controller
#----------------------------------------------------------------------------
# passable?
# Checks virtual passability for the minimap.
#----------------------------------------------------------------------------
def self.passable?(x, y, d)
return true if x < 0 || x >= @map.width || y < 0 || y >= @map.height
bit = (1 << (d / 2 - 1)) & 0x0f
[2, 1, 0].each {|i|
tile_id = @map.data[x % width, y % height, i]
if tile_id == nil
return false
elsif $data_tilesets[@map.tileset_id].passages[tile_id] & bit != 0
return false
elsif $data_tilesets[@map.tileset_id].passages[tile_id] & 0x0F == 0x0F
return false
elsif $data_tilesets[@map.tileset_id].priorities[tile_id] == 0
return true
end}
return true
end
end
# Compatibility Mode7 - Blizz-ABS
# 01/04/08 - MGCaladtogel
# mode7 script must be above ABS scripts and this one below mode7 but above Blizz-ABS
#============================================================================
class Game_Character
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
alias update_mode7_obsolete_game_character update
def update
if !$game_system.mode7
update_mode7_game_character
return
end
if !(x.between?(0, 4*($game_map.width - 1)))
difference = 32 * x - real_x
if self.is_a?(Game_Player)
self.map_number_x += difference / (difference.abs)
end
self.x %= (4*$game_map.width)
self.real_x = 32 * x - difference
end
if !(y.between?(0, 4*($game_map.height - 1)))
difference = 32 * y - real_y
if self.is_a?(Game_Player)
self.map_number_y += difference / (difference.abs)
end
self.y %= (4*$game_map.height)
self.real_y = 32 * y - difference
end
update_mode7_game_character
end
end
Note: Both of those compatibilites must be below Mode7. Also Mode7 must be above Blizz-ABS.
This is great! :) Does he care to join the forum? If he has problems during the registration because of the CAPTCHA picture, he can e-mail me and I will pre-register him an account.
Not sure if he wants to join i'm not sure he even knows about this forum, he's only doing the compatibility for me, it's nowhere else except here and in my project. I'll still post it here because this is the most common place for Blizz-ABS thought it would help and it will majorly.
Ah, I see. Ok, no problem. Give him my thanks anyway if you see him. xD
I was wondering if you could please for us with Blizz-ABS finish this compatibility for me because of the fact that MGCaladtogel has stopped replying to me and I think he quit on me :P. He hasn't replied at all this month so could you please complete this compatibility?
I can try, but right now I lack the time to even work on Blizz-ABS itself. I have to write my diploma thesis of 40-50 pages within the next 3 weeks. ._.
Ouch, it's alright take your time education is more immportant than RMXP!
:D .... i try it....and doesnt work for me ...... i hope soon we can have acces to the finish compatibility...
I was able to type down 13 pages of text yesterday. :D
What is the purpose of a Mode 7 script??
Look at the screenshot I provided. :=
I saw it...
Is that it?? What purpose does a different look serve??
Maybe you should simply try it out. -_-
I'd like to try this, but it says the demo files have been deleted.
(-_-') Sendspace's 30 days expired. Oh well, you can just take the script and put it into a new project to try it out. I might put up a demo again later.
Hm, I didn't provide the script. I'll put up another demo ASAP.
EDIT: There you go.
Cheers Blizz. This is a great script. I'll definitely be using it for my world map.
Don't credit me, I didn't make it!
Yeah, I know. I meant cheers for putting the demo up.
If I could understand scripts, i would totally use this!
Do most people use this for a world map??
That is the only reason I would use it. Like in the early Final Fantasy games??
graphic enhancement of the game's atmosphere?
ok can someone kinda help me here. I don't understand the instructions that well but I wanna use this for my world map so I was wondering how I could make this work on ONLY certain maps
Add [M7] and [#XX] to the name of any map you want to use it in. Replace "XX" with the degree of slant you want (ie: 10) on the landscape. There are other options as well, but I haven't really had a good look yet.
Actually, I'm getting an error. This keeps coming up whenever I start a game on a map which
doesn't have Mode 7 activated:
Script 'Spriteset_Map' line 117: NoMethodError occured.
undefined method for `ox='for # <Tilemap_mode7:0x13bf110>
ok i gotta major issue here. When I add the script and all, it works but all of the tiles on not standing up. they are all lying on the ground.
SOMEONE PLEASE HELP ME!
There's a configuration where you can define the upstanding sprites like trees. Take a look at my demo, it uses the terrain tags 1 and 2. Just open the tileset and look how I set the terrain tags.
dude I just realized wtf a tag was!
thank you blizz thank you!!!!!!!!!!!!!!!!!!!!!!!
lol, I stopped using Mode7 a LONG time ago. I was using it for a world map, but the world map tileset is friggin MASSIVE, so I'm not even gonna bother with that. Then I was using it for some of the more epic maps in one of my old games, such as in Deep Crystal, there was a map that was a giant library, but honestly, for me it was more trouble than it was worth to keep playing with it.
Quote from: GuardianAngelX72 on June 21, 2008, 04:05:53 pm
lol, I stopped using Mode7 a LONG time ago. I was using it for a world map, but the world map tileset is friggin MASSIVE, so I'm not even gonna bother with that. Then I was using it for some of the more epic maps in one of my old games, such as in Deep Crystal, there was a map that was a giant library, but honestly, for me it was more trouble than it was worth to keep playing with it.
But there are uses, in my opinion. You can create the Mode 7 format in a new perspective for certain maps, as a dimension or something of that sort. 'Course, I have no good example, but I hope you guys do understand my point here...
ok i have another problem
I added two events to my world map (using mode 7) and the two events are people talking. for some reason, the events aren't even there! I added them in the maps but when I play they don't appear. can someone help me?
Quote from: Lost_Hope on June 21, 2008, 04:18:25 pm
ok i have another problem
I added two events to my world map (using mode 7) and the two events are people talking. for some reason, the events aren't even there! I added them in the maps but when I play they don't appear. can someone help me?
How strange...I created a map with the Mode 7 System and they were there just fine. I made a whole event scene and everything, which was super spiffy...I'll try on a larger map to see if it'll work. If it does, I'll have a link to a demo or something.
ok thx
nvm it works!
Quote from: Lost_Hope on June 21, 2008, 05:02:37 pm
nvm it works!
It worked for me too with a large map. The only issue was that going far too north resulted in an error at Line 215, but that wasn't any concern for me. Now there's really nothing else to do here...*Zips away*
Is the compatibility plugin for B-ABS completed yet? I'm getting an error in class Spriteset_Map when I try it . . .
man this is a great script, i never used any of the mode 7's ive found but this one looked so much better i decided to finally get it, i love it, you even got a layer to stand up to simulate objects like trees, i dont even remember the snes ever doing that
config looks a bit complicated but i guess its worth learning for this awesome script
i give it 7 thumbs up
Hmm . . . it's working fine now. Haven't fully tested it though.
hmm, after having lots of fun with the demo i finally decided to use it, i didnt even add any maps to it yet and it crashes when i try to even run my game <_<
(http://i123.photobucket.com/albums/o296/MightyLink/mode7error.png)
I placed it above blizzards scripts and under the game scripts. What am I doing wrong? I'm not using any ABS or other map modifying scripts.
How I solved that problem (I think) is you need to have a set of commands set up in the script or the map name for the map you are using. You could try that . . .
ya there was already 2 default ones set up
No no what I mean is if you have a map named MAP001 then it will work if you set up one called 'MAP001' or one that works with that map. I haven't tested it with heaps of maps but thats what I did.
Set up the name of my world map, still same error, I don't think its to do with map names.
Hmm weird. Try turning mode 7 off in the config and then add the code for turning mode 7 on in your world map name.
I thought that you said that a Mode 7 script was nearly impossible in your one thread??
For the average scripter, yes. For somebody who knows how to do it, it's not a problem. Not even the new rotating NeoMode 7 isn't. The thing is just that it will create lag regardless. Bigger maps usually become unplayable.
Oh...I understand.
So, you said something about using this Mode 7 in Chaos Project!?
Yeah, I thought about using it for the world map, but I won't do it after all. I'd need to recalibrate the script so it would work with my anti-lag and multi-map slicer for the world map. That would be quite some work.
Hmm...
Not worth it, huh??
True be told. That really would have been something to look forward to.
Still, I might put it together after all for Beta 2 if I find a "better" world map tileset and rework the 2 world maps completely..
It's an awe-inspiring idea.
I simply think "IF YOU HAVE THE EXTRA TIME TO WASTE," then it is certainly something you should do, otherwise...eh.
Exactly my point.
I will wait...=)
is there a mode 7 that works with blizz-abs
Not really. :/
shame :( , i would use it then. owell.
If you make a huge hill, your won't be able to walk behind the hill, if the hill is carried by stone! Fix that?
Umm...How come the water isn't moving?
any chance some1 could rip the x & y looping the over veiw & the center out of this script only if it would be compatiable with babs if not dont worry about it
I noticed that there was a PKE mentioning on the first page. Is that PKE as in Postality Knights Enchanced?
If so, the why?
It's practically the same download, I only changed something in 2 files so you won't have problems running it or opening the project.
Please, could someone tell me how to fix this?
Script 'Spriteset_Map' line 117: NoMethodError occured.
undefined method for `ox='for # <Tilemap_mode7:0x13bf110>
This script is giving me an error message. I opened the demo, and the map that is already there works fine. When I create a new one and set the starting position there though, it gives me this error:
(http://bb.xieke.com/files/mode7.bmp)
No Mode7 Scripts works, they all flatten everything
Honestly, this may be for the best. Unless you were using it for a vehicle or world map segment, I'm not sure using mode 7 with an active battle system would be... a very solid foundation for gameplay.
ABS systems require that the user be able to accurately judge distance between objects in constant motion; Mode 7 effectively warps half of this information given to the player by drawing everything in two perspectives; a "3D" perspective that is an angled view of the 2D tileplane, and the event plane, which draws characters, events, etc. but gives them additional depth via the z-axis. This gives the illusion of objects in the event layer popping up in three dimensions, but also distorts a lot of the visual information that relays speed and depth.
Long story short, using the two together in any kind of scene that involves combat could be a headache for the player. It could very well turn-out to be just fine for the player after they get used to it, and it's a cool idea, but unless you're making a tech demo, gameplay considerations should come first.
Someone should make this compatible with Blizz-abs
@Tyril132: That's true, but I'm using some elements of BlizzABS and not others. For example, I'm making a custom card-based battle system but I'm also using features such as eight directional movement and the customisable image hud (plugin for BABS).
This would look awesome in my project because it's a combination of inside areas, a horizontal street and some other urban areas.
I really hope Blizzard manages to fix this one. :)
I've been retired for several months now. ._.
Quote from: Blizzard on November 01, 2010, 02:24:17 pm
I've been retired for several months now. ._.
Oh yeah, good point.
Well... ahem... anyone else want to give it a go? Pretty please? :naughty:
Sorry im a noob. :^_^': but I was wondering why the mode 7 doesn't work at all!
You didn't necropost, he did. :P
how do you copy the script from the demo?
:O.o: dont judge plz I don't know much
Either copy-paste the text from the demo into an empty slot in your editor, or you can simply open your project and the demo, right-click on the script's name in the list on the left and choose "Copy", then go to your game, right-click and choose "Paste".
I mean like, I try to open the demo project to copy paste the script but it appears: Failed To load actor data
It probably means that actor data is missing from the project, such as a file/folder missing from the demo project.
Do this:
- Create a new project
- From the demo folder, open the "Data" folder
- Copy the file "Scripts.rxdata" from the demo's Data folder to the "Data" folder in your newly created project
- Choose to overwrite when it prompts you to
- Open the new project, and go to the script editor to find the script
- Do what I explained in my last post