#11 Start proper report
This commit is contained in:
parent
55212c1440
commit
5c8cee8104
4 changed files with 113 additions and 35 deletions
19
.vscode/tasks.json
vendored
19
.vscode/tasks.json
vendored
|
@ -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
114
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
|
||||
|
||||
<!--
|
||||
## 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
15
header.yaml
Normal 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
|
||||
---
|
BIN
verslag.pdf
BIN
verslag.pdf
Binary file not shown.
Reference in a new issue