techmania-docs

Documentations of TECHMANIA projects, hosted in a repo so they can be localized.


Project maintained by techmania-team Hosted on GitHub Pages — Theme by mattgraham

기준 버전: 0.4

TECHMANIA에서 사용하는 Track.tech 파일의 형식을 소개하는 문서입니다.

이 파일을 분석하여 이용하거나 다른 형식으로 변환하는 프로그램을 만들려면, C#을 이용하는 것을 권장합니다. 프로젝트에 Track.cs 파일을 추가하고, TrackBase.SerializeTrackBase.Deserialize 메소드를 호출하십시오. 아래 내용을 읽을 필요 없이 TECH 파일을 이용할 수 있습니다.

Track.tech

{
	"version": "2",
	"trackMetadata": {
		"guid": <GUID>,
		"title": <곡 제목>,
		"artist": <아티스트>,
		"genre": <장르>,
		"additionalCredits": <곡의 추가 정보>,
		"eyecatchImage": <미리보기 이미지 파일>,
		"previewTrack": <미리듣기 음악 파일>,
		"previewStartTime": <프리뷰 시작 시점>,
		"previewEndTime": <프리뷰 종료 시점>
	},
	"patterns": [
		<패턴 1>,
		<패턴 2>,
		<...>,
		<패턴 n>
	]
}

패턴

		{
			"patternMetadata": {
				"guid": <GUID>,
				"patternName": <패턴 이름>,
				"level": <Level>,
				"controlScheme": <조작 방식>,
				"lanes": <트랙 수>,
				"author": <패턴 제작자>,
				"backingTrack": <배경 음악의 이름>,
				"backImage": <배경 이미지 파일의 이름>,
				"bga": <BGA 파일의 이름>,
				"bgaOffset": <BGA 시작점>,
				"firstBeatOffset": <첫 비트의 시작점>,
				"initBpm": <마스터 템포>,
				"bps": <스크롤 영역당 박자 수>
			},
			"bpmEvents": [
				<템포 1>,
				<...>,
				<템포 n>
			],
			"packedNotes": [
				<일반 노트 1>,
				<...>,
				<일반 노트 n>
			],
			"packedHoldNotes": [
				<홀딩 노트 1>,
				<...>,
				<홀딩 노트 n>
			],
			"packedDragNotes": [
				<드래그 노트 1>,
				<...>,
				<드래그 노트 n>
			]
		}

템포

				{
					"pulse": <위치(단위: 틱)>,
					"bpm": <템포>
				}

노트

The packedNotes section covers all note types without a duration: Basic, Chain Head, Chain Node, Repeat Head, and Repeat. Each note is represented as a string in one of the following two formats:

Which format to use depends on whether the note has default values on volume, pan and end-of-scan:

If any of these values are different from default, that note will use the 2nd format. “E” stands for “Extended”.

Other notes:

홀딩 노트

The packedHoldNotes section covers notes of type Hold, Repeat Head Hold and Repeat Hold. Each note is represented as a string in one of the following two formats:

Similar to the previous section, a note will use the 2nd format if its volume, pan or end-of-scan value is different from default.

Notice that pulse and lane are reversed in this section. This is a bug from 0.1, and unfortunately there is no way to fix it without breaking every single pattern ever created.

Other notes:

드래그 노트

This section covers all drag notes. Each drag note is represented as the following structure:

				{
					"packedNote": <drag note>,
					"packedNodes": [
						<drag node 1>,
						<...>,
						<drag node n>
					]
				}

The packedNote part is a string in one of the two following formats:

Similar to the previous section, a note will use the 2nd format if its volume, pan or end-of-scan value is different from default. Drag notes should never be marked as end-of-scan, though.

Each drag note must contain at least 2 nodes. Each drag node consists of 1 anchor and 2 control points, and is represented as a string in the following format:

<anchor pulse>|<anchor lane>|<left control point pulse>|<left control point lane>|<right control point pulse>|<right control point lane>

All values are floating point numbers. The anchor’s pulse and lane is relative to the note head; the control points’ pulse and lane are relative to the anchor. Additionally, the first node is always located at the note head, so its pulse and lane are both 0, and its left control point is ignored; the right control point on the last node is also ignored.