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

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

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

随時スタッフ募集
0653名前は開発中のものです。04/08/28 18:57ID:bzzoU0Sk
喪装中 ◆eJILq.TeQ6さん、シナリオ考えるだけなら誰でもできるし、パクってもいい
意見言うのは簡単です。あなたがしている事は企業でいえば、モニターに近いんじゃないんですか?
やはりMMOを作るにはプログラムを覚えつつ、アルゴリズムを考えるのが先決です。でないと、
絶対企画倒れになりますよ。やっぱりプログラムの勉強だけはしといたほうが・・・
0654653 ◆DeUsmjHgh2 04/08/28 18:59ID:bzzoU0Sk
でも、こんなに批判されてもあきらめないあなたもすごいと思いますけど
0655名前は開発中のものです。04/08/28 19:14ID:eDMt2ErC
>>652
正論だけど、別に作りたいって言って作り始めちゃったんだからいいじゃん。
能力なければ完成しないだけの話だし。
0656名前は開発中のものです。04/08/28 19:19ID:ixA6oawW
1がプログラムを覚える必要は無いの
だって1はプログラマじゃないんだもの
大事なのは、〜〜こんな事はプログラムできますか?
についての返答を理解して、もしダメな時には
別のアプローチを考え付くことだと思うの
0657 ◆DeUsmjHgh2 04/08/28 19:27ID:bzzoU0Sk
プログラムができなくても、アルゴリズムは考えないとね
0658名前は開発中のものです。04/08/28 19:33ID:NdaTH3uy
プログラムの知識が全くなく、自分の決めた設定だけを垂れ流し、
受け入れられなかったら捨てぜりふのような煽りを入れる。
監督に必要なカリスマを全く備えていない>>1に監督の資格はないと思うが。
ゲーム作りのために何か努力をしていると言う真摯な姿勢が、
プログラムの基礎を学ぶと言うことで少しでも認められれば、もっと味方が増えると思う。
まあ、クラスのリーダーにすらなれないヘタレ厨房には、無理な話か。
「監督って口出しするだけで楽でいいよな」と思っているなら、
口出ししたって人がついてきてくれなければ意味がないと言うことを肝に銘じておいては?
人の上に立ちたければ、どうすれば人がついてくるかをまず考えろ。
努力もせずにふんぞり返っている一言居士について行く人間がいるか?
065919104/08/28 19:46ID:2DoP7nCI
>>652
完成するわけがないのはみんな解ってるだろ。
でも>>622みたいにMMO作りたくてプログラムの勉強するのは有りじゃネーか?
本当にMMO作れる所まで行けるかは本人次第だがな

>>1いじめは御自由にドゾー
0660名前は開発中のものです。04/08/28 20:03ID:oTBAwETI
いまさら>>1にマジレスされてもな
0661名前は開発中のものです。04/08/28 22:00ID:GF8dA7Fw
>>659

いや、俺が言いたいのは

「オフラインゲーム作るスキルもノウハウもないのに、
いきなり『オンラインゲーム作る』なんてのは無謀なんじゃないか。」
ってのと、
「『どうせ完成しやしない』って割り切ってまでプログラムの勉強しようしてるのに、
いくらなんでもこんな取っ掛かりにくい所から始めんでも・・・」
ってことが言いたかった。

この中にもスキルある人いるみたいだけど、そういう人に向けて言ってるわけじゃない。
まったくの初めてで殆ど>>1みたいな状況の人に向けて言ったわけだ。

そんな奴が何の知識もないのに、『MMO作る』とか言ってること自体、おこがましい。
どうせ時間の無駄になるんだからやめとけってこった。
0662名前は開発中のものです。04/08/28 22:02ID:GF8dA7Fw
捕捉:少しでも経験を糧にして自分のスキルアップを計ってる人を、
    貶めてるわけじゃない。そういう人は頑張ってほしい。超頑張れ。
0663名前は開発中のものです。04/08/28 22:24ID:+Qkqu11T
で、639のは多人数に対応してんの?
クライアント二つつなげたら落ちたんだけど。
俺も鯖とクライアント一対一のチャットなら作れたんだけど
複数クライアントでつなぐにはどうすればいいのか分かんなくて停滞中。
066419104/08/28 23:04ID:2DoP7nCI
>>663
そういえば多人数対応についてチェックしてなかったな。
>>639のソースコードは基本的には多人数対応になってるが。
client_list::list_no_soc(SOCKET ksoc)の関数がヨロシクないな
IPによってソケットの区別を行っているので、
ローカルで複数クライアントを起動するとエラーでる。
ソケットを直で比較すれば多人数OK。
 for(int n=0;n<MaxClient;n++){
  if(flag[n]!=0){//ソケット有り
   if(soc[n] == ksoc){//同一ソケット
    return n;
   }
 }
 return -1;
こんな感じだな。別にユーザー情報管理しないなら
Client_Read(SOCKET ksoc)でおとなしく引数のソケット使えばイイな。

で、>>663の悩みだが
サーバーでlistenしたソケットとacceptでクライアントと開通したソケットが別物なのは解っているかな?
クライアントが来るたびにacceptしてやって、戻ってくるソケットを保存しておけば良い。
そのソケットで読み書きし放題。
0665名前は開発中のものです。04/08/29 00:04ID:zqklFQWw
スキルがあれば趣味でMMOを作ろうとは思わないんだよな
0666名前は開発中のものです。04/08/29 00:41ID:jvu+T+oT
オフラインの延長で作れる(完成という意味でなく)と思ってるなら
やっぱり辞めといたほうがいい
0667名前は開発中のものです。04/08/29 00:46ID:koAj9KyF
う〜ん、自称上級者ってすぐそう言うよね
MMOがRPGになっている場合もある(RPGはデバッグが大変だから作らない等)
作りたくないものを作らされるよりも
作りたいものを作った方がいいと思うけどね
どうせ趣味なんだし
066866304/08/29 00:50ID:FhBg8n4l
>>664
どもです。
なんとなくわかってきたような気がする…
ちょっと改造してみます。
0669名前は開発中のものです。04/08/29 02:09ID:DGL19yfC
>MMOがRPGになっている場合もある(RPGはデバッグが大変だから作らない等)
言葉の使い方も変だし意味を和訳しても理論メッチャクチャ
MMOのデバッグと調整はオフラインRPGのそれこそ数百倍の労力がかかる。
βテストがなんのために行われてるのかと。

>クライアントが来るたびにacceptしてやって、戻ってくるソケットを保存しておけば良い。
>そのソケットで読み書きし放題。
あれ、Listenって複数ポートで受け付けできるんだっけ?
0670名前は開発中のものです。04/08/29 02:14ID:DGL19yfC
完成は絶対に無理。それを分かって勉強するなら良い

と言っておく

>作りたくないものを作らされるよりも
>作りたいものを作った方がいいと思うけどね
作っていると言える段階に至るまでかなりの労力と技術が必要。
0671名前は開発中のものです。04/08/29 02:17ID:koAj9KyF
結局
スキルが上がるとつまらないものしか作れなくなるんだね
067219104/08/29 02:25ID:gmM1BDgf
>>669
Listenするのは一つのポートだな
複数ポートで待ち受けしたいならListen何回もしないと無理
たぶん>>669は一つのポートに対して一つのコネクションしか張れないと勘違いしているではないかな
sockA = accept (sockB, &addr, &addrlen) ;
サーバーサイドでlistenしてあるのはsockB
実際にクライアントとの通信で使用するのはsockA
sockA != sockB
sockBは常に一つだがsockAは繋いできたクライアントの数だけ生成される

説明下手でスマン
067319104/08/29 02:50ID:gmM1BDgf
スキルがアル程度上がってくると自分が作ろうとしているものに対する
コスト計算が的確に出来る様になってくる。(技術的難度とか時間とかネ)
そのぶんコストの割りに見返りが少ないと制作始める前に解ってしまうと
なかなか制作に踏み込みにくくなる傾向にはあると思う。
そういったコスト計算の上で完成は無理とか無謀とか言うアドバイスは正しいと思う。
やらなきゃ絶対にできないが地道にやれば出来るかもしれない。

石の上にも三年ってあるだろ、一日2時間3年間プログラム書いてみろよ。
2*365*3 = 2190時間だぜ
例え0から始めたとしても今の俺よりハイレベルのプログラマーになってるだろ。
3年が短いと感じるか、長いと感じるかは人それぞれだがナー

ショートカット無しという事実と比較的簡単にヤメルという選択ができてしまうのが残酷な現実だが…
0674名前は開発中のものです。04/08/29 02:57ID:MI2X9faJ
>>669
MMOの製作に関わった経験ありならもうちょっと情報プリーズ

>>670
皆MMOの作成に挑戦してるわけだから、そんな煽りは意味ないよ。
仮に挫折しても途中経過で得るものはあると思うし。

>>672
その説明で大丈夫だとおもう。
そろそろトリップつけたほうが良いのでは?
0675名前は開発中のものです。04/08/29 04:54ID:3YyODhJJ
クライアント
http://gamdev.org/up/img/043.zip
サーバ
http://gamdev.org/up/img/044.zip

一応チャットができるまで
作ってて思ったんだが単純なチャットの延長で作ろうとすると
過去のデータが新しくログインしたユーザーに反映されないね
蓄積させるにはやっぱりログインが必要ということで
過去ログが記憶されるチャットに挑戦中

>現在の課題
>IDとPASSWORDを鯖に保存して、数十人でチャットができるシステムを組んでみそ。
>これができなきゃ話にもならんですたい。
http://gamdev.org/w/?%5B%5BMMORPG%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%BF%A4%A4%5D%5D

これもこっちのスレでの扱い?
067619104/08/29 06:05ID:gmM1BDgf
>>675
なかなか良い感じだな。
しかし残念ながら>>632に書いたとおりDelphiは知らないのでプログラム的な助言はあんまできんな。
過去ログをサーバーで保存→クライアント接続後にログ送信って流れになると思うが
過去ログ保存容量の限界決めとけよ。
限界値決めておかないと鯖接続時に10M過去ログダウンロードとかあり得るしな。
過去ログ保存容量オーバーの分はファイルにログとして保存するとなお良し。

>これもこっちのスレでの扱い?
このスレからの出題じゃないが、別にうpしてくれれば見るぞ
その課題のポイントは通信プロトコル考案だな。
小さいチャットなら文字列そのまま流してもなんとかなるけど、
これだと発言と他の通信(ログイン情報とかのネ)の区別付けないといけないからな。
そこの所工夫してミソ。
ここまで出来れば自分でチョットしたネットゲームは作れるからガンバ
0677名前は開発中のものです。04/08/29 10:57ID:DGL19yfC
>>672
あーなるほど。netstatで見たら同じプロトコルでコネクションが複数張られてるとき
こちら側のポートはたくさん開いてるけど向こうのポートは全部同じだな
>>674
>MMOの製作に関わった経験ありならもうちょっと情報プリーズ
669で「βテストがなんのために行われてるのかと。」って言ってるんですが。
>仮に挫折しても途中経過で得るものはあると思うし。
670で「分かってて勉強するならいい」って言ってるんですが。
日本語嫁
0678名前は開発中のものです。04/08/29 13:48ID:6JhXyywR
>>677
>MMOのデバッグと調整はオフラインRPGのそれこそ数百倍の労力がかかる。
>βテストがなんのために行われてるのかと。

これは677の憶測ということでいいですね?

とっくに「分かってて勉強するならいい」って流れなのですよ。
過去ログ嫁
0679名前は開発中のものです。04/08/29 14:13ID:RVXvDyrN
まあ完成させるってのが一番難しくて大事では、あるけどな。
0680名前は開発中のものです。04/08/29 14:33ID:uVKQmkvz
何が大事かは他人が決めることじゃない
0681名前は開発中のものです。04/08/29 14:34ID:aPYcshfX
>>680
0682名前は開発中のものです。04/08/29 14:36ID:uVKQmkvz
おおごとって読ませたかったのか?
0683名前は開発中のものです。04/08/29 15:03ID:zhyfUvr0
いいか君たち。完成できるかどうかは、技術うんぬんより、
まずヤル気。とにかくヤル気。最後までのヤル気だ。

技術のあるつもりのやつは、調子に乗ってるので、ちょっとやるが、
 「先が見えた」とか「オナニーしてくる」とか言い出して、すぐやめる。
技術のないやつは、常に「技術が無いから勉強勉強」と思っていて、
 時間をかけながらも、シコシコシコシコシコシコシコシコと積み上げて、ついには完成させる。

ちょうど、ウサギとカメみたいなもんだ。

「ヤル気」 これだけあれば、必ず完成できる。
プロのおれがいうんだから、間〜違いないっ。
ガンバレ!タチアガレ!オレノカメ!サァイマボッキダ!
0684名前は開発中のものです。04/08/29 15:07ID:uVKQmkvz
完成が大事なんて言ってる間は完成しないもんだ
0685名前は開発中のものです。04/08/29 15:22ID:xqDBaC7p
いや、感性が大事だ。
0686名前は開発中のものです。04/08/29 15:25ID:Yr1ObYcQ
いや、時間が大事だ。
0687名前は開発中のものです。04/08/29 15:26ID:uVKQmkvz
完成が大事というのは裏を返せば目標を設定できていない
0688名前は開発中のものです。04/08/29 15:33ID:RVXvDyrN
そんなに必死に言い訳しなくても"( ´,,_ゝ`)
完成させるのが大事とは言ったが、おまえらにやれとは言ってませんよ。
0689名前は開発中のものです。04/08/29 15:42ID:xqDBaC7p
金が大事だ。金が目的だ。金クレ。
0690名前は開発中のものです。04/08/29 20:52ID:DGL19yfC
>>678
俺は>>666>>667あたりの流れを受けて
「山に登る努力自体を求めてるならさぁ登れ。
頂上に到達することが目当てならやめとけ。」って言ってるだけ。

>これは677の憶測ということでいいですね?
お前はつまり「MMOの開発に関わった事が無いなら無理とか言うな」
とか言ってるわけか。そりゃ実際に関わったことのあるやつなんていないだろ
0691名前は開発中のものです。04/08/29 23:26ID:6JhXyywR
>>690
>MMOのデバッグと調整はオフラインRPGのそれこそ数百倍の労力がかかる。

「らしい。」「ようだ。」「と聞く。」あたりを付けたらよろしいかと。
0692名前は開発中のものです。04/08/29 23:46ID:i6jcMaVJ
なぜ数百倍なのかと問いたいな。
オフラインと基本的に変わらないはずだけどな。
増えてもせいぜい2倍になるくらいだろ。
ソフトウェアというものを知らないヤツが騒ぎすぎ
・・ってまぁ騒ぐのは勝手だけど、
プログラマは素人にあんまりふりまわされんなー
0693名前は開発中のものです。04/08/29 23:55ID:brZ4qVGW
オフラインはぶっちゃけどんなバランスでもok
MMO(と言うかMassiveでなくても多人数)は
人と人の間のバランスで公平不公平だけじゃなくて
それこそ製品寿命に直結するデリケートな問題でないか?

何年も運用しながらゴールを見せたゲームが存在しない以上、
調整には数百倍程度の労力はかかるのかもな。
あと、これはプログラマ関係なさげ。

デバッグはしらね。
0694名前は開発中のものです。04/08/30 00:07ID:646WBQQS
・・それってゲームバランスの話だよな。
ここで製品作るんだっけ?

むしろここなら、ゲームバランス悪いほうが食いつきイイんじゃねーの?w

しかも世の中には、数学とかね、統計学とかね、便利なものがあるんであって、
数百倍労力かけないとバランス取れないようなアホは、
ゲーム製作の要人になんかなれないから、安心してね。
0695名前は開発中のものです。04/08/30 00:34ID:WEuNCWvO
数学でも統計学でもいいけど、それって言ってみただけってやつ?
バランス取れないのがアホみたいな言い方してるけど、
うまくバランス取れてる例のひとつすら上げてないようにみえるんだけど。
0696名前は開発中のものです。04/08/30 00:43ID:YIrztEA+
なあ、完成させるだけが目的で、
MMORPGを「作る意味」あるの?
現状に不満があったり、素晴らしいアイデアを実現したり、
好評価を得るために作るんでしょ
本末転倒もいいところなんじゃないの?
0697名前は開発中のものです。04/08/30 00:44ID:ERs1bP5f
MMORPGに関する技術的な会話は し な い の か ?
0698名前は開発中のものです。04/08/30 00:46ID:646WBQQS
市場原理ってのをわかってないね。
君のようなかたに、小学一年生の算数から、手に手をとって、
ひとつひとつ教えて差し上げるほど、おれひまじゃないんで。
本屋で経済学の本買って勉強しろよ!
0699名前は開発中のものです。04/08/30 00:48ID:xoQgjUs0
ちょっと前までいい感じだったのに・・・(´・ω・`)
070019104/08/30 01:01ID:E5/Oo7Jb
MMOの一般論について語り合うスレじゃーネー気がするがナァ
>>693はどちらかというと対人ゲームに対する理想って気がするな。
ぶっちゃけ、オンラインでもMMOでもどんなバランスでもokだと俺は思うよ。
面白いかどうかは別の問題だし、妄想企画よりは喰える。

>>696
今まで出来なかったことができるようになるのはイイぞ

>>697
ハイレベルな技術的話がしたいなら「MMORPGを作ってみたい」の方がイイかも
まぁ、ネタがあんなら書いてくれよ。
0701名前は開発中のものです。04/08/30 01:05ID:nCGUtJ18
>>696
>現状に不満があったり、素晴らしいアイデアを実現したり、
>好評価を得るために作るんでしょ

それは完成してからの話なんだよ、ボーヤ。
0702名前は開発中のものです。04/08/30 01:09ID:E/PuslaV
こうなってしまったらこのスレも終わり。
喪装中がいた頃が楽しかったよ。
0703名前は開発中のものです。04/08/30 01:13ID:QwkEnVgV
まぁ確かに作るだけなら糞バランスバグだらけでもいいわけだし
それなら数百倍にはならんな。ただオフラインの延長だとは思わないし
(・∀・)mmo!とか見る限りマトモに運営するためには数倍は必要だと思うが。

いい加減スレ違いだし肯定派も否定派も
「ここは低レベルな板だから仕方が無い」とでも思って
議論を中止してくれ。俺がここまで引っ張っちまったわけだけどな
0704名前は開発中のものです。04/08/30 01:25ID:nCGUtJ18
え、ここ何スレ?
0705名前は開発中のものです。04/08/30 01:35ID:bwCwbHHl
このスレではバランスやデザイン、それに時間や金銭的コストに関する話は無しで、
MMOらしきものの完成に挑戦するスレってことでいかないか?
あくまで挑戦だから、駄目、無理、という煽りは放置の方向で。
0706名前は開発中のものです。04/08/30 01:40ID:sFKshRVA
まぁ
素人にMMOが簡単に作れてしまったら
困る人たちがいるってことで・・・
0707名前は開発中のものです。04/08/30 01:44ID:LEXTpMn1
>>696
上のほうのレスの(5)が多かったしな。
勉強目的であって面白いゲームとしての完成は必ずしも目的とならない。
cgi、プロトコルなんかのネットワークの知識がずいぶんつくと思った。
なにより建設的な流れであればこのスレにとってはそれで良くないか?
0708名前は開発中のものです。04/08/30 01:45ID:WEuNCWvO
>>698
オレが小学生並みの知能でも別にかまわないけど、
じゃんけんのような完璧なバランスを達成したゲームが
存在しない以上、解を導き出す事は専門家ですら
実現していないってことになるわけだけど、
646WBQQSは完璧なバランスを達成できるんだよね?
0709名前は開発中のものです。04/08/30 02:03ID:646WBQQS
>>708
放置対象なのでお答えできません。
そんなあなたに素敵な言葉をひとつプレゼントしましょう。
「完璧にこだわってると、何もできないですよ」


ついでなので解決方法も書きますと、まず経済学の本をよく読んで、
そのあと、あなたの言う「完璧なバランス」とはなんなのか、
その厳密な定義を行ってください。そのあとその実現方法を
論理的に数学的に検証してください。

この話はもう終りね。他スレでやって。
0710名前は開発中のものです。04/08/30 02:06ID:sFKshRVA
>>709
そろそろ化けの皮が剥がれてきたなw

オマエゲーム作れないだろw
0711名前は開発中のものです。04/08/30 02:08ID:YIrztEA+
ゲームとしての成立を目指しもしないなら
機能サンプル以上の何者でもない
段階的に学習しながら進めるにしろ、
「完成」だけを目指すのは意味がない
デザインはバランスとは違うんだぜ、ボーヤ。
0712名前は開発中のものです。04/08/30 02:15ID:bwCwbHHl
>>711
まずは機能サンプルでいいじゃないか。
0713名前は開発中のものです。04/08/30 02:19ID:LEXTpMn1
>>709
何で経済学の話なんか出してるんだ?ゲーム理論のこといいたいのか?
0714名前は開発中のものです。04/08/30 02:29ID:YIrztEA+
では目標は「ゲームの完成」ではないよな
基底モジュール作成だろう
だとしても
プロトコル設計もしないでなんとなくチャット作るのは
後々苦労するぞ
0715名前は開発中のものです。04/08/30 02:37ID:646WBQQS
>>714
問題意識が一番大きな、君が設計するのが一番いいよ。
0716名前は開発中のものです。04/08/30 05:26ID:vxLJl/mb
もうそろそろ夏休みも終わりか
0717名前は開発中のものです。04/08/30 11:39ID:QwkEnVgV
何が問題かって超初心者しか鍛えてやる事ができないってことだよな
0718名前は開発中のものです。04/08/30 13:29ID:Dt5WQPYM
うはwwwwwおkwwwwwww
0719名前は開発中のものです。04/08/30 16:33ID:3B3VdziH

MMORPGを作ってみたい
03/08/26(19:07)〜04/08/28(13:54)で676

みんなでMMORPGを作りましょう
04/08/13(20:08)〜04/08/29(06:05)で676

このスレ早いな。
0720名前は開発中のものです。04/08/30 17:04ID:J9w2Y0n4
マジレスするとネタスレの進行は早いんだよ
0721名前は開発中のものです。04/08/30 17:16ID:lRBMB8Db
ネタスレか
実際に作ってるのは居ないのか
072266304/08/30 17:26ID:XVFqp4fH
作ってるよ。何時できるか知らないけど。
そして誰もこんなヘタレに期待してないだろうけど。
0723名前は開発中のものです。04/08/30 17:28ID:lRBMB8Db
>>722
お ちゃんと居たのか
実際に作ってるだけ偉いと思うので、頑張って下され
0724名前は開発中のものです。04/08/30 17:41ID:ya+0eROQ
本気で作るなら2chなんかでやらないね
0725名前は開発中のものです。04/08/30 17:49ID:Dlo0x8eQ
>>724
んなこたない。
0726名前は開発中のものです。04/08/30 18:01ID:EUFjVpQY
191せんせー、MORPG用のDLL形式の通信ライブラリを作ろうと思うのですが
ライブラリ側からアプリケーションへのイベントの通知は
どういった方法を使うのが良いのでしょうか?
対象は今のところ、C言語でのwindowsアプリケーションを考えています。

今までに考えたものでは、
(イベントが起こった時に)
・ウィンドウメッセージをアプリ側から指定されたウィンドウに飛ばす
・アプリ側から指定されたコールバック関数へ引数に色々くっ付けて呼びだす
または
・毎回アプリ側から、ライブラリ内にあるイベントをチェックする関数を呼び出させて、
返り値でイベント状態を返す

があります。
私この度初めて一般向けのライブラリというものを作ろうとしているので、
全くとんちんかんで他人に理解されないものになってしまうのではとひやひやしております。
なので、こんな仕様はおかしいよ、とか、一般的にはこういう方法が使われるよ、といった指導を希望します。
最後になりましたが、私はCしか使えずまともなプログラムは仕上げたことがないレベルです。
0727名前は開発中のものです。04/08/30 19:01ID:nCGUtJ18
>>711
なんでそうねじれた解釈したがるのかね。
アプリとして完成させるのが重要っていってるんでしょ。
動かなきゃゲームとしての成立もクソもないよ。
0728名前は開発中のものです。04/08/30 19:47ID:QwkEnVgV
>>726
俺は191じゃないが、
・ウィンドウメッセージ→応答遅すぎじゃないか?
アプリケーション側の実装もややこしくなりそう
・コールバック→これが一般的かな
・チェック関数→他の処理で重たくなってる時は応答が遅くなってしまいそう
072919104/08/30 20:28ID:E5/Oo7Jb
オブジェクト指向ってのが非常に便利なんで、特に制限がなければC言語で作ってるヤツは
少し勉強してC++でクラスを使いこなせるようになるとイイと思うぞ。

>>726
>ウィンドウメッセージ
この案だとウィンドウプロシージャーをライブラリ利用者が書かないといけないから駄目ぽ
>コールバック
>>728の指摘通りコレが使いやすいだろう。
リスナークラスつくって渡すって方法を俺はやったな。
Cでやるなら各イベントごとの関数ポインタを構造体にまとめて
その構造体をライブラリ関数で登録してやると良いな。
>チェック関数
定期的にチェックするアプリケーション構造をライブラリ使用者に
押しつける事になるからやめた方がよろしいかなぁ

>MORPG用のDLL形式の通信ライブラリ
ってことだけど、これが前提ならライブラリの通信部分は
マルチスレッド+イベントオブジェクトを使った方が良いな。

>一般向けライブラリ
MORPG特化ライブラリを作りたいのか?
それとも、MORPG特化通信ライブラリを作りたいのか?
まぁ、需要があるのはMORPGツクールなわけだが…
0730名前は開発中のものです。04/08/30 21:28ID:EUFjVpQY
お二方とも、返答ありがとうございます。
ウィンドウメッセージはやっぱりいくないんですね。
コールバックが推されているようなので、191せんせいのアドバイスを生かして作っていきたいと思います。
因みに、イベントオブジェクトというのは、WSAWaitForMultipleEvents系APIを使うもの、ということで良いのでしょうか。
これはシンプルそうで良いですね。今の今までselectを使おうと思っていたので良い助言になりました。

それから、「一般向けライブラリ」についてですが、これは私が今まで内輪で使うライブラリを作ってきたため、
それとは違う、という意味で使った言葉ではあるのですが。
実は191せんせいの言われるようなMORPG特化ライブラリを目標に作っていきたいと思っています。
通信以外の機能に、キャラクタ移動時の座標補間と障害物回避運動パスの生成を盛り込みたいんです。

そういえばネットワークRPGメーカー2000なんていうのが昔あったみたいですね。
残念ながらもう終わってしまったようで何も言えないけれど・・。
これだけゲムデブ板でネトゲスレが立ってるんだからほんとに需要ありそうですよね。
073119104/08/30 22:17ID:E5/Oo7Jb
>>730
>イベントオブジェクトというのは、WSAWaitForMultipleEvents系APIを使うもの
そういうことです。
俺はWaitForMultipleObjects使って通信イベントと通信スレッド終了イベントの両方を待機させてるな。

良い目標を持って頑張っているようだな。そのまま最後までガンバレや。
あと俺は先生じゃなくてチーターだから
0732名前は開発中のものです。04/08/31 00:28ID:6+TORdEW
では水前寺先生と呼ばせていただこうと思います。
0733名前は開発中のものです。04/08/31 01:17ID:2iIaRDnI
マルチスレッドなプログラム書くなら実際に複数CPU載った
マシンで実行/デバグしてみたほうがいいぞ。
単一CPU機ではめったに出ないバグがぼろぼろ出て楽しいし。
0734名前は開発中のものです。04/08/31 01:37ID:wCdLoFkM
>>733
それって本来OSレベルの問題なんじゃ
0735名前は開発中のものです。04/08/31 01:43ID:6+TORdEW
acceptしようとするとWSAENOTSOCKってエラーが出るんだけど、
これってどっちの問題なんでしょう?
送信側のソケットがおかしいのかなんなのかさっぱりわからんです。
うpしたら誰か見てくれます?
0736名前は開発中のものです。04/08/31 01:46ID:TdIjd0h5
>>733-734
int hoge;
thread1(){hoge++;}
thread2(){hoge++;}

を同時に動かすと1しか増えて無いかもって事でしょ。
実際はオブジェクトの同期とかで、こんな分かりやすいミスじゃ無いだろうけど。
073719104/08/31 01:54ID:pIiGswtF
>>733
複数CPUのマシンなんてさわったことないので
どんなバグがでるのか詳しく教えて欲しいな

>>735
うpしたら見るよ
073819104/08/31 02:15ID:pIiGswtF
>>735
良く見たらうpするまでもなく
テディベアかなんかに状況説明すれば解決しそうだな。
たぶん、不正なソケットを引数として渡しちまったってことだろ。
acceptに渡すのはlistenしたソケットだぜ。
073973504/08/31 02:23ID:6+TORdEW
>>737
すいません、うpしましたので見てみてください。お願いします。
VC6のプロジェクト丸ごとはいってますけど、
リンクとか切れてたら「wsock32.lib」追加するだけです。
ttp://gamdev.org/up/img/1132.zip

とりあえず622氏のやつコピペって少し改造して作ってます。
勝手に使ってすいません。ほとんど同じはずなんですけど、
何処が悪いのかわかんないです。
とりあえずAcceptまで行きたいのでsendとかrecvとかはまだまともに作ってないです。
鯖はポート入れないでそのまま起動してください。
見づらいと思うので申し訳ないですがおねがいします。
074073504/08/31 02:26ID:6+TORdEW
>>738
あれ、準備してる間にレスもらってました。
一応リスンソケット渡してるつもりです。
で、リスンソケット作って待ち受けるところまではエラーは出てない臭いです。
なので、何がおかしいのかな、、、と分からなくなってしまいました。
074119104/08/31 03:01ID:pIiGswtF
>>735
まー良くあるバグってやつだな。
DialogProc()ん中で
 TCPServer server(hDlg);
ってやってるだろ、コレが原因だな。
ローカル変数になっちゃってるから、毎回DialogProc()に実行が移ると
serverクラスが生成されて、returnと同時に破棄されとる。
よって、server.Init()の時のlistenしたソケットも捨てられてるな。
 static TCPServer server(hDlg);
 ↑のようにstaticつけて静的変数にしとけばok
074273504/08/31 03:43ID:6+TORdEW
>>741
どうもこんな遅くすいませんです。
できました。なんともお恥ずかしい限りです。
言われて見ればなるほど納得しました。
先はおそろしく長い…
074362204/08/31 12:58ID:1W6zrceB
BCCDevで開発(win)
>>642
3がどうにもこうにも出来ませんでした。
メッセージがちゃんと来ているはずのところで
CallWindowProcして、直接呼んでしまう処理になってしまいました。
助言お願いします。

>>643
見やすい!

時間と視力とコードの結晶
ttp://gamdev.org/up/img/1138.zip
質問
1.サブクラス化はしてあると思うのですが、メッセージが思うように
switchにひっかかってくれません。何が原因なのか、または注意点などお願いします。
(サブクラスでmsg処理しているサンプルが見つからなすぎ)
2.次のステップでは何をしたほうがいいでしょうか?

下のウィンドウでタブ押すと送信
受信は上のウィンドウで、8kぐらいまで保持化(古いのから消えていく、発言事には消えない!)
0744名前は開発中のものです。04/08/31 17:07ID:T35fpLCq
WSAAsyncSelectへ渡っているのはhwndですが、
実際にサブクラス化されてるのはhWndSendMsgではないのですか?
読み間違ってても許してね
074519104/08/31 20:09ID:pIiGswtF
>>743
>>744が言うとおりに渡してるウィンドウハンドルが違うな。
というか、>>642で書いた真意は2、3はクラス内部で処理ってことだ。
Init(HWND)の中でコッソリサブクラス化。そのサブクラス化したプロシージャーで通信処理をやらせれば、
呼び出し元のウィンドウにワザワザ通信処理を書く必要がなくなるからな。
通信担当プロシージャーがprivateなメンバ関数ってのがポイント

まぁ、少々レベルが高かったかもな
クラス内部でサブクラス化するときはプロシージャーを静的なメンバ関数として定義しなきゃいけない。
静的なメンバ関数から、本来のインスタンスを特定するのにSetProp()とかGetProp()を使う。
とか、イロイロめんどくさいな。でも便利

>次のステップでは何をしたほうがいいでしょうか?
とりあえず、受信の所の改造だ。現状だと一度の受信でメッセージが全部受信出来たと仮定してるだろ。
場合によっては分割して届いたりするからな。送信時に何バイト送ったかの情報も送信するようにして、
送信バイトと同じバイト数を受信したら、本来の受信後の処理をさせる。ってのが基本だな。
文字列素送りじゃー駄目だ。
0746名前は開発中のものです。04/08/31 22:24ID:XlUxaRqa
いつのまにか俺に聞けスレになってるんだな。
わざわざこんなスレでやらんでも・・・
0747名前は開発中のものです。04/08/31 23:13ID:T35fpLCq
良スレ
0748名前は開発中のものです。04/08/31 23:29ID:hg/ygmOZ
ていうか191以外にも答えられるやつはたくさんいそうなのに
191が答えないと満足してくれないふいんきになってるのがな
0749名前は開発中のものです。04/08/31 23:46ID:XlUxaRqa
きまったモジュール作ってるときはいいんだけど、ゲームとして組み立てていく時って
自分が作りたいイメージがないと、なにやっていいかわかんなくなるんだよな。で>>1に戻る。
煽ってるわけじゃないぞ、まぁガンガレ。
0750名前は開発中のものです。04/08/31 23:55ID:seKFT3kU
なんだ、こういう開発ゴッコがやりたかったのね
最初に言えよ
0751名前は開発中のものです。04/09/01 01:49ID:TBA+Y3JP
>>748
俺も191と同じぐらいのスキルはあるんだが、人のソースみるのめんどくさ。なのよ。
スキルアップには人のソースみたほうがいいのだがやる気になれん。
ほんと191は面倒見がよいし(少なくとも俺より)説明もよろしいんで出番なしですな。
0752名前は開発中のものです。04/09/01 10:35ID:A8Zc28Vq
まだログインやチャットで苦しんでるのですがちょっと質問させてください。

通信するときにソケットを使って接続するところまではできたのですが
たくさん接続したときにどの接続が誰なのか区別するのはどうすればいいですか?

これができずに履歴の保存で苦労してます。よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています