はじめまして!
何回かに分けてScratchのプロジェクトをハッキング(=ソースコードを特別な方法で編集する)する方法をまとめました。今回は1回目です。
##ハッキングとは?
プロジェクトのソースが入っているJSONを編集して改造することを指す。
クラッキングとは異なる。
##方法
-
Scratch 2.0エディターの灰色のバーにある
ファイル
をクリックしてドロップダウンメニューを表示させる(上の方にある)。 - 手元のコンピューターにダウンロードを選択。
- ファイル名を
[プロジェクト名].sb2
から[プロジェクト名].zip
に変えてダウンロード。 - ダウンロードしたファイルを解凍して、
project.json
を開く。
"objName": "Stage",
"sounds": [{
"soundName": "pop",
"soundID": 1,
"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",
"sampleCount": 258,
"rate": 11025,
"format": ""
}],
"costumes": [{
"costumeName": "backdrop1",
"baseLayerID": 3,
"baseLayerMD5": "739b5e2a2435f6e1ec2993791b423146.png",
"bitmapResolution": 1,
"rotationCenterX": 240,
"rotationCenterY": 180
}],
"currentCostumeIndex": 0,
"penLayerMD5": "5c81a336fab8be57adc039a8a2b33ca9.png",
"penLayerID": 0,
"tempoBPM": 60,
"videoAlpha": 0.5,
"children": [{
"objName": "Sprite1",
"scripts": [[13, 21, [["whenGreenFlag"], ["say:", "Hello World!"], ["say:", "縺薙s縺ォ縺。縺ッ 荳也阜���"]]]],
"sounds": [{
"soundName": "meow",
"soundID": 0,
"md5": "83c36d806dc92327b9e7049a565c6bff.wav",
"sampleCount": 18688,
"rate": 22050,
"format": ""
}],
"costumes": [{
"costumeName": "costume1",
"baseLayerID": 1,
"baseLayerMD5": "f9a1c175dbe2e5dee472858dd30d16bb.svg",
"bitmapResolution": 1,
"rotationCenterX": 47,
"rotationCenterY": 55
},
{
"costumeName": "costume2",
"baseLayerID": 2,
"baseLayerMD5": "6e8bd9ae68fdb02b7e1e3df656a75635.svg",
"bitmapResolution": 1,
"rotationCenterX": 47,
"rotationCenterY": 55
}],
"currentCostumeIndex": 0,
"scratchX": 0,
"scratchY": 0,
"scale": 1,
"direction": 90,
"rotationStyle": "normal",
"isDraggable": false,
"indexInLibrary": 1,
"visible": true,
"spriteInfo": {
}
}],
"info": {
"scriptCount": 1,
"hasCloudData": false,
"userAgent": "Mozilla.......",
"projectID": "236389663",
"swfVersion": "v461",
"spriteCount": 1,
"videoOn": false,
"flashVersion": "WIN 21,0,0,213"
}
まず、3~10行目のソースコード
"sounds": [{
"soundName": "pop",
"soundID": 1,
"md5": "1234567890.wav",
"sampleCount": 258,
"rate": 11025,
"format": ""
}],
ここは背景のサウンド関連のコードとなっている。
ここの中の2行目はサウンドの名前,4行目がサウンドファイルのファイル名となっている。
次に11~19行目
"costumes": [{
"costumeName": "backdrop1",
"baseLayerID": 3,
"baseLayerMD5": "1234567890.png",
"bitmapResolution": 1,
"rotationCenterX": 240,
"rotationCenterY": 180
}],
ここも背景の画像関連のコードとなっている。
サウンドのコードと同じ要領だ。
そして、20行目からはスプライトのサウンド,画像そしてプログラムのコードとなっていく。
そのコードがこのコード
文字化けしているのは気にしない。多分zipでDLしたから。
もし気になるのであれば(というか、DLしたままjsonを編集しようとすると、書き込み禁止の場合もあるし、編集しにくい。でも、zipから外に出してあげると文字化けも解消される。)
"scripts": [[13, 21, [["whenGreenFlag"], ["say:", "Hello World!"], ["say:", "縺薙s縺ォ縺。縺ッ 荳也阜���"]]]],
まずは["say:","Hello World!"]
。
"say:"
というのは()と言う
ブロックを表す。そして、"Hello World!"
は、そう。
白い部分Hello World!
という引数を表す。
そして、["say:", "縺薙s縺ォ縺。縺ッ 荳也阜���"]
は、こんにちは 世界!
を表す。
##ハッキングの一歩手前
では、今回は["say:", "縺薙s縺ォ縺。縺ッ 荳也阜���"]
の文字化けしてる部分を(すいません。zipから出すのさぼりました...今度からはちゃんとzipファイルから出して文字化けしないようにします...)["say:", "ほげ"]
というように書き換えてみよう。
そして、以下の手順でアップロードしてみよう!
- 編集したjsonをzipに戻す(このとき編集前のjsonが残っている場合は置き換えてください)。
- Scratchエディターに戻る。
- 灰色のバー(初めと同じところ)にある
ファイル
から手元のコンピューターからアップロード
を選択して、そのzipを選択してアップロードする(表示されるファイルの種類をカスタムファイル
からすべてのファイル
にしないとzipは表示されない)。 -
アップロードしますか?
的な事を聞かれるので迷わずOK。 - 引数が変わっていることを確認。>終了!
今回はここまで。次回は有意義なハッキングをします(そもそも今回はハッキングではないが)!