Skip to content

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.

Notifications You must be signed in to change notification settings

SmikeMcScrewup/RPG-Paper-Maker

 
 

Repository files navigation

RPG Paper Maker


Join the chat at https://gitter.im/RPG-Paper-Maker/Lobby Build Build

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.

Project organization

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 the json 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 and Javascript. It is also interpreting all the json 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.

How to build the project

  • 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.

Project structure

Tree

--- 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

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.

UI design

We are using the Qt creator designer for generating XML files for all the widgets. These files have a .ui extension.

SuperListItem

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);

Contribute to the project

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.

How to contribute

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.

Automated tests

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.

Code style

Try to respect the code style as much as possible. See the wiki page for code style here.

Documentation

Always check out our documentation here.

Feature requests

Check out the feathub for voting for your favorite next coming soon feature or even proposing your own one!

Feature Requests

About

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.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 97.4%
  • QMake 1.5%
  • C 0.7%
  • GLSL 0.4%
  • Shell 0.0%
  • Batchfile 0.0%