RPG Paper Maker is a game making engine, free for non commercial use, allowing you to create a 3D universe with many 2D sprites and even 3D objects using a simple interface for all available platforms: Windows, Linux, and MacOS.
The organization contains some independent repositories. If you want to fork several repositories, you should put them all in the same parent root. Example:
--- RPM <- A parent folder containing all your repos
|--- RPG-Paper-Maker <- The engine repo that will use infos from your local Game-Scripts repo
|--- Game-Scripts <- The repo editing game scripts
|--- ... (other repos)
- RPG-Paper-Maker is the game editor software (RPG Paper Maker). It is entirely written in
C++
and is managing all thejson
files linked to a project such as maps, statistics... - Game-Scripts is all the stuff needed for building a game (mainly Javascript scripts). We are using the executable and scripts in order to create a fresh new project in the software. This program is using
QML
andJavascript
. It is also interpreting all thejson
files that are generated by the RPG Paper Maker engine. - Game-documentation contains all the stuff for generating javascript game documentation for users.
- Basic-Ressources contains all the basic ressources that the users can use for there projects (pictures, musics...).
- Updater is the updater that installs and check for RPG Paper Maker updates.
- Install Qt on your OS with the Open Source installation. During the installation, you should select the most recent Qt version (/!\ Linux users should use Qt5.8 for having musics working). We recommend you to use the QtCreator IDE too. You should also install gcc compiler if it is not already done.
- Clone and go to this repo
- Update the modules with the command:
Linux:
./update-mods
Windows:
./update-mods.bat
You should run this script when you want to update the recent dev changes for Basic Ressources and Game Scripts. This will first search your local changes, and then module github repo if you didn't clone it.
- Open QtCreator
- Open the
RPG-Paper-Maker.pro
file. - Run qmake (right click on project root).
- Select the project to run (EditorApp or Test) in the bottom-left configuration pop-up
- Build and run the project
If you are having any error that means that you are missing a package. Check the error and try to find out what's missing. Please report any kind of error at [email protected] to help other contributors.
--- RPG-Paper-Maker
|--- RPG-Paper-Maker.pro <- The .pro for opening the project with Qt Creator
|--- update-mods / update-mods.bat <- Script for copying dev changes done in other git repos
|--- versions.json / trees.json <- Json used by the updater for checking files to update
|--- .appveyor.yml / .travis.yml <- Automated build tests
|--- Editor
|--- Editor.pro <- The sub-project to build the editor library
|--- ressources.qrc <- Linking all the ressources (shaders, images...) used in the editor
|--- Content <- Content is a folder that will contain all the stuff that needs to be copied in the build folder
|--- basic <- The basic Content folder to copy when creating a new project
|--- Controls <- Controllers used for complex dialog boxes or widgets / panels. Should contain all the actions to do on the dialog model
|--- MapEditor <- The map editor controller separated in several files
|--- CustomWidgets <- All the common custom widgets that can be re-used often are here. These components inherit from QWidget classes.
|--- Dialogs <- All the dialog boxes
|--- Commands <- All the dialog boxes used for object event commands
|--- SpecialElements <- All the dialog boxes used for special elements (autotiles, walls, 3D objects)
|--- Systems <- All the dialog boxes used for system elements (SuperListItem classes)
|--- Enums <- All the enumerations
|--- MapEditor <- All the map editor models (sprite, floor, etc.)
|--- Map <- The map model (separated in several files)
|--- MathUtils <- Copy of math utils from an old Qt version for 3D drawings
|--- Models <- All the models used for the database
|--- GameDatas <- All the gamedata files models
|--- System <- All the models used for system elements (SuperListItem classes)
|--- Ressources <- All the images (icons) used for the editor
|--- Shaders <- All the shaders programs
|--- Singletons <- Contains RPM singleton
|--- Themes <- All the themes of the editor
|--- EditorApp
|--- EditorApp.pro <- The sub-project to build the editor executable
|--- main.cpp <- The main function instructions
|--- Test
|--- Test.pro <- The sub-project to build the test executable
RPM
singleton is used for storing constants such as fix paths, integer values, etc. It also stores pointers to the current opened project and engine settings in order to have an access to it at any time in the program. Common functions are also available. For example, a function to write a Serializable
class in a .json file is available.
We are using the Qt creator designer for generating XML files for all the widgets. These files have a .ui extension.
The SuperListItem
class is used for being displayed with PanelSuperList
or WidgetSuperTree
, and stored easily in .json files. It has at least an ID and a name. For example, a monster in a game is a SuperListItem
(SystemMonster
class).
A list of SuperListItem
will be stored in a QStandardItemModel
model class. Here is a common way to add a SuperListItem
to a model list:
QStandardItem * item = new QStandardItem();
SuperListItem* super = new SuperListItem(i, "My item"); // COuld be SystemItem class for example
item->setData(QVariant::fromValue(reinterpret_cast<quintptr>(super)));
item->setFlags(item->flags() ^ (Qt::ItemIsDropEnabled));
item->setText(super->toString());
model->invisibleRootItem()->appendRow(item);
You can help by contributing on the engine or/and the game engine. First, be sure to be familiar with git, how to fork a project and how to submit a pull request.
That means that you should:
- Click on the fork button.
- Clone your fork.
- Add a remote to the original project in order to always have access to the
develop
branch:
git remote add rpm https://github.com/Wano-k/RPG-Paper-Maker.git
- Before starting any correction, you should first pull the develop progress in order to be sure that you have the most recent version of development:
git pull rpm develop
After that, you should create a branch for your correction:
git checkout -b <choose_a_branch_name>
When your correction is done, push it (always in your branch). Finally, just propose you branch as a new pull request in the original project.
RPG Paper Maker has a master
branch for stable releases and a develop
branch for development where you should always try to submit your features.
If you want to add new features or correct a bug for the next stable version, we are always using this Trello board which is listing all the features that needs to be completed for the next release. If you would like to do one of the task in this todo list, you should signal that you are on it in the Git chat. Same thing if you want to do anything that is not already in the todo list.
We recommend contributors to add unit tests to verify the behavior of new features and bugfixes as much as possible. Start by testing low-level functions, then depending on the complexity, add tests for higher level behaviors.
Everything related to testing is located in the Test
folder, which contains the test project Test.pro
as well as test sources test_xxx.cpp
. We use Qt Test as test framework; you will find more information in the official documentation as well as in tutorials such as this series on making unit tests for both plain C++ and Qt GUI.
The Test project is still very young, so there are not many test files. When adding a test for a class MyClass
that doesn't have an associated test class already, just add a test_myclass.cpp
to the Test project, directly under the Test
directory. Later, when we have more tests, we will organize them in sub-directories.
All tests are run during Continuous Integration with Travis, including during PR submission.
Try to respect the code style as much as possible. See the wiki page for code style here.
Always check out our documentation here.
Check out the feathub for voting for your favorite next coming soon feature or even proposing your own one!