aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/gameplay.md98
-rw-r--r--docs/gen/doc.m44
-rw-r--r--docs/research.md59
3 files changed, 152 insertions, 9 deletions
diff --git a/docs/gameplay.md b/docs/gameplay.md
index e1e57bd..3755463 100644
--- a/docs/gameplay.md
+++ b/docs/gameplay.md
@@ -1,7 +1,57 @@
+# concept (Niels)
+
+I personally didn't have a massive idea for a game. I was thinking of a multiplayer shooter-type game with inspirations of tanks, asteroids, and Mario.
+
+## USP
+my unique selling point of the game is multiplayer. if you think that most of the grade is decided by which game is the most fun then I think a key part of that is multiplayer. having fun and playing together can make a game more easily fun.
+
+## inspiration
+As I said before comes my inspiration from a few games. the first one is tanks. It’s a shooter where you can play multiplayer and break the environment in a retro game. The second game that gave me inspiration is asteroids. the physics and shooting make this game interesting. Additionally, this game could also be multiplayer. Finally is Mario, Mario is mostly the storyline and the way it’s played.
+
+## technical challenges and gameplay
+the technical challenges for my idea of a game are:
+- storage
+- art
+- gameplay
+- controlling the champions
+
+### gameplay
+the gameplay isn't really outlined but my idea works like this. where you have different levels each representing the difficulty of the level. for example, if a level begins light and turns darker indicating a boss monster is coming. the players have both guns they fire at enemies and bricks which can be destroyed. the key part of my idea is that multiplayer is key where you have to work together to defeat the monsters. Additionally, at some levels, both players need to stay at a certain position on a map to complete a level sort of like a puzzle to give it more difficulty.
+
+# Concept tower destruction 2p (Frenk)
+
+I had an idea to make a tower destruction game where 2 players compete against each other.
+
+## usp
+The unique selling point of this game is to compete against another player to get the highest score. Playing a game together with someone adds more fun in an arcade setting in my opinion. Furthermore to beat a other player in a game adds a next level of fun.
+
+## inspiration
+The inspiration of this game comes from angry birds and tanks (2d sideview). The tanks game is not the old top view version but rather the newer side-scroll type where you could only move left and right and then had to shoot with physics in mind. The adreline of just getting missed or not was very appealing to me. Furthermore, angry birds relies on the same physics mechanics and seeing a whole tower getting destroyed looks good.
+
+## technische uitdagingen
+The technical challenges for my idea of a game are:
+- Physics
+- Gameplay
+- Scoring
+
+## gameplay
+The gameplay is as follows:
+There are 2 players on screen. 1 to the left and 1 to the right. The can both move left and right between some borders.
+In the middle there is a tower made of bricks or beams that are destructible. If this tower is below a certain height the tower grows again with a random pattern.
+To score points you have to destroy as much as possible of the tower. It is also possible to hit the other player to steal points. The goal in the end is to score as many points in a certain amount of time. Some block in the tower have a special ability. If these are destroyed it can unlock a new weapon; gives rapid fire or affect the enemy with a status effect
+
+
# Concept (Loek)
## General gameplay
+You play as a mage who has long lost his trusty wand. Having been separated
+from your *twig* for some time, you've become proficient in the rapid use of
+simple spells. You use these spells to defeat foes and minibosses that ward the
+dangerous path you take to recover your *spell stick*. After battling your way
+through all sorts of dangerous levels, you find your *incantation baton*, which
+you then use to fight the final boss.
+
- Platformer (similar platformer mechanics to Cuphead)
- Focus on gameplay instead of story
- Medium length levels
@@ -20,15 +70,15 @@
![rough sketch of the game protagonist](../assets/sketch-player.jpg "medium")
-- Small guy with a hood and Fall guys eyes
+- Small guy with a hood and "Fall guys" eyes
- Actions
- Jump (primary action button)
- - Dash/attack (secondary action button) (upgradable -> [shop][shop])
+ - Dash/attack (secondary action button) (upgradable -> [shop][loek-shop])
- Movement (D-pad)
- Shooting (D-pad) (automatic rapid fire when holding direction)
- Temporarily invulnerable when taking damage (with flashing animation like in
Super Mario Bros.)
-- 5 HP (by default) (upgradable -> [shop][shop])
+- 5 HP (by default) (upgradable -> [shop][loek-shop])
## Level design
@@ -53,7 +103,7 @@
- Vertical levels can either flow from top to bottom, or bottom to top
- Small sections of backtracking are allowed in the top to bottom vertical flow
-[shop]: #checkpoint-room-shop
+[loek-shop]: #checkpoint-room-shop
### Checkpoint room (shop)
![checkpoint room](../assets/sketch-checkpoints.jpg)
@@ -88,6 +138,12 @@
- 1: primary action
- 2: secondary action
+In the above level, possible actions the player can perform are drawn using
+dashed lines, with actions being indicated using the action button markers. The
+levels are medium-difficulty platforming levels, with enemies that block the
+way. The player can choose to take extra time to defeat all the enemies before
+jumping to a platform, or to jump while shooting.
+
## Enemy types
The enemies aren't named in-game, so these names are either working names or
@@ -124,6 +180,38 @@ internal names. All enemies deal 1 HP damage per hit.
- Medium-high score bonus
- Was on NOS Jeugdjournaal once
+## Later additions (converging)
+
+- New Super Mario Bros. Wii-style co-op multiplayer (with ability to throw your
+ friends) (Niels)
+ - Shared HP between both players
+ - Pick up other player by pressing secondary action button while standing
+ still
+ - Throw picked up player by pressing secondary action button again (also
+ works while moving)
+ - Easter eggs that are only reachable by throwing and dashing in sequence
+ (Loek)
+- The player character is a mage, instead of some random armed guy (Joshua)
+- General storyline based on the idea that the player is a mage (Joshua) whose
+ wand is lost (Loek)
+
+## Technical implications
+
+- Graphics
+ - There needs to be at least a separate foreground layer and background layer
+ to make sure enemies and interactive elements appear in the right order on
+ screen
+ - Not too many enemies can be on screen at once
+ - Large levels need to be buffered and/or paged
+ - Physically large minibosses require a lot of foreground sprites
+ - **Screen wiping** transitions require hacky workarounds and/or lots of
+ sprites to display properly (fix by using palette dimming transition)
+- Processing power
+ - Hitbox checking might need to be optimized using screen chunks due to the
+ (possibly) large amount of on-screen enemies at once
+ - Sound and GPU instructions will need to be streamed 'continuously', so the
+ game loop can't take up 100% CPU time
+
# Concept (Bjorn)
## General gameplay
@@ -142,5 +230,3 @@ the game has simularities with Gallica. The game wil have de following gameplay
The game which able to for fill all the requirements for the project but has also a lot of extra potential features for the game. For example adding special power ups which would give the player extra abilities. It will also be able to have bonuses like double points which give you twice more points then normal. In the coop mode there will be more enemies to shoot down to make it more difficult.
-
-
diff --git a/docs/gen/doc.m4 b/docs/gen/doc.m4
index b5edceb..1ddf094 100644
--- a/docs/gen/doc.m4
+++ b/docs/gen/doc.m4
@@ -35,8 +35,8 @@ define(`docname',
esyscmd(`LANG="en_US.utf8" date "+%B %d, %Y"')
</span>
<span class="right">
- Bjorn Martens <b>(???)</b><br/>
- Frenk van de Nieuwegiessen <b>(???)</b><br/>
+ Bjorn Martens <b>(2187272)</b><br/>
+ Frenk van de Nieuwegiessen <b>(2162515)</b><br/>
Joshua Regnier <b>(2183008)</b><br/>
Loek Le Blansch <b>(2180996)</b><br/>
Niels Stunnebrink <b>(2184532)</b>
diff --git a/docs/research.md b/docs/research.md
index 37ce31c..73618d7 100644
--- a/docs/research.md
+++ b/docs/research.md
@@ -345,4 +345,61 @@ It is usefull to generate a few different types of signals like:
- square waves
- sine waves
- sawtooth waves
-- random noise \ No newline at end of file
+- random noise
+
+# level editing
+For the project retro game-level design is an important part to make the game alive. That’s why research is needed to look for different ways of designing a retro game.
+There are a lot of ways to make a 2d level but because where using an microcontroller and an FPGA the options are limited. That’s, why the first subject, is pictures. secondly, indexes and lastly software sources.
+
+## pictures
+if a level is made there is a possibility that it can be exported as a picture. You can use that picture format and decode it in the microcontroller then send it to the FPGA that sends that data through the VGA. the problem with this method is that a lot of data is needed to save a whole level (640 * 480 pixels) but different formats can have a large impact. For a better reference picture below.
+![pictureFormating](../assets/pictureFormatting.PNG)
+
+### PNG
+PNG (Portable Network Graphics) is a lossless image compression format. Resulting in high-quality images that preserve all of the original data. Additionally, PNG supports a wider range of color depths, including 24-bit RGB and 32-bit RGBA (which includes an alpha channel for transparency), making it well-suited for images with a large number of colors or images that require transparency.
+### BMP
+BMP is a simple, uncompressed image format that provides good performance and easy access to pixel data. It's a good choice for applications where memory usage is not a concern and quick read times are important.
+### TIFF
+TIFF (Tagged Image File Format) is a flexible, adaptable file format for handling images and data within a single file, by including the header tags (size, definition, image-data arrangement, applied image compression) defining the image's geometry. TIFF supports a wide range of color depths, including black and white, grayscale, and full color (24-bit RGB and 32-bit RGBA), and is commonly used in printing, pre-press, desktop publishing, and professional photography. Unlike PNG, TIFF does not have built-in support for lossless compression and is typically used for high-quality, high-resolution images that need to be edited or processed in some way.
+### TGA
+TGA is a lossless image format that supports a wide range of features, including alpha channels, gamma correction, and RLE compression. It's a good choice for applications where image quality is a priority and memory usage is not a concern.
+### JPEG
+JPEG (Joint Photographic Experts Group) is a commonly used image compression format that uses lossy compression to reduce the file size of digital images. It is well-suited for compressing photographic images and images with smooth color gradients, but may not perform as well with images that have sharp transitions or large areas of solid color. JPEG is widely used for images on the web, as well as for digital photos, because of its efficient compression and support for a wide range of color depths, including 8-bit grayscale and 24-bit RGB.
+
+### decode API
+To make sure there is a way of decoding the picture data I found an API that could handle it. MagickCore API is a low-level interface between the C programming language and the ImageMagick image processing libraries.
+[imagemagick](https://imagemagick.org/script/magick-core.php "imagemagick")
+
+### conclusion
+In conclusion do i think that BMP is the best choice. But there are a lot of ways for using a picture format in a project but our main problem with using pictures is that a lot of memory is needed to save the data. Additionally, the time to make a decode function could be significant and complicated because the color depth plays a big part and understanding the API can take a lot of time that’s why this option is not ideal.
+
+## indexes
+indexes is another way of using tiles and colors at a 2d level. With this method, you have a fixed color palette for example 4 colors and a fixed total of tiles. different tiles have numbers going from 0 to N meaning total tiles available and colors going from 0 to N.
+![indexes](../assets/indexes.PNG)
+
+in the picture, you can have a better understanding of how indexes work.
+### Data
+the color palette is saved on the FPGA with the different tiles. While the microcontroller makes the levels and sends the indexed tiles to the FPGA.
+![wokringBehindIndexes](../assets/indexesWorking.PNG)
+
+### conclusion
+This method of creating levels splits the memory between the FPGA and the microcontroller. Additionally, the complexity behind the program is smaller while still giving a lot of freedom with level creation.
+
+# Software sources
+There are a lot of ways of creating tiles and sprites for pixel art. Underneath is a representation of my findings. For making 2d maps is Tiled the program that is going to be used in our project
+
+
+| Name | Link |Cost |Level/pixel Art |
+|---------------|------------------------------------------------------------------|------|------------------|
+| Tiled | https://www.mapeditor.org/ |No | level creation |
+| pyxeledit | https://pyxeledit.com/about.php |Yes | level creation |
+| Pixel Mapper | https://manual.avolites.com/docs/effects/pixel-mapper-examples/ |No | level creation |
+| PixelPet | https://github.com/Prof9/PixelPet |No | level creation |
+| tilemap-studio| https://github.com/Rangi42/tilemap-studio |No | level creation |
+| 10 pixel arts | https://blog.felgo.com/game-resources/make-pixel-art-online |No | pixel art |
+| piskel | https://www.piskelapp.com/ |No | pixel art |
+| GIMP | https://www.gimp.org/downloads/thanks.html |No | pixel art |
+| lospec | https://apps.lospec.com/pixel-editor/ |No | pixel art |
+| Asesprite | https://www.aseprite.org/ |Yes | pixel art |
+
+