😳

【衝撃】子ども向けと言われているScratchで作られたスゴイ作品を紹介

2022/09/09に公開

はじめに

今回は、Scratch3.0というビジュアルプログラミング言語で作られたスゴイ作品を紹介していきます。

Scratchのイメージ.scratch
定数 Scratch = 子どもむけ

と思っている方が多いかもしれません。(実際そうかもしれないのですが)

しかし、実際にはScratchでできることは本当に幅広く、3DCGやAIを作ったり、信じられないような作品を作っている猛者もたくさん存在します。

今回は、Scratchをやってきて衝撃を受けた作品を紹介していこうと思います。

筆者について

  • 普段はプログラミングの勉強、ブログなどで技術関連の情報発信をしています
    • Python・Go・Node.js・Web系のプログラム
  • AI(機械学習)にとても興味があります!
    • CNNの誤差逆伝搬法について勉強したい
    • AIってロマンがつまってるよね…✨
  • 福岡県にあるCoderDojo春日を開催しています
    • とても楽しい・情報共有・交流
    • AIに興味がある方は喜んでガチで教えます(数学的内容も)
  • Scratch歴は5年ほどで、一番使い慣れています
    • ニューラルネットワーク作ったり、誰もやったことないようなことをやるのが生きがいです
    • Pythonや他の言語で作った作品をScratchで再現(移植?)するのも生きがいです

筆者のブログ

https://www.chickensblog.com/category/scratch/
Scratchの情報や、プログラミング関連の記事を書いています!

CoderDojo春日(無料)

https://coderdojo-kasuga.connpass.com/
CoderDojo春日の参加申し込みサイトです。福岡県に住んでいる方はぜひご参加ください!

それでは、早速本題に入っていきます。

3D Minecraft Ver.1.1 (マインクラフト風サンドボックスゲーム)

by nakakouTV


https://scratch.mit.edu/projects/496260365/
なんとScratchで3D描画!世界的にも有名なMinecraftを再現しています。この凄さについては、以下に書きました。

スゴイポイント

  • 3D描画をフルスクラッチで自作している
    • 3D描画ライブラリを使っても大変なのに、Minecraftのような操作性を持たせている
    • ポリゴン描画、頂点座標の演算から、ポリゴンの描画順番処理など…
    • 数学知識が豊富に必要なものをプログラムする技術
  • ブロックの破壊、設置可能
    • クリエイティブモードのように操作可能
  • 作品についての解説動画有り
    • 全部は公開されていないので、今後に期待!

とにかくこの作品は、「3D描画がフルスクラッチで実装されている」という点に衝撃を受けました。Scratchには3D描画ライブラリなどなく(というか、ライブラリという概念がありません)、Penという線をひけるブロックで描画されています。
なので、

地獄の処理.scratch
//TODO 頂点座標を演算し、ベクトルを計算して面法線を出してポリゴンの面裏判定をして、実際にポリゴンを描画して、メッシュを塗りつぶして、隣接しているメッシュは表示しないようにして…

などという気が遠くなりそうな大量に実装しなければならない問題を全て実装されているのがスゴイです。
(自分も作ろうとしましたが、ポリゴンの深度や面裏判定、当たり判定、Penのラインクリップなど諸々の問題で殴られてしまい、完成には到底及ばず…)

そもそも3Dゲームをフルスクラッチで作る情報なんて世界でみてもなかなかないので、今後の解説動画にとても期待です。

P.S.
nakakouTVさん、数学的な仕組みの情報をもっと共有してください🙏

Paper Minecraft v11.6 (Minecraft 2D)

by griffpatch



https://scratch.mit.edu/projects/10128407

Scratch界隈では知らない人はいない!と言っても過言ではないほどの大作です。

操作方法や遊び方については作品の説明欄に書いてありますので、ぜひ遊んでみてください。

スゴイポイント

  • とんでもないソース量
    • 全部で10000個以上のブロック
  • 地形自動生成
    • 村や木などの建築物、バイオームや海なども自動生成
  • タイルチップの制御
    • Scratchの機能、クローンをうまく活用
  • モブの制御
  • とにかくクオリティが高い

などが挙げられます。特に、自分が興味を持ったのは、マップデータの管理です。Scratchには一次元配列しかなく、多次元配列は自作するしかないのですが、このような実装方法があるんだなぁととても勉強になりました。

地形自動生成についてのアルゴリズムについてはまだまだ理解できていないのですが、ノイズを作る関数などを巧みに使っているんだろうなと思いました。村や木などの建築データって、どのように保持しているんだろう?

このような2Dゲーム、Pythonなどの他のテキスト言語で作ったとしてもかなりのボリュームになると思うのですが、それをScratchで成し遂げてしまうのは本当にスゴイことです。

さらに詳しい内容は以下にまとめています。
https://www.chickensblog.com/scratch-minecraft-2d/

P.S.
この作品以外にも、Scratchエミュレーターなどを作られているので、インタプリタの仕組みなどが知りたいです。

まとめ

  • Scratch3.0でも信じられないほどスゴイ作品を作れる
  • Scratchには ライブラリの概念がない or 機能が少ない ので、自作する必要がある
    • なので、ブラックボックスな部分を勉強しないと実装は不可能
  • Scratchで再現出来ないもの、ほぼ無いのでは…?(処理の重さ、OS操作などは除外)

今回はこんな感じにまとめてみました。本当に、Scratchは単純ながら色々な作品を作れるので大好きです。今後、Scratchを参考にしたビジュアルプログラミング言語を作ろうと、今勉強しています。

ここまで読んでいただきありがとうございました。

いいね、フォロー、記事の閲覧が励みになりますので、ぜひよろしくお願いします!

関連記事

https://zenn.dev/teba_eleven/articles/00a1eae31c5a6f
https://zenn.dev/teba_eleven/articles/a0aa439179e4a7
https://www.chickensblog.com/scratch-maze-bfs/
https://www.chickensblog.com/scratch-electron-app/
https://www.chickensblog.com/scratch-dotown/
https://www.chickensblog.com/scratch-addons-good-function/

Discussion