Project

General

Profile

SourceCode » History » Version 5

Andreas Schneider, 04/27/2020 12:35 PM

1 1 Andreas Schneider
h1. SourceCode
2
3 5 Andreas Schneider
[[CentrED]]'s Source Code can be obtained via "git":https://git-scm.com/ from https://git.aksdb.de/aksdb/CentrED.
4 3 Andreas Schneider
The whole program has been developed using "FreePascal":http://www.freepascal.org and "Lazarus":http://www.lazarus-ide.org. Therefore both are required to compile the source.
5 1 Andreas Schneider
6
h2. Cloning the repository
7
8
The act of getting the source code for the first time is refered to as *clone*. This will copy the whole repository with all past revisions, their log entries, etc. to your local drive. You can commit new changes anytime to your local copy without interfering with the official repository.
9
10
<pre>
11 5 Andreas Schneider
$ git clone https://git.aksdb.de/aksdb/CentrED CentrED
12 1 Andreas Schneider
</pre>
13
14
This command will create a directory named "CentrED" containing the said copy of the repository.
15
16 5 Andreas Schneider
For further commands and more detailed descriptions on how git works, please refer to "git's Website":https://git-scm.com/.
17 1 Andreas Schneider
18
h2. The directory structure
19
20
CentrED's source is divided into the following subdirectories.
21
22
<pre>
23
Client/
24
Client/GLFont
25
Client/Overlay
26
Client/Tools
27
Imaging/
28
MulProvider/
29
Server/
30
UOLib/
31
Tools/
32
bin/
33
obj/
34
</pre>
35
36
The directory @Client/@ contains the Lazarus project as well as the strictly client related source files. It also houses the subdirectories @GLFont@ which holds the bitmap font used to display characters in OpenGL, @Overlay@ which contains graphics for additional on-screen elements and @Tools@ which contains the dialogs and their source for the map and statics manipulating commands.
37
38
@Imaging/@ contains a slightly modified copy of the "Vampyre Imaging Library":http://imaginglib.sourceforge.net by _Marek Mauder_. It contains classes to load several different graphics formats, manipulate them and convert them into OpenGL textures at runtime (plus several features more, that aren't used within CentrED however).
39
40
@MulProvider/@ and @UOLib/@ contain code specific to the UO data files for reading as well as writing them. The map and statics related classes however also contain extensions to support easier management of these tiles within the UI.
41
42
Within @Server/@ are the Lazarus project and source files for strictly server related things.
43
44
@Tools/@ contains some helper programs used during development.
45
46
@bin/@ and @obj/@ are the target directories for the compile process of CentrED and cedserver.
47
48
h2. Compiling
49
50
h3. Requirements
51
52
You need the following tools and libraries to successfully build CentrED.
53
54 3 Andreas Schneider
* "FreePascal":http://www.freepascal.org 3.0.2 or newer (usually included in Lazarus, see below)
55
* "Lazarus":http://www.lazarus-ide.org/ 1.6 or newer
56 4 Andreas Schneider
* "lNet":http://wiki.lazarus.freepascal.org/lNet 0.6.5 (preferable from "SVN":http://svn.freepascal.org/svn/fpcprojects/lnet/trunk)
57 3 Andreas Schneider
* MultiLog from "github":https://github.com/blikblum/multilog
58
* VirtualTreeView 5 and LCLExtensions from "github":https://github.com/blikblum/VirtualTreeView-Lazarus/releases
59
* LazOpenGLContext (which is bundled with Lazarus but has to be installed explicitly)
60 1 Andreas Schneider
61
h3. Build Process
62
63
The build process mainly includes opening the according project file (@Client/CentrED.lpi@ or @Server/cedserver.lpi@) with Lazarus and hit *Compile* (and/or *Run*). If all previously mentioned libraries are installed correctly that should already produce a working executable in @bin/@.