An OOP interface for interacting with object databases in the mobile game Gakuen Idolm@ster.
Designed with ❤ by Ziyuan "Heartcore" Chen.
Refactored from gkmasToolkit by Kishida Natsumi,
which in turn was adapted from HoshimiToolkit by Vibbit.
Request API & decryption algorithms borrowed from HatsuboshiToolkit by DreamGallery.
- Fetch, decrypt, deserialize, and export manifest as ProtoDB, JSON, or CSV
- Differentiate between / add (apply patch to) manifest revisions
- Download and deobfuscate assetbundles and resources in parallel
- Media conversion plugins for Texture2D, AudioClip audio, AWB audio, and USM video
import GkmasObjectManager as gom
m = gom.fetch() # fetch latest
m.export("manifest.json")
m_old = gom.load("octocacheevai")
m_diff = m - m_old
m_diff.export("manifest_diff.json")
m.download(
"img.*cidol.*full.*", "img.*csprt.*full.*", # character & support cards
image_format="JPEG", image_resize="16:9"
)
m.download("sud.*inst.*.awb", audio_format="WAV") # instrumental songs
m.download("mov.*cidol.*loop.usm", video_format="MP4") # animated character cards
m.download(
"sud_vo_adv_unit.*",
path="mainstory_voicelines",
audio_format="mp3", # applies to all subsongs
unpack_subsongs=True, # unpack ZIP to output directory
)
m.download_preset("presets/namecard_kit.yml")
manifest.decrypt.AESCBCDecryptor
- Manifest decryptionmanifest.octodb_pb2.Database
- ProtoDB deserializationmanifest.manifest.GkmasManifest
- ENTRY POINTmanifest.revision.GkmasManifestRevision
- Manifest revision managementmanifest.listing.GkmasObjectList
- Object listing and indexingobject.resource.GkmasResource
- Non-Unity objectmedia.dummy.GkmasDummyMedia
- Base class for media conversion pluginsmedia.image.GkmasImage
- PNG image handlingmedia.audio.GkmasAudio
- MP3 audio handlingmedia.audio.GkmasAWBAudio
- ACB/AWB audio conversionmedia.video.GkmasUSMVideo
- USM video conversion
object.deobfuscate.GkmasAssetBundleDeobfuscator
object.assetbundle.GkmasAssetBundle
- Unity objectmedia.dummy.GkmasDummyMedia
media.image.GkmasUnityImage
- Texture2D image handlingmedia.audio.GkmasUnityAudio
- AudioClip audio handling
#
denotes a number.
IDOL
denotes (hski|ttmr|fktn|amao|kllj|kcna|ssmk|shro|hrnm|hume|hmsz|jsna)
.
- Image
img
adv
img_adv_speaker_(krnh|andk|sson|sgka)_###-###
img_adv_still_all_cmmn_###-##
img_adv_still_dear_IDOL_###-###
img_adv_still_pstory_cmmn_###-##
chr
img_chr_IDOL_##-(audition|bustup|full|thumb-circle|thumb-push)
img_chr_(atbm|nasr|trvo|trda|trvi)_##-thumb-circle
cos
img_cos_IDOL-(schl|trng|casl|cstm|othr)-####_body
img_cos_costume_head_IDOL-(schl|casl|cstm|hair)-####_head
gasha
img_gasha_banner_gasha-#####-(standard|pickup|select-pickup|free)-###-(logo|select|select-m|select-s)
img_gasha_banner_gasha-#####-(pidol|support)-select-pickup-###-(logo|select-m|select-s)
img_gasha_banner_gasha_ticket_ssr_(idol|support|idol_support)_#-(logo|select-m|select-s)
img_gasha_banner_gasha_ssr_##-(logo|select-m|select-s)
img_gasha_text_*
general
img_general_achievement_(common|produce|char_IDOL)_###
img_general_achievement_IDOL-(#-###|master|tower)_###
img_general_cidol-IDOL-#-###_#-(full|thumb-(landscape|landscape-large|portrait|square|gasha))
img_general_csprt-1-####_(full|thumb-(landscape|square))
img_general_(comic_####|comic4_####|comic4_####-thumb)
img_general_commu_(top|part|support|event)-header_###
img_general_commu_chapter-(header|thumb)_##-##
img_general_commu_thumb_unit_##-##-##
img_general_commu_idol-top_IDOL-thumb
img_general_commu_dearness_IDOL-banner
- ...
- ...
- Audio
sud
- ...
- Video
mov
- Major
mov_adv_dear_ed_IDOL_###
mov_general_cidol-IDOL-3-###_1(|-loop)(|-gasha)
mov_general_gasha_bg_idol_cidol-IDOL-3-###
mov_general_gasha_bg_support_csprt-#-####
mov_general_gasha_live_i_card-skin-IDOL-3-###-result
- Minor
mov_adv_unit_explanation_cmmn_001
mov_gasha_monitor_(monitor|step1|tap)-(000|002|003|004_IDOL)
mov_gasha_movie_tap-(000|002|003|004)
mov_general_gasha_(school-logo|taptostart)-alpha
mov_general_media_(opening|pv|pv_jsna)_001
mov_general_monitor_(01|03)
- Major
- Text
adv
- Major
adv_cidol-IDOL-3-###_##
adv_csprt-#-####_##
adv_dear_IDOL_(###|010-01)
adv_event_###_main-##
adv_live_IDOL_001_(start|end)-(##-01|04-02)
adv_pevent_001_IDOL_(activity_(###|(017|018)-(01-02))|school_###)
adv_pevent_002_IDOL_sales_#-###-(01|02)
adv_pgrowth_001_IDOL_##
adv_pstep_001_cmmn_(before|after)-(lesson|jyugyo|odekake|rest|sikyu)-##-(a|b|c|d|cmn)(|-02)
adv_pstep_002_cmmn_((before-lesson-##-(a|b|c|d))|((before|after)-eigyo|after-present)-##-cmn-(01|02))
adv_pstory_001_IDOL_(opening|after-step-(1|2)|ending)-(normal|true)-##
adv_pstory_001_IDOL_(before|after)-audition-(mid|final)-(normal|failure)-##
adv_unit_01-##_##
- Minor
adv_event_highscore_introduction-01
adv_presult_(001|002)_(midterm-failure|final-(failure|normal-##|true))
adv_produce-refresh_(001|002)_before-audition-(final|mid)
adv_produce-week-skip_002_01
adv_pweek_001_cmmn_(toschool|schoolroom|corridor|classroom)-(01|02)-(a|b|c|d|ac)(|-02)
adv_startup_202#_(|user-)bd-01_IDOL-01
adv_tower-001
adv_tutorial_first_(cmmn|hski|ttmr|fktn)-##
adv_warmup
- Major
- Models
- Model
mdl
- ...
- Motion
mot
- ...
- Environment
env
- ...
- FBX
fbx
- MEF
mef
- Timeline
tln
- Crowd
crw
- Effect
eff
- Model
- Miscellaneous
scl
ttn
fgd
t
sky
image_sprite_atlas.unity3d
actor-shader.unity3d
ui-shader.unity3d
shader.unity3d
m_fdc.unity3d
Custom.acf
musics.txt