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:

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:
kandria/
Game source files. Unless otherwise noted, other directories contain source subsystems.bin/
Binary deployment target directory. When the game is built as an executable, the output lands here.data/
Assets like textures, tiles, sprites, sounds, etc. including raw source files (ase, etc.)docs/
Documentation and documents related to the project and its website. This document should be in this directory.art.mess
A mood board with reference images and videos for the art direction.beta.mess
Documentation for beta testing.characters.mess
Documentation on the various characters in the game's story.combat system.mess
Documentation on the combat system that the game employs.design.mess
The overall game design document that outlines the game's mechanics, story, and planning.dialogue format.mess
Documentation on the dialogue format and syntax.editor.mess
Documentation on the in-game editor and how to use its features.level design.mess
Documentation on the level design practises.lisp crash course.mess
A short introduction to Lisp syntax and usage related to Kandria.lore.mess
Collection of tidbits on setting, technology, etc. lore.pillars.mess
Design pillars document with the most important parts at a glance.plot outline.mess
Outline of the overarching plotline in the game.quest system.mess
Documentation on the behaviour and capabilities of the quest system.
releases/
Source files related to publishing, packaging, and archiving game releases.world/
Source files for levels, quests, and dialogue.init/
Source files to describe the initial state of the game when loading a new game.regions/
Source files for every "region" in the game – meaning level data.quests/
Source files for every quest in the game. Each quest should have its own directory.
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:
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:
Additionally, the mailing list system is also hosted on TyNET, and can be found here:
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.