RPG Maker PY (RMPY)

Started by Ryex, September 07, 2010, 03:57:31 pm

Previous topic - Next topic

Ryex

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

WARNING LARGE IMAGE: ShowHide


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
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

ForeverZer0

Spoiler: ShowHide


Seriously, though, it looks like its coming along good.  :D
I am done scripting for RMXP. I will likely not offer support for even my own scripts anymore, but feel free to ask on the forum, there are plenty of other talented scripters that can help you.

Blizzard

Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Ryex

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
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

Blizzard

Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Ryex

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.

WARNING LARGE: ShowHide


note that I limited the fps to use less power. seems to help. I'll have to find the right balence.
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

Ryex

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
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

Ryex

January 18, 2011, 02:30:18 am #167 Last Edit: January 18, 2011, 02:31:56 am by Ryex
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.
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

Ryex

January 19, 2011, 11:23:32 pm #168 Last Edit: January 20, 2011, 01:26:23 am by Ryex
and importing is working with the new dialog
Spoiler: ShowHide

Spoiler: ShowHide

Spoiler: ShowHide


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
Spoiler: ShowHide

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.
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

Starrodkirby86

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:

What's osu!? It's a rhythm game. Thought I should have a signature with a working rank. ;P It's now clickable!
Still Aqua's biggest fan (Or am I?).




Ryex

January 21, 2011, 05:14:21 am #170 Last Edit: January 21, 2011, 05:21:29 am by Ryex
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 no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

Blizzard

I think you can always use c-type arrays in Python. Just google how to use them.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Ryex

thats the point numpy arrays are c-type arrays
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

Blizzard

Ah, ok. xD Didn't know that. xD
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

legacyblade

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)

Ryex

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
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

The Niche

Duuuuude...this entire forum is probably gonna evolve around making extensions for RMPY...
Level me down, I'm trying to become the anti-blizz!
Quote from: winkio on June 15, 2011, 07:30:23 pm
Ah, excellent.  You liked my amusing sideshow, yes?  I'm just a simple fool, my wit entertains the wise, and my wisdom fools the fools.



I'm like the bible, widely hated and beautifully quotable.

Dropbox is this way, not any other way!

Ryex

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.
I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />

legacyblade

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.

The Niche

Level me down, I'm trying to become the anti-blizz!
Quote from: winkio on June 15, 2011, 07:30:23 pm
Ah, excellent.  You liked my amusing sideshow, yes?  I'm just a simple fool, my wit entertains the wise, and my wisdom fools the fools.



I'm like the bible, widely hated and beautifully quotable.

Dropbox is this way, not any other way!