No Description https://typingfreaks.pleasantprogrammer.com/

Thomas Dy 1f93616734 Switch to ES modules and snowpack 3 years ago
.github 88de0e5181 Add github action to make release 3 years ago
assets 1f93616734 Switch to ES modules and snowpack 3 years ago
scripts 88de0e5181 Add github action to make release 3 years ago
src 1f93616734 Switch to ES modules and snowpack 3 years ago
.gitignore 1f93616734 Switch to ES modules and snowpack 3 years ago
LICENSE 6b14100bf9 Add LICENSE and README 3 years ago
README.md 6b14100bf9 Add LICENSE and README 3 years ago
package-lock.json 1f93616734 Switch to ES modules and snowpack 3 years ago
package.json 1f93616734 Switch to ES modules and snowpack 3 years ago
snowpack.config.js 1f93616734 Switch to ES modules and snowpack 3 years ago
tsconfig.json 1f93616734 Switch to ES modules and snowpack 3 years ago

README.md

Typingfreaks

This is a clone of an old flash game called TypingMania. It's a speed typing game where you type lyrics (typically in Japanese) in time with the song.

There are many differences from the original and full compatibility is not a goal.

  • scoring is different (still in flux)
  • you're allowed to skip a single character, this is to make finishing the songs more feasible but counts as a miss
  • the displayed text is in Hepburn romanization but still supports other romanizations for input
  • YouTube support for songs (still experimental)

You might also be interested in innocenat's clone.

Gameplay Instructions

The initial screen shows available songs. You can navigate left/right through folders and up/down through songs. Space or enter will select a song. Escape or backspace can be used to go back out.

Install

Get the latest release and unzip it. Edit the levels.json with your own songs. Then simply serve it as a static site.

Config

The config is a simple JSON file with the following properties:

The following accept any CSS color

  • background - the default background
  • baseColor - base color of all text and UI elements
  • highlightColor - accent color mainly for selections

The following let you customize the sound effects by specifying files relative to the index.html. Defaults are provided so there's no need to modify them unless you want to.

  • selectSound - sound effect when navigating
  • decideSound - sound effect when entering a song

The levelSets property describes the "folder" structure. It expects an array of the following:

  • name - name of the folder
  • levels - an array of level data

Level data has the following properties (a lot of the weird naming is inherited from TypingMania).

  • name - name of the song
  • creator - artist of the song
  • genre - "genre" of the song, but can be used for anything
  • difficulty - a number to show beside the song
  • audio - path to the audio file or a youtube video
  • background - path to an image to serve as the background, if not specified, it shows the video otherwise just uses the default background
  • songLink - a link back to the source of the song
  • lines - array containing lyrics and timing data

Lines contain the following properties:

  • kanji - display lyrics of the song, has no effect on the game
  • kana - the kana for the lyrics, this is what's used for the game
  • start - start time of the segment in seconds
  • end - end time of the segment in seconds

If audio is not specified, lines does not need to specify timing information. It will just act like a normal untimed typing game.

TypingMania

If the levels.json property in index.html is changed to a folder instead, we try to load the folder assuming it contains TypingMania data (settings.xml, folderlist.xml, etc.). I haven't tested this extensively so there could be incompatibilities.

Editor

There is a provided editor that's quite rough. It's main purpose is to help with creating the lines property of the levels. You can load a youtube or an audio file and place marks to split the sections. Lyrics can be input in the text areas. You can then export it to a JSON string which you can just paste into levels.json. You can also import from an existing JSON string to edit a level.

Build Instructions

The project is a vanilla typescript project. Simply run:

npm install
npm run build