1read 100read
2012年5月ゲ製作技術147: delphiでMMO (152)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
■3Dツール総合@ゲーム製作■ (612)
おまえら土日でゲーム作れませんでした☆遅刻専用スレ (790)
スーファミのプログラム (383)
【最低技術】ファルコム26代目【話題循環】 (219)
(゜(・)゜)ホモゲー作ろうよ(゜(・)゜) (678)
ガンダム版大戦略 (367)
delphiでMMO
- 1 :03/12/27 〜 最終レス :12/03/11
- 作った人いないのか?
作ってる奴いないのか?
作ろうする奴いないのか?
- 2 :
- 2ゲトーー(`・ω・´)
- 3 :
- 3
- 4 :
- 作って見たい (。・_・。)ノ
- 5 :
- moremo-
- 6 :
- INDYのインスコに失敗しながら6ゲトー
- 7 :
- ばかばっか
- 8 :
- >>7
じゃあ、作ろうと思ってるおれはバカか・・・鬱
どんな言語でも差ほど差は無い、使う奴によって
プログラムは左右する・・・高速化だって技術者
の改善により叶うものだと思ってるし。
スキルのしょぼい俺が言う事までも無いが;
- 9 :
- 口だけ言うだけで自分で歩いて進もうとしないやつが真の馬鹿なのだ
- 10 :
- INDYのインスコに成功したので10ゲトー
- 11 :
- IdUDPで通信成功したので記念カキコ
- 12 :
- いっしょに作ろう!
- 13 :
- 見逃すな、今>>9が良い事言った!
- 14 :
- あがってるとおもたら唐揚げかよ!!
IdIRCでチャットができたので記念カキコ
- 15 :
- チャットソフトは簡単に作れるんだけどな・・・
ムー
- 16 :
- >>15
そんなことないぞ
jisからs-jis変換けっこう苦労した
- 17 :
- 明確な変換手順が存在しているのに、
なぜそんなところで苦労するのか理解できない。
- 18 :
- >>17
お互い理解できない事だらけで大変ですな
IdHTTPの理解を深めながら18(σ・∀・)σゲッツ!!
- 19 :
- ホントショボイゲームですが作りました。でもPCとインターネット回線のスペックが低いので公開できません。誰かサーバーになってくれる人いないかな。
- 20 :
- >>19
とりあえず見てみたいんだが。
- 21 :
- リネ1ぐらいであれば比較的簡単にできるのでは?
- 22 :
- >>21
そうなの?本当ならDelphiをはじめてみようと思うが。
- 23 :
- サーバで動くプログラムはどうやって作るの?
- 24 :
- >>22
>>23
MMOといっても程度問題だから、P2Pでもない限り、
理論的には50人程度のネットワークゲームと同じような気がする。
つまり、一般的なクライアント−サーバシステム。。
ネットの相対的遅さを考えれば、
コンパイラの効率性はたいした違いではないから、
しかるべきハードウェアとネットワークが用意できれば、
Delphiでも全然大丈夫だと思われ。
ラグとセキュリティの問題はネトゲに普遍的だから、
マッシブ特有の問題といえば、やっぱ、ネットワーク負荷を
どうするかという問題ぐらいじゃないかなあ。
負荷を分散させる方法、少ないパケットでゲームができる設計など。。
リネ1とかはやっぱその辺工夫してるよね。
移動先でクリックして移動する方式だから、
座標の断続的やり取りで済み、通信量が大幅に軽減される。
ラグの影響を受けにくいし、あたり判定もしやすい。
しかも見えている範囲内のオブジェクトのデータしか送らない。。
全体チャットの規制、複数サーバ制。。。
あ、でもネットワークの専門家じゃないから、
間違ってるとこがあったらスマソ。
- 25 :
- 技術的な問題よりも、やっぱ運用面かも。。。
俺もMMO作りたくて、Delphiで試作品作ったんだけど、
いざテストやってみようとすると人が集まらなかったり、
ワーム騒ぎで家のルータ開けるの躊躇したりしてお蔵入りしてるw
- 26 :
- >>21,24,25
そうなんですか。今、Delphiを落とした。
参考にしたいから、そのプログラムをアップしてくれない?
- 27 :
- ではサーバはWindows限定になるの?
- 28 :
- 個人用のWindowsをサーバーにするのってライセンス的な問題が _| ̄|○
例えば、Windows XP Proだと10台以内という
MOなら可能かな
最近、apache のwin32版でも同じ問題を扱っていたような気がする
- 29 :
- ごめん。同時接続数の話ね
参考URL
http://slashdot.jp/articles/03/07/19/1536205.shtml?topic=10
↑これ見ると、日本のMSだけがおかしいようにも見えるけど
- 30 :
- 10って少なすぎなような気が。
将棋の対戦と見物人ってだけでもすぐに超過しそうだ。
- 31 :
- おはー!!\(・∀・)/
http://www.k-514.com/
- 32 :
- >>24
PureP2P型のMMOの可能性は?
- 33 :
- >>32
どこか一個所でタイムラインを管理する必要があるので、
向かないのでは?
CSなら、サーバ側は Kylix でコンパイルして Linux で動くようにすれば
いいのかな?
- 34 :
- >>26
スマソ、出すのは恥ずかしい
>>28
なるほど。。そういうのもインフラの問題のひとつだよね。
Winをサーバにするなら、高いライセンス買う必要があると。。
でも、接続を受け付けるサーバはやっぱ、LinuxかBSDがいいかもね。
Winだとセキュリティや安定性が心配かも。
となると、>>33みたいな方法になるんだろうね。
(接続サーバ部分だけならCで作るのもありだけど)
- 35 :
- でも、このライセンス問題って
「Windows上でApacheを利用する」場合でしょ?
ということはApacheを使わなければいいのか。
- 36 :
- >>35
WindowsのEULAは少なくとも、apacheに限定していないだわ
そもそも、Apache自体動かすことは問題ないし
- 37 :
- ところで、P2Pはみんながサーバになるんじゃないの?
- 38 :
- >>35
>>36のいうとおり、EULAにある「サーバソフト」っていうのは、
apacheに限らず、ポートを開けてListenするソフトだと思われ。
>>37
よく知らないけど、子ノードを持つときはサーバになるよね。
でもP2Pの場合は最大10ノードでもいけると思われ。
- 39 :
- リネージュ2
http://www103.sakura.ne.jp/~thelink/lineage2.html
- 40 :
- >>39
対応スペックが。。。
単純に考えて、3Dになると座標関係の通信量が50%増えるのかなあ。。
(Z方向にも移動できる場合だけど)
- 41 :
- >>38
これね。Windows2000 Professionalのやつ。
-----------------------------------------------------------------
お客様は、10 台のコンピュータまたはその他の電子デバ
イス(以下それぞれを「デバイス」といいます)を限度としてワークステーション
コンピュータに接続し、ファイルおよびプリントサービス、インターネット イン
フォメーション サービス、ならびにリモート アクセス サービス(接続の共有およ
びテレフォニー サービスを含む)のためにのみ本製品のサービスを呼び出し利用
することができます。
-----------------------------------------------------------------
つまり、Windows内蔵のサービスに接続する場合は10台まで、ということかな。
(インターネット インフォメーション サービス=IISのことなら。)
ちなみに上の文の下には「その他の実行ファイルをリモートからアクセス
させてはならない」みたいな事が書いてあるよ。
サードパーティ製のソフトは1本でもコネクション張らせちゃダメってこった。
-----------------------------------------------------------------
お客様は、ワークステーション コンピュータ上のその他の実行可能なソフトウェアを、
デバイス上で使用、アクセス、表示、または実行するために本製品を使用すること
はできず、またデバイス専用に本製品のライセンスを有していない限り、本製品の
ユーザーインターフェースをデバイスに表示することはできません。
-----------------------------------------------------------------
- 42 :
- ではサーバは最終的にKylixでコンパイルする。
開発中は1台のWindowsマシン上のDelphiでコンパイルとテストを行う。
とにかく、IPとポートで通信しておけば大丈夫。
- 43 :
- >>32
間接的な接続もNGだとさ
P2PMMOもダメぽいね
- 44 :
- >>41
>サードパーティ製のソフトは1本でもコネクション張らせちゃダメってこった。
えーまじで??
サーバライセンスが買えない場合はWindows98とかにしないといかんのかなw
- 45 :
- それはWindows2000の場合で、XPなら10コネクションまでOK(MSKKの見解)。
米国本社の見解に従うならライセンスを消化するような行為(Windowsアカウントを
使った認証とか?)を行わない限りOKらしい。つまり普通のTCP/IPソフトは無制限で
OKということらしいですよ?>>29のリンク先によれば、だけど。
- 46 :
- http://www.apache.jp/misc/windows.html
MSKKと日本Apacheユーザ会との懇談を見る限りだと
だめぽいです
- 47 :
- 上に1、下に9のツリー構造なら可能だろうか?・・・上の人が大変だな
- 48 :
- >>47
>>43によるとライセンス違反らしい
10人程度なら普通にDirectPlayで繋ぐような人数なのに……
倉鯖だけじゃなくピア接続のネトゲも気を使わないといけないな
ところでコネクションを貼るのがダメなんだからUDPなら問題ないのだろうか
他所でも指摘されてたけどどうなんだろう?
- 49 :
- ただ、サーバになるソフトがバンバン発表されてる現実からすると
そんなことにするほうがアホという可能性もある。
- 50 :
- ×そんなことにするほうがアホ
○そんなこと気にするほうがアホ
- 51 :
- 32人マルチ鯖とかゴロゴロありますがあれはナンなんでしょうか?
一企業が平然とライセンス違反してるわけでしょ?
- 52 :
- Server用のライセンス使ってるか、違反しているか
個人でWindowsでmodサーバ立ててる人とか、実はかなりヤバイ(´д`;)
まー、この例に関しては、黙認されてる気はする。訴えられた例知らんし
- 53 :
- この件は所謂、藪もつつかなきゃ蛇は出てこなかったろうに…ってやつですな。
- 54 :
- 見なかったことにして、開発再開しますか
- 55 :
- 作ってるひといるん?
- 56 :
- LinuxにはMsgWaitForMultipleObjectsと同等のAPIが無くて苦労すると聞きました。
>>55
テストに付合ってくれる友人もサーバも無いから作らないよ。
- 57 :
- FreeBSDならkqueueを使うといいらしい。
Linuxは2.6からepollとかいうのが大規模サーバ用に使えるらしい。
まぁ、select/pollだけでは限界あるからねぇ。
- 58 :
- 一体どんなMMORPGを創るつもりなんだい?
擦れの頭から読んでみたけど、ここの住人がどんなゲームを作りたいと
思っているのかサッパリ見えてこない。
チャットに毛が生えたようなプログラムを作りたいってことなの?
- 59 :
- >>58
ウルティマオンラインの様なゲームだと思う。
- 60 :
- 最初の2バイトに送られてくるデータサイズが入っている場合、
1バイト目だけ送られて途切れるような事は起り得るのでしょうか?
- 61 :
- 可能性がないとは言い切れない
- 62 :
- >>60
tcpならありうる。ただし切断されたりネットワーク障害でも無い限り必ず全てのデータが届けられる。
udpならありえない(ただしデータがまったく来ない場合はある)。
- 63 :
- ということは、データの終りは別の方法で決めた方がいいですね。
単純に文字列で送ればいいのかな…。
- 64 :
- >最初の2バイトに送られてくるデータサイズが入っている場合
ってわかってるなら2バイト以上届くのを待てばよいんじゃないの?
2バイト以上届いたら先頭2バイトからデータサイズをよみとって、
次はデータサイズ分届くのを待つとか。
- 65 :
- >>64
根本的な問題として、どれだけデータが送られてきたか解らなかったと思う。
文字列なら、バッファを$00でクリアしておいて、$00までのデータが
送られたと解釈していたと思う。
- 66 :
- ともったけど、TCustomWinSocketにはReceiveLengthなるものがあった。
内部は ioctlsocket(FSocket, FIONREAD, Longint(Result))
非同期用みたいだけど、どうなのかな。
- 67 :
- >>65
分からなくても問題ないと思うけど…
- 68 :
- >>67
バイナリの場合は問題ある。
それがクリアした$00なのかデータの$00なのか解らない。
- 69 :
- >>68
だから最初にデータの長さを送るって話でしょ?
最初に2バイト届くまで待って、そこからデータ長を得る。
んで、得られた長さ分だけ待つ。
コレだけの話。
(「待つ」のが問題なら、非同期なりスレッドなりをつかえ、と。)
- 70 :
- 何を言っても無駄か。
- 71 :
- >>70
ネットワークプログラミングしたことありますか?
- 72 :
- >>71
メーラー作った事ありますよ。
- 73 :
- と思ったけど、メーラーがネットワークプログラミングかどうかは怪しい。
LANのデバイスドライバとかですか? 作った事はないですね。
- 74 :
- なるほど、それでデリミタの話になるわけね。
tcp使うからって必ずテキストストリームベースのプロトコルじゃないといけない
なんてことは無いよ。もう少しいろいろなプロトコルを勉強してみるべきかと。
- 75 :
-
- 76 :
-
- 77 :
- 作りたいです。作れるものなら・・・
そーゆーソフトってないんですかね?
- 78 :
- >>77
ないならそういうソフトを作ればいいジャマイカ
- 79 :
- 今プロトコルのベース部分作ってるよ
キャラ表示部分とかゲームとしての処理部分はまだ作ってないからまだまだ掛かりそう
とりあえずキャラチャを目指して見ます
- 80 :
- 期待してます
- 81 :
- チャットソフトとしては結構出来てきた気がするけどまだだめぽ
キャラクター表示は
http://pc5.2ch.net/test/read.cgi/gamedev/1051110669/
こっちでいろいろやってるのを参考にしようと思いつつ
まだ何もやってないのでキャラチャっぽくなるのはまだ先になりそう。
- 82 :
- キャラクター表示部分だけ別に作成中
今こんな感じ
ttp://gamdev.org/up/img/722.jpg
通信部分は今RSAを使おうと思ってるのですが・・どこかにソース落ちてないかなぁ・・
- 83 :
- RSA暗号実装できました、今はRC4を実装してます。
キャラチャ部分はFOGがうまく掛からないので取りあえず放置で、先に通信部分を作りこんでます。
- 84 :
- >>82
トゥーンレンダリングですか?
激しく期待!!
- 85 :
- トゥーンレンダリングじゃないです。。
アレのやり方がいまいち分からないのでやってないのですが、出来たらやってみます。
とりあえずまだ通信部分書いていて表示の方はほとんど手をつけてないっす
- 86 :
- >>85
あぁ、勘違いでしたかorz
陰影がないのでアニメ調を意識してるのかと思いました
通信部分はやはりIndyを使ってるんですか?
- 87 :
- 前はIndyでやってたんですけど、、
どうも挙動がおかしかったので今はTSocket;でやってます。
あとキャラクターをクリックした場所に移動って処理をやりたいのですが・・どうやっていいのかさっぱりです・・
誰か出来るって人いないかなぁ
- 88 :
- ×TSocket
○TClientSocket/TServerSocket
- 89 :
- QuadrupleDでクリックした座標に移動ってどうやるんだー _no
- 90 :
- CとOpenGL使って実装したことはあるので、Quadruple Dのマニュアルを読んでみましたが
実装は難しそう。DirectXはセレクション処理は自分で書かないといけないみたいだし。
そもそもクリックして座標を得たとしても、その座標まで「障害物を避けて最短距離で移動
する」のが結構難物でした。どうしてもやりたい、というのでなければ、とりあえずジョイ
スティックでの移動で処理してみてはいかがですか?
- 91 :
- ふむう、、
やっぱキー操作が無難なのかなぁ・・
もうちょっと頑張ってみます・・
経路探索は前にソースを手に入れてたので少し改良すれば使えそうな気がします。
- 92 :
- 3D座標を2D座標にするのは
// ワールドマトリクスで座標変換します。
pos := Figure.TopFrame.LocalToWorld(testFigure.TopFrame.GetTranslation(testFigure.TopFrame));
Hgpos := NowHomoginize(pos);
// ビューマトリクスで座標変換します。
Hgpos:=NowTransform(Hgpos, NowInvMatrix(Camera.WorldMatrix));
// プロジェクションマトリクスで座標変換します。
Hgpos:=NowTransform(Hgpos, (Scene.ProjectionMatrix));//ScreenMatrix
// ビューポート情報からクライアント座標を取得します。
Hgpos.x := (Hgpos.X / Hgpos.W * 800 / 2) +800 / 2;
Hgpos.y := -(Hgpos.Y / Hgpos.W * 600 / 2) +600 / 2;
これで出来たっぽい
2D座標を3D座標にするのはこれの逆をやればよいから・・・
こうか??
pos.X := マウス座標X;
pos.Y := マウス座標Y;
pos.Z := 1;
//W付きに変換
Hgpos := NowHomoginize(pos);
// クライアント座標からビューポート情報を取得します。
Hgpos.x := (Hgpos.X -800 / 2) * Hgpos.W/(800 * 2);
Hgpos.y := -(Hgpos.Y -600 / 2)*Hgpos.W/(600 * 2);
// プロジェクションマトリクスで座標変換します。
Hgpos:=NowTransform(Hgpos, NowInvMatrix(Scene.ProjectionMatrix));
// ビューマトリクスで座標変換します。
Hgpos:=NowTransform(Hgpos, (Camera.WorldMatrix));
pos := NowHeteroginize(Hgpos);
testFigure.Figure.TopFrame.SetTranslation(Camera ,pos);
出来ない _no
- 93 :
- >>92
>// プロジェクションマトリクスで座標変換します。
>Hgpos:=NowTransform(Hgpos, NowInvMatrix(Scene.ProjectionMatrix));
投影変換行列の逆行列を乗算するんじゃなくて、投影変換行列そのものを乗算するんじゃないのか?
だから、単に、
Hgpos:=NowTransform(Hgpos, (Scene.ProjectionMatrix));
じゃない?
あと、視野座標系でのZ軸(とする軸)と、画面に表示されているポリゴンが交差しているかどうかの
判定をして、交差するすべてのポリゴンの中から、一番近いポリゴンを選ぶ処理が必要か。
- 94 :
- ごめん、間違えてたよ・・・_| ̄|○
投影行列の逆行列と、ビュー行列の逆行列を得て、ビュー行列->投影行列の順で乗算して
得られた行列に2Dの座標を突っ込むんでした。
だから、この順番で演算すればいいはず。
Hgpos:=NowTransform(Hgpos, NowInvMatrix(Camera.WorldMatrix));
Hgpos:=NowTransform(Hgpos, NowInvMatrix(Scene.ProjectionMatrix));
- 95 :
- いろいろやってみました。
んで表示は出来るようになったのですが、どうも位置が合わないです・・
ソースUPしたので、もしよろしければ見てみてください。
お願いします。
http://gamdev.org/up/img/827.zip
- 96 :
- ついにWindowsServer2003もタダで使えるぞイヤッホー!
このスレの半分を費やした問題もやっと解決
タダで使えるWindowsServer2003
http://pc5.2ch.net/test/read.cgi/win/1085833637/
- 97 :
- なんとなくそれっぽい感じになりますた、根本的に違うかも・・
// クライアント座標から-1.0〜1.0に変換
half.X := (ClientWidth div 2);
half.Y := (ClientHeight div 2);
pos.x := ((pos.x - half.X)/(ClientWidth));
pos.y := - ((pos.y - half.Y)/(ClientHeight));
//適当にそれっぽい値にする
pos.x := pos.x * ((1+pos.Z));
pos.y := ((pos.y * Scene.FovH)*(1+pos.Z))/2;//
// プロジェクションマトリクスで座標変換します。
pos:=NowTransform(pos, NowInvMatrix(Scene.ProjectionMatrix));
testFigure2.Figure.TopFrame.SetTranslation(Camera ,pos);
これで適当なZ値で2点を取ってその直線に交差する平面を探せば良いのかな?
DirectXにD3DXIntersectって関数があるらしいけどQDの場合は自前でやるしかないのかなぁ・・
- 98 :
- >>97
なんたらプレーンを使うんだ。
- 99 :
- Clootie使えねぇかなぁ
- 100read 1read
- 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
スーファミのプログラム (383)
【初心者】スレを立てる前にココで質問を【Part24】 (294)
ゴスロリのゲームつくろうよ (218)
Tonyu(豆)でゲーム製作-2- (937)
サッカーゲームの作り方教えろ (146)
delphiでMMO (152)
--log9.info------------------
【サントラ】音ゲー関連CD総合スレ Disc 15 (311)
【CS】GuitarFreaks&DrumMania 60【ギタドラ】 (442)
REFLEC BEAT lime lightは何故大失敗したのか? (201)
☆12のEX HARD曲の数だけ文字が打てるスレ (193)
次スレ 発狂BMSスレ60.5 (539)
Ryu☆のことについて語るスレ Part10 (432)
IIDX SP10のEXハード埋めに苦しむスレ (118)
【ギタフリ】まずP→G→G→Pとする人のスレ【ベース】 (196)
うちさぁ、音ゲーあんだけど、やってかない? *7 (654)
【Xbox360】BOOM BOOM DANCE【Kinect】 (210)
【全機種可】フルコンしたらageるスレ 4クレ目 (154)
そろそろLincleの最良曲決めようぜ (804)
安価で絵を描くスレin音ゲ板 十二枚目 (396)
PON総合スレ (685)
【ギタドラ】GuitarFreaks&DrumManiaスレ143【V8】 (946)
自分の葬式で流してほしい音ゲー曲 (420)
--log55.com------------------
【チラシより】カレンダーの裏738【大きめ】
【TV】テレビネタ1568クール
【もう副菜とか】トイロ*イロ273【作りたくないんで】
育児している奥様(IDなし)1999
皇室御一行様★part3568
■■芸能有名人の噂2393■■
【23区】東京に暮らす奥様 Part92(ID梨)【都下】
リアルでは言えない話 253
-