Skip to content
This repository has been archived by the owner on Mar 3, 2024. It is now read-only.

Latest commit

 

History

History
120 lines (79 loc) · 4.38 KB

CONTRIBUTING.md

File metadata and controls

120 lines (79 loc) · 4.38 KB

Icon Contributing to fgmk

I am very happy you are interested in contributing!!! There are several ways one could contribute to the fgmk project. This guide should help you getting started.

The first rule is don't be afraid of opening issues. They don't have to be code related only.

Table of Contents

Introduction

Documentation

Coding

Assets

Testing

BugHunting

Translating

Introduction

The fgmk project is a small project, it's composed of this repository, which is the Game Editor, and some additional ones:

  • fgmkJsEngine: this is a javascript engine, it can be contained in a single index.html file that can be dropped in the game folder and run the game files.
  • fgmkPackaging: this repository deals with packaging the interface (outside of PyPI) and in the future also the games - as electron apps, or whatever new ways may be present.
  • fangamk: historical repository, right now hosts some experimental code and documentation. This repository is probably going away.

The focus of this project is being able to make a game, in a way that the hard parts are abstracted first in the editor, then in the engine and last in the assets - including the descriptor files. Also the descriptor files should be easy to open in a text editor so you can understand the logic the engine is playing.

It should be easy enough that a child should be able to open and modify a text file and see the change in the game without breaking it - so the formatting of the descriptor files should be intuitive.

Last but not least, the editor should be accompanied by an interesting and small game, so one could play, and understand the game logic by copying from this game.

Documentation

Documentation is stored in the docs/ folder. This is the official documentation. You can help by editing there.

YouTube videos are considered documentation too, since they are faster to learn from. If you make something tell in the gitter channel or open an issue!

Coding

The code is currently very rushed together, it could be improved a lot.

If you are adding a feature to the engine, so it can be reused for several games, reflect about the minimum customization that feature could have. Adding a feature to the engine will imply knowing how to modify the jsons so it can be accessed, if needed, and in this case it will imply in changing the editor so it can generate cohesive json files, and also being able to open and edit them.

Assets

Currently the editor is very bad at handling a large assets library. This is because it's not a problem right now. If you want to make this a problem - and I would be very happy with this problem - please consider contributing assets to the project. The assets can be png images, sound effects or music. Right now the engine doesn't support music, but probably will in the future.

The game uses 32x64 pixel images for the sprites of the characters and 32x32 pixel for each tile in the game map. I suggest you explore the existing images and keep the style compatible.

Don't rip existing game images, only original content that can be made available with a permissive license should be submitted. This asset also won't be accepted right a way, since once a great number of assets exist that will demand having a place to store and download them.

Testing

for human testing see BugHunting.

The interface could use some automated testing, if you want to help writing tests, this would be awesome!

The tests should be able to run by typing

python3 setup.py test

# note: in your system the python 3 executable may be named just python

BugHunting

If you have time to do help catch some usability bugs, please use the project and submit your thoughts through the issues page.

Translating

I have no idea how to make multilanguage python qt projects. So right now it would be more useful translating the documentation. Alternatively, if you do know, please share! You can find my email in the setup.py.