User Tools

Site Tools


user:smalik3:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
user:smalik3:start [2022/05/01 05:52] – Added video reference to Bottom-Corner Tuck (BCT) smalik3user:smalik3:start [2022/05/15 04:10] (current) – Added link to award-based section. smalik3
Line 4: Line 4:
  
 CollecTRIS is a TETRIS-inspired game made to run on the NES((Nintendo Entertainment System)). The goal of the game is simple: collect points and try not to lose them! If you lose five points, you lose the game! CollecTRIS is a TETRIS-inspired game made to run on the NES((Nintendo Entertainment System)). The goal of the game is simple: collect points and try not to lose them! If you lose five points, you lose the game!
 +
 +Winner of [[https://lab46.g7n.org/user/smalik3/start#student_expo_stem_awardbest_use_of_technology|2022 Student Expo STEM Best Use of Technology]] award!
  
 {{:user:smalik3:collectris.gif|}} {{:user:smalik3:collectris.gif|}}
Line 22: Line 24:
 ====Walkthrough (Images)==== ====Walkthrough (Images)====
  
-{{:user:smalik3:collectric_walkthrough_1.jpg|}} +{{:user:smalik3:collectric_walkthrough_1.jpg?600|}} 
-{{:user:smalik3:collectric_walkthrough_2.jpg|}} +{{:user:smalik3:collectric_walkthrough_2.jpg?600|}} 
-{{:user:smalik3:collectric_walkthrough_3.jpg|}} +{{:user:smalik3:collectric_walkthrough_3.jpg?600|}} 
-{{:user:smalik3:collectric_walkthrough_4.jpg|}}+{{:user:smalik3:collectric_walkthrough_4.jpg?600|}}
  
 ... from here you repeat the process starting at image one! ... from here you repeat the process starting at image one!
Line 39: Line 41:
  
 =====Pro Strategies===== =====Pro Strategies=====
 +
 +CollecTRIS has a couple of professional strategies that can be utilized to speed up gameplay and even help avoid the red block! Some of these strategies may be hard, while others easier.
  
 ====Bottom-Corner Tuck (BCT)==== ====Bottom-Corner Tuck (BCT)====
Line 45: Line 49:
 {{:user:smalik3:collectris_bottomcorner_tuck_2.jpg?400|}} {{:user:smalik3:collectris_bottomcorner_tuck_2.jpg?400|}}
  
-When a blue block (or technically red block as well, but you would not want to collect that) is placed on the corner of another already-placed tetromino you have the chance to perform what I have coined as a //bottom-corner tuck//((Tucking the falling tetromino block into the corner of another already-placed block, CollecTRIS only.)). This move requires a near-frame-perfect right movement into the corner of another placed tetromino. Doing this will place the current tetromino into the corner of another tetromino, allowing you to skip the step of clearing the playfield (by topping out) and just collect the blue block.+When a blue block (or technically red block as well, but you would not want to collect that) is placed on the top left or right corner of another already-placed tetromino you have the chance to perform what I have coined as a //bottom-corner tuck//((Tucking the falling tetromino block into the top left/right corner of another already-placed block placing the tetromino, CollecTRIS only.)). This move requires a near-frame-perfect right movement into the top left/right corner of another placed tetromino. Doing this will place the current tetromino into the top left/right corner of another tetromino, allowing you to skip the step of clearing the playfield (by topping out) and just collect the blue block.
  
 If you are interested in seeing this move in action, it is performed in the [[https://lab46.g7n.org/user/smalik3/start#sample_gameplay|sample gameplay]] at 04:18. If you are interested in seeing this move in action, it is performed in the [[https://lab46.g7n.org/user/smalik3/start#sample_gameplay|sample gameplay]] at 04:18.
Line 51: Line 55:
 ====Top-Corner Tuck (TCT)==== ====Top-Corner Tuck (TCT)====
  
 +{{:user:smalik3:collectris_topcorner_tuck_1.jpg?400|}} 
 +{{:user:smalik3:collectris_topcorner_tuck_2.jpg?400|}} 
 +   
 +When a blue block (or technically red block as well, but you would not want to collect that) is placed on the bottom left or right corner of another already-placed tetromino you have the chance to perform what I have coined as a //top-corner tuck//((Tucking the falling tetromino block into the bottom left/right corner of another already-placed block, CollecTRIS only.)). This move is relatively simple, requiring you to simply move into the bottom left/right corner of another tetromino by holding down in that direction. Doing this will temporarily move the current tetromino into the bottom left/right corner of another tetromino, allowing you to skip the step of clearing the playfield (by topping out) and just collect the blue block. This move is very similar to the bottom-corner tuck, with one notable exception, this will not end up placing the current tetromino and does not require any kind of frame-perfect input. 
 +  
 +If you are interested in seeing this move in action, it is performed in the [[https://lab46.g7n.org/user/smalik3/start#sample_gameplay|sample gameplay]] at 01:48.
  
 =====Underlying Game Mechanics==== =====Underlying Game Mechanics====
Line 61: Line 70:
 Similar to other NES games, CollecTRIS uses a background in order to display more static graphics and sprites to display dynamic graphics. The background of CollecTRIS is simple and will be shown below. The nametable((One screen full of background characters, made up of 960 bytes, stored in NES Virtual RAM.)) is what creates the background. In the case of games like TETRIS, and CollecTRIS, a lot of nametable manipulation occurs in order to store tetromino blocks when they are placed. Since the NES has a sprite limit of 64 sprites on-screen at once, it is unrealistic to have all tetromino blocks on the playfield as sprites. Rather, they begin as sprites but once placed are then put into the background. Similar to other NES games, CollecTRIS uses a background in order to display more static graphics and sprites to display dynamic graphics. The background of CollecTRIS is simple and will be shown below. The nametable((One screen full of background characters, made up of 960 bytes, stored in NES Virtual RAM.)) is what creates the background. In the case of games like TETRIS, and CollecTRIS, a lot of nametable manipulation occurs in order to store tetromino blocks when they are placed. Since the NES has a sprite limit of 64 sprites on-screen at once, it is unrealistic to have all tetromino blocks on the playfield as sprites. Rather, they begin as sprites but once placed are then put into the background.
  
-When using emulators such as [[https://fceux.com/|FCEUX]] the user has the ability to view the nametable independent of any sprites on the screen. Here are examples from both NES TETRIS //and// CollecTRIS where normal gameplay is occurring on the left, while the nametable is having the placed tetrominos stored in it (shown on the right). The right screen is effectively showing the background, and, as you will see the tetrominos will get put into the actual background once they are placed.+When using emulators such as [[https://fceux.com/|FCEUX]] the user has the ability to view the nametable independent of any sprites on the screen. Here are examples from both NES TETRIS //and// CollecTRIS where normal gameplay is occurring on the left, while the nametable is having the placed tetrominos stored in it (shown on the right). The right screen (or bottom screen if you are on mobile) is effectively showing the background, and, as you will see the tetrominos will get put into the actual background once they are placed.
  
 {{:user:smalik3:tetris_blocks_falling.gif|}} {{:user:smalik3:tetris_blocks_falling.gif|}}
Line 72: Line 81:
  
 If you watch carefully, you will notice how certain elements that are on the left screen (actual game) are not on the right screen. As described before the right screen is solely the nametable (background), therefore any sprites that are on the screen will not display on the right screen. The nametable and playfield of both TETRIS and CollecTRIS are intertwined in that they are essentially the same thing. The playfield part of the background (nametable) is where I placed blocks, and the tetromino is limited to that playfield programmatically. This image shows the nametable used for CollecTRIS, and its playfield dimensions: If you watch carefully, you will notice how certain elements that are on the left screen (actual game) are not on the right screen. As described before the right screen is solely the nametable (background), therefore any sprites that are on the screen will not display on the right screen. The nametable and playfield of both TETRIS and CollecTRIS are intertwined in that they are essentially the same thing. The playfield part of the background (nametable) is where I placed blocks, and the tetromino is limited to that playfield programmatically. This image shows the nametable used for CollecTRIS, and its playfield dimensions:
-{{:user:smalik3:collectris_playfield.jpg|}}+{{:user:smalik3:collectris_playfield.jpg?600|}}
  
 When it comes to placing the tetromino inside of the playfield section of the nametable, every three ticks the game will check for a placement to be done. The [[https://lab46.g7n.org/user/smalik3/start#movement_tetromino|tetromino movement]] section of this page goes further into why every three ticks is ideal for events like these. When it comes to placing the tetromino inside of the playfield section of the nametable, every three ticks the game will check for a placement to be done. The [[https://lab46.g7n.org/user/smalik3/start#movement_tetromino|tetromino movement]] section of this page goes further into why every three ticks is ideal for events like these.
Line 83: Line 92:
  
 The tick layout of the game is centered around its movement, so for every three ticks the game will check if a tetromino needs to be placed into the background... for example. Why every three ticks though? Why not every four ticks? The reason is simpler when said: if the placement of a tetromino and movement check of a tetromino occur at the same time, the movement check will lag behind. The reasoning for this is because when a tetromino is placed it skips checking for any movement (tetromino is placed so it is unnecessary), this means that when the next movement check comes around it may be a tick too early or tick too late resulting in some lag from the player's perspective. The tick layout of the game is centered around its movement, so for every three ticks the game will check if a tetromino needs to be placed into the background... for example. Why every three ticks though? Why not every four ticks? The reason is simpler when said: if the placement of a tetromino and movement check of a tetromino occur at the same time, the movement check will lag behind. The reasoning for this is because when a tetromino is placed it skips checking for any movement (tetromino is placed so it is unnecessary), this means that when the next movement check comes around it may be a tick too early or tick too late resulting in some lag from the player's perspective.
- 
  
 ====Movement Randomization (Blue/Red Blocks)==== ====Movement Randomization (Blue/Red Blocks)====
Line 89: Line 97:
 The blue and red blocks are moved every time a single one is collected. When a blue block is collected then both the blue and red blocks move. When a red block is collected then only the red block moves. How is that determined? Clearly, the movement is random, although at the start of the game the position is always the same. The game makes two seeds at random tick intervals, these two seeds are used as the starting point for randomly generating the positions for the red and blue blocks. The blue and red blocks are moved every time a single one is collected. When a blue block is collected then both the blue and red blocks move. When a red block is collected then only the red block moves. How is that determined? Clearly, the movement is random, although at the start of the game the position is always the same. The game makes two seeds at random tick intervals, these two seeds are used as the starting point for randomly generating the positions for the red and blue blocks.
  
-The seeds for randomization are based on where the tetromino is, //and//, the number of ticks that have currently passed by (0-255). The seeds are also created at uneven tick intervals, therefore they are essentially created randomly whenever the game pleases. These factors put together result in a fairly random placement of the blue and red blocks. As stated previously, the seeds for randomization are generated based on the placement of the tetromino. This figure shows how tetromino position effects blue/red block placement: {{:user:smalik3:collectris_redblueblocks_randomization_determinant.jpg|}}+The seeds for randomization are based on where the tetromino is, //and//, the number of ticks that have currently passed by (0-255). The seeds are also created at uneven tick intervals, therefore they are essentially created randomly whenever the game pleases. These factors put together result in a fairly random placement of the blue and red blocks. As stated previously, the seeds for randomization are generated based on the placement of the tetromino. This figure shows how tetromino position effects blue/red block placement: {{:user:smalik3:collectris_redblueblocks_randomization_determinant.jpg?600|}}
  
 The position of the left-bottom block near the tetromino and the bottom-left block is what affects randomness. This means that alongside the computer-based randomization, the player also contributes towards the randomness of the blue and red block placements seen in-game! The position of the left-bottom block near the tetromino and the bottom-left block is what affects randomness. This means that alongside the computer-based randomization, the player also contributes towards the randomness of the blue and red block placements seen in-game!
Line 99: Line 107:
 The score and hearts used to indicate points and lives, respectively, are made from sprites. Since the sprite limit was not even close to being met for CollecTRIS, sprites were used in lieu of nametable (background) tiles in order to make working with them easier. Every tick, the score and hearts are reflected accordingly to match the point and life counters. The score and hearts used to indicate points and lives, respectively, are made from sprites. Since the sprite limit was not even close to being met for CollecTRIS, sprites were used in lieu of nametable (background) tiles in order to make working with them easier. Every tick, the score and hearts are reflected accordingly to match the point and life counters.
  
 +=====2022 Student Expo STEM Award: Best Use of Technology=====
 +
 +The CollecTRIS project is proud to have won the 2022 Student Expo STEM Best Use of Technology award! This award was received as acknowledgement of technology in an incredibly useful or productive manner.
 +
 +Please check out [[https://anchor.fm/michael-clarke5/episodes/Student-Expo-Awards-Best-Use-of-Technology-Sponsored-by-the-STEM-Division-e1i7j34/a-a7ssvcf|The Baron Interviews - Interview with Creator of CollecTRIS]] for additional coverage about CollecTRIS from its creator.
 +
 +CollecTRIS Poster:\\
 +{{:user:smalik3:collectris_poster.jpg?600|}}
 +
 +If you would love to see more from CollecTRIS or its creator, please check out the [[https://lab46.g7n.org/user/smalik3/start#resources_and_downloads|Resources and Downloads]] section.
 +
 +=====Resources and Downloads====
 +
 +[[https://lab46.g7n.org/~wedge/NES/collectris.html|Play CollecTRIS Online!]]
 +
 +[[https://lab46.g7n.org/~wedge/NES_ROMs/collectris.nes|Download CollecTRIS]]
 +
 +[[https://github.com/SockNastre/CollecTRIS|GitHub Repo]]
 +
 +[[https://www.youtube.com/watch?v=OZwwC5VfyNM|Final Project Video]]
 +
 +[[https://lab46.g7n.org/journal/spring2022/smalik3/start#nesasm_project|Project Start Timeline (Account Required)]]
 +
 +[[https://lab46.g7n.org/haas/games#class_game_projects|Other Class Game Projects]]
 +
 +[[https://erikdemaine.org/fonts/tetris/|TETRIS Font Creator]]
 +
 +====QR Codes====
 +
 +Want to check out other great games made by Computer Science students?\\
 +{{:user:smalik3:haas_games_qrcode.png?400|}}
  
 +Want a QR code that links to this page?\\
 +{{:user:smalik3:collectris_wiki_qrcode.png?400|}}
  
user/smalik3/start.1651384371.txt.gz · Last modified: 2022/05/01 05:52 by smalik3