Automatic game data translator for RPGMaker-MV

Overview

RPGMaker-MV Translator 🕹️

🎮 Use AI to translate all the dialogs and texts of your RPGMaker automatically.

👊 You worked hard to make your game, now let AI work hard for you.

Original language 🇮🇹 Automatic Translation 🇺🇸

Why should you use it? 🤔

👉 RPG games usually consist of many thousands of dialog events and other forms of text displaying valuable information to understand the plot of the game, but also to know the effect and proprieties of various objects present in the game such as items, weapons, skills, enemies, ... .

👉 Translating an RPG game from one language to another would thus require an enormous amount of time and effort for a human, but it is a task that can be easily accomplished by a machine, or at least speed up considerably the work of a human translator saving costs and time.

👉 This project implements a tool that is able to automatically translate a game deployed with RPGMaker-MV.

Game files overview 🎮

Game files containing the data we want to translate are usually contained in the folder data/. Among these json files, the ones we are going to translate are the following:

  • Armors.json: contains the name and the description of all armors 🛡️ . ️
  • Weapons.json: contains the name and the description of all weapons 🗡️ .
  • Items.json: contains the name and the description of all items 💡 .
  • Skills.json: contains the name and the description of all skills .
  • Enemies.json: contains the name of all enemies 👾 .
  • MapInfos.json: contains the name of all maps 🗺️ .
  • Classes.json: contains the name of all classes 🧙 .
  • States.json: contains the name and the relative messages of all states .
  • Actors.json: contains the profile of all characters 👩 .

Other files that need to be translated, but deserve particular attention are:

  • CommonEvents.json: contains the dialogs relative to the common events in the game 🤖 .
  • MapXXX.json: contains the dialogs relative to all the maps. Basically it contains most of the dialogs on the game which would probably require a massive amount of time if translated manually 🗺️ .

The remaining files are not translated since they don't contain much text to translate such as System.json or there is nothing critical to translate such as Animations.json.

Usage 💡

Translate the dialogs files

Note: the program uses a Google Translate API to perform translations, thus a stable internet connection is required.

  1. Clone this repo: git clone https://github.com/davide97l/rpgmaker-mv-translator.
  2. Install dependencies: pip install -r requirements.txt.
  3. Copy CommonEvents.json and all the MapXXX.json files from you game data/folder to this project dialogs folder.
  4. For a basic usage, run the command:
  python dialogs_translator.py --print_neatly --source_lang it --dest_lang en
  1. Most important arguments explanation:
    • source_lang: (string) the original language of your game (en - english, it - italian, zh - chinese, fr -french, sp - spanish, de - deutsch, ...).
    • dest_lang: (string) the language you want to translate your game.
    • verbose: (bool) if True, show each original and corresponding translated sentence during execution.
    • input_folder: (string) the folder containing the files to translate (default: dialogs).
    • print_neatly: (bool) if True, adapts the translated sentence to fit the dialog window. This is because, by default, each dialog window row is a unique string itself and its length can change after translation. This option also improves the translation quality because each dialog window would be translated at once without translating each row one by one which causes loss of context. If you are curious how this algorithm works you can check this blog.
    • max_len (int): Used only when print_neatly is True. Indicates the length of the dialog window.
  2. After execution, which may take a while depending on the number and size of files, your translated files will be saved in data_xx where xx is the code of the translated language (dialogs_en if --dest_lang en).
  3. Copy back the content of dialogs_xx to the folder data of your game replacing the old files.

Example of print neatly with max_len=32 translating from english to italian:

   |The hunter has won the battle  |
   |and unlocked a new secret      |
   |skill.                         |
   
   After italian translation without print neatly:
   
   |Il cacciatore ha vinto la batta|glia
   |e sbloccato una nuovo segreto  |
   |potere.                        |
    
    After print neatly:

   |Il cacciatore ha vinto la      |
   |battaglia e sbloccato un nuovo |
   |potere segreto.                |

Translate the object files

  1. Copy the files you want to translate among Armors.json, Weapons.json, Items.json, Skills.json, Enemies.json, MapInfos.json, Classes.json, States.json, Actors.json from you game data/ folder to this project object folder.
  2. For a basic usage, run the command:
  python objects_translator.py --source_lang it --dest_lang en
  1. The arguments are the same as the ones used by dialogs_translator.py, and print neatly is automatically used in the description field. By default input_folder is set to objects).
  2. After execution, your translated files will be saved in objects_xx where xx is the code of the translated language (objects_en if --dest_lang en).
  3. Copy back the content of objects_xx to the folder data of your game replacing the old files.

Support

If you found this project interesting please support me by giving it a , I would really appreciate it 😀

More

Check this link to play some of my RPGs 😍 .

Owner
Davide Liu
Master degree student at Tsinghua University in Advanced Computing.
Davide Liu
CoinTex: Cross-platform Multi-Level Game created in Python using Kivy

CoinTex: Cross-platform Multi-Level Game created in Python using Kivy CoinTex is a multi-level adventure game created using the Kivy cross-platform Py

Ahmed Gad 57 Dec 11, 2022
Text-Adventure-Game [Open Source] A group project by the Python TASK Force

Text-Adventure-Game [Open Source] A group project by the Python TASK Force

Mircea Dumitrescu 2 Sep 17, 2021
Typing Game : from nob to good

Fast and Curious A game to learn/improve keyboard typing skills. The main idea is to improve your typing skills and at the same time learn fun facts (

Raffaele Fiorillo 7 Jun 13, 2022
Replicating Minecraft World Generation in Python

Minecraft World Generation in Python This is an attempt to replicate Minecraft world generation in Python. This is part of an article published on Med

Bilal Himite 159 Dec 19, 2022
Code and outputs from analysis determining that the wordle game can always be won in six moves.

wordle_worst_case_analysis Code and outputs from analysis determining that the wordle game can always be won in six moves. This is for the general cas

2 Aug 19, 2022
AI that plays Flappy Bird Game using the python module NEAT.

Flappy Bird AI [NEAT] AI that plays Flappy Bird Game using the python module NEAT. Instructions Install Python Modules: pip3 install -r requirements.t

Abhisht 5 Jan 26, 2022
Lint game data metafiles against GTA5.xsd for Rockstar's game engine (RAGE)

rage-lint Lint RAGE (only GTA5 at the moment) meta/XML files for validity based off of the GTA5.xsd generated from game code. This script accepts a se

GoatGeek 11 Sep 18, 2022
WIP python/pygame 2D zombie shooter

2d-shooter project A single/multiplayer co-op survival small space zombie shooter. If you'd like to contribute, feel free to join the discord! INSTALL

36 Dec 08, 2022
Multiplayer 2D shooter made with Pygame

PyTanks This project started as a one day project with two goals: Create a simulated environment with as much logic as possible written in Numpy, to o

Felix Chippendale 1 Nov 07, 2021
Quiz game made entirely with python and pygame for school work

Tabela de conteúdo Descrição Como instalar Linguagens usadas Contribuidores Créditos Problemas com o jogo? Contate-nos Descrição Quiz feito inteiramen

3 Apr 12, 2022
Python game engine for 2D multiplayer online games.

LAN-Caster The goal of LAN-Caster is to provide an easy-to-use code base (game engine) for developing 2D multiplayer online games. LAN-Caster original

Douglas Bakewell 1 Feb 11, 2022
Solo CLF project about the creation of the FlickColor game in Python with very precise instructions.

Solo CLF project about the creation of the FlickColor game in Python with very precise instructions.

COZAX 1 Dec 09, 2022
PingPong - Simple Ping Pong Game Made In Python

PingPong Basic Ping Pong Game Made In Python

ʀᴇxɪɴᴀᴢᴏʀ 1 Jan 01, 2022
Discord based board game, Sneks and Ladders

sneks-and-ladders Discord based board game, Sneks and Ladders intro This is the code-base for the Discord based game, Sneks and Ladders, as used for s

Yohei Nakajima 3 Nov 04, 2022
An old time game Tic-Tac-toe

A Tic Tac Toe Bot This is the code repository for my article on Medium - Playing Games with Python - Tic Tac Toe, where I have tried to take the famou

Jigyanshu 0 Feb 25, 2022
Console 2D GameEngine {C2DGE} [0.1.0]

Console 2D GameEngine {C2DGE} [0.1.0] By Grosse pastèque#6705 The Project's Goal : This projects was just a challenge so if you have bad reviews, it's

Big watermelon 1 Nov 06, 2021
Pyxel is a retro game engine for Python.

Pyxel is open source and free to use. Let's start making a retro game with Pyxel!

Takashi Kitao 11.2k Jan 09, 2023
Python Knots and Crosses game, with customizable markers and more!

Knot-and-Crosses Python Knots and Crosses game, with customizable markers and more! Features: Ability to change your marker Ability to change how many

4 Nov 07, 2021
Practice the use of the random library to get the user guess the result.

Guessing Game Practice the use of the random library to get the user guess the result. Additional description about the project and its features. Buil

Herbert Orellana 1 Dec 13, 2021
Easily manage wine prefixes in a new way. Run Windows software and games on Linux

Bottles Easily manage wineprefix using environments Documentation · Forums · Telegram group · Funding 📚 Documentation Before opening a new issue, che

Bottles 4.1k Jan 09, 2023