RPGM Ren'Py RPGM 2 Renpy, applied to My Girlfriend's Amnesia

r_o_u_k

Newbie
May 6, 2017
35
113
Hi,
I've been trying to (unofficially) port My Girlfriends Amnesia to Ren'Py, because I hate RPGMaker. Since, in the MV version, they use json and js files, I figured it wouldn't be that difficult.
Indeed, I've managed to create a tool to extract dialogs and generate corresponding Ren'Py scripts. There is some partial menu handling, and almost no condition checking as i still haven't figured how RPGMaker works.

Anyway, that may not be necessary, because, as is, and with manual editing of dumped Ren'Py scripts, I could certainly make everything necessary to build a version which could use the original games assets.

Would anybody be interested ?
 

r_o_u_k

Newbie
May 6, 2017
35
113
I will still try to avoid manual edition of generated renpy scripts. I'd prefer them to be generated directly. That way, the porting is quite easier. For now here is a sample of what my tool can generate.

Code:
image img_4Hours = "4Hours.png"
image img_DR1 = "DR1.png"
image img_DR2 = "DR2.png"
image img_DR3 = "DR3.png"
image img_Now = "Now.png"
image img_TUT1 = "TUT1.png"
image img_TUT2 = "TUT2.png"
image img_TUT3 = "TUT3.png"

label map_001_22_0:

# No handler for Item(code=221, indent=0, parameters=[])
    TutVoice "Would you like to see a short tutorial about the features of the game to better understand them? (Please do to avoid issues later in the game due to lack of information)"
menu:
    "Yes":
        jump map_001_22_0_yes_1
    "No":
        jump map_001_22_0_no_1
label map_001_22_0_yes_1: #402
# No handler for Item(code=221, indent=1, parameters=[])
    pause 0.06
    scene img_TUT1
# No handler for Item(code=222, indent=1, parameters=[])
    TutVoice "On the top left side of the screen you will see the \"trackers\" that let you know how your girlfriend is feeling regarding your behaviour. There are three ways you can end the day, by being a gentleman, neutral or a jerk. This is how they work:"
    TutVoice "The more you act like a gentleman and a good boyfriend the more she will like you, this is represented by the amount of hearts under her hud. Have a look at how the hearts look when you are nice."
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=221, indent=1, parameters=[])
    pause 0.06
    scene img_TUT2
# No handler for Item(code=222, indent=1, parameters=[])
    TutVoice "There are a maximum of 7 hearts that you can acquire and by finishing the day with the maximum amount opens the gentleman ending. You can tell by the last heart when you reached maximum as it is different from the others."
    TutVoice "By finishing with the maximum amount, be it \"good\" hearts or \"bad\" hearts she will have some feelings left over for you in the next day. For example completing the day with maximum \"good\" hearts, the next day she will start with 3 \"good\" hearts. Same goes for \"bad\" hearts."
    TutVoice "By acting like a jerk, hearts will be deducted. Take a look at the hearts right now."
What is awful in the RPGMaker jsons are the animations. There are no loops ! Each loop animation is repeated just like img1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 and so on.

I haven't figured out what items 221, 222 or 122 are meant to do in RPGM. Does anybody knows ?
EDIT:
I figured it out hust by reading this post outside my text editor. I suppose it will call another event just by triggering its condition. In this tutorial, it makes the hearts appear or disappear.
Nice, because it can be scripted.
 

osmcuser132

Well-Known Member
Modder
Aug 8, 2017
1,037
3,784
Hmmm, I was kinda also looking in to porting MGA or EL as my next project now that my AEA porting is working with minimal manual work.

FYI
122: Control Variables
221: Fade-out Screen
222: Fade-in Screen
 

r_o_u_k

Newbie
May 6, 2017
35
113
@osmcuser132 , thanks ! I will add that to my converter. (At least 221, 222)

Please keep in mind i'm new to RenPy and RpgMaker, even if I'm a senior Python developer. I wanted to build a converter as a way to learn Ren'Py...

Here is a very WIP result. I did not edit the Ren'Py scripts. It's only pure script generation, so a lot of things are not processed.
- Hearts not appearing (i will have to learn who to use layers.)
- Counter not handled (I will have to make custom translation fron rpgmv's jsons 122, but i think i figured it out.)
- loop detection should be implemented. Raw scripts are ugly, with their unfolded loops. I don't know if only this game or all those made with RPGmaker MV that have such an awful way to perform animations.

Moreover, i did not figure out yet how to load directly the rpgmvp files in Ren'Py, so i bundled a few "stolen" images for test.
As i'm against doing this, I will try to overload the image loading part of Ren'Py to be able to decipher the rpgmvp files so that it only require them to be directly copied in the game folder.

 
  • Like
Reactions: Themex

osmcuser132

Well-Known Member
Modder
Aug 8, 2017
1,037
3,784
The rpgmvp files are encrypted PNG files, basically you need to decrypt them.
In this post you can find a Python decryptor for RPGM MV


Secondly, I also used PIL to convert them to WEBP format as well to decrease the size of the game.
 

r_o_u_k

Newbie
May 6, 2017
35
113
It's indeed this tool i used to get the images. But i want to perform it in runtime in RenPy, so that it is not necessary to convert them beforehand.
It will give me an incentive to browse renpy source code.
 

noorman22

Newbie
May 10, 2018
54
6
I will still try to avoid manual edition of generated renpy scripts. I'd prefer them to be generated directly. That way, the porting is quite easier. For now here is a sample of what my tool can generate.

Code:
image img_4Hours = "4Hours.png"
image img_DR1 = "DR1.png"
image img_DR2 = "DR2.png"
image img_DR3 = "DR3.png"
image img_Now = "Now.png"
image img_TUT1 = "TUT1.png"
image img_TUT2 = "TUT2.png"
image img_TUT3 = "TUT3.png"

label map_001_22_0:

# No handler for Item(code=221, indent=0, parameters=[])
    TutVoice "Would you like to see a short tutorial about the features of the game to better understand them? (Please do to avoid issues later in the game due to lack of information)"
menu:
    "Yes":
        jump map_001_22_0_yes_1
    "No":
        jump map_001_22_0_no_1
label map_001_22_0_yes_1: #402
# No handler for Item(code=221, indent=1, parameters=[])
    pause 0.06
    scene img_TUT1
# No handler for Item(code=222, indent=1, parameters=[])
    TutVoice "On the top left side of the screen you will see the \"trackers\" that let you know how your girlfriend is feeling regarding your behaviour. There are three ways you can end the day, by being a gentleman, neutral or a jerk. This is how they work:"
    TutVoice "The more you act like a gentleman and a good boyfriend the more she will like you, this is represented by the amount of hearts under her hud. Have a look at how the hearts look when you are nice."
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=122, indent=1, parameters=[1, 1, 1, 0, 1])
    pause 0.04
# No handler for Item(code=221, indent=1, parameters=[])
    pause 0.06
    scene img_TUT2
# No handler for Item(code=222, indent=1, parameters=[])
    TutVoice "There are a maximum of 7 hearts that you can acquire and by finishing the day with the maximum amount opens the gentleman ending. You can tell by the last heart when you reached maximum as it is different from the others."
    TutVoice "By finishing with the maximum amount, be it \"good\" hearts or \"bad\" hearts she will have some feelings left over for you in the next day. For example completing the day with maximum \"good\" hearts, the next day she will start with 3 \"good\" hearts. Same goes for \"bad\" hearts."
    TutVoice "By acting like a jerk, hearts will be deducted. Take a look at the hearts right now."
What is awful in the RPGMaker jsons are the animations. There are no loops ! Each loop animation is repeated just like img1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 and so on.

I haven't figured out what items 221, 222 or 122 are meant to do in RPGM. Does anybody knows ?
EDIT:
I figured it out hust by reading this post outside my text editor. I suppose it will call another event just by triggering its condition. In this tutorial, it makes the hearts appear or disappear.
Nice, because it can be scripted.
 

r_o_u_k

Newbie
May 6, 2017
35
113
It's Ren'Py. But the converter i'm working on is just a bunch of scripts i'm building as required.
Learn how to use Ren'Py, it's quite easy to use.
 

r_o_u_k

Newbie
May 6, 2017
35
113
Here ! Even if another unofficial port has been already posted, I will post here the first day of my conversion to Renpy of My GF Amnesia.
I took a different approach : building a real RenPy game instead of running an emulator of RPGMV in RenPy.

*edit*
Here should be a link to a google drive file. I don't know why it does not appear.

*edit bis*
Still no luck linking. Here is another attempt...


Of course, this is still not perfect, and there are some things I wish to add :
- background generations from maps in rpgmv instead of manually edited menu.
- auto skip of only choice menu.
- loop detection for sex scenes.

I was surprised how linear the beginning of the game is. Rpgmv makes games more complex than they really are. I can ctrl my way along this first day with only 4 or 5 relevant choices. Most of them do not influence anything in the game.

Feel free to explore the sources...
Most of them are generated, except the descriptions of the menus in between map events, some GUI files and the main script files. That means that i should be able to easily update something by regenerating everything.
 
  • Like
Reactions: Lorenz1

Lorenz1

Active Member
Nov 1, 2017
910
2,412
Here ! Even if another unofficial port has been already posted, I will post here the first day of my conversion to Renpy of My GF Amnesia.
I took a different approach : building a real RenPy game instead of running an emulator of RPGMV in RenPy.

*edit*
Here should be a link to a google drive file. I don't know why it does not appear.

*edit bis*
Still no luck linking. Here is another attempt...


Of course, this is still not perfect, and there are some things I wish to add :
- background generations from maps in rpgmv instead of manually edited menu.
- auto skip of only choice menu.
- loop detection for sex scenes.

I was surprised how linear the beginning of the game is. Rpgmv makes games more complex than they really are. I can ctrl my way along this first day with only 4 or 5 relevant choices. Most of them do not influence anything in the game.

Feel free to explore the sources...
Most of them are generated, except the descriptions of the menus in between map events, some GUI files and the main script files. That means that i should be able to easily update something by regenerating everything.

Will it work for mac?
 

r_o_u_k

Newbie
May 6, 2017
35
113
I don't know. The game was generated for Windows, Mac and Linux. But as i don't have a mac, I cannot test it.