aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 2f969b0b874b3d9b97e9abc409bad6ad5be4f9f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
gamedev
=======

gamedev was started as a high school project between drumsetmonkey and tcsullivan, written in C++ and using SDL2/OpenGL. The goal of this project was to have a completed commercial-grade video game available for Linux and Windows users; the plan was to profit off the game once it and the engine were finished. Through the first year and a half of development we quickly learned that the game's engine would need the most focus, as we were starting from complete scratch. Due to this, there is no playable, plot-based game.  
  
However, the engine is still growing. Development has now slowed to a crawl with the start of our college lives, but changes will still be made every now and then. Maybe a true video game will eventually come out of this, but the engine will most likely always remain open source.

Build Requirements
------------------

The 'gamedev' project can be built on both Linux-based and Windows operating systems. The game has been verified (at some point) to work on Debian, Arch Linux, FreeBSD, and Windows 7 through 10. The following programs and libraries are required to build 'gamedev':

* make
* g++
* SDL2, including SDL2_image and SDL2_mixer
* FreeType 2
* GLEW
* giflib
* lua (liblua linked into program)
  
Windows builds are done with msys2, 64-bit. The compiler must support C++17.  
  
Build Preparation
-----------------

The Makefile expects a file named setup.mk to exist. It needs to define two variables on two lines:
```
TARGET_OS = # either win32 or linux
TARGET_BITS = # either 32 or 64
```

A settings file must also exist. Take the sample one to start:
```
(from the root directory)
cp config/settings.xml.example config/settings.xml
```

Finally, create an output directory (used for compiling):
```
mkdir out
```

Building
--------

EntityX needs to be built only once before building the rest of gamedev, a library file will be outputted that the main Makefile uses for the main build.
```
cd entityx
make
cd ..
```

To build the engine:
```
make
```

This command may be multithreaded using the -j argument.

To run on Linux, once built:
```
./main
```

To run on Windows:
```
main.exe
```

The executable takes the following arguments:

* -r, which will reset XML data and delete player data
* -d, which will initialize the engine, and then exit
* -x, tells the engine which XML file to load. Looks in the XML folder defined in config/setting.xml

-d is mainly used in conjunction with -r, to reset the XML files and then exit the game before they can be rewritten.

Controls
--------

The following are the controls for the game. Any extra controls can be found somewhere in ```src/ui.cpp``` or ```src/player.cpp```
Some controls can be adjusted using the in-game control menu.

Movement:
* 'a' and 'd' move the player left and right
* 'w' enters buildings
* 'e' opens the inventory
* 'space' makes the player jump if he obtains the jumping skill
* 'L-Shift' sprints if the player obtains the running skill
* 'L-Ctrl' decreases the player's speed
* 'h' opens a current quest menu

Other:
* 'f3' for debug information
* 'f12' for screenshot
* 't' speeds up time (ticks)