トップページ⇒tech
89コメント26KB

ロールプレイングゲームの設計

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。NGNG
いわゆるRPGですがこのゲームの設計(データ構造など)は
どんな感じなんでしょうか?
やっぱり
extern.hなんていうヘッダに
extern Player player;
なんて書かれているんでしょうか?
町の人の管理もやっぱり
extern TownObject town_object[ MAX_TOWN_OBJECT ];
となっているんでしょうか?
力業で色々やっているんでしょうか?
ドラゴンクエスト、ファイナルファンタジー、ポケットモンスター
など、どんな設計(データ構造)なのかとても気になります。

ほげほげRPGのソースはXX行だ。なんてのでもいいです。
是非教えてください。
0002名無しさん@お腹いっぱい。NGNG
設計以前に言語に関する知識が希薄なのが明白なので出直してください
0003名無しさん@お腹いっぱい。NGNG
今からRPG趣味で新規で作るとしたら、C++で
デザインパターン使ってだな。

あとで自分でもなんでそんなことしたのか良く
分からなくなるようなソース書くのは、もういや。
0004名無しさん@お腹いっぱい。NGNG
そんな感じです >>1
終了
0005名無しさん@お腹いっぱい。NGNG

まだそういうの作るには早すぎる。

0006名無しさん@お腹いっぱい。NGNG
力技でもなんでもいいから、とりあえず自分なりに作ってみれば?
試行錯誤する事も大切だよ。
0007名無しさん@お腹いっぱい。NGNG
でも1程度の知識じゃ、ベタベタなソース焼きソバになりそうだな。
ま、それも経験だろう。
0008名無しさん@お腹いっぱい。NGNG
>1
自分がいかにアホなことを言ってたのか気づくためにも
一度実際に作ってみることをお勧めする。
0009名無しさん@お腹いっぱい。NGNG
通常、ヘッダには構造体の定義だけを記述して、インスタンスは
作らない。あとスタックメモリではなく、mallocを使ってヒープ
メモリにインスタンスを作成しましょう。

こうゆうレスでいいの?
0010名無しさん@お腹いっぱい。NGNG
>9
なんでそこでmalloc使っちゃうかな?

ところで3の人に聞くが「デザインパターン」って、
あの妙な本ですか?あれってオブジェクト指向の本質じゃ
ないきがするんだよね。小さい概念をゴチャゴチャゴチャゴチャ
書いてあるだけでよくわからなかったんだけど。
あの本は一体どのレベルで話してあるのか?
EffectiveC++って本もひたすら謎だった。
0011>10NGNG
その前に君のレベルを明らかにしてよ。
「デザインパターン」も「Effective C++」がだめだとすると、
どんな本がおすすめなの?
0012名無しさん@お腹いっぱい。NGNG
>>9
extern宣言ってインスタンスじゃないよ
0013名無しさん@お腹いっぱい。NGNG
内蔵のイベント処理用スクリプトにギコBASICを使ったら楽しそう(藁
0014名無しさん@お腹いっぱい。NGNG
http://nethack.tripod.co.jp/ftp.html
0015名無しさん@お腹いっぱい。NGNG
>どんな本がおすすめなの?
あったら俺が聞きたい。
ただ、なんか概念という感じではなく、
ちょっとした小細工気味に感じる。
「憂鬱なプログラマのためのオブジェクト指向開発講座」
っていうのを読んでから今度は中級者本ぐらいのを探してるんだけど
なんかいいのがないんだよね。現在はHPを徘徊中。
0016名無しさん@お腹いっぱい。NGNG
オブジェクト指向に従えば従うほど、
プログラムが組みにくくなり開発速度が落ちていくのは私だけ?
0017名無しさん@お腹いっぱい。NGNG
ほらよ
http://www2s.biglobe.ne.jp/~sinmasa/RPG/index.htm
0018ねNGNG
プログラムの知識ゼロの俺には
君らがやたら頭いいように思えてしまうんだが、
どうせ「ゲームソフトってのはハードがないと遊べないんだ!」
くらいのレベルのことしか言ってないんだろうね。
君らが分かることくらい俺も分かるし。
錯覚って怖いよ。
0019名無しさん@お腹いっぱい。NGNG
>>17
こちらなのでは?
http://www.latech.edu/~acm/helloworld/rpg.html

http://www.latech.edu/~acm/HelloWorld.shtml
0020名無しさん@お腹いっぱい。NGNG
>>18
こやつどうしましょう?(;´Д`)
0021名無しさん@お腹いっぱい。NGNG
>20
ほっとこう。
0022名無しさん@お腹いっぱい。NGNG
>18
専門学校生でもプログラムできるしな。
0023名無しさん@お腹いっぱい。NGNG
>18
無知も怖いぞ
00241NGNG
どうもありがとうございます。
まずはなにか完成させてみます。
現在マップを表示してキャラクターが動くくらい出来ました。
イベント関連はlibguileでも使おうと思います。
いい感じです。

ただ一つ気になるのがマップのスクロールが出来ないことです。
まぁなくてもいいやと思ってますがやはり気になります。
0025>1NGNG
http://www.sm.rim.or.jp/~shishido/
2ちゃんねらーでもある宍戸氏のぺーじ
0026名無しさん@お腹いっぱい。NGNG
>>18
ハードって言うのは電気がないと動かないんだピカァちゅ
0027名無しさん@お腹いっぱい。NGNG
>オブジェクト指向に従えば従うほど、
>プログラムが組みにくくなり開発速度が落ちていくのは私だけ?
私もです。汎用性も生まれているのも解かるのだが開発速度は落ちる。
やっぱり、オブジェクト指向って人海戦術的なとこあるよね。
覚えればアホでも組めるようになる反面、人が必要になるって感じの。
0028名無しさん@お腹いっぱい。NGNG
>>27
>汎用性も生まれている
>人海戦術的なとこ
なんか根本的な誤解があるような...
0029名無しさん@お腹いっぱい。NGNG
28に1票
0030名無しさん@お腹いっぱい。NGNG
JavaのAPI使ってみれば、ちゃんとしたオブジェクト指向クラス設計
の成果が、どれほど開発を楽にするかすぐわかると思うんだけどなあ。
(Javaがおそいとか、糞だとかはは置いといて)

27みたいになるのは、ライブラリの基本設計が馬鹿だったから
じゃないの?
0031名無しさん@お腹いっぱい。NGNG
ライブラリ作成も含めて工数が多いように感じるということでは。
ほにゃらら2とか第2作なら速いのは確かでしょう。
0032>30NGNG
彼らはオブジェクトが自立的に勝手に動くのが気持ち悪いんだって。
コード・データの制御をすべて自分が支配しないときがすまないんだよ。
0033名無しさん@お腹いっぱい。NGNG
>31
それそれ、作るものほとんど完備しなくちゃいけないんだもん
面倒臭いよ。って完備しなかったときは面倒じゃすまないんだけどさ。
作り逃げがきかないじゃん(なんてこというんだと思うが)
0034名無しさん@お腹いっぱい。NGNG
作るは地獄 使うは天国 オブジェクト指向
設計に未熟なやつが組んだライブラリは使うほうも地獄に道連れだが
0035名無しさん@お腹いっぱい。NGNG
オブジェクト指向の「作るは天国」というコンセプトはどこへ行ったんだ?
オブジェクト指向クラス設計とそれを使った開発は別だといわれればそれで終わりだが。
0036>35NGNG
>オブジェクト指向の「作るは天国」というコンセプトはどこへ行ったんだ?
どこにも行ってないよ。ただ目の前にぶら下がっているのが見えてない人がいるだけ。

汎用的なクラスライブラリのクラスとアプリ固有のクラスは全く別物。
アプリ固有のクラスは完備する必要なんてないし、
逆にその時点では必要ない機能を完備する事を禁じてる開発スタイルすらある。
そしてそのことは将来の拡張を前もって制限するものでもない。
したいときに拡張するだけ。
0037名無しさん@お腹いっぱい。NGNG
>したいときに拡張するだけ。

そしてMFCになる(藁)
00389NGNG
>12
>extern宣言ってインスタンスじゃないよ

externは省略できるから、別にどうでもいい。
1はインスタンスをヘッダーで作成してるよ。
コレ=>extern TownObject town_object[ MAX_TOWN_OBJECT ];
0039名無しさん@お腹いっぱい。NGNG
イベント処理用のスクリプトだけど、みんなどうしてる?
自分で組んだ方がいいの?それとも出来合いの使った方が楽?
おせーて
0040名無しさん@お腹いっぱい。NGNG
>9

externの意味分かってる?
externを省略したら同名の別変数になっちゃうよ
ヘッダに構造体とかmallocとか、ちょっと前時代的なのも気になる
0041名無しさん@お腹いっぱい。NGNG
>9
はぁ?
0042名無しさん@お腹いっぱい。NGNG
>40
はぁ??
0043名無しさん@お腹いっぱい。NGNG
>10
デザインパターン本は「憂鬱な・・」より遙かに上級向けだよ
オブジェクト指向とはなにかという概念がしっかり分かってる人たち向けに
実際に使いやすい実装とはどんなものかの好例を示してる
004440>42NGNG
言葉が足りなかったか?
b.hのexternがある時と無いときで
bccでコンパイルして試してるから安心して読んでくれ。

--- a.c ---
#include<stdio.h>
#include"b.h"

int main(void){
i=3;
funcb();
printf("%d"@`i);
return 0;
}
---- b.h ---
void funcb(void);
extern int i;
---- b.c ----
#include<stdio.h>
#include"b.h"

int i;

void funcb(void){
i=2;
}
0045厨房NGNG
>>38=9
結局、38の解釈まちがってますよね?
0046名無しさん@お腹いっぱい。NGNG
かなり
00471NGNG
>>39
私はlibguileを使おうと思ってます。
http://www.gnu.org/software/guile/

私はextern、staticを

*関数にexternを付けるとglobalな関数になる。
*関数にstaticを付けるとfile privateな関数になる。

*変数にstaticを付けるとfile privateな変数になり、そこに実態が確保される。
*変数になにも付けないとそれはglobalな変数にない、そこに実態が確保される。
*変数にexternを付けるとほかのどこかにあることを示す(実態は確保されない)。

グローバル変数を用いる時

global.h
int id;

a.c
#include "global.h"

b.c
#include "global.h"

としてしまうとidの実態が2つ存在することになります(試してください)。
この場合の動作は未定義だと思います。
そうではなくてexternを使って、

global.h
extern int id;

global.c
int id;

a.c
#include "global.h"

b.c
#include "global.h"

とすればidの実態は1つだけ存在することになり、万事OKというわけです。
00481NGNG
*関数になにもつけないとglobalな関数になる。
も追加です。
0049>1NGNG
ヘッダにいれるグローバル変数にexternいれるのはお決まりのパターンだが、
そのまえに普通、ヘッダは
#ifndef hoge
#define hoge
...
#endif
ではさむんじゃないの?
005039NGNG
>>47
ありがとうございます。

こんなのもみつけたんですが、どっちがいいですかね?
http://www.tecgraf.puc-rio.br/lua/
0051名無しさん@お腹いっぱい。NGNG
>43
だから、中級向けで良い本無い?
デザインパターンとかじゃ、まだ理解不能。
0052名無しさん@お腹いっぱい。NGNG
オブジェクト指向もいいけど、もっと厄介そうな
突然発生するイベントとか移動中での例外処理とか
その他やらせ的演出をいかにコードをスパゲッティにせずに
拡張性を考えて詰めこめるかは、すごく難しい問題だと思う。
知識ベースとかそのへんの設計が鍵になるかな。ああいうのって
本物はフラグの嵐なのかね?
0053>52NGNG
そこらへんは力仕事ですんで、疲れるけど悩むことはあんまし
ないです。フラグは確かに大量に使います(スクリプトエンジン
に食わせるスクリプトで)が極力ローカルフラグを使うことで
管理の手間を減らします。
005453NGNG
ごめん、「いかにコードをスパゲッティにせず・・・」ってことだった
ですね。すばびせん、最終的にできたものは当然スパゲッティです。
0055名無しさん@お腹いっぱい。NGNG
>>53 便乗質問。そういうフラグありまくりのコードって、どうやって
デバッグしてます? ないし、どの時点で出荷OKと判断してます?
やはりバグ曲線が安定してきてから一定期間、とかでやるんでしょうか。
0056名無しさん@お腹いっぱい。NGNG
53ではないけども
ウチではだいたいそんな感じです。
もっともフラグを減らす工夫はしますけどもね。
実は目視による机上デバッグが一番効率的だったりする‥
005753NGNG
スクリプトエンジンにある程度はエラートラップを仕掛けたり
しますが、論理バグにはどうしようもないです。ちから任せです。
56さんと同様です。
最終的にはアルバイトを動員しての人海戦術となります。
00581NGNG
>>49
忘れていました。
それも必須ですね。

>>50
どっちがいいかは好みの問題だと思います。
私は
*Lisp系の言語が好きならGuile
*C@`Pascal系の言語が好きならLua
*簡単さを求めるならLua
*今すぐ使いたいならLua
ですかね。
LuaをCから呼び出す場合
lua_open();
lua_dofile("test.lua");
lua_call("main");--main関数を呼び出す(--以降がコメント)。
lua_close();
こんな感じです。

Lua - The Application Program Interface
http://www.tecgraf.puc-rio.br/lua/manual/manual.html#5.
005950=39NGNG
>1さん
使用例までつけていただいて、ありがとうございます。
わたしは、、、Luaで行こうかな。
006052NGNG
なんか結構おもしろいスレになってきましたね。
ぼくは知識表現とかに興味があるので、ゲームの
ストーリーをなんらかの意味表現、たとえば述語論理とかで
表現して多様な(そして論理バグのない)分岐を可能にする、
というのができたらすごいと思います。あるいは会話の流れを
もっと複雑にするとかね。個人の趣味で作るとしたらそういうところを
研究すればおもしろいと思う。
0061名無しさん@お腹いっぱい。NGNG
>60
あんたその前に日本語勉強した方がいいよ(ワラ
00621NGNG
ところでドラゴンクエスト1(ファミコン)のソースコードの
行数をご存知な方いましたら是非教えて欲しいです。
0063名無しさん@お腹いっぱい。NGNG
>62=1
なんでそんなのを気にする???
0064名無しさん@お腹いっぱい。NGNG
自らの生産性に鑑みて開発計画を作成したいとか。
仮に3万行として100行/日書けるなら300日とか。
0065名無しさん@お腹いっぱい。NGNG
>>64
100行/日は少なすぎるだろ?
100行/時のペースでも遅い。
0066名無しさん@お腹いっぱい。NGNG
>64@`65
OLのワープロ作業じゃないんだから、何行書いたかで効率決めるなよぉ。(;_;)
0067名無しさん@お腹いっぱい。NGNG
>>65
そりゃコーダーの基準だろ。
ある程度の規模のプログラムは、100行/時は無理。
(設計やデバッグを適当にやったとしても)
0068名無しさん@お腹いっぱい。NGNG
>>1
2〜3年前に、ポケモンのコードを逆アセンブルして公開してた
サイトがあったから、探せば、そーゆーのがあるかもよ。( ̄ー ̄)
0069名無しさん@8085NGNG
ステップ換算?
コ−ダ−以外には、パンチャ−か?
0070名無しさん@お腹いっぱい。NGNG
>>65
そぉね、使い捨てコードならアタシもそんくらいはイケルと思うわ。
でも、製品コードをその速度で作り続けるのはとんでもないグルか、
とんでもないヴァカのどっちかだと思うわよ。
0071名無しさん@お腹いっぱい。NGNG
とんでもないズルなんじゃないか?
0072>1NGNG
ドラクエといえば、X68Kで動作する「Tドラクエ」つーのが
あった。作者は元ドラクエを作ってたとこの社員で、ソース流用が
ばれてクビになったとかいう噂を聞いたが本当かどうかわからんです。
0073名無しさん@お腹いっぱい。NGNG
>>72

TDQ発表当時は作者は高校生だった記憶があるが…。

TDQはX-BASICをXBAStoCでCに変換してgccでコンパ
イルだった記憶もある。
0074名無しさん@お腹いっぱい。NGNG
98版のクローンもあったけな。

こっちは配布中止命令が下った。
0075名無しさん@お腹いっぱい。NGNG
age
0076名無しさん@お腹いっぱい。NGNG
こんなスレッドあげんなよ。75=1か?
だいたい6502アセンブラで書かれてるソースと、C言語のソースの行数
比較して何になるよ?
0077比較するとNGNG
クセになる。
0078名無しさん@お腹いっぱい。NGNG
>77
馬鹿、死ね。
逝って良し。
0079名無しさん@お腹いっぱい。NGNG
>78
あげんなゴルァ!
78=75=1か!?
00801NGNG
私はあげていません。
62が最後の発言です。
0081名無しさん@お腹いっぱい。NGNG
>>50
超遅レスでスマンが、JavaScriptのエンジンも結構いいぞ。
www.mozilla.org/js/
0082名無しさん@お腹いっぱい。NGNG
 スクリプトは、「条件分岐」「フラグ設定」と「メッセージ表示」「選択」に
限定すれば、意外に簡単かもね。フラグとメッセージ文字列のテーブルを持って
おいて、随時参照・変更していけば出来そう。
0083名無しさん@お腹いっぱい。NGNG
ソースコードの行数は知らぬがROMの容量は良く知られているね
DQ1はコード・データ合わせて64KB以内に収まってるはず
0084名無しさん@お腹いっぱい。NGNG
ゲームに使う、キャラクターや、背景、敵キャラクターの
画像、音楽が著作権フリーであるウェブサイトを
知りませんか?
0085名無しさん@お腹いっぱい。NGNG
あーあー、つまんねえスレッドが浮上してきたなあ。
キーワードがわかってるんだから検索エンジンで探せよ>84
0086名無しさん@お腹いっぱい。NGNG
>>84
plaza23.mbn.or.jp/~hir/rpg/sozai.htm
www.geocities.co.jp/Milano-Aoyama/1686/
www.microkids.or.jp/%7Emack/home1/tukuru/rpgfree.html
www02.u-page.so-net.ne.jp/rb3/orea/

こんなとこかな。
海外の鬼畜サイトで、ドラクエやFFから吸い出したマップチップやキャラ
を置いているサイトがあったな。場所は自分で探してくれ。
0087名無しさん@お腹いっぱい。NGNG

 そう言えば「大容量」とされたメガロムって確か1M「ビット」なんだよね。
128KBか....。それ以前のドラクエなんかだと、街のマップチップが32種類
しか使えなかったりと容量の制約はかなりきつかったみたい。
0088デフォルトの名無しさんNGNG
>>72
むちゃくちゃ嘘です
た○ぼさんはそんなひとではありません
0089デフォルトの名無しさんNGNG
>>88
今更ageなくても、アンテナが壊れてて怪電波受信中の72以外は
みんなわかってますって。
■ このスレッドは過去ログ倉庫に格納されています