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
Rustで対戦型Tetrisを作った話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
しゅん🌙
August 03, 2023
Technology
420
0
Share
Rustで対戦型Tetrisを作った話
しゅん🌙
August 03, 2023
More Decks by しゅん🌙
See All by しゅん🌙
エンジニアのための”最低限いい感じ”デザイン入門
shunshobon
0
220
文字数の話の続き 〜Unicodeの楽しくない話〜
shunshobon
0
260
文字数の話 〜Unicodeの楽しい話〜
shunshobon
0
290
Haskellの並列・並行処理
shunshobon
1
460
Other Decks in Technology
See All in Technology
ServiceNow Knowledge 26 の歩き方
manarobot
0
260
社内エンジニア勉強会の醍醐味と苦しみ/tamadev
nishiuma
0
270
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
430
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
8
1.4k
拝啓、あの夏の僕へ〜あなたも知っているApp Runnerの世界〜
news_it_enj
0
140
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
7.9k
Fabric MCPの紹介と使い分け
ryomaru0825
1
110
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
400
独断と偏見で試してみる、 シングル or マルチエージェント どっちがいいの?
shichijoyuhi
1
220
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
280
GitHub Copilot Dev Days
tomokusaba
0
120
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
3.1k
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
520
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
180
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
330
Chasing Engaging Ingredients in Design
codingconduct
0
180
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
170
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Deep Space Network (abreviated)
tonyrice
0
130
The World Runs on Bad Software
bkeepers
PRO
72
12k
Exploring anti-patterns in Rails
aemeredith
3
340
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Transcript
Rustで対戦型 Tetrisを作った話 限界LT #⌊π⌋ しゅん
自己紹介 名前: しゅん Twitter: @shun_shobon / GitHub: @shun-shobov
学校: 長野高専 電子情報工学科 5B 興味: Web Frontend / Web Frontend Ops / A11y な$ 研究: ホログラフィ / ヒューマンインタフェースな$ 趣味: ゲーム / 自作キーボーI 一言: コンピュータと人との関わり方を模索しています
作ったもの
作ったもの Q 対戦型のTetriD Q ライン消去で相手にお邪魔を送れG Q なるべく既存のルールに忠実に実B Q Tスピンや回転入れも可能
経緯
ネットワークプログラミングIIの課題 ぼく「自分が作りたいように作るか〜〜」
何を作ろう 先生「適当でいいやって人は例年授業中に作った三目並べを四目並べにして提出いますね」 先生「あと過去にすごいもの作った人は麻雀とか作ってました」 他の人「Siv3Dでゲームでも作ろうかな」 ぼく「僕もTetrisでも作ろうかな」
僕のゲーム制作記 ゲーム1: 中3にPythonで作ったオセロ ゲーム2: 中3にPythonで作ったブロック崩し 以上 >> 5年ぶりのゲーム制作 << まあ去年にC言語でミニゲーム作ったけどそれは入れない方針で...
技術選定 言語→TSは飽きたからRustでも使うか フレームワーク→なないが触ってたBevy使うか 通信→WebRTCで作ったらええやん 雑に技術スタック決定
Bevyの概要
Bevyの概要 a Rust純正のゲームエンジD a 2D・3Dどちらも対0 a 画像・音声対0 a キーボード・コントローラ・タッチ対0 a
クロスプラットフォーS a Wasmも対応 a ECSというアーキテクチャを採用
ECSとは Entity: ただの識別用ID Component: Entityに紐づくデータ(構造体) System: 上記2つやリソースなどを操作する関数 Entity,Component,Systemの3つを組み合わせていくデータ指向アーキテクチャの一種.
EntityとComponent Entityには0つ以上のComponentを持っていて,Componentや位置情報やマテリアル,ゲームの ロジックで使用するデータなどを持っている. Entity (1) Translation (10, 5, 3) Name
(Alice) Player Health (20) Entity (2) Translation (3, 10, 3) Name (Bob) Player Health (40) Entity (3) Translation (5, 20, 2) Enemy Health (40)
EntityとComponent Commandsを使用して新しくEntityをSpawnさせたり,逆にDespawnさせたりできる.
System 特定のタイミングで実行される関数.EntityやComponentの操作が主.Queryを使うことで Entity内の特定のComponentを取得でき,参照や変更が可能.
Resource 特定のEntityに紐づかない,大域的なデータを扱うためのもの.
Event 主にSystem間で処理をやり取りするのに使える.
ネットワーク
Bevy Assets BevyにはAssetsというページがあり, いろんな3rd partyライブラリがジャン ル別に紹介されている. 今回はMatchboxというライブラリを採 用した.
Matchboxとは Rust製のWebRTC用ライブラリ.Wasmに対応しており,低レイヤーのことを考えずにWebRTC通 信ができる.シグナリングやサーバー用のライブラリも提供されており,bevy_matchboxでBevy のResourceやComponentとしても使用することができる.
今回の通信 フィールドのブロック情報を全て送受信すると重たいので,ミノが設置されたタイミングでフィー ルド更新情報をブロードキャスト. v ミノが設置された位置・向き・種` v 消去されたラインの位p v せり上がったお邪魔の数・穴の位置
今回の通信 フィールドのブロック情報を全て送受信すると重たいので,ミノが設置されたタイミングでフィー ルド更新情報をブロードキャスト.その他お邪魔の送信やゲームオーバーなども送信するようにし ている.
作ってみての感想
作ってみての感想 本気でTetris作ろうとするとTetris自体が非常に複f Super Rotation System,Lock Down,Next..r ECSアーキテクチャは非常に使いやすいが癖が強%
System間の実行順序が難しい→なるべくそれらに依存しないように作 Rustの型の厳しさのお陰で大幅な設計変更もそこまで苦がなくできた
今後の展望 A これどうにかしたV A Pluginを使って全体的なリファクタリン6 A 多人数戦への対 A ロビーシステÉ A
Wasm対応+WebApp化