new doc SAVE_FORMAT, new unihan font WenQuanYi

Former-commit-id: 654fe713ae8165ed37fc85535e9536b01a5fe611
Former-commit-id: 34468f4d34b3dfd4be01c48c7fab34fe04678a6b
This commit is contained in:
Song Minjae
2016-03-12 01:38:56 +09:00
parent 95092ea56c
commit 46a553d258
31 changed files with 298 additions and 97 deletions

View File

@@ -104,8 +104,9 @@
== (De)serialisation ==
* Custom binary + GSON
see SAVE_FORMAT
* Custom binary: Game map
* GSON: Actors, game configurations
== Actor being universal ==
* Utility tiles that have states (e.g. noteblock) are implemented using Actor.

View File

@@ -0,0 +1,55 @@
* Save meta
- Binary (for more security)
- Filename : world (with no extension)
Type Mnemonic Description
Byte[4] TESV Magic
Byte[n] name Savegame name, UTF-8
Byte null String terminator
Byte[8] terraseed Terrain seed
Byte[8] <arb name> possible other seeds
Byte[32] hash1 SHA-256 hash of worldinfo1 being stored
Byte[32] hash2 SHA-256 hash of worldinfo2 being stored
Byte[32] hash3 SHA-256 hash of worldinfo3 being stored
Byte[32] hash4 SHA-256 hash of worldinfo4 beihg stored (TEMD data) [32, 214, 42, 3, 76, ...]
* Actor data
- GZip'd GSON
- Filename : <refid> (with no extension)
* Prop data
- GZip'd CSV
- Filename : worldinfo1 -- tileprop.csv
worldinfo2 -- itemprop.csv (with no extension)
* Roguelike randomiser data
- GZip'd GSON
- Filename : worldinfo3
* Human-readable
- Tiles_list.txt -- list of tiles in csv
- Items_list.txt -- list of items in csv
== How it works ==
* If hash discrepancy is detected, (hash of csv in save dir != stored hash || hash of TEMD != stored hash)
printout "Save file corrupted. Continue?" with prompt "Yes/No"
Directory:
+--- <save1>
--- 2a93bc5fd...f823 Actor data
--- 423bdc838...93bd Actor data
--- Items_list.txt Human-readable
--- Tiles_list.txt Human-readable
--- world save meta
--- worldinfo1 tileprop
--- worldinfo2 itemprop
--- worldinfo3 Roguelike randomiser
--- worldinfo4 TEMD binary