That did the trick. Thanks again!
MV3D - 3D rendering for RMMV with Babylon.js
● ARCHIVED · READ-ONLY
-
-
Hm, we’re able to stretch tiles vertically, even to decimal values, using the height() tag. We can also to the opposite and lower it into the ground wot the depth() tag.
Made me wonder, is it possible to stretch or shrink tiles horizontally with decimal values as well (in the directions of north, west, east and south)?
Looking at the documentation I can’t find anything that would hint at this being possible, but I think it would do wonders for creative people in what’s possible to do in regards of mapping.
Maybe another thing which would be worth thinking about adding? If it it’s at all possible that is. -
@KaYsEr
You can definitely enable and disable 3D in the map tag. That's they way I've recommended people do it since I added the feature.
<mv3d>
enable()
disable()
</mv3d>
The plugin command messing things up when used in autorun events is definitely a bug though.
@Parallax Panda
The parallax background can look better if you use one with Loop Horizontal and Loop Vertical, like on the big island map. I agree that a proper skybox would work better though. Possible future feature.
Edit: horizontal stretching is something I don't plan on adding. That kind of detail will have to wait for custom 3d models.
Update 0.4.4.3
mv3d enable shouldn't break map when used in autorun events any more.
Also, I'm thinking about renaming the plugin script from mv3d-babylon.js to just mv3d.js
There's no three.js version any more, so the babylon part of the name isn't needed. Changing the name would cause everyone to have to redo their plugin parameters though. -
Thanks, I was writing a wrong command all along when trying the map-tag method.You can definitely enable and disable 3D in the map tag. That's they way I've recommended people do it since I added the feature.
<mv3d>
enable()
disable()
</mv3d>
The plugin command messing things up when used in autorun events is definitely a bug though.
@CoopNinjask Cool video! Did you notice after the first time you transfer to another map (the first person view forest) when you come back to the main island, "circle shadows" under events are gone, never to come back.
Dynamic shadows look good. I agree custom assets (other than RTPs) could look better, the key would be to embrace the "cube-limitations" of the design and try to “stylized” the GFX.
In other words, GFX less detailed than RTPs could give interesting results. Would probably be the direction I’d go if I end up using the plugin. -
I've been trying to make a flying bird enemy and it sorta works editing yanfly chase events and yanfly scriptcallplugincommand but is there a better way to obtain the current event id in movement route and plugins or even better script, I tried many word combinations of this._RELATIVE_BLEND(e.blendElevation, t[0], i) but I have no idea how to script and couldn't get it to work.
I've been using this in updateChaseMovement
if (this._bird === true) {
if (this.eventId() === 106) {
CallPluginCommand('mv3d @e106 elevation -1 4');
}
}
to make event 106 descend when chasing and the same call in movement route to gain height which I'll probably make a random height script for it. Using trigger(0,1) to make it start combat when reaching the right height. But right now I probably would have to make a chain of map id into each bird event into their individual plugin calls to get it working. I tried @s.
Oh and I've tried var and variables but yanfly plugincommand doesn't like them no matter what you do and it doesn't even work with yanfly pluginswitchvariables.
I did get it working in movement route only with $gameMap.event(this._eventId).targetElevation(-1, 4); or blendElevation or .setValue(-1,4); but no combination work in plugins and all spam errors in console. -
@Parallax Panda
Hi Panda!
I answered your PM.
Now responding publicly: I will release a demo and a tutorial soon, just a few adjustments left. I'll even create a specific topic for this, it will be an add on for anyone who wants to create a game using mv3d as a base.
@KaYsEr
Yes! There is a bug related to this circle shadow and the flashlight that they fade (or erase a part, in the case of the flashlight) when you change map. This bug is something from mv3d itself that I can't change. Let me tag @Dread_Nyanak here to make her aware.
I preferred to completely remove this shadow, replacing the shadow image in "img/mv3d" with a transparent one, as dynamic shadows do a much better job. I kept the original files in the folder for anyone interested in using them when i release the demo. -
I finally got the plugin command script working.
var fly = new Game_Interpreter()
fly.pluginCommand('mv3d', ['@e' + this.eventId(), 'elevation', '-1', '4']); -
Hey, I've been following this plugin since you released it but this is the first time I've had an actual question about it.
First of all--great work! It's good to see some true innovation in this community again.
Second, here's a screenshot of the game I'm making with your plugin...it's a fangame/redux of the classic NES game StarTropics, called StarTropics+, using all of the original graphics with updated VFX.Screenshot
Okay, now on to my actual questions:
1. Is there any planned compatibility with Galv's MapProjectiles? If not, I get it, I'm sure programming MV3D isn't the easiest task to begin with.
2. Can you implement a function where an event can have a 3D tile as its graphic? As in either an event shape (CUBE or something), or just by proxy--setting an event to use a tile graphic automatically uses the tileset config data. As-is, I can manage without this, but it would make certain features (such as disappearing walls) easier to make.
Once again, nice work! Can't wait to see what the future brings. -
@glaphen I favor SRD's version of plugin command evals that he released some time before yanfly's, it allows you to use actual code instead of just switches and variables. since you seem to know your way around code already, that could be more useful for you.
-
It's your friendly neighborhood Fyobro here again to talk more about airship mechanics in Update 0.4.4.2
First of all, @Dread_Nyanak I want to say I love that an optional gliding mechanic is back! So, thanks for that among other things.
I was messing with navigation around event platforms. I like how you are able to fly up to a platform that is within elevation range and it allows you to climb/ascend onto it. But I also noticed that you are able to climb up from underneath when an event platform is a block higher in front of you, thus popping you up through the event. It made me wonder - Is there a way to turn that off without killing the ability to climb onto an event from the side?
BUT THEN I HAD AN IDEA.
With this function, you can stack events on top of each other and essentially create an elevator with it. Maybe you could do something like simulate a geyser that shoots up steam which can push your ships elevation up with invisible events to a higher ground. Hypothetically, you could manipulate elevation even further with events in key points on the map like this.
It's a lot like how the ladder is made in the demo with using <pos(+x,+y)> in notes. Just keep all the platform events set to the same height and they'll stack upward on the same tile. Moving an event that is set to height(4) on top of an event set to height(2) will put it 4 blocks high over the first event, 6 total from the ground level.
Anyway, this is just what I have found out in my testings and figured I'd share if it's something that needs to be handled or not. Maybe there could be an option to toggle the ability to pass through events from the bottom or not in event notes. Again, idk how it affects approaching events from the sides too. Made another YT video below to help show what I mean.
-
Here's this bird script if anyone wants it, needs yanfly moveroute and event chase and put below, to use I made a movement route to fly randomly with script call and a setting to say it's a bird, also a random script since move route one is different than event settings one. I also remade the sightLock system so it makes enemies leave after x frames even when in sight instead of constantly refreshing unless out of chase conditions.
For the one test event I made it uses this move route.
Script: Random
Script: Random
Script: Random
Script: Random
Script: FlyRand
this._chaseRange = 5
this._chaseSpeed = 5.1
this._seePlayer = false
this._sightLock = 300
this._bird = true
this._returnWait = 200
this._returnAfter = false
Event notetag I have it as <Always Update Movement><mv3d:trigger(0,1)> as an above event with event touch. Only problem I see is there's a bug or something that forces you to use first page as just self switch D and second page with D being an autorun with the actual fight, took me another hour and a half to fix that, otherwise if you just stand still the fight won't trigger and bird will eventually leave. I'm not sure how well it works without through on right now since mv3d seems bugged and you can't walk through the birds without it. Oh and use highest frequency.
And as for the bug it seems to be that you just can't walk under above events at any height right now, doesn't even need z.
Oops said self switch D but somehow it's set to A easy to switch if you want to.
Uploaded new version with D self switch and fixed distance to trigger since changing to Walk on Events seems to have changed it. Also probably better with trigger(0,0). Forgot to turn off through, seems like it lags horribly when chased if the event doesn't have through on or pass(*). So turn it on through if you want the bird to fly over other objects regardless of stair threshold or pass(*) in notetags if you want it to not.
Uhh just realized it lags badly on non birds as well, and with plugin off it still lags, so I guess mv3d broke yanfly event chase player recently. Testing why it seems to have to do with collision, if you turn events to below or pass(*) it won't lag and you don't really need same as for chase events. Actually seems to be both collision and platform, if you turn off both it doesn't lag, if either is on its jittering for me at 30 FPS. But both off with collide(false) or pass(*) work but platform(false),collide(0) don't work. NVM it does work I accidentally wrote collision, it's just collision not platform.
I think I found the problem line in updateChaseMovement.
var direction = this.findDirectionTo($gamePlayer.x, $gamePlayer.y);
If I change it to 2 it doesn't lag, but then it just goes foward over and over, no idea how to fix it at all but it's something to do with that line.
It's definitely the problem if I make a custom move route on an event with just
this.findDirectionTo($gamePlayer.x, $gamePlayer.y);
on repeat I get like 3 fps as soon as I enter the map, doesn't even move the event with it though.
Oops forgot to copy and paste something into plugin so it didn't let it chase again after in last upload.
Also as for this.findDirectionTo($gamePlayer.x, $gamePlayer.y); it is does it in demo even, but if collide(0) it doesn't lag.
Ok for some reason it isn't flying up anymore for me, I didn't change anything over night and settings look the same so I have no idea ATM.
I managed to get it working again, I have no idea why, but somehow overnight
var RNG = Math.floor(Math.random(150) / 10)
stopped working yet I change it to
var RNG = Math.floor(Math.random(15) * 10) / 10
and it works??? Worked yesterday. -
@glaphen dread_nyanak mentioned earlier how to make events passable without setting them as through, and even added the usual passability code from tiles to them to make it easier. is your version of mv3d updates? did you use any of those settings and they still didn't work?
-
@glaphen dread_nyanak mentioned earlier how to make events passable without setting them as through, and even added the usual passability code from tiles to them to make it easier. is your version of mv3d updates? did you use any of those settings and they still didn't work?
Ok I figured out what causes it, I had Walk on Events off in my game somehow, so it's bugged with Walk on Events off and makes above events impassible. Not just above any height difference, I don't really care to test since I don't plan on using it off. Actually you can walk through belows. Also only non flat events. -
Hi, guys!
The Environment System is done.
It was all made using mv3d as a base.
I recorded a video for you!
A big hug! o/
Just wanted to say that looks fantastic and can't wait to try your demo! -
@Dread_Nyanak and @Zekken and whoever else said they wanted SRD's Character Creator Ex compatible with this...
I did it! It was complicated, stressed me for a bit and everything, but now I tested it and I'm pretty sure all CCEx does on normal sprites this one allows with the 3d characters.
It was not easy, but actually doing it is so satisfying...
I put all CCEx plugins, that is SuperTools, the original and my enhancement plugin (but I'm pretty sure you won't need it), above mv3d, and this one bellow it. -
Ok I think I fixed all problems, here is probably final version and a no chase version, if you don't want to use movement core then just delete the Game_Character.prototype.processMoveRouteScriptCall = function(line) {
line of code and use this.flyRandom or this.Randommove in move route script. To edit it more you can change the RNG or even replace it with a variables with like var RNG = $gameVariables.Value(whatever variable); can also copy the paste everything with different values and different calls easily enough. I also have a leash set with
if (this.z >= $gamePlayer.z + 5) {
Can delete the code of the if or change the + to different things or add - if you want them to be able to go below MC. I also fixed the descent since it always went to the floor, but I kept the chase to that, change if you need. Also fixed the returnAfter = false, now it will stay in place and still be possible to chase again after time set. This is designed for 1080p or high pitch, otherwise you probably wouldn't look good or right.
Here is a flock of Harolds.
Spoiler
I feel I should clarify how to make more move scripts for flight.
CodeCode:Game_Character.prototype.flyRandom = function() { switch (Math.randomInt(8)) { case 0: case 1: if (this.z <= $gamePlayer.z) { this.ascend(); break; } this.descend(); break; case 2: case 3: case 4: case 5: case 6: case 7: if (this.z >= $gamePlayer.z + 5) { this.descend(); break; } this.ascend(); break; } }; Game_Character.prototype.ascend = function() { var fly = new Game_Interpreter() var RNG = Math.floor(Math.random(15) * 10) / 3 fly.pluginCommand('mv3d', ['@e' + this.eventId(), 'elevation', '+' + RNG, '0.853']); }; Game_Character.prototype.descend = function() { var fly = new Game_Interpreter() var RNG = this.z - Math.floor(Math.random(30) * 10) / 3; fly.pluginCommand('mv3d', ['@e' + this.eventId(), 'elevation', '' + RNG, '0.853']); };
All you have to do is copy and paste those 3 and change the names like Game_Character.prototype.flyRandom and Game_Character.prototype.ascend and change them to like say Game_Character.prototype.Batascend and Game_Character.prototype.BatflyRandom then change the names in the code from the previous ones then change this.
fly.pluginCommand('mv3d', ['@e' + this.eventId(), 'elevation', '+' + RNG, '0.853']);
Change those numbers to whatever you want, best to change them through that var RNG = with like this.z - or + a number. The last number is the time it takes to complete so 0.853 seconds changing it to higher will make it longer and more smooth kinda. Changing this if (this.z >= $gamePlayer.z + 5) { will change leash so I made it so if it reaches 5 z higher than player it will instead descend, and if it is equal or lower it will ascend. Can change the frequency of ascent or descent by changing the switch (Math.randomInt(8)) { number and adding case:x to that line until 1 less than number is all filled. This shouldn't lag game in the slightest even with 1000s of different script calls for movement routes for specific flight patterns. If you do that though probably better to use the specific call in script like this.BatflyRandom(); and just delete the yanfly movement core part of the code.
EDIT: bug fix since I just realized sight required don't chase if you turn and forgot to make only birds fly when returning. -
@Dread_Nyanak
so yeah, after I finished the mv3d-CCEx compatibility patch, that gave me quite a bit of work, I downloaded the latest version and the problem someone else mentioned still happened...
When you change maps, if you are still pressing a key,you'll keep walking in that direction.
For example, in the original big map, when I went to the forest without changing the camera, I was still pressing left when the transfer happened... so in the map itself I kept straffing to the left no matter my direction.
Same happened when going from a 1st person to a 3rd person map, so I immagine it will happen in any combination if a key is still being held when transfer happens... -
@glaphen What is the difference between that two plugins?
-
@glaphen What is the difference between that two plugins?
One is using yanfly event chase players to make birds descend and enter combat when near player,ect, also changed sightLock to make enemies stop chasing after x frames instead of always chasing unless out of range for sightLock frames, other is just the movement script. To use chase player you need to set it to trigger(0,0) in notetags and turn on self switch D as touch event, 2nd page should require self switch D and make a battle event happen with parallel or autorun. Top of page shows movement route example used. Also mv3d broke yanfly event chase players so you need to set it to through, pass(*), collide(0), collide(false), below event, any one of those things if you want to use it on every event with chase. Through lets it ignore stair threshold while the rest don't but you can move through it, which if you are making them combat events it doesn't make too much of a difference. -
So what is the usage of the bird. It's just a normal bird that fly and give a realistic environment, or the bird is a enemy?One is using yanfly event chase players to make birds descend and enter combat when near player,ect, also changed sightLock to make enemies stop chasing after x frames instead of always chasing unless out of range for sightLock frames, other is just the movement script. To use chase player you need to set it to trigger(0,0) in notetags and turn on self switch D as touch event, 2nd page should require self switch D and make a battle event happen with parallel or autorun. Top of page shows movement route example used. Also mv3d broke yanfly event chase players so you need to set it to through, pass(*), collide(0), collide(false), below event, any one of those things if you want to use it on every event with chase. Through lets it ignore stair threshold while the rest don't but you can move through it, which if you are making them combat events it doesn't make too much of a difference.