Discuss Scratch

sy12321
Scratcher
65 posts

質問コーナー4

rento1904 wrote:

プロジェクトで軽量化をする方法って具体的にはありますか?
制御ブロックを使ってブロックをまとめると、
ある程度は軽くなると思います。
rento1904
Scratcher
100+ posts

質問コーナー4

aipi wrote:

rento1904 wrote:

プロジェクトで軽量化をする方法って具体的にはありますか?
クローンを上手く使う、不要なコスチューム、音楽を削除する、定義にまとめる、、、
とかは私はよくやります
(被りそう)
ちなみに100%penの(試)作品なので、クローンやコスチューム、など無いです。(ちなみに音楽も試作品なので無いです)
sy12321
Scratcher
65 posts

質問コーナー4

#1179 その作品を見せてくれませんか?
rento1904
Scratcher
100+ posts

質問コーナー4

sy12321 wrote:

#1179 その作品を見せてくれませんか?
出来れば今後の作品にも通じるよう言葉で教えてほしいですが、一応この作品です
punpo2007
Scratcher
500+ posts

質問コーナー4

Scratch2.0オフラインエディターにv444.4って書いてたのですがこれはバグですかね?
yuikunyeah
Scratcher
1000+ posts

質問コーナー4

([ln] \( (9) \))//9は適当です
([log]\((9)\))//このブロックはsin cos tanなどが入っているブロックです
このブロックはどのような計算に使うのですか?
sy12321
Scratcher
65 posts

質問コーナー4

rento1904 wrote:

sy12321 wrote:

その作品を見せてくれませんか?
出来れば今後の作品にも通じるよう言葉で教えてほしいですが、一応この作品です
それは他の人の作品ですが、URLまちがってませんか?
もしかしてこの作品ですか?
本当にその作品ならすいません。
thehongo_music
Scratcher
2 posts

質問コーナー4

youtube始めました!などの他サイトの宣伝っていいんですか?
thehongo_music
Scratcher
2 posts

質問コーナー4

youtube始めました!などの他サイトの宣伝っていいんですか?
ryouuuuoyr
Scratcher
1000+ posts

質問コーナー4

rento1904
Scratcher
100+ posts

質問コーナー4

sy12321 wrote:

rento1904 wrote:

sy12321 wrote:

その作品を見せてくれませんか?
出来れば今後の作品にも通じるよう言葉で教えてほしいですが、一応この作品です
それは他の人の作品ですが、URLまちがってませんか?
もしかしてこの作品ですか?
本当にその作品ならすいません。
確かに間違っていました。すみません。上の作品で間違いないです。
kensin3050
Scratcher
100+ posts

質問コーナー4

ちょっと目を離してた隙にもう60ページもいったんか…そんなことよりも質問。
確か、スクラッチ上にある全てはCC BY-SA 2.0で公開されてましたよね?
だったら https://scratch.mit.edu/discuss/youtube/うんたらかんたら みたいにスクラッチ上のyoutubeプレイヤーで流す動画もCC BY-SA 2.0で公開されるんですかね?
apple502j
Scratcher
1000+ posts

質問コーナー4

利用規約の4.1にあるもの(「any projects, comments, forum posts, or links to third party websites that a user submits to Scratch」)が対象です。
KimiruHamiru
New Scratcher
500+ posts

質問コーナー4

rento1904 wrote:

プロジェクトで軽量化をする方法って具体的にはありますか?

sy12321 wrote:

もしかしてこの作品ですか?
すみません。上の作品で間違いないです。
「1秒間に30回描画してほしいのにフレーム落ちしている」みたいな話ですね。
こまかい動作は確認していないのですが、
・Scratchは1秒に約30フレーム描画できる。
という前提として、私の経験から言えば、一般論として、

・「1フレーム=0.033秒」に実行できる「ペンを下ろす」の回数は、どのように作っても「1500回程度が限界」。

ということが言えます。1500を超えるとフレーム落ちが始まり、「重く」なります。
最悪1秒に1フレームしか描かれないみたいなことになったり、場合によっては1フレーム描くのに3時間かかるプロジェクト(フルピクセルなレイトレーシング等)とかもあるかと思います。
1500がどこからくるのか理由は知りませんが、これまでそういうプログラムばかり大量に作ってきた観察からは、そうです。
(ちなみにpure WebGLの描画性能のみについて言えば、PCは100万頂点/frame程度は処理できると思います)

引用のプログラムの場合、
「画面クリアで1回+(1ピクセル幅で700回ペンを下ろす定義)x4回」
実行しているので、ループ1回あたり「2801回?(算数に弱いです)」ペンを下ろしているかと思います。
このため、2フレーム程度(ゆるい計算で言えば「2800わる1500=およそ2」)が必要となるはずです。
計測の仕方にもよると思いますが、「ずっとループ」の中に
[frames v]を(1)ずつ変える
[FPS v]を((frames)/(タイマー))にする
みたいなことを書くと、たしかに
1秒あたり15~16フレーム
となっているように見えます。

ということで、重さ対策としては「ペンを下ろすの回数を減らす。1フレーム当たり1500以下に抑える」のが必要と思われます。
やり方はいろんなプロジェクトの研究をしてほしいのですが「可能な場面ではペンの太さを太くする」あたりから手を付けるのがいいかなと思います。
aorubomerkun-s_test
Scratcher
100+ posts

質問コーナー4

ユーザースプリクトとは何ですか。
apple502j
Scratcher
1000+ posts

質問コーナー4

スクリプトの実行に関して、最近Scratch Wikiの記事を書きましたが、「ペンを下ろす」ブロックのコードを見てみると、再描画が要求されています。シーケンサーの動作は以下の通りなので
Scratchは、1秒間に30回描画する。(フレーム)そして、シーケンサーは、以下の条件をすべて満たす限り、1フレーム内で可能な限り多くのスレッドを実行する:
(略)
ターボモードであるか、またはステージの再描画が要求されていない。
ターボモードでない場合はスレッドは1回しか実行できません。スレッドが1回でどのくらいスタックを実行できるかは場合によるので、調査してみます。
sy12321
Scratcher
65 posts

質問コーナー4

#1191 おそらく、処理速度の問題です。700回繰り返すというところでかなり遅くなってしまっているのだと思います。そこを少くするしかないですね・・・

Last edited by sy12321 (Sept. 9, 2020 11:18:05)

apple502j
Scratcher
1000+ posts

質問コーナー4

追記:
実験してみたところ、以下のコードでは変数は31となりました。(ペンを下ろす per frame≒1)
@greenFlag がクリックされたとき
[変数 v]を[0]にする
ずっと
[変数 v]を(1)ずつ変える
ペンを下ろす
end

[タイマー v] > (1) のとき
[すべて v]を止める

ただし、これは「ずっと」ブロックの制限だと思います。(ループはyieldする。)以下のようにすれば、「変数」は2倍になります。
@greenFlag がクリックされたとき
[変数 v]を[0]にする
ずっと
[変数 v]を(1)ずつ変える
ペンを下ろす
[変数 v]を(1)ずつ変える
ペンを下ろす
end

[タイマー v] > (1) のとき
[すべて v]を止める

このまま倍にしていくと、124、248、496、992、1984、3968までいきました。
結論としては、「ペンを下ろすブロックではなく、ループ処理が遅い」ということだと思います。
ループのyieldを止めるには「画面を再描画せずに実行」を定義ブロックで止めればいいのですが、この2つの相性が合わないのが残念なことです。
apple502j
Scratcher
1000+ posts

質問コーナー4

追記の追記:
「画面を再描画せずに実行」を使うと、6000「ペンを下ろす per frame」行きました。
なお、試すことはおすすめしません。
beatbox4108
Scratcher
37 posts

質問コーナー4

bi_n wrote:

オンラインゲームの作り方を教えてください
それは、ここで質問することではないのではないのでしょうか。
参考までに…
scratch オンラインゲーム 作り方
ja:クラウド変数

Powered by DjangoBB