ネットワークRPGを作れるようなソフトってありますか?
探検
MMORPG
■ このスレッドは過去ログ倉庫に格納されています
1-Я-
2005/09/24(土) 16:41:08ID:SuwAeEoS2005/09/24(土) 17:10:56ID:UGCNNHQm
VS
2005/09/24(土) 17:40:26ID:xEgDYVdH
あるのか?
知らんけど
知らんけど
2005/09/24(土) 19:21:07ID:tFIprWQK
MHPみたいな名前のが無かったっけか?
2005/09/24(土) 22:15:19ID:J5oxGrnT
>>4
ない
ない
2005/09/24(土) 22:19:13ID:tFIprWQK
PHIだったw
2005/09/24(土) 22:56:27ID:J2roar/D
>>1
■ネットワークRPGメーカー2000
■発売元:アスキー
■価格:9800円
■問い合わせ先:アスキー
TEL 03-5351-8728
■動作環境:Windows 95/98/2000,MMX Pentium/200MHz以上(推奨PentiumII/300MHz以上),メモリ64MB以上(推奨128MB以上),空きHDD容量50MB以上
糸冬 了
■ネットワークRPGメーカー2000
■発売元:アスキー
■価格:9800円
■問い合わせ先:アスキー
TEL 03-5351-8728
■動作環境:Windows 95/98/2000,MMX Pentium/200MHz以上(推奨PentiumII/300MHz以上),メモリ64MB以上(推奨128MB以上),空きHDD容量50MB以上
糸冬 了
2005/09/24(土) 22:57:29ID:J2roar/D
リンク貼り忘れ
http://www.4gamer.net/review/live/nrpg.html
糸冬 了
http://www.4gamer.net/review/live/nrpg.html
糸冬 了
2005/09/24(土) 23:27:37ID:UGCNNHQm
2005/09/27(火) 22:22:38ID:fJ8kPMi+o
MMOはやっぱりサーバーを先に作った方がいいのかな?
2005/09/27(火) 22:46:38ID:/b0+bht7
1.ゲーム企画
2.素材を用意(ドット・音楽など)
3.各種サーバー
4.クライアント
この手順が良いと思いますよ〜
2.素材を用意(ドット・音楽など)
3.各種サーバー
4.クライアント
この手順が良いと思いますよ〜
2005/09/27(火) 23:20:12ID:yn+0L+IC
素材を用意する前に、
クライアントのグラフィックスエンジンが動いている必要がある。
仮素材を用意するのなら、その手順でも構わないが…
クライアントのグラフィックスエンジンが動いている必要がある。
仮素材を用意するのなら、その手順でも構わないが…
1310
2005/09/27(火) 23:47:59ID:SkI+GD38 どうも
難しそうだな〜
頑張ってみる
難しそうだな〜
頑張ってみる
1410
2005/09/28(水) 16:27:20ID:9jNPEdSe とりあえず、チャットから作った方がいいかな
2005/09/29(木) 03:06:45ID:ToR8zilx
チャットが出来なきゃ話にならんですたい
1610
2005/09/29(木) 17:46:52ID:gkIkra0I17名前は開発中のものです。
2005/09/29(木) 19:55:53ID:CAD+EvmP LinuXで
2005/09/29(木) 22:35:37ID: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 ;//返値
#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 ;//返値
2005/09/29(木) 22:36:55ID: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()");
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()");
2005/09/29(木) 22:37:56ID: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;
}
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;
}
2005/09/29(木) 22:38:30ID: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);
}
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);
}
2005/09/29(木) 22:40:07ID:LE7U2HkX
UDPの基本は、暇があったらうpローダでうpする
23名前は開発中のものです。
2005/09/30(金) 18:05:54ID:SLqzHEJo Windows? UDP?
藻舞ら、いつの時代の人間じゃ?
Linuxを使え
藻舞ら、いつの時代の人間じゃ?
Linuxを使え
2410 ◆pF5cbfQoT2
2005/09/30(金) 18:51:13ID:6eJVvR2p25名前は開発中のものです。
2005/10/01(土) 13:53:50ID:GUmXustT UDPを使う利点がよくわからん。
少なくともUDPオンリーではゲームはつくれないよ
どうしても厳密な同期が必要なプロトコルがでてくるんだし。ログイン処理とかね
まずUDPが高速であるとされるファクターの最たるものがパケットロストしたときの再送の
リクエストが行われないという事だろうが、ゲームの場合はパケットが未到達であれば
ゲームはとまってしまうか情報不足の状態で補完していくことになるだろう、
これはTCPが再送のリクエストをしていてパケットがまだ届かないのと何も変わらない
状態じゃないのか。ユーザーに見える部分で何も変化がないわけでこれじゃ意味がないだろ。
加えて、パケットそのものの大きさが小さいということもあるだろうが、ゲームはものすごく小さな
パケットを連続的にではなく比較的穏やかな頻度で投げつけるので動画ストリームとかと比べて
大した差異にはならないと思うのだ
たまにパケットが届かなかったり、たまに順番が狂ってたりする場合を考慮して処理を書いたり、
または書き忘れて低頻度で起こるこういう現象に起因するバグに半日悩んだりするよりは、
普通にTCPを使うことを俺はおすすめする。
反論をたのむ
少なくともUDPオンリーではゲームはつくれないよ
どうしても厳密な同期が必要なプロトコルがでてくるんだし。ログイン処理とかね
まずUDPが高速であるとされるファクターの最たるものがパケットロストしたときの再送の
リクエストが行われないという事だろうが、ゲームの場合はパケットが未到達であれば
ゲームはとまってしまうか情報不足の状態で補完していくことになるだろう、
これはTCPが再送のリクエストをしていてパケットがまだ届かないのと何も変わらない
状態じゃないのか。ユーザーに見える部分で何も変化がないわけでこれじゃ意味がないだろ。
加えて、パケットそのものの大きさが小さいということもあるだろうが、ゲームはものすごく小さな
パケットを連続的にではなく比較的穏やかな頻度で投げつけるので動画ストリームとかと比べて
大した差異にはならないと思うのだ
たまにパケットが届かなかったり、たまに順番が狂ってたりする場合を考慮して処理を書いたり、
または書き忘れて低頻度で起こるこういう現象に起因するバグに半日悩んだりするよりは、
普通にTCPを使うことを俺はおすすめする。
反論をたのむ
26名前は開発中のものです。
2005/10/01(土) 14:16:34ID:GUmXustT 最初につくるのは送受信用に定義した特別な構造体をシリアライズして送受信する通信レイヤだな
ストリーミングすることは未来一切あり得ないからこれでいいんだ。
正直チャットをつくれとかそういうのはどーでもいい。
ちゃんとデータが行き来するのが確かめられれば必要なし。
ストリーミングすることは未来一切あり得ないからこれでいいんだ。
正直チャットをつくれとかそういうのはどーでもいい。
ちゃんとデータが行き来するのが確かめられれば必要なし。
2005/10/01(土) 16:12:17ID:UQfKbq0R
文字入力ルーチンや文字表示ルーチンが既にあるとか
簡単に作れるなら、チャットの実装も悪くない
動作が見て分かるからね
プログラムを知らない人も説得しやすいし
簡単に作れるなら、チャットの実装も悪くない
動作が見て分かるからね
プログラムを知らない人も説得しやすいし
2810 ◆pF5cbfQoT2
2005/10/01(土) 19:24:24ID:Y+BAe+9H2005/10/01(土) 22:28:59ID:rWkQ4tzq
チャットが基本だろ
/logout /dice /tellなど特殊なコマンド使いまくれる
/logout /dice /tellなど特殊なコマンド使いまくれる
3010 ◆pF5cbfQoT2
2005/10/04(火) 22:17:25ID:MWidbNs2 複数人チャットだと
結構難しいな
結構難しいな
2005/10/05(水) 18:44:52ID:81Ajv+Fy
2005/10/06(木) 05:45:55ID:B/FQ+W/o
1VS1のチャットはソケットの同期で簡単なんだけど
1VSnになると非同期が必要になるからね
あと、作成プログラムが2つ必要(サーバ&クライアント)
ってのが、以外にめんどい
2つ揃わないとテスト出来ないってのが敷居を高くしてる
1VSnになると非同期が必要になるからね
あと、作成プログラムが2つ必要(サーバ&クライアント)
ってのが、以外にめんどい
2つ揃わないとテスト出来ないってのが敷居を高くしてる
2005/10/06(木) 07:08:52ID:cRcXPgR2
2005/10/06(木) 07:10:26ID:cRcXPgR2
Σ( ゚д゚)
ってお前さんも朝早いな
ってお前さんも朝早いな
3610 ◆pF5cbfQoT2
2005/10/06(木) 16:16:28ID:EoIY9AKc いや、別にUDPじゃなくてもいいんですよ。
ただ単に高速だからです。
でも、アカウント登録やログイン処理はTCPじゃないとダメだし。
UDPはキャラの座標とか少しくらい消えてもいいような部分にしか使いません。
ただ単に高速だからです。
でも、アカウント登録やログイン処理はTCPじゃないとダメだし。
UDPはキャラの座標とか少しくらい消えてもいいような部分にしか使いません。
2005/10/06(木) 16:17:10ID:B/FQ+W/o
UDPってルータ越えが難しいんじゃない?
2005/10/06(木) 17:20:03ID:ZL+hX5KE
TCPに限定して、その分高速化は送受信データの切り詰めで補った方が簡単確実ってこと?
2005/10/06(木) 17:30:16ID:O+9CjehL
>>38
普通はそうだなぁ。
UDPとTCPを混在させると
UDP<>TCP間の同期の取り方とか
UDPの部分は、どうしてもクライアント主導の
通信にならざるを得ないから、イレギュラーや不正の
対処方法とかプログラミング的にも難度が高くなるしな。
普通はそうだなぁ。
UDPとTCPを混在させると
UDP<>TCP間の同期の取り方とか
UDPの部分は、どうしてもクライアント主導の
通信にならざるを得ないから、イレギュラーや不正の
対処方法とかプログラミング的にも難度が高くなるしな。
2005/10/06(木) 17:33:18ID:EeRPt6Ud
まずは確実に動くものをTCPで作ってからUDPに対応させりゃいいじゃん。
4110 ◆pF5cbfQoT2
2005/10/07(金) 07:30:12ID:NvWZ9rBj じゃあTCPでいくかな
ってかチャット作りTCPでやってたw
ってかチャット作りTCPでやってたw
42名前は開発中のものです。
2005/10/07(金) 19:54:42ID:BQzEcK2V オレVBで作ろうと思ってるんだけどさー
VBって速度的にどうなん?
問題無いなら勉強しようと思うんだけど
VBって速度的にどうなん?
問題無いなら勉強しようと思うんだけど
2005/10/07(金) 19:58:48ID:aJRkgDa2
ここがVBでMMO作ってるゾ
ttp://eternal.s19.xrea.com/
ttp://eternal.s19.xrea.com/
4410 ◆pF5cbfQoT2
2005/10/10(月) 00:05:49ID:7RGrKLIz ログインなどの処理が一応実装できた
まだ暗号化とかしてないけど・・・
サーバーしか作ってないから、そろそろクライアント作らないとな
まだ暗号化とかしてないけど・・・
サーバーしか作ってないから、そろそろクライアント作らないとな
45名前は開発中のものです。
2005/10/19(水) 19:40:46ID:ifZ8caQI MMO作ろうかと思ってますが、
ピアツーピアのMMOって無謀でしょうか?
ピアツーピアのMMOって無謀でしょうか?
2005/10/19(水) 19:55:44ID:ovh0Jg+H
無謀かも知れん。
が、どういう実装形態があるか考えるのは悪いことではない。
が、どういう実装形態があるか考えるのは悪いことではない。
47名前は開発中のものです。
2005/10/19(水) 19:56:30ID:5zXty7Ea 同時接続人数少なくなると思うけどできるんじゃない?
2005/10/28(金) 06:47:56ID:pyIjKpZE
2005/11/03(木) 17:10:06ID:cIr991LE
ここはまだ生きてるのかな?
2005/11/21(月) 11:50:42ID:08eNFaZz
漏れの作り方
1. とりあえず1対1でもいいからエコーサーバーを作る。
2. エコーサーバーをテストに使い、クライアント側の通信部分を作る。
3. 2で作った通信部分をテストに使い、サーバー側の通信部分を作る。
1. とりあえず1対1でもいいからエコーサーバーを作る。
2. エコーサーバーをテストに使い、クライアント側の通信部分を作る。
3. 2で作った通信部分をテストに使い、サーバー側の通信部分を作る。
2006/01/22(日) 19:53:14ID:QU3Ld80h
誰も見てないだろうから初歩的な質問してみる。
複数クライアントのチャットサーバにおいて
サーバがあるクライアントとの接続を確立したあとどうすべきか悩んでいます。
1、forkしてクライアントとの通信は子プロセスに任せる
親プロセスはそのソケットディスクリプタをcloseして新たにacceptする
送受信データの同期はプロセス間通信で親プロセスがなんとかする?
>>19のscを受け取った時点でfork、親プロセスはscをcloseしたあとにbindのところに戻る
2、ひとつのプロセスで通信と同期を全てまかなう
最初から接続上限数のソケットディスクリプタをつくっておいて
サーバの中で送受信を接続上限数分ループさせる
>>19のscを配列にして>>20のdo-whileをforにしてsc[i]を各々受信する感じ
1を使うとひとつのクライアントとの接続に不具合が発生しても
サーバがこけることはなさそうというのがメリットで
(他人の発言のような)送信すべきデータの取得がややこしそうになるというのがデメリット。
2の場合、親亀こけたら皆こけたの要領でひとつのクライアントとの通信不具合が
サーバ全体におよびそうというのがデメリットで
ループのおかげで受信の順番が決まってるのでそのときに送信をそれぞれ探ればいいから
送信データの取得はチャットだけを考えるなら簡単そうというのがメリット。
という風に考えています。
どっちをMMORPGサーバまで発展させると考えるなら採用すべきでしょうか?
間違った考え方をしている点や気づいていないメリットやデメリット、他の手段
などありましたらご指摘のほうお願いします。
複数クライアントのチャットサーバにおいて
サーバがあるクライアントとの接続を確立したあとどうすべきか悩んでいます。
1、forkしてクライアントとの通信は子プロセスに任せる
親プロセスはそのソケットディスクリプタをcloseして新たにacceptする
送受信データの同期はプロセス間通信で親プロセスがなんとかする?
>>19のscを受け取った時点でfork、親プロセスはscをcloseしたあとにbindのところに戻る
2、ひとつのプロセスで通信と同期を全てまかなう
最初から接続上限数のソケットディスクリプタをつくっておいて
サーバの中で送受信を接続上限数分ループさせる
>>19のscを配列にして>>20のdo-whileをforにしてsc[i]を各々受信する感じ
1を使うとひとつのクライアントとの接続に不具合が発生しても
サーバがこけることはなさそうというのがメリットで
(他人の発言のような)送信すべきデータの取得がややこしそうになるというのがデメリット。
2の場合、親亀こけたら皆こけたの要領でひとつのクライアントとの通信不具合が
サーバ全体におよびそうというのがデメリットで
ループのおかげで受信の順番が決まってるのでそのときに送信をそれぞれ探ればいいから
送信データの取得はチャットだけを考えるなら簡単そうというのがメリット。
という風に考えています。
どっちをMMORPGサーバまで発展させると考えるなら採用すべきでしょうか?
間違った考え方をしている点や気づいていないメリットやデメリット、他の手段
などありましたらご指摘のほうお願いします。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「クラウンに乗りたかった」東京・足立の車暴走 男性、容疑を否認 [七波羅探題★]
- 【インバウンド】中国政府、日本行き航空便の減便指示、2026年3月末まで「当面の措置」 [1ゲットロボ★]
- 【高市関税キター!!】個人輸入・少額輸入品への税優遇見直しへ…中国の通販サイトなどからの大量輸入を懸念 [1ゲットロボ★]
- 「車を処分してください」生活保護の窓口 取材で見えた利用者の実情 [少考さん★]
- 相次ぐ中国公演中止に、シンガーソングライターらが続々高市首相に怒り表明「隣国の仲間たちに対して申し訳ない」★3 [muffin★]
- 「クラウンに乗りたかった」東京・足立の車暴走 男性、容疑を否認★2 [七波羅探題★]
- 【実況】博衣こよりのえちえちFantasy map simulatorミニキャラ死闘編🧪★4
- 【実況】博衣こよりのえちえちFantasy map simulatorミニキャラ死闘編🧪★5
- VIPから🏡スレ潰すために来ました
- たぬかな、結婚していた [268244553]
- ここがみぃちゃんの巣窟でいいの?
- 【動画】慶應准教授の有野氏、高市答弁の問題点を理路整然と指摘しまいネトウヨ発狂wwwwwwwwwwww [271912485]
