RPG Maker PY (RMPY)
A Replacement RMXP Editor
I've created a github project for this endeavor https://github.com/Ryex/RPG-Maker-PY (https://github.com/Ryex/RPG-Maker-PY)
There are numerous problems with RMXP. they are mostly small but they add up quick.
So I was inspired to create a new
editor for the RMXP engine. one that isn't riddled with annoying limitations, avoiding all the shortcomings of the original.
I'm going to make it in Python, as such it will be cross platform. you will be able to edit the game on any platform that can run Python and wxWidgets.
I've already got a plan down for how it will work and I've got some basic code for the map editor and data done.
the purpose of this topic is to. 1) collect suggestions for things that potential users would like to see done different in the RMXP editor, and 2) perhaps recruit people to help with the project (if you would like to help PM me)
SuggestionsI need a list of all the issues that would need to be addressed. all the little thing that could of been done better.
If there is something you would like to suggest please use this format:
Issue Title: Title (give your suggestion a descriptive title so I can identify it in long topics)
Description: What is wrong. (what part of the RMXP editor could of been done better?)
Suggestion: How it could be fixed. (if you were to fix it how would it work?)
also please separate the suggestions from each other and from the rest of the post with at least one blank line.
here is the bbc for that format
[b]Issue Title:[/b] Title
[b]Description:[/b] What is wrong.
[b]Suggestion:[/b] How it could be fixed.
I have some rules/guidelines for what to suggest as there has been some stupidity and misunderstandings.
Rule 1: anything that would require editing the default RTP scripts included with rpg maker will not be considered.
Rule 2: don't be stupid. in other words I reserve the right to condemn a suggestion as stupid and pointless as there are some things that while they may be cool to someone they wouldn't add anything of value to the editor as a whole.
Rule 3: all suggestions must be limited to the editor that means the part of the program the edits maps events and item/armor/monster database stuff. no new functions like the ability to change the resolution, add mode7, add faces set, add better audio ect.
I will keep a running list of suggestions at the bottom of the topic.
also this topic is open for discussion/comments. feel free to express your op here
Photobucket album with updated screen shots of progress
http://s15.photobucket.com/albums/a400/ryex/RPG%20Maker%20PY/
Features requested so far:Undo/Redo support
Text Entry Limitation Fix
Collapsing event commands
Paint style Tileset set up
Preview a map in the editor
test passibility on a map in the editor
enhanced map tools: replace tiles, find tiles, select tiles form all over the tiles set to form a costume brush
a simple debugger for the script editor (find missing ends, ), } or tell you if there is to many)
enhanced event editor, ability to type out event code if you want
batch switch and variable replacement, replace switches and variables used in events with another in case you changed the uses of said switch or variable
virtual folders or groupings for organization of lists in the database
make weapons and armor equip-able by classes by groups
better batch text processing. can help you know when a line will run over by what font and size your using
wysiwyg editor for show test that can do mark up
better map zoom options
NOTICE:
Chaos-Project has started a communality project to create Advanced RPG Creator (ARC) (http://forum.chaos-project.com/index.php/board,68.0.html).
As I'm now one of the four core developer sworking on ARC this project has become redundant. the projects are merging and RMPY will form the base of the ARC editor. nothing has been lost, in fact much has been gained. now there are 4 people working on the project and it will come with a new better engine instead of just a better editor.
I hope people aren't disappointed because I'm not.
all the best ~ Ryex
I think it would be simpler to just make a new RM rather than patching up RMXP.
the editor after I make it could easily be patched so that it could create maps for a new RM made in Python, but first I want to make the editor.
Issue Title: Title Screen Thingy
Description: In RM2k3/RM2k you could change the words for the three selections on the title screen (Start, Load, Shutdown) in the database, you could add an option like that.
Suggestion: do what i said in the description.
sorry but I'm gonna have to say no... this is accomplished through VERY easy RGSS, and should not be part of the editor. if you want to change what is says just go into the script editor and press crtl+shift+f and search for what you want, and change it.
i know its very easy RGSS, i even knew how to do it, but i thought you should add it for people who havn't the faintest idea about RGSS
That IS a good suggestion, but anyone who will end up anywhere with RMXP/VX is a member of a forum. One quick question or search would also solve this problem for them. Though I AGREE 100% that this was a good idea.
the reason I said no was
a) if some one asked on any forum they would receive a quick answer
b) implementing it would mean the editor would have to modify the default scripts which would only work if the person was using the default scripts other wise it would cause errors.
yes sir yes sir.
I'll ponder on things and let you know if I come up with anything.
you should be able to get the framerate up to 60 and take away all lag caused by events and big maps without much trouble.
Issue Title: Engine Performance
Description: RMXP feels like it was built in the 90s. While the retro feel is nostalgic, it also sucks for game playing.
Suggestion: You should be able to get the framerate up to 60 and take away all lag caused by events and big maps without much trouble.
What would be the importance of a higher framerate?
This is a legit question. Like...what will that accomplish? Just smoother gameplay?
Quote from: winkio on September 07, 2010, 11:40:50 pm
you should be able to get the framerate up to 60 and take away all lag caused by events and big maps without much trouble.
Issue Title: Engine Performance
Description: RMXP feels like it was built in the 90s. While the retro feel is nostalgic, it also sucks for game playing.
Suggestion: You should be able to get the framerate up to 60 and take away all lag caused by events and big maps without much trouble.
woh hold on a second. I'm only going to make the editor (at least for now) not the engine. frame rate has nothing to that...
@Calintz yes if the engine for rmxp were able to get up to 60 fps game play could be a LOT smother.
in any case I'm testing the AUI environment as a platform for the editor. I'm thinking that mapping could be a lot better if you could see several maps at once
so here is a screen shot, for now that map editor's place is being held by textcrtl's but the not book tabs can be slit and rearranged inside the map area any way you want. each tab would be a different map
(http://img191.imageshack.us/img191/8215/capturewg.png)
Ryex, I love you.
Title: Redo button.
Description: The editor doesn't have a redo button.
Suggestion: Add a redo button (or make a very long process for redoing, whatever seems more obvious :D)
Title: Faces.
Description: The editor doesn't support faces.
Suggestion: Make face capability?
Watch this space, because I've encountered quite a few more. As a suggestion, perhaps go through the things that make VX good and slot them into your new editor? I'm thinking things like the quick event maker, the dungeon generator (though xas made their own one which is very useful).
Redo > Will do.
Faces > sorry but this is RGSS dependent
Quote from: Ryexander on September 08, 2010, 04:04:52 am
Redo > Will do.
How the makers of rpg maker didn't think of this I don't know. It drives me mad when I think 'hmm that's wrong' *hits back* oh s**t I needed that.... ok... lets go again...
Wait, this is just the editor? Then i agree with what Blizz said.
Quote from: Ryexander on September 07, 2010, 06:19:21 pm
the editor after I make it could easily be patched so that it could create maps for a new RM made in Python, but first I want to make the editor.
I think it's up to Ryex what he wants to do, I really wouldn't mind a new editor and if he decides he wants to make a new engine to go with it, then having a new editor while we're waiting will be pretty good.
Issue Title: Text Entry
Description: The limitations on how many characters can fit in the box is extremely annoying. (especially if you're using a custom message system, or a smaller font).
Suggestion: Don't have a max character per line thing. You should put a "recommended width" line (it'd be REALLY cool if you could tell it what font you're planning to edit the scripts to use, and it'll adjust the line, but that sounds hard), but allow the user to write a lot further past that line than is allowed in RMXP.
This wouldn't edit ANY scripts, so it shouldn't be an issue :D
Seconded.
Quote from: The Niche on September 08, 2010, 11:35:46 am
Seconded.
Thirded. I hate that.
Also, I don't know if this falls in the "stupid" category, but:
Issue Title: Editor open during Debug.
Description: Can't have script editor open during playtesting.
Suggestion: Make it so you can.
Quote from: ForeverZer0 on September 08, 2010, 12:13:55 pm
Issue Title: Editor open during Debug.
Description: Can't have script editor open during playtesting.
Suggestion: Make it so you can.
Quote from: legacyblade on September 08, 2010, 11:31:31 am
Issue Title: Text Entry
Description: The limitations on how many characters can fit in the box is extremely annoying. (especially if you're using a custom message system, or a smaller font).
Suggestion: Don't have a max character per line thing. You should put a "recommended width" line (it'd be REALLY cool if you could tell it what font you're planning to edit the scripts to use, and it'll adjust the line, but that sounds hard), but allow the user to write a lot further past that line than is allowed in RMXP.
This wouldn't edit ANY scripts, so it shouldn't be an issue :D
Text entry > will do
Editor open during Debug > well i'm not sure if I'll actually include play testing but... just one question by open do you mean that you want to be able to edit the scripts live? if so thats not possible. you could edit the scripts but they would not be applied to the game
Seconded. Debug running should still allow you to use the editor.
Just got the concept there. But yeah, it should be included. It means you can edit things as you notice them, so you don't have to actually use your brain :V:
The advantage is that you can fix stuff immediately and don't have to restart the game.
In honesty ...
This should be top priority.
Debugging is arguably more important than everything else.
Being able to correct mistakes as they show themselves is a huge step forward ... thirded.
so. the ability to correct errors in the editor while playing the game. the change wouldn't evidence until the game was restarted though.
in any case this is intended to be cross platform so in truth it will edit data and export that data to rmxp format. I'm not even sure how I could get the game.exe to start with $debug outside of the real RMXP... my point, the editor will always be able to edit the data but you will have to export the data files and restart the game before you can use the changes
No,we don't want the game we're playing to be updated. At least, I think that's what you're thinking.
Yeah, there is no need. You can apply changes once the game has been restarted. Though, maps can be reloaded on the fly. If you leave and reenter a map, the changes will be there. In fact, I had a button for reloading all game data and reloading the current map while working on CP. Only script changes required restarts.
You can tell the game to run in debug mode from the command line: (Doesn't work with encrypted archives)
Just make sure you pass on that command when executing the process.
Quote from: Ryexander on September 08, 2010, 02:02:44 am(...)
@Calintz yes if the engine for rmxp were able to get up to 60 fps game play could be a LOT smother.
(...)
The engine supports a framerate in the 20..120 range.
*hugs*
believe me when I say I've tried getting the rmxp engine to go up t0 60 fps and it can't. it maxed out at 49-57 and was rather unstable (at least on my computer, and mine is fairly good, I've played Crisis on med graphics with it)
btw thanks for the debug thing Zeriab!
Issue Title: Fullscreen stretching
Description: When you fullscreen on a wide screen monitor, things stretch pretty bad. If you've got a huge wide screen monitor, it looks horrible.
Suggestion: Since the fullscreen is handled by something other than the scripts, it'd be nice if you set up a way that it'd englarge it while keeping the proper aspect ration (and just showed black at the sides if the screen is too wide).
Though I think this crosses the line into a new game client, rather than something to do with the editor. However, if you DID make a new game.exe, it'd give you a lot more freedom. Including the ability to make RMXP games multiplatform. (not to mention, being able to name it something other than game.exe and still run encrypted files) I totally understand if this request goes outside your scope, but it'd be cool if you were able to keep the fullscreen aspect ratio the same.
ya I'll keep it in mind for if and when I decide to make the engine too
also I'm renaming the project to RPG Maker PY (RMPY)
Don't do the fullscreen stretching. You can set up in your graphic card control panel whether to stretch, add borders or not change the resolution at all.
so. I've basically got the UI laid out, next I'll start on implementing data structure and after that work on drawing maps ect.
I'm using AUI so the user can move windows tabs and panels around all they want kinda like blender's interface
any way I've added a public album to my Photobucket account for screens, they have descriptions so read them and look at the examples of what you can do
http://s15.photobucket.com/albums/a400/ryex/RPG%20Maker%20PY/ (http://s15.photobucket.com/albums/a400/ryex/RPG%20Maker%20PY/)
Quote from: Ryexander on September 08, 2010, 05:58:40 pm
believe me when I say I've tried getting the rmxp engine to go up t0 60 fps and it can't. it maxed out at 49-57 and was rather unstable (at least on my computer, and mine is fairly good, I've played Crisis on med graphics with it)
It certainly can. Here is an event which makes fine-grained testing easier:
(http://img294.imageshack.us/img294/4765/framerateq.png)
The range is actually 10-120 and not 20-120 >_>
Naturally a higher FPS means less time to process each frame. Less junk on the map is needed for slowdowns.
That the FPS was in the 49-57 range is interesting because indicates that at that point the game would probably cause slowdowns or lag for slower computers.
I am sure you would have discovered the problem if you had opened the Task Manager to keep track of resource usage. (Memory+Cpu)
Quote from: Ryexander on September 08, 2010, 05:58:40 pm
btw thanks for the debug thing Zeriab!
your welcome ^^
*hugs*
no I mean that when I tried that with just the player on the map the engine couldn't get above 57 and when I moved the player it dropped down to 49
How much GHz does your CPU have?
EDIT: Per core, not the sum of your GHz. RMXP uses only one core.
2.5
Weird. I could run it rather ok on 1.73. O_o
Just checked out the pics of the UI. Looking good so far. ;)
Quote from: Blizzard on September 09, 2010, 11:17:18 am
Weird. I could run it rather ok on 1.73. O_o
hmm one sec I want to check something...
ok it seems that if you have the reduce screen flickering option set it limits the fps to 60 (this causes Lag galore)
without it it was able to get up to 108fps but was incredibility unstable randomly dropping to 1 fps or any where in between
i set the fps to 60 with no reduce screen flickering and it was far more stable but it was still wavering between 35 and 58 more than it was at 60
That's because screen flickering off causes the game to render every 2nd frame only thus keeping a virtual frame rate of 60 (even though it's only 30).
These are probably engine related but would be great I think if you decide to mod it...
Issue Title: 2xSal filter when stretching to full screen.
Description: Would make a full screen game look better.
Suggestion: This and similar filters are freely available...
Issue Title: Halfed tiles
Description: If applied would make any game look better and less like a grid and add more realism. This is what SNES and GBA games use.
Suggestion: A grid of four 16x16 tiles would be treated as one 32x32, and alignment of player and events would be to the top right tile of four half tiles.
Quote from: poxysmash on September 09, 2010, 08:34:35 pm
These are probably engine related but would be great I think if you decide to mod it...
Issue Title: 2xSal filter when stretching to full screen.
Description: Would make a full screen game look better.
Suggestion: This and similar filters are freely available...
Issue Title: Halfed tiles
Description: If applied would make any game look better and less like a grid and add more realism. This is what SNES and GBA games use.
Suggestion: A grid of four 16x16 tiles would be treated as one 32x32, and alignment of player and events would be to the top right tile of four half tiles.
that first one is probaly engine related, but idk.
the second one, Seconded, it would make games look ALOT better.
Quote from: poxysmash on September 09, 2010, 08:34:35 pm
These are probably engine related but would be great I think if you decide to mod it...
Issue Title: 2xSal filter when stretching to full screen.
Description: Would make a full screen game look better.
Suggestion: This and similar filters are freely available...
Issue Title: Halfed tiles
Description: If applied would make any game look better and less like a grid and add more realism. This is what SNES and GBA games use.
Suggestion: A grid of four 16x16 tiles would be treated as one 32x32, and alignment of player and events would be to the top right tile of four half tiles.
sorry both of them are engine dependent. how could you think they weren't? even possibly?
in other news. I just finished writing the RPG module out in Python as well as the Table and Color class. wow that took a long time. though most of it was eaten up by writing the Table class. I had to learn the proper python way.
I just had a thought, though maybe it wouldn't be run by the editor, though I would think it would be.
Anyway,
Issue Title: Conditional branches like spoilers
Description: It's annoying when you have a big long, complicated event, and you can't close up conditional branches.
Suggestion: Like, you could click on the very left of a conditional branch, and it would close and open like spoiler tab in forums, to make it easier to scroll up and down, seeing only the parts you WANT to see. You could even make a little check box aswell, so that people who didn't want to use it could turn it off. :haha:
Quote from: Ryexander on September 10, 2010, 01:42:07 am
sorry both of them are engine dependent. how could you think they weren't? even possibly?
I didn't, really.
Quote from: Ryexander on September 09, 2010, 01:35:50 am
ya I'll keep it in mind for if and when I decide to make the engine too
When I read this I decided to post my off-topic suggestions.
But half sized tiles are possible editor side, albeit thru an overly complicated, unrealistic and space consuming way:
Basically, you would draw maps with half tiles (quarter tiles, really). The editor would generate these into tilesets for each map before playtesting. The tilesets would then show up in the database.
Alternate way requires less disk space: Each map is assigned a standard tileset as normal. In addition there is a global quarter tile tileset. User has the option to break a standard tile on the map into quarters and draw them in. The editor appends the quarter tiles (from each map that uses the same standard tileset) to the standard tileset of that map. I personally could find a use for this, but realize its not practical.
For both methods terrain tags could be set by drawing them in in the map editor (ie, there is a flag layer that can draw over quarter tiles). This brings me to my on-topic idea...
OT:
Issue Title: Tileset Flags
Description: It's tedious clicking every single tile in every single map to set all the flags.
Suggestion: Instead a draw flag mode could be used. In the database, select flag type to draw (passability, 4-way, priority, etc) and a flag draw selection (true, false, priority #, etc). Would also be sweet if they made a color coded overlay, to better see all the detail.
Half tiles are still part of the engine. If the engine doesn't support half tiles properly, no editor hacks can really help you (at least not in a productive way).
Quote from: Karltheking4 on September 10, 2010, 06:05:50 am
Issue Title: Conditional branches like spoilers
Description: It's annoying when you have a big long, complicated event, and you can't close up conditional branches.
Suggestion: Like, you could click on the very left of a conditional branch, and it would close and open like spoiler tab in forums, to make it easier to scroll up and down, seeing only the parts you WANT to see. You could even make a little check box aswell, so that people who didn't want to use it could turn it off. :haha:
Quote from: poxysmash on September 10, 2010, 06:18:49 am
Issue Title: Tileset Flags
Description: It's tedious clicking every single tile in every single map to set all the flags.
Suggestion: Instead a draw flag mode could be used. In the database, select flag type to draw (passability, 4-way, priority, etc) and a flag draw selection (true, false, priority #, etc). Would also be sweet if they made a color coded overlay, to better see all the detail.
hmm those are too very good ideas!
I'll do my best to implement them.
EDIT:
ok. at the moment I'm working on a ruby script that can import RMXP data to an xml format so it can be read by RMPY when I'm donw ther will also be a version that goes from the xml format to RMXP data.
the thing it that while so far i'm successful the resulting file is 10 times as big as the XP version. I'm converting it to a raw xml file. would it be a good idea to compress it with Gzip from Zlib?
EDIT:
HOLLY SH*T! Difference in size between gzip output and not 18 kb > compressed, 1580 kb > uncompressed
Hey, Ryex, it would be better if you just used Marshal for serialization in Python. I think there is a library for that.
if there is I couldn't find it, I tried.
in any case I got it to work perfectly on the ruby side... it is just rather slow... by slow I mean 30 min to import or export the tilesets.rxdata, good news. the tilesets.rmpy file is 15kb while the tilesets.rxdata file is 160kb
now I have to write it for the python side
Dude, first link: http://www.google.com/search?q=marshal+python
xD
they're not the same
QuoteThe format is specific to Python
There are plenty of nice ideas here :D
P.s. I actually once got it up to 410 FPS although that was definitely not intended by the Enterbrain s*:^_^':
(http://img89.imageshack.us/img89/438/speedboostlx8.png)
*hug
We all know how evil you are. D:
@Ryex: :/
I still think you should stick to Ruby's Marshal for compatibility's sake. You don't even have to really figure out the whole format. I implemented a partial reader in Blizz-ABS Config so you can take a look at it. You can even take a look at the Ruby source for Marshal: http://ruby-doc.org/doxygen/1.8.4/marshal_8c-source.html
There probably is even a specification lying around on the internet.
I'f I could understand a bit of c then that might be of use to me. I any case I'll stick with what i have for now
Alright. But I strongly recommend you update it later some time. It will make things a lot more convenient long term.
Hey, if you want, I might take a look at it myself. Python has eval so I can probably relatively easy make a Marshal module that allows you to load Ruby Marshal files without having to bother with reflection.
if you want to give it a try I would hardly object. being able to load and dump strait into a ruby marshal format would be awesome
I have to sneak somehow into the credits of your editor, don't I? :>
you seeky ninja you
Quote from: winkio on September 07, 2010, 11:40:50 pm
you should be able to get the framerate up to 60 and take away all lag caused by events and big maps without much trouble.
Issue Title: Engine Performance
Description: RMXP feels like it was built in the 90s. While the retro feel is nostalgic, it also sucks for game playing.
Suggestion: You should be able to get the framerate up to 60 and take away all lag caused by events and big maps without much trouble.
Graphics.framerate = 60
or am I stupid?
Graphics.frame_rate = 60
but as i said earlier, that is unstable.
EDIT: so I was exploring a map's tile data an i think i discovered something interesting.
the top 8 tiles in a tile set (the default blank and the 7 auto tiles) are assigned the id's 0 to 383 meaning that each auto tile has 48 separate id's
these 48 ids describe the possible combinations for an autotile. but this mean that the blank tile also has 48 id's but it seem that it is only recognized as tile 0
the id of the normal tile set start from 384.
dose this sound right?
in any case passages ect. are pulled strait from the tile id that means that the passages ect. arrays have a separate value for every combination of the autotile
this means that one possible feature of my editor would be to configure the pasability, priority ect. of each possible combination separately
the next step for me is to under stand how values in the passages array work.
Quote from: Valdred on September 11, 2010, 01:28:34 pm
Quote from: winkio on September 07, 2010, 11:40:50 pm
you should be able to get the framerate up to 60 and take away all lag caused by events and big maps without much trouble.
Issue Title: Engine Performance
Description: RMXP feels like it was built in the 90s. While the retro feel is nostalgic, it also sucks for game playing.
Suggestion: You should be able to get the framerate up to 60 and take away all lag caused by events and big maps without much trouble.
Graphics.framerate = 60
or am I stupid?
You are completely right ^^
There is however still the '
take away all lag caused by events and big maps' part.
It's engine specific so there isn't really much Ryex can do about it.
It's not really that unstable. It's as you expect. If you cast a skill which affects all enemies and have a huge animation, then of course there is going to slow-downs. (I am not saying RMXP is efficient as it's not)
You can also have custom scripts which causes slowdowns. 60 FPS requires more power than a 40 FPS.
Make sure 'Reduce Screen Flickering' is not checked. My screen has a refresh rate of 60Hz and checking that will make sure the FPS does not surpass that. On the downside it uses more processing power and intere cstingly 61 FPS with it on requires significantly more processing power than 59 FPS does. (50% and I have dual-core)
To compare with 120 FPS on new project with 1 event added without 'Reduce Screen Flickering' uses 30-35%.
P.s. my computer cannot run Crysis.
*hugs*
Zeriab! whats with all the activity! you can't stay away from the lovlyness can you? :naughty:
Quote from: Ryexander on September 11, 2010, 01:40:40 pm
EDIT: so I was exploring a map's tile data an i think i discovered something interesting.
the top 8 tiles in a tile set (the default blank and the 7 auto tiles) are assigned the id's 0 to 383 meaning that each auto tile has 48 separate id's
these 48 ids describe the possible combinations for an autotile. but this mean that the blank tile also has 48 id's but it seem that it is only recognized as tile 0
the id of the normal tile set start from 384.
dose this sound right?
That is correct. It's 4 rows with 8 tiles.
Quote from: Ryexander on September 11, 2010, 01:40:40 pm
in any case passages ect. are pulled strait from the tile id that means that the passages ect. arrays have a separate value for every combination of the autotile
this means that one possible feature of my editor would be to configure the pasability, priority ect. of each possible combination separately
Actually passages are much more simple. Have you noticed how autotiles have 3 passability modes? X, O and []. [] indicates that the "top" tiles that are used are passable so you can walk under them if they are the black wall tiles. The other two are self-explanatory. You can't make it really work that well if you don't do it this way. It will just be too confusing to set up the passability for each tile combination. You should stick to the original design, it's a good one that makes things on the outside easier.
EDIT:
@Niche: Dare to take my soul. :naughty: But don't come with back crying when it has bitten you in the ass and stolen all your girlfriends.
You've tempted me before. But as my title says, you are my master and therefore I cannot take your soul :P
no I will make it work the normal way. I'm just saying that it would be possible to have a forth mode when you can right click and edit them separately too because the original system allows for it
Would be possible, but what'd be the advantages?
That's exactly my point. It would just complicate and confuse people. If you really need something like a special passability, just make it all passable and put an impassable layer above/below it that will define the actual passability on that map.
Issue Title: Panorama not shown in the editor.
Description: There is no way to tell how the map is going to look like with the panorama without playtesting, making panorama mapping more difficult than needed.
Suggestion: The panorama should be shown in the map editor.
Issue Title: Screen tints only shown ingame
Description: You have to do alot of trial and error work to find the right tint because it's not shon in the editor.
Suggestion: Screen tints should be able to be shown in the editor.
Issue Title: It can be hard to find mistakes hidden in scripts, database etc. since RMXP only notices on e at a time
Description: See issue title.
Suggestion:Maybe a "debugger" that can check events / scripts / etc for mistakes or missing files
Issue Title: Eventing is timeconsuming
Description: Selecting every single event command from that huge list takes alot of time.
Suggestion: A way to "type out" events instead of selecting everything from a menu
Issue Title: It can be difficult to find resources, scripts, database entries etc.
Description: When you have alot of data, it can become hard to overlook easily.
Suggestion: The possibility to organize resources, scripts and database entries in virtual folders, so you don't always have to scroll through endless lists
Issue Title: Variable changes have to be done by hand
Description: When you have been using variable 1 for a certain system, bu you now need to use variable 2 for it, you have to change every entry by hand.
Suggestion: A way to change all variables quickly.. a "replace all" function and such.
Quote from: Subsonic_Noise on September 11, 2010, 05:24:02 pm
- The panorama should be shown in the map editor.
- Screen tints should be able to be shown in the editor.
- Maybe a "debugger" that can check events / scripts / etc for mistaoes or missing files
- A way to "type out" events instead of selecting everything from a menu
- The possibility to organize resources in virtual folders, so you don't always have to scroll through endless lists
- A way to change all variables quickly.. like, you have been using variable 1 for a certain system, bu you now need to use variable 2 for it - insteqd of doing this one by one, have a "replace all" function
- Virtual script and database "folders", so you can keep this organized, too
- more to come.
please apply the request format. it is so I can over view posts quickly later.
as for your ideas
@virtual folder for organization> good idea :P. this sort of information would be stored in the project file.
@screen tints in the editor/panorama. there will be a preview mode so that you can preview that map as the game would show it. sprites and all.
@event debugger... I'll consider it but defiantly not in the first release.
@batch switch replace, it would work on event level, map level, project level. (so you could replace the switches only in an event, only in the map or in the entire project)
@typing out events. I was considering this before you suggested it it would be a labor intensive part to add so
probably not in the first release. I might but not sure at the moment
It's a bit difficult to apply that template on an iphone. Even writing as much as that was difficult.
then do it when you are on a computer :P
Quote from: Ryexander on September 12, 2010, 03:26:36 pm
then do it when you are on a computer :P
Level up.
Edidit: That was a masturbation joke, just in case no one got it :P. @Ryex: CUSTOMISABLE HOTKEYS!!!! I'm thinking something along the lines of the OO hotkey editor and the editor tools all need hotkeys.
This might be to do with the engine, but I think the set move route system should be a picture of the map, where you can click the squares that make up the move route, as well as a side panel for the other commands, because there's too much guesswork involved in setting move routes.
I have a script that makes events go straight to diagnosed co-ordinates.
You can have it if you want...
Za? I have no need of scripts. only ideas on how the editor should work
No, for The Niche
oh, no thats not what he is talking about
Quote from: Karltheking4 on October 05, 2010, 08:32:47 pm
No, for The Niche
I think Niche was making a suggestion for Ryex's new program, not requesting a feature for the current one. That does, however, sound like a useful script. Maybe you should get the author's permission and add it to CP's Script Database?
Issue Title: Replace tiles
Description: As is if you say put something on the wrong layer or want to change all of one tile to something else, you have to manually click them all to replace them.
Suggestion: Added option to the fill tool to 'replace all' of one tile with another. So you can change all, or erase all by one tile.
Example: Made a cave, and I want to change the bottom of the cave walls with the version with no floor attach. Select tile with no floor, select to replace all.. click tile I want replaced, changed it through out the map.
Issue Title: Find those tiles
Description: If you some how place a blank tile that is not tile 0, it can lead to passable issues when playing if it's set to X or such.
Suggestion: Could turn off transparency on the tile set so you can see on the map where stray tiles could be so you can remove them, rather then playing 'hide and seek' with them and cycling though the layers.
Be useful for those who are making/editing tilesets and shifting things around, where once there was an object now it's blank, adding it to the map.. now the hunts on for all those blank tiles.
Issue Title: Tile Select
Description: Right now if you want to place more then one tile, you have to click and drag to select the group of tiles to place, but what if the ones you want are not side by side?
Suggestion: Shift click to select additional tiles then on paste, they are placed as a group based on where they were on the tile set, a.k.a as if no tiles were between them on the set
Example: (cave again!) I want to use the two corner walls for the cave, select one, hold shift, select the other, it then places them on map side by side. rather then select one corner, place, select next corner, place.
Issue Title: Check tileset passibility on map.
Description: If you have an error on your passibility on your tile set, or have a tile on another layer that should be passable/non passable yet isn't acting as such... there's no way to really see it on the map.
Suggestion: Simple button to show the passibility of the top most tiles on the map for quick review to be sure 'yes I can not walk past this area' or 'yes this path is clear' etc, Would be useful for quick checking and debugging rather then searching every edge of your map for 'holes' that a player could slip into or such.
Seen a few demos with just such an issue, where someone failed to place tiles/objects that block the player from reaching back into an area they shouldn't have gone to, or didn't realize they mislabled a tile and now it's not acting as it should.
That is all I can think of right now.
I don't know if those can be incorporated or not Taiine, but those are really good ideas! Keep 'em coming.
oooh thouse are very good ideas and their implementation could fit with my plan, and I was planing (or at least thought about) including the pasability view mode
All sounds good. Ryex, do you want me to clarify on the move route editor?
ya that would be nice
Ok, so in the event editor you click set move route. A window comes up showing the map and the move route commands. You do this however you want, but my way would be that you'd paint your move route, i.e. you click the tiles that make up the move route (not just the destination tile, all the tiles) or alternatively, you could just click a button, e.g. move up and a line would be drawn onto the map indicating the move route. You'd also need to have all the other set move route commands in the window, but I'm sure you could find space.
That would become difficult if your event moved around, and then you set the move route that way and activated it. o.o
How?
Say you start at point 0,0 then the player moves down one square to 0,1. But on the move route, you've painted the route starting at 0,0 to move left four squares. What would it do?
Though, I suppose you could make it so the player moves to point 0,0 then left 4 squares, but that might be annoying to some people. o.O
Hmm...I don't know, you see the move route interface makes it very hard to see where your characters will end up. I suppose what you could do is define a starting point.
phew, Finally got my ass in gear and finished the map control. of course I don't know if it works yet as I don't have the ability to test it with map data. I probably have a ton of bugs to work out.
Issue Title: Class Equip Interface
Description: You have to check all the boxes for every class. If I have a hundred accessories that I can equip to any class, I have to press a thousand checkboxes in order to implement them. If I add another accessory or another class...
Suggestion: An "All" button under the weapons and armor column, allowing you to make any weapon or piece of armor equippable for that character. Doesn't destroy the problem entirely but makes adding more accessories and such a much less painless process than going through and checking every box for every character.
ooo even better
combining your idea with the one about splitting those long lists into folders allowing you to separate the armors into groups and make groups equip-able by a class.
isn't that even better?
Of course it is! Anyways, you should expand the conditional branch conditions to include the party position of an actor, as well as having a message box command for printing names of people in party positions.
well alass those two are tied into the event interrupter in the game engine I'm not saying it can't be done but I'm not going to do it
OH! Nich you just gave me a great idea!. what if the text command came with a WYSIWYG Editer that could generate the mark up for those commands that allow for italics ect. and took the mark up into consideration when counting width? what if the mark up supported by that editor was extensible or customizable so say some one could add all the commands added by the UMS?
Well then that would be amazing!
Quote from: Ryexander on October 16, 2010, 01:17:52 am
ooo even better
combining your idea with the one about splitting those long lists into folders allowing you to separate the armors into groups and make groups equip-able by a class.
isn't that even better?
Adding a text box that says "flip checkbox from X to Y" could help out with batch processing here.
I'm not understanding what you mean.
You have a similar thing in the switch/variable operation command. You enter a range of IDs which will be flipped during the game. You could add a similar thing in the class editor that allows you to quickly change the checkbox state of equipment usage. That way you could set up the equipment for the classes a lot quicker than having to click each box manually.
Issue Title: Layers
Description: It would be easier to map if there where an option to add more layers.
Suggestion: Add more layers, or a button to add more layers.
Quote from: Blizzard on October 16, 2010, 05:50:14 am
You have a similar thing in the switch/variable operation command. You enter a range of IDs which will be flipped during the game. You could add a similar thing in the class editor that allows you to quickly change the checkbox state of equipment usage. That way you could set up the equipment for the classes a lot quicker than having to click each box manually.
oh I get you.
Quote from: cyclope on October 16, 2010, 10:51:25 am
Issue Title: Layers
Description: It would be easier to map if there where an option to add more layers.
Suggestion: Add more layers, or a button to add more layers.
can't do it as it requires a new Tilemap class.
EDIT I've put of a sourceforge project. I can see myself recruiting more people to work on this project with me and at the point version control would be extremely helpful. thus I created the sourcefourge project and even committed the first public version of the code.
https://sourceforge.net/projects/rmpy/ (https://sourceforge.net/projects/rmpy/)
Add me: borisblizzard. You can get my e-mail from my profile.
*Takes down blizzard's details*
And now to stalk...
well your added as a developer. dose this mean you write the marshal extension and commit it to the repository as a new file? :P
Yes.
Yay
More zoom options, like vx has.
Quote from: The Niche on October 19, 2010, 09:24:37 am
More zoom options, like vx has.
Seconded. Also, a way to dock and move around different windows (tileset, script, database, etc.) similar to Eclipse or Visual Studio would be nice.
already implemented ^^ or at least the frame work is there. I've set it up for infinite zoom in each direction and will set the limits in the control. as for the docking ect. look at the first post again, specifically at the test screen shots
ga, haven't done much work on it lately. I;m one of those people who loves to constantly test his work as he builds. I've done a ton of work setting up everything and there is still more to do before I could do any sort of meaningful test, namely I have to create the control for the tile set and set of the map control. then I would just be waiting on the ability to read data from RMXP projects
*sneaks away*
*grins at successfully executing a soft provocation*
I always keep forgetting this. I seriously need to put a reminder on my desktop. CURSE YOU, LIFE! >8U BECAUSE OF YOU I HAVE NO TIME TO MAKE SCRIPTS FOR RYEX! >8U
lol, don't feel to bad about it. my life has been so hectic lately that even had you finished it nothing would have happened
wow thats awesome. I've been wanting to test wxpython on platforms other than windows for a while now and I finally got around to installing ubuntu in a VM. so I tested my work so far and it worked flawlessly. not that that means much as all I was testing was basic components like the aui interface and text controls...
I hope this program will allow us to use more than 3 layers, because there are alot of things I could make, but of course I'm limited to only three layers >:(
Quote from: Magus on November 17, 2010, 05:41:49 pm
I hope this program will allow us to use more than 3 layers, because there are alot of things I could make, but of course I'm limited to only three layers >:(
Wow, either you really can't read or you fail at understanding basic sentences.
Quote from: Subsonic_Noise on November 17, 2010, 07:45:48 pm
Quote from: Magus on November 17, 2010, 05:41:49 pm
I hope this program will allow us to use more than 3 layers, because there are a lot of things I could make, but of course I'm limited to only three layers >:(
Wow, either you really can't read or you fail at understanding basic sentences.
Nah. I just didn't bother reading the other posts in this topic. Really, you really shouldn't have bothered with wasting your time replying in such rudeness :/ Insulting someone is just plain out stupid, but then again, I didn't expect any maturity from you. [You should obviously know there's a reason why I would post such a thing before quoting me :/]
Quote from: Magus on November 17, 2010, 10:18:30 pm
Quote from: Subsonic_Noise on November 17, 2010, 07:45:48 pm
Quote from: Magus on November 17, 2010, 05:41:49 pm
I hope this program will allow us to use more than 3 layers, because there are a lot of things I could make, but of course I'm limited to only three layers >:(
Wow, either you really can't read or you fail at understanding basic sentences.
Nah. I just didn't bother reading the other posts in this topic. Really, you really shouldn't have bothered with wasting your time replying in such rudeness :/ Insulting someone is just plain out stupid, but then again, I didn't expect any maturity from you. [You should obviously know there's a reason why I would post such a thing before quoting me :/]
Ironically, I find it quite immature to post without gaining the context of the entire situation in the thread first.
Nah, it's just laziness, not immaturity.. (For some reason, I didn't feel like reading 7 pages of topics and posted.) Don't deny the fact that you had "lazy" moments in your life before XD
Quote from: Magus on November 17, 2010, 11:57:35 pm
Nah, it's just laziness, not immaturity.. (For some reason, I didn't feel like reading 7 pages of topics and posted.) Don't deny the fact that you had "lazy" moments in your life before XD
Laziness is indicative of immaturity.
No it isn't. It's indicative of energy levels. But anyway [/offtopic]
There definitely is no such thing as a search function that can search in topics, or a first page that states THIS IS A NEW EDITOR AND NO NEW ENGINE or a last page where exactly that suggestion is denied because IT IS IMPOSSIBLE. If you don't even care doing those things then just don't post or go to a forum where people like answering the same questions over an over again. ;)
Also, I find your attempt to make me seem immature amusing. I'm having my fun over here.
Edit:
私が行っています。申し訳ありません。
But in all seriousness, my apologies for holding off this topic with "off topic things." I'd rather not drag this on into a troll-fest.
Anyway, I'm going to continue to watch over his project. There are a lot of points that catch my interest (whether the project continues or ends)
Quote from: Magus on November 18, 2010, 12:17:13 pm
私が行っています。申し訳ありません。
Foreldrar þínir eru feitir skegg samkynhneigðir.
On other news, I finally edited my suggestions post to suit the template. Happy now? :V
yes I am! but some how you deleted you idea about splitting lists into groups!
Quote from: Subsonic_Noise on November 18, 2010, 02:08:25 pm
Quote from: Magus on November 18, 2010, 12:17:13 pm
私が行っています。申し訳ありません。
Foreldrar þínir eru feitir skegg samkynhneigðir.
On other news, I finally edited my suggestions post to suit the template. Happy now? :V
LOL, GOOGLE translator couldn't detect it XD
(http://i56.tinypic.com/29fz29s.png)
[ontopic] Will it be possible to have multiple tilesets per map? Or is that done by the engine or scripts?
That really isn't neeeded, I imagine, since one can simply combine tilesets in a graphics program and import it.
Actually, while it is possible to recombine tilesets, it does waste a lot of memory if you are combining tilesets frequently in a game. Multiple tilesets isn't such a bad idea. Other possible uses are sharing a common "vegetation" tileset between all maps that use it.
That said, to do it in RMXP, you would have to redefine the Map structure, which is part of the base engine.
yes multiple tile sets is out.
it could be possible if the tiles had an extra property that was the tileset id. but this would require a rewrite of both the tile map and the passability set up
Quote from: Magus on November 19, 2010, 02:48:06 pm
Quote from: Subsonic_Noise on November 18, 2010, 02:08:25 pm
Quote from: Magus on November 18, 2010, 12:17:13 pm
私が行っています。申し訳ありません。
Foreldrar þínir eru feitir skegg samkynhneigðir.
On other news, I finally edited my suggestions post to suit the template. Happy now? :V
LOL, GOOGLE translator couldn't detect it XD (http://i56.tinypic.com/29fz29s.png)
It says "Your parents are obsese bearded faggots" in icelandic.
Issue: The script editor can be a mess to work with
Description: The script editor has no debug feature and lacks general user-friendliness and such.
Suggestion: A Debugger to find at least some common faults like missing ends, methods / classes that are defined multiple times etc., extended colour coding for script tags, a way to click on called methods and classes like a link and it will take you where said method / class is, a way to open / close conditional branches like folders in explorer (with a + / - sign next to it), a search and replace function, a quick way to enable / disable scripts or group of scripts even and alot of other things you probably can come up with yourself.
well I'm going to build it with the default styled text ctrl so it will phrase ruby but a Debugger, even something that simple, is not really something I can do... I might beable to tell you if you missing an end, a ) or a }. or if you have to many but that will be about it.
Quote from: Ryexander on November 19, 2010, 10:08:31 pm
well I'm going to build it with the default styled text ctrl so it will phrase ruby but a Debugger, even something that simple, is not really something I can do... I might beable to tell you if you missing an end, a ) or a }. or if you have to many but that will be about it.
That's all I asked for, the real bugs can still be fixed the normal way. But maybe checking if a method is defined twice?
Issue Title: Max Stats
Description: Editor not allowing more then 999 for weapon, item, etc stats.
Suggestion: Just change the controls max to 0 which I think counts as no max.
So basically this includes all stats for weapons, skills, enemies, items, armors.
Issue Title: Better Encryption
Description: RMXP's encryption method is a joke. Embed a better one.
Suggestion: Something even like DREAM, but is done automatically.
alas the encryption method (what ever it is) still needs to be decrypted by the engine. thus you will have to code the decryption in rgss or use an WinAPI call to a dll you built to accesses it. but if you do that the scripts file still need to be able to be read by the engine. in which case the hacker can still read the rgss file and decrypt the rest of the data with what he finds there. in short a new encryption will not work with out a new engine
I have these few suggestions.
Issue Title: Scalable event editing box
Description: The event editing box is un-scalable.
Suggestion: Make it so that it can be scaled to show more or less event code.
This is partially related to the first.
Issue Title: Bigger graphics box,.
Description: Though the box for event graphics is more than adequate, for the normal sized people sprites, if using even some of the RTP sprites that are bigger, parts of the graphics get cut off from view.
Suggestion: A larger event graphic box. If scaling can be done, should be also scaled.
^ YES YES PLEASE DO THAT! :)
(oh, and make the script call box bigger aswell, that thing is friggin tiny! >:()
I moved the project from sourceforge to github because Git is awesome.
Just checked that out. Much better than sourceforge.
yes, yes it is.
good news folks. I got it working, the data importation and exportation that is. the python side automates the ruby application that dose the conversion to my own format and then loads that data itself. the process takes about 8 seconds from start to finish (ruby import and python loading) and I've even got a progress bar working. I've also got the map tree working, you can't edit any data yet though. next step is to get the maps to display properly.
and yes this is all running on my extension system so that the main application doesn't have to worry about how the loader or any other component works. it simply obtains the component and calls the methods it assumes that said component has. Duck Typeing at it's best. I wish I could cut down on the over head configuration though. the script that import the core components is going to be LONG when it's all done.
latest has been pushed to git hub
Progress! Yay!!one
I should add more freedom in the renaming things! Just with the database!
man I love being able to run ubuntu in a VM. I just finished the modifications I needed to make to make the python-ruby data loader work. now back to windows for the map editor
rats, I'm
SOOO close to getting the maps to display properly. auto tiles don't seem to be working and there are a few other problems. I also need to get scroll bars up and running
(http://img692.imageshack.us/img692/3717/capturentg.png)
Fucking kick ass! Maybe in the near future we can merge our projects. Or maybe not. Just a thought.
/me wants to shoot something as there is no logical reason for the system to not be working.
EDIT: ok two things still not working in the map display; first I need to get autotiles to work (they really should be working already but they just don't it is just bliting empty bitmaps), second I need to get blank event to use transparent images and clean up the event outlines.
here is a demonstration of the awesomeness so far
(http://img696.imageshack.us/img696/571/captureel.png)
Quote from: game_guy on January 01, 2011, 02:05:15 am
Fucking kick ass! Maybe in the near future we can merge our projects. Or maybe not. Just a thought.
Sell them on Ebay! For 200 bucks/ copy!
Then CP gets sooooo famous and we'll rule the world!
Quote from: Delusian on September 08, 2010, 08:18:14 am
Quote from: Ryexander on September 08, 2010, 04:04:52 am
Redo > Will do.
How the makers of rpg maker didn't think of this I don't know. It drives me mad when I think 'hmm that's wrong' *hits back* oh s**t I needed that.... ok... lets go again...
Yes, know that problem, Its a pain in the ass if you just did a whole map without releasing your cursor and then you make a tiny msitake and your like ohw undo, and it turns out 50% of your map is gone...
Oh and make it so if you add EXP to the party, a message shows up if they level up!
well after close to 8 strait hours of testing I FINALLY got autotiles to work, I have no idea why but apparently I needed a GraphicsContest and not just a normal MemoryDC in order to reliably blit bitmap data. oh and I needed a >= instead of just a > in one place *facepalm*.
(http://img515.imageshack.us/img515/511/captureimc.png)
next up, increase the speed of my needredraw method and hopefully get rid of the white bar the appears on the edge when you scroll. and possibly figure out why the fire is green :<_<:
*Nichegasm*
The fire could be green either because something with the hue change is wrong or one color channel is missing. (It seems to me that in this case the red channel is missing.)
but why on earth would a color channel be missing? it is displayed the exact same way all the other events are and they don't have problems.
Could be various reasons. That's why my first guess was a hue change rather than a missing color channel.
It could be rendering an RGBA image as RGB, which might end up replacing one of the color channels with alpha.
this is probably something like the bug I encountered with the autotiles where some bitmap would be blited normal and others would be blited with all non transparent pixels as completely black
what I did today.
- played Fallout NV :P
- fiddled with wxpython and pygame making pygame draw inside a wx form. getting it so that more than one window with pygame inside could be created in the lifetime of a process.
- succeeded.
- added a section on it to the wxpython wiki http://wiki.wxpython.org/IntegratingPyGame (http://wiki.wxpython.org/IntegratingPyGame) (look at the bottom)
Ive decided that I will more than likely re do the map display in pygame (and thus sdl) at some point. for now I think I'll stick with wxpython's inbuilt drawing for development. redoing the map display in SDL will be a time-sync because it means writing my own GUI for the display of more than one map at once
It's awesome to see that you're still making progress on this, Ryex. It keeps looking better and better. :)
ok, so I decided that time sync or not I'm going to remake the map display in pygame. so I've been reading up and working on getting pygame embedded in wxpython. I was also looking in to the various GUI packages as I'll need to recreate the notebook system so as to have more than one map open. I decided not to use any of them and create my own very simple interface that did only what I needed.
in any case as a practice I embeded one of the PGU's (PGU is a Pygame GUI library) examples into an wxPython app.
here is the result
(http://img715.imageshack.us/img715/6375/captureqw.png)
I made it so that the pygame display surface would resize it self to fit the screen
and the number at the bottom is the FPS
all those dots zoom out (or in depending on the speed) and look very smooth. I think Pygame will work nicely for the map display
(http://farm1.static.flickr.com/170/456474931_0356ba4a8d.jpg)
Seriously, though, it looks like its coming along good. :D
OMG, YOUR NAME IS PHIL!
No it is actually Benjamin I much prefer Ben.
the Phil is there because it is an example from PGU (Phil's pyGame Utilities) that I embedded in a wxPython app
fuck yes. I did a bit more poking around and found out that instead of creating a pygame display inside a wxwindow I could have the window display a bitmap that was drawn in in pygame. it uses a bit more processing power but looks a lot better than the wx drawing. also it means I can use my previous method of drawing the map inside a noteboox no need to waist weeks of time writing the gui in pygame.
(http://img510.imageshack.us/img510/2750/capturezy.png)
note that I limited the fps to use less power. seems to help. I'll have to find the right balence.
Refactored code (again) I implemented supertypes to group plugin types this way plugins can belong to a type of the same name but exist in different super types
this way switching the mode of the editor is as easy as switching what super type it is calling plugin's from
implemented proper project file reading
next steps:
1) redo the project loading to be asynchronous
2) make it so that the project dosn't have to be imported again useing
file change dates. ask the user if they want to import again and overwrite
exsisting data possibly add starting a new project with the imported data
insted ofver writing as a third option
3) rewrite the map display in pygame
4) write the tile set display in pygame
5) get a brush class down to start working on map editing
woo! I got the basic project loading and creating a new project done. and the classes for importing data are there. now I'm working on a dialog that lets you select what files you want to import from an existing project. I have the display part done I just have to do the data processing part now. wxFormBuilder is a live saver
I would still be working on the lay out of the forms if not for it.
once that is done I'll start work on writing the map display in pygame.
and importing is working with the new dialog
(http://i15.photobucket.com/albums/a400/ryex/RPG%20Maker%20PY/Capture.png)
(http://i15.photobucket.com/albums/a400/ryex/RPG%20Maker%20PY/Capture2.png)
(http://i15.photobucket.com/albums/a400/ryex/RPG%20Maker%20PY/Capture3.png)
so it turns out that python's pickle can't pickle objects of class consistences if those classes aren't defined in the top level of a module.
this is a problem when you take into account the the structure of the RGSS1 RPG module what with it having things like Event::Page::Condition
and Troop::Page::Condition. makes sense really, I couldn't find a way to determine the path of these type of classes reliably either. I ended up giving the classes I needed to serialize a __class_path__ string attribute to do it for me so I got clever. I defined all the classes at the top level of the module, sure. I even renamed Event::Page and the like to EventPage
but then in order to make sure that there was still a structure like the one found in the RPG module I did this
class RPG(object):
__class_path__ = "RPG"
Actor = Actor
Animation = Animation
Animation.Frame = Frame
Animation.Timing = Timing
Armor = Armor
AudioFile = AudioFile
Weapon = Weapon
Troop = Troop
Troop.Member = Member
Troop.Page = TroopPage
Troop.Page.Condition = TroopCondition
Tileset = Tileset
System = System
System.TestBattler = TestBattler
System.Words = Words
State = State
Skill = Skill
MoveRoute = MoveRoute
MoveCommand = MoveCommand
MapInfo = MapInfo
Map = Map
Item = Item
EventCommand = EventCommand
Event = Event
Event.Page = EventPage
Event.Page.Graphic = EventGraphic
Event.Page.Condition = EventCondition
Enemy = Enemy
Enemy.Action = Action
CommonEvent = CommonEvent
Class = Class
Class.Learning = Learning
I emulated the structure by linking the classes in such a way that the path RPG.Event.Page.Graphic existed but it was really referring to a class called EventGraphic in the top of the module. I think it's genius.
Man oh man, it's like I'm reading a development blog here with great fervor. :nod:
Keep 'em coming! Think outside the box! :V:
So today I worked on trying to get the checks that find out if map data had changed to Work faster, I decided that the best way, to do this would be to make the table class that holds map data to work faster and have some way to comepair the tables to find data that had changed and check layers individualy. (Note: so far I've been useing the tablet to write this I think i'll given up now, the keyboard is just much faster)
I I did some research to learn Numpy and rewrote the table class to use a numpy array. supposedly numpy arrays are 30 times faster that python lists. and as an added bones I'll be able to edit the data in the map much easier as I can assign to slices of an array and have it can assign the original data
I think you can always use c-type arrays in Python. Just google how to use them.
thats the point numpy arrays are c-type arrays
Ah, ok. xD Didn't know that. xD
Wow O.O This is REALLY coming along. This is totally legit (for lack of a better word). I'm really excited to see how RMPY turns out. Being able to run it on an OS other than windows would be a big plus (I like using linux better). And all the changes you're making sound cool.
One thing I'm unsure of is the plug-in system you're talking about. Does that mean it'll be easy-ish/doable to modify the editor to better accommodate large changes to the engine like BABS if you know what you're doing? Or is it just a term you're using for how you're putting the editor together? Just curious (I'm hoping it's the first :P)
Quote from: legacyblade on January 21, 2011, 12:46:41 pm
One thing I'm unsure of is the plug-in system you're talking about. Does that mean it'll be easy-ish/doable to modify the editor to better accommodate large changes to the engine like BABS if you know what you're doing? Or is it just a term you're using for how you're putting the editor together? Just curious (I'm hoping it's the first :P)
answer: both
I'm building RMPY in such a way that the program itself is built from small components that can be replaced. as long as the component provided the same interface. ie. is has functions by the same names that support the same parameters and return the same types of values then RMPY doesn't care. the editor shouldn't limit the engine.
any part of RMPY can be individually replaced or in specific cases added to. so yes you will be able to extend the editor to support any feature you could conceivably code in RGSS
Duuuuude...this entire forum is probably gonna evolve around making extensions for RMPY...
Quote from: The Niche on January 21, 2011, 06:52:39 pm
Duuuuude...this entire forum is probably gonna evolve around making extensions for RMPY...
perhaps, but thats what RMPY's own forum will be for. :P when I release a public build I'm going to set up a site so that every one will have a central place for information and to report bugs.
Yes...it would be the true chaos project. Imagine the chaos if people never had to learn to open the script editor again o.o Imagine the chaos if anyone could finally configure blizzABS with the touch of a few less buttons (and not have to open the manual, a feat many seem incapable of doing). It WOULD be kinda cool to just click a little switch at the top that says enemy, then just select from a list of enemies. (and the same for alignment group and all that) Or imagine if there were extra move commands for bABS forced actions built into the editor o.o
With that...
with that...
we'd still get more dumba** questions, but it would help out the people who are willing to actually learn the stuff. True, it'd mean even MORE resource and compatibility requests, but it would give script developers a lot more freedom to make things super user friendly. Can't wait to see it.
Chaos. Just got. Bigger.
If we make something idiot-proof, evolution will come up with a better idiot.
Quote from: Blizzard on January 22, 2011, 04:37:34 am
If we make something idiot-proof, evolution will come up with a better idiot.
a tested and proven statement
I agree. The config app proves that :P But it would save a lot of trouble for those of us who try to know what we're doing. Imagine if there was a tons of addons plugin that added stuff to the interface based on which addons you have active. You gotta admit, if that could be pulled off it'd be pretty cool. Not saying this would all happen, just geeking out at the possibilities RMPY offers.
woo! I finaly got my mac test env set up and did a quick test of just starting RMPY. it worked! I have a feeling that creating a standalone app bundle for the mac version of RMPY is going to be hell though
so I got the bright idea in my head that I should probably test and make sure the importing process worked on other platforms than windows. so as a first step I did a few edit to make RMPY load the commands it needed to start the import script from a ini style configuration file. that was simple enough. so I pulled the latest version from git hub into my vm of ubuntu and start up rmpy. first thing I notice is that the different fonts on Ubuntu screwed up my import dialog even though I was useing sizers. oh well it was still use able. I selected the RMXP project folder and hit the ok button and waited. the ruby script runs I can see its output in the debugger because the sdout streams for the two process is merged. just as the process is finishing I get some weird assert fail about a mismatch in ending streams. that upon a quick google search is only liked to python on ubuntu in and hasn't been solved in two years. well I decided that I might as well try NOT useing ruby1.9.1 and instead use ruby 1.8 well for some reason the assert problem went away. only to find another error about an x server resources being temporarily unavailable google reviled that this is because I was trying to update the progress dialog which I had created in another thread. well I solved that problem (sort of). and then found that ruby 1.8 can't convert an empty string to a symbol and 1.9 can. I had been converting strings to symbols so I would only be dumping one copy of the string I had to come up with another way to track strings, a simple task one would think. and indeed it was simple. but the only thing more annoying that discovering that something that works on one platform doesn't on another just because is discovering that your an idiot. I kept getting errors that the symbol record for a previously dumped sting didn't exist and I spent two hours searching through the code to see how the key I had saved to the record could be wrong, only to figure out that that was because the record really didn't exist. you see I had mapped the sting to the object id for the first copy of a string I dumped so that the id could be used to access the symbol record. the thing is I had forgotten to empty the table that did this mapping between dumping objects.
adding one line
@@strings = {}
inside my reset method fixed a problem I had been working two hours on.
after that importing on ubuntu worked. oh the time I wasted.
When reading/writing files, there is one rule you should follow: Always use rb, wb and ab modes, never r, w and a. r, w and a are Windows specific that change the stream by because of \r. On other platforms r, w and a actually act like rb, wb and ab while when you specify rb, wb or ab, the b will be ignore on non-Windows platforms. This might have to do with your problem.
off topic
so since your making this in python i thought it would be nice to try and learn it so maybe to add to it while using it and it actually isn't that hard to figure out im in the midst of making a Config for my Battle Dome Script to learn how to use it. it doesn't look flashy but it will generate the code so eh
edit is this going to be open source ? if so can i see what you have to learn off of
Yeah, he posted a link to it in the first post, you may have missed it.
https://github.com/Ryex/RPG-Maker-PY
uhh... where do you put the folder and contents...?
[/noob question]
if you plan on running it note that you will need all of the following:
python 2.6 (yes this version specifically)
wxpython for python 2.6
pygame for python 2.6 (latest version)
numpy for python 2.6 (latest version)
ruby 1.8 or 1.9
of course when I release a build none of that will be necessary
after you have all that installed just run Main.py no need to place it any ware special just so long as it is all together.
Note that currently all you can do is start a new project and import data from an existing project. no editing of data at all.
I recommend that you use py2exe for the build as well.
Quote from: Ryex on January 28, 2011, 11:36:56 pm
if you plan on running it note that you will need all of the following:
python 2.6 (yes this version specifically)
wxpython for python 2.6
pygame for python 2.6 (latest version)
numpy for python 2.6 (latest version)
ruby 1.8 or 1.9
of course when I release a build none of that will be necessary
after you have all that installed just run Main.py no need to place it any ware special just so long as it is all together.
Note that currently all you can do is start a new project and import data from an existing project. no editing of data at all.
thats what I meant when I said that I'll use freezing utilities for the various platforms to make stand alone executables. in other words when I release a build all you'll have to do is download and double click the exe
Ah, alright. I wasn't sure if you were gonna include all of that in the build manually (because it can be done) or if you would be using py2exe.
so I finally got the GDI version of the tile-map working fully that means that the mouse square fallows the mouse around. HOLLY SHIT IT'S SLOW! seriously it takes just shy of a full second to draw a 40, 30 map! a pygame version is going to be necessary if any one is to actually use this thing
oh and when I zoomed in to 2x the map took almost 20 seconds to draw completely
ok that settles it. I was moving the mouse around and watching the cpu usage it jumps to 50% from 2% other wise (I have the map buffered) the GDI blit operations are fing slow!
Try to see if there are any hardware supported blit operations. They should work significantly faster. Did you implement your own blit or are you using GDI's already? Try to find an alternative to GDI's. Maybe even try your own.
But wait! How are you drawing the map actually? You are using one big image and blit all tile bitmaps onto it?
ya thats basically it a bit map for each layer blit the tiles on to it and then blit them together to from the buffer.
in any case I'm working on making it so pygame is doing the bliting as it is much faster. when it is done GDI with blit only once per redraw and the blit will only be the size of the area the user can see (plus a little on the edges)
Ouch, that's a bad way of doing things. ._. You should rather use the same tilemap system like RMXP does. I don't think they blit the map together in the editor.
Another problem is that big images require large amounts of memory. A 40x30 maps needs 40x30x32x32x4 = 4915200 B (almost 5 MB) of memory per map layer. :/ A 100x100 map needs over 40 MB per map layer. :/ You can still not draw the "sprites" that are outside of the viewing scope in the editor. You can simply check the the upper left sprite that is drawn, use the size of the map editor control together with the size of the tiles to determine how many sprites/tiles can be seen on the screen and then just draw those. That way you don't even have to check each sprite whether it is in the view or not.
RMXP dose it different? I found a tile map class by I think serophspawn and it drew the entire map to a plane or sprite (or rather three) and scrolled it around...
EDIT:
in fact thats how Zer0 dose it in his resolution script. he has 5 sprites the size of the map one for each priority layer
Seph is an idiot. ._. And F0 did it wrong. I have seen a very old resolution script that didn't have an altered tilemap. Try that one and see what happens. One the 640x480 area will be visible and all sprites outside of that area are not visible. In fact, RMXP has a limited number of sprites for the screen which simply change tile IDs/bitmaps when you move. As you move around, the tiles will appear and disappear.
You can also try F0's resolution script but remove the tilemap to see what happens.
just for reference here is how I'm going to draw the map using pygame.
5 surfaces
3 for the layers (these are the size of the map)(map data is only changed after a brush has been committed)
1 for the brush (the tiles that are purposed to be added to the map data (i'm thinking it will also take into account autotiles)(only as large as necessary)
1 for the mouse square (32 X 32)(drawn at creation never touched again)
the three layers are only redrawn when map data changes and then only the tiles that changed are redrawn
the brush is redrawn when it changes
when it comes time to draw the map to the window pygame creates a surface that is just slightly bigger than the visible area of the screen and blits the visable section of the layers onto it in order modifying transparency and zoom size and drawing a black rectangle with 30% opacity to dim the layers depending on which is active the mouse bitmap is resize to the zoom level and blited last. this surface is converted in to a string and then loaded into a wxpython bitmap this bitmap is then blited to the screen. this will happen on a timer that will be set to 20 times a second.
I honestly can't see why it is a bad Idea to hold the map in memory instead of redrawing it.
You're not redrawing the map at all if you use sprites. You just set the proper pointers. With your method you always have to blit the whole thing each time you make a change.
oh I get you, thing is that there is no shut thing as sprites in pygame. or there is but I can't use them in conjunction with the normal editor. If I make a game engine I'll be sure to keep this in mind.
also sprites come down to a blit anyway. how else would they get drawn to the screen surface? :P
when Pygame dose a blit all it dose it tell SDL to do it so it will be fast.
I just have to keep the number of blits I do each "frame" so to speak to a minimum. that means pulling from a pre rendered map if it hasn't changed. and when it dose change only draw the changed tiles. cache autotile patterns so they don't have to be redrawn. ect.
I also have to keep the size of the blit that GDI dose as small as I can because it is likely to be the slowest operation, probably slower than all the pygame blits together even with drawing the map for the first time.
I don't think you know what I mean. The way how RMXP works with this is just fine. You have a bunch of bitmaps and a bunch of objects that display those bitmaps (in RMXP's case sprites). You never do any blit operation, you just link the sprites with the bitmaps, i.e. sprites have a pointer to the bitmap they are supposed to show. You never have to use a blit operation for this, that's what I
meant. You just have a bunch of sprites that are used for display.
Sprites don't get blit to be drawn. A simply polygon drawing operation with 4 vertices and the proper UV coordinates is all you need to draw a bitmap from a sprite on the screen. Blitting is basically copying bitmap data which is never done or needs to be done here.
such a method dose not exist in pygame. when you use sprites you still have to tell them to copy themselves to a surface other wise they never display.
By blitting? Wow, that sucks ass. No wonder it's slow.
pygame isn't slow GDI is. GDI is windows internal drawing library the one wxpython hooks into. pygame uses SDL which is FAST. GDI has no notion of sprites only Blits
Pygame uses SDL which is a 2d frame buffer and while it can be used with pyopengl this isn't a stranded feature.
so blits via SDL it is.
I know what SDL is, thank you. :)
It's still a bit weird how it works. I'm used to direct OpenGL/DirectX processing and drawing of polygons so this seemed kind of a performance eater to me.
Quote from: Blizzard on February 06, 2011, 05:16:25 am
I know what SDL is, thank you. :)
It's still a bit weird how it works. I'm used to direct OpenGL/DirectX processing and drawing of polygons so this seemed kind of a performance eater to me.
didn't mean to offend Just rationalizing
but ya I was surprised when I looked into Pygames sprites too.
basically you create a sprite. make sure that Sprite.image is a surface containing the graphic to draw and Sprite.rect is a rect for the position.
then you add the sprite to a spritegroup and call Group.draw(surface) where surface is the surface to draw the sprites in the group to (normally the display screen)
and the docs say the Group.draw does blit operations so ya.
You didn't offend me, that's what the smiley was there for. :)
well after getting out from under the pressure of a chem exam a bunch of homework and some sleep problems causing me to miss a bunch of classes for about two and half weeks. I started work again.
tonight I added a AutotilePattern method to my new cache class written for Pygame. it creates an auto tile pattern and stores it so that it doesn't need to be redrawn. I also redid all the dialogs to display properly on all platforms. and I fixed the new project dialog to create the project folder instead of requiring that it already exists.
Go Ryex! :D Dammit, I had a cool idea and I can't remember it. Fuck.
Quote from: Blizzard on February 05, 2011, 05:22:56 am
Seph is an idiot.
Well, yes, sir. You, Kefka and I had come to that agreement.
I was wondering, would creating/customizing new Stats, besides the default 4-6, require the editing of default RTP scripts?
I can't wait until the FF sequel is released where I am the final boss. :V:
Quote from: Blizzard on February 06, 2011, 05:16:25 am
It's still a bit weird how it works. I'm used to direct OpenGL/DirectX processing and drawing of polygons so this seemed kind of a performance eater to me.
@Ryex: On that note, why don't you look at pyglet (http://www.pyglet.org/)? It's based on OpenGL, and should be a faster. But I guess it's too late for that now, considering you've done a lot already. Still, thought I had to mention it.
EDIT: Just took an hour to read through the entire topic. I see switching to pyglet at this point might not be a good idea, sorry ^_^'
I have an idea to contribute.
Issue Title: Custom Event Commands
Description: Let's say I want to make a door event. I have to do the following:
@> Set Move Route (door): <change sprites to animate event>
@> Set Move Route (player): Move towards the door event (in either of 4 directions)
@> Wait For Move Completion
@> Teleport
Suggestion: If I could group some event commands into "Custom Events", it would make my life easier. In the above case, I would group the first 3 commands into the custom event "Open Door" and the result would be:
@> Custom Event (Open Door)
@> Teleport
Also, it would be great if custom events had customizable number of arguments. Something along the lines of:
Add Parameter... -> Type out name of parameter
Each custom event needs to have a list of parameters. The parameters need not even be drop-down lists or anything complex, just text boxes will do. You will have to find a way to transport these parameters to the event commands contained by the custom command. Something like the $1, $2, etc. in regular expressions.
EDIT 2: Wait, common events already do the grouping thing (thanks SRK for reminding me), but passing parameters qualifies as a new new feature, I guess :shy:
That sounds like an awesome idea.
That suggestion reminds me of Common Events. Though it probably more functionality than a Common Event would, I would guess. xD
But any macro shortcut idea is always a valuable one. :V
@SRK: You totally totally pwnd me >.< I'm such an idiot. I guess I'm only good at scripting, huh? Though, common events won't let you add parameters every time, so that would qualify as a new feature. This basically means any script calls required by custom scripts will effectively become event commands.
That's what variables are for; they can act as parameters for common events.
event building macros.... HOLLY!
they would be like event templates. and the event editor would have an interface to them. oh thats a awesome idea!
as it stands my current idea for an event editor is this.
(http://img97.imageshack.us/img97/3584/eventeditor.png)
@Fant thanks for pointing out that library I didn't even know it existed. but alas, after quite a bit of research I find that there is no working method of getting pyglet to draw inside a wxwindow or even a wxglcontext. there are at least 7 attempts in the mailing lists and it only works truly works on widows. the linux version barely worked. and no attempt at an osx version exists. true I could use PyOpenGl but it doesn't have the sprite capability of pyglet. If I wanted to I suppose I could learn OpenGl and create my own sprite class. but I really don;t feel like it. a OpenGl version of the map display could be a feature in a latter version easily. the plugin architecture easily allows for it.
Quote from: Blizzard on February 11, 2011, 06:15:13 pm
That's what variables are for; they can act as parameters for common events.
haha, yeah... *facepalm*
@Ryex: Too bad then. Whatever suits your needs then :) (I wonder how RMXP does it...)
Direct X most likely
Dude, that looks brilliant! I like the rearrangable pages idea. Will the order be purely for cleanliness or will it affect how the event plays out?
it will effect the event the same way pages in events already work
Basically, the ones further left have higher priority? Cool.
no, the top page in the list has highest priority
EDIT: ok. I think I just completed the pygame version of the map display. as in I just wrote the last bit of code. now to test it *crosses fingers*
EDIT2: ok scratch testing jest yet, I need to write a method to set the default components at start up by loading a config file... book keeping code here I come.
EDIT3: ok I got that set up, the code to load the files and set the defaults from them and the files are now written, took a while but it needed to be done eventually. now I think I'll commit all these changes before something crashes and I lose everything.
Yeah, i was talking about xp, but I see what you mean. Anyway, cool. Will you be making the stack scrollable or will there be a limit to how many pages an event can have?
well crap, looks like 'm learning opengl sooner than I thought.
EDIT: it is official I'm going to need to learn opengl and write the tilemap and mapdisplay using it. the integration of the pygame surface by converting it to a bitmap and then drawing it just dosn't work, it's just as slow as the the wx version. oh and I couldn't get the surface to draw correctly. color corruption and strange non working blits galore.
That sucks that you need to go back and redo a large portion, but I'm sure the final result will be better because of it.
kinda and not really.
I have to create a gl.canvas panel with scroll bars. and I have to learn the drawing function for GL. perhaps I'll take blizz's advice and create a sprite class that can do the transformations like zooming for me. I'll have to write yet another cache module that stores OpenGl textures too. I'll likely write a tilemap class that holds all the sprites too.
it is a large amount of work actually but I won't be redoing anything. I just have to write them and tell the editor to use the new components (which is rather simple now that I have my configuration loader done).
EDIT:
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffff
ok, I'll admit it. I'm completely lost. I'm reading the most basic tutorials I can find. it teaches you how to draw a solid color triangle and I'm very VERY lost.
can any one point me to a tutorial that can introduce me to drawing using gl to draw? (preferably in modern not depresheated ways). an absolute beginner who has now clue about 3D programing's introduction to OpenGl 3.x (or even 2.x I suppose) ?
EDIT: never mind. I found NeHe it makes sense now. kinda. how it draws objects makes sense. shaders and textures are still beyond my reach.
You don't have to learn OpenGL if you use April (http://sourceforge.net/projects/libapril). April provides a common interface where you can compile it to use OpenGL or DirectX in the back-end without having to learn either of them. We're starting today with the proper documentation. xD
You can also use AprilUI (http://sourceforge.net/projects/libaprilui) and Atres (http://sourceforge.net/projects/libatres) to build upon and have a unified text rendering and GUI system. Keep in mind that you will need to add hltypes (http://sourceforge.net/projects/libhltypes) and gtypes (http://sourceforge.net/projects/libgtypes) as well. You will love them. They provide high level types functionality in C++ so you don't have to bother with STL.
EDIT: I'm an idiot. You are still using Python fully, aren't you?
yep python, github lists my code as 84% python and 16% ruby. I'm fairly sure they are basing that on file count not lines written though.
I don't see the harm in making a dll or two in a C language for something that merely renders the graphics.
Actually this is kind of the point. o.o Each of these libraries can be compiled into a DLL and it will all work fine. Though, they aren't in C, they are in C++. ._.
python can use c++ dll's and so's too
I know. But as far as I remember it's a bit of a bother to make Python use C++ DLLs. C DLLs are not a problem, but C++ somewhat are.
Well, in any case, you are free to try. xD We've started writing a proper documentation today. I have documented 4 classes in hltypes and will do a probably the rest tomorrow. Then I have to work on another project so the documentation for the other libraries will have to wait for a while. We're also putting together a wiki for it at Sourceforge.
just though I'd give people an update.
you should know that I'm a freshmen in college so while I really like working on this project I can't work on it when I have other responsibilities. so unless other programmers help me out I can't move very fast.
I'd also like to point out that helping me is very, very easy. you don't even have to work with the project full time. just fork my github repository and create your own. then work on adding a feature. when its done. send me a pull request and I'll review your code for integration into the main repository project. while I'd appreciate it if you contacted me and discuss what your doing. you can basically work entirely independent from me. you don't even have to do something major. you want to make a base for a larger system? go a head, you'll save me hours of trouble when I get around to finishing it off. now when I'm done your code might not be entirely intact, I may go through and fix or change some things depending on what happens in the finishing but you''ll still of been a great help.
that said, current progress. still at the same point sadly. I finished of the SDL version of the map editor only to find that it was only a tiny bit faster than the GDI version due to the fact that GDI still have to take the final product and blit it to the screen, if I had been to use an SDL context instead of passing an SDL surface to GDI things would of been different.. at it is now. I'm working on creating a OpenGL tile-map class that I can use to draw the map. it is a lot of overhead code and an extra library included but I know for a fact that this time I'll be able to run it at the needed speed.
road map right now is
*finish map display
*create a action framework that changed project data and allows for undo redo operations.
*work on map editing and get the brush system working
*public, feature incomplete, alpha release.
Hey, i just came to think that will this support RMXP project files natively? Because i'm thinking that if i won't finish RM before this is completed, i might switch to this. That is if it will support rmxp project data natively... Or via a plugin...
An RMXP project is nothing but a short string that lists the version of RMXP. Open an .rxproj file with notepad and see for yourself. All project data is already within the game data files.
yes, when it is completed you will be able to open an existing RMXP project by importing it. it may take a few seconds but after that the project will be in a format that can be loaded by python much much faster. of course when you want to test the game you'll have to export the project files again.
Ok, good to know. Thanks.
Chaos-Project has started a communality project to create Advanced RPG Creator (ARC) (http://forum.chaos-project.com/index.php/board,68.0.html).
As I'm now one of the four core developer sworking on ARC this project has become redundant. the projects are merging and RMPY will form the base of the ARC editor. nothing has been lost, in fact much has been gained. now there are 4 people working on the project and it will come with a new better engine instead of just a better editor.
I hope people aren't disappointed because I'm not.
all the best ~ Ryex