Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DojoCon2021-Siv3D

Ryo Suzuki
December 18, 2021

 DojoCon2021-Siv3D

Ryo Suzuki

December 18, 2021
Tweet

More Decks by Ryo Suzuki

Other Decks in Education

Transcript

  1. 中・高・大学生 Siv3D ユーザの活躍 1/4 ゲームやメディアアートを制作 英語・中国語版も リリース 海外 YouTuber の

    ゲーム実況も多数 画像引用: https://twitter.com/Shibaken_8128/status/1344967321454931969 https://twitter.com/r193333333/status/1377613363929247746 https://twitter.com/takara2314/status/1415649264085069829 https://www.freem.ne.jp/win/game/14167 https://www.freem.ne.jp/win/game/14961
  2. 中・高・大学生 Siv3D ユーザの活躍 2/4 十代のクリエータが Siv3D 作品でコンテスト入賞 PCN こどもプロコン 最優秀賞

    日本ゲーム大賞 U-18 部門予選通過 学力向上アプリコンテスト デザイン部門賞 画像引用: https://pcn.club/contest/contest10.html https://youtu.be/J19GBAjeBH8 https://youtu.be/2eX_rN9E_hA
  3. 中・高・大学生 Siv3D ユーザの活躍 3/4 競技プログラミングで Siv3D を活用 高専プロコンでは 10 校以上が

    Siv3D を使うプログラムで大会出場 競プロコンテストサイト AtCoder の C++ コースでも紹介 写真引用: https://www.cresco.co.jp/news/2021/09/13/210913_corp.html
  4. Siv3D って何? 1/2 C++ で楽しく簡単にゲームやアプリを作れるライブラリ # include <Siv3D.hpp> void Main()

    { Scene::SetBackground(ColorF{ 0.8, 0.9, 1.0 }); const Texture food{ U"🍿"_emoji }; const Texture bird{ U"🐥"_emoji }; while (System::Update()) { Circle{ Scene::Center(), 100 }.draw(); food.drawAt(Scene::Center()); bird.drawAt(Cursor::Pos()); } }
  5. 世界でもっとも使われているプログラミング言語の 1 つ Windows (OS) Google Chrome (ブラウザ) Photoshop (写真編集ソフト)

    Arduino (マイクロコンピュータ) Word, Excel (文書作成) Unreal Engine (ゲームエンジン) Minecraft (ゲーム) Google, YouTube, Amazon 自動運転・ロボット制御システム 金融取引システム C++ って何? 1/2
  6. C++ のパワーを引き出す Siv3D 難易度が高い C++ を、短く & たくさんの機能を使えるよう強化 # include

    <Siv3D.hpp> void Main() { Size brickSize{ 40, 20 }; double speed = 480.0; Vec2 ballVelocity{ 0, -speed }; Circle ball{ 400, 400, 8 }; Array<Rect> bricks; for (auto p : step(Size{ (Scene::Width() / brickSize.x), 5 })) bricks << Rect{ (p.x * brickSize.x), (60 + p.y * brickSize.y), brickSize }; while (System::Update()) { Rect paddle{ Arg::center(Cursor::Pos().x, 500), 60, 10 }; ball.moveBy(ballVelocity * Scene::DeltaTime()); for (auto it = bricks.begin(); it != bricks.end(); ++it) if (it->intersects(ball)) { (it->bottom().intersects(ball) || it->top().intersects(ball) ? ballVelocity.y : ballVelocity.x) *= -1; bricks.erase(it); break; } if (ball.y < 0 && ballVelocity.y < 0) ballVelocity.y *= -1; if ((ball.x < 0 && ballVelocity.x < 0) || (Scene::Width() < ball.x && 0 < ballVelocity.x)) ballVelocity.x *= -1; if (0 < ballVelocity.y && paddle.intersects(ball)) ballVelocity = Vec2{ (ball.x - paddle.center().x) * 10, -ballVelocity.y }.setLength(speed); for (const auto& brick : bricks) brick.stretched(-1).draw(HSV{ brick.y - 40 }); ball.draw(); paddle.draw(); } } C++ で自力で作ると 500 行ぐらいかかる Siv3D は 27 行
  7. CoderDojo との関わり 2/4 • といっても、いきなり知らない人に頼むのは難しい • IPA 未踏、U-17 未踏ジュニア、プログラミングイベント、 SNS

    などで交流のある CoderDojo 関係者が何人かいた • 私のこういうツールを使って、こういうワークショップをしたいと 相談したら快諾してくれた • ありがとうございます!
  8. CoderDojo との関わり 3/4 Siv3D Siv3D for Kids Enrect CoderDojo 金沢

    CoderDojo 宜野湾 CoderDojo 浦添 Siv3D for Kids
  9. CoderDojo との関わり 4/4 Siv3D Siv3D for Kids CoderDojo 静岡 CoderDojo

    柏 Siv3D for Kids 写真引用: https://coderdojo-shizuoka.org/9th 写真はCoderDojo 柏提供
  10. 普段とは違うローカルの参加者を発掘する機会にしてもらう • C++ を学べる • 遠くの大学からゲストがやってくる • 親子で参加するイベント ローカルコミュニティの活動を外部の人に披露する機会にも •

    ローカルの参加者が普段の活動や宣伝を発表する LT(ライトニング・トーク)タイムを設けることも 各地のコミュニティとの連携のために 3/3
  11. • Scratch など「道具」を使っての開発はしていても、 道具を作る人に出会う機会は少ない。視野が広がるきっかけに • 気になるツールの開発者・研究者に声をかけてみてください • 「受け入れ」を PR するのもあり?

    • 双方にメリットのある WS デザインを考えましょう • プログラミングツール開発に携わる人が Dojo から生まれると嬉しい (おわりに) CoderDojo へのメッセージ