Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
My frontend framework for 2D game, TECH UNIVERS...
Search
Tengu712
July 14, 2023
Programming
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
My frontend framework for 2D game, TECH UNIVERSITY LT Summit, July 9, 2023
Tengu712
July 14, 2023
More Decks by Tengu712
See All by Tengu712
Simplest Vulkan Tutorial in Japanese
tengu712
0
3.1k
Other Decks in Programming
See All in Programming
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
160
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
「人を評価する AI」の設計と実装
ryoyanara
0
220
ソフトウェアラスタライザ
fadis
0
180
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
560
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
170
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
150
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
220
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
150
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
120
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
250
4 Signs Your Business is Dying
shpigford
187
23k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Visualization
eitanlees
152
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Exploring anti-patterns in Rails
aemeredith
3
470
Claude Code のすすめ
schroneko
67
230k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
250
First, design no harm
axbom
PRO
2
1.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Transcript
2Dゲーム向けフロントエンドフレームワークの 制作 天狗 (RICORA) 1
簡単な自己紹介 東京理科大学 創域理工学部 情報計算科学科 四年生 言語・言語処理系好き OSを作ってみたい 設計者になりたい コンパイラを作っては辞めて、ゲームを作っては辞めて 2
制作物 2Dゲーム向けフロントエンドフレームワーク「Shooting Star」 Rust製 パブリックドメイン 少ない依存 LinuxとWindowsで動作 Rust向けライブラリ「sstar」としてcrates.ioに公開。 https://crates.io/crates/sstar 3
実践例 (事前準備) 1. VulkanSDKをインストール 2. LinuxならlibX11をインストール 3. cargoで新しいプロジェクトを作成 4. Cargo.tomlのdependenciesにsstarを追記
[dependencies] sstar = { version = "0.1.8", features=["with-default-shaders"] } 4
実践例 (コード) use sstar::{ app::{graphics::Position, SStarApp}, vulkan::PushConstant, }; fn main()
{ let mut app = SStarApp::new("Sample", 640.0, 480.0, 10); let mut pc = PushConstant { scl: [200.0, 200.0, 1.0, 0.0], ..Default::default() }; while app.update() { pc.rot[0] += 0.01; app.draw(pc.clone(), Position::Center); app.flush(); } app.terminate(); } 5
実践例 6
Shaders Resources Shooting Star Default Shaders bitmap Vulkan Window Manager
Game Program window vulkan GPU XInput /dev/input/js0 get input render load attach keyboard gamepad Linux Windows システム構成 7
TTF Text1 Text2 Text3 Rasterize Text1 Text2 Text3 Textures Texture
Atlas Render and Collect 文字描画 8
依存 RustのSTLだけではOS付近のレイヤーは叩けないので、 library use Vulkan GPUを用いたレンダリング処理 X11 ウィンドウ生成、キー入力判定(Linux) WindowsAPI ウィンドウ生成、キー入力判定(Windows)
stb_image pngデコーダ stb_truetype ttfラスタライザ 9
ビルド時依存 Rust FFIを用いればクレート以外の外部ライブラリとリンクできる。 「bindgen」でシグネチャ(以下のような宣言)を自動生成。 extern "C" { fn foreign_function(); }
stbライブラリはヘッダーファイルで提供される。 「cc」でstbをincludeしたCファイル(以下)からオブジェクトファイルを生成。 #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #define STB_TRUETYPE_IMPLEMENTATION #include "stb_truetype.h" 10
なぜ作ったの? Q: この世には沢山の良いフレームワークがあるでしょ? A: 個人開発なんだから好きに作らせてくれ! 外部ライブラリは便利だが負債になる。トレードオフ。 楽に速く開発する 自由度が減る・管理が複雑になる 11
ライセンス周りの面倒臭さ ライセンスは法解釈。 大きいフレームワークは大量の依存。 すべて読む必要がある 億劫 12
MIT ケース1 MITライセンスされたアプリがある。 このアプリをサーバーに置く。 ユーザからのクエリをアプリに投げて、結果を返す。 アプリの再頒布はないが、サーバに複製し、サービスの一環として利用している。 アプリのライセンス表示義務が生じる。 13
MIT ケース2 MITライセンスされたアプリがある。 このアプリ専用のエミュレータを作る。 ユーザにはアプリを含まずに頒布する。 エミュレータはアプリに強く依存する。 サービスとして成立するにはアプリが必須。 アプリを「利用している」と考えられなくもない。 14
面倒くさいので 権利を主張しないなら、 パブリックドメインで配布してほしいです。 15