トップページgamedev
1001コメント413KB

みんなでMMORPGを作りましょう

■ このスレッドは過去ログ倉庫に格納されています
0001喪装中04/08/13 20:08ID:la60fqKo
俺が監督をやります

随時スタッフ募集
0753名前は開発中のものです。04/09/01 10:59ID:37G7q50O
まぁガンガレ
0754名前は開発中のものです。04/09/01 11:14ID:BdF6D2vC
>>752
接続中のクライアント数と同じ数だけacceptでソケットハンドルを得てるわけで、
クライアントのソケットハンドルを持つ通信用クラスとプレイヤーキャラのクラスを
関連付けすればいい。

誰かというのがプレイヤーキャラのことならば、
ソケットハンドルを得たときに、クライアントに対しログインIDの送信を要求し、
ログインIDと一致するプレイヤーキャラをロードすればいいんじゃないか?
0755名前は開発中のものです。04/09/01 11:54ID:A8Zc28Vq
>>753
>>754
ありがとうございます。
>関連付けすればいい
これができてなかったみたいです。
キャラクターのクラスを作ってそのメンバ変数にソケットハンドルを持たせてみます。
0756名前は開発中のものです。04/09/01 12:17ID:2IXtq3X7
この板みてたら1が激怒したよ
0757名前は開発中のものです。04/09/01 16:13ID:HRpmmagl
1さんのお知り合いでつか
0758名前は開発中のものです。04/09/02 02:56ID:cMQJct2Z
よーし、パパもサーバー書いちゃうぞ〜




ところで、
>>448 ってどうなったん?
0759名前は開発中のものです。04/09/02 02:57ID:cMQJct2Z
>>488 ですた
0760名前は開発中のものです。04/09/02 06:24ID:P8nJQ5G5
いつみてもやる気なさそうなページだなぁ
みんなで作ろうぜ!作ってるぜ!なんて意気込みが微塵も感じられない。
076119104/09/02 06:48ID:7f5AinZL
>>488はこのスレの前半戦(1-616)のネタをまとめたサイトだな。
>>617以降はスレの趣旨が微妙に変わったので>>488のサイトに期待するのは可哀想だろ。
>>756自称チーターによって乗っ取られたようなもんだから>1も怒るかもな。

>>758
サーバーに期待する。
プロトコルも決めちゃって、他のヤツにクライアント書かせてみたら面白そうだな。
0762名前は開発中のものです。04/09/02 07:08ID:iIL4jgPK
ここで先にアプリケーションプロトコル決めてみたら?
0763名前は開発中のものです。04/09/02 10:56ID:huDvHtkT
おまいら何本ぐらい接続してる?
今まで1本でやってたけどチャットとゲーム用ぐらいは別にしたほうがいい気がしてきた
076466304/09/02 11:10ID:HhOdq8th
とりあえず最低限、サーバと複数クライアント間で会話をすることは
できるようになった気がする。
しかしプログラムは楽しいな。一個ずつできる事が実感をもって増えていく。
もちろん一言でできると言っても次元の高い低いの違いはあるけど。

今までグラフィックばかりやってたけど凄く時間がかかる作業で
キャラなりオブジェクトなり作って一つ一つ完成していくのはそれはそれで楽しいが、
振り返ってみると延々頂点を一センチ二センチ動かす作業を繰り返してただけで
新しく得るものなんてほとんどなくて「この期間俺は何をやってたんだろう…」と
虚しい気分になるだけだったからな。
0765名前は開発中のものです。04/09/02 11:12ID:9FsdpOIU
これ使えばwin機でもUNIX向けの開発できるんじゃね?
今は鯖もwin向けに書く流れだから関係ないかもしれんが

http://www.forest.impress.co.jp/article/2004/01/16/servicesforunix35.html
http://www.microsoft.com/japan/windows/sfu/
076666304/09/02 12:10ID:HhOdq8th
今回のチャットはVCのダイアログエディタつかってダイアログベースで作ったけど、
ゲーム内で表示するウィンドウのためのウィンドウシステムみたいのをつくりたい。
ウィンドウオブジェクトの下にボタンとかタブとかテキストフィールドとか自由に配置して
そのテキストフィールドの下にはさらにスクロールバーを配置してとか
そういうのを柔軟にデザインできる仕組みを作りたい。
けど激しくむずそう。なので
とりあえず最初の手がかりとしてなんか課題をくれるとうれしいのであります。
0767名前は開発中のものです。04/09/02 12:27ID:GL/7SFvs
>>762
とりあえずちょっと妄想してみた
このまま拡張していっていいのか評価が欲しい
191氏もヨロシク

・目標
勉強用ということでデバッグの簡単さを優先させたい
マップを歩き回ってチャットするのがとりあえずの目標
ある程度の拡張性は欲しい
特定の開発環境にあまり依存しない

・仕様
通信はテキストによっておこなう
n*4バイトで構成される命令の送受信をおこなう

・・命令の仕様
1語は4byteとする
先頭に1語の命令部とそれに続く0語以上のデータ部で構成される。
****++++++++
*命令部
+データ部
例)
mvtorigt
attk7743
quit
076876704/09/02 12:28ID:GL/7SFvs
・・命令表
カッコ内はバイト数

戻り値
retn[コード(1)]
なんらかの命令に対する返事である
成功もしくは失敗を示すコードが含まれる

ログイン
lgin[id(8):password(8)]
この命令に成功するとキャラクター操作系の
命令が使用可能になる
戻り値
成功 okok
IDが存在しない noid
パスワードが違う nopw

終了
quit
ログイン以前の状態になる
切断やログインが可能な状態になる
戻り値
成功 okok
076976704/09/02 12:29ID:GL/7SFvs
mvto[方向(1)]
方向=upup,rigt,down,left
[方向(1)]で指定した方向へ移動する
戻り値
成功 okok
失敗 ngng

chat[チャンネル(1):メッセージ(10)]
戻り値
チャット
成功 okok
そのチャンネルでの発言は許されていない chng
失敗 ngng
0770名前は開発中のものです。04/09/02 12:48ID:iIL4jgPK
チャットはもうちょっと文字数欲しいな…
0771名前は開発中のものです。04/09/02 12:49ID:iIL4jgPK
4bytes*10=40bytesなのかorz
0772名前は開発中のものです。04/09/02 13:07ID:GL/7SFvs
スマソ、カッコの中の数字が1語なのか1byteなのか自分が一番混乱してたorz
1語(=4byte)に統一した修正版

retn[コード(1)] (合計8byte)
lgin[id(2):password(2)] (合計20byte)
mvto[方向(1)] (合計8byte)
chat[チャンネル(1):メッセージ(10)] (合計48byte)
077376704/09/02 13:22ID:GL/7SFvs
>>772に名前入れ忘れてたスマヌ

ゲームによって移動方法が変わるから目的地を指定して後は鯖まかせで道が選ばれるタイプか
上下左右をダイレクトに指定するタイプなのかで修正が必要な予感
個人的には後者タイプでアクション性が強いものが好みだけど通信量が増えそう

mmoゼルダやりたい(;´Д`)ハァハァ
0774名前は開発中のものです。04/09/02 14:56ID:ucIC7S/S
コインでお絵かきしたいよ
077519104/09/02 15:14ID:7f5AinZL
>>767
チャットの部分がちょっと気になるよな。
一文字発言でも48byteってやな感じ。
発言文字列のサイズも送ったほうが良いだろう。
あと、通信料気にするなら文字列で送っちゃ駄目だよな。

で、俺の場合
[送信サイズ(2byte)] [メッセージの種類(1byte)] [データ(可変サイズ)]
受信時に2bye読み込んで受信サイズ取得
受信サイズ全部受信し終わったら、メッセージの種類に応じた処理
チャット文字列送信ならデータ部分が発言文字列って感じだな。

>mmoゼルダやりたい(;´Д`)ハァハァ
隣接キャラのPC強制シャットダウンコマンドを実装するだけで御手軽に殺伐としたチャットが出来ると思うゼ
0776名前は開発中のものです。04/09/02 15:23ID:ucIC7S/S
>>775
文字列で動くようになったらバイナリ化する予定なんじゃないか?
文字列バージョンならターミナルソフトでも確認できるし。
しかし可変長ぐらいは扱ってほしいな。
077748804/09/02 17:17ID:2JFS4kJQ
>>761
ちゃんと、見に来てるよ^^;;
でも、なんか話が変わってるからついていけてないだけです^^;;
なんか、問題あったらスマソ
0778名前は開発中のものです。04/09/02 21:05ID:3MdDkgVc
MMORPGに向いてるライブラリってどれ?

■参考
各種ライブラリ紹介スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1008220559/
http://gamdev.org/w/?%5B%5B%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA%5D%5D
077948804/09/02 21:15ID:R5EF3Y1l
質問!!

C++って奴は、ゲーム作るのにむいてますか?
078019104/09/02 21:20ID:7f5AinZL
>766
某ROみたいにウィンドウをユーザーが自由に配置するやつってことかな。
だとしたら、メメインウィンドウを親にしていしてCreateWindowして
タイトルバードラッグでウィンドウ移動とかしてやればできそうだな。

そうじゃなくて、プログラムでその場に応じたボタンとか出したいなら
CreateWindowしまくるか、ダイアログなら適当に貼り付けておいてGetDlgItem()で
ハンドル取得すれば、たいていのことはできる。

なんか良い課題が思い浮かばないが、
ウィンドウの中にウィンドウを表示するクラスでも作ってみたら?
ウィンドウプロシージャはクラスのメンバ関数で

>>777
監督はもういない。
シナリオも協力者もいなくなった。
自分でプログラム書いて壁にぶつかったらこのスレにこい。
きっと誰かが助言をくれるだろう。
078119104/09/02 21:35ID:7f5AinZL
>>778
あんまそういうの使わないからわからん。
自分で自分用ライブラリつくるのが一番勉強になるし、
そのつくったものが資産にもなるから時間があるならおすすめ

>>779
多態性ウマーなのでC++(というかオブジェクト指向)はゲームに向いていると思ってる。
C++はCの強化版みたいなもんなので、C++が出来るってことはCも出来るってことだしな。
今からやるならC++おすすめ。
0782名前は開発中のものです。04/09/02 21:44ID:zk6ELFe9
>>766
DirectX 2004 SummerUpdate に新しく追加された CustomUI みたいなことがやりたいのなら、
既存のウィンドウシステムの仕組みを調べるとある程度どんな感じで作ればいいかはつかめると思う。
0783名前は開発中のものです。04/09/02 22:20ID:5OFdC6GO
>>780
>>766じゃないけど、ウィンドウプロシージャってメンバ関数にできる?
漏れはそれやろうとしたら

error C2440: '=' : 'long (__stdcall Window::*)(struct HWND__ *,unsigned int,unsigned int,long)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換することはできません。(新しい動作 ; ヘルプを参照)

って怒られたYO!
078419104/09/02 22:29ID:7f5AinZL
>>783
ちょっとしたコツがあってな、ウィンドウプロシージャにstatic つけるのさ
0785名前は開発中のものです。04/09/02 22:33ID:9SKQ+4l5
>>783
staticつけれ。
けどstaticつけたら名前空間に入っただけの
ただの関数になる(=メンバ変数、メンバ関数にアクセス出来ない)から
ウィンドウプロシージャはただの関数にしておいて、その中でメンバ関数を呼べばいい。
078678304/09/02 22:39ID:5OFdC6GO
>>784
わ〜い!即レスありがd

確かにstaticにすれば行けるけど、インスタンス独自の処理をさせたい時に困らない?
漏れがやりたかったのは

class Windos
{
public:
Window(...); // CreateWindowやらなにやら

//かなり割愛
protected:
virtual LRESULT WindowProc(...); //ここでこのインスタンス独自の処理をさせたい
}

って感じなんだけど・・・
staticにするとどのインスタンスのメッセージなのかわからないYO!
インスタンスのリストでも持っててプロシージャの中で渡って来たウィンドウハンドルに対応するインスタンス探さなきゃいけないのかな。
それともこういう考え方自体間違ってる????
078776604/09/02 22:45ID:HhOdq8th
>>780
どうもです。一応標準のウィンドウシステムを使わないで
生意気にも全部自作したいと思っているのであります。
見た目とか好きにデザインしたいので、、、、

、、、と思ってたらこんなのがあったのか!>>782(教えてくれてありがとう)
IMEクラスとかがんばって作ってしまったのはなんだったんだろう。。。
でも悩むなぁ。自分で作んなきゃ力になんなそうだし、
かといってあくまでやりたいのはコーディングじゃなくてゲーム作りだし。
便利なものは使うべきか…
0788名前は開発中のものです。04/09/02 22:45ID:9SKQ+4l5
>>786
HWNDにクラスをもたせて置けばいい。
GetWindowLong/SetWindowLong参照。
078978304/09/02 22:45ID:5OFdC6GO
書いてる間にレスついてた!
>>785もありがd!
うんうん。アクセスできないっていうか、誰のメンバ関数を呼べばいいか判断できなくて困ってるYO
079076604/09/02 22:49ID:HhOdq8th
あれ、なんだか標準(?)のウィンドウを使ってる人が多いっぽいんですが、
そういう場合は見た目はカスタマイズしたりして使ってるんですかね。
猫でも〜とか見てるとある程度カスタマイズできるみたいですけど
結構いろいろ手続きが面倒くさそうで…
0791名前は開発中のものです。04/09/02 23:14ID:39hzQg9R
>>787
がんばって最後まで作って。
079278304/09/02 23:21ID:5OFdC6GO
みんなスゲーーーー!
>>788
ありがd!!
そんな便利な関数があったんだね〜〜
それ使ってユーザーデータにポインタを持たせてやったら呼び出せた!
MSDN検索したらGetWindowLongPtrなんてのもあったけど、漏れの環境じゃ使えなかった。
SDKをアップデートしないとダメなのかな〜

とにかくレスくれたみなさんありがd!!!
0793名前は開発中のものです。04/09/03 00:34ID:1r39DuWj
ZONE分けどうするかなぁ
079419104/09/03 04:57ID:Gq9r/pVl
>>792
俺はGetPropとSetPropを使ってる。
まぁ、参考までにってことで

>>790
DirectXで普通のウィンドウを使いたいってことなのか、
それとも。ただ単にコントロールを自分で描画したいのか?
ボタンとかならオーナー描画にして、自分で描画すれば簡単にできるな。
079579004/09/03 09:58ID:6G+1Tm5q
>>790
例えばチャット窓用のテキストフィールドについて考えれば、
winAPIの標準コントロールを貼り付けるんじゃなくて、
文字の折り返しからスクロールバーから日本語変換から自分で実装したいということです。
で、そんな感じに「ボタン」とか「タブ」とか「スライダー」みたいな部品も全部作って、それらを更に
「自作のゲーム内ウィンドウ」に、
(↑これも「タイトルバー」がある、とか「縮小ボタン」がある、とか定義できる)」
「部品として」位置や個数など柔軟に配置し、制御したいです。

DirectX9.0Cで見た目もカスタマイズできるUIコントローラーというのができたらしいですが、
なんかやっぱり自分で全部作りたくなってきました。
クラスの勉強の範疇だと思うんですが、どうしてよいやらという感じです。
それぞれ部品の一個一個単独なら作れそうなんですけど。

↓標準コントロール貼り付けて作ってるっぽい例
ttp://eternal.s19.xrea.com/ss.html

↓自前ウィンドウシステムを作ってるっぽい例
ttp://www.nubarou.mydns.jp/wiki/pukiwiki.php
(スクリーンショットのところ参照)
0796名前は開発中のものです。04/09/03 16:33ID:rdaSqmOu
日本語変換て…何参照するつもりなんだ
079779004/09/03 17:00ID:6G+1Tm5q
漢字変換って言うか、FEPの制御のことだけどなんか変かいな?
0798名前は開発中のものです。04/09/03 17:00ID:3I63lbKz
>>796
チャットウィンドウのIME処理もAPIからやりたいってことじゃね?
079919104/09/03 19:36ID:Gq9r/pVl
>>795
DirectXで日本語入力は確かに手強いな。
エディットボックスをDirectXで使いたいと思って対処したときは大変だった。
CreateWindowでエディットボックス作成して画面外の遙か彼方へ移動して隠蔽。
ウィンドウに対するクリックとかキー入力でエディットボックスに渡したいものだけを
座標変換とかしてSendMessageでエディットボックスに再送信。描画は全部自分で。
なんかスマートじゃないな。

>それぞれ部品の一個一個単独なら作れそうなんですけど。
単独で作れそうならいけるんじゃないか?
ウィンドウ管理クラスを作って、スクロールバーとかのコントロール系クラスを追加していく
javaのAppletクラスみたいな感じで実装したら良いんじゃないかなぁ
080079504/09/03 22:25ID:6G+1Tm5q
>>799
FEP制御はある程度できてて、
入力した文字とか変換候補をベタに表示したりするのはできてるんで、
あとはウィンドウ幅に合わせて改行したりスクロールバーとかつけられたら
エディットボックスとして単体部品としては完成できそうです。
けどやっぱり全体をまとめたクラスの設計をどうすればいいのか分からないし
どこがどう分からないというのも複雑で説明できない。。。
もうすこしクラスの勉強をする必要がありそうです。
0801名前は開発中のものです。04/09/04 01:37ID:pKV767XC
VC++4.2からはコンポーネントギャラリでサクッと雛形を入れたれたような?
それ参考にすれば余裕かと。
080219104/09/04 01:50ID:nZw1Rcnl
>>800
クラスの設計とかは経験値が重要かもしれん。
いくつもプログラム書いてみることだな。ガンバレ

子ウィンドウを考えないなら俺ならこうすると思う。
clas Iウィンドウ{
 RECT* GetRect();
 プロシージャー(...);
 (略)
}
class ウィンドウマネージャー{
 ウィンドウ追加(Iウィンドウ *pWindow);
 ウィンドウ抹殺(Iウィンドウ *pWindow);
 プロシージャー(...)
 (略)
}
実際のコントロールはIウィンドウを継承させる。
そしたら、ボタンでもエディットボックスでもウィンドウマネージャーにぶち込める。
本来のウィンドウをサブクラス化とかして、ウィンドウマネージャーのプロシージャーに渡す。
ウィンドウマネージャーでアクティブなコントロールを判断(クリックならヒットテストして)、そしてコントロールのプロシージャーを実行。

ウィンドウマネージャー::プロシージャー(...){
 Iウィンドウ *pWin = ウィンドウマネージャー::アクティブウィンドウ検索(posClick) ;
 pWin.プロシージャー(...) ;}

こんな感じかな。
Iウィンドウでコントロールの場所と矩形領域を管理。
ウィンドウマネージャーでウィンドウの重なり(順番)を管理。
参考にならなかったらすまぬ。
俺が助言できるのはココまでだ。
0803名前は開発中のものです。04/09/04 05:32ID:KGVvmcpk
どこかにライセンスフリーで一貫性があって魅力的な「RPGの世界設定」無いかね
0804名前は開発中のものです。04/09/04 05:56ID:9DgqjEuk
>>803
妄想だらけの設定厨はいくらでもいるんだけどな。皮肉だなw
なんとか妄想厨を寄せ集めて、一つのものはできないものかw
0805名前は開発中のものです。04/09/04 08:41ID:mj/YOjUv
>>803
言われてみれば無いよな、ほんと。
前出てきてた農民ベースのMMOなんか面白そうだったがw
0806名前は開発中のものです。04/09/04 11:17ID:07CYu+xr
通信ウィンドウのサブクラス化
結論
WSAAsyncSelect()で任意のウィンドウに直接msgを
送るのはやめる。
だめだ、ネットのサンプルソースじゃ
見つけたのは全てMainProcに直接書いてる
ましなのは、MainProcで明示的に通信用Proc呼んでるし
・・・帰りに図書館行ってきます
0807名前は開発中のものです。04/09/04 13:38ID:Cgo1/Ryk
サブクラス化のメリットって何?
少なくとも現時点での設計で
0808名前は開発中のものです。04/09/04 13:42ID:KGVvmcpk
SwingとかGTK2とか、それのWindowツールキットと似たような設計で何が不満なんだ。
人間にとっての使いやすさ考えると、おのずとああいう設計になると思し、
それで慣れてる人多いからそういう設計でいいんでないか。
0809名前は開発中のものです。04/09/04 14:19ID:07CYu+xr
>>807
1、可読性。
2、ウィンドウ機能としてクラスにまとめられる。
3、デフォルトの処理をしなくて良い。
0810名前は開発中のものです。04/09/04 14:31ID:fOQ1B4hR
プロトコルは
>>767で決定なの?
081119104/09/04 16:02ID:nZw1Rcnl
>>806
サブクラス化できてんでしょ?
例えばhMainWin(MainProc)があるとして
hMainWinをサブクラス化してSubProcを関連付ける。
SubProcで通信メッセージだけを拾って処理。
WSAAsyncSelect()でメッセージをhMainWinに送れば実現できそうじゃない?

>>807
通常のプロシージャーで通信について配慮する必要がない。
ウィンドウのあるアプリケーションなら簡単に導入可能。

>>808(>>803)
>「RPGの世界設定」無いかね
現実
>SwingとかGTK2とか、それのWindowツールキットと似たような設計で何が不満なんだ。
誰か不満もらしたか?

>>810
>>767が作る>>767のためのアプリケーションはあのプロトコルをベースに修正したもので決定だろ。

このスレで何か一つのものを作ってる訳じゃないぞ!
0812名前は開発中のものです。04/09/04 17:06ID:NBe8VnDT
MMORPG って何の略?
0813名前は開発中のものです。04/09/04 17:58ID:8rj2jPWm
>>811
正直マ板いけば?って感じ
0814名前は開発中のものです。04/09/04 18:04ID:8rj2jPWm
ムだった
0815名前は開発中のものです。04/09/04 18:59ID:Au45zrkS
>>488も音沙汰がないようなので、
他にプロジェクトの概要や製作状況をまとめた
Webページがないのであればスレッドの削除依頼を出します。
0816名前は開発中のものです。04/09/04 19:17ID:femHGglk
>815
おいおいどこに目をつけてるんだ
ここにまとめてあるだろうが
http://gamdev.org/w/?%5B%5BMMORPG%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%BF%A4%A4%5D%5D
0817名前は開発中のものです。04/09/04 19:23ID:Cgo1/Ryk
>>815
ナイズギャグ
0818名前は開発中のものです。04/09/04 19:34ID:8rj2jPWm
もう800超えてるし埋まるまで好きにやればいいと思うよ・・・
081979504/09/04 19:39ID:0efhyvPZ
>>802
どもです。なんか難しくて現状での理解の範疇を超えているので
とりあえずメモ帳に保存しときました。
0820名前は開発中のものです。04/09/04 19:47ID:8rj2jPWm
>>816
ていうかひとんちのスレだろ、それは・・・
082179504/09/04 21:56ID:0efhyvPZ
マウスで矩形をドラグするという実験ですが、
マウスボタンの押下状態の取得を
WMのスイッチを使わないでGetAsyncKeyStateで逐一行っている為か、
ボタンを押した状態で外から接するとそのまま掴めてしまいます。
ウィンドウメッセージ使う以外にどうにか方法はないでしょうか…
(こんな感じで自前ウィンドウ処理をベタに作っていくのって無理臭いですかね?)
ttp://gamdev.org/up/img/1162.zip
082279504/09/04 21:58ID:0efhyvPZ
書き忘れましたが821はVC6++プロジェクト入りです。
082319104/09/04 22:47ID:nZw1Rcnl
>>821
なんか小難しいこと書いてすまんな。
で、1162.zipだが
ボタンが押されるってのはボタンがOFFの状態からONになることを言うんだぜ。
mywindowで以前のカーソル位置とマウスボタン押し状態も保存。
毎回マウスボタン状態もチェックして以前がOFF、現在がONになっていたらドラッグ開始とすればいい。
勿論以前の状態か現状でマウス座標が範囲外なら無視だ。
0824名前は開発中のものです。04/09/04 23:16ID:ABebp3Vd
チャットソフトから先に進まない、に96円賭ける
082579504/09/05 00:35ID:3vvQdXWm
>>823
できたーーーーーーーーーー!
ボタンの過去の状態と、ドラグ中かどうかのフラグも追加して
組み合わせたらできました。
サンクスコ!
0826名前は開発中のものです。04/09/05 01:09ID:FSG+d3Mc
>>815
今はMMORPGの基礎技術スレになってるので、
プロジェクトとは関係ないですよ。
0827作りたい人04/09/05 15:34ID:YykwmHHS
お初です。

本気でMMOを作ろうと思ってるだけど。

アクション系MMO(リネ2よりアルタイム度を上げたい)にしたいんですが、
データベースって汎用DB(オラクルとか)を使うものなの?

アクション性の高いMMOとか、情報がかわったら毎回更新しているわけないよね。
サーバープログラム内部で、データを保持していて、定期的に更新にいってるのかなあ?(それともログアウトするまで、そのまま?)
できれば、サーバを複数台立ち上げても、データベースを更新せずに、相互にデータの補完しあえるようにしたい。

そういう高速簡易DBを自分で設計したほうがいいのかなあ?
汎用ですでに実績があるのもがあるのであれば、あえて、DBから作ることは避けたいんだけど。

クライアントの挙動なんてどうにでもなると思ってます。

駄文ですが、聞きたいことは。
 ・現在のアクション系大規模MMOでは、どういうタイムミングで、更新するのが普通なのか?
  汎用DBでも耐えれるか?DBサーバースペックはどのくらいもので、運用しているのか?
 ・何か参考になるサイトないですか?

なお、ゲームデザイン論や新しい世界観に関しては他人から得るものは何もないで、
興味ないです。

0828名前は開発中のものです。04/09/05 15:56ID:ccCPx2oq
あなたから得るものは何もないんで、興味ないです。
0829名前は開発中のものです。04/09/05 16:23ID:yB1c24Gi
>>827
「レイテンシ」って知ってる?
ついでにオラクルの値段も
083019104/09/05 16:23ID:V0xnLP2G
>>827
データベース未経験だし、MMO作ったこともないのでパス

以下は個人的想像
>現在のアクション系大規模MMOでは、どういうタイムミングで、更新するのが普通なのか?
よくサーバーメンテとかでログオフしてくれって言われるじゃん。
そこから察するにログオフ時にデータベースに保存してるんじゃないかな。
巻き戻しとかもデータベースの内容+サーバー稼働ログがあれば出来るし。
>汎用DBでも耐えれるか?
耐えられない規模まで個人制作MMOを盛り上げるのが困難だと思う…
0831名前は開発中のものです。04/09/05 16:48ID:BINK9UXm
良くあるMMOの更新のタイミングは、
・ログオフのとき
・別のマップに移動したとき
・交換などユーザ間でアイテム等の移動が行われたとき
って感だと思う。

重要なのは、サーバが落ちたときやユーザの回線が不意に切れたときに
・データの矛盾
・ユーザにストレスを与えるほどの撒き戻り
等の問題が起こらないことだと思う。

上の問題が起こらない範囲でなるべく更新を少なくすれば、一番効率がいいんでない。
0832名前は開発中のものです。04/09/05 16:53ID:/Pxczl0y
ここで、単語を打つ事を勧める
tp://cgi.www5f.biglobe.ne.jp/~fortune7/ccnp/daken/type.cgi
0833名前は開発中のものです。04/09/05 17:00ID:RMp0PLON
逐時更新しないと他プレイヤーに反映されないとおもうんだが。位置情報とか。
そんなことないのか?
0834名前は開発中のものです。04/09/05 17:33ID:Lgq/qaW9
メモリ内のプレイヤー情報を、いつストレージに書き出すかってことを言ってるんだと思いますが
0835名前は開発中のものです。04/09/05 17:33ID:FSG+d3Mc
>>827
>アクション系MMO(リネ2よりアルタイム度を上げたい)にしたいんですが、

なぜリネ2がもっとリアルタイム性を上げないか考えたことある?
083679504/09/05 17:57ID:3vvQdXWm
できるだけ人を入れて金儲けしたかったからじゃないでしょうか。
0837名前は開発中のものです。04/09/05 18:02ID:Lgq/qaW9
>827は多分素人の意見を聞きたくは無いと思うので、独り言として喋ります。
まず重要なデータ、アイテムとかそうそう頻繁に書き換えが必要でないもの
と、そうでないデータ、位置情報とか。MMORPGで一番多いデータの種類が移動データである、って多分聞いたことあると思うけど。
この2つの更新タイミングを分けるべきだね。
前者は逐次書き換え、後者は、10分毎くらいか、ログアウト時。
こんな感じでいいんじゃないのかな。
0838名前は開発中のものです。04/09/05 18:05ID:FSG+d3Mc
>>836
そう。数千人規模にもなるとあれぐらいが限界です。

蛇足になるが”金儲けしたかったから”これはいらない。
企業が利益を求めるのは当然です。
むしろ836のお金に対するコンプレックスが見えて笑えますよ。
0839名前は開発中のものです。04/09/05 18:12ID:RMp0PLON
リネ2ってアクション系だったのかよ
0840名前は開発中のものです。04/09/05 18:51ID:JBJFmbGN
>>838
その点でリネ2を語るなら、セキュリティ面が抜けてるよ
0841名前は開発中のものです。04/09/05 18:59ID:FSG+d3Mc
>>840
抜けてると思うなら補足してくれよ。
なにから何まで説明する気はないよ。
084219104/09/05 18:59ID:V0xnLP2G
なんかMMOについて語りたいだけって感じのレス増えたな。
DB得意なヤツはいないのか?

>>838
>そう。数千人規模にもなるとあれぐらいが限界です。
何が限界なんだ?通信量か?それともDB負荷?
>>827で問題としてるのはDBだぞ。
汎用DBって数千人規模で限界になるようじゃ使えないと思うんだが…。
0843名前は開発中のものです。04/09/05 19:05ID:FSG+d3Mc
>>842
わりい。俺が勝手に通信量の話してたね。
ただ、DB以前の問題だなと思ったのさ。
084478304/09/05 22:52ID:J8sP4dGE
話の流れをぶった切ってしまうけど・・・

ウィンドウメッセージごとに受け取る関数を書いたインターフェイス(MessageListener)を作って、
メッセージを受け取ったウィンドウは登録されているMessageListenerに処理は任せちゃおう!
と思って全てのメッセージを受け取るインターフェイスを作ってたさ。

できたら便利だよYO!最強だYO!!!
シコシコシコーーー・・・

ttp://gamdev.org/up/img/1176.zip
_| ̄|○ 既に使う気になれねぇーーーーーーーーーーーーーーーーーー!!!

こんなアホな漏れを誰か叱ってください。おながいします・・・

これでもまだ半分にも届いてな〜い。
何か種類ごとにインターフェイス分けるとかしないとダメポ・・・
084519104/09/05 23:18ID:V0xnLP2G
>>844
オイオイ、ヤリスギ
ってかMFC使いなさいYO
0846名前は開発中のものです。04/09/06 09:53ID:MsCyc98S
>>844
笑った。
っていうか純粋仮想関数にするから使えなくなるのでは。
本当に必須の所だけにしとき。
084779504/09/07 00:49ID:6+/R/deI
チャット窓用に、文字列つっこむと勝手に改行とかしてくれる
窓というか部品を製作中。
自分の実力では予想以上に難しいのでそのうち助けを求める確立高し…
084879504/09/07 00:50ID:6+/R/deI
あげてしまった。
084962204/09/07 12:00ID:quhouisu
>>744
WSAAsyncSelectが信じられなくなってしまったので、
(メッセージを送信してほしいhWnd渡しても送ってくれない)
サンプル見ないと、私が理解出来そうに無いっぽいですorz

>>745
サブクラスは、あっちのほうに置いておくことに・・・
分割受信に対応しました。(欠損して届くと大変なことに)
ttp://gamdev.org/up/img/1193.zip

自分がだらけてきたので、充電開始〜。

>>847
>>637ここの・・・って
製作環境違うんでしたっけ、アドバイスできない
orz
085019104/09/07 17:24ID:K9Y6rW5P
>>847
AddLog(文字列) って感じで文字列渡すと改行して文字列追加してくれるって事か?
それとも、<br>とか\nを自動で改行に変換ってことか?
駄目なときはもう少し明確に教えてクレよ。

>>849
>WSAAsyncSelectが信じられなくなってしまったので、
たぶん、渡すHWNDが間違っているかサブクラス化でのプロシージャの実行順序の勘違いじゃないか?
>分割受信に対応しました。(欠損して届くと大変なことに)
TCPなら欠損シネーだろ。分割受信はアレでよさげ。良くやった。
今後の方針もアレで良し。

ttp://gamdev.org/up/img/1195.zip
サブクラス化+Winsockの合わせ技のサンプルを書いてみた。
メインウィンドウのプロシージャで通信処理を書いてないのがポイント

スマン、むしゃくしゃして書いた。
自分が面白ければ何でも良かった。
まさかこんなに長く複雑でサンプルとして不適切になるとは思わなかった。
今は反省している。
サンプルで解らなかったら聞け
085179504/09/07 17:58ID:6+/R/deI
>>849
ヘタレのくせに無謀にも標準コントロールを使わずに
自前で処理をしようと考えているのです。
普通の人なら簡単な事なのかもしれないですけど難航してます…

>>850
>AddLog(文字列) って感じで文字列渡すと改行して文字列追加してくれるって事か?
こんな感じになるように作ってます。
ウィンドウ幅を自由に変えられたりスクロールバーも
つけることを考えてるのでその辺が難しいです。
今の所なんとか思いつく事があるのでそれを試してます。
でもなんか汎用性の無いものになりそうな予感。
何も思いつかなくなったら助けを求めに来るのでよろしくです。
0852名前は開発中のものです。04/09/07 19:10ID:ZV/yPhmS
どうでもいいけどサーバー側が
UnixかLinuxで動く事を考慮して作らないと意味がない。
サーバーをWinOSに限定するならDirectPlay使ったほうがいい。
■ このスレッドは過去ログ倉庫に格納されています