05/09/24 16:41:08 SuwAeEoS
ネットワークRPGを作れるようなソフトってありますか?
2:名前は開発中のものです。
05/09/24 17:10:56 UGCNNHQm
VS
3:名前は開発中のものです。
05/09/24 17:40:26 xEgDYVdH
あるのか?
知らんけど
4:名前は開発中のものです。
05/09/24 19:21:07 tFIprWQK
MHPみたいな名前のが無かったっけか?
5:名前は開発中のものです。
05/09/24 22:15:19 J5oxGrnT
>>4
ない
6:名前は開発中のものです。
05/09/24 22:19:13 tFIprWQK
PHIだったw
7:名前は開発中のものです。
05/09/24 22:56:27 J2roar/D
>>1
■ネットワークRPGメーカー2000
■発売元:アスキー
■価格:9800円
■問い合わせ先:アスキー
TEL 03-5351-8728
■動作環境:Windows 95/98/2000,MMX Pentium/200MHz以上(推奨PentiumII/300MHz以上),メモリ64MB以上(推奨128MB以上),空きHDD容量50MB以上
糸冬 了
8:名前は開発中のものです。
05/09/24 22:57:29 J2roar/D
リンク貼り忘れ
URLリンク(www.4gamer.net)
糸冬 了
9:名前は開発中のものです。
05/09/24 23:27:37 UGCNNHQm
>>7
それ、発売も中止のようだし、サーバーも動いてないような、HP調べたが
過去の製品リストからも排除されているようで、出てこなかった~~よ。w
10:名前は開発中のものです。
05/09/27 22:22:38 fJ8kPMi+o
MMOはやっぱりサーバーを先に作った方がいいのかな?
11:名前は開発中のものです。
05/09/27 22:46:38 /b0+bht7
1.ゲーム企画
2.素材を用意(ドット・音楽など)
3.各種サーバー
4.クライアント
この手順が良いと思いますよ~
12:名前は開発中のものです。
05/09/27 23:20:12 yn+0L+IC
素材を用意する前に、
クライアントのグラフィックスエンジンが動いている必要がある。
仮素材を用意するのなら、その手順でも構わないが…
13:10
05/09/27 23:47:59 SkI+GD38
どうも
難しそうだな~
頑張ってみる
14:10
05/09/28 16:27:20 9jNPEdSe
とりあえず、チャットから作った方がいいかな
15:名前は開発中のものです。
05/09/29 03:06:45 ToR8zilx
チャットが出来なきゃ話にならんですたい
16:10
05/09/29 17:46:52 gkIkra0I
>>15
そりゃそうだよなw
DOSプログラムとWINプログラムってどっちがサーバーにむいている?
個人的にはDOSの方がいいかなって思ってるんだけど
17:名前は開発中のものです。
05/09/29 19:55:53 CAD+EvmP
LinuXで
18:TCPサーバ基本1/3
05/09/29 22:35:37 LE7U2HkX
#pragma comment(lib, "wsock32.lib")//Winsock Library のリンクオプション追加
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PORT_NO 2500//ポート番号
#define MSG_SIZE 512//受信バッファサイズ
void ErrorProccess(SOCKET, char *);//エラー処理関数
int main(int argc, char * argv[]){
WORD wVerReq ;//WinSock要求Ver.
WSADATA wsadata ;//WinSockライブラリ情報
SOCKET s,sc ;//接続待ち受けソケット、通信用ソケット
struct sockaddr_in addr,addrc ;//サーバーアドレス構造体、クライアントアドレス構造体
char hello[] = "Hello!\n\"bye\"で終終了\n" ;//最初に送信する文字列
char msg[MSG_SIZE + 1];//文字列送受信バッファ
int ret ;//返値
19:WindowsのTCPサーバ基本2/4
05/09/29 22:36:55 LE7U2HkX
wVerReq = MAKEWORD(1,1);//WinSockライブラリの要求Ver.1.1
if(WSAStartup(wVerReq, &wsadata) != 0){printf("ライブラリ初期化失敗\n");return 1;}
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(s == INVALID_SOCKET) ErrorProccess(0, "socket()");
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET ;
addr.sin_addr.s_addr = htonl(INADDR_ANY); // 全てのインターフェイスを許可
addr.sin_port = htons(PORT_NO);
ret = bind(s, (struct sockaddr *)&addr, sizeof(addr));
if(ret == SOCKET_ERROR) ErrorProccess(s, "bind()");
ret = listen(s, SOMAXCONN);
if(ret == SOCKET_ERROR) ErrorProccess(s, "listen()");
ret = sizeof(addrc);
sc = accept(s, (struct sockaddr *) & addrc, &ret);
if(sc == INVALID_SOCKET) ErrorProccess(s, "accept()");
closesocket(s);
printf("Cliant Address : %s\n", inet_ntoa(addrc.sin_addr));
printf("Cliant Port : %hu\n\n", ntohs(addrc.sin_port));
ret = send(sc, hello, (int)strlen(hello), 0);
if(ret == SOCKET_ERROR) ErrorProccess(sc, "send()");
20:WindowsのTCPサーバ基本2/4
05/09/29 22:37:56 LE7U2HkX
do{
ret = recv(sc, msg, MSG_SIZE, 0);
if(ret == SOCKET_ERROR) ErrorProccess(sc, "recv()");
msg[ret] = '\0';
printf("受信 : %s\n", msg);
ret = send(sc, msg, (int)strlen(msg), 0);
if(ret == SOCKET_ERROR) ErrorProccess(sc, "send()");
printf("送信 : %s\n", msg);
}while(strcmp(msg, "bye"));
closesocket(sc);
WSACleanup();//ソケットライブラリの終了処理
return 0;
}
21:WindowsのTCPサーバ基本4/4
05/09/29 22:38:30 LE7U2HkX
//エラー処理関数
void ErrorProccess(SOCKET s, char * api_name){
printf("Error Area = %s , Error Code = %d\n",api_name, WSAGetLastError());
if(s != 0){closesocket(sock);s = 0;}
WSACleanup(); //ソケットライブラリの終了処理
exit(1);
}
22:名前は開発中のものです。
05/09/29 22:40:07 LE7U2HkX
UDPの基本は、暇があったらうpローダでうpする
23:名前は開発中のものです。
05/09/30 18:05:54 SLqzHEJo
Windows? UDP?
藻舞ら、いつの時代の人間じゃ?
Linuxを使え
24:10 ◆pF5cbfQoT2
05/09/30 18:51:13 6eJVvR2p
>>22
ありがと
助かるよ
>>23
windowsだよ
windowsで作りたいんで
通信はUDPにする
25:名前は開発中のものです。
05/10/01 13:53:50 GUmXustT
UDPを使う利点がよくわからん。
少なくともUDPオンリーではゲームはつくれないよ
どうしても厳密な同期が必要なプロトコルがでてくるんだし。ログイン処理とかね
まずUDPが高速であるとされるファクターの最たるものがパケットロストしたときの再送の
リクエストが行われないという事だろうが、ゲームの場合はパケットが未到達であれば
ゲームはとまってしまうか情報不足の状態で補完していくことになるだろう、
これはTCPが再送のリクエストをしていてパケットがまだ届かないのと何も変わらない
状態じゃないのか。ユーザーに見える部分で何も変化がないわけでこれじゃ意味がないだろ。
加えて、パケットそのものの大きさが小さいということもあるだろうが、ゲームはものすごく小さな
パケットを連続的にではなく比較的穏やかな頻度で投げつけるので動画ストリームとかと比べて
大した差異にはならないと思うのだ
たまにパケットが届かなかったり、たまに順番が狂ってたりする場合を考慮して処理を書いたり、
または書き忘れて低頻度で起こるこういう現象に起因するバグに半日悩んだりするよりは、
普通にTCPを使うことを俺はおすすめする。
反論をたのむ
26:名前は開発中のものです。
05/10/01 14:16:34 GUmXustT
最初につくるのは送受信用に定義した特別な構造体をシリアライズして送受信する通信レイヤだな
ストリーミングすることは未来一切あり得ないからこれでいいんだ。
正直チャットをつくれとかそういうのはどーでもいい。
ちゃんとデータが行き来するのが確かめられれば必要なし。
27:名前は開発中のものです。
05/10/01 16:12:17 UQfKbq0R
文字入力ルーチンや文字表示ルーチンが既にあるとか
簡単に作れるなら、チャットの実装も悪くない
動作が見て分かるからね
プログラムを知らない人も説得しやすいし
28:10 ◆pF5cbfQoT2
05/10/01 19:24:24 Y+BAe+9H
>>26,>>27
なるほど
とりあえず送受信ができないとな
fd_setとselect関数を使って作ってみるかな
29:名前は開発中のものです。
05/10/01 22:28:59 rWkQ4tzq
チャットが基本だろ
/logout /dice /tellなど特殊なコマンド使いまくれる
30:10 ◆pF5cbfQoT2
05/10/04 22:17:25 MWidbNs2
複数人チャットだと
結構難しいな
31:名前は開発中のものです。
05/10/05 18:44:52 81Ajv+Fy
おいおい
このままだと>>10の野郎進まねーぞ!!
オレは無理だが、誰かアドバイスでもサンプルでもいいから教えてやれ!!!
32:名前は開発中のものです。
05/10/06 05:45:55 B/FQ+W/o
1VS1のチャットはソケットの同期で簡単なんだけど
1VSnになると非同期が必要になるからね
あと、作成プログラムが2つ必要(サーバ&クライアント)
ってのが、以外にめんどい
2つ揃わないとテスト出来ないってのが敷居を高くしてる
33:10 ◆pF5cbfQoT2
05/10/06 07:03:35 zNNEtLhT
>>32
そうなんだよな
でもこれが作れないとオンラインゲームなんて100%つくれないからな
34:名前は開発中のものです。
05/10/06 07:08:52 cRcXPgR2
アドバイスっつってもなぁ・・・
何故>>10がUDPに拘ってるのかがわからんと何とも言いようが無い。
UDPでMMOってのが如何に難しいかってのは、解っていてのことなんだろうか…。
35:名前は開発中のものです。
05/10/06 07:10:26 cRcXPgR2
Σ( ゚д゚)
ってお前さんも朝早いな
36:10 ◆pF5cbfQoT2
05/10/06 16:16:28 EoIY9AKc
いや、別にUDPじゃなくてもいいんですよ。
ただ単に高速だからです。
でも、アカウント登録やログイン処理はTCPじゃないとダメだし。
UDPはキャラの座標とか少しくらい消えてもいいような部分にしか使いません。
37:名前は開発中のものです。
05/10/06 16:17:10 B/FQ+W/o
UDPってルータ越えが難しいんじゃない?
38:名前は開発中のものです。
05/10/06 17:20:03 ZL+hX5KE
TCPに限定して、その分高速化は送受信データの切り詰めで補った方が簡単確実ってこと?
39:名前は開発中のものです。
05/10/06 17:30:16 O+9CjehL
>>38
普通はそうだなぁ。
UDPとTCPを混在させると
UDP<>TCP間の同期の取り方とか
UDPの部分は、どうしてもクライアント主導の
通信にならざるを得ないから、イレギュラーや不正の
対処方法とかプログラミング的にも難度が高くなるしな。
40:名前は開発中のものです。
05/10/06 17:33:18 EeRPt6Ud
まずは確実に動くものをTCPで作ってからUDPに対応させりゃいいじゃん。
41:10 ◆pF5cbfQoT2
05/10/07 07:30:12 NvWZ9rBj
じゃあTCPでいくかな
ってかチャット作りTCPでやってたw
42:名前は開発中のものです。
05/10/07 19:54:42 BQzEcK2V
オレVBで作ろうと思ってるんだけどさー
VBって速度的にどうなん?
問題無いなら勉強しようと思うんだけど
43:名前は開発中のものです。
05/10/07 19:58:48 aJRkgDa2
ここがVBでMMO作ってるゾ
URLリンク(eternal.s19.xrea.com)
44:10 ◆pF5cbfQoT2
05/10/10 00:05:49 7RGrKLIz
ログインなどの処理が一応実装できた
まだ暗号化とかしてないけど・・・
サーバーしか作ってないから、そろそろクライアント作らないとな
45:名前は開発中のものです。
05/10/19 19:40:46 ifZ8caQI
MMO作ろうかと思ってますが、
ピアツーピアのMMOって無謀でしょうか?
46:名前は開発中のものです。
05/10/19 19:55:44 ovh0Jg+H
無謀かも知れん。
が、どういう実装形態があるか考えるのは悪いことではない。
47:名前は開発中のものです。
05/10/19 19:56:30 5zXty7Ea
同時接続人数少なくなると思うけどできるんじゃない?
48:名前は開発中のものです。
05/10/28 06:47:56 pyIjKpZE
>>18-21
1VS1の通信しか出来なくない?
複数クライアントの接続は宿題カナorz
49:名前は開発中のものです。
05/11/03 17:10:06 cIr991LE
ここはまだ生きてるのかな?
50:名前は開発中のものです。
05/11/21 11:50:42 08eNFaZz
漏れの作り方
1. とりあえず1対1でもいいからエコーサーバーを作る。
2. エコーサーバーをテストに使い、クライアント側の通信部分を作る。
3. 2で作った通信部分をテストに使い、サーバー側の通信部分を作る。
51:名前は開発中のものです。
06/01/22 19:53:14 QU3Ld80h
誰も見てないだろうから初歩的な質問してみる。
複数クライアントのチャットサーバにおいて
サーバがあるクライアントとの接続を確立したあとどうすべきか悩んでいます。
1、forkしてクライアントとの通信は子プロセスに任せる
親プロセスはそのソケットディスクリプタをcloseして新たにacceptする
送受信データの同期はプロセス間通信で親プロセスがなんとかする?
>>19のscを受け取った時点でfork、親プロセスはscをcloseしたあとにbindのところに戻る
2、ひとつのプロセスで通信と同期を全てまかなう
最初から接続上限数のソケットディスクリプタをつくっておいて
サーバの中で送受信を接続上限数分ループさせる
>>19のscを配列にして>>20のdo-whileをforにしてsc[i]を各々受信する感じ
1を使うとひとつのクライアントとの接続に不具合が発生しても
サーバがこけることはなさそうというのがメリットで
(他人の発言のような)送信すべきデータの取得がややこしそうになるというのがデメリット。
2の場合、親亀こけたら皆こけたの要領でひとつのクライアントとの通信不具合が
サーバ全体におよびそうというのがデメリットで
ループのおかげで受信の順番が決まってるのでそのときに送信をそれぞれ探ればいいから
送信データの取得はチャットだけを考えるなら簡単そうというのがメリット。
という風に考えています。
どっちをMMORPGサーバまで発展させると考えるなら採用すべきでしょうか?
間違った考え方をしている点や気づいていないメリットやデメリット、他の手段
などありましたらご指摘のほうお願いします。
52:名前は開発中のものです。
06/01/23 12:16:06 78YZ2Dnq
>>51
つ thread
Linuxでやるなら最終的には1でやるしかないと思う。
FreeBSDは試したこと無いから知らん。SolarisならThreadで行ける。
53:名前は開発中のものです。
06/01/24 11:00:46 KzBEIj3y
>>52
どもども。
あのあと調べてみたんですが2のやりかたはselect()/poll()ってのを使うんですね。
でも大規模なものには向かない感じ?
スレッドが現在主流なんでしょうか。いくつかの資料にあたってみると
select()やfork()のやりかたも書いてあるけど大抵の場合、
最終的にこれからはマルチスレッドだ!って意見に落ち着いてるような。
Linuxの場合NPTL/LinuxThreadsという形でPthreadsを実装してるみたいですね。
ただまだ新しい機能のせいか今でもちょこちょこ仕様変更してるのが気になるところ…
あと気になったのがシステム的な限界。手持ちのLinuxの標準的な設定だと
開けるディスクリプタの上限:1024
同時起動できるプロセスの上限:なし
プロセスあたりのスレッドの上限:64
システム全体のスレッドの上限:16384(64スレッド*256プロセス?)
らしいのですが、1ユーザとの通信は1スレッド+1ソケットディスクリプタで
という考え方だとacceptを複数プロセスでやらない限りは、
1システムあたり64人しか同時接続できなくなるという解釈でいいのでしょうか。
各々協調作業するマルチスレッド+マルチプロセス+マルチシステムな知識が必須?
54:名前は開発中のものです。
07/04/04 23:58:35 QQY5EYRe
ほう
55:名前は開発中のものです。
07/04/10 22:34:17 DFToSQZr
ここって板の一番下だよな・・・・?このスレのっとるか日記で
56:名前は開発中のものです。
07/04/10 22:36:07 /BIIixjg
ageとくね
57:名前は開発中のものです。
07/04/10 22:41:43 w90qBFR1
乗っ取りおめー
58:名前は開発中のものです。
07/04/10 22:42:33 DFToSQZr
おまえら、いろいろとありえねーだろwwwwwwwwwwwwwwww何だよそのレス速度
59:名前は開発中のものです。
07/04/10 22:43:52 /BIIixjg
ごめんね、この板の全スレでレスが
あったらすぐわかるようにしてるから…ごめんね。
60:名前は開発中のものです。
07/04/10 22:51:45 w90qBFR1
専ブラでスレタイ検索してお気に入りに登録して、
新着レスに緊急出動態勢整えてるのは俺だけじゃない筈だ。
61:名前は開発中のものです。
07/04/10 23:18:37 +7AxyvvI
イヤッホオオオオオオオオオオオオ!!!!1111
62:名前は開発中のものです。
07/04/11 16:12:28 6TT42fR3
期待あげ。
63:名前は開発中のものです。
07/05/25 15:12:16 s1jJ8pe0
個人製作のオンラインゲーム
URLリンク(www002.upp.so-net.ne.jp) (Ancient Saga Online)
URLリンク(www.platon.co.jp) (OUTLIVE ONLINE)
URLリンク(www.abars.net) RUINATERRA
URLリンク(dragon.warcry.biz) DRAGON WARCRY
URLリンク(www.smokymonkeys.com) TRIGLAV
URLリンク(homepage1.nifty.com) エクソシズムブリーズ
URLリンク(www.aa.alpha-net.ne.jp) Revelation of ALTERMIA
URLリンク(www5e.biglobe.ne.jp) キリーク
64:名前は開発中のものです。
07/05/25 15:18:34 N7du3zg1
なぜ宣伝?ここ製作なんだがネトゲは別なとこにあるが
65:名前は開発中のものです。
07/11/15 19:18:09 KUufpguC
MMORPGってどういうシステムで作るの?
C/C++?DirectX?他になんかライブラリとかあんの?
66:名前は開発中のものです。
07/11/15 19:43:17 34wKrQCn
あとWinAPIとかWinSock。
67:名前は開発中のものです。
07/11/15 21:52:26 KUufpguC
言語はC/C++として、
システムはWinAPI&DirectX、通信はWinSockって感じ?
68:名前は開発中のものです。
07/11/15 22:21:10 34wKrQCn
(仮に)ウィンドウ関連は最低限だけ触ってDirextXでガリガリ書くとしても、
DirectPlayはMS自身が見捨ててるので通信にはWinSockが必要。
そのWinSockを使うにはウィンドーメッセージ関連の処理が必要。
他に日本語入力(IME)の取得や、
全角文字のの表示にはWinAPIを使うのが現実的。
C++&DirectX+αだとこんな感じかな。
69:名前は開発中のものです。
08/01/07 15:09:38 hwCbBhi8
VIPからき☆すた
70:名前は開発中のものです。
08/01/08 11:43:42 6gzjxlz2
チャットにタバターつけておしまいの方向で
71:名前は開発中のものです。
09/01/25 00:47:06 piilkok4
あ
72:名前は開発中のものです。
09/10/28 16:23:51 Q3MsUvxA
【画像あり】「同級生の女の子に頼んでみた」中学生ハメ撮りAVが流出 ★14
スレリンク(news4vip板)
456909179687499