diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 6c8f9a1..c27db8b 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -41,6 +41,25 @@
"kind": "build",
"isDefault": true
}
+ },
+ {
+ "label": "Create verslag.pdf",
+ "type": "shell",
+ "command": "pandoc",
+ "args": [
+ "-s",
+ "-o", "verslag.pdf",
+ "-f", "markdown+smart+header_attributes+yaml_metadata_block+auto_identifiers",
+ "--pdf-engine", "lualatex",
+ "--template", "eisvogel",
+ "header.yaml",
+ "README.md"
+ ],
+ "problemMatcher": [],
+ "group": {
+ "kind": "none",
+ "isDefault": false
+ }
}
],
"inputs": [
diff --git a/README.md b/README.md
index 49869ed..d173f3f 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,4 @@
-# RPG-Engine
-
-Schrijf een game-engine voor een rollenspel
-
-https://pixel-poem.itch.io/dungeon-assetpuck
-https://kyrise.itch.io/kyrises-free-16x16-rpg-icon-pack
-
-# RPG Engine requirements
-
+
+
+# RPG-Engine
+
+RPG-Engine is a game engine for playing and creating your own RPG games.
+
+If you are interested in the development side of things, [development notes can be found here](#Development-notes).
+
+This README serves as both documentation and project report, so excuse the details that might not be important for the average user.
## Playing the game
+These are the keybinds *in* the game. All other keybinds in the menus should be straightforward.
+
+| Action | Primary | Secondary |
+| ---------- | ------------- | ----------- |
+| Move up | `Arrow Up` | `w` |
+| Move left | `Arrow Left` | `a` |
+| Move down | `Arrow Down` | `s` |
+| Move right | `Arrow Right` | `d` |
+
+### Example playthrough
+
TODO
-- Input commands etc
-- An example playthrough
+- An example playthrough, with pictures and explanations
+
+\pagebreak
## Writing your own stages
@@ -85,7 +84,8 @@ A stage description file consists of several elements.
| `Value` | is either a `Block` or a `BlockList` or a traditional value, such as `String` or `Int` |
| `BlockList` | is a number of `Block`'s, surrounded by `[ ... ]`, separated by commas, can be empty |
-We'll look at the following example to explain these concepts.
+
+We'll look at the following example to explain these concepts.
```javascript
player: {
@@ -126,7 +126,7 @@ levels: [
id: "key",
x: 3,
y: 1,
- name: "Doorkey",
+ name: "Door key",
description: "Unlocks a secret door",
useTimes: 1,
value: 0,
@@ -153,6 +153,7 @@ levels: [
}
]
```
+
This stage description file consists of a single `Block`. A stage description file always does. This top level `Block`
contains two `Value`s `player` and `levels`, not separated by commas.
@@ -247,4 +248,47 @@ If we look at the example, all the objects are
length = 1
Condition ('inventoryContains(key)')
Entry = empty ConditionList + Action ('leave()')
-```
\ No newline at end of file
+```
+
+\pagebreak
+
+## Development notes
+
+### Assets & dependencies
+
+The following assets were used (and modified if specified):
+
+- Kyrise's Free 16x16 RPG Icon Pack[[1]](#1)
+
+ Every needed asset was taken and put into its own `.png`, instead of in the overview.
+
+- 2D Pixel Dungeon Asset Pack by Pixel_Poem[[2]](#2)
+
+ Every needed asset was taken and put into its own `.png`, instead of in the overview.
+
+RPG-Engine makes use of the following libraries:
+
+- [gloss](https://hackage.haskell.org/package/gloss) for game rendering
+- [gloss-juicy](https://hackage.haskell.org/package/gloss-juicy) for rendering images
+- [hspec](https://hackage.haskell.org/package/hspec) for testing
+- [hspec-discover](https://hackage.haskell.org/package/hspec-discover) for allowing to split test files in multiple files
+- [parsec](https://hackage.haskell.org/package/parsec) for parsing configuration files
+
+### Future development ideas
+
+The following ideas could (or should) be implemented in the future of this project.
+
+- [ ] Entity system: With en ES, you can implement moving entities and repeated input. It also resembles the typical
+ game loop more closely which can make it easier to implement other ideas in the future.
+
+- [ ] Game music: Ambient game music and sound effects can improve the gaming experience I think.
+
+\pagebreak
+
+## References
+
+[1] [Kyrise's Free 16x16 RPG Icon Pack](https://kyrise.itch.io/kyrises-free-16x16-rpg-icon-pack) © 2018
+ by [Kyrise](https://kyrise.itch.io/) is licensed under [CC BY 4.0](http://creativecommons.org/licenses/by/4.0/?ref=chooser-v1)
+
+[2] [2D Pixel Dungeon Asset Pack](https://pixel-poem.itch.io/dungeon-assetpuck) by [Pixel_Poem](https://pixel-poem.itch.io/)
+ is not licensed
\ No newline at end of file
diff --git a/header.yaml b/header.yaml
new file mode 100644
index 0000000..21a20a4
--- /dev/null
+++ b/header.yaml
@@ -0,0 +1,15 @@
+---
+title: "RPG Engine"
+author: "Tibo De Peuter"
+date: "23 december 2022"
+subtitle: "Write a game engine for an RPG game"
+# geometry: "left=2.54cm,right=2.54cm,top=1.91cm,bottom=1.91cm"
+geometry: "left=2.54cm,right=2.54cm,top=2.54cm,bottom=2.54cm"
+titlepage: true
+titlepage-rule-height: 4
+toc: true
+listings-disable-line-numbers: true
+listings-no-page-break: false
+subparagraph: true
+lang: en-GB
+---
diff --git a/verslag.pdf b/verslag.pdf
index e69de29..f2dba5d 100644
Binary files a/verslag.pdf and b/verslag.pdf differ