Browse Source

Merge pull request #672 from 01-edu/bomberman-dom

Bomberman dom
pull/683/head
LEEDASILVA 4 years ago committed by GitHub
parent
commit
3f52803b5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      subjects/ascii-art/README.md
  2. 1
      subjects/ascii-art/color/README.md
  3. 1
      subjects/ascii-art/fs/README.md
  4. 1
      subjects/ascii-art/justify/README.md
  5. 1
      subjects/ascii-art/output/README.md
  6. 1
      subjects/ascii-art/reverse/README.md
  7. 79
      subjects/bomberman-dom/README.md
  8. 77
      subjects/bomberman-dom/audit/README.md
  9. 1
      subjects/forum/README.md
  10. 1
      subjects/social-network/README.md

1
subjects/ascii-art/README.md

@ -9,7 +9,6 @@ Ascii-art consists on receiving a `string` as an argument and outputting the `st
This project will help you learn about : This project will help you learn about :
- Client utilities.
- The Go file system(**fs**) API. - The Go file system(**fs**) API.
- Ways to receive data. - Ways to receive data.
- Ways to output data. - Ways to output data.

1
subjects/ascii-art/color/README.md

@ -11,7 +11,6 @@ You must follow the same [instructions](https://public.01-edu.org/subjects/ascii
This project will help you learn about : This project will help you learn about :
- Client utilities.
- The Go file system(**fs**) API. - The Go file system(**fs**) API.
- RGB color model. - RGB color model.
- Ways to receive data. - Ways to receive data.

1
subjects/ascii-art/fs/README.md

@ -6,7 +6,6 @@ You must follow the same [instructions](https://public.01-edu.org/subjects/ascii
This project will help you learn about : This project will help you learn about :
- Client utilities.
- The Go file system(**fs**) API. - The Go file system(**fs**) API.
- Ways to receive data. - Ways to receive data.
- Ways to output data. - Ways to output data.

1
subjects/ascii-art/justify/README.md

@ -13,7 +13,6 @@ You must follow the same [instructions](https://public.01-edu.org/subjects/ascii
This project will help you learn about : This project will help you learn about :
- Client utilities.
- The Go file system(**fs**) API. - The Go file system(**fs**) API.
- Ways to receive data. - Ways to receive data.
- Ways to output data. - Ways to output data.

1
subjects/ascii-art/output/README.md

@ -8,7 +8,6 @@
This project will help you learn about : This project will help you learn about :
- Client utilities.
- The Go file system(**fs**) API. - The Go file system(**fs**) API.
- Ways to receive data. - Ways to receive data.
- Ways to output data. - Ways to output data.

1
subjects/ascii-art/reverse/README.md

@ -11,7 +11,6 @@ You must follow the same [instructions](https://public.01-edu.org/subjects/ascii
This project will help you learn about : This project will help you learn about :
- Client utilities.
- The Go file system(**fs**) API. - The Go file system(**fs**) API.
- Ways to receive data. - Ways to receive data.
- Ways to output data. - Ways to output data.

79
subjects/bomberman-dom/README.md

@ -0,0 +1,79 @@
## bomberman-dom
You certainly know [bomberman](https://en.wikipedia.org/wiki/Bomberman) right? Good good. You will make it. Relax, is not that hard, it is only a multiplayer version of it. Ah and forgot to mention that you will need to do it using the framework you created a while ago. Let me explain.
### Objectives
For this project you have to create a bomberman alike game, where multiple players can join in and battle until one of them is the last man standing.
### Instructions
In the beginning there was 4 players, and only one came out alive. Each player will have to start in the different corners of the map and only one will be victorious.
You will have to follow more a less the same principles has the [make-your-game](https://public.01-edu.org/subjects/make-your-game/) project. But we will refresh one of the concepts you will have to respect and deal with:
- [**Performance**](https://public.01-edu.org/subjects/good-practices/), is one of the most important aspects while developing a game, so lets respect it.\
Just like make-your-game you will have to respect the policy of:
- Running the game at least at **60fps** at all time
- No frame drops
- Proper use of [**`requestAnimationFrame`**](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame)
- Measuring performance to know if your code is fast
You must not use canvas neither [Web-GL](https://get.webgl.org/) or other framework. For this project you will use the framework you did on the [mini-framework](https://public.01-edu.org/subjects/mini-framework/) project.
You will have to make also a chat that enables the different players to talk to each other. As you will have to use [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API), this **chat can be considered as a "Hello World" of the multiplayer feature** for the **bomberman-dom**.
#### Game Mechanics
1. Players
1. NÂş of players: 2 - 4
2. Each player must have 3 lives. Then you are out!!
2. Map
1. The map should be fixed so that every player sees the whole map.
2. There will be two types of blocks, the ones that can be destroyed (blocks) and the ones that can not (walls).
1. The walls will be placed always in the same place, while the blocks are meant to be generated randomly on the map. Tip: the optional project [different maps](https://public.01-edu.org/subjects/make-your-game/different-maps) can be useful for this part.
2. In the starting positions the players need to be able to survive. For example: if the players place a bomb, they will need to have space to avoid the bomb explosion.
3. The players should be placed in the corners as their starting positions.
3. Power ups (each time a player destroys a block, a random power up may or may not appear):
1. Bombs: Increases the amount of bombs dropped at a time by 1;
2. Flames: Increases explosion range from the bomb in four directions by 1 block;
3. Speed: Increases movement speed;
When the user opens the game, he/she should be presented to a page where he/she should enter a **nickname** to differentiate users. After selecting a nickname the user should be presented to a waiting page with a **player counter** that ends at 4. Once a user joins, the player counter will increment by 1.
If there are more than 2 players in the counter and it does not reach 4 players before 20 seconds, a 10 second timer starts, to players get ready to start the game.\
If there are 4 players in the counter before 20 seconds, the 10 seconds timer starts and the game starts.
#### Bonus
Although this bomberman already is super cool, it can be always better. Here are some ideas you can implement into the game to make it super awesomely cool:
- **Solo + Co-Op mode**: You are supposed to develop an AI to play against the players. So once the AI is defeated all players involved win.
- **More power ups**:
- _Bomb Push_: Ability to throw a bomb after it has been placed;
- _Bomb Pass_: Ability to pass through bombs;
- _Block Pass_: Ability to pass through blocks (not walls);
- _Detonator_: Ability to choose when a bomb will explode on a key press;
- _1 Up_: Gives the player an extra life;
- **Release power ups after death**: When a player dies it drops one of it's power ups. If the player had no power ups, it drops a random power up.
- **More than 4 players**: Be able to start a game with more than 4 players
- **Team mode**: Make games with 2v2 or 3v3 (two/three players versus two/three players).
- **After death interaction**: When a player dies, they can reappear as a ghost. If a ghost touches another player they come back to life. If a ghost is caught in a bomb explosion, the player controlling the ghost dies permanently.
This project will help you learn about:
- [`requestAnimationFrame`](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame)
- [Event loop](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop)
- FPS
- [Jank/stutter animation](https://murtada.nl/blog/going-jank-free-achieving-60-fps-smooth-websites)
- webSockets
- Synchronization
- Developer Tools
- [Firefox](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_are_browser_developer_tools)
- [Chrome](https://developers.google.com/web/tools/chrome-devtools)

77
subjects/bomberman-dom/audit/README.md

@ -0,0 +1,77 @@
#### Functional
##### Try to open the game.
###### Were you able to enter your nickname?
###### After entering your nickname, were you redirected to a waiting page presenting a player counter?
###### After entering your nickname, did you have access to a chat?
##### Try to enter with another user (in another browser or in private browser).
###### Did the player counter incremented by 1?
###### After entering with another user, can all users chat with each other in realtime (using websockets)?
##### Wait 20 seconds with two users in the waiting page.
###### After 20 seconds did a 10 seconds timer started to begin the game?
###### After the 10 seconds did the game start?
##### Try to enter with 4 different users in the waiting page.
###### As soon as the fourth player entered, did the 10 seconds timer started?
###### While playing the game, are you able to move and place a bomb?
###### Can the player see the whole map at once?
##### Try placing a bomb and standing by it when it explodes.
###### Did you lose 1 of your 3 lives?
##### Try to lose all your 3 lives.
###### Did you lose the game and are not able to play anymore?
##### Try placing a bomb next to another player.
###### Did the other player lost a life when the bomb exploded?
##### Place a bomb next to a destroyable block.
###### Did the block disappear when the bomb exploded?
##### Try to destroy every block on the map.
###### Did the power ups appeared in the places of the blocks?
###### Can you confirm that there is 4 different types of power ups?
##### Open the Dev Tool in the Performance tab.
###### Does it not present frame drop?
##### Open the Dev Tool in the Performance tab.
###### Does the game run at or around 60fps?
##### Open the Dev Tool in the performance tab and select the option rendering with the paint ON.
###### Is the paint being used as less as possible?
##### Open the Dev Tool in the performance tab and select the option rendering with the layer ON.
###### Is the layers being used as less as possible?
###### Are the creation of the [layers being promoted](https://developers.google.com/web/fundamentals/performance/rendering/stick-to-compositor-only-properties-and-manage-layer-count) properly?
#### Bonus
###### +Can the player see how many lives he/she has?
###### +Is there any display of who won the game?
###### +Can you play again after the game ends?

1
subjects/forum/README.md

@ -71,7 +71,6 @@ For the forum project you must use Docker. You can see all about docker basics o
This project will help you learn about: This project will help you learn about:
- Client utilities.
- The basics of web : - The basics of web :
- HTML - HTML
- HTTP - HTTP

1
subjects/social-network/README.md

@ -213,7 +213,6 @@ Every other notification created by you that isn't on the list is welcomed too.
This project will help you learn about: This project will help you learn about:
- Client utilities
- Authentication : - Authentication :
- Sessions and cookies - Sessions and cookies
- Using and [setting up Docker](https://docs.docker.com/get-started/) - Using and [setting up Docker](https://docs.docker.com/get-started/)

Loading…
Cancel
Save