This article helps you to get started on software development with the Doomsday Engine. ====== Before you begin ====== It is important to understand, that Doomsday is an open source project. Doomsday is licensed under the [[http://www.gnu.org/licenses/gpl.html|GNU GPL v2 or later]] license. To further that goal, we ask that all contributions use the following license: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see If you do not wish to use the [[http://www.gnu.org/licenses/gpl.html|GPL]] or a compatible license like the [[http://www.opensource.org/licenses/mit-license.php|MIT]], [[http://www.opensource.org/licenses/bsd-license.php|New BSD]] or [[http://www.gnu.org/licenses/lgpl.html|LGPL]], then we can't accept your contribution. ===== Requirements ===== Check that Doomsday's [[requirements]] are fulfilled. ====== Tools needed ====== ^ Tool^ Windows^ Mac OS X^ Ubuntu | | **Git**| [[http://code.google.com/p/tortoisegit/|TortoiseGit]] is a nice Git client for Windows. It integrates with the Windows shell.| Git should be installed along with Xcode, but you can also get it from [[http://www.macports.org/|MacPorts]] or [[http://mxcl.github.com/homebrew/|Homebrew (Intel-only)]].| Available as a package (see distro). | | **qmake**| [[http://qt.nokia.com|Qt web site]]| qt4-qmake, libqt4-dev | | **Qt Creator** (optional)| [[http://qt.nokia.com|Qt web site]]| qtcreator | | **Other tools**| | | [[build_tools_for_unix]] | ====== Accessing the deng source code repository ====== The deng source code is stored in a [[http://github.com/skyjake/Doomsday-Engine|Git repository on GitHub]]. You can browse the contents of the repository by visiting that link. ===== About Git ===== Git is an advanced distributed version control system. Before you do anything else, you should familiarize yourself with its basic functionality and operating principles. These should get you started: * [[http://git-scm.com/documentation|Git documentation]]: tutorial, introduction for SVN users, user's manual, etc. * [[http://www.youtube.com/watch?v=4XpnKHJAok8|Linus Torvard's talk about Git at Google]] ===== Setting up a working copy ===== To get a copy of the Doomsday source files to your own computer, you will first need to set up your working copy of the [[git_repository|deng repository]]. With Git being a distributed version control system, every working copy is actually a full, independent copy of the entire repository. Once you have your working copy set up, it will be configured to fetch changes from the GitHub Doomsday-Engine repository. The first thing you will need to is to clone the deng repository: git clone https://github.com/skyjake/Doomsday-Engine.git //name-of-your-working-copy// This will download the full repository (about 200MB) from GitHub, so it may take a while. Next, you should make sure your repository configuration is good. To see all your Git configuration settings, type: git config -l Your master branch should be tracking //origin//'s (= the GitHub repository) master branch: branch.master.remote=origin branch.master.merge=refs/heads/master remote.origin.url=https://github.com/skyjake/Doomsday-Engine.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* You may find it convenient to set a default branch for pulling changes: git config pull.default tracking The options //user.name// and //user.email// should be set if you are going to commit changes to your repository. user.name=yourname user.email=your.email@some.domain ===== Getting new changes ===== To synchronize your copy of the repository with the origin, use the following command: git pull This will fetch the new changes from the deng repository and merge them to your working copy. ===== Switching to another branch ===== Say you want to work on another branch, e.g., stable-1.10. You will first need to create a local branch that tracks the changes of the stable-1.10 branch in the deng repository: git checkout -t -b stable-1.10 origin/stable-1.10 This will also automatically switch to the new branch. In the config you now see: branch.stable-1.10.remote=origin branch.stable-1.10.merge=refs/heads/stable-1.10 This means your stable-1.10 is tracking the one in the //origin// repository. Now you can switch between your branches with: git checkout master git checkout stable-1.10 ====== Building Doomsday ====== //See:// [[compilation]] ====== See also ====== * [[deng_team]] * [[developer_guidelines]] * [[api_documentation]]