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", | ||||
|                 "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": [ | ||||
|  |  | |||
							
								
								
									
										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 | ||||
| 
 | ||||
| - [ ] 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.  | ||||
|  | @ -248,3 +249,46 @@ If we look at the example, all the objects are | |||
|                             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