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

MMORPGをHSPで作りたいな

■ このスレッドは過去ログ倉庫に格納されています
0001FAN04/05/11 11:12ID:Ky5hy7V5
とりあえず、作ってみたいんですけど参考になるサイトないですかね?
0103101 ◆VhiWHt2b1s 2005/08/30(火) 20:37:00ID:DvsQWqE7
トリップ付けたです

>>102
すごいうまいですね
通信には何を使用してますか?
01049112005/08/30(火) 20:51:35ID:WLq0OrMr
PCBnetです。
0105名前は開発中のものです。2005/08/30(火) 20:55:00ID:WLq0OrMr
あ、トリップってどうつけるのですか?
ギコナビはじめてでわかりません。;
0106101 ◆VhiWHt2b1s 2005/08/30(火) 21:00:34ID:fsyDvNCd
>>104
PCBか〜
俺と同じだw

>>105
トリップは
名前欄に、[#好きな文字列]で出来ます。
0107 ◆RfGLxICaUo 2005/08/30(火) 21:03:53ID:WLq0OrMr
>>106
なるほどありがとうございます。(できたかな?
もしかして>>106さんも何か作っているのですか?
0108101 ◆VhiWHt2b1s 2005/08/30(火) 21:38:53ID:fsyDvNCd
>>107
はい
俺もMMOを開発してます。
接続人数多くなると、動作が遅くなるから
高速化がたいへんですね
0109911 ◆RfGLxICaUo 2005/08/30(火) 21:50:25ID:WLq0OrMr
ageつつ
確かに人数が増えると比例して大変ですよね;
プロトコルはTCP/IPですか?

私の場合はシナリオ・ゲーム設定が下手で困ってますw
あとRPGとか作ったことないので・・・ (-∀-;)
0110101 ◆VhiWHt2b1s 2005/08/30(火) 22:02:55ID:fsyDvNCd
>>109
あがってないのでageつつ
TCP/IPです。
特にシナリオが無く
永久的に出来るようにしたいと思ってます
そう、うまくはいかないでしょけどorz
0111911 ◆RfGLxICaUo 2005/08/30(火) 22:11:34ID:WLq0OrMr
なるほど比較を出してみたのですが…
【TCP/IP】 61~92msec
【UDP】 10~24msec
9倍近く違うのと往復*人数となるとどんどん遅くなるみたいです。(;
個人的にはUDPで開発してます。

#以前はTCP/IPでしたが諦めました orz
お互いがんばりましょう!
0112101 ◆VhiWHt2b1s 2005/08/30(火) 22:24:00ID:fsyDvNCd
>>111
9倍も違うんですか!
UDPにしたほうがいいかな
チャットは当然TCPですよね?

アカウントサーバ作ってるんですけど
アカウントの保存と読み出しってどうやってます?
0113911 ◆RfGLxICaUo 2005/08/30(火) 22:39:59ID:WLq0OrMr
参考程度にページ下に書いてあります。
http://nekonoteigi.ddo.jp/

アカウント情報だけTCPで通信してます。
以前はTCPでしたけど・・・IM機能考えてUDPに変えました。
UDPにRTPという方法で通信することでTCPみたいな信頼性持たせてます。

アカウントサーバーの処理はセキュリティ上詳しくいえませんが・・・
(暗号化名).cache → (暗号化)最後パケットを保存。これだけです。
【パケット流れ】クライアント→ホスト→アカウント→ホスト
絶対に情報をクライアントに送らない様にしてます。
0114101 ◆VhiWHt2b1s 2005/08/30(火) 22:46:08ID:fsyDvNCd
RTPですか
初めて聞きます
ググってみます

アカウントの認証はどう行えばいいでしょうか?
アカウントファイルをバッファに読み込んで
そこから検索して該当するものがあればログインする
ではだめですかね?
0115911 ◆RfGLxICaUo 2005/08/30(火) 22:54:13ID:WLq0OrMr
あ〜デザイナでしてプログラム初心者なのであんまりわからんです;

かなり姑息なやり方ですが・・・
クライアントから名前とパスワードを受け取り。
名前をパスワードで暗号して 暗号化した名前+.cache を検索。
if (あったら) {
   ログイン許可
   内容をロード
} else {
   ログイン拒否
}
これが個人的には最小の方法かな・・・。
本当はデーターベースに書き込むらしいですが。
0116名前は開発中のものです。2005/08/30(火) 23:02:05ID:WLq0OrMr
>アカウントファイルをバッファに読み込んで
>そこから検索して該当するものがあればログインする

全然いいと思います。
てか、考えればこの方がいいですw
0117101 ◆VhiWHt2b1s 2005/08/30(火) 23:06:32ID:fsyDvNCd
>116
でもこの方法だと、例えば
Aさんはアカウント「abc」
Bさんはアカウント「abcd」
というときに
Bさんがログインしようとすると
Aさんのアカウントも検索にヒットしてしまう
どうしようかな?
0118101 ◆VhiWHt2b1s 2005/08/30(火) 23:07:29ID:fsyDvNCd
ミスった
Aさんがログインしようとすると
Bさんのアカウントも検索にヒットしてしまう
でした
0119911 ◆RfGLxICaUo 2005/08/30(火) 23:09:31ID:WLq0OrMr

なるほど、私だったら文字列が多いほうから処理させれば重複がないと思います。
以前同じようなことでつまずいたことありましたw
0120名前は開発中のものです。2005/08/30(火) 23:15:28ID:BZ2+UeFa
101がまだ何もうpしてない件について、。
0121101 ◆VhiWHt2b1s 2005/08/30(火) 23:15:48ID:fsyDvNCd
でも、先に登録した人から順に保存されていくから
文字列が多い方から、というのが無理っぽい
0122101 ◆VhiWHt2b1s 2005/08/30(火) 23:21:16ID:pw2GgF0o
>>120
まだうpしません
アカウント登録が出来るようになって
UDP通信に直せたら、うpすると思います
0123911 ◆RfGLxICaUo 2005/08/30(火) 23:25:29ID:WLq0OrMr
なるほど・・・
今考えた程度の処理でいいならこんなのはいかがですか?

「abc」を受け取ったら「abc」付くユーザー名を全て配列に一時保存。
そして、abcの文字列数を取得して「abc」より大きいものは排除。
するとあら不思議abcしか残らない。なんて・・・

NAME = "abc"

notesel BUF
repeat noteinfo(0)
  noteget a,cnt
   if (instr(a,0,NAME) ! -1) {tmp(cn) = a : cn++}
loop
repeat cn
  if (strlen(tmp(cnt)) = strlen(NAME)) {ここで処理}
loop
noteunsel
0124911 ◆RfGLxICaUo 2005/08/30(火) 23:27:24ID:WLq0OrMr
↑はそのまま使えませんから気をつけて;
書き直してみてください。
0125911 ◆RfGLxICaUo 2005/08/30(火) 23:29:33ID:WLq0OrMr
何度もすいません・・・これで使えるはずです。

NAME = "abc"
sdim tmp,64,36

BUF = "abc35q\nabc434\nabc"

notesel BUF
repeat noteinfo(0)
noteget a,cnt
if (instr(a,0,NAME) ! -1) {tmp(cn) = a : cn++}
loop
repeat cn
if (strlen(tmp(cnt)) = strlen(NAME)) {dialog ""+tmp(cnt)}
loop
noteunsel
0126名前は開発中のものです。2005/08/30(火) 23:30:06ID:zifRUWIk
なんなら、パスワードとかをMD5とかでハッシュかしてもてば?
クライアントから送るのはハッシュ値

と、@IT(だったか?)で認証方法として紹介されてたかな。
(ほんとうはさらにハッシュ値も公開鍵とかで暗号化いるけどね)
0127101 ◆VhiWHt2b1s 2005/08/30(火) 23:33:28ID:pw2GgF0o
ほぉ、その方法いいかも
使わせてもらいます

UDPのRTPという技術、調べてもよくわからんかったです。orz
0128911 ◆RfGLxICaUo 2005/08/30(火) 23:34:17ID:WLq0OrMr
MD5は知ってましたが使い方知らないです;
今調べたら・・・すっごい可能性ある方法ですね。

あ〜また仕様変更かもです orz
0129101 ◆VhiWHt2b1s 2005/08/30(火) 23:37:09ID:pw2GgF0o
うひゃ、ハッシュとかよくわかんね
とりあえず、911さんの方法でやってみます
0130911 ◆RfGLxICaUo 2005/08/30(火) 23:38:19ID:WLq0OrMr
UDPのRTPについて

UDPは基本的にデータ送信したら終わりなプロトコルです。
つまり、データを先に送信しても後のデータが先に着くこともあります。
TCPが好まれるのは送信した順番と確実だからです。
UDPでそれを実現するには 送信した順番(シーケンス番号)と時間(タイムスタンプ)を追加すればいいのでは?
ということで考え出された技術です。

基本的にリアルタイムな通信に使います。(IP電話など)

ただ、弱点もたくさんあって・・・データでいっぱいになるとか。
その辺も含めていろいろ開発中だったり。
0131101 ◆VhiWHt2b1s 2005/08/30(火) 23:38:55ID:pw2GgF0o
MD5ってそんなにすごいんだ〜
また、勉強してみます
0132101 ◆VhiWHt2b1s 2005/08/30(火) 23:41:13ID:pw2GgF0o
RTPはすごいですな
でも、俺には
送信した順番(シーケンス番号)と時間(タイムスタンプ)を追加する
という方法がワカンネ
0133名前は開発中のものです。2005/08/30(火) 23:43:26ID:zifRUWIk
まぁ、MD5,SHA-0とかも去年コリジョンでの脆弱性が公表されたけどね(おぃ
0134911 ◆RfGLxICaUo 2005/08/30(火) 23:46:06ID:WLq0OrMr
あ〜それなのですが・・・
本当の方法はプラグイン内部でやらなければいけない処理でして。
私の考えてる方法はパケット自体に細工する方法です。
以下のパケットを送ります。そんで、到着した順に一時保持。
シーケンス番号順にソートして実行をサーバー側で行います。
例)
シーケンス番号(タイムスタンプ)@コマンド
12(3:45:6)@say[0,Hello!!]


お互いがんばりましょう。
と言いたいのですが・・・個人での開発に限界感じて諦めかけてます;
とにかくドット絵・プログラマ・音楽・・・私には足らないものが多すぎで orz
0135911 ◆RfGLxICaUo 2005/08/30(火) 23:47:52ID:WLq0OrMr
>>133
煤i゚∀゚) ナッ!!

マジですか・・・まぁ、個人的に考えたXORレベルの暗号よりかはいいかなw
0136101 ◆VhiWHt2b1s 2005/08/30(火) 23:50:59ID:pw2GgF0o
>>134
難しいですな
まぁ、がんばってみるです
0137911 ◆RfGLxICaUo 2005/08/30(火) 23:54:46ID:WLq0OrMr
よかったら共同で開発なんてどうですか?
通信の方はできそうなのですが・・・ゲームプログラムが苦手で困ってるんですよ;
0138911 ◆RfGLxICaUo 2005/08/31(水) 00:05:22ID:h//GOLL5
人のスレ利用してる気がするのでやっぱりスレに書き込むの辞めます。
本当にごめんなさい。今日はありがとうございました。
0139101 ◆VhiWHt2b1s 2005/08/31(水) 00:06:21ID:WSQckSfa
>>137
いや〜、共同開発もいいですけど、今は一人でがんばってみます。

>>125のソースってHSP3用みたいですけど、2.6用には出来ませんか?
いろいろと直してみたんですけど、やっぱりエラーが出ちゃうんです
0140911 ◆RfGLxICaUo 2005/08/31(水) 00:11:03ID:h//GOLL5
そうですか・・・残念です。 orz

NAME = "abc"
sdim tmp,64,36

BUF = "abc35q\nabc434\nabc"

notesel BUF
notemax i
repeat i
noteget a,cnt
instr stats,a,NAME,0
if (stats ! -1) {tmp.cn = a : cn++}
loop
repeat cn
strlen SIZE,tmp.cnt
strlen SIZE2,NAME
if (SIZE = SIZE2) {dialog ""+tmp.cnt}
loop
0141911 ◆RfGLxICaUo 2005/08/31(水) 00:12:25ID:h//GOLL5
2chのルールはよくわからないのですが・・・
同じようなスレッドは立ててはいけないんですよね?
0142911 ◆RfGLxICaUo 2005/08/31(水) 00:16:01ID:h//GOLL5
あ・・・
ちなみに1つのファイルでアカウント管理するとヤバイですよ。
一人が更新中にもう一人がアクセスしたら・・・衝突が起きますよ。
(それを防止する意味で別々のファイルにしてるんです。)
0143101 ◆VhiWHt2b1s 2005/08/31(水) 00:18:28ID:WSQckSfa
>>140
デキターと思ったらやり方書いてくれてたw
ありがとん

>>141
同じようなスレはやめた方がいいと思いますよ
このスレ誰もいなかったから俺が占領しましたw
0144101 ◆VhiWHt2b1s 2005/08/31(水) 00:21:49ID:WSQckSfa
>>142
一人ずつ違うファイルに保存するわけですな
ログイン時に全てのファイルを開くのが重くならないかな?
0145911 ◆RfGLxICaUo 2005/08/31(水) 00:25:48ID:h//GOLL5
>>144
私が試したところ鯖専用PCだったら24人同時アクセスでも2~5%程度の負荷でした。
で、アカウント管理鯖は24人までにしました。(この人数以上に同時ログインすることないから)

ちなみにスペック
CPU:celeron2.4Ghz
MEM:1024MB
回線:100Mbps
の場合なのであしからず。
0146名前は開発中のものです。2005/08/31(水) 00:29:02ID:bSw2Q65V
>>142
データベースで言えばトランザクション処理部分だね。

hspdbは使えなかった?(てか、isolation level変えられない?)
0147名前は開発中のものです。2005/08/31(水) 00:29:15ID:7+RRt3IJ
>911
スクショ見る限りでは
ゲームの方もできそうなのだが
あれでは、だめなのか
0148911 ◆RfGLxICaUo 2005/08/31(水) 00:31:25ID:h//GOLL5
>>146
そうです。ただDBを実装したことないのでなんとも;
HSPでDB使えるのは知ってても実際に使ったことないんです。 orz
この辺がヘタレの証拠ですね;

ちょっと要らない情報書き込み過ぎたかもしれませんね・・・
0149101 ◆VhiWHt2b1s 2005/08/31(水) 00:33:30ID:WSQckSfa
24人か〜
確かにそれくらいで十分ですね

スペック高いですな
うちのと大違い
CPU:600Mhz
MEM:192かな?
回線:AirH
超最悪環境orz
近いうちに買い換えます。
回線もケーブルテレビにする予定です
0150911 ◆RfGLxICaUo 2005/08/31(水) 00:35:42ID:h//GOLL5
>>147
あ〜なんていうか、RPG的な処理ができないんです。
画面のスクロールやら・・・マップ作るのがめんどくて。
あのSSは背景は固定イラストなんです;(恥

+ゲームシナリオとかバランスが苦手です。

>>149
AirH・・・・256kbpsはちょっと鯖はきついですね;
昔はmmo作りたくて本気だったので20万近く費やして設備揃えました。
はい、馬鹿です;
0151名前は開発中のものです。2005/08/31(水) 00:37:50ID:bSw2Q65V
>>148
まぁ、とりあえずはMySQL+MyODBCを使ってみればいいさ。(hspサンプルはそれだしね)
環境整えば難しくないし。
0152911 ◆RfGLxICaUo 2005/08/31(水) 00:42:19ID:h//GOLL5
>>151
試したいのですが・・・あれです。
MySQLインスコ失敗してから怖くなってしまって;(最新版使わなきゃよかった。
時間空いたら鯖にMySQL導入してみますね。

明日アキバでテスト用PC買ってきまつ…
そしたらmmo公開早まる・・・といいなw
0153101 ◆VhiWHt2b1s 2005/08/31(水) 00:44:21ID:WSQckSfa
>>152
公開始まったら、呼んでくださいな
テスターとしてガンバルよ

ってか、このスレ進むの早ッ!
0154911 ◆RfGLxICaUo 2005/08/31(水) 00:46:23ID:h//GOLL5
私が無駄なレス入れ過ぎました。すいませんorz
0155101 ◆VhiWHt2b1s 2005/08/31(水) 00:48:54ID:WSQckSfa
いいんじゃない?
俺も無駄レス多いしねw
0156911 ◆RfGLxICaUo 2005/08/31(水) 00:57:43ID:h//GOLL5
一応少しづつ公開していきます。
ゲーム画面(小) < http://nekonoteigi.ddo.jp/game0.gif
アカウント鯖のSS < http://nekonoteigi.ddo.jp/game1.gif

明日から恐らく毎日ここ来ます。
少しづつDBやら実装したりしてがんばります。
末永く〜
0157101 ◆VhiWHt2b1s 2005/08/31(水) 01:01:42ID:WSQckSfa
>>156
俺も負けずにがんばりますよ〜
明日は忙しいですので開発できるか分かりませんがorz
俺も毎日来るんでよろしく
以上!
じゃあ寝る
0158911 ◆RfGLxICaUo 2005/08/31(水) 01:11:15ID:h//GOLL5
私のログイン処理を書いておきます。
もし製作されている方おりましたら指摘・参考・意見などあると嬉しいです。
http://nekonoteigi.ddo.jp/

ログインの流れ

クライアント            |         ゲーム鯖          |     アカウント鯖
【名前・パスワード送信】  → → → → ここへ
                          【DB検索許可】 → → → → ここへ 
                                     【衝突安全確認のち同期】
                                   ここへ ← ← ← ← 【DB結果・読出】
           ここへ ← ← ← ← 【DBを保持・完了通知】
                          【ゲーム処理へ移行】

クライアント側には一切情報を送らないのがみそ。
おそらく、正しい方法ではないです。
0159911 ◆RfGLxICaUo 2005/08/31(水) 01:26:50ID:h//GOLL5
HSPでできるだけラグを少なくする方法は・・・

全てにおいて

*main
repeat 最大人数
   通信判定
loop
repeat 最大人数
   受信
loop
repeat 最大人数
   ゲーム
loop
repeat 最大人数
   送信
loop
wait 1
goto *main

と、スレッドを動かすことで全てのユーザー処理をwait 1〜誤差少しで済みます。
これは【ジエンの無人島】なるソースにもあります。(ただ、バグが多いです。
0160911 ◆RfGLxICaUo 2005/08/31(水) 01:27:21ID:h//GOLL5
しかし、以下のように全ての処理を

*main
repeat 最大人数
  通信判定
  受信
  ゲーム
  送信
  wait 1
loop
goto *main

だと、0番〜最大nまで分がラグ発生します。
256人ならば wait 256tラグ発生する点に注意してください。
実際はそこまで遅れないと思いますが。。。(LAN外ならもっと
0161911 ◆RfGLxICaUo 2005/08/31(水) 02:03:27ID:h//GOLL5
ちょっと質問です。
MySQL&MyODBC導入しましたがイマイチわからないです。
なんかODBCでエラーがどうたらと noPASSWORD とか・・・
設定などの参考サイトお教えいただけると嬉しいです。
0162911 ◆RfGLxICaUo 2005/08/31(水) 02:38:22ID:h//GOLL5
MD5の導入完了しました。
すごく便利で助かりました。ありがとうございました。
0163名前は開発中のものです。2005/08/31(水) 12:47:49ID:HHO36KTG
おー!こんな良スレあったんですね。
かなり参考にさせていただきました。
私も以前からMMOつくりたいと思い、SOKETやLinuxプログラムの本買って勉強してます。
言語がCなので、微妙にスレ違いですが…。
ただ、プロトコル設計とかつまるところは、似てるので参考になります。

ちなみに、今日発売のMMORPGサーバープログラミングを買う予定なので、あとで報告しますね。
良本だといいんですが。
0164101 ◆VhiWHt2b1s 2005/08/31(水) 13:19:16ID:vh2Zi6CW
>>163
Cで作ってるんですか!
難しそうですね
俺も半年ほど前にCで作ろうと思ってたんだけど
VRAMが3.5しかなくて、DirectXが使えなかったから
開発をやめたんですw

まぁ、お互いがんばろう
0165911 ◆RfGLxICaUo 2005/08/31(水) 15:39:26ID:h//GOLL5
私もMMORPGプログラムの本買って来ました。
あと、テスト用PCもw

これから楽しみです〜
今日は仕事で5:00〜11:00まで居ません。でわ〜
0166名前は開発中のものです。2005/08/31(水) 16:55:02ID:8d7O4VMk
>>159
>>これは【ジエンの無人島】なるソースにもあります。(ただ、バグが多いです。
 ゴメ(; ;

 wait命令だと人数が増えるとCPUパワーに係わらず遅延が酷くなるので、await命令
で拍子を取らないと。クライアントの描画部分は60fps出したとしても、通信部分では
それほどのフレームレートは必要無い訳なので適度にスキップさせてよいかと。

 あと、アカウントですが、ユーザー名をファイル名としてパスワード等のデータを保存
する方法ではダメなんでしょうか? 無人島はステータス等を保存するタイプのゲーム
仕様ではないので、そのあたりは適当にしか考えてませんが…。

 なんにしろネトゲ作る人が増えて嬉しいデスヨ
0167101 ◆VhiWHt2b1s 2005/08/31(水) 17:05:37ID:2/MYVBqe
>>166
俺も最初そうしようと思ったんだけど
ファイルを読み込むときに
どうすればいいか迷ったから
番号をファイル名にすることにしました
そうすれば、認証の時などにループして読み込めるから
便利だと思いました
0168名前は開発中のものです。2005/08/31(水) 20:46:51ID:01AV07ZN
>>161
とりあえず、ODBC設定くさいので
ttp://allabout.co.jp/career/database/closeup/CU20021003/
とかどう?
0169911 ◆RfGLxICaUo 2005/08/31(水) 22:09:40ID:h//GOLL5
こんばんわ〜
>>166
あっ作者さん・・・スマセン。とても参考になっておりますです。
wait と await比べたのですが、余りわからなかったのでwaitでした。
やはり、await位の単位の方がいいのですか。 参考になります。

私はアカウント名をファイル名にして、中身にパスワードにしてます。
ただし、アカウント名はある程度暗号化してます。
一応、DBなんかも比較しながら導入検討してます。

私はネトゲをやったこと無いのですが、面白そうだと思い作ってます;
実際に作ってみたら・・・普通のゲーム製作が簡単に感じられましたw
0170911 ◆RfGLxICaUo 2005/08/31(水) 22:10:49ID:h//GOLL5
>>167
こんばんわ〜

番号をファイル名にすると・・・
いや実際に運用して試して下さい。意外なところでバグがw
0171911 ◆RfGLxICaUo 2005/08/31(水) 22:12:53ID:h//GOLL5
>>168
おぉ・・・これなら平気そうです。ちょっと試してみます。
DBは衝突という考え方は起きるのですか?(lock,unlockとかあるのかな?
それとも、マルチスレッドで動いているとか?
0172911 ◆RfGLxICaUo 2005/08/31(水) 22:18:44ID:h//GOLL5
でわ、飯食べてから来ますね〜
0173101 ◆VhiWHt2b1s 2005/08/31(水) 22:48:27ID:GTGct16k
>>170
番号をファイル名にしてやってましたが
特に問題なく動きましたよ
どんなバグがあったんですか?
0174911 ◆RfGLxICaUo 2005/08/31(水) 23:02:19ID:h//GOLL5
101さんのmmoがどのようなものかによりますが・・・
多数でアカウントファイルを作ると言うことは?
つまりは個人のステータス保存を行うことを意味します。(セーブ機能

番号だと特定されやすい気がします。
さらには、ユーザー削除したら?(clr)追加したら?以前使った人はどうなるの?
と・・・
私ならハッキングして好きなレベル。アイテムを加えちゃいます。

よく考えればバグという程でもないかな・・・ orz
仕様と考えれば平気だと思います。すいませんでした。
0175名前は開発中のものです。2005/08/31(水) 23:08:02ID:01AV07ZN
>>171
とりあえず、トランザクション分離レベルを。
ttp://www.atmarkit.co.jp/fnetwork/rensai/sql27/sql1.html

基本的には、マルチスレッドのように複数のトランザクションを作成したら
衝突は起きますね。
0176911 ◆RfGLxICaUo 2005/08/31(水) 23:14:36ID:h//GOLL5
DBは面白そうなので書籍買って覚えてみます。
採用する意義ありそうだこりゃ。

※HSPで開発してる間は自分なりに考えたDB使いますね。
0177911 ◆RfGLxICaUo 2005/08/31(水) 23:29:09ID:h//GOLL5
MMORPGゲームサーバープログラミング
という本を買って読んだ感想。

 絶 対 に 買 っ て 損 は し な い ぞ !
0178101 ◆VhiWHt2b1s 2005/08/31(水) 23:43:13ID:GTGct16k
>>174
なるほど
911さんはどうしてますか?
0179911 ◆RfGLxICaUo 2005/08/31(水) 23:47:10ID:h//GOLL5
今日から1から作り直します。
参考にしたのは書籍mmorpg,,でとりあえず、リネージュの初期設計を流用してみたり。

【ローカル内部】:分散%vista(o)
              -----------------------       ------------------------
             ↓                ↑      ↑       ↓       ↓
クライアント ⇔ パッチ鯖 → 認証鯖 →ロビー鯖 → 管理鯖 ⇔ ゲーム鯖1 ⇔ 同期サーバー
                      ↑                  ⇔ ゲーム鯖2 ⇔   ↓
                      ---------------------------------------------
1つの鯖で256人(192.168.0.0〜255)まで。

0180911 ◆RfGLxICaUo 2005/08/31(水) 23:52:42ID:h//GOLL5
>>178
私の場合は
アカウントファイルを個別に生成してます。166さんと同じような感じです。
ただ・・・色々弱点もあるので今は別の方法考えてます。

      クライアント                         アカウントサーバー
【TCP】ユーザー名とパスワード送信      →       【TCP】受信
                                  【existでファイルを探す。】※ユーザー名とパスワードは暗号化すること
                                  【ゲーム鯖にステータス配信】
【TCP】受信                  ←       【TCP】TRUEだったらMD5ハッシュ送信
【ハッシュ値が合ってるか?】

0181101 ◆VhiWHt2b1s 2005/08/31(水) 23:54:55ID:GTGct16k
その書籍ってHSP本なんですか?
それともC言語?
0182101 ◆VhiWHt2b1s 2005/08/31(水) 23:57:31ID:GTGct16k
>>180
ほぉ〜
そのやりかたでやってみます。
0183911 ◆RfGLxICaUo 2005/09/01(木) 00:00:15ID:zCrIKZfZ
この書籍はリネージュの製作者の技術本らしいです。
c++ベースでWin,Linux対応らしいっす。
ソース読めばHSPに応用できないことも・・・まぁ無いことは無いかな?(;
0184101 ◆VhiWHt2b1s 2005/09/01(木) 00:06:31ID:lc8CaCbR
>>183
リネージュの製作者か〜
すごいですな
買ってみようかな
0185911 ◆RfGLxICaUo 2005/09/01(木) 00:07:44ID:zCrIKZfZ
ちなみに、>>180の別の方法は・・
【通信経路は略】
キャッシュ(1づファィル)に独自アルゴリズムで配置する。※暗号化ではない。
そして、その内容をハッシュ値として保存。(新しく生成)
ダミーアカウントに名前のみを入れる。※ここで暗号化する。
通信は基本的にさっきと同じ手順。

なにが違うかというとユーザー名・パスワード・ファイル名など全てが流動的なのでハッキングされにくい。
ログインするごとにテキストが変化するのに、内容は変わらないと。


>>184
この類では意外に安いかもです。¥3400。
0186911 ◆RfGLxICaUo 2005/09/01(木) 00:14:29ID:zCrIKZfZ
今日も無駄なレス書いてしまいました。
今後は完成したものを公開するだけにします。
なんか悲しいなぁ・・・開発者MLとかないかな〜・・
0187101 ◆VhiWHt2b1s 2005/09/01(木) 00:14:50ID:lc8CaCbR
オンラインゲームプログラミングって言う本なら
買ったことがあります
表紙が色違いだけでそっくりですな

その本DirectX使ってますか?
0188101 ◆VhiWHt2b1s 2005/09/01(木) 00:16:34ID:lc8CaCbR
>>186
俺には全然無駄じゃないです
かなり参考になる
0189911 ◆RfGLxICaUo 2005/09/01(木) 00:16:42ID:zCrIKZfZ
いやこっちはゲームではなく、サーバープログラミング専用ですね。
オンラインゲームの方も買おうと思いましたが、サーバーの方が興味あったので;
0190101 ◆VhiWHt2b1s 2005/09/01(木) 00:19:35ID:lc8CaCbR
>>189
サーバーだけか〜
でも良さそう
今度本屋で見てくる

うひゃ、こういうのが無駄レスかw(orz
0191911 ◆RfGLxICaUo 2005/09/01(木) 00:23:32ID:zCrIKZfZ
ま〜マッタリ作りましょう。
私はオープンソースmmoを作って色んな人が簡単に作れるのが目標です。
それを完成させるまでここいるです。あ〜楽しいかも。
0192911 ◆RfGLxICaUo 2005/09/01(木) 00:30:30ID:zCrIKZfZ
というか、このスレッドは再利用してもよろしいのでしょうか?
なんか・・・流れが・・・
0193101 ◆VhiWHt2b1s 2005/09/01(木) 00:33:23ID:lc8CaCbR
誰もいなくて、かなり下にあったスレだから
いいんじゃない?

今なんとなく
何の処理もしてないプログラムの
FPSを調べていたら
1万を余裕で超えていたw
0194911 ◆RfGLxICaUo 2005/09/01(木) 00:35:17ID:zCrIKZfZ
FPS・・一人称視点ですか?;
fspあれどっちだっけ?
0195101 ◆VhiWHt2b1s 2005/09/01(木) 00:37:51ID:lc8CaCbR
>>194
FPSは
一秒間に何回ループしているか
だったっけな?
0196911 ◆RfGLxICaUo 2005/09/01(木) 00:41:45ID:zCrIKZfZ
あ〜1秒間に1万・・・・すごい回数だなぁ。

今日は書籍読んで寝ますね。
思いついたら鯖でも公開してみます。でわおやすみなさい〜
(とかいいつつ多分書き込むかも・・)
0197911 ◆RfGLxICaUo 2005/09/01(木) 00:45:09ID:zCrIKZfZ
>>180
のアカウントさーばーがMD5送信しないです。すいません。
アカウントさーばーで判定して結果(TRUE,FALSE)のみ送信でした。
0198名前は開発中のものです。2005/09/01(木) 00:50:19ID:YCOa9Vyn
大抵、
FPSっと大文字だと一人称視点シューティング
fpsっと小文字だと1秒間の画面更新回数
と理解されるよ。

このスレはどっちにしろ機能してなかったから別段独占しても構わんかと。
あー、明日も仕事だ。はよ、寝よ。
0199101 ◆VhiWHt2b1s 2005/09/01(木) 01:04:17ID:lc8CaCbR
>>198
でも一人称視点ってFPVじゃなかったっけ?
どっちでもいいみたいだけど
0200911 ◆RfGLxICaUo 2005/09/01(木) 01:19:07ID:zCrIKZfZ
【明後日までの課題】
クライアント・パッチ鯖・認証鯖
を、テスト的な位置付けで作ります。

実装して欲しい機能あったら書き込んでください。
mmo遊んだことないので知識だけで;

でわ〜本当におやすみ!!
0201無人島(HSP3) ◆quHoSW/FCI 2005/09/01(木) 02:11:24ID:Rm+OmXay
>>167
 一番単純な「アカウント名+拡張子( .datとか)」だと、exist命令でファイルの有無が
確認できます。登録アカウント数が1000を越えるようなら先頭文字別にフォルダに仕
分ければいいと思います。

>>169
 waitとawaitの違いですが、精度の違いだけでなく内容も大きく異なります。
 waitだと、「処理に掛かった時間+wait待ち時間」とループ毎の処理時間が異なって
しまいますが、awaitは、「前回のawait命令から計算して指定時間になるまで待機する」
ということで、awaitでの指定時間以上にメインの処理時間が掛からない限り一定になり
ます。

 wait -> メイン処理に15ms掛かった+wait 2(20ms) = 掛かる時間35ms
await -> メイン処理に15ms掛かった+await 20(msで残り5msだけ待機) = 掛かる時間20ms
0202名前は開発中のものです。2005/09/01(木) 08:00:55ID:ZdnOF/2P
>>199
FPVは確かに一人称視点だがシューティングゲームの要素が入るとFPSという
■ このスレッドは過去ログ倉庫に格納されています