Submit Search
DXライブラリでMMO作ったよ!
6 likes
•
12,289 views
H
h2so5
1 of 30
Download now
Downloaded 19 times
1
2
Most read
3
4
5
6
7
8
9
Most read
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
More Related Content
PPTX
Windows環境でのgitまとめ(2016.8)
Tadahiro Ishisaka
PDF
Machinationの紹介
Kazuhisa Minato
PPTX
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
PDF
オブジェクト指向エクササイズのススメ
Yoji Kanno
PDF
自宅で出来る!ゲームサーバの作り方
光晶 上原
PDF
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
PDF
ドメイン駆動設計をゲーム開発に活かす
増田 亨
PPTX
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
Windows環境でのgitまとめ(2016.8)
Tadahiro Ishisaka
Machinationの紹介
Kazuhisa Minato
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
オブジェクト指向エクササイズのススメ
Yoji Kanno
自宅で出来る!ゲームサーバの作り方
光晶 上原
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
ドメイン駆動設計をゲーム開発に活かす
増田 亨
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
What's hot
(20)
PPTX
為替のTickdataをDukascopyからダウンロードする
Maho Nakata
PDF
私にとってのテスト
Takuto Wada
PPTX
プログラマが欲しい仕様書とは
Katsutoshi Makino
PDF
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨
PPTX
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
PPTX
決定版:サービスの盛り上がり具合をユーザの数(DAU)から読み解く方法
Daisuke Nogami
PDF
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
PDF
闇魔術を触ってみた
Satoshi Sato
PPTX
ゲーム開発とMVC
Takashi Komada
PDF
Spannerに関する技術メモ
Etsuji Nakai
PDF
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
PDF
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
PDF
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
PDF
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
PDF
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
PDF
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
PDF
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
KLab Inc. / Tech
PDF
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
PDF
Unityでオニオンアーキテクチャ
torisoup
為替のTickdataをDukascopyからダウンロードする
Maho Nakata
私にとってのテスト
Takuto Wada
プログラマが欲しい仕様書とは
Katsutoshi Makino
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
決定版:サービスの盛り上がり具合をユーザの数(DAU)から読み解く方法
Daisuke Nogami
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
闇魔術を触ってみた
Satoshi Sato
ゲーム開発とMVC
Takashi Komada
Spannerに関する技術メモ
Etsuji Nakai
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
KLab Inc. / Tech
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Unityでオニオンアーキテクチャ
torisoup
Ad
Similar to DXライブラリでMMO作ったよ!
(20)
PPT
Heliumエンジンの設計と実装
DADA246
PPTX
C++
Mio Ku-tani
PDF
XNAとはなにか?XNAうれしいところ、うれしくないところ
IGDA Japan
PPT
Web上でのゲーム製作(Kanasan.JS LT 080114)
hoge1e3
PPT
DXライブラリのすゝめ
Daisuke Nikura
PDF
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
Kohki Miki
PDF
20apr2012 kernelvm7-main
Shotaro Uchida
PPTX
どこでも動くゲームを作るためのベタープラクティス
5mingame2
PPTX
Mmo game networking_1
Katsutoshi Makino
PDF
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア〜モノビットエンジンクラウド〜にて採用した...
Game Tools & Middleware Forum
PDF
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア〜モノビットエンジンクラウド〜にて採...
モノビット エンジン
PDF
Unitynetwork
Shinsuke Sugita
PDF
とあるCocos2dx入門編
kumin1030
PDF
Flashをcocos2dxで再生
AimingStudy
PPTX
横浜国立大学PCサークルSCITEXの活動 in SGF2012
Tomoki Suzuki
PDF
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
PDF
cocos2d-xにおけるBox2Dの利用方法および便利なツール
Tomoaki Shimizu
PDF
Boost Tour 1.53.0 merge
Akira Takahashi
PDF
UE4におけるレベル制作事例
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
【CEDEC2017】新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!
モノビット エンジン
Heliumエンジンの設計と実装
DADA246
C++
Mio Ku-tani
XNAとはなにか?XNAうれしいところ、うれしくないところ
IGDA Japan
Web上でのゲーム製作(Kanasan.JS LT 080114)
hoge1e3
DXライブラリのすゝめ
Daisuke Nikura
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
Kohki Miki
20apr2012 kernelvm7-main
Shotaro Uchida
どこでも動くゲームを作るためのベタープラクティス
5mingame2
Mmo game networking_1
Katsutoshi Makino
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア〜モノビットエンジンクラウド〜にて採用した...
Game Tools & Middleware Forum
Linux も動く Microsoft Azure HoloLens にも対応した次世代マルチプレイミドルウェア〜モノビットエンジンクラウド〜にて採...
モノビット エンジン
Unitynetwork
Shinsuke Sugita
とあるCocos2dx入門編
kumin1030
Flashをcocos2dxで再生
AimingStudy
横浜国立大学PCサークルSCITEXの活動 in SGF2012
Tomoki Suzuki
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
cocos2d-xにおけるBox2Dの利用方法および便利なツール
Tomoaki Shimizu
Boost Tour 1.53.0 merge
Akira Takahashi
UE4におけるレベル制作事例
エピック・ゲームズ・ジャパン Epic Games Japan
【CEDEC2017】新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!
モノビット エンジン
Ad
Recently uploaded
(10)
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
20250729_Devin-for-Enterprise
Masaki Yamakawa
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
DXライブラリでMMO作ったよ!
1.
mixC++勉強会@Tokyo DXライブラリで MMO作ったよ!
2.
自己紹介 HN:
h2so5 C++とかRubyとか色々いじってる デザイン系の学生。 http://h2so5.net/ github: @h2so5
3.
MMOっ 何?
て MMD + Online → MMO H2SO5 MikuMikuDance MikuMikuOnline MMDのモデルを使ったチャッ ソフト ト http://m2op.net/
5.
なぜ作った? • ネットワークプログラミング面白そう • パフォーマンス重視なら C++ が活かせるかも • 類似プロジェクトで完成しているものが少ない
6.
クライアント編 サーバー編 デバッグ編
7.
開発環境 VisualStudio2010 • MinGW+gccを使っていたが色々あって移行 • C++11に対応してないのが残念
8.
描画処理
DXライブラリ http://homepage2.nifty.com/natupaji/DxLib/ • ソフトウェアのコアとなるライブラリ • MMDモデルに対応したDirectXのラッパー • モデル・画像の描画をすべて丸投げ
9.
スクリプト V8 JavaScript Engine
https://developers.google.com/v8/ • UIのカスタマイズ・マクロ機能 • チャット機能などはJavaScriptで記述 • UIウィンドウごとに独立したContextを持つ
10.
設定ファイル
JSON http://www.json.org/ • Web系ではおなじみのフォーマット • 設定項目の拡張が簡単 • パースにBoost.PropertyTreeを使用
11.
ユーザーインター ェース
フ 実は一番時間がかかっている • ほとんどフルスクラッチ • 3 回くらい作り直したけど満足出来ていない • 透明にして低解像度でも圧迫感を抑える
13.
ネッ ワーク
ト Boost.Asio http://www.boost.org/doc/libs/release/libs/asio/ • DXライブラリの処理とは別スレッド • スレッドセーフなキューを用意してメッセージ をやりとり ネットワーク関係の詳細はサーバー編で
14.
モデル座標の同期
Server TCP Player1 Player2 Player3 Player4 Channel1 Channel2 • 一定時間ごとに絶対座標等をサーバーに送信 • あまり最適化はしてない
15.
クライアント編 サーバー編 デバッグ編
16.
開発環境 Ubuntu/Eclipse/gcc • サーバーで常時稼動させるならLinuxが便利 • VisualStudioでもビルドはできる
17.
プロトコル
TCPストリーム データ デリミタ ヘッダー データ デリミタ ヘッダー nbyte 1byte 2byte nbyte 1byte 2byte • コマンドの区切りをデリミタ(0x7E)で判断 • HDLC(High-Level Data Link Control)を 参考にしたプロトコル • テキストエンコーディングはUTF-8
18.
データ圧縮
lz4 https://code.google.com/p/lz4/ • 圧縮率より速度重視のアルゴリズム • サイズが100byteを超えるデータに適用 • チャッ ッセージ等に有効 トメ
19.
データの同期 (1)
20.
データの同期 (2)
21.
ュ ティ 1) セキ
リ ( 通信内容の暗号化 • 鍵交換用に 3072bit RSA • コマンドの暗号化に 128bit AES CFB • 初回起動時にクライアントの公開鍵を発行
22.
ュ ティ 2) セキ
リ ( DoS対策 • データ量が規定値を超えるとコマンドを無視 • さらに超過すると一方的に切断 • クライアント側でも制限機能がある
23.
サーバーステータス
MMO PHP UDP Server • 外からステータス確認できるよう急遽作った • パケットロス対策ため一度に数回送信
24.
クライアント編 サーバー編 デバッグ編
25.
デバッグ環境
PC ×3 + VPS • 基本的にローカルネットワークでテスト • Wireshark等でパケットを監視 • 低速回線のエミュレートに帯域制限ソフト
26.
簡易プロファイラ
*** PlayerCharacter::Impl::Update count: 353814 total: 4177429ms average: 11.8069ms max: 9547ms min: 6ms • フレームレート低下の原因を調査 • 関数ごとの実行時間などを計測 • 当たり判定の処理が重いことが判明
27.
再現性の低いバグ サーバーをデバッグモードで起動
↓ クライアントを起動しまくるスクリプトを実行 ↓ 寝る
28.
最後に
29.
っ みた感想 作 て • 通信関係は接続数が少なければ何とかなる • まともな
UI を作るのがとにかく大変 • DX ライブラリの仕様上、モデルデータの細か いリソース管理が困難 • いい加減な仕様だと後方互換性が問題に
30.
mixC++勉強会@Tokyo おしまい
Download