#11 Start proper report

This commit is contained in:
Tibo De Peuter 2022-12-21 13:37:38 +01:00
parent 55212c1440
commit 5c8cee8104
4 changed files with 113 additions and 35 deletions

19
.vscode/tasks.json vendored
View file

@ -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": [

114
README.md
View file

@ -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
<!--
## Functional requirements
- [ ] Parsing of engine configuration file to game object
@ -15,39 +7,23 @@ https://kyrise.itch.io/kyrises-free-16x16-rpg-icon-pack
- [ ] An end screen that shows wether or not a player won
- [ ] Support for built-in engine functions
- [ ] Player can move around in grid-world.
- [x] Player can move around in grid-world.
- [ ] Player can pick up objects.
- [ ] Player can use objects.
- [ ] Player can loose and gain health points.
- [ ] Player can interact with other entities (fight enimies, open doors, ...).
- [ ] Player can interact with other entities (fight enemies, open doors, ...).
- [ ] Player can go to the next level.
## Not-functional requirements
- [ ] Use Parsing.
- [x] Use Parsing.
- [ ] Use at least one (1) monad transformer.
- [ ] Write good and plenty of documentation.:w
- [ ] Write tests (for example, using HSpec).
- [x] Write tests (for example, using HSpec).
---
# Plaats om dingen neer te jotten
```
Play <--- HandleInput
|
|
v
Level <--- LoadLevel <--- Parse
|
|
v
RenderLevel
```
- [ ] State paradigma gebruiken om van startscherm naar playscherm naar pause scherm naar endscherm te gaan
Nuttige links:
- https://jakewheat.github.io/intro_to_parsing/
@ -58,14 +34,37 @@ Da kan hoor en had da eerst, me gloss eeft geen goede text dus...
ListDirectory, en er was ook een fuctie takeBaseName
```
# RPG-Engine Documentation
---
<div style="page-break-after: always;"></div>
-->
# 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.
<details>
<summary>We'll look at the following example to explain these concepts.</summary>
```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: [
}
]
```
</details>
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()')
```
```
\pagebreak
## Development notes
### Assets & dependencies
The following assets were used (and modified if specified):
- Kyrise's Free 16x16 RPG Icon Pack<sup>[[1]](#1)</sup>
Every needed asset was taken and put into its own `.png`, instead of in the overview.
- 2D Pixel Dungeon Asset Pack by Pixel_Poem<sup>[[2]](#2)</sup>
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
<a id="1">[1]</a> [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)
<a id="2">[2]</a> [2D Pixel Dungeon Asset Pack](https://pixel-poem.itch.io/dungeon-assetpuck) by [Pixel_Poem](https://pixel-poem.itch.io/)
is not licensed

15
header.yaml Normal file
View file

@ -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
---

Binary file not shown.