Skip to content

Contribute

Jan Sandström edited this page Apr 28, 2020 · 4 revisions

Roles

The development is fairly layered. The following roles exists in the project as of now, see dungeon generation to to better understand what they do.

  • Dungeon generation designer/developer
  • Room generation designer/developer
  • Room component designer
  • Graphical asset manager/designer
  • Storyboard developer/designer
  • Tester

Basically we welcome game designers, graphic designers and lua developers.

Getting started

Read up on our development.

Solarus Games' official video tutorials to the quest editor is also a good start:
http://wiki.solarus-games.org/doku.php?id=video_tutorial

Component design guidelines is also a good start if you aim to design components.

Debugging

Certain generation and gameplay variables can be set by manipulating the settings.dat. See settings.

Repository

The git repository is at https://github.com/Legofarmen/tunics
The repository only contains the data folder, you need to add the solarus engine yourself.

To clone the repository use: git clone https://github.com/Legofarmen/tunics.git

Get git for windows here: http://git-scm.com/download/win

Learn git here: http://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

If you are working in the quest editor, close the editor before pulling to avoid project_db.dat merge conflicts.

Commit message guidelines

Message should describe the purpose of the change in imperative form; the message should describe what the changes do.

If your commit message cannot fit on one line, use the first line to write a summary followed by an empty line followed by more lines with the full message, as per github standard.

Workflow

This section outlines the recommended basic workflow for contributing to the official repository of Tunics!, complete with git cheat sheet.

State your case

Create an issue

Preferably in the projects github issue tracker: https://github.com/Legofarmen/tunics/issues

Wait for buy-in and discussion of your idea.

Smaller enhancement can be submitted for review as pull requests if the are polished and tested.

Setup repositories

First, create your own fork of https://github.com/Legofarmen/tunics.git.
Find out your SSH clone URL - henceforth referred to as 'YOUR_FORK'.

Configure git

git config --global user.name "John Doe"  
git config --global user.email johndoe@example.com

Create a local repo by cloning your fork

git clone YOUR_FORK  
cd tunics  
git status  

Add the main repo as your upstream remote

git remote add upstream https://github.com/Legofarmen/tunics.git  
git remote set-url --push upstream YOUR_FORK  
git fetch --all  
git remote -v  

Configure your upstream branches

git branch --set-upstream-to=upstream/master master  
git branch --track develop upstream/develop  
git branch -vv  

Present your code

Create a topic branch

git fetch upstream  
git checkout -b YOUR_TOPIC_BRANCH upstream/develop  

Commit your changes

git add FILES  
git commit  

Repeat as needed.

Sync your topic branch with the upstream develop branch

git fetch upstream  
git rebase upstream/develop  

After any manual conflict resolution do this:

git add UPDATED_FILES  
git rebase --continue  

Make your changes public

git push --set-upstream origin YOUR_TOPIC_BRANCH  

Create a pull request

  • Go to your fork.
  • Select YOUR_TOPIC_BRANCH.
  • Create pull request with:
    • base fork: Legofarmen/tunics
    • base: develop
    • your fork: your fork/tunics
    • compare: YOUR_TOPIC_BRANCH
    • Title: A descriptive title
    • Description: A summary of the changes

Now what

Maintainers of Legofarmen/tunics give feedback and possibly further instructions.

Get your changes accepted

Add another commit

git add FILES  
git commit  

Push your changes

git push  

Now what

Maintainers of Legofarmen/tunics give feedback and possibly further instructions.

Clean up

Update your local and fork master branches

git fetch --all 
git branch -vv
git merge --ff-only master upstream/master  
git merge --ff-only develop upstream/develop  
git push origin master  
git push origin develop  

Remove obsolete branch from your fork

git push --delete origin BRANCH

Remove obsolete branch from your local repository

git checkout develop
git branch -d BRANCH

Communication

We are lacking an IRC channel at the moment. Communication mostly occurs through github issues.