次期 Siv3D(Siv3D v0.8)で採用した技術

5.8K Views

June 21, 25

スライド概要

C++ breaktime 2025/Summer LT スライド
https://cpp-osaka.connpass.com/event/356031/

Siv3D 公式サイト: https://siv3d.github.io/ja-jp/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

次期Siv3Dで 採用した技術 C++/グラフィックス C++ breaktime 2025 / Summer https://cpp-osaka.connpass.com/event/356031/ Ryo Suzuki

2.

Siv3D とは • 音や画像、AI を使ったゲーム・アプリのフレームワーク • C++20 で楽しく簡単にコーディングできる • Windows / macOS / Linux / Web で動作 • MIT ライセンス • 65 人のコミッタ

3.

教育現場で活用が広がる Siv3D • ゲーム系学部、専門学校 大阪電気通信大学 • C++ 講義での使用 上智大学の学生作品

4.

Siv3D 製ゲームに高評価 • 昨年 Steam で配信された Siv3D 製ゲームのうち、 2 作品が レビュー 200 件以上 & 98% 好評 • 海外のパズルゲームアワード Thinky Awards 2024 Best Challenging Game 受賞 https://store.steampowered.com/app/2487390/For_the_GHOSTs/ https://store.steampowered.com/app/2770160/_/

5.

Siv3D の歴史 2012 Siv3D 初公開 Windows のみ 2016 v0.2 世代 macOS / オープンソース化 2019 v0.4 世代 C++17 / Linux 2021 v0.6 世代 C++20 / Web 2025- v0.8 世代(予定) C++23 / さらなる機能追加

6.
[beta]
1. Ranges を積極活用
• API の主要部分で Ranges をもっと活用
• (例)画像の指定した縦 1 列に for でアクセス
Image image{ Size{ 400, 300 }, Palette::White };

以前

最新

for (int32 y = 0; y < image.height(); ++y)
{
image[y][100] = Palette::Green;
}
for (auto& pixel : image.column(100))
{
pixel = Palette::Green;
}

7.
[beta]
2. 関数がさらに constexpr に
• 多くの Siv3D 関数が constexpr 対応
• (例)配列
コンパイル時
評価を確認

,

,

をコンパイル時ソート

static_assert(Array{ U'
== Array{ U'

', U'
', U'

', U'
', U'

' }.sort()
' });

最新

• (例)文字列中の大文字個数をコンパイル時カウント
static_assert(String{ U"C++ breaktime 2025/Summer" }
.count_if(IsUpper) == 2);

• テストコードの多くが static_assert に

最新

8.

3. 新しいライブラリを採用 • 最新の高性能ライブラリの採用で実行時性能 Up 用途 ライブラリ リリース年 Unicode 変換・検証 simdutf 2021 浮動小数点数の文字列化 fast_float 2021 メモリ・アロケータ mimalloc v2 2021 ハッシュ xxHash3 2019 疑似乱数生成 PCG 2014

9.

4. 模様付きの図形描画 • 従来: 図形の塗りつぶしパターンは単色 / グラデーション • 新たに「模様」を追加。テクスチャを使わず、 シェーダの数学関数のみで表現 おすすめ資料: GDC 2024 『Toon Rendering in Hi-Fi RUSH』

10.

5. QuadWarp を使いやすく • テクスチャを自由な四角形にパース変形して描画 • 本来は 3D メッシュを使うか、複雑なシェーダが必要 • 2D 描画と同じくらい単純なコードで書けるように texture.drawQuadWarp(四角形);

11.

6. Variable Font への対応 • 単一のフォントファイル内に複数のスタイルを内包し、 それらを連続的に変化させられるフォント • (例)太さを 100~900 の範囲で調整 • これまで Regular / Bold などスタイルごとに分かれてい たフォントを 1 つに統合できサイズが節約 • Siv3D に同梱される日本語フォント 以前 計 5.7 MB 最新 サイズはいずれも Zstandard 圧縮後 1.8 MB

12.

7. COLRv1 フォント対応 • ベクターベースの新しいカラーフォント形式 • グラデーション、変形、合成などリッチな表現 • パーツの使い回しにより、ファイルサイズを大幅圧縮 • ラスタライズ実装には Skia など専門ライブラリが必要 • Siv3D に同梱される Google Noto Color Emoji フォント 以前 9.3 MB 最新 2.3 MB サイズはいずれも Zstandard 圧縮後

13.

Siv3D はどう運営してる? • GitHub Sponsors 経由での個人寄付 • 特典: 名前掲載、個別サポート、イベント招待・優待価格 • 有償のサポート • 企業からの協賛・助成金 |バ Siv3D ゲ ー ン ム ダ ジ イ ャ ナ ム ムコ スタ ジオ杯 • ゲームジャム共催(74 名 44 作品) • 2025 秋に第 2 回

14.

Siv3D の活動 • 全国の学校へ無償での訪問勉強会 一定の人数が集まれば • 北は岩手、南は沖縄まで 30 か所以上 • 開発成果の共有 • CEDEC / セキュリティ・キャンプ/ 日本情報オリンピック / 情報処理学会 / 日本ソフトウェア科学会

15.

Siv3D ユーザーの活躍 • 高専プロコン競技部門では定番の開発ツールに • 昨年は出場校のうち 33%(20 校以上)が使用 ■ が Siv3D 使用チーム 2018 2019 2021 2022 2023 2024 仙台(名取) 東京 弓削商船 大阪公大 福井 松江 優勝 東京 八戸 大阪府大 弓削商船 熊本(熊本) 徳山 準優勝 阿南・福井 久留米 久留米 松江 豊田 仙台(広瀬) 3位 佐世保 サレジオ 香川(高松) 豊田 徳山 八戸 特別賞 久留米 熊本(熊本) 東京 旭川 近畿大学 熊本(八代) 特別賞 大阪府立 弓削商船 長野 久留米 都立(荒川) 豊田 特別賞

16.

Siv3D ユーザーの活躍 • Steam レビュー200 件が昨年 2 作品 • Siv3D で GitHub デビューした学生が OSS 活動 • テレ朝・CA 小学生コンテスト、Siv3D 作品が準優勝 • Siv3D で開発を学んだユーザーがゲーム業界で活躍 での登壇など

17.

Siv3D は企業との連携を募集中 • ゲームジャム共催 (例)地方、子ども向け講座 • ゲーム会社・団体の CSR 活動への協力 • インターン・研修での Siv3D 活用 イベント開催、 インターン情報 • Siv3D ユーザー Discord(660 人登録)での情報発信 • スポンサーシップによる学生開発者との接触機会向上 DM / メール([email protected])でお気軽にご連絡ください