SlideShare a Scribd company logo
1 of 30
Download to read offline
@mipsparc http://goo.gl/Q5Emmi 1
通信対戦ゲームを作った話
某高校2年
@mipsparc
@mipsparc http://goo.gl/Q5Emmi 2
自己紹介
●
@mipsparcです
●
コンピュータ部で部長やってた11月に一応引退
●
Pythonとかネットワークをやってる
●
いつもLinuxを使ってます(Xubuntu)
●
通信技術とか鉄塔とか航空とかも好き
●
慣れてない.スライド削るの大変だった
Slideshareにあげてます
@mipsparc http://goo.gl/Q5Emmi 3
今日話したいこと
●
今回作ったGunTankOnlineについて
●
通信対戦ゲームを作る上での基礎知識
●
どういう仕様にしたか
●
得られた知見
@mipsparc http://goo.gl/Q5Emmi 4
GunTankOnlineの概要
●
戦車でマルチプレーヤーで撃ちあう2Dゲーム
●
Python(いろいろあってクライアントは2系...)
●
SDLの薄いラッパーのPygameを利用
●
タイトルは某キリトくんが可愛いアニメに
インスピレーションを受けました
デモ動画流します
@mipsparc http://goo.gl/Q5Emmi 5
最初の姿
壁抜けしたり,いろいろバグがあったりして大変だった
640行
@mipsparc http://goo.gl/Q5Emmi 6
ネットワークの基礎知識
UDP
Ethernet
IPv4
プロトコルが階層状に
積み重なっている感じ
普通はEthernetとIPv4は必ず使うので,そこ
をどうするかはあんまり考えなくていい
その上のレイヤーに何を載せるかを決める
トランスポート層ってやつです
@mipsparc http://goo.gl/Q5Emmi 7
ネットワークの基礎知識
TCP
3way-
handshake
実際の
通信
セッション
クローズ
ダイヤグラムは
http://www.nina.jp/server/basic/tcpip.html
より引用させていただきました
UDP
実際の
通信
@mipsparc http://goo.gl/Q5Emmi 8
というわけで
UDPはコネクションを確立せず
に送るので,
多ノードにどんどんパケットを
送りつける今回の仕様に適して
いる
@mipsparc http://goo.gl/Q5Emmi 9
通信対戦ってどうなってるの?
●
いろいろ方法がある
●
サーバにキー操作を送信して,ゲームロジックをその
上で動かして,最終的なパラメータのみを取得
(不正に強い,P2Pでない,サーバ負荷大,実装難易度高)
●
ロジックはクライアントで動かして,パラメータの共
有にサーバを利用 (P2Pでない,サーバ負荷中)
●
各ノード同士で直接通信して,サーバはマッチングの
み関与する ←今回はこれ. 実装が楽でサーバ負荷小
@mipsparc http://goo.gl/Q5Emmi 10
通信って難しい?
気を配ることは多いけど,
そんなに難しくはない
(↑嘘です)
@mipsparc http://goo.gl/Q5Emmi 11
先に会場の構成
L2SW
クライアント サーバ
●
全ノード50台ほどがL2SW直結(うち30台使用)
●
クライアントはWindows7+Corei5と豪華
●
ゴミproxy
●
サーバはThinkPad
●
Windowsファイアウォール
のパターン投入済み
@mipsparc http://goo.gl/Q5Emmi 12
通信の仕様
●
フルメッシュP2P(対戦中の全員に投げつける)
●
素のsocketでUDPなので送達確認なし
●
すべてをJSONで
●
超低遅延環境(RTT1ms以下)が前提
●
マッチングのみサーバ利用,HTTPで(Flask)
@mipsparc http://goo.gl/Q5Emmi 13
気をつけること
●
たくさんあるんですが
●
メッセージの大きさが1492bytesくらいになると
複数のパケットで送られるそこまで気にしなくてもいい
●
落ちる原因が掴みづらいのでログを出しておく
●
テストは本当に大事! 自宅で出なかった不具合が
現場では出る.人集めて負荷テストやっておく
●
1台に不具合出ると波及する
@mipsparc http://goo.gl/Q5Emmi 14
Wiresharkで見てみる流れているパケットを見れるとっても便利なソフトのことです
@mipsparc http://goo.gl/Q5Emmi 15
送信されているパケット
●
動いた時
{"session_id": 807, "way": "right", "y": 1622, "x": 1808, "type":
"move"}
→ID807が右方向を向いていて,座標が(1808,1622)
●
発射したとき
{"colid_point": 1500, "type": "fire", "session_id": 630, "bullet_id":
676, "way": "right", "y": 2186, "x": 1339, "speed": 1600}
→ID630が(1339,2186)から右方向に速度1600で弾丸676を発射し
て,このまま行けばx=1500で壁にぶつかる
※本当はもっとID長いので,衝突対策はしていない
@mipsparc http://goo.gl/Q5Emmi 16
送信されているパケット
●
被弾した時
{"hp": 620, "session_id": 302, "bullet_id": 951, "y": 395, "x": 522,
"type": "struck", "died": false}
→ID302が弾丸951に(522,395)で被弾してHPが620になった.死亡は
していない
●
爆弾設置した時
{"session_id": 302, "explode": 1418892123.368, "bullet_id": 277, "y":
351, "x": 664, "type": "bomb"}
→ID302が(664,351)に爆弾277を設置,爆発時刻は
1418892123.368(UNIX Time)
@mipsparc http://goo.gl/Q5Emmi 17
特徴っぽいこと
●
被弾判定は自機についてのみ.当たったら報告
●
壁と弾の当たり判定もやらない
→発射時に衝突座標を計算して配信.壁抜けしない
●
上記の通り負荷軽くして同時接続数を多くできた
→17台同時接続しているのを見たけど,
重くなかった
@mipsparc http://goo.gl/Q5Emmi 18
分離したほうがいいかも
●
メイン/送/受信プロセスの3つを準備
●
キューにデータを放り込んでおけば,
勝手に全ノードに配信されるようにした
●
通信を気にせずに書ける!
●
ゲームと通信が疎結合
@mipsparc http://goo.gl/Q5Emmi 19
あと
●
サーバから取得した時刻でタイミングを揃える
●
あらゆるサイズのモニタに対応
●
Bitbucketで課題管理
●
機体同士の当たり判定をなくしました!!!!!!
→時間なかった来た方向に衝突しなくなるまで戻る?
多重衝突とかいろいろ大変なのでやめた
@mipsparc http://goo.gl/Q5Emmi 20
引っかかった罠
●
被弾は自己申告なので,落ちたクライアントが死なない
●
pickle(データ構造を文字列にするやつ)でDB組んだら,本
番でデータが増えてパフォーマンスが落ちて,タイムアウ
トして落ちるようになった
→緊急対応でDB飛ばした.SQLite使うか,DB分割テスト大事
●
繋がるタイミングが悪くて落ちる問題がいろいろ出た.異
常系を常に意識することが必要
●
パフォーマンスがとても悪いノードがいた.共有フォルダ
から直接動かしていた
@mipsparc http://goo.gl/Q5Emmi 21
通信対戦っぽさをなくす
●
どの方向でどの座標にいるかしか送信しないので,どうし
てもカクカクしてしまう
●
速度も送ってローカルでリアルタイム位置を予測して,
現在位置が届いたら修正するようにした
●
...ほうがいいけど,さすがに
本番に間に合わなかった
●
誰も気にしない
送信ポイント
実際のルート
予測ルート
ワープ発生!
@mipsparc http://goo.gl/Q5Emmi 22
ちなみに
●
だいたいのMMORPGでは,サーバはデータを中継するだけで,クラ
イアントで処理する方式らしい.
●
PSO(ファンタシースターオンライン)とかそうらしいです
●
移動は一つ前のスライドと同じく,座標と方向,速度を送信すること
で各クライアントで補間しているらしい.普通に使われてた!
公式ガイドより引用送信ポイント
実際のルート
予測ルート
ワープ発生!
出典:http://www.4gamer.net/games/105/G010549/20100905002/
@mipsparc http://goo.gl/Q5Emmi 23
何事も余裕は大事です
●
常にカツカツのスケジュールで作ったので,だ
いぶつらかった.テストも十分にできなかった...
●
学校で寝て夜起きる生活を一週間やりました
●
当日の朝にグラフィックが上がってくる話に
なってたのに,人間関係の問題で上がってこな
かった.仲良くしておきましょう.
@mipsparc http://goo.gl/Q5Emmi 24
結局
●
通信対戦のいいところは?
●
AIをどうするかとか,ステージをどう作るかみ
たいな悩みからだいたい開放される
●
めっちゃ盛り上がる
→いままでになく人気で,長時間やってる人は
追い出ししないといけないほどだった
@mipsparc http://goo.gl/Q5Emmi 25
まとめ
●
通信対戦は(ちょっと大変だけど)やろうと思え
ば案外できる
●
十分に本番環境でテストをしましょう
●
AIとか作らなくてすむのと,かなり盛り上がる
●
楽しいので挑戦してみてください
ご清聴ありがとうございました
@mipsparc 通信対戦ゲームを作った話 END
削ってない版も上げてます
@mipsparc http://goo.gl/Q5Emmi 26
おまけ
@mipsparc http://goo.gl/Q5Emmi 27
ImageMagickめっちゃ便利
●
GIFアニメとかアニメの各コマが一枚に集まっ
てる画像を分割したり,指定色を透明にしたり
●
爆発アニメは「発色弾」というソフトをWine
で動かして生成したものを加工
$ mogrify -fuzz 30% -transparent black out.bmp
$ convert out.bmp -crop 96x96 %d.png
↑閾値で微妙な色排除
@mipsparc http://goo.gl/Q5Emmi 28
通信対戦の流れ(1/2)
●
タイトル画面表示
→機体パラメータ,現在時刻取得
●
機体選択後
←IPアドレス/ポート番号,選択機体,セッションIDを送信
→開始時刻,待ち人数,対戦IDを取得(一定間隔)
●
開始時刻
→敵IP/port,セッションID,機体,ステージマップを取得
サーバとの通信(→:取得,←:送信)
@mipsparc http://goo.gl/Q5Emmi 29
通信対戦の流れ(2/2)
●
カウントダウン中
←他のノードに初期座標,HPなどを送信
→受信したものを画面上に反映
●
ゲームスタート(ここまで受信できなかったノードは異常切断)
←動いたり発砲したら,そのたびに送信
→受信した座標データを画面上に反映
●
終了
サーバに成績アップロードして,順位と他のユーザのスコア取得
他ノードとのP2P通信(→:取得,←:送信)
@mipsparc http://goo.gl/Q5Emmi 30
不正対策?
●
そんなものはない
→本気でやろうとしても完璧は不可能
●
セキュリティ対策として,機体画像のファイル名
はハードコートで,サーバから取得する機体パラ
メータではその番号を指定するようにしている
→想定していないファイルをロードされないよ
うに.深刻な脆弱性が生まれる余地を与えない

More Related Content

What's hot

新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装Koji Morikawa
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作るtorisoup
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす増田 亨
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例Hirohito Kato
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件Grenge, Inc.
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unity Technologies Japan K.K.
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだNarichika Kajihara
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門Unity Technologies Japan K.K.
 

What's hot (20)

新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだ
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門
 

Viewers also liked

スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門Hisashi HATAKEYAMA
 
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみたYuusuke Takeuchi
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介Shinya Okano
 
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Nakazawa Yuichi
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方Daisaku Mochizuki
 
年の瀬!リアルタイム通信ゲームサーバ勉強会
年の瀬!リアルタイム通信ゲームサーバ勉強会年の瀬!リアルタイム通信ゲームサーバ勉強会
年の瀬!リアルタイム通信ゲームサーバ勉強会monobit
 

Viewers also liked (6)

スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
 
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
 
年の瀬!リアルタイム通信ゲームサーバ勉強会
年の瀬!リアルタイム通信ゲームサーバ勉強会年の瀬!リアルタイム通信ゲームサーバ勉強会
年の瀬!リアルタイム通信ゲームサーバ勉強会
 

Similar to 通信対戦ゲームを作った話

PYNQ祭りLT todotani
PYNQ祭りLT todotaniPYNQ祭りLT todotani
PYNQ祭りLT todotaniKenshi Kamiya
 
ChatGPTで面白い物語は作れるのか?
ChatGPTで面白い物語は作れるのか?ChatGPTで面白い物語は作れるのか?
ChatGPTで面白い物語は作れるのか?Takanari Tokuwa
 
GW躍進会報告
GW躍進会報告GW躍進会報告
GW躍進会報告Yosuke Ueno
 
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ 「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ kirin_nico
 
Kobe.py 勉強会 minecraft piスライド
Kobe.py 勉強会 minecraft piスライドKobe.py 勉強会 minecraft piスライド
Kobe.py 勉強会 minecraft piスライドMasafumi Terazono
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)Kenichiro MATOHARA
 
mpld3でInteractiveデータ可視化
mpld3でInteractiveデータ可視化mpld3でInteractiveデータ可視化
mpld3でInteractiveデータ可視化monochrojazz
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたTomohiro Suzuki
 
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?Kengo Nakajima
 
UnityでのLINQ活用例
UnityでのLINQ活用例UnityでのLINQ活用例
UnityでのLINQ活用例Ryota Murohoshi
 
Quantum teleportation
Quantum teleportationQuantum teleportation
Quantum teleportationYuuOkano
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタShougo
 
Gadget in Pocket オフ会 incmplt LT
Gadget in Pocket オフ会 incmplt LTGadget in Pocket オフ会 incmplt LT
Gadget in Pocket オフ会 incmplt LTYasushi ABE
 
Pepperを操縦してみた ~演劇からレースゲームまで~
Pepperを操縦してみた ~演劇からレースゲームまで~Pepperを操縦してみた ~演劇からレースゲームまで~
Pepperを操縦してみた ~演劇からレースゲームまで~Taisuke Ozaki
 
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)Naoki Matsumoto
 

Similar to 通信対戦ゲームを作った話 (20)

PYNQ祭りLT todotani
PYNQ祭りLT todotaniPYNQ祭りLT todotani
PYNQ祭りLT todotani
 
ChatGPTで面白い物語は作れるのか?
ChatGPTで面白い物語は作れるのか?ChatGPTで面白い物語は作れるのか?
ChatGPTで面白い物語は作れるのか?
 
GW躍進会報告
GW躍進会報告GW躍進会報告
GW躍進会報告
 
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ 「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
 
Seeing is Believing
Seeing is BelievingSeeing is Believing
Seeing is Believing
 
Kobe.py 勉強会 minecraft piスライド
Kobe.py 勉強会 minecraft piスライドKobe.py 勉強会 minecraft piスライド
Kobe.py 勉強会 minecraft piスライド
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
 
mpld3でInteractiveデータ可視化
mpld3でInteractiveデータ可視化mpld3でInteractiveデータ可視化
mpld3でInteractiveデータ可視化
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみました
 
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?
 
UnityでのLINQ活用例
UnityでのLINQ活用例UnityでのLINQ活用例
UnityでのLINQ活用例
 
PUN 2を使おう!
PUN 2を使おう!PUN 2を使おう!
PUN 2を使おう!
 
Quantum teleportation
Quantum teleportationQuantum teleportation
Quantum teleportation
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
 
Gadget in Pocket オフ会 incmplt LT
Gadget in Pocket オフ会 incmplt LTGadget in Pocket オフ会 incmplt LT
Gadget in Pocket オフ会 incmplt LT
 
NGK2023S ChatGPT
NGK2023S ChatGPTNGK2023S ChatGPT
NGK2023S ChatGPT
 
Pepperを操縦してみた ~演劇からレースゲームまで~
Pepperを操縦してみた ~演劇からレースゲームまで~Pepperを操縦してみた ~演劇からレースゲームまで~
Pepperを操縦してみた ~演劇からレースゲームまで~
 
Runtime c++editing
Runtime c++editingRuntime c++editing
Runtime c++editing
 
20160810-lt-cygwin
20160810-lt-cygwin20160810-lt-cygwin
20160810-lt-cygwin
 
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
 

通信対戦ゲームを作った話