This thread is for a bit of insight to my ideas and how I'd tackle them.
There's a good chance I'll never make any of these as I barely have any free time at all (I pretty much spend 80% of my time working on my studio's first commercial game and 20% of my time running a game studio - I also work weekends).
This is in the order of how likely I am to actually make the Plugin. Dynamic Per-Pixel Lighting is the only one that people have actively asked me to do, it's interesting that people these days don't care much for Mode 7 but really care about dynamic lighting (back in the old days, everyone wanted Mode 7 in RMXP).
#1 Mode 7 (on the GPU)
Not too long ago I spent an hour of my time and made this here, subsequently posting that thread about why it would never work even with a lot of optimisation, however if I were to cheat and use WebGL it would be blazing fast with the potential for many features.
Earlier I spent a couple of minutes setting up a quick test of WebGL rendering (nothing drawn to the screen, just an API test) and everything went well, so if I had a day or two spare I could make a version that's as good as this little test by MGC but without the Three.js library or any of those ridiculous "core" Plugins that seem to be all the rage right now.
There's a cool optimisation that can be done to speed things up when it comes to those pesky animated tiles; because the entire map is just one big texture it would be ridiculous to redraw animated tiles that aren't even visible, so there would be a visibility test to gather all visible animated tiles (those that are within the view frustum) for animating. The same visibility test would cull sprites as well.
Looping the map would be a difficult one too. What I think would be best is chunk up the map and only draw visible chunks, that would mean more culling and more geometry, but the chunks can be swapped out like a treadmill depending on the focus point's current location. It wouldn't work if doing it based on the camera, unless the world map is wrapped around a sphere (which would cause a lot of warping, so no this is not a good idea).
If I really cared, it would definitely be possible to add basic 3D model support (OBJ, MD2). Would be an interesting step towards a 3D RPG Maker MV. There's a lot that can be done for 3D maps, not sure how much people actually care about 3D.
#2 Dynamic Per-Pixel Lighting
This is currently my most requested Plugin to make and there's been talking of people starting a gofundme or something just to pay me to make this. I have some really excellent ideas about this and a lot can be done depending on how far you want to go.
The first technique to this, which I expect anyone can do, is to use canvas to draw the light masks to a black image with an additive blend, so the lights build up towards a white colour, then (still in canvas) multiply this to the screen. Problem with this method is that it's screen-space, so to make it not cast lights to the UI and other elements you'd have to multiply the shadow map to the tilemap bitmap.
This can be done by injecting into the tilemap renderer or by taking a snapshot of the bitmap and applying it as a post-processing filter (similar to what I do in my old shaders Plugin).
The second technique to this is to use WebGL to do exactly the same, including injecting into the tilemap renderer to get it to apply at the right time.
The lighting would be done with lighting sprites to get a simple example working. Terrible dynamic sprite shadows could probably be achieved in a similar way.
Main advantage of the WebGL technique is more special effects. Things like bump-mapping can be applied, and the map can be read to generate a rough screen-space geometry and dynamic geometry shadows can be achieved.
Geometry for shadows would be estimated by checking how many impassable tiles are above (in the Y screen direction) a passable floor tile until the next passable tile is found, this could be presumed to be a solid wall.
Sprite shadows is something I consider difficult as there isn't a logical way to do side-ways shadows that connect properly. I would expect that blurring the living daylights out of the sprite's shadow mask would alleviate the issues here and achieve soft-shadowing at the same time. I'd make it so you can add a comment to an event page to control how the sprite shadows work.
The way I'd attach the light sources would also be done through event comments. I prefer event comments to that tiny Notes section at the top of the event page because more can be added to comments and some Plugins use the Notes section for their own stuff, I'd rather not break compatibility with these.
#3 Real-time Reflections
This is something I discussed with the dynamic lighting talks that went on a while ago in a different community. I can imagine being able to mask-off areas on the floor to receive reflections, so things like puddles, shiny floors, bodies of water can correctly reflect the sprite-work that's above them (in the Y screen direction). This would be very cool combined with dynamic shadows.
As for wall-reflections (mirrors) I can't see an easy way to do this as some objects in MV simply don't have back-facing sprites and you have no idea what the back of a wall is supposed to look like.
Sprites can be done as they likely have a back face, as can floor tiles as they just need to be flipped upside-down, but walls is a tough one. One idea is to check each tile going down wards from an above-layer autotile (a ceiling) until the autotile ends, then check each of the impassable tiles until a floor tile is reached, then go back N number of impassable tiles and use those as reflected walls.
This would be inaccurate and would fail when the bottom of the map is the ceiling auto-tile itself (as most indoor maps are) but accuracy doesn't really matter in games, as long as it looks good.
Another method would be to take the wall that the mirror itself is on as what the opposite wall looks like. This would work fine as well, but might look dumb if the mirror is actually a window (so there's suddenly a window opposite the window?).
I just can't imagine a way to reflect doodads (things like street-lamps, drawers, beds, etc). May be forced to just draw them as normal and hope it looks alright.
Dynamic lights could certainly be compatible.
#4 3D Battle System
Totally possible with mode 7 so there's a dependency that will need completing first.
Lots of things to consider with sprites. Many frames would be needed. Working with sprites is a real pain.
Something like Hyperdimension Neptunia Re:Birth's battle system could be done, that would be incredible. Or something simpler like Final Fantasy style 3D battles with a moving camera. Even simpler would be Golden Sun style, where the camera's behind the actors and rotates around the field depending on what's going on.
Battle backgrounds would be reused as a floor texture. To define the sky texture, the battle background's lower square portion could be used as the floor, and the remaining upper portion as the sky.
I always wanted a battle system like this back when I used RMXP, VX and VXA, but no-one delivered (3D maps were apparently more desired). Unfortunately, the people who have the skills to do awesome stuff like this are usually using those skills on a more advanced game engine than RPG Maker (which is pretty much the deal with me right now).
#5 3D Ray-cast Maps
Similar to Mode 7. Again, looks like another dependency due to how slow it would be to do this without WebGL.
I actually showed a small demo of this idea working to TheUnproPro, but without the slow-drawing floors (which is what led me to make the mode 7 test to see how slow it actually is). I'd make it so solid tiles are walls, which would mean the entire default tile-set would become useless (once again, lack of sides and back to the wall tiles!).
Again, ray-casting is something I always wanted someone to do on XP, VX, VXA but no-one ever did...
Cool little story; I once made a culling system for the Sony PSP a few years ago that used ray-casting, the actual rendering achieved via the regular rastering. I'd likely do something similar in WebGL for an MV Plugin.
There's a good chance I'll never make any of these as I barely have any free time at all (I pretty much spend 80% of my time working on my studio's first commercial game and 20% of my time running a game studio - I also work weekends).
This is in the order of how likely I am to actually make the Plugin. Dynamic Per-Pixel Lighting is the only one that people have actively asked me to do, it's interesting that people these days don't care much for Mode 7 but really care about dynamic lighting (back in the old days, everyone wanted Mode 7 in RMXP).
#1 Mode 7 (on the GPU)
Not too long ago I spent an hour of my time and made this here, subsequently posting that thread about why it would never work even with a lot of optimisation, however if I were to cheat and use WebGL it would be blazing fast with the potential for many features.
Earlier I spent a couple of minutes setting up a quick test of WebGL rendering (nothing drawn to the screen, just an API test) and everything went well, so if I had a day or two spare I could make a version that's as good as this little test by MGC but without the Three.js library or any of those ridiculous "core" Plugins that seem to be all the rage right now.
There's a cool optimisation that can be done to speed things up when it comes to those pesky animated tiles; because the entire map is just one big texture it would be ridiculous to redraw animated tiles that aren't even visible, so there would be a visibility test to gather all visible animated tiles (those that are within the view frustum) for animating. The same visibility test would cull sprites as well.
Looping the map would be a difficult one too. What I think would be best is chunk up the map and only draw visible chunks, that would mean more culling and more geometry, but the chunks can be swapped out like a treadmill depending on the focus point's current location. It wouldn't work if doing it based on the camera, unless the world map is wrapped around a sphere (which would cause a lot of warping, so no this is not a good idea).
If I really cared, it would definitely be possible to add basic 3D model support (OBJ, MD2). Would be an interesting step towards a 3D RPG Maker MV. There's a lot that can be done for 3D maps, not sure how much people actually care about 3D.
#2 Dynamic Per-Pixel Lighting
This is currently my most requested Plugin to make and there's been talking of people starting a gofundme or something just to pay me to make this. I have some really excellent ideas about this and a lot can be done depending on how far you want to go.
The first technique to this, which I expect anyone can do, is to use canvas to draw the light masks to a black image with an additive blend, so the lights build up towards a white colour, then (still in canvas) multiply this to the screen. Problem with this method is that it's screen-space, so to make it not cast lights to the UI and other elements you'd have to multiply the shadow map to the tilemap bitmap.
This can be done by injecting into the tilemap renderer or by taking a snapshot of the bitmap and applying it as a post-processing filter (similar to what I do in my old shaders Plugin).
The second technique to this is to use WebGL to do exactly the same, including injecting into the tilemap renderer to get it to apply at the right time.
The lighting would be done with lighting sprites to get a simple example working. Terrible dynamic sprite shadows could probably be achieved in a similar way.
Main advantage of the WebGL technique is more special effects. Things like bump-mapping can be applied, and the map can be read to generate a rough screen-space geometry and dynamic geometry shadows can be achieved.
Geometry for shadows would be estimated by checking how many impassable tiles are above (in the Y screen direction) a passable floor tile until the next passable tile is found, this could be presumed to be a solid wall.
Sprite shadows is something I consider difficult as there isn't a logical way to do side-ways shadows that connect properly. I would expect that blurring the living daylights out of the sprite's shadow mask would alleviate the issues here and achieve soft-shadowing at the same time. I'd make it so you can add a comment to an event page to control how the sprite shadows work.
The way I'd attach the light sources would also be done through event comments. I prefer event comments to that tiny Notes section at the top of the event page because more can be added to comments and some Plugins use the Notes section for their own stuff, I'd rather not break compatibility with these.
#3 Real-time Reflections
This is something I discussed with the dynamic lighting talks that went on a while ago in a different community. I can imagine being able to mask-off areas on the floor to receive reflections, so things like puddles, shiny floors, bodies of water can correctly reflect the sprite-work that's above them (in the Y screen direction). This would be very cool combined with dynamic shadows.
As for wall-reflections (mirrors) I can't see an easy way to do this as some objects in MV simply don't have back-facing sprites and you have no idea what the back of a wall is supposed to look like.
Sprites can be done as they likely have a back face, as can floor tiles as they just need to be flipped upside-down, but walls is a tough one. One idea is to check each tile going down wards from an above-layer autotile (a ceiling) until the autotile ends, then check each of the impassable tiles until a floor tile is reached, then go back N number of impassable tiles and use those as reflected walls.
This would be inaccurate and would fail when the bottom of the map is the ceiling auto-tile itself (as most indoor maps are) but accuracy doesn't really matter in games, as long as it looks good.
Another method would be to take the wall that the mirror itself is on as what the opposite wall looks like. This would work fine as well, but might look dumb if the mirror is actually a window (so there's suddenly a window opposite the window?).
I just can't imagine a way to reflect doodads (things like street-lamps, drawers, beds, etc). May be forced to just draw them as normal and hope it looks alright.
Dynamic lights could certainly be compatible.
#4 3D Battle System
Totally possible with mode 7 so there's a dependency that will need completing first.
Lots of things to consider with sprites. Many frames would be needed. Working with sprites is a real pain.
Something like Hyperdimension Neptunia Re:Birth's battle system could be done, that would be incredible. Or something simpler like Final Fantasy style 3D battles with a moving camera. Even simpler would be Golden Sun style, where the camera's behind the actors and rotates around the field depending on what's going on.
Battle backgrounds would be reused as a floor texture. To define the sky texture, the battle background's lower square portion could be used as the floor, and the remaining upper portion as the sky.
I always wanted a battle system like this back when I used RMXP, VX and VXA, but no-one delivered (3D maps were apparently more desired). Unfortunately, the people who have the skills to do awesome stuff like this are usually using those skills on a more advanced game engine than RPG Maker (which is pretty much the deal with me right now).
#5 3D Ray-cast Maps
Similar to Mode 7. Again, looks like another dependency due to how slow it would be to do this without WebGL.
I actually showed a small demo of this idea working to TheUnproPro, but without the slow-drawing floors (which is what led me to make the mode 7 test to see how slow it actually is). I'd make it so solid tiles are walls, which would mean the entire default tile-set would become useless (once again, lack of sides and back to the wall tiles!).
Again, ray-casting is something I always wanted someone to do on XP, VX, VXA but no-one ever did...
Cool little story; I once made a culling system for the Sony PSP a few years ago that used ray-casting, the actual rendering achieved via the regular rastering. I'd likely do something similar in WebGL for an MV Plugin.