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

CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践Yoshifumi Kawai
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話torisoup
 
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~UnityTechnologiesJapan002
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~モノビット エンジン
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみたYuusuke Takeuchi
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめSugimoto Chizuru
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsYoshifumi Kawai
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIShota Imai
 

What's hot (20)

CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 

Viewers also liked

スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門Hisashi HATAKEYAMA
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介Shinya Okano
 
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Nakazawa Yuichi
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方光晶 上原
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方Daisaku Mochizuki
 
年の瀬!リアルタイム通信ゲームサーバ勉強会
年の瀬!リアルタイム通信ゲームサーバ勉強会年の瀬!リアルタイム通信ゲームサーバ勉強会
年の瀬!リアルタイム通信ゲームサーバ勉強会monobit
 

Viewers also liked (6)

スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
 
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)
 

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