EasyRPG-NewFeatures / Player

RPG Maker 2000/2003 and EasyRPG games interpreter
https://easyrpg.org/player/
GNU General Public License v3.0
0 stars 1 forks source link

Planned Features and Requests #2

Open jetrotal opened 1 year ago

jetrotal commented 1 year ago

We could throw here some features for discussion or help:


Combine Panorama and Pictures Commands

Basically something like a picture that can display tiled images. Maybe through the entire screen, maybe through a rectangle. tumblr_ncwkx2RcJz1rvenmoo1_500

Possible New Params

Container width=10, container height = fill_screen,
Repeat V = x3, Repeat H = fill_screen, 
Animation V speed = 10, Animation H= 0, 
lock Container to camera? = True

Music/SE - Save Timestamp / Play Audio at timestamp

A lot of people commented through the years that they wish a way to resume music after a battle, instead of restarting it. Seems Plausible. Needs a way to capture current time inside a var, and a way to start at a requested timestamp. This one seems possible by attaching a variable to Memorize BGM and Play Memorized BGM

Message Box- Play audio after x Text characters are displayed? Or Call Event after x letters/words?

Similar to how system audios are changed through commands. Maybe porting this from maniacs hook? Maniacs hook is overcomplex maybe? Text::Draw() or Window_Message::DrawGlyph()?

Message Box - Shift to skip messages/ turbo enter key on messages?

Useful for Dialogs. Edit: doesn't need to be Shift, maybe configurable key. Edit2: Manipulating Window_Message::IncrementLineCharCounter(int width) and setting return value to zero solves it. Maybe? image

Resize Event Hitbox

one basic implementation is resizeHitbox(top,right,down, left)

Get [ELEMENT] by name

@Primekick made some code on his personal project for getting event by name. I wonder how hard would be to expand this concept to other database content.

Summon Event from Another map

Again we already have some work about it.

Run flags: "Run once Per Map", "After Loading", "Before Saving", "After Saving"...

Perfect for parallel process. Maybe could simply be a clone of End Event Process if a condition isn't met. More suggestions are welcome. Edit: This may be partially implemented too: image

Freeze Game

Freeze a layer of game while letting other run. Similar with the alt-tab pause behavior. Good for menus and CBS.

Sort Items by...

A way of sorting items in menu: Name, Type, Quantity...

2k3 Battle - Multiply ATB Speed by x.

Useful for having an experience closer to turn based.


None of those are being worked on right now. Feel free to pick one up or suggesting new stuff.

jetrotal commented 1 year ago

More Suggestions, a bit into the Sci-Fi zone:

SpriteSets

A new folder in your project, where each asset needs:

Then you can attach those special files to anything: Battlechars, charsets, Monsters, pictures, etc... With that you can set up assets like:

image image

VectorSets

A new folder in your project, for SVG files. Vector files stores:

jetrotal commented 1 year ago

Upgrade Show Choices

based on maniacs combo of Text Display Options + Show Choices: image

EasyRPG does not support maniacs/TPC extra features for neither of those entries. But I'd like to suggest expand it beyond of what maniacs can do, with new features, such as:

Switch Between Item Bags?

Since @MackValentine managed to summon the Item screen, could be cool to have a set of different item bags, that can be locked to only switch items.

This could mean both new types of inventories or custom menus only using the items list as its layout. Maybe same can be done with skills, maybe a way of hiding it's quantity or cost could also help improving this concept 🤔

jetrotal commented 1 year ago

Port Kazeui Mode7 to EasyRPG:

image

Made with c++ for DynRPG: Source Code - https://rpgmaker.net/media/content/users/3355/locker/m7src.zip Download Page - https://rpgmaker.net/engines/rt2k3/utilities/55/

Details ``` ================================================ Mode 7 Plugin for RPG Maker 2003 ver 1.00 For DynRPG version 0.13 or higher By Kazesui ================================================ This Plugin allows you to render maps in a style similar to that of the mode 7 protocol on the snes console. In plaintext: it will allow you to add depth to one flat texture, here given by the graphics of the map. WARNING ------------- There are several issues with the current implementation. Make sure to check out the "known problems" section before asking about it in a forum post. Installation ------------- To install the plugin, make sure that you have patched your project with cherry's DynRPG patch which can be found here: http://cherrytree.at/dynrpg Then go to the DynPlugins folder in this demonstration project and copy both the "DynModeSeven.dll" to the DynPlugins folder in your own project. You would possibly want to Copy the content of the "DynRPG.ini" file in the demonstration project folder as well. Instructions ------------- To render a map in mode 7 style you must first call the "load_map_to_texture" command, followed by "init_mode7" command. You will then have to call the "show picture" command with an ID corresponding to your mode7_id. By default, this is set to 1, but can be configured using the "@set_mode7_picture_id" command. Any picture's of the same or lower id as the selcted picture id, will be obscured by the mode 7 rendered map, so choose carefully. Most of the properties of the rendering can be set by comment commands. These are commands invoked by writing them using the event comments in the event command menu in rm2k3. The comment commands can look like this: @add_sprite "castle", "Picture/castle4.png", 64, 64, 1, 1, 15, V1, V2 "@add_sprite" is the name of the command, and the name indicates what happens when called. All that follows the command name are parameters and separated by commas. These specifies how the command should be executed. Any text given as a parameter should be written in quotation marks. V1 is a special type of parameter, which will submit the value stored in Variable 0001 instead of a static number. V2, would indicate variable 0002 being used instead and so on. VV2 can be used as a pointer, where the value would be retrieved from wherever Variable 0002 is pointing at. IMPORTANT Any graphics used during mode7 rendering, must already be present in the project folder. This means that any charset or tilesets being used, must already have been imported. Using RTP which has not been imported will return in errors!! Commands ------------- @load_map_to_texture (none) no parameters / This command reads information on the map from the map file, and stores them for later use. Only one map will be stored in the plugin, so if you wish to render a different map in mode7 style you will have to call this command again. @init_mode7 (text) parameter#1: yes or true to activate, no or false to deactivate. / This command activates mode 7 rendering if active. If you wish to use the picture id associated with mode 7 rendering, you will have to deactive this, as it will otherwise be obscured by the mode7 rendering. @is_mode7_rendering (number) parameter#1: switch id / This commands sets switch of chosen id to on or off depending on whether init_mode7 has been activated or not. When you save a game, the plugin doesn't save whether the map is rendered in mode7 or not, nor any configuration you have mode. By calling this command, you will be able to tell if mode7 is active or not after loading from a file, and can reconfigure the map to render it in proper mode 7 again. @set_mode7_picture_id (number) parameter#1: picture id / This commands let you choose which picture id you want the mode7 rendering to be associated with. by default this is set to picture id 1. @rotate_to (number) parameter#1: angle / Rotates the texture to a specific angle in degrees. default is 270 @rotate_right_by (number) parameter#1: angle increment / Rotates the texture to the right by a given increment @rotate_left_by (number) parameter#1: angle increment / Rotates the texture to the left by a given increment @add_sprite (text) parameter#1: tag (text) parameter#2: filename (number) parameter#3: width (number) parameter#4: height (number) parameter#5: angles (number) parameter#6: animation frames (number) parameter#7: event id (number) parameter#8: x pixel offset (optional) (number) parameter#9: y pixel offset (optional) / Sets the graphic of an event one from a custom spritesheet. Look up "Spritesheet" to see how to format your custom spritesheets. Notice that animation frames has not been implemented yet and must always be set to 1. @change_hero_sprite (text) parameter#1: filename (number) parameter#2: width (number) parameter#3: height (number) parameter#4: angles / Changes the sprite of the hero into one given from a custom spritesheet. Look up spritesheet to see how to format your custom spritesheets. @set_background (text) parameter#1: filename / Selects a background to be shown at the horizon. The background will move relative to rotation and the movement speed is dictated by the width of the background. The background should be at least 720 pixels wide, preferably wider and divisiable by 16. @using_background (text) parameter#1: yes or true to activate, no or false to deactivate / Used to enable or disable the use of backgrounds. If disabled, the mode7 rendering will skip drawing over where the background should be, meanig that you will be able to see graphical objects from beneath the mode7 map, including the original map. This options allows you to use lower picture ids to create your own background, with the greater customisability which comes with it. Enabled by default. @set_wrapping (text) parameter#1: yes or true to activate, no or false to deactivate / Enables or disables wrapping of the map. Must be called if you have a world map which should loop around once you reach the edge of the map. Disabled by default. @set_boundary_texture (number) parameter#1: X coordinate (number) parameter#2: Y coordinate / Replicates a selected tile at the boundaries. Doesn't do anything if wrapping is enabled. @set_texture_scale (number) parameter#1: Scaling factor / Sets the scaling factor of the mode 7 texture. Default is 260 @set_z_value (number) parameter#1: Z value / Sets how height above mode 7 texture. Default is 90 @set_horizon (number) parameter#1: scanline horizon (number) parameter#2: numeric horizon / scanline horizon determines at what pixel line the texture will start being rendered. The numeric horizon determines at what line of pixels will be used for perspective computations. scanline horizon default: 50 numeric horizon default: 25 @set_rotational_offset (number) parameter#1: offset / Sets the offset of the point of rotation into the map. Default is 100 @unload_mode_seven (none) no parameters / Will unload all data related to mode7 rendering. The plugin does this automatically for "teleport" and "recall position" commands, but for other scenarios, you might need to manually unload mode seven rendering yourself to avoid errors. Spritesheet ------------- It's possible to use some custom spritesheets with this plugin. The format of these are given with different angles of the sprite in question being listed horizontally. The first sprite should be facing upwards, and the subsequent sprites should follow clockwise rotation. In the commands related to adding custom sprites, width specifies the width of a single sprite, and angles determine how many sprites are given horizontally. As such, the width of the entire image must be at least angles * width. Vertical alignment is reserved for animation frames, but has not yet been implemented. Known problems --------------- When selecting a tileset in map properties, the first tilset will NOT work with this plugin. Some obscure internal memory problems prevent this, and as such, this is not likely to change anytime soon. ############## When wrapping is enabled, sprites will ocassionaly disappear before having gone out of the screen. this is related to the rather dubious way of how rm2k3 handles screen relative coordinates in a wrapped map. This _might_ be fixed some time in the future. Also, wrapping enabled means that it wraps both ways of the map. Wrapping your map only one way while enabling wrapping, could lead to undefined behaviour and crashing the game. ############## Animation tiles don't animate, as it simply has not been implemented yet. It's will possibly be added in a future version of the plugin though. ############## The map doesn't fade when switching maps or opening the menu. For this, I suggest using a picture to manually cause the fading. You should be able to do this for the menu as well, by disabling it on mode 7 maps, and then have a parallel process check if the player is hitting the menu key, fade with picture and then manually open the menu. ############## Transparency of events does not work during mode 7 rendering. If you wish to make the hero entirely transparent, you should simply create a charset with an empty char, and use this as the hero sprite ############## If further problems are found, you can send me a message on www.rpgmaker.net or www.multimediaxis.de/forums/5-RPG-Atelier. My nickname is Kazesui. ```
jetrotal commented 1 year ago

Move Some vehicles behavior to Game_Character.cpp

image Some of behaviors and animations from vehicles could be moved to the character part of the code. E.g.:

jetrotal commented 1 year ago

Teleport to File Name

image This would open a world of possibilities, including creating a Exclusive maps by users in MMO games like https://ynoproject.net/

jetrotal commented 1 year ago

Picture Mask

A way of making a picture deleting an area of another picture based on its transparency.

E.g.: Picture ID2 deletes an area from Picture ID1, leaving only a transparent shape instead. image

here are some other types of Mask (based on adobe Illustrator Pathfinder tool): image image image image image

florianessl commented 1 year ago

"RunOncePerMap" would be a very welcome new run type. I had a real headache yesterday when testing for a new feature made all sorts of problems apparent in my code. Easiest way to fix all of that would be to have this sort of run type, but I had to settle for workarounds & automatically replacing a lot of event code, to fix all my bugs. (Issue laied out here: https://github.com/VampiresDawnCommunity/VD1/issues/2)

Two details are important for my case: