dev #25
					 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", |                 "kind": "build", | ||||||
|                 "isDefault": true |                 "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": [ |     "inputs": [ | ||||||
|  |  | ||||||
							
								
								
									
										112
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										112
									
								
								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 | ## Functional requirements | ||||||
| 
 | 
 | ||||||
| - [ ] Parsing of engine configuration file to game object | - [ ] 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 | - [ ] An end screen that shows wether or not a player won | ||||||
| - [ ] Support for built-in engine functions | - [ ] 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 pick up objects. | ||||||
| - [ ] Player can use objects. | - [ ] Player can use objects. | ||||||
| - [ ] Player can loose and gain health points. | - [ ] 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. | - [ ] Player can go to the next level. | ||||||
| 
 | 
 | ||||||
| ## Not-functional requirements | ## Not-functional requirements | ||||||
| 
 | 
 | ||||||
| - [ ] Use Parsing. | - [x] Use Parsing. | ||||||
| - [ ] Use at least one (1) monad transformer. | - [ ] Use at least one (1) monad transformer. | ||||||
| - [ ] Write good and plenty of documentation.:w | - [ ] 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:  | Nuttige links:  | ||||||
| 
 | 
 | ||||||
| - https://jakewheat.github.io/intro_to_parsing/ | - 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 | 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 | ## 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 | TODO | ||||||
| 
 | 
 | ||||||
| - Input commands etc | - An example playthrough, with pictures and explanations | ||||||
| - An example playthrough | 
 | ||||||
|  | \pagebreak | ||||||
| 
 | 
 | ||||||
| ## Writing your own stages | ## 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`                    | | | `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                      | | | `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 | ```javascript | ||||||
| player: { | player: { | ||||||
|  | @ -126,7 +126,7 @@ levels: [ | ||||||
|                 id: "key", |                 id: "key", | ||||||
|                 x: 3, |                 x: 3, | ||||||
|                 y: 1, |                 y: 1, | ||||||
|                 name: "Doorkey", |                 name: "Door key", | ||||||
|                 description: "Unlocks a secret door", |                 description: "Unlocks a secret door", | ||||||
|                 useTimes: 1, |                 useTimes: 1, | ||||||
|                 value: 0, |                 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` | 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.  |  contains two `Value`s `player` and `levels`, not separated by commas.  | ||||||
|  | @ -248,3 +249,46 @@ If we look at the example, all the objects are | ||||||
|                             Condition ('inventoryContains(key)') |                             Condition ('inventoryContains(key)') | ||||||
|                         Entry = empty ConditionList + Action ('leave()') |                         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