ummshsh / cmdblockbuster

SRS Tetris. Still very much in development

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BlockBusterXaml project

This is just xaml based debugger for playtesting

Screen

BlockBuster project

Actual tetris designed as class library that can be used anywhere. I plan to test it with Unity as well as xaml(XAML tested)

Features

Field

It have 2 top rows to spawn tetrominoes that are intended to be invisible, they are visible in XAML project for debug though

Tasks

πŸ”₯ High priority

  • Implement SRS rotation
  • Implement gravity and speed levels
  • Ghost tetromino
  • Implement new cell type for playfield to be rendered, to it can have move properties
  • Game status event
  • Sound events
  • Implement wallkicks
  • Constrained(time/repetition) infinity(With toggle) https://tetris.fandom.com/wiki/Infinity
  • Fix windows spawn location
  • Make xaml next queue preview
  • Xaml hold preview
  • Xaml menu: start\restart\pause on esc
  • SpawnTetromino(): Implement 7 pack spawn system
  • Check performance
  • Create readme
  • Implement basic scoring
  • Settings class with defaults in txt file
  • Report actions to scoring counter
  • Implement debug playfield states
  • Check infinity again
  • Check that soft drop does not lock mino
  • Before assigning regular score I need to check if it is BTB, if so, then score BTB(actionScore*1.5) instead
  • Auto repeat rate for rotation\horizontal and vertical movement
  • πŸ”§ Check infinity, looks like after hard drop it waits for some time to spawn next mino and make sure that kick triggers infinity
  • πŸ”§ Clicking on 'New game' after another game started causes +50mb ram
  • πŸ”§ Level switched to 2 only after 20th mino
  • Delayed Auto Shift: the amount of time before an input is repeated/ARR is engaged.(Auto Repeat Rate)
  • πŸ”§ Do not DAS rotations and hard drops
  • πŸ”§ Implement global game timer as a time reference for all time based conditions
  • πŸ”§ On fast movement playfield update incorrectly, and some junk displayed until tile updated
  • Do not call UpdateFieldToDisplay() if nothing changed
  • πŸ”§ With DAS implementation input started to feel unresponsive for shifts, rotations are fine
  • πŸ”§ S mino sometimes not locking in defalut rotation if left corner is not on foundation(Hard drop locks it though)
  • πŸ”§ Soft drop should not lock mino
  • πŸ”§ Soft drop counted towards score even if it doensn't dropped lines
  • Implement scoring tests
  • Tspin is not recognized by Score counter
  • Save score to file with regard to game mode
  • Game modes: Quick play\Endless\Marathon\Sprint\Ultra
  • Make replay funcionality:
    • Check if engine determenistic somehow
    • Each frame(or more frequent) store game inputs
    • Create ReplaytInputHandler
    • Create ReplayWriter, to write to stream(game inputs, tetromino order, timestamps delta, hold, hext, level, mode)

✨ Low priority

  • Figure out snake sequences and what to do with them in spawn queue (more than 2 snakes consequently not permited)
  • Icon for xaml project
  • Tests (maybe?)
  • Make more appropriate layout in xaml
  • Read about fourth kick upgrading simple move to diffucult move, so it won't break the combo and b2b counter
  • use Debug.WriteLineIf everywhere and look at config for toggle
  • RotateLeftOrRight(): Make default rotation as part of kicks table so this methodd can be simplified
  • Make XAML window resizable
  • Move all basic moves (<0) to separate enum to use in playfield history
  • In playfield history use Action.Landed instaed of mino property
  • Check that T spin wil be rewarded if teromino not lands and disappears(contininues moving)
  • Fix unit tests
  • ObjectCopier: check obsolete code
  • Fix spelling of 'tetromino' everywhere, or rebrand to Block
  • Playtest variable levels up
  • 20G does not have a ghost Tetrimino function for you. When you see the Tetrimino on the ground, it’ll be too late. But if your movement gets fast enough, you’ll get more time to look at the NEXTs. Remember,
  • Refactor main class
  • If I elect to implement ARE, then I should also add:
    • Initial hold system
    • Initial rotation system
    • Charging for movements and for hold

πŸ’‘ Ideas to check

  • Make HistoryStack concurrent
  • Probably I do too many checks and code can be simplified
  • Recongnize different BTB's

About

SRS Tetris. Still very much in development


Languages

Language:C# 100.0%