Getting Started

This guide is meant for new team members to orient themselves and get started working on Kandria. In order to get set up and ready for development, please follow the setup guide. If you need information on the project structure and organisation, see the relevant sections below. Please also regard the guidelines for contributions.

Setup

Before you get started, please send Shinmera your TyNET username so he can add you to the project's contributors list and allow you commit access. Also make sure you have a Git client that you're familiar with and which supports git-lfs.

Unlike many other game projects, Kandria uses a custom engine and is written in Common Lisp. This means that unfortunately the setup is a bit more involved, but not by much. In order to ease setup, a custom development environment has been put together. You can download it from here:

If you're already familiar with Emacs, you might want to set up a native development environment instead of using Portacle. In that case, contact Shinmera for advice. If not, carry on.

First you should update the Kandria sources. Kandria should already be cloned within the development environment package at projects/kandria. There are a few other directories in the projects folder that contain other, necessary libraries. Please use Git in whatever fashion you find comfortable to pull all of the repositories within the projects directory and ensure they're up to date.

Once that's done, please start Portacle (the development environment). It should greet you with a screen similar to this:

https://portacle.github.io/portacle-start.png

In the section with the CL-USER> prompt, type (ql:quickload :kandria) (or copy and paste it with Ctrl+Y.) This will compile and load the game. It'll take a while the first time you do it. After that, try starting the game with (kandria:launch). If that opens the game successfully, then, congratulations! You're all set up and ready for development! If you encounter a problem at any point, such as an error prompt opening up, contact Shinmera to help with the debugging.

For further help with the IDE, press Ctrl+H H within the IDE. This should bring up a help document that explains the terminology, keyboard shortcuts, and more.

Structure

The source tree is divided up as follows:

Organisation

For instant communication please use Slack. You should have gotten an invite to the slack by now. The rest of the project management happens through a Google doc. Please have a look at it here:

https://docs.google.com/spreadsheets/d/1vJcVDEW0vasMw-FKumIrLA3jd2AYBKs6ZfTWOTXOC6k/edit

The doc contains sheets with current todo items, ideas for the future, and details on these tasks. The todo items should be sorted with the more important ones at the top. Once you complete an item, please check it off and move it to the bottom. For ideas, please just throw them into the ideas sheet and discuss them over Discord. If it turns out there's time available and the idea seems good, it can be moved over to the todo section.

In order to gain access to the central GIT repository, please create a TyNET account and inform Shinmera of your account name so that he can give you access. Once an account has been created, you can view the repository here:

https://gitea.tymoon.eu/shinmera/kandria/

In addition to the GIT repository we also host an automated feedback system players can use to submit crash reports or other comments. You can access these reports here:

https://feedback.tymoon.eu/kandria/

Additionally, the mailing list system is also hosted on TyNET, and can be found here:

https://courier.tymoon.eu/campaign/Kandria

Finally, we have bi-weekly meetings every other Monday at 21:00 CEST. The meetings are calls done through the Kandria discord channel.

Developing

When contributing to the project please use a separate branch and do not commit directly to master. You may either use per-feature branches or just a singular branch for all of your work. When you are done with a task and would like to get feedback on it, let the rest of the team know so they can go and check it out.

When pulling, please use the rebase strategy whenever possible (git pull --rebase). If you have trouble with Git in one way or another, contact Shinmera for advice.

If you need to run the game and something's not working, please ensure that all of the repositories in the projects/ folder are up-to-date. The other projects are support libraries and may occasionally receive updates as well as the development progresses.