2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

親父PGがゲームを作り始めるスレッド

1 :親父PG:04/03/30 02:40 ID:phIrC7nN

C++やC、アセンブラは昔こなしたし、プログラムの事なら自信はあるけど
ゲームは作った事が無い方。現場からも引退したし(w。
ここは一つ趣味でDirectXでも勉強して、ゲームでも作ってみようかなぁと思った、
オジサンPGのスレッドです。

一緒にマターリライブラリから作りませんか?

2 :親父PG:04/03/30 02:48 ID:phIrC7nN
DirectX SDK
http://www.microsoft.com/japan/msdn/directx/downloads.asp
C++
http://www.microsoft.com/japan/msdn/visualc/



3 :名前は開発中のものです。:04/03/30 02:54 ID:aArzpmzM
はい、華麗に3ゲトーと

4 :親父PG:04/03/30 03:15 ID:phIrC7nN
とりあえずC++だけでいいなら19800円(ゲーム作るだけなら他はいらない)
Visual C++ .NET Standard 2003 通常パッケージ 19,800円
アカデミック パッケージ 7,800円

最初の半年の目標

SDKをざっと読む
開発環境を整える
デモをコンパイラする
スケルトンの作成

ここからは目的に応じて多少変化すると思いますが....

タイマー、スケジュール、ポーリング部分をどのように設計するか検討する

上を設計した上で、最小単位のオブジェクトクラス(最初のメンバはLife)を設計

オブジェクトの番号を管理するクラス設計
グラフィック関連
文字関連
テクスチャ関連
マウス・キーボード関連
ビューポート関連
メッシュ関連
ライト関連
STL(動的配列関連)※クラス設計に大きく関係する DirectXとは直接関係ないけどね。 

とりあえずこの辺までは共通事項かなぁ。追加があればご指摘ください

5 :名前は開発中のものです。:04/03/30 03:43 ID:Pg71ArAR
ゲームを作るのか、ライブラリを作るだけなのか。

C++とかでブイブイやってたんなら、オープンソースのDirectXライブラリ持ってきて
まず何かゲームを作りつつライブラリを解析したほうが良いと思う。
パソコンを勉強するおじ様方に多いけど、本だけ読んでもあんまり身につかないからねぇ。
実際に動かして、動きを見ながらソースをトレースして理解したほうが本読むより早い。

ていうかC++なら0円でIDEも揃うけど。DEV-C++とかEclipseとか。
VC系が必要になるのはポトペタでデザイン作るときだしね。

6 :親父PG:04/03/30 04:08 ID:phIrC7nN
>>5
早速レスありがとう
>パソコンを勉強するおじ様方に多いけど、本だけ読んでもあんまり身につかないからねぇ。
既にそのレベルは超えてもらわないと話が進まない^^;
スケルトンぐらい(質問はしてもいいけど)自作作成できないとおそらく
オープンソースライブラリなんて使いこなすのは無理でしょう。

>オープンソースのDirectXライブラリ持ってきて
>まず何かゲームを作りつつライブラリを解析したほうが良いと思う。

これは一旦自分で(調べて作って)解析した後でないと、かえって理解が遅くなると思います。
まぁあくまで持論ではあるのですけどね。
DirectXの動きを理解してからライブラリからコツコツと、それも楽しみの一つですから...

[最低でも問題のSDKのHELPは調べる]
親父PGに限った事ではないと思いますが^^;

7 :名前は開発中のものです。 :04/03/30 08:25 ID:nseNUF3n
ヘタレだけど面白そうだから参加していいかな。
大分前、SDKのみの自前描画で簡単な3Dモデルを表示してみた。
ちょい前、DirectXを覚えようと、とりあえず突貫工事で
Xファイルを表示してキーボードで移動させてみた。
いろんな所からサンプル拾ってほとんどコピペしただけ。
次はスキンメッシュのサンプルをどっかからパクって組み込もうと考えたが
わけ分かんなくて挫折。
最近、TCPとWinsockでS/C型の簡単な一対一チャットを作ったが、
一対多のやり方がワカンネェので挫折。
先週、暇だったからテトリス作ってみた。初めてのゲーム。

ライブラリ?クラス?なにそれ。
分割コンパイルすらままならない、道しるべが欲しいそんなダメオジサン。

8 :名前は開発中のものです。:04/03/30 09:44 ID:B2V5bL2q

それより親父さんよ

この板にはたくさんの厨がいる

そいつらは開発ってのを分かっていない

ここは一つ、お前さんが連中を管理してゲームを完成させるスレとかにしてみたらどう?

9 :名前は開発中のものです。:04/03/30 09:46 ID:1T5XDq7M
みんなリストラされたのか?



10 :親父PG:04/03/30 11:25 ID:nbxm21Tx
>>7
歓迎いたしますよ! 何か出来たことを報告してくれると、盛り上がって良いと思います
>>8
>この板にはたくさんの厨がいる そいつらは開発ってのを分かっていない

私の個人的な意見を言わせていただければ、もしPGの事が解って無くても
また、開発の事がわかってなくても、なんというか、「組立てるセンス」あれば
ある程度の事はできると思う。それは他の事でも物事を組み立てて考える力さえあれば、PG習得もその応用にすぎないからなのです。

PGには3つの壁があり、
プログラム理論ロジック習得の壁 if for
言語そのものに対する知識の壁 C++ int
環境に関する知識の壁 Windows DirectX
があると私は思っています。これらを分けてひとつひとつ知識のリンクを、つないで行けば自ずと光が見えてきます。

>ここは一つ、お前さんが連中を管理して...

そんな大それた事はできませぬ^^
参加したいのであれば年齢は問いませんが、姿勢は問いますよ。

>>9
>みんなリストラされたのか?

あはは、冗談きついなぁ。

取り合えずSDKのサンプル「三角形を回す奴」をコンパイルして実行する事
これが出来ないと先へ進めません。
回る三角形ができたら、これを四角形にする(頂点数の変更) 
FVFフォーマットを変えて実験してみる。

テクスチャを張り込むにしても4画ポリゴンは基本となるので、
まずはここまでを目標にしましょう!!

11 :名前は開発中のものです。:04/03/30 12:12 ID:EfGGMHLP
>プログラム理論ロジック習得の壁 if for
>言語そのものに対する知識の壁 C++ int
>環境に関する知識の壁 Windows DirectX
計算機の動作原理の理解に対する壁が抜けてるな。

12 :名前は開発中のものです。:04/03/30 12:26 ID:QXrCIhNo
>>11
CPUアーキテクチャなんかは知らなくても
とりあえず何かは作れるんじゃないか?
もちろん、知っておいたほうが質の良いコードが書けるだろうけどね。

13 :親父PG:04/03/30 12:47 ID:nbxm21Tx
>>7
偉そうな事を言える立場ではないですが、書き込みの内容を拝見するに 基本的なプログラムの技術をお持ちだと思いますので、ますはSDKサンプルの
ライブラリを見てDIRECTXの初期化とWINSOWSループあたりを見てみると良いのではないでしょうか?
WINDOWSのサンプルは描画速度はマシン速度(環境)に依存しています。
このままでは定期的な処理ができないので、PeekMessage周りを調べて定期的タイマーで特定の処理を呼び出すようなものを作ってみてはどうでしょうか?

while( WM_QUIT != msg.message )
{
if( m_bActive && m_pd3dDevice != NULL ){
 if ( tTake==FALSE ){
  QueryPerformanceCounter( ( LARGE_INTEGER * )&sTIME );//時間計測開始
  FSP60call();//同期して動かすものはここで
 }
 FSP60nonSYNCcall();//何か出来ることあればやってしまおう
}
 th_GetandPeekMessage( NULL );//Peek Message func
 if( bGotMsg!=TRUE ){
  if( m_bDeviceLost ){
   // Yield some CPU time to other processes
   Sleep( 100 ); // 100 milliseconds
}
if( m_bActive && m_pd3dDevice != NULL ){
 if( FAILED( Render3DEnvironment() ) )SendMessage( m_hWnd, WM_CLOSE, 0, 0 );
 QueryPerformanceCounter( ( LARGE_INTEGER * )&eTIME );// 計測終了
 DWORD wTIME;
 wTIME=( DWORD )16666;
 if ( ( eTIME.LowPart - sTIME.LowPart )>wTIME ){
  tTake=FALSE;
 }else {tTake=TRUE;}//endof if
}
}
私が自作した部分ですが、サンプルのソースに試行錯誤を繰り返しこのような形になりました。

14 :親父PG:04/03/30 13:12 ID:nbxm21Tx
>>11
>計算機の動作原理の理解に対する壁が抜けてるな。

理解に必用なヒントがあれば是非紹介してください。^^

これはネタとして昔やったアセンブラの事を紹介します。

PUSH AX
PUSH BX
PUSH CX
CALL fanction

function:
MOV BP,SP
MOV SS,AX
MOV AX,ES

;スタックポイントへのアクセス
MOV DX,ES:[BP+0]
MOV AX,ES:[BP+2]
このような形でスタック上の価(引数)にアクセス....

80186(V30)のころのスタックフレームへのアクセス方法です。
いまやアドレス空間幅は32ビットに広がり、
このようなことは必要ありませんが(W

かつてはCPUの動作を知らないとPGが書けなかった時代がありました。
現代の目で見ると、私の書いたような事はもはや御伽噺になっておりますなぁ...


15 :名前は開発中のものです。:04/03/30 13:22 ID:kPTgeVBo
>>14
懐かしいな、もうそこらへんのことはすっかり忘れたよ
今やれといわれても資料読みつつじゃなきゃ絶対無理だ。

>>11は親父PG氏に計算機の動作原理の理解がない、と言ってるんじゃなくて
3つの壁じゃなくて4つの壁ではないか?と提案してるんじゃないか?
少なくとも俺はそう読んだ

まぁ計算機に関する理解は環境に関する理解に含まれると思うけどね

16 :名前は開発中のものです。:04/03/30 13:26 ID:KRMwobBh
コーディングが汚くて読みづらい。

17 :名前は開発中のものです。:04/03/30 13:41 ID:kPTgeVBo
>>13のサンプルにちょっとだけ指摘
QueryPerformanceCounterで取ってきた値を1/1000msecとして扱ってるが
その値は思いっきり環境依存です
環境によってはバグります
あと、LARGE_INTEGERのLowPartのみ比較はやめたほうがいいです
QueryPerformanceCounterから取得した値がなぜ64bit値なのか考えましょ

あえて荒らしにも反応しとくけど
>>16
この程度読みづらいならおまえの能力が低すぎ

18 :親父PG:04/03/30 13:47 ID:nbxm21Tx
>>15
>11は親父PG氏に計算機の動作原理の理解がない、と言ってるんじゃなくて

私もそうとってますよ^^; 
11氏が提案する部分で、具体的な話があれば是非紹介して欲しいなぁと思って...

>>16
すんませんorz 自分でも汚いと思っております(反省

訂正

MOV SS,AX
MOV AX,ES

MOV AX,SS
MOV ES,AX

ネタとは言え恥ずかしい....orz

価の移動は右から左だった。
というかセグメントレジスタに、直接価が入れられない制約があったんだよね。
(なんかまだ間違ってるような気がするけど、深く考えないようにしよう)

まだ取り組んでいませんが、シェイダーの扱いで一部アセンブラライクなものが
あるみたいなので、アセンブラの知識が(一部)役に立つかもしれません(笑

19 :親父PG:04/03/30 13:52 ID:nbxm21Tx
>>17
おお! 御指摘ありがとうございます早速、修正させてもらいます。
とはいえ
>QueryPerformanceCounterで取ってきた値を1/1000msecとして扱ってるが
>その値は思いっきり環境依存です
このあたりを解決するには調べることがありそうですね。
頑張ってみます^^

20 :名前は開発中のものです。:04/03/30 14:23 ID:kPTgeVBo
あーしまった、何を使ってQueryPerformanceCounterの周波数調べるか書いてなかった
QueryPerformanceFrequency使うと調べられます。
なお、高分解能パフォーマンスカウンタは今までサポートしていない環境を見たことがありません
(CEも業務で数種扱ってますが全て使えました)

あと、使う値はLONGLONGで定義してキャストするほうが楽です
こんな感じ

LARGE_INTEGER llStartTime, llEndTime;
LARGE_INTEGER llCounter;
DWORD dwTime;
DWORD dwKeta = 1000; //ここを好きな桁に変更してください。1000だと1msec単位、1000000で0.001msec単位
bRet = QueryPerformanceFrequency((LARGE_INTEGER*)&llCounter);
〜略〜
QueryPerformanceCounter(LARGE_INTEGER*)&llStartTime);
〜略〜
QueryPerformanceCounter(LARGE_INTEGER*)&llEndTime);
dwTime = (DWORD)((llEndTime - llStartTime) * dwKeta / llCounter);


21 :名前は開発中のものです。:04/03/30 14:33 ID:kPTgeVBo
ってーミスってるΣ
LARGE_INTEGER llStartTime(略)→LONGLONG llStartTime(略)
に直してください

22 :親父PG:04/03/30 15:29 ID:nbxm21Tx
>>20
なんだかありがたいなぁ。
悪いねぇ。。。。orz いろいろ教えてもらって^^;
他の方にも参考になると思います。
こういうレスがついてくることを、内心期待してはいましたがほんとにくると嬉しいです。
これからもいろいろと私にできる情報を提供使用と思います。

高精度タイマーが使えない環境はない! と私も決め打ちしています。
このへんは「ゲーム」という事で許される範囲ですかね。
高精度タイマーが動かなければ、おそらく他のゲームも動かないでしょうから^^

wTIME=( double )16666;
//駄目コード if ( ( eTIME.LowPart - sTIME.LowPart )>wTIME ){
if ( double( eTIME.QuadPart - sTIME.QuadPart )>wTIME )

安易にこんなことしてましたが、>>20の書き込みも参考にさせていただきます。


23 :名前は開発中のものです。:04/03/30 21:24 ID:OjGk+Cgx
たとえゲームといえど、CPU100%つかうアプリは嫌いだな。

あとこっちは余計なお世話かもしれんが、高精度タイマなんて使わなくても
timeGetTimeあたりで十分な気もする。
(タイムスライスの精度的に、どうせどこかでぶれるんだから。)

24 :親父PG:04/03/30 22:38 ID:phIrC7nN
>>23
ご指摘ありがとうございます。
確かにtimeGetTimeの精度を一番上げた状態でも十分ではあると思います。

先にあげたソースでは実装していませんが、計測した値の差と基準となる
値を割り算して(wTIME)基準値に対して、もし遅れが出ているようなら
その値を移動係数に掛けるといった処理も、視野にいれてQueryPerformanceCounter
を選択しました。(正しいかどうかは別にして)

ところでtimeGetTimeの正体は何なのでしょう。
いわゆる昔からあるあの「ハードウェアタイマー割り込み」なのでしょうか?
OSの内部的なタイマーという解説がありますが、その内部的なタイマーとはなんぞや?
IRQ (Interrupt Request)使うアレなのだろうか...
少なくともQueryPerformanceCounterは昔からあるHWタイマーではなさそうですね。
(分解能からして、昔は無かったし<-コレ重要)
さて
QueryPerformanceCounterとtimeGetTimeはどっちが処理が重いのだろうか?
timeGettimeの精度を上げた状態とはどういうことが起きているのだろうか?
単純に精度高い=処理が重い と決め付けるわけにもいかないと思います。

いろいろと疑問が湧いてきますねぇ。
(タイマーだけで1スレ潰してしまうな、こんな話始めたら(笑 )

25 :名前は開発中のものです。:04/03/30 23:07 ID:bI3miJwX
>>16
単語の頭と、単語と単語の切れ目は大文字っていうルールでコーディングしてるんだったら、一貫してくれないと読みづらいね。
FSP60nonSYNCcall は FSP60NonSyncCallみたいに・・・・。

26 :名前は開発中のものです。:04/03/30 23:25 ID:OjGk+Cgx
>>24
QueryPerformanceCounterを含む時間管理についてはこの辺が参考になる。
ttp://www.dwahan.net/nyaruru/programming/programming.html
ttp://www.gamedev.net/community/forums/topic.asp?topic_id=195892

あと、環境によってはQueryPerformanceCounterが300ms以上帰ってこないという現象もあるらしい。
ttp://home.att.ne.jp/yellow/hide_n/old.html
の2001/11/12。
上のURLにある問題点と関係してるのかも。

>>25
全角スペースインデントするなら、ちゃんとやれってことじゃない?

27 :名前は開発中のものです。:04/03/30 23:32 ID:fcRSAwJm
個人的な好みだけど、前回のループのカウンターサンプリングからの経過時間冲
を、実数で持ってたほうが何かと便利かも。おじさんの頃はFPUが遅かったので
固定小数点命だったろうけど、今じゃ、バリバリ浮動小数点使います。

Real fInversedFrequency;
LARGE_INTEGER liPrevCount;
void init( void )
{
 LARGE_INTEGER liFrequency;
 bResult = QueryPerformanceFrequency( &liFrequency );
 errorCheck( !bResult ); //カウンターサポートなし。
 fInversedFrequency= 1.0f / Real ( liFrequency );
 liPrevCount = 0;
}

void gameLoop( void )
{
 LARGE_INTEGER liCount;
 Real dt; //凾 (sec)
 QueryPerformanceCounter( &liCount );
 if( liPrevCount != 0 ) {
  dt = Real( liCount - liPrevCount ) * fInversedFrequency;
 } else {
  dt = 0;
 }
 処理:UpdateAI(), Render(), etc.....
}


28 :親父PG:04/03/30 23:58 ID:phIrC7nN
>>25
サンプルに自分が書いた部分を書き足すと、ちゃんぽんになってしまう事があります。
気をつけないといけませんね(汗

>>26
参考URL有難う!
>fpsの調節をするためにビジーループでQueryPerformanceCounterを呼び出していると
どのようなループか気になりますね。素でループしたら変な事になるのかも知れませんね。
あと対策はどのくらい遅れたか? を計測して「移動やその他計算処理に」
その係数を掛け算する程度しか思いつきません。

DirectXのサンプルのタイマーユーティリティを覗くと、高精度タイマーを使用しています。
dxutil.cpp
確か高精度タイマーを選択した最大の理由はコレでした(もう忘れかけてるorz

「サンプルで使ってるし大丈夫だろう!」 ご意見お待ちしています(チョットコワイ



29 :親父PG:04/03/31 00:13 ID:Idf3f6lw
>>27
コードサンクス! オープンソースっぽくなってきましたね。
タイマーのブレをうまく吸収してくれそうですね。
ゲームの種類によっては、これが解決になるかも。

[タイマー系の処理は(時間が)くるまで動かないではなく
        「(時間が)越えれば動く」ように設計する]
ですかね^^

30 :名前は開発中のものです。:04/03/31 06:26 ID:gs6uGany
何気なく覗いてみたけど良スレの予感。
親父PGさんがんばれ。

31 :親父PG:04/03/31 07:43 ID:Idf3f6lw
ども有難うガム張ります。

タイマーの話だけではアレなので(滝汗
私が目標にした全体の設計指針を書きます。

プログラム内部で登場するものは、全て同じ基底クラスを持ち
Create 命令で作成され、その時に「オブジェクトハンドル番号」を返すようにする。
*ポリゴン ライト テクスチャなどは全てこれで管理する。
命令は全てオブジェクトハンドルを使って指示する。

Commander[i]._mesMoveObject(hOBJ,OBJtype,Counter);
Commander[i]._mesShowObject(hOBJ,OBJtype,Counter);
(Commanderクラスは_mesで始まるオブジェクト処理集合体クラス ビューポートごとに1つ定義される。)

ポーリングループにおいて一定周期にコールが行われ、このときに
カウンター(命令の回数)のデクリメントと各オブジェクトに記録されている
命令にしたがってデータを可変させる。また各クラスは動きマトリクスを一つ
内包していて、カウンタが尽きるまでマトリクス演算を繰り返す。

これによって ポリゴンやライトなどの制御が簡単に動的に処理する事ができる。
(RPG系のマクロ言語のサポートを視野に入れている)

各オブジェクトには(マウスが押された時など)に予め指定してある
番号をもって共通のインターフェース関数を呼ぶようにする。
これによってソースコードの奥深く(笑)で発生したトリガーが
一箇所に集約され、ここでも一括処理ができるようになる。
(ボタンやダイヤログ機能の実装)動的に作成されたものにも対応できる。
1枚のテクスチャの部分コピーをおこないテクスチャの管理を楽にする。

半年かけてこの辺までは作りました。データの扱いをメインにくんでいたせいか
DorectXの機能っぽい部分に触っていません。orz
いやこれからですコレから(汗

32 :名前は開発中のものです。:04/03/31 09:17 ID:t5cBxtOK
おまえらタイマーを何に使うか決まっててモノ言ってんのか?
おまえら10秒でできる判断に1日かけてんじゃねーぞ?

33 :27:04/03/31 09:49 ID:uLEtiF6X
>>32

ゲームの物理世界は
∫f(t)dt
ってことだよ。



34 :名前は開発中のものです。:04/03/31 10:00 ID:t5cBxtOK
>>33
プw
遅れてるねぇ

35 :名前は開発中のものです。:04/03/31 10:37 ID:uLEtiF6X
>>34
アフォですか?
世界を1フレームに微分して捉えるのは、CPUの能力が有限である以上
当たり前だよな?それ以上の何がある?
とんちんかんなシロートさん。


36 :名前は開発中のものです。:04/03/31 10:43 ID:t5cBxtOK
時間の概念が古いんだよw

37 :名前は開発中のものです。:04/03/31 11:43 ID:uLEtiF6X
>>36
おもしろんじゃん。その新しい時間の概念とはなんだよ?
何にも提示するものはないのに一応偉ぶって見たいだけですか?
どうせ逃げるんだろうケドナ。


38 :名前は開発中のものです。:04/03/31 11:52 ID:J7xQt3Sm
煽りに釣られてんなよ低脳

39 :名前は開発中のものです。:04/03/31 11:54 ID:Jboy7uue
親父PGさんは仮性ですか?


40 :名前は開発中のものです。:04/03/31 11:58 ID:e/u8FsRY
↓何事もなかったかのように親父PG登場

41 :名前は開発中のものです。:04/03/31 12:40 ID:cyUqzRML
こういう親父は
せいぜいライブラリ作りで終わりそうな予感・・・

42 :名前は開発中のものです。:04/03/31 13:00 ID:P6HXZMmb
んで、ゲームは何つくるの?

43 :名前は開発中のものです。:04/03/31 13:23 ID:t5cBxtOK
>>37
2,3年前で頭止まってんじゃねーの?
世の中進んでるのはグラフィクス技術だけじゃないぜw

44 :親父PG:04/03/31 13:34 ID:7Yj92Zqq
スレが伸び取る!                     2ちゃん的に(w

>>34
タイマーについては一度議論するのも悪くないと思います。もっともご指摘のように
いつまでもすることではないですか(w

>>41
ライブラリ作っていると「無駄に複雑」な仕様になりがちです。戒めて前に進まないとorz
>>42
ゲームですが、キャラクターデータ−を中心に(制約はあるものの)
ゲームの内容は後から追加できるように考えています。
まだ具体的にゲームの内容までは絞り込んでいません。
グラフィックは嫁にメタセコイア覚えさせないと(笑

スクリプトエンジンを設計して、実装したらゲームの具体的な部分を考えます。

プログラム初心者程度でも、データを設計できる難易度に落とし込みたいと考えています

(野望)幾つかのモジュールはDLLで配布して他の方もゲームシナリオが作れるような環境も
提供していければなぁと。これってある意味ツクール的かも知れないですね。

45 :名前は開発中のものです。:04/03/31 15:02 ID:XPmjXdZE
3DもOK、かつスクリプト使うってことはRPGかな?
変な荒らしに負けずガンバレ

46 :親父PG:04/04/01 02:48 ID:M2APFMNg
>>45
どうも^^.. 荒しなんてUP前の仕様変更(納品後)に比べればなんともないですよ(笑
以前作ったライブラリを覗いたら、バグどころか設計そのものが間違えていた事が判明!
自分で仕様変更おこしてしまいましたorz ダメスギル

今回は論理フォントを作るクラスです

class cFonttypes{
NONCLIENTMETRICSstNCMetrics;
public:
  LOGFONT defFont;
  cFonttypes(){//Constractor
   stNCMetrics.cbSize = sizeof( NONCLIENTMETRICS );
   ::SystemParametersInfo( SPI_GETNONCLIENTMETRICS, sizeof( NONCLIENTMETRICS ), &stNCMetrics, 0 );
   memcpy( &defFont,&stNCMetrics.lfMessageFont,sizeof( defFont ) );
   defFont.lfWeight=FW_MEDIUM;
   defFont.lfHeight=32;
   defFont.lfItalic=false;
   defFont.lfQuality=PROOF_QUALITY;
  }
  virtual ~cFonttypes_Barracks(){}
  
  BOOL SelectFontType(int _nType_,int _size_ ,bool _italic_ );
  BOOL SelectFontType(char* _cFontName_,int _size_ ,bool _italic_ );
};


47 :親父PG:04/04/01 02:53 ID:M2APFMNg
.cpp

BOOL cFonttypes::SelectFontType(int _nType_,int _size_ ,bool _italic_){
//名前登録済み
 defFont.lfItalic=false;
 defFont.lfHeight=_size_;
 defFont.lfItalic=_italic_;

 switch( _nType_ ){
  case 0:{lstrcpy( defFont.lfFaceName,"Arial" );break;}
  case 1:{lstrcpy( defFont.lfFaceName,"MS 明朝" );break;}
  case 2:{lstrcpy( defFont.lfFaceName,"MS ゴシック" );break;}
  case 3:{lstrcpy( defFont.lfFaceName,"HGP創英角ポップ体" );break;}
  case 4:{lstrcpy( defFont.lfFaceName,"HG丸ゴシックM-PRO" );break;}
  case 5:{lstrcpy( defFont.lfFaceName,"HG正楷書体-PRO" );break;}
  case 6:{lstrcpy( defFont.lfFaceName,"Impact" );break;}
  case 7:{lstrcpy( defFont.lfFaceName,"Times New Roman" );break;}
  default: lstrcpy( defFont.lfFaceName,"Arial" );
 }// end of Switch

 if ( CreateFontIndirect(&defFont)!=0 ){//論理フォントの選択&作成
  return(true);
 }else{ return(false);}
}
もう一つは割愛

フォントは環境に依存するので初期化ファイルにユーザーが登録できるようにする
仕様が望ましいのかなぁ。などといいつつプリセットを作ってる私でありますが。
こういうのを作った後で(最初はユーザーは難しいことさせるなという仕様なのに)
後からやっぱりユーザー定義で作って! なんて事はよくありますな。

仕様書作成=作る人 って楽で良いね(笑

48 :親父PG:04/04/01 03:44 ID:M2APFMNg
訂正
if ( CreateFontIndirect(&defFont)!=0 ){//論理フォントの選択&作成


HFONT ReFont CreateFontIndirect(&defFont);
return( ReFont );

関数の型 BOOL > HFONT




またやってしまったorz 落ち着け俺


49 :名前は開発中のものです。:04/04/01 04:30 ID:CzMeYUkg
既に環境依存してますって(汗)
HG系はリコーの商用フォント。Windows標準では使用不可能
MS-Officeについてくるから勘違いされることが多いけどね
フォントを複数種類使いたいならEnumFontFamiliesEx使ってフォントを列挙し、
ユーザーに選ばせるのが一番安全

50 :名前は開発中のものです。:04/04/01 19:33 ID:ZC0PnnRp
ちょっと低レイヤー過ぎるような。
3Dっしょ?フォントとかそんなとこから作ってたら平成が終わっちゃうよ。
D3Dサーフェイスに乗せられるテキストボックスとかがいいんじゃね?

51 :親父PG:04/04/01 23:04 ID:M2APFMNg
>>49
>HG系はリコーの商用フォント。Windows標準では使用不可能
>MS-Officeについてくるから勘違いされることが多いけどね
そうでしたが....Windows2000にも入っていたので標準かと思ってましたよorzダメスギル

少し改造すれば(最終的な)ユーザー選択可能にもできますので^^ そこはなんとかいたします

>>50
この部分は(表示まで含む)以前に作った事があるのですが、のべで5日ぐらいでしたので大丈夫ですorzタブン
それよりTextOutでビットマップに出力するとアンチシェアリングかかってないんですよね。
そのぶん速度も速いですが。
GetGlyphOutline を使うべきなのか....
ttp://www.mikenekoworks.com/develop/getglyphoutline.html

このあたりは要求仕様によって変わりそうではありますが



52 :名前は開発中のものです。:04/04/01 23:34 ID:snPiYnSW
つかフォント(´д`)イラネ

BMPで用意してケロ。
12x24、16x32の二つあれば十分でゲス。


53 :親父PG:04/04/02 01:02 ID:5nHc263h
>>52
(理論文字数65535文字) *12*24bit*8/8 18874080byte
1ピクセル深度8bitで計算 1.8Mですな(65535の部分はうそ臭い)
まぁ1Mぐらいかな。昨今の環境では無問題かもね(汗
ということはプログラム開始時に作ってしまうのがいいのかな。
全フォントピクセルBMP(横に糞長いBMP)

全フォントBMPで管理する時、面倒なのはカーニングですねぇ。どうしましょ(W
コードから半角を割り出すか(W 昔やったねコード判別で半角or全角判断
いっそカーニングデータ−にも対応して!(やばい泥沼だ

昔PC98のころはフォント用のLSIをからフォントデータ−を取得して表示してましたね。(サイズ固定)
というかテキスト専用のVRAM(空間)があって、そこに2バイト書き込めば文字が出るというレイヤー構成だった。(グラフィックVRAMは別)
グラフィックVRAMは微妙にメモリアドレス空間ズレテルシorz
DOSVで文字データ−をメモリに載せるシステムを見た時!メモリ大丈夫か!と関心したものです。(当時の互換機はメモリ16Mが標準)

僕らより先輩の時代には、[コンピューター漢字不要論]なんてのもありましたorz.......

54 :親父PG:04/04/02 01:43 ID:5nHc263h
現時点でのFONT周りの基本動作
PG開始時
 テキストBMP用作成 tbitmap以外で取得したリソースは全て破棄
 論理フォント作成
 指定フォントでBMPにtextoutで書き込み
 文字貼り付け用ポリゴン作成 ポリゴンに書き込み
初期化終了/ループ開始
 文字列に変更がない場合、BMPはそのまま 変更があった場合 BMP書き換え
 ポリゴンとテクスチャの貼り付け レンダリング
 表示
ループエンド
追加機能 文字の後ろにはグラフィックが置ける 現在、OR加合処理
利点
(システムにあれば)どのようなFONTにも対応できる
動的に文字列を変化できる
比較的高速
カーニングはシステム任せ
イタリック、太字なども関数へのパラメーターのみで対応できる
文字色も自由に変更できる(1文字ずつも可能)
文字データ−>テクスチャデータ−の時にエフェクトなどが付けられる(グラデーションとか)
欠点
アンチシェアリングがかかっていない為、3Dでポリゴンが視点に対して垂直でないと文字が崩れる。(これは考慮しないと他でも当てはまる)
テキストっぽい(w (テキストだけどね)
システムの環境に依存する
文字列の変化する時に、ループ内でGDI操作が発生する(BMPだけの書き換えで対応できるかな?? 後から長い文字列がきた場合の対応...)
でかい文字はNG

列挙すると、現在の仕様での不備点は基本的に品質への問題が大きいみたいですね。なんだかテキストエディタ用のライブラリ作ってるみたいだ。
結局文字用のBMP用意から以降は、同じにできそうなので、文字用のBMP書き込みの部分を「文字の品質対する要求」パラメーターを追加して
textOutかGetGlyphOutlineで用意するか切り分けると良いかな。
あとエリア書き込みには対応しないとね(汗 文字列にCRLFがあったら書き込み位置の移動。これは大丈夫だね。

55 :名前は開発中のものです。:04/04/02 05:15 ID:nXT82zKM
プログラムは良いけど、まず企画が無いと設計できないんじゃ…

56 :名前は開発中のものです。:04/04/02 05:55 ID:XRR6zDrg
>>55
まぁいいんじゃないの。自分の得意な所から切り込んで行くのは
モチベーションを保つのに有効だと思う。


57 :親父PG:04/04/02 07:24 ID:5nHc263h
>>55
密かに「企画」はありますが、ここで公開するにはまだ未整理な部分があるので
また公開していません。現在作っているところはどのような形態のゲームでも、
取り合えずは利用する汎用部分だと思っています。

ところで、スクリプトエンジンについては、これから設計を始めるのですが、
どのようか形がやり易いのでしょうかね?

ターゲット>ゲームの企画(シナリオ)担当(if文の意味ぐらいは知っている人)
サポート予定の機能
スクリプトで(ゲームから見た)下レイヤーに対するオブジェクト命令が可能
(このフォーマットで作成しているので実装済み
WINDOWダイアログ、ボタンサイズ、ビューポートの数とサイズなどを
予めリソースエディタで編集可能(作成済み
ボタンに割り当てるグラフィックを複数パターンの割り当てができる。
マウスMOVEでアニメーション マウスHITでアニメーション 常にアニメーション
等のボタンの実装(作成済み
マウスクリック時の反応に、INDEX番号が割り付けることができる(実装済み

○問題はシナリオライター側の表現方法の実装方法
本体とは別のエディタを用意//Delphiで作成予定
 
1)ポインタがないC言語のような言語を書かせるタイプ
2)プリセット式してプルダウンメニューで一行ずつ書いていくタイプ
3)シーンごとに必用なデータ−を埋めていくタイプ

どういうのがいいんだろうね?
それこそゲームの企画ありきな話かもしれませんが^^
ご意見お待ちしています。

58 :名前は開発中のものです。:04/04/02 10:05 ID:WZRWRsbY
>>57
作るゲームが決まってなきゃスクリプトエンジンなど書けません。

何か最初の方は3Dゲー目指してる感じだったけど、スクリプトエンジンの
内容はノベルゲームを目指してるようにも聞こえるのだが…
フォントとかってアクションゲームなら使わないし、イマイチ最終的に
何を作りたいのかが分からないのだが。


59 :名前は開発中のものです。:04/04/02 10:17 ID:17ySoK39
>>58
どんなゲームだろうとフォントを全く使わないって事はないだろう。
今までどんなゲームやってたのか知らんが、
お前さんのいうアクションゲームって
たとえばどんなのよ?

60 :名前は開発中のものです。:04/04/02 10:48 ID:d2sSL+xq
>>59
ここでは厳密なフォント周りが必要ないといってるだけでは?

たとえばSTGなんかもスコアとかは表示するけどあれは
厳密なフォントのライブラリ使うようなもんじゃないだろってことかと
数字10種と「score」と表示するビットマップでいい

そしてRPGやAVGのぞくとフォント周り意識するものはほとんどない
最初は遅くてもOS標準の描画でなんの問題もない

やはり何作るか決まってないってのが一番の原因


61 :今現在この名前は使われておりません:04/04/02 10:51 ID:DFmUogFA
403 :心得をよく読みましょう :04/04/01 03:32 ID:1xz8AXwW
よろしくお願いします

【板名*】ゲ製作技術
【スレ名*】親父PGがゲームを作り始めるスレッド
【スレのURL*】http://pc5.2ch.net/test/read.cgi/gamedev/1080582036/
【名前欄】
【メール欄】sage
【本文*】↓
既に環境依存してますって(汗)
HG系はリコーの商用フォント。Windows標準では使用不可能
MS-Officeについてくるから勘違いされることが多いけどね
フォントを複数種類使いたいならEnumFontFamiliesEx使ってフォントを列挙し、
ユーザーに選ばせるのが一番安全


62 :親父PG:04/04/02 11:20 ID:5nHc263h
>>58 59 60
議論有難う。
ゲーム(種類)によって必用か不要であるかという議論は、確かにあると思います。
特に納期に追われている職業PGではなおさらでです。

その辺の議論は置いといて、「作ってしまえ!」のノリで8割型完成しましたorz
フォントの種類については、ユーザーが後からいくらでも追加できるようにして
静的配列>STL(動的配列)に変更(フォント属性をまとめて記録)
構造体のコンペアをかけて同じフォント属性を登録しないチェック
呼出回数の記録をとって、使用頻度の低い論理フォントは破棄する。
(破棄しても次回呼出の時に、自動的に再登録される)
※ご指摘いただいた問題点がとても役に立ちました

しかし、このへんはプログラマの趣味の世界に突入していますねぇ。
ゲームによってはまったく使わないかもしれなけどorz...

実は何を作りたいというのは漠然とはあるのです。
目標の物を作成する為には、FONT周りをきちんと整理しておかねばなりません。
ちょっと過去を話すとDTPの仕事(デザイナー)も経験がありまして
文字が汚いのはいやなのですorz また趣味の世界に突入してる....

>>遅くてもOS標準の描画
DirectXの描画ループでそれをやると、ちょっと問題が起こります。
いずれのゲームでも以下の処理は必要かと思われます。 
テクスチャ作成>BMP作成>文字描画>ポリゴン貼り


63 :名前は開発中のものです。:04/04/02 11:50 ID:koF3jQIY
内に秘めたり、趣味に走るのは全然問題無いのですが、
目的が分からないとアドバイスしようがないよ、という話だと思います。

64 :親父PG:04/04/02 12:08 ID:5nHc263h
>>63
なるほど、では今、思案中で是非アドバイスして欲しいことがあります
>>57
にも書きましたが、ゲーム用のスクリプトの仕様決定の為の指針についてです。
ゲームは取り合えずRPG用と仮定してください。(カードゲームや其の他にも応用化)
画面形態はドラクエと仮定します。(画面形態は固定しない仕様を考えています)

この場合、シナリオを作成する側はどのような機能が欲しいか?
どのようなレベルまでPG的な事を理解できるか? ということです。

フラグ管理機能なども必要でしょうし;

文字列を解析してデータ−を作成するというのは、自作でコンパイラを作るようなものですねぇ。
数値計算とかポーランド記法。。。
いろいろ待っていそうですね(汗 そういえば昔、電卓作ったなw

それとも今ではフリーのMASMのマクロで組むかな....

65 :名前は開発中のものです。:04/04/02 12:12 ID:hbuLfTYl
テキスト出力なら、
フォントサイズを計算 -> テクスチャの生成 -> GetGlyphOutlineのイメージをテクスチャ -> レンダリング
出力先の大きさを固定するのならサイズの計算はいらないけど。

BMP作成というのが意味不明。

66 :名前は開発中のものです。:04/04/02 12:27 ID:2mBUdLBh
>>65
素人は引っ込んでろよ。

>>64
文字主体のゲームだとしても漢字全部を入れる必要はないかと。
使用している文字吐き出して必要な分だけ抽出する仕組みを用意すれば効率いいよ。


67 :名前は開発中のものです。:04/04/02 12:48 ID:hbuLfTYl
だいたいBMP作成なんて訳の分からないことをしたら、
GetGlyphOutlineで得られるα成分はどうするの?
なんちゃって玄人の>>66よ、素人にも分かるように説明してくれ。

68 :名前は開発中のものです。:04/04/02 12:55 ID:CnIYY+bY
なんかBMPを画像(フォーマット)としてのBMPとかと勘違いしてる?

69 :名前は開発中のものです。:04/04/02 12:58 ID:WZRWRsbY
>>67
お前ゲーム機用の開発した事ないだろ?


70 :名前は開発中のものです。:04/04/02 13:03 ID:hbuLfTYl
>>68
GetGlyphOutlineのイメージをテクスチャ に転送する際に、
BMPがDIBや自分で確保したヒープであっても、
余計なものを経由して、わざわざ動作を遅くする理由は?

>>69
DirectX経由の話であって、コンシューマーの話ではないはずだが、
何を言っているのかますます意味不明。

71 :名前は開発中のものです。:04/04/02 13:05 ID:sbRQNnGs
>>57
作業がしやすいなら(使いたい機能を感覚的に探せる)どんなタイプでもかまわない。

最低限の改行/改ページ指定の入った文章をスクリプト書式に変換(もしくはデータ化)
でき、可能ならその逆(スクリプトからほとんど文章のみの形にする)もできるようにして欲しい。
校正しやすい形でシナリオを書きたいからね。


72 :名前は開発中のものです。:04/04/02 13:08 ID:hbuLfTYl
BMPを経由する理由というのがあるのなら、
その時点で私のよけいなお節介だったというだけの話なんだが。
話が別のところへ行きそうな予感。

73 :名前は開発中のものです。:04/04/02 13:53 ID:2mBUdLBh
いやもうウザイんで消えて。なにやるか判ってないのにアドバイスできると
思ってる池沼にはうんざり。

74 :名前は開発中のものです。:04/04/02 14:09 ID:2oL9ZmmW
>>73
何故BMPなんて余計なものを経由するのか、明確な説明があれば即消えるけど。
なんで理由を書かずに、高圧的な書き込みだけ残していくの?
理由があればそれでよし、無駄な部分なら省けばいいだけの話題なんだが。

75 :名前は開発中のものです。:04/04/02 14:12 ID:MlWn9c9H
けんかやめれ

抱きしめてやるよ俺が

76 :名前は開発中のものです。:04/04/02 14:20 ID:J12mvrUf
テクスチャを利用する場合は、アルファで透明色の設定が必要になるから、
例えば、
TextOut>DIB>テクスチャ
なんかの場合は、透明色をテクスチャに設定し直さなければならないので、
GetGlyphOutlineからダイレクトの方が効率がいいのでは?

77 :名前は開発中のものです。:04/04/02 15:04 ID:UR9wlBoP
俺も>>68とか意味がわからんので教えて欲しいな。
しかし、このスレはいろんな意味でマズーだなぁ・・。
いいのかこんなんで、みたいな。

78 :名前は開発中のものです。:04/04/02 15:16 ID:WZRWRsbY
>>77
お前プロじゃないだろ?


79 :名前は開発中のものです。:04/04/02 15:24 ID:2oL9ZmmW
結局なにも説明できず、煽ってごまかすことしかできないとは。
それがプロの仕事なのか?
文句があるのなら技術的に突っ込みを入れればいいだけなのに。

80 :親父PG:04/04/02 15:26 ID:5nHc263h
>>76
ダイレクトというのはこういう形ですよね
       文字データ−GetGlyphOutline
         V     
DIB(背景)> OR加合 > テクスチャ>ポリゴン貼り付け

(DIB(背景)はなくてもOK)

○TextOutを使う場合
透明色については単にORで演算すると抜けてくれますので大丈夫です。
DIB(BMP)そこに背景の画像も同時に保持する為です。
textoutの為に(内部に)BMPが必用なので作成しております。
ループ開始前にハンドルで保持できるという、運用上のメリットもあります。

○GetGlyphOutline
ループの中で文字データ−を作成するのは、文字列が変更した時意外は極力避けるべきなので
事前に何処かに置いておく必用があります。
TextOutの時にはBMPがありましたので、そこに保持しています。
(メモリと同じ扱いですね)
同じロジック上で動くならその上に置いておけばいいや!という考えなのですけどね...
ところでこの関数は1文字ずつしか機能しないのですが、そのへんの速度って大丈夫なのでしょうか?

まとめ
当初 TextOut命令でFONTデータ−を作成する仕様だったので、当然(内部)BMPを作って
ハンドルを保持する形が生まれた。
しかしそれではアウトラインが汚いので、ユーザーが切り替えられる仕様を追加した。
既にBMP経由のロジックが出来ているので、単にGetGlyphOutlineデータ−を置いておくメモリとしてBMPを使用した。

ざっとこういう理由でBMPがこの中に残っています。
保持するBMPは1ピクセル8ビット深度フォーマットで作成。これなら両方のデータ−を収めることが可能

こんな感じかな... 俺はなにか間違えているのだろうか orz.....

81 :名前は開発中のものです。:04/04/02 15:28 ID:koF3jQIY
理由を書かないやつは>>75に抱きしめてもらえ


82 :名前は開発中のものです。:04/04/02 15:40 ID:2oL9ZmmW
根本的なところに考え方に食い違いがあるようなんだけど、
なぜレンダリング時にハードウェア側で背景とフォントを合成しないの?
>文字列が変更した時意外
背景と分離しておけば、背景が動的に更新される場合も、
文字列に変更がなければ、文字列用のテクスチャを書き換える必要が無い。
背景は更新されないことが前提?

83 :親父PG:04/04/02 15:58 ID:5nHc263h

>>71
校正の容易さについては重要な指針とさせてもらいます。

==============================================================
言語仕様のプラン
1)Cライク
if (fg[24]==25){
 PUTMES(1,1,'メッセージ出力');
}
2)単純化したもの
[24]==25,PUTMES,メッセージ出力;

3)EXCELを前提
PUTMES,'メッセージ出力'(24,=,25);

こういう形よりWEBのツリー型の掲示板のような形のほうがいいのかなぁ...
Parlで組むか!(orz スミマセン ジョウダンデス


84 :親父PG:04/04/02 16:00 ID:5nHc263h
>>82
ごめんなさいorz
データは背景用と文字用と2つ持っています。
レンダリング直前に加算してます。

85 :名前は開発中のものです。:04/04/02 16:05 ID:2oL9ZmmW
レンダリング直前というのが謎なんだけど、
テクスチャを使っているのなら、なぜレンダリング時に、
ハードウェア側で合成をかけずに、その前過程で合成するのかが疑問。

86 :名前は開発中のものです。:04/04/02 16:18 ID:MlWn9c9H
世の中にはいろんな人がいるものさ

87 :親父PG:04/04/02 16:20 ID:5nHc263h
>>85
ポリゴンに張り込むテクスチャ1枚目に、データ−を放り込んだらうまくいったからというのが理由です。深い意味はありませぬorz

加合用の2枚目のテクスチャをさらに別途用意して、データ−を他所からもってくるなら(他にいろんな可能性があるとはいえ)
テクスチャは1枚でいいような気もするのですが...


88 :名前は開発中のものです。:04/04/02 16:34 ID:2oL9ZmmW
ハードウェアとソフトウェアでは合成速度に雲泥の差があるんだけど。
それにゲームの内容にもよるけど、サウンドノベルでもなければ、
普通は背景が一枚絵である場合は少ない。
複数のパーツを結合して背景やキャラクターを合成して、
一つのフレームを生成するわけなんだけど。
もしかして3Dデバイス経由でノベルのシステムを作るという話だったの?
だったらすまなかった、この話は忘れて。

89 :名前は開発中のものです。:04/04/02 16:55 ID:d2sSL+xq
>>88
とりあえず目標はRPGらしいぞ
だからフォントなんかで速度がネックになるところはないと思われ

最適化に目がいくのはいいが、さっさとゲーム作り始める方がいいような
ネックになる場所とかもそれではじめてでてくるとかあるかもしれんし

#そういや親父のわりに真っ昼間から時間あるんだな


90 :77:04/04/02 17:01 ID:UR9wlBoP
普通D3Dなら、フォントテーブルはD3DFMT_A8で作って
マルチテクスチャブレンディングで加工・表示するもんだと思っていたが。
確かに俺は素人だが、、、まあいいけどさ。

91 :親父PG:04/04/02 17:05 ID:5nHc263h
>>89
今日は非番で休みです。
明日は仕事ですorz...

92 :名前は開発中のものです。:04/04/02 17:34 ID:d2sSL+xq
>>91
スマン

非番という言葉使っていることからタイムシフト系か
つらそうだな


93 :名前は開発中のものです。:04/04/03 22:06 ID:od+9QL8M
おやっさん、頑張れ。
密かに応援しているぞ。

94 :親父PG:04/04/03 23:27 ID:0WOw9AyH
>>92 93
どうもありがとう。その言葉を励みに頑張ります。
今仕事から戻ってきました。土曜日は電車が空いてるので、ひざの上でPG組んでました(w
電車には携帯電話禁止と書いてあるが、携帯パソコン禁止とは書いてないからな。

GetGlyphOutline って結構面倒ですね。まだ動きがおかしいorz

文字列からひとつひとつコードを取り出さないといけないし、
UINTに対応して上位バイトと下位バイトを入れ替えなど...

ほんとにこんな処理をループ中にして大丈夫なのかな。
毎フレームやることじゃないな。この処理


95 :名前は開発中のものです。:04/04/04 01:15 ID:jA6y2hbu
ライブラリとかフレームワーク作るだけで力尽きないように
SDLとか使うのもいいのではないかと。

96 :親父PG:04/04/04 09:51 ID:6UsE36R6
DIBについてトリビアを発見しました。

BITMAPINFOHEDERのbiHeight メンバを−にしてDIBを作成すると
左上原点のボトムダウンDIBになる。

既に概出かもしれませんが.....orz

97 :名前は開発中のものです。:04/04/04 11:59 ID:KpeQdK+f
それって10年前からやってたんだが

そのまま書き出しても一部対応してないビューアとかあるけど
内部で使うだけなら問題ない


98 :新人PG:04/04/04 12:24 ID:yroz7+Kx
面白そうなので参加したいな。
当方C,C++,C#,VB,Java,Perl,ASM何でもOK。DirectX触った事なしです。
親父PG様の進行を妨げない、便利屋PGとして徹しますので。

99 :親父PG:04/04/04 13:51 ID:6UsE36R6
>>97
1994年から?
win3.1の頃からそうだっけ?
orzオレハ10ネントテツモナクムダナコトヲシテタノカ....

>>98
おお!参加表明有難う。
もし、やってもらえるなら、前にも書きましたが
シナリオエディタとデータ−規格の設計をお願いしたいです。
フラグ管理も「履歴」機能を追加して「過去4回きてれば」というようなものも欲しいですね。
データの規格が煮詰まれば、こちらでもツールを作ります。
ここでデータの設計を進めましょう。

現在動いている下位レイヤーでは、引数として
「対象ビューポート」、「対象オブジェクト」、「呼出タグ」などが設定できます。
※ピューポート画面分割だと思ってください。

現在、プログラム起動時にビューポート数とその大きさ、「ボタン128個(反応レクト領域数)」、テクスチャファイル名
が入ったファイルを読み込んで画面が変化するようにしています。
またこのプロファイルは何度でも読み直しができます。(画面デザイン切替可能)
(※以上は稼働中)

作成する(予定)の物は
昔、(今もか)ソーサリアンというゲームがありましたが、そのシステムを拡大.拡張する予定です。
(シナリオはヨコスクロールに限定しない)
あと、DirectX SDK落としてきてサンプル覗いてみてください。
経験のある方なら動かすぐらいは簡単にできると思います。^^)|~
アイテムデータの作成は本体PGに持たずに、外部にDLLとして実装して、
他のアプリケーションからも使用可能にします。

うーむ勢いで...公言してしまった。orz ダイジョウブカナ...

100 :名前は開発中のものです。:04/04/04 14:08 ID:ppxkrtRX
ソーサリアンの拡張版!?
それは楽しみ。

絵とか音楽とか必要な段階になったら、
状況が許せばお手伝いします。

101 :新人PG:04/04/04 14:53 ID:yroz7+Kx
>>親父PG
快い回答ありがとうございます。
いきなりそんな重要な部分の設計を任せてもらって感謝とガクブルが半々ぐらですw
勝手ながら、まとめページを作ってしまいました・・・いらなかったら消します(^^;
http://www.geocities.jp/oyajipg/index.html
うpローダとか考えたのですが、ちょっと様子見ということで個人サイト形式です。

シナリオエディタとデータ規格ですね?
先にデータ規格の方の設計を考えておきます。でわ。

102 :名前は開発中のものです。:04/04/04 15:15 ID:KpeQdK+f
最初からソーサリアンみたいなの作りたいとかいっとけば
流れ分かりやすくてよかったかも
ソーサリアンシステムの概要はしっとるかな?
まぁ、今なら参考にすることはあんまり無いと思うけどね

winはwinでもNT3.1、3.5あたりのお話
win32apiは「new」とかついてたような

新人PGさんのほうがシステムの設計か
なんか逆のような気がしないでもないがw

こういうのはシステムとプラグイン部分の分離が最重要だから
そのへんどうにでもなるようにUTF8でXMLで書き出せておけばいいようなツール類を
量産すべし・・・かな
知っている言語にjava、C#があるのでそのへんは楽っしょ


103 :新人PG:04/04/04 15:32 ID:yroz7+Kx
>>102
実はソーサリアンって知りません・・・w
とりあえず、親父PGの意向のままに〜と思っています。

最初同じくXMLでの規格設計を考えていたんだけど、結局はパーサ介してC++で
実装すると思うと、ちょっと躊躇してしまうんすけどね。
いや、C#やJavaでXML処理なんて全然大した事じゃないんですけど、C++だとちょっと
敷居が高いじゃないですか。データ処理をするのにパーサー理解などの学習コストが
あるんですが、そこん所どうなんでしょ?
こちらは一応、Xerces-C++使った経験多少あり。日本語処理とかって今どうなっているんだろう・・・?
ICUとか使うのかな?規格よりも実装に目が行ってしまう、典型的プログラマですなw

104 :名前は開発中のものです。:04/04/04 15:41 ID:PaXg2AQi
ソーサリアンか。懐かしいの選ぶねぇ。

105 :親父PG:04/04/04 16:27 ID:6UsE36R6
>>101
こちらこそよろしくお願いします。 というか教わることが多いかも^^;

HP有難う立派なもの作って頂いて! 感動ですよつ∇;)
>>102
データ−をUTF8ですか...メリットとデメリットを考えていきましょう。

ツール類に関してですが、私はdelphi使おうかと思ってます。
なにかと文字操作するのは「言語的に得意」なので...
でもCビルダーもいいかもしれませんね。

ちなみに私はVC++(2002)NETとThinkPad(セレ2G)Windows2000で開発してます。
よってこのマシンで動くように作ります(W
GPUはintel82855です。この石でサポートしない機能は使わない。

自分中心でハード仕様決定です。 
ノートで動くならサポートする環境も増えると思うので


106 :親父PG:04/04/04 16:45 ID:6UsE36R6
文字のアウトラインを取得する為のコード取得ルーチン
○文字は2バイトと1バイトコードが混じる可能性あり

UINT string_code;
char c1;
unsigned short int c2;
char Moji[48];
for ( int iC=0; iC < lstrlen(Moji);++iC ){
 c1= Moji[iC];//1バイトコード取得
 c2= ( (Moji[iC]<<8 ) + unsigned char (Moji[iC+1]) ) ;
 if ( 0<c1 && c1<128 ){//-の価をチェックルーチンに回すとランタイムエラー
  if ( __iscsym(int(c1))!=0 ){
   string_code=c1;
  }
 }else {1byteではないなら2バイトコード
  int cc0=_ismbcl0(c2),cc1=_ismbcl1(c2),cc2=_ismbcl2(c2),cn=_ismbchira(c2),ck=_ismbckata(c2);
  if ( (( cc0 =! 0)||( cc1 =! 0)||( cc2 =! 0)||( cn != 0)||( ck != 0)) ){
  //2バイトコード if ( _ismbcl0(c2)!=0 )こういう書き方できない為
   iC++;
   string_code=c2;
   }else{
    string_code=c1;//BPt置いて監視 上から漏れてくるコードあるかな?
   }
 }
fsize=::GetGlyphOutline( hDC, string_code, GGO_GRAY4_BITMAP, &stGlyphmtrics, 0, NULL, &mat );
...
}//end of for
もっといい方法ありますかね? orz....コンナショリ ビョウガループにイレラレルノカ????


107 :新人PG:04/04/04 16:58 ID:yroz7+Kx
>>105
とりあえず、データ規格の概要の構想を提案します。
1)基本的に、データと実装部の分離は出来る限り行う。
2)スクリプトは簡易インタプリタ言語
3)実装部とスクリプトはイベントドリブンの関係

1)はゲーム進行そのものをスクリプトに持たせようってな設計構想です。
しかし、汎用的なものを考えてはいません。あくまで現ゲームに必要最小限の規格を考えています。
2)は企画者やシナリオライターにプログラムを覚えてもらうものです・・・てのは嘘で、
ツールによる作成が出来る程度の簡易インタプリタを考えています。
変数をハッシュ化させて管理する機能などで、フラグ管理などを考えています。
3)は、まだ頭の中でモワモワしています。そのうち図などで詳しく書きますw

データ形式ですけど、XMLでも独自形式でもいいような気がします。(ダメ?)
ここは、自分の裁量で決めかねるので親父PGさんが決めちゃってください。

ツール作りはDephiでつか・・・。
C#.NETとかだと、ツール作りに参加できそうなのですけど・・・。

108 :新人PG:04/04/04 17:21 ID:yroz7+Kx
>>106
ぜんっぜん試してないので、嘘こいているかもしれないですけど・・・。
一度、GetGlyphOutlineをコールしてバッファサイズを取得してから、実際のバッファを
いれてやれば良いような話がありました。
ttp://www.twin-tail.jp/contents/pg_tips/tips000.htm

こういうのではないでしょうか・・・?

109 :名前は開発中のものです。:04/04/04 17:34 ID:D8QJdaIr
1バイトでなければ2バイトってのはどうかと。

110 :親父PG:04/04/04 17:50 ID:6UsE36R6
>>108
どもどもお気ずかいありがとう。
それはバッファサイズの話ですね。
先ほどのコードはその前の「文字コード」を切り取る部分です。
あの関数(GetGlyphOutline)は1文字ずつしか処理できませんので、

LOOP
文字列>1文字切り取り>バッファサイズ取得(GetGlyphOutline)>バッファ作成>
アウトライン取得(GetGlyphOutline)>バッファから目標へコピー

バッファ開放
文字列ポインタインクリメント
目標のポインタを文字幅分加算
LOOPEND
このような流れになりますです。orzナンカクロウノワリニ....

データ形式についてはもう少し、デメリットとメリットを合わせて決めましょう
でツールですが、データ−の形式さえ決まっていれば、データ−互換で各自つくればいいかなぁと。
あんまり色々ケチって悩むより、作ったほうが早いというのが持論なのでorz..ソレデイタイメニアッテルケド

シナリオ作成については実績のある「ツクール」等を参考にしたほうがいいのかもしれませんが
実は見たこと無いので今度買ってきますかね^^;orz見てイヤニナルカモシレナイケド

私が大昔にゲームのシナリオ作成方法を聞いた時には、担当のPGの方は
TASM(ターボアセンブラ)のマクロで作成していました。
ライターの方は制御文を含めてシナリオを書いていたようです。

ライターにはBASIC作成能力ぐらいは求めていたようです。
昨今どうなのでしょうかね? 私もこのあたりが知りたいです。


111 :親父PG:04/04/04 17:56 ID:6UsE36R6
>>109
よく見ていただけでは解りますが、ます1バイトでチェック
次に2バイトでチェック チェックの結果がTRUEの場合のみ実際に2バイトコードとして扱っています
(is関数)
第一水準第2水準 基本 かな かたかなの全てチェックしておりますです。

うにこーどとマルチバイト文字はサポートしてません。
チェックを入れることは可能ですが、それは別のところで一括変換されるべきでしょう。



112 :名前は開発中のものです。:04/04/04 18:17 ID:KpeQdK+f
Xerces-Cでいいんじゃないの?最近のはしらんけど

本システムはVCでもツール類はちょこちょこつくって軽くテスト、
軽く改良って感じなので作りやすいのがいいと思うよ

そうなるとGUIが容易でとなるのでBCB、Delphi、java、c#くらいが
まず選択肢になると思う
あ、Delphiで気軽に使えるXMLパーサってあったかな

UTF8って選択はXML扱うならどの環境でも必須条件なので扱いやすい
たとえばmacユーザーにマップツール使ってもらうとか考えるとjavaも悪くない
複数の人に使ってもらうという前提が必要ならね

ソーサリアン知らないとなるとどう説明していいのやら
こんなあたりが参考になるのかな
ttp://www.ipc-tokai.or.jp/~ytanaka/pc88/sorc_pi.shtml


113 :新人PG:04/04/04 18:45 ID:yroz7+Kx
>>110
全然違う話だったのね・・・鬱だ(ry

とりあえず、規格設計だけは作っておきます。
それからXMLか独自で組むかは、決めたほうが良いかなと思いますんで。

>>112
日本語処理が多いとUTF16という選択もあるんだけど、ゲームの概要が見えてないのでダメポ。
とりあえず、今はWindowsで動くものをw
機会あればやってみますわ<ソーサリアン
デモもありましたし。

114 :親父PG:04/04/04 19:14 ID:6UsE36R6
>>112
あらためて偉大さを感じますね。紹介のHPをしみじみと読ませて頂きました。
メモリが足らなくなったら、メモリの内容をそのままDISKに保存。
プログラムをスワップするとかやってましたなぁ。

>>113
全然違う話ではないのですけどね^^
そうそう実際にコード切り取る時どうします?
あの関数についてぐぐって見たけどコードを切り取る部分は、書いてないのが多いので....

XMLについては「XMLのフォーマットがゲームデータ−の表すのに適しているか?」
の一点で評価しましょう。
現状ではXML形式に保存(できる)というスタンスで良いと思います。
そもそも「何をどのように保存するか?」が煮詰まらないと、決められないと思いますので。

これから夜勤です。orz



115 :名前は開発中のものです。:04/04/04 19:24 ID:KpeQdK+f
XMLは慣れると内部データにも使いやすいよ
domツリーそのままというよりはElementを多用するというか

MapとListを自由に組み合わせれるコレクション型と考えればいいかな

CPUが1GHz超えているのなら
メインループでDOMツリーガリガリ操作していても余裕で60fpsくらいでますぜ

116 :名前は開発中のものです。:04/04/04 22:15 ID:PaXg2AQi
というかXMLで表せないデータなんかあるのかねぇ。
今は猫も杓子もXML使っとけという流れだけど。

117 :親父PG:04/04/04 22:17 ID:3txQVYNu
ゲームのデータ-について 草案を書きます。●トリガーテーブル ●シーンデーター という2つのデータ形式から構成される
●トリガーテーブル
トリガーテーブルには(selfNO)トリガー条件とトリガー番号が固定長で収納する
編集時はエクセルでの編集を可能にする。
最終的に数値セルをバイナリに落す(要コンバーター)
NO INT
比較先場所FG BYTE 
比較先FGNO INT (直接値の場合もあり)
比較先場所FG BYTE 
比較先FGNO INT (直接値の場合もあり)
比較条件 BYTE == != > < >= <= !

トリガー種類FG BYTE (MOVE FG値操作 次処理 シーン呼び出し)
トリガ用パラメーター1(処理先NO)INT
トリガ用パラメーター2(処理先NO)INT
トリガ用パラメーター3(処理先NO)INT
 リザーブ(24か32Byte境界) 

●シーンデータ-
シーンデータ-にはメッセージやウインドの処理などが書かれる。
またシーン終了時にどのトリガー条件に戻すかが書かれている。

※トリガーテーブルデータ-は、純粋に条件の表現だけに特化しゲーム特有の処理を含ませない。
シーンデータ-は実際に行いたい具体的な処理を書くようにする。
------------------------------------------------------
一定周期、ないしはアクションが会った後、トリガーテーブルを参照する。

●その他のデーター
・キャラクターデーター 本企画はキャラクターデータ-を中心に考えている(ソーサリアン的)
・アイテムデータ- DLLで供給 ・魔法?のデータ-
・プレイヤーのデータ-
TRPGのD&Dは有り余る金で城建てたり、ダンジョン掘ったり、タワー建てたり、いろいろできるんだよね。テキストレベルでいいからそういうのもエミュレーションしたいねぇ。

118 :親父PG:04/04/04 22:28 ID:3txQVYNu
>>100
ああ すみません読み飛ばしていましたorz

画像班もいてくれると大助かりです。宜しくお願いします

119 :ミVミlPG:04/04/04 22:36 ID:yroz7+Kx
http://www.geocities.jp/oyajipg/up/format.GIF
http://www.geocities.jp/oyajipg/up/data.xml
以上適当に雛型っぽいのを作ってみました・・・。

が・・・草案を見る限り、XMLではないのでしょうか・・・。

120 :新人PG:04/04/04 22:42 ID:yroz7+Kx
>>119
うご、文字化けてる。
一応XML互換と言う事で、>>117の草案を元に練り直します。

121 :親父PG:04/04/04 23:07 ID:3txQVYNu
>>120
ご苦労おかけします。orz


122 :新人PG:04/04/04 23:42 ID:yroz7+Kx
>>121
ちょっとトリガーテーブルの記述が判りにくかったので解説求む。

123 :名前は開発中のものです。:04/04/04 23:48 ID:D8QJdaIr
>>119
プロパティ多用なんかキモイ

124 :新人PG:04/04/04 23:58 ID:yroz7+Kx
寝ます。
平日の書き込みペース&進捗はかなり落ちますので、そこんとこよろしくお願いします。

>>123
もうちょっと踏み込んで設計していたらもっとキモイフォーマットが出来ていたかと思います。
XmlSchemeなんてこんな物では?

125 :名前は開発中のものです。:04/04/05 00:15 ID:C13/cZA5
俺も>>123のいうことがわからん


126 :名前は開発中のものです。:04/04/05 00:16 ID:C13/cZA5
ま、ゲームで扱うものならdtd程度でいいとは思うけどね


127 :名前は開発中のものです。:04/04/05 02:34 ID:aEWGS1EG
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9818&forum=9&13

128 :親父PG:04/04/05 03:55 ID:OF5lxvl4
>>124
●トリガーテーブル
トリガーテーブルには(selfNO)トリガー条件とトリガー番号が固定長で収納する
固定長にするメリットは内部で高速に動作させる事と、EXCELで簡単に編集できるなどを
考慮してです。

struct {
int SelfID; //シリアル番号
byte CmpSeed1;  //int CmpTarget1が何を示すかの種類 FGテーブル デバイス 関数戻り値 値
int CmpTarget1; //値
byte CmpSeed2;  //int2 CmpTarget1が何を示すかの種類 FGテーブル デバイス 関数戻り値 値
int CmpTarget2; //値
byte CmpOP; //上の値の比較方法
byte CmpOP; //真/偽どちらを使うか? (追加
short int ActCommand ; //何をするか? MOVE FG値操作 次処理 シーン呼び出し
int ActValue1; //値 ActCommandによって扱いが異なる
int ActValue2; 
int ActValue3;
//リザーブ(24か32Byte境界) 
};

値を比較するときに、「何処の値」を示すのが CmpSeed1


このように値の前に「何処の」というフラグをつけて対応します。
255種類もあれば大丈夫でしょう

何かご意見があればドシドシ募集中です。まだこれは草案なので
こんなものも追加したほうがよい! などまだあるはずです。
トイレで考えたのを書いただけだから^^;..

こんな説明でよろしいでしょうか?orzワカリニククテスマン...

129 :親父PG:04/04/05 04:03 ID:OF5lxvl4
>>119
画像のほうのリンクで「モビットの広告画像」が出てきて、ツボニはまりました
>>127
興味深いお話ですね。フラグチェックループのことを考えると、XMLの生データーを
本体では直接は持たないと思います。(翻訳エンジンで先ほどの形に落とし込みます)


130 :親父PG:04/04/05 06:49 ID:OF5lxvl4
先日から行っていた文字ライブラリの速度計測
セレ2.0G 1024*768 WINDWモード の平均fps105に置いて
高精度アウトライン文字使用 マウス座標を表示 文字数1-4 フォントサイズ40程度
において

3-4fps消費しました。 少し重いねorz


131 :名前は開発中のものです。:04/04/05 10:35 ID:tRuvkc6W
親父PGって何歳なん?


132 :名前は開発中のものです。:04/04/05 11:46 ID:C13/cZA5
1024*768のウインドウモードでその程度ならなんの問題ないと思うんだが


133 :親父PG:04/04/05 11:49 ID:6z0RwfU5
>>131
現在のLVではそれは使用できません。orz嘘ですゴメンナサイ

取り合えず、妻子持ちという事で^^

あと2〜3週間を目処にいったんあぷします。


134 :名前は開発中のものです。:04/04/05 12:26 ID:tRuvkc6W
親父PGたんのスペックおしえて。
身長、体重、血液型など。


135 :名前は開発中のものです。:04/04/05 14:01 ID:405E+F+V
>>130
どこが重いの?
同じ大きさのビットマップを同じ数
AlphaBlendとかTransparentBltしてみると
それに近い数値で減ると思うけど。

136 :新人PG:04/04/05 21:20 ID:1nSnHjPt
ただいま帰りました。

>>126
勉強も兼ねてXmlSchemeで・・・(^^;

>>128
Excel編集可能な規格はちょっと考えつかないっす。
CSV形式(独自フォーマット)でよければ作れますが・・・。
(XMLデータ)⇔ツール編集 → コンバータ → バイナリ
上記みたいな構成でいいのでしょうか?
バイナリを直接Excelで編集する事を考えています?

#DirectXの本を買っちゃいました。(DirectX9実践プログラム 工学社)
#あんまりMSのサンプルやリファレンスと変わらないのでちょっと損した感じ・・・。

137 :親父PG:04/04/06 01:40 ID:40Qsawby
>>134
むむ、個人スペックですかい。
身長178.8 体重85ぐらい 血はAです。肝機能障害ありですorz....
>>135
表示している内容に対して重いと思います。orz...

>>136
お疲れさま。資料本買ったのですね^^; 有難う。

データ-の形式については、作り込んで貰う前にいろいろと検討しましょう。
そうでないと作ってもらってから仕様変更になりかねません。orzシノビナイ...
これは私の考えなのですが、ひとつ議題のたたき台につかってください。

●シナリオデータ-は本体のプログラムが読み込む前に、一旦最適化されたバイナリ形式に落とし込む。
(本体にXML関連のLIBは持たない)
●各ツールの互換性はこのバイナリデータ-互換でおこなう
EXCELでの編集は一旦バイナリ<>CSVツールを作ってトリガーテーブル部分のみを編集できる。というスタイルになります

●必要なデータ-群
トリガーテーブル (トリガーが書かれている 固定長)
シーンデータ- (処理が書かれている 可変長)
ストリングテーブル (名前などストリング系のテーブル)
ファイルネームテーブル (ファイルネームを収めます)
マップデータ- (地形を表すデータ-)
アイテムデータ- (魔法とかキャラデータ-など....)

ゲーム管理用データ-(画面分割数 ボタン大きさや処理等)<こちらで作りました

ざっとこんな感じです。まとめたほうが良いデータ-もありますね
また単独であったほうが良いファイルもあります。

コレ全部の仕様決めるのは大変ですが、一つ一つ詰めていきましょう。

138 :名前は開発中のものです。:04/04/06 11:23 ID:7yXcmumh
作る課程を楽しむのならいいけど
ゲームを完成させるのが最終目的ならば富豪的プログラミングでいいとおもうけどなぁ

空中分解するスレ何度も見てきているので完成後の最適化とかバランス調整とか
そっちに時間かけて欲しいと思ったり

139 :親父PG:04/04/06 14:03 ID:QeLHJL6C
>>138
お気つかい有難う。
過程を楽しんでいるのはもちろんですが。
今はゲームを作る為の環境を整えているところです。
まったくの0からなので、時間はかかってしまいますが^^;

文字周りが一息ついたところで、WINDOWSシステムを作ります。
リソースデータ(構築データ−)より作成されるシステムとなり
データ−>翻訳>内部ルーチン呼出 という流れを
本格的にサポートする為の、雛型になると考えています。



140 :名前は開発中のものです。:04/04/06 14:57 ID:ZvDa+4W9
親父PGたん、むちむち体型なの?
背は高いね。きっとダンディーなんだろうな。

オヤジPGタン(´Д`)ハァハァハァ


141 :名前は開発中のものです。:04/04/06 18:32 ID:LJa+6Bu1
もしフリーソフトの
RPGツクール出来たら
凄い需要があると思う
この板の神になるかも

142 :名前は開発中のものです。:04/04/06 19:36 ID:oZfK2l07
いきなりコードを書き始めるプロジェクトの顛末。
まあ期待しないでROMってるよ。がんばってね。


143 :新人PG:04/04/06 21:52 ID:4g++6UBP
ただいま帰りました・・・。てか、親父PGタン書き込み夜遅すぎ。一日ループしてしまいますね。
ちょっとまとめです。
1)トリガーデータ(フラグ管理やシーン遷移を定義)
2)シーンデータ(シーン管理。シナリオ、トリガーデータや画面管理用データと関連する?)
3)シナリオデータ(シーンデータと同義?)
4)ストリングテーブル(プレイヤーに表示するシステムメッセージ等?)
5)ファイルネームテーブル(ファイルを管理)
6)マップデータ(マップフィールド定義)
7)アイテムデータ(魔法やら道具やら敵やら・・・?)
8)画面管理用データ(システムデータ)
・・・等の定義ファイルがあるって事ですね。
僕からは1,2,3の草案より規格案を出していきます。(ひょっとしてもう頭の中では纏ってます?)
しかし、このファイルの感じですとシーンデータの負荷は大きいですね。
もうちょっとヒントをお願いします・・・w
他4,5は最初はMAP形式のファイルで良いような気がします。
6はどうするんでしょう。俯瞰型かフロントビューの視点のRPGを想像していたのですが親父PG様はどう考えられてます?
7はまだまだ判りませんね・・・wヒントお願いします。
8は完成されていると言う事なので期待プラス参考させていただきマス。(8に1,2,3のデータとの絡みは無いですか?)

144 :名前は開発中のものです。:04/04/07 03:22 ID:BZdMbvQi
マップデータとトリガデータ分離するの?
編集はエディタのみで、単にファイルが分離しているだけならいいけど。
データ間の依存関係は、データ修正の手間が軽いかどうかを重視するのが
よいと思うがどうか。
3Dなら特定のオブジェクトをトリガとして扱う(ダミーノードやボーンがあるモデラなら
それを使う)
2Dなら、どーせマップエディタ作るんだから、編集はエディタのみの1箇所なので
無問題
って感じ?

あと、>>128
> 255種類もあれば大丈夫でしょう
ケチらなくてもw
こんな構造体作るよりは、スクリプトをキックしてスクリプトにフラグ判断させて、
スクリプトからイベント(ここではただの会話もイベントとしよう)をキックさせた方が、
作成も変更も管理もらくだと思うけど。


145 :親父PG:04/04/07 05:27 ID:4mfJMcZS
>>140 ハァハァキター(W
>>141 ツクールとは視点が違うのですが、データ−互換ゲーム環境を考えています。
その上でデータフォーマットを公開しますので、いろんなシナリオやサブセットプラグイン等を
募集いたしますorz アイテニサレナイカモ....
>>142 半年前からコツコツやってました。これからも生暖かく見守ってお守りくださいまし...

>>143
どうもお疲れ様
>てか、親父PGタン書き込み夜遅すぎ。一日ループしてしまいますね
それは夜勤の時、コッソリ(Ry まぁまったりいきましょう。1日考えるぐらいがちょうどいいやも

草案で出した案は最終的なバイナリのイメージです。トリガテーブルはそれれ自体が
フラグを拡張したものだと考えることができます。
144氏の発言>スクリプトをキックしてスクリプトにフラグ判断
トリガーテーブル自体が他のトリガーやシーンを呼び出して、その結果を判断できます。
おっしゃることは実現可能かと思います。
シーンデータ−には、5W1H(のようなもの)が定義されます
ビューポート1番に定義されたウィンドをこの場所に開き、メッセージを表示しろ
以下「メッセージデータ」:戻り値
このようなデータになると思われます。
本体側インターフェースを提示しないと作りにくいとは思いますが、暫定で進めてください
ある程度はこちらも合わせます。
※私の申してる話は、データ−の最終形態なので、実際のツール類はそれぞれ最適化されたデータ−で
ソースを持つのがよろしいかと。しかし、最後はコンパイルされて、一定のバイナリに落とし込みます。


146 :親父PG:04/04/07 05:29 ID:4mfJMcZS
4 ストリングテーブルには「固有名詞」や「ユーザー定義」の文字を収納します
st1 "ぴたごらすいっち"と定義 
メッセージデータ #1はNHKのTV番組 >ぴたごらすいっちはNHKのTV番組

6 struct MAPBASE{byte Maptype,MoveCost,ToDo,Maptype2}:
こんなのを配列で持つのはどうですか?

7 この部分はを考えるのは一番楽しい部分かなぁ(w
  属性追加タイプを考えています。熱く寒く丈夫で黒光りする腐った剣 とかorz結局ツカエルノカ?コノケン...

8 バイナリデータ−で固定長データ−です。
それとは別にテクスチャテーブルもあり、セットで運用しています。
ちょっとずつ変わっていますが、この後出しますね。


147 :親父PG:04/04/07 06:09 ID:4mfJMcZS
struct ViewPortSetting{
 unsigned int ClientSizeX,ClientSizeY,ViewPortSize;
 dRECT  RECTS[MAXPANEL];
 dOption OPTIONS[MAXPANEL];
};
struct dOption{
short int TextureNum ;//テクスチャー論理番号
short int TextureNum2;//テクスチャー論理番号2枚目
short int D3D ;//基本座標系 1 混在 2 2D 3 3D
unsigned char Z1; //1枚目Zの価
unsigned char Z2; //2枚目Zの価
unsigned int hTexture2;
unsigned int hTexture;//上に貼り付けるテクスチャのハンドル システム側でセット
unsigned int hTextureBox;//ポリゴンのハンドルシステム側でセットされる
};
2枚目のテクスチャは上に重ね合わせるためにあります。(抜き処理か半透明使用)

ボタンの設定一部略
struct dBOption{
short int Parent;//親のView番号
unsigned int SelfID;//自分自身の番号
short int BaseTexture;//テクスチャのBASE番号
short int CoTexture;//テクスチャ内の子INDEX番号
short int BTOption;//動作 0なし 1以上の価でボタンアクションの種類を指定
unsigned int ON_LDownMouse;// アクション番号 0はなし
unsigned int ON_RDownMouse;/ ここで呼び出す関数番号を指定する

※シナリオからみるべきはボタンの処理番号になるのかな?
場面切替の場合はビューポート周りも見る必要があるかもね



148 :親父PG:04/04/07 06:10 ID:4mfJMcZS
閑話休題
戦闘システムですが、場にキャラクタが使うアイテム(魔法エッセンス)を宣言(スロット配置)して
その置かれたアイテムによって、使用できるコマンドが追加されていくというものを考えています。
またアイテムには持続ターンの設定がされていて、持続ターンを消化するとスロットから除外されます。

剣を主に使う場合(サンプル
剣を使用宣言>「切りかかる」が使用可能
盾を宣言>防御力UP 「受ける」が使用可能

魔法の場合
マナと秘薬宣言>魔法○○使用可能

剣を中心とするユーザー
利点・持続ターンが長い
欠点・単体攻撃

魔法ユーザーの
利点・幅広いコマンド
欠点・アイテムの持続ターン

アイテムの使用と宣言は同時にはできないので「使用タイミング」を考慮しなければならない。
まぁこのへんはアイデア段階ですのでいろいろ変わると思います。
 

149 :名前は開発中のものです。:04/04/07 07:13 ID:MvpBLMAM
test

150 :親父PG:04/04/07 08:38 ID:4mfJMcZS
テクスチャのブレンドに関するパラメーター多いね 多すぎて何がなんだか@@@
ひとつひとつ検証しますかのうorz...

「テクスチャ(4444)前面
 頂点色付ポリゴン」
     +
「テクスチャ565」(背景)
 頂点色付ポリゴン」
+
「サーフェースカラー」

前面のポリゴンの頂点のアルファ値のコントロールでいければ良いのだけど
今、なんとなくやった設定では背景のサーフェーイスカラーに対してブレンドしてるね。
それはそれで必用な設定なんだけどね。
後ろの背景が消えて(無視)されて合成されているorz
設定できる(可能性)の幅が広すぎてトホホホです。

pD3DApp->m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
pD3DApp->m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pD3DApp->m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );

// アルファ合成の設定
pD3DApp->m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
pD3DApp->m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pD3DApp->m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );


これから息子と嫁さん連れてバス旅行(隣の駅まで)行ってきます。

151 :144:04/04/07 08:57 ID:BZdMbvQi
>>145
もう1度読んでください。

前半部は、データ作成段階に入ってからの絵描き・プログラマ・スクリプタ・プランナ
それぞれの間のワークフローに関わる問題の指摘です。
様々なファイル間に依存関係があります。特に座標値を即値で持った場合には、
マップ変更で様々な影響があります。
不整合を起こさない仕組みをお考えであればまったく問題はありません。
相互に依存関係があるファイルを個別に修正すると(特に別々の人が)、様々な
エンバグが発生することでしょう。
マップエディタの例は、とりあえずトリガデータとマップデータの不整合を防ぐ仕組みの
具体例の1つとして出しただけです。
決して最終バイナリの数を問題にしたのではありません。編集時です。

後半部は・・・特に色々問題をはらんでいるのですが・・・。

まず、2つの意味で、 seed を 8ビットとする必要はありません。
・どーせパッキング単位が4バイトなのでメモリの節約にならない
・余ったビットはフラグにでも使えば良い
むしろ seed に名前をつけて文字列を格納し、実行時にアドレス(またはID)変換するくらい
富豪的でも問題ないと思います(つーか、パディングするって書いてあるけどw)。
データキャッシュが荒れるのを気にするならば、宣言を直してメモリを節約するのも良いと思います。

つづく

152 :144:04/04/07 08:58 ID:BZdMbvQi

ところで、>>117 の場所FGって、単にフラグ番号?
場所っていうからマップの座標かと思ってた。
マップデータもただの配列だし、もしかしてまだ、マップアトリビュートテーブル自体が
話題に上ってなかった?
マップの特定の場所に行ったら起動するようなイベントはシステム側からフラグを立てて
それをトリガで拾うという仕組みをお考えですか?
なぜ、トリガデータがこんなにもスクリプト的な機能を持っているのか不思議だったのですが、
もしそうなら納得できます。
トリガデータはイベントハンドルテーブルのように扱ったほうがシンプルになると思います。

どちらにせよ、トリガデータの1レコードは豪華すぎるように思います。

んー、なんか、データ構成見てると、ソーサリアンを作れそうに見えない・・・。
アトリビュートテーブルがないせいだとは思うんだけど、マップ -> イベントキック -> シーン
の流れが見えないと・・・。
もしかして、MAPBASE::ToDo がイベント起動?
そんなことしたら、同じマップで違うイベント配置の時に管理が破綻しない?
まさかねぇ・・・。
まあ、それこそ編集時はイベント名の文字列で管理すればいいのか、な・・・?


153 :親父PG:04/04/07 09:11 ID:4mfJMcZS
>>144
いろいろな考察ありがとうございます。きちんと整理してご返答したのですが、
あいにくバスの時間がw戻ってきてきちんと返答します。

MAP>イベントキック>シーン この方法には2つ方法があると思います。
MAPにイベント番号を入れる方法と
MAPにはイベントがあったことのみのデータ−で 管理側でXY座標を引数にイベントトリガー内を検索します。
とちらにも利点欠点 あ時間だ 帰ってきて書き込みます

154 :(´Д`)ハァハァ:04/04/07 12:02 ID:yREiaToq
親父PGタンはブリーフ派?トランクス派?


155 :名前は開発中のものです。:04/04/07 12:26 ID:TuGWnynl
ふんどしに決まっているだろ。

156 :名前は開発中のものです。:04/04/07 12:56 ID:CnFCUIgg
ぱ ん つ は い て な い

157 :名前は開発中のものです。:04/04/07 14:22 ID:waAm3+2+
>>親父PGさん
玄米食え、玄米。

158 :親父PG:04/04/07 14:26 ID:4mfJMcZS
>>154 155 156
orz.....
>>155
川口にいって桜を見物してきました。今日はいい天気で子供達ものびのびと羽を伸ばしてきたようです。
トリガーテーブルはそれ自身に起動条件を備えています。
またトリガー自身がトリガーを呼ぶことが出来ますし、他のトリガーからも呼ばれます。
さて地形MAPについてですが、これにはシステムに対してトリガーをチャックしろというトリガーを引きます。
プログラムに流れは以下のようになります。
キャラ移動>該当MAPの配列調査、トリガテーブル起動命令がある。
トリガーテーブル検索、トリガーテーブルの演算>シーン起動

さて編集時の問題についてここで解決策を述べておきます。
MAP編集ツールはトリガーテーブルに追記することができます。
MAPツールで編集するのはX座標aY座標bでトリガーがあるということだけです。

あとでシーンデーターで、その追記された部分を補完すればよいのです。
トリガーテーブルは固定長なので扱い易く、いろんなツールで追記することができます
複数人数での作業もトリガーテーブルを、マージしながら作業を進めることになります。

○トリガーの設定
とある座標にトリガーを埋め込む。MAPの配列該当部に任意の価を入れる。
同時にトリガーテーブルに座標を引数とするトリガーテーブルを追記する
(何をするかはここで編集しない ※できるようにしても良いとは思いますが)
○座標の書き換え
とある座標でトリガーを設定していたが、座標移動することになった。この場合MAPデータ−は
自身のトリガーテーブルの該当座標が記録された部分を書き換えます。
(※この作業の為にシリアル管理しても良いかもしれないね。)
○複数人数の作業
トリガーテーブルをマージします。「違うMAPの場合どうするのだ?」というご指摘がありました
その場合トリガーテーブルごとに入れ替えるか、もしくはMAP番号も引数に加えれることで解決します。
○トリガーテーブルはCSV化してEXCELで簡単に一覧化できる。簡易マクロでエラーチェックもおこなう
トリガーテーブルは計算式 IF文を処理する機構なのです。 FG(フラグ)は変数置き場です。

159 :名前は開発中のものです。:04/04/07 19:19 ID:kfqaFPaa
子供は娘さんですか?

160 :名前は開発中のものです。:04/04/07 20:11 ID:OoCqvErc
子供は娘さんですか!??

161 :名前は開発中のものです。:04/04/07 21:05 ID:mi1SbU81
娘さんは私が責任を持って育てさせていただきますので
どうぞプログラムに専念していただきたい!!!!!!
なんの心配も要りません!!!!!!!!!!!!!!

162 :名前は開発中のものです。:04/04/07 21:29 ID:Acbfz39E
以後、親父PGの娘さんを奪い合うスレッドになります。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

163 :名前は開発中のものです。:04/04/07 21:46 ID:du+oinrP
ありがとうございます。
では娘さんをお迎えに
行かせていただきます!!!!!!

164 :名前は開発中のものです。:04/04/07 21:50 ID:WornAub7
ジャイコちゃん、お迎えが来るから早く準備して。

165 :新人PG:04/04/07 21:50 ID:7aasUls1
http://www.geocities.jp/oyajipg/up/relational_01.gif
ちょっとトリガーと地形の事についてまとめてみました。
思った事を書きます。
・トリガーのCmpOP(比較方法)は要らないんじゃないかと思っています。
プログラムの実装でカバーできるんじゃないでしょうか?
・トリガーのActCommandはデータは大きく確保しておいた方が良いのではないでしょうか。
私は複数の処理を羅列して書けたら良いと思っているので可変長配列がいいと思いますが。

実は個人的には地形データにトリガシリアルを記述する事に賛成ではありません。
別のデータ(アイテムデータ等)が持つデータだと思います。
アイテムデータがトリガ情報を所持していて、それが地形データの上にあるとすると、
アイテムデータトリガ呼び出し > 地形データの座標等チェック(トリガへの付加情報) > トリガ処理
という流れが出来るので良いと思っています。
抱合関係はファイルデータを参照して
●シーン := トリガ := アイテムデータ | 地形データ | シナリオ
このようなイメージを持っているのですがどうでしょう?

166 :新人PG:04/04/07 22:10 ID:7aasUls1
あ、あと細かい事かも知れないけど、MAPって聞くとデータ構造の方を思い浮かべてしまって混乱してますw
呼称「地形」で良いスか?w (ごめんなさい、ほんとに判らないんです)

167 :名前は開発中のものです。:04/04/07 22:16 ID:NGXP1J9S
俺的にはマップとmapでわけてるというか
会話になると混乱するかもしれん

つーか、普段の会話でmapってでてこないしなー
hashmapとか実装込みで離すだろうし

168 :新人PG:04/04/07 22:35 ID:7aasUls1
>>167
マップが地形の方でmapがデータ構造の方?w
うちの会社ではiniファイルもpropertiesファイルも全て「マップファイル」と呼びます。(ガクブル

しかし、データ構造やシステム面から詰めていってゲームって作れるんでしょうか。
本当に行き着く先がRPGツクールな気がしてきましたw
ラフ絵等が出てくると雰囲気出て良いかも。

169 :名前は開発中のものです。:04/04/07 22:44 ID:iAt21LPE
そしてそういったゲームには欠かせない
絵とか音楽とかシステムまわりがこのプロジェクトにはまったく無い
技術ありきだとプログラマ本人以外ついていけんしな


170 :名前は開発中のものです。:04/04/07 23:16 ID:SEG+EKoN
ああ。。僕の真鈴たん(仮名)早く逢いたいよ。。

171 :新人PG:04/04/07 23:55 ID:7aasUls1
寝ます。
親父PGタン夜勤ご苦労様です。

絵柄は洋ゲーっぽく、渋くクドイのが良いなぁ・・・。
硬派さを出したいw

172 :名前は開発中のものです。:04/04/08 04:23 ID:rdLQdFbl
なんだか凄そうなので、3Dだったらぜひ一枚かませて欲しいです。
激渋グラフィック大好きなので。必要になったら声かけてくだちい。
ひっそりのぞいてます。

173 :親父PG:04/04/08 05:31 ID:msAPqSAi
>>165
お疲れ様!
Gif画像がモビットになってるorz HPに上げてくれると助かるです
まとめ画像を見てない状態ですが、いくつか私の意見も書いておきます。
>・トリガーのCmpOP(比較方法)は要らないんじゃないかと思っています。
>プログラムの実装でカバーできるんじゃないでしょうか

トリガーテーブルは仮想CPUに対する命令です。この部分にゲームの「分岐」に対する情報が書き込まれます。
これらの情報は「シナリオ作成者」が担当するものなのですが、シナリオ作成者に「Cを書け」と言っても無理な注文です。
そこで、それを解決する方法として考えたのが分離方式です。
煩わしい制御コードに悩むことなく、文章部分に集中してもらいます。

トリガーテーブルは以下のようなインターフェイスで、編集を考えています。
▼はプルダウン []は価入力
条件NO0023「▼FGの価」[34]と「▼トリガーの結果」が「▼等しいなら」「▼シーンの」[234]を処理

可変長にしないのはデータ−作成者のレベルを配慮(IF文より難しいことを避ける)
メインPGが使用するときの検索の高速化
いろんなツールが読み込んで作業する為のデータの単純化 など
トリガーテーブル部分だけ準PGがやることによって、ゲームスクリプトの矛盾発生を押さえ込む。
いくつかの理由があります。





174 :親父PG:04/04/08 06:14 ID:msAPqSAi
続き
・トリガーのActCommandはデータは大きく確保しておいた方が良いのではないでしょうか。
そうですね。引数もふくめるとおっしゃるとうりです。この部分は拡張しましょう。

>別のデータ(アイテムデータ等)が持つデータだと思います。
>アイテムデータがトリガ情報を所持していて、それが地形データの上にあるとすると、
>アイテムデータトリガ呼び出し > 地形データの座標等チェック(トリガへの付加情報) > トリガ処理
>という流れが出来るので良いと思っています。

アイテムデータ−にはトリガー情報は含みません。例えば、ある地点でアイテムを拾うというイベントがあったとしましょう。
キャラデータ−が移動、地図配列をチェック、トリガーがある。>トリガーテーブルから該当するトリガーを探し出す。
トリガの1番目のコマンドを調べる (シーン1と書いてある)
 シーン1 メッセージの表示「アイテムを拾いますか?」
 選択メニュ表示 戻り値をリターン
トリガの1の価取得終了 トリガの2の価取得開始 (ダイレクトの価1)
比較命令に従って2つの価の比較 条件によりアイテム取得トリガー呼出(引数 任意のアイテム番号)
このような流れになります
シーン1の情報が変わってもトリガー情報に影響がありません、逆もしかりです。

>>実は個人的には地形データにトリガシリアルを記述する事に賛成ではありません
これは144氏の指摘にある「地形データが入れ替わった時どうするのですか?」に対する
解決案のひとつ。同座標にトリガー埋め込んだ場合どうする? という問題ですね。

>●シーン := トリガ := アイテムデータ | 地形データ | シナリオ
>このようなイメージを持っているのですがどうでしょう?
私のイメージは

地形データ>>>>トリガー<<<<シナリオ
独立 アイテムデータ−
このようなイメージを考えています。 トリガーテーブルを中心に他は従属関係にあります。
>うちの会社ではiniファイルもpropertiesファイルも全て「マップファイル」と呼びます。
prz.... このスレでは地図データ−は地図データ−もしくは地形データと呼ぶようにしましょう。

175 :親父PG:04/04/08 06:38 ID:msAPqSAi
続き
>しかし、データ構造やシステム面から詰めていってゲームって作れるんでしょうか。
>本当に行き着く先がRPGツクールな気がしてきましたw
>ラフ絵等が出てくると雰囲気出て良いかも。
メインPGの最初のステップは、ステージを作ることですので最初は仕方の無いことでしょう。

画面イメージなどは今ちょこちょこ作ってます。お友達にキャラ絵も数点お願いしました。
(決定原稿ではないですけどね)元少女漫画家(出産の為引退)された方です。

ゲームの雰囲気ですが、私の隣には数年前に上野の博物館であった「ケルト神話」の展覧会の本が置いてあります(W
そこから察してください。^^;

>>172 >>169
最初はライブラリの構築からマッタリという考えだったので、イメージとかの資料を提示できずにいます。
申し訳ない。劇渋3D大歓迎です。そうだ!1点お願いしてもいいでしょうか。
128*128で武器(種類問わず)を1点お願いしてもいいでしょうか?
デザイン背景はケルト神話で基調カラーは青に緑が加わった色。
アクリル絵の具でいうところの「Compose Blue」でお願いします。

と勝手にお願いしていいのか俺orz

劇渋路線が人気あるようですね。私もラリーエルモア大好きです。

背景テクスチャポリゴンと前面テクスチャポリゴンがうまく半透明にならないと
いろいろ苦慮していましたが、原因は「背景データ−を先に描画していないから」
という結論でしたorz.....アホスギル
各テクスチャ事にレンダリングステート登録する機能作ったのに...全然別の理由だった(鬱だ
この機能は現時点ではいらないことが発覚(ショボーン orzナニカニツカエルカナ....

閑話休題
子供はまだ3歳と5歳だよw

176 :名前は開発中のものです。:04/04/08 08:54 ID:qS569gdt
子供ください

177 :名前は開発中のものです。:04/04/08 15:10 ID:EIdbWV3j
いきなりマニアックな内容でさらりと語るのはやめてくれ。
せめて参考になりそうなURL用意するとかして欲しいぞ。

コンポーズブルー
ttp://www.fairy-land.to/shop/moji/c-sample.html

エルモア
ttp://www.larryelmore.com/

178 :名前は開発中のものです。:04/04/08 15:26 ID:Hg7sDvxp
エルモアってなにか遠い昔に聞いた名だなと思ったが
D&Dのパッケ描いた人か…。

179 :親父PG:04/04/08 15:40 ID:msAPqSAi
>>176 orz...
>>177
調べてくれて有難う。こんなHPあったんだねorz
僕が中学生の頃、D&Dのイラストを見て、激しく感動したイラストレータです

RPGの話をするならこの人は避けて通れません。

Windowのパーツを作り始めました。仕様もこれから固めていきます。

イメージのたたき台になりますかね?

180 :名前は開発中のものです。:04/04/08 16:06 ID:PQfhS+Yw
 | ああ〜 やっぱ3歳は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


181 :144:04/04/08 16:49 ID:kikONY5O
トリガテーブルは固定長じゃないほうがいいと思うよ。
で、番号じゃなくて名前の文字列にしよう。
で、std::map< std::string, TriggerAndProcess > みたいなのに突っ込もう。
ハッシュでもいいけど。

マップの方では、トリガ番号をセルに埋め込むのはよろしくないと思う。
3Dにしたときにどうしようもなくなる。
その代わりに、アトリビュートファイルを作ろう。
アトリビュート範囲とトリガの名前が書いてある。
(もちろん、マップファイルの固定長地形データ配列の次にくっ付けても
構わないが、実行の問題じゃなくて構造の問題ね)

トリガの条件判断は、やはりスクリプトに譲ったほうがよいと思う。
寄り道できない一本道のシナリオなら今のトリガテーブルの条件記述
で構わないと思うが、ちょっと複雑になったら、結局素人の手には
終えなくなると思う。
当面は今のトリガ記述方法で良いと思うけど、早いうちからスクリプト
への変換をしておくと、トランスレータだけいじればよくなるので、
トリガデータ構造はもっと柔軟なもの(できればスクリプト)にしておいた
ほうが良いだろう。

182 :名前は開発中のものです。:04/04/08 17:15 ID:Hg7sDvxp
親父PG氏、ソーサリアンとかD&Dとか言ってる時点で
俺と同世代っぽいなー。

183 :親父PG:04/04/08 17:53 ID:msAPqSAi
>>144
ご意見ありがとう。いろいろとご意見を私なりに整理しました、話をすすめていく上で確認すべき点があると思います。

私が提起しているデータ−形式は、そのまま「メモリの上に展開して動かせる最終形態」の話です。
プログラムの中でSTLを使うにしても、バイナリデータ−の並びを解釈してCPUを動かさなければなりません。
前にも述べましたが、スクリプト(テキスト)を動的に解釈するメリットはないので、
中間言語およびスクリプトで書かれたコードは全てコンパイルが済んだ形(バイナリ)にします。
そのバイナリ形式が提案している形になります。
ただし、その前工程でどのような形でデータ−を扱ってもかまいません。

例えばコンパイラはテキストで書かれた命令文を最終的にCPU命令に置き換えます。(MOV AX、CX)
といった単純な命令群に置き換わります。今回のゲームデータ−についてはここまで単純化してはいない(必要が無い)ですが、
その一歩手前にある(構造を単純化して高速化)といえます。
std::map< std::string, TriggerAndProcess >を使用する場合、
プログラム内で「このデータ−をMAP(STL)にPUSHしてくれ」という、コードを入れなければなりません。
そういったレベルでスクリプトを組めるのはPGレベルの人だと思いますorz...


184 :親父PG:04/04/08 17:53 ID:msAPqSAi
続き
>std::map< std::string, TriggerAndProcess > みたいなのに突っ込もう
実際問題としてトリガーがトリガーを呼ぶ構造なので、スタックという形で動的配列は使用します。
それはデータ−を解釈するPG側の話なので、そのあたりについてはお任せください。
>>トリガテーブルは固定長じゃないほうがいいと思うよ。
可変長が必用な場合、トリガーテーブルを2個(以上)使って表現すればよいのです。
トリガーがトリガーの結果を呼び出せるという構造で、柔軟な動きに対応できるはずです。

>当面は今のトリガ記述方法で良いと思うけど、早いうちからスクリプト
>への変換をしておくと、トランスレータだけいじればよくなるので、

逆にいえば、RPGのデータ−ツールに複雑な構造を単純化しうる機能が必要になるのです。
最終データ−を扱う段階で、英文翻訳ソフトのようなプロセスを行うことは致しませんよ。

3DについてはZ座標を別途持つことでは対応できないのかなぁorz
誤差範囲とかも必用だけど基本はBOX判定だろうし........

※どのアイテム、動作、動きにていて基底データ−のようなものを定義するのは有用かもね。C++でいう基底クラス

185 :名前は開発中のものです。:04/04/08 18:02 ID:TfluK8Bw
スクリプトをCPUバイナリにするメリットなんてあるの?

解釈しやすいバイナリにするのなら当たり前だけど
移植性や可読性を考えると命令セットに依存する部分って必要ないような
CPUやモードが替わったりすると確保するバッファサイズが様々になるので
メリットないと思うんだが

ついでにいうとテキストレベルのスクリプトを動的解釈しても500MHz
超えているマシンなら問題になりにくい
デバッグの課程を考えるといわゆるインタプリタレベルのデバッグモード
という位置づけも必要になるんじゃないの?

3Dについてどうのこうのってのは再ショアから作るものが決まってないからそういったことになる
ソーサリアンを目指すというのならたとえばサイドビューとか
作るものが決まってないのならそのへんの最適な解は見つからんよ


186 :親父PG:04/04/08 18:05 ID:msAPqSAi
>>178
思い出しましたか?^^;
>>180 orz....
>>182 ニヤリ -)

WINDOWの構造体造ったはいいがツール作るのが面倒で鬱ぬ。



187 :親父PG:04/04/08 18:18 ID:msAPqSAi
>>185
CPUはたとえでありまして、実際にCPUバイナリにはしません。
動的スクリプト解釈についてはメリットがないと思うのです。
同じ処理を事前に済ましてしまえばいいのですから。

「物理できなデータ−の塊を解釈して動作させる」という動きの比喩でCPUを上げました。
さて今回必用な話に戻すと、データ−の塊を逐次解釈して動作させます。
その基本形が提唱している固定データ−(トリガーテーブル)(中間コード)になります。

動的スクリプト解釈をするにしても起動時に一旦コンパイルして中間コードに、並べてから動作させます。

1ラインごとに解釈するはずはありません。特に今回のケースではメリットがありません。


188 :親父PG:04/04/08 18:36 ID:msAPqSAi
新人PGさん<この呼び方なんかすごく恐縮なので,
せめてベテランPGさんとかにしてほしいなぁqrz

閑話休題
まとめていただいた図 造って頂いて有難う
http://www.geocities.jp/oyajipg/up/relational_01.gif

ずばりです。各トリガーの必用な引数などは追加する可能性がありますが、
おおよそこのようなつくりです。
トリガーテーブルと呼んでいますが、これって(中間コード)ですよね。

MAPからの引数はZ値も入れましょう。
ゲームの種類のよっては使わないかもしれませんが...



189 :名前は開発中のものです。:04/04/08 18:54 ID:TfluK8Bw
トリガーからトリガー呼ぶのはいいがそのへんはシステムがインテリジェントにやってくれて
スクリプトを書く人は意識しないでいいんですよね?

たとえばjava風だとadd〜listenerみたいな感じでイベントリスナ追加で
一度発生したイベントが次に発生しなくなるならremove〜Listenerとか

あくまでもトリガテーブルに処理は書いちゃいかんと思うのですよ


190 :親父PG:04/04/08 19:33 ID:msAPqSAi
>>189
たくさんのご意見ありがとう。

トリガーテーブルはそれ自身がスクリプトともいえます。
自身を管理する処理は最低限行えます。
もちろん、メッセージを出すといった「処理」はかかれません
そういう場合は処理が書かれた「シーン」を呼び出す事になります。
トリガー自体を有効無効については、そういうFGが入ってもいいかもしれませんね。
Enable
Enableの価によってリムーブをコントロールしましょう。
ADDについては、フラグテーブルの後ろに物理的に加算することで表現できます。

>トリガーからトリガー呼ぶのはいいがそのへんはシステムがインテリジェント
内部的にはそうなります。
命令の組み合わせを作り出すのはツール側になります。

例えばCのswitch-case文などをif文の羅列に並び替えるような処理は、ツール側の仕事になります。


191 :新人PG:04/04/08 23:33 ID:nyCaSSwW
ただいま帰りました・・・。

>>親父PGタン
ようやくデータ構造が見えてきました。順にまとめていきたいと思います。
↑日曜日以降になりそうです。週末予定が入ってしまいました・・・orz
今年入社なんで「新人PG」ですw 社会人歴1週間です。

モビットってなんだろーとか思っていたら、2chから直リンするとモビットが出ますねw URL直接指定してください(汗
あと元少女漫画家の友人に注文しても良いですかね? 

男だろうが女だろうが 筋 肉 モ リ モ リ で

よろしくお願いしますw

192 :172:04/04/08 23:47 ID:rdLQdFbl
>>親父PG
いまんとこ2Dゲーになるのか3Dゲーになるのかわかんないので、
もし今後このシステムで3Dゲーを作ろう!となって
3Dモデルとかモーションとか作る肉体労働者がたりねー
みたいな事態になったら声かけてくだちい。
(イラスト描いたりデザインしたりはデキネ。)
プログラムにも興味あるのでずっとタシロってると思いますので。。。

193 :親父PG:04/04/08 23:59 ID:msAPqSAi
>>191
お帰りなさい。
>ようやくデータ構造が見えてきました。順にまとめていきたいと思います。
それは良かった。スクリプト作成側にも最適化等の処理を求めますので、データ構造の意味が理解していただけないと
なかなか説明が難しいと思っていたところだったので、安心しました。

>モビットってなんだろーとか思っていたら、2chから直リンするとモビットが出ますねw URL直接指定してください(汗

あれ、かなりつぼにはまって笑いましたよw

>あと元少女漫画家の友人に注文しても良いですかね? 
>男だろうが女だろうが 筋 肉 モ リ モ リ で

なるほろ、間に合えば連絡しておきます。

>>192
そうですか、では3Dになったら即お願いします。^^;

194 :名前は開発中のものです。:04/04/09 02:52 ID:d03K47Nx
>>184
> 3DについてはZ座標を別途持つことでは対応できないのかなぁorz
> 誤差範囲とかも必用だけど基本はBOX判定だろうし........

ナナメ

195 :144:04/04/09 04:52 ID:d03K47Nx
>>183
> 私が提起しているデータ−形式は、そのまま「メモリの上に展開して動かせる最終形態」の話です。
(略)
> ただし、その前工程でどのような形でデータ−を扱ってもかまいません。
もちろん。
ただ、現在の形が、固定長のCISCのような命令セットであり、柔軟性に乏しい。
以下のような例を考えよう。
 台座に青い宝石があり、ソーサリアン的には台座の下で<<上>>を入力すると調べるのような反応になる。
 最初に調べると、「台座に青い宝石が置かれている」とメッセージウィンドウに表示される。
 次に調べると、「青い宝石からは高い音が発せられている」とメッセージウィンドウに表示される。
 さらに調べると、「青い宝石を手に入れた。どこかで音がした」メッセージウィンドウに表示され、
 (このシナリオ限りの)アイテムがアイテム欄に追加される。
 という場合、青い宝石のある座標にトリガ番号 777 が設定されているとしよう
 [トリガファイル]
 777 FG BlueJewelCounter eq imm 0 Scene 1 *
 778 FG BlueJewelCounter eq imm 1 Scene 2 *
 779 FG BlueJewelCounter eq imm 2 Scene 3
  780 always StoreFG BlueJewelCounter 1
  781 always StoreFG BlueJewelCounter 2
  782 always StoreFG BlueJewelCounter 3 *
  783 always GetItem BlueJewel
 [シーンファイル]
  scene 1 「台座に青い宝石が置かれている」 goto 780
  scene 2 「青い宝石からは高い音が発せられている」 goto 781
  scene 3 「青い宝石を手に入れた。どこかで音がした」 goto 782

つづく

196 :144:04/04/09 04:54 ID:d03K47Nx
って感じ?
ソーサリアンでは、反応する場所では、とりあえず反応がなくなるまで上連打が基本だったと思うけど。
これより簡単にしようとすると、
・条件が一致したら、自動的にフラグをインクリメントする比較命令を作る
・複合命令を(例:CountupAndGetItem)どんどん増やす
・フラグのインクリメントやアイテムの取得はシーンファイルに記述する
って感じじゃないの? いーの?
充分素人の手に負えないと思うけど。always とか * とか。

上記トリガは最適化版。最適化前は、シーンファイルに goto が無く、トリガファイルは9行だった。
  777 FG BlueJewelCounter ne imm 0 goto 780 *
  778 always StoreFG BlueJewelCounter 1 *
  779 always scene 1
  780 FG BlueJewelCounter ne imm 1 goto 783 *
  781 always StoreFG BlueJewelCounter 2 *
  782 always scene 2
  783 FG BlueJewelCounter eq imm 2 goto 784
  784 always StoreFG BlueJewelCounter 3
  785 always scene 3
ちなみに、* なしで複数の処理を一度に行うことは俺にはできなかったよ。
上記トリガを記述するのに、親父PGタン の発言に無かった仕様は * だけ。
マップの ToDo を書き換えることも考慮したが、余計わかりにくくなった
(セーブするのに、シナリオで使う前マップも保存しなきゃならなくなるし)。

197 :144:04/04/09 04:56 ID:d03K47Nx
トランスレータを書く前提で、スクリプトで上記を書き直してみよう。
 青い宝石のある位置に、イベント名 BlueJewl の文字列が定義されている(もちろん識別番号でも良い)としよう。
 [シーンファイル]
  <event BlueJewel>
   [CounterCheck BlueJewelCounter]
    0 「台座に青い宝石が置かれている」
    1 「青い宝石からは高い音が発せられている」
    2 「青い宝石を手に入れた。どこかで音がした」
      *get BlueJewel
 ただし、[ ] 内の CounterCheck は、スイッチのようなものだが、カウンタを参照して、一致したらイベントを起動して、
 カウンターをカウントアップする。Cの switch でいう default は別に考える。
 * は、システムコマンドを呼び出す。
 もちろん、シーンファイルは事前に仮想マシン用のバイトコードにコンバートしておいて構わない。
例に最適化した文法を作ったわけで、かなりズルしてるけど、トランスレータを前提にすれば、こういうズルも必要なときにできる。
親父PGタン のトリガファイルの文法へのトランスレータも問題なく書ける。

しかし、これに多少の工夫をしても、まだ分かりにくいし、人為的ミスの混入も減らないかもしれない。
すると、結局シナリオ編集サポートツールを作ることになるわけで、ならば最初からスクリプトに任せてしまえ、ということですよ。
で、スクリプトをアセンブラライクなバイトコードに変換すると(逐次解釈でもいいけど)。
だから、スクリプトライクなトリガテーブルには疑問を抱くのですよ。

> std::map< std::string, TriggerAndProcess >を使用する場合、
> プログラム内で「このデータ−をMAP(STL)にPUSHしてくれ」という、コードを入れなければなりません。
> そういったレベルでスクリプトを組めるのはPGレベルの人だと思いますorz...
違う違う。
シリアルナンバを使用するのは、配列のアドレッシングのためでしょ?
文字列で連想配列をアドレッシングすることを勧めてるの。
編集時や使い回しの柔軟性のために。

ID みればわかるけど、>>194 も俺。

198 :親父PG:04/04/09 07:10 ID:Ihr7T82R
>>194-197
144氏さん 考察ありがとうございます。今回のケースはswitch文の構文が適していますね。

switch (fg){
 case 0:{seen1;++fg;break;}
 case 1:{seen2;++fg;break;}
 case 2:{seen3;++fg;break;}
default:{NonOp}
}
Cで書くとこうなります。これを置き換えます。
777 (MAPposition) X,Y EQ (価)a ,b start switch 4
778 (fg)A eq 0 CALL シーン1(fg A)
779 (fg)A eq 1 CALL シーン2(fg A)
780 (fg)A eq 2 CALL シーン3(fg A)
781 CALL シーン4(fgA)
782 return(0)

シーン0
deviceWait()
KEYUP:メッセージ出力1、++FG
KETLEFT:メッセージ出力2、FG=0
return (next)



199 :親父PG:04/04/09 07:10 ID:Ihr7T82R
シーン側も以下のようにコンパイルされます
(Keydevice) a start switch 2
a EQ KEYUP goto localindex 1
a EQ KEYLEFT goto localindex 4
PUTMES 1(文字列INDEX)
FGOP +1
return
PUTMES 2(文字列INDEX)
FGOP 0
return

データ−のお尻に追加
文字列
array index of string
max ...
0,24
"宝石が..."
"宝石を拾った..."

あとで説明文書きます

200 :親父PG:04/04/09 08:07 ID:Ihr7T82R
続き
シーンデータについて考察してみました。シーンデータ−は以下の要求を満たす為に定義されます。
○ゲーム内の処理命令を表す ○可変長をサポート ○ストリングが入る ○また、ここに1つだけ判断文を定義する事ができます。
定義できる判断文
DeviceWait系 ButtonPush系 設定なし FGに対する操作 他のトリガーの呼出

DeviceWait系、ButtonPush系
この2つは内部的にはトリガーテーブルを呼んでいるのと同じなのですが、シナリオの文法上煩雑になるので1文で定義できるようにします。
戻り値に対して処理のスタート部分を分岐できます。
・スクリプト上の文法
deviceWait()
KEYUP:メッセージ出力1、++FG
KETLEFT:メッセージ出力2、FG=0
・展開された形
(Keydevice) a start switch 2
a EQ KEYUP goto localindex 1
a EQ KEYLEFT goto localindex 4

・実際の処理はこのあと1行ずつ定義されます
PUTMES 1(文字列INDEX)
FGOP +1
return

これらの1行1行もあのトリガーテーブルと同じフォーマットで表すことができます。
文字列は別の場所に一括してまとめられて、内部ではインデックス扱い char*[a] に置き換わります。
シナリオを書く時の文法とコンパイル後の文法やデータ−の配置は異なります。
シナリオを各段階では「可変長」で表記できます。

>シリアルナンバを使用するのは、配列のアドレッシングのためでしょ?
これは少し違います。地形MAPを切り替えた時に、同時座標のトリガーを判断するためにあります。

201 :親父PG:04/04/09 09:26 ID:Ihr7T82R
すこし拡張しました
struct {
int SelfID; //シリアル番号
int CommandID;//基本命令系 
byte CmpSeed1;  //int CmpTarget1が何を示すかの種類 FGテーブル デバイス 関数戻り値 値
int CmpTarget1; //値
int CmpTarget1_2; //値(予備)
byte CmpSeed2;  //int2 CmpTarget1が何を示すかの種類 FGテーブル デバイス 関数戻り値 値
int CmpTarget2; //値
int CmpTarget2_2;//予備
byte CmpOP; //上の値の比較方法
byte CmpOP; //真/偽どちらを使うか? (追加
short int ActCommand ; //何をするか? MOVE FG値操作 次処理 シーン呼び出し
int ActValue1; //値 ActCommandによって扱いが異なる
int ActValue2; 
int ActValue3;
int ActValue4;
//リザーブ 
};


202 :名前は開発中のものです。:04/04/09 16:26 ID:HmpNauZs
もう何がなにやら・・・

203 :名前は開発中のものです。:04/04/09 16:48 ID:Ws2ssbno
チチキノドク スグカエレ

204 :名前は開発中のものです。:04/04/09 19:40 ID:9dUWl+kl
俺はスレ主には特に何も言わんが

けっこう可愛そうな奴らがいるみたいだなぁ この板には

205 :名前は開発中のものです。:04/04/10 03:46 ID:yG5v3On8
がんがれ

206 :名前は開発中のものです。:04/04/10 06:51 ID:ZruuXOcF
おおよそ固まるまでsageで行ってみてわ? >オヤジさん


207 :親父PG:04/04/10 09:25 ID:Sr13ZjT1
>>202
PG以外はなんだがわけわからないですね。反省orz...
前の書き込みに「戦闘システム」の計画を書いたので何かご意見をいただければ幸いです
>>203
何処へ帰ればorz
>>204
まぁマッタリいきましょう
>>205
OK!

>>206
了解。 今日も仕事ですorz こっそり書き込みです。
現在ツール側を作成しておりまして、本体側の進行はSTOPしています。
そのツールが完成して、本体のPGに反映された頃に一回公開します。
といってもボタンとウインドとテキストのコントロール部分だけですけどねorz



208 :144:04/04/10 13:01 ID:1EUDp4ba
>>198-200
トリガから別のトリガを呼び出せるというのは書いてあったけど、return まで逐次実行ってのはどこにも書いてなかったよ。
後出しだしズルいよw。
ま、それはいいとして、オヤジタン の記述例では、トリガもシーンも、オヤジタン のいうPG以外が対応できるレベルにみえないけど。

それと、トリガテーブルって、同時にいくつも存在するの?
同時ってのは、実行時の話なんだけど、仮に1つだとすると、エクセルとどのように整合性を保つのかな、と思って。
シーンファイルに、トリガサブルーチンがあるのはいいと思うけどね。

なんかもう、普通のスクリプトのバイトコードと話が変わらないように見えるよ。
単にバイトコードのフォーマットが見たことないほどリッチなだけで。
そして、エクセルで入力すると言い張ってるのは、アセンブリ言語での記述を要求しているのと等価にしか思えない。

> >シリアルナンバを使用するのは、配列のアドレッシングのためでしょ?
> これは少し違います。地形MAPを切り替えた時に、同時座標のトリガーを判断するためにあります。
地形マップを切り替えるというのは、
・どこかのマップでスイッチを入れる
・別のマップで跳ね橋が下りる
のようなときに、マップチップテーブルだけの入れ替えをするような話だよね?
それをシリアルナンバで判定するということは結局 std::map< int/*シリアル*/, int/*トリガ配列の添え字*/ >
のような形で判定するんでしょ?
俺は、エクセル上でもシリアルナンバの入力を強要してるのかと思ったんだけど、トリガコンパイラが文字列で
解決してくれるならそれでいいと思うよ。

ところで、>>189 で MAPposition で比較してるけど、本当は MAPBASE::ToDO に 777 が入ってるんだよね?
そうじゃなければ、エクセルで入力するときはコンマ付で入力? マップの大きさは最大256x256?

自信あるみたいだから、思うとおりにやってみるといいでしょう。
使い物になりそうなことは分かったし。

209 :名前は開発中のものです。:04/04/10 16:08 ID:ZruuXOcF
後出しって・・・・なんかの勝負でもしてるのか?


210 :親父PG:04/04/10 20:09 ID:Sr13ZjT1
>>144
いろいろと検証ありがとう。いろんな角度から見てもらえてるので、実に助かってます。
対策として具体的な仕様も決まっていくしw
まず書き方の例ですが、ここでの話を判りやすくするためであって実際の文法はもっと判りやすくなるはずです
このへんは「新人ニューウェーブPG」氏に期待します^^。
メイン担当としては、「最終バイナリはこういうイメージにしてね」と伝えなければなりません。
データの意味(解釈方法)を伝えるためにCで書いてみたわけです。

144氏の指摘の多くは私の作業より、一つ上のレイヤーの話と思える部分があります。

トリガーテーブルは(エクセル「でも」編集できる)ここが味噌でエクセルの機能を使って
レコードの操作をいたします。(エクセルと同じ機能のツール作るのは大変だw)
多重ソートとかマクロ機能とかね...別途作ってもいいけど。
エクセルコンポーネント使うなら一緒だ(orz...コレダケデモエツキルヨ
利用理由は主にチェックです。デバックですね。これってありがたいんですよ。ええ(独り言モード

トリガーテーブルは基本は一つですが、動的に後ろに追加しても仕様上動きます。

地形MAP配列にはトリガーを引くことしか指示しません。引数は座標XYZ(65535)+MAPシリアル(65535)になります。何をするかはMAP側ではなくトリガー側が判断します。

作業予想
地形MAPツールは地形データ-とトリガーテーブルを読み込む。
イベントを行いたい場所へマウスでマークしていく。
このときトリガーテーブルにもトリガー情報のみのデータ-が追記される。
保存...
再度開いた時はトリガーテーブルのMAPシリアルを見て以前のマーク場所を再配置する
STEP2
イベントツールはMAP作成ツールによって作られたトリガーテーブルに、必要な情報を追加していく。
このような感じになる予定です。

>>209
勝負はしてないけどね^^ いろいろ言ってくれると助かるよ。

211 :親父PG:04/04/10 20:23 ID:Sr13ZjT1
都築
>地形マップを切り替えるというのは、

これは「地形MAP配列にはトリガーを引くことしか指示しません。」
この設定が前提にあります。地形データ-を入れ替えた時に同じ座標にイベントがあった場合
受け取った側が判断できません。そのためのMAPシリアルになります。

>・どこかのマップでスイッチを入れる
>・別のマップで跳ね橋が下りる

これはトリガーテーブルのイネーブルをONにすれば良しでしょう。

CAll MAP(B 3,3)//橋  
トリガー親父 そのMAPのその座標のトリガーは「なし」だ。交信終了

Call (MAP A 1,1)//スイッチON
トリガー親父 ウィ〜ス トリガ3番(橋のトリガ)イネーブルON
再び
CAll MAP(B 3,3)//橋  
トリガー親父 ウィ〜ス 橋をおろせセニョール ついでに MAP A 1、1のフラグもイネーブルにするべ

こんな流れかな



212 :親父PG:04/04/10 20:39 ID:Sr13ZjT1
誤>トリガー親父 ウィ〜ス 橋をおろせセニョール ついでに MAP A 1、1のフラグもイネーブルにするべ
生 トリガー親父 ウィ〜ス 橋をおろせセニョール ついでに MAP A 1、1のフラグもディスネーブルにするべ

間違えた(汗

間違えたついでに
このシステムの目指すところを書いてもいいのではないかと。勝手に思ったので妄想を書き込みます

このシステムでは「キャラクターデータ-」が中心となり世界を広げていきます。
大昔、D&DというTRPGがありました。あのシステムも最初は赤本から始まりました。
ダンジョンにもぐり宝物を集め、経験値を上げていく。
たくさんのエキスパンション(シナリオ)が生まれてキャラクターは成長していきました。

本システムもこのような流れで大きくしていきたいと思っています。
エキスパンションを通じてのキャラクター成長。
そして、シナリオの作成についてはツールを公開して、誰でもDMになれるようなものを考えています。
シナリオをそれぞれ交換などする事もできるようにしたいと思っています。

またキャラクターに関わる事柄。お店だとか交換所なども一種のシナリオによって構築されます。

全ての完成にはまだまだかかりますが、そこは(追加型 という仕様がなんとかしてくれるはずです(W

213 :名前は開発中のものです。:04/04/11 00:46 ID:tw9ZgcmP
>>212
でもあんまりシナリオとか簡単に作れるようにすると
あんまり知識の無い人でも簡単にズルができるようになるような。
まぁ、その人がつまらなくなるだけですけど。

214 :名前は開発中のものです。:04/04/11 01:02 ID:osyo1R4q
>>213
その話は次元が違うものと思われ
本気で解読にかかられたらいくらプロテクトかけてもだめなのと一緒

215 :親父PG:04/04/11 10:09 ID:uZkaW7mz
>>214 213
バイナリエディタ程度では改変できない仕組みは考えていますが、
214氏のご指摘どうり本気で解析されればプロテクトは無理でしょう。

ローカルで作られたシナリオの経験はキャラシートに反映されないとか、対策はありますけどね。
あとはシナリオに適正レベルを設ける。

システム側でおかしなシナリオを最初から「エラーにより排除」するなど
いろいろと対策はありますけどね。
複合的なエラーチェックでめんどくさくするぐらいしかないのかなorz...




216 :新人PG:04/04/13 23:45 ID:w0VogWFU
ただいま帰りました。仕事忙しすぎ。
だんだんまとめ辛くなってきましたが、ばんがります。

トリガーデータ案:草案を元にしたもの
[シリアルID]:数値5桁
[基本命令系]:わからん
[値種類1]:英数字5桁以内
[比較対象値1]:数値5桁
[値種類2]:英数字5桁以内
[比較対象値2]:数値5桁
[比較方法]:英数字?
[真処理]:英字?桁
[偽処理]:英字?桁
[パラメータ]:???
記述例)
00001,?????,Int,0,Scene,00020,Equal,ACTSCENE,00030,00002,MOVETRIGGER,00003

IDは00001、比較値1は数値型定数0、比較値2はシーン00020の戻値、比較方法は値等価判断
真の場合シーン00030を読み込みトリガ00002を起動、偽の場合トリガ00003に移動。

とりあえず、Excelで編集と言う事でXML云々は考えない方向で行きます。
このようなCSVを作成していく感じでいいんでしょうか?

217 :新人PG:04/04/13 23:49 ID:w0VogWFU
なんか殆ど、親父PGタンの頭の中でできあがってるようですね(汗

俺、要るのかな・・・?

218 :名前は開発中のものです。:04/04/14 01:26 ID:fCb1f0Lh
Excel前提ってのがまず汎用性で問題あるような
最近のマシンオフィス標準搭載かなり減ったし

その辺の自動化もツール担当の仕事かと

219 :親父PG:04/04/14 05:14 ID:EE4mRz9N
>>217
お疲れさまー、ご無沙汰しています。
>このようなCSVを作成していく感じでいいんでしょうか?
違いますorz...SUMAN

エクセルの話ですが、あくまで「エクセルでも」データ−が見れるというものでありまして、
それはコンパイルされたデータ−を、バイナリ<>CSVツールで編集(デバック)できるように
するというものです。 よってスクリプト記章ツールは別に必要です。

>>217
ここ数日の書き込みでそう思われたのですねorz...

でも、決まったのはメインPGが受け取るバイナリの形でありまして、スクリプト記章ツールがいらなくなったわけではありません。
メインPG側の受け取りバイナリの形と解釈方法を提示しましたので、スクリプト側のツールはスクリプトの文法を(設計)設定して
予定のバイナリを出力するものを、設計してくれることを期待しています。
スクリプトの文法はXMLでも、オリジナルでもOKです。
ここで必用なことはシナリオライターが必要とする機能の調査と設計、機能の単純化などです。
バイナリからの逆復元(バイナリからのソース復元機能)は必用ありません。(ソースコード保存)


メインPG<バイナリ<スクリプトツール
      ↑↓
      CSV
     エクセル

スクリプトの文法、設計はまったくの白紙状態です。新人PGさん、大変期待しています。


220 :親父PG:04/04/14 05:35 ID:EE4mRz9N
>>218
おつかれさま EXCELは補助ツールなのでスクリプトツールは別途作成予定です。
メインPG側のバイナリの形さえ決まっていれば、スクリプトツールは自由に選べます。Excelもそのうちのひとつだと考えてください。
(もっともExcelの場合,スクリプトではなくバイナリエディタっぽい使い方だけどね。)

私の作業の報告
WINDOWの設定ツールがひとまず完成しました。12種類のスタイルを定義できます。
メイン側は使用するときにこれらのスタイル定義にしたがって、先につくったボタン定義用のデータ−構造体より必要なデータ−をコピーして、
画面に作成します。現在、メイン画面にWINDOW本体と上部バーとクローズボタンを表示するところまでです。(WINDOWSの上にWINDOWS作ってるよorz...)

今日は久しぶりの休みです。ぼちぼち作業を始めます。

221 :名前は開発中のものです。:04/04/14 10:42 ID:fCb1f0Lh
Excelでcsv扱うと文字列の先頭のゼロが数値として読み込むために消えたり
全角数値が半角になったりしてくれるんであんまり便利な物ではないですよ

ダブルクォーテーションでくくった項目は強制的に文字列として読み込んでくれるとよかったのですがね


222 :親父PG:04/04/14 10:50 ID:EE4mRz9N
>>221
それは拡張子をtxtで読みこめば回避できます。読み込み時にセルの属性指定可能。
このシステムに関してなら、トリガーテーブルに文字列はありませんので大丈夫です。

223 :名前は開発中のものです。:04/04/14 17:33 ID:bV4eSf3V
ひげぽんOSは飽きたのか?

224 :親父PG:04/04/14 17:50 ID:EE4mRz9N
>>223
こんなプロジェクトがあったんですね。知りませんでした。orz...
OSを作る気はありまえん(W そんな能力はありませぬorz...

新人PGさんへ 既にご存知かもしれませんがこういうサイトがあります
http://www.ultrasync.net/dee/kr2helps/tjs2doc/contents/

私が仮想マシン側の設計ですね。


この板見てるとツクール派と、それ以外を使ってみたいという方がけっこういらっしゃるようですね。
自作であればスクリプトエンジンが必用ですが、そのへんはみなさんどうしているのかな?



225 :名前は開発中のものです。:04/04/14 23:06 ID:FAI9201/
>>223
何コイツ?

226 :名前は開発中のものです。:04/04/14 23:26 ID:7S1uDrPs
ここの親父はまだまだ若い方だろう。
・・・もっと親父になるとマジではかどらなくなるから
今のうちにやりたい事やっときなされ。

227 :WinMEMEME!fuckme!:04/04/15 00:25 ID:WvzZ497j
unnkoburiburi?

228 :新人PG:04/04/15 01:04 ID:XWJTPtW1
ただいま帰りました。研修も無しにいきなり出向させられる会社ってどうよ(泣)

>>親父PGタン
なんとなくわかりました。スクリプト言語(みたいなもの)を設計するって事ですね。
それならいっそのこと、トリガーだけではなくてシーン等も記述するできるようにしたいですよね?
あまり汎用的なものは考えていないのですが、現ゲームの作成に特化したものを目指すようにします。

#余談ですが、卒論のテーマと似ていますw
#流用しながら作る予定なので、早く作れるかも?

229 :親父PG:04/04/15 07:18 ID:lFmywgB/
>>226
^^;ガンバリマス
>>227
orz...
>>228
おつかれさま。お仕事大変ですね。
>スクリプト言語(みたいなもの)を設計するって事ですね。
そうです。よろしくお願いします。
>トリガーだけではなくてシーン等も記述するできるようにしたいですよね?
そうです。そして出力ファイルは分離して行われます。
トリガーとシーンは分離します。

>あまり汎用的なものは考えていないのですが、現ゲームの作成に特化したものを目指すようにします
スクリプト言語内で一旦中間コードにして、そこから出力フォーマット用に変換するように設計すると良いですよ。
出力フォーマットを切り替えると、別の用途用に使えるように切り替える事も出来ます^^;(仕様変更にも強くなりますorz...)

#余談ですが、卒論のテーマと似ていますw
#流用しながら作る予定なので、早く作れるかも?

おお! 期待してますよ♪






230 :親父PG:04/04/18 17:10 ID:2197QA5A
しばらく書き込みがなくてさびしいので書き込みますorz...

日々少しずつ進んでいますが、なかなか進展しません。今調整いている部分が大掛かりな部分なので仕方ないのですがorz...
親父プロジェクトの構造

    LIFE=trueであればACTトリガーvietualFunction
「基底クラススケジュール」→インプリメント部
  ↑              ↓各オブジェクト(ポリゴンなどをオブジェクト配列のデータより作成)
  ↑一定周期  描画ループ
Windowloop →→→       描画
                          ↑
                          ↑                     
WindowMessage(OSトリガー)→範囲チェック→オブジェクトデータ−の操作

各オブジェクトデータ−配列(STL)
○WINDOWSクラス<−現在作成中 登録済みのWINDOWのスタイルから複製を作って、ポリゴンーテクスチャーボタンなどを画面に配置する。
○ボタンクラス テクスチャとボタンの振る舞い(トリガー)や描画をコントロール
○テクスチャクラス テクスチャのファイルの読み込み部分切り出しなどをコントロール
○ポリゴンクラス 主に四角形を作りテクスチャが張り込まれる。線や点にも対応
○ポリゴンクラス3D 上の機能に3D用に派生したクラス
○ライトクラス ライトを定義するポリゴンと同じように移動させることができる
○フォントクラス フォント表示
○範囲クラス 範囲を定義する(3D対応)
○オブジェクトIDマネージャー オブジェクトを作成した時にユニークなID番号を発行する。各オブジェクトの配列のINDEX値も格納してハンドルからアクセスしたいオブジェクトを識別できる
○プロファイルクラス 定義ファイルの読み込み
○コマンドクラス 下位コマンド全般を定義コントロールする為の関数群

さて、作業にもどりますorz.... パコに入っていたCDが出てきたので押し込んだらCIV3の画面が...激しく誘惑に駆られるw

231 :名前は開発中のものです。:04/04/19 18:50 ID:zoW1zDwj
今始めてきたけど、親父さんすごいなぁ。
全くわからん。
HPでも立ててみたら?

232 :親父PG:04/04/19 20:15 ID:HvqP5Z0m
>>231
どうも^^;
HPですが「新人PG」さんのご好意で以下のものがあります。
http://www.geocities.jp/oyajipg/index.html

さてWINDOWですが、複数面サポート。
クリックにより背面と前面入れ替わる動き。
タイトルバーの表示
キャプションの表示
クローズボタンの表示、MOUSEOVERで反応、クリックでウインド閉じる
タイトルバーをクリックして動かす
Windowのレクト領域の頂点に色を設定できる機能
Windowの半透明表示

こんな所までできました。
改めてWINDOWSのコントールオブジェクトを1から造るの面倒だなぁとorz...

しかも、スクロール機能、拡大縮小機能がありませんね。マンドクサイorz.....

まぁWINDOWSを造っているわけではないので、ボタンとメニューとテキストを載せて、
動かせるようになったら、一旦収束してスクリプトに移ります。

バイナリを解読して仮想スクリプト用エンジンを造る事になります。
バイナリコードと命令表を作らないといけません。
ほんとコツコツだなぁ(笑




233 :231:04/04/19 21:14 ID:AzIQfmcz
おお、早速反応が来た。なんだかうれしい。
VisualC買うべきですかね。一応高校生なんでアカデミックで買えるから買ったほうがいいんですかね。
いや、Cのかけらもわかってないんですけど。
金がないからDev-Cという安易な考えは捨てちまったほうがいいですね。
紹介していただいたページにも書いてあるし。
んじゃ、がんばってください

234 :親父PG:04/04/19 21:46 ID:HvqP5Z0m
>>233
アカデミックですとC++.net10000円しないんですよね。
フルで買っても2万5千円ぐらいかな?

ちなみにC++.net単体でCの学習は辛いかもしれない。
言語の解説は入っておらず、クラス構成が書かれたポスターのような表が何枚か入ってるだけ。
最初の事初めでしたらC#のほうがマネージドコードやコンポ−ネントなどが使い易くてよいかもしれませんね。
(C++.netでも使えるけど、ディホルトの設定では使えなかったりするしorz...)
フリーのCビルダーも良いかもしれません。なにより結果に最短なものがベストです。

それでしばらく学習した後に、DirectXが良いと思われます。
C++.netはここの板的にはDirectX以外の用途には使えません(w 怒られるかな@rz

235 :名前は開発中のものです。:04/04/19 22:33 ID:4HaR2ypQ
C自体が全く分からないというけどほかの言語はどうなのかな
いまだと無料でつかえる言語たくさんあるので言語自体が不慣れならそちらからはいるといい

そしてゲーム作るのにC++じゃないということはない


236 :新人PG:04/04/19 23:10 ID:rjSD3Om1
お久しぶりです。ただいま仕事から戻りました。
ぶっちゃけ仕事忙しすぎて、あんまり手がかけれない状態に陥ってますが、勘弁してください・・・(汗

>>親父PGタン
今言語設計に取り掛かっていて、前に出して頂いた目的コードを参考にしながら中間コードの出力を想像している所です。
似非Java言語仕様となっています。
構造化フローOnlyで、型チェックは今のところ省いています。
連休までには動くものができると思いますが、それまではソース&仕様書の断片を小出しにしていきます。
ただ、今の目的コードの草案だけではちょっとムリポです。ある程度作ると、いろんな面が見えてくるので
そこで突っ込みをいれてみます。(こんな感じの進行で行くんですよね?w)

環境Win2K + VC++7.0 + STL + Boostてな環境です。
ソース公開するつもりなので穴があったら突っ込んでください・・・。>コンパイラ職人

237 :親父PG:04/04/19 23:31 ID:HvqP5Z0m
>>236
お疲れ様、お久しぶりです。
進行についてはそれでOKです。というか付き合って頂いて有難うです。
こちらの仮想エンジンは固定長トークンを随時実行していくというタイプになります。
あまり賢いとはいえません(orz...
CPUコードのようなイメージで、命令にはいろいろな「バリエーション」を選択できます。

とりあえず基本的な制御構造の部分を決めていきましょう。
「命令」トークンの価決めが必要ですね。取り合えずNOPは90Hで(謎

Windowの部分が完成したら一旦UPして見てもらおうと思います。
プラットフォームしかできていないので、大掛かりな割にはしょぼいのですがorz...


238 :とおりすがりの親父PG:04/04/20 17:51 ID:UA9bY4ln
取り急ぎトリガー構造体

TYPE 1 48byte DataString

struct stScriptTcodeA {
unsigned short ;//S/N シナリオシリアル
unsigned short ;//ID 番号
unsigned char MainCodeToken;//このテーブルの主な役割を示す
char Enable;//この値が-1の場合シナリオエディタを使ってコンパイルされていない 0:disenable 1:enable
unsigned char PAtype;//パラメーターAの指している場所、使われ方等をコードで示す
unsigned char PBtype;//パラメーターBの指している場所、使われ方等をコードで示す
int ParameterA;//パラメータA
int ParameterB;//パラメーターB
short SubParameterA;//パラメータA sub
short SubParameterB;//パラメータB sub

unsigned char CalcToken;// 計算式
char BoolToken;// トリガー条件 真の時 偽の時 =0 !=0 - + -1 +1 2の倍数 
unsigned char ActToken;//アクション番号
unsigned char ParameterType;0: int*3 / 1: short*6 (HIWORD)(LOWORD)..

int Callparametar1;//パラメーター
int Callparametar2;//
int Callparametar3;//

int Resaved; //(this Area Used System Work) 使用者がワークエリアとして使う
int Resaved; //(this Area Used System Work)
short Resave01;
unsigned char CountToken トリガーをまとめて使う場合、いくつあるか?
unsigned char EndofToken 命令の終わりコード 終わり・次がある
};


239 :231:04/04/20 19:09 ID:558xdrhW
>>親父PGさま
なるほど。Cの勉強をしようと思ったとき、「よくVisualCでしか動かないコードを載せているサイトや本が多い」
と学校の先輩に言われたのでVisualCを買おうかと思ったのです。
で、GCC(Dev-C)を使っているのは、これはなんとなく……。
いろいろありがとうこざいます。
>>235さま
今までDelphiを使っておりました。ただ、学校(工業高校です)の勉強でCを使うらしいし、Cは実行速度が速い
と聞いていたのでこの際Cもやってみるか、と思った次第です。

240 :名前は開発中のものです。:04/04/20 19:18 ID:svF6Tlnf
>>239
***すれ立てるまでもない質問はここで 第53刷***
http://pc5.2ch.net/test/read.cgi/tech/1081170910/l50

241 :親父PG:04/04/20 20:05 ID:EEGw5Gpv
>>239
Delphiをお使いですか、私も愛用しております。私はツール類はDelphiを使って作成しています。楽ですからね^^;。。。
最近は、「造りたいもの」に合わせて言語を使う(選ぶ)傾向があると思いますので。特にVCが必用ということはないと思います。
VCにこだわらなくても慣れて来ると、Cファミリーに属する言語は殆ど理解できるようになりますから(W
また実行速度は学習段階では考えなくても良いと思いますよ。
サイトのサンプルはコピペではなく、意味を理解して使う事が望ましい。ですからVC用に書かれていようが関係ありません。
例をあげるとDelphi用のコードを書いている時に、サンプルはCのソースコードを読むことは沢山あります。

むしろVCという開発環境を使いこなすのは大変かもしれません。それはプログラム言語の学習とはちょっとニュアンスが違います。
MFCやらマネージドクラスやらブーストやらDirectXやらSTLやら(ムニャムニャ
ライブラリの導入一つではまる事はざらにあります(ここがCの柔軟性の負の遺産と思いますがorz...
結論を言えば、慌ててVCにすることはないと思います。VCでしか造れない(造り易い)という目標があれば別ですが。

>>240
お気遣い有難うございます(^^*/

今日は久しぶりの早い帰りです。明日も昼からなのでじっくり取り組もうと思います。
今作っているWINDOWですが、マウスに合わせてウインドがグリグリ動いて、ちょっと嬉しい。
マウスを激しく動かしたり、ビューポート外でマウスを放したときの処理など、エラー処理と
(その危険な)コードを探すのに苦労しました(死
危険なメモリアクセスが(滝汗
しかしポインターって便利ですね。

蛇足ですが構造体にSTLのポインターって定義できるんですよね。
実行時にNEWでSTLを実体化してドカドカデータ−をぶち込んで使っています。


さて、呆れられるまえに親父日記は終了します。




242 :新人PG:04/04/21 01:25 ID:eYcWXse+
お疲れ様です。

>>親父PG
まずは、Windowの基盤完成おめでたうございます。
DirectXの穴(デバイス消失など)も考えられて作られているようで、素晴らしいと思います。
これはゲーム完成が楽しみですね。
トリガデータ設計ありがとうございます。やはり目的コードが決まるとモヤモヤが消えます。
現在構文解析ツリーの設計と言語設計の矛盾を小一時間(いや、もっとか)問い詰めています。
大学の教科書見て復習しながらの実装です・・・(汗
あと、まとめページの方を明日ぐらいに更新しておきます。更新ペース遅くてスマソです。

#余談1
主観ですけどVCよりも使いやすいC/C++環境って無かったです。
MFCの使い方から教える入門書が悪い気がしますw
個人的には
コンソール(C++の文法と標準関数覚える) → 猫でも → MFC入門(斜陽ですけど)
で十分な気がするんですけどw つーか.NET覚えてWindows.Form覚え(ry

#余談2
Windowsでゲームを作る上で、C#.NET + DirectXも選択肢に入る時代になったんですね・・・。
思った以上に高速に動作します。MSがパフォーマンスを最も重視して設計したと
豪語していますが、流石に言うだけのことはありますね。

243 :名前は開発中のものです。:04/04/21 01:50 ID:cLgAiJmm
つーかネックになる場所は大概描画方面だったりするので
その辺はDirectX使ってるのなら問題になることはないでしょう
インタプリタの旧VBでもネックになることもよほどのレベルじゃない限りまずありません

むしろ中間言語系は同一バイナリでも最適化できるのもポイントです
たとえばjavaの1.4.2は従来バージョンのアプリも大幅に高速化しています
これはSSEを使っているためです

静的コンパイラの最適化はたしかにいいのですが動的に環境に適応する
コンパイラ(hotspot技術)というのも使うかどうかはともかく遊び倒す
テーマとして面白い物です

ちとふるいですが
http://www.geocities.jp/toshio16369/column/021108a.html
もちろん、今の最適化はこのころからくらべてかなりよくなっています


244 :親父PG:04/04/21 04:38 ID:OH77B7oH
>>242
おつかれさま。 >現在構文解析ツリーの設計と言語設計の矛盾を小一時間(いや、もっとか)問い詰めています。
^^;復習してまでやってもらえて感謝です。
配列は会社で暇な時に紙に書いて構築しておりました。32Byteに収めたかったんですが、48byteになってしまいました。
あれだけではわけ解らないと思いますので補足説明しますね。
unsigned char MainCodeToken;//このテーブルの主な役割を示す
これはズバリそのままで、「計算」とか「IF文」「Swith文」「価のセット」など仮想VMに命令を伝えます。

char Enable;//この値が-1の場合シナリオエディタを使ってコンパイルされていない 0:disenable 1:enable
このー1というのはマップコンパイラ以外のツール(MAP(地形)にトリガーを埋め込むツール)などで
書き込まれたデータ−という意味です。 これを見つけたコンパイラは処理を追加義務が発生します。
命令コードは「地形MAPツールによって追加されたトリガ」になります。
 
unsigned char PAtype;//パラメーターAの指している場所、使われ方等をコードで示す
次のパラメータがFGのINDEX番号なのかMAPの座標なのか価なのかを表します
またINTをつかうかShortを使うか両方つかうかを識別します。
INT ,Short , (Short+INT), Short:INT , Short,(HIWORD)Short,LOWORD(Short)

unsigned char CalcToken;// 計算式
2つの価を同計算計算するか示します + - and or not > < >= <= ,INTかShortか両方か
パラメーターが複数ある場合(PAtypeで指示)、もここのコードで判断します。
同じ[+]を表すコードでも両方を加算するトークン用、片方だけのトークン用があります
パラメーターが複数ある場合、処理に引き渡す引数としても使えます。

char BoolToken;// トリガー条件 真の時 偽の時 =0 !=0 - + -1 +1 2の倍数 
-64〜+64までは価として(6ビット)最上位ビットが 真の時 偽の時を表します
7ビット目がONの場合ユニークな条件を設定します65〜127 -65〜-127

00000000 は計算結果が0の時 真なら
10000000 は計算結果が0の時 偽なら
00000001 は計算結果が1の時 真なら
01000000 ユニークな条件(いまは考えていないorz)

245 :親父PG:04/04/21 10:08 ID:OH77B7oH
>>243
コンピューターの高速化がもたらした波ですなぁ。
Parlで最初にスカラー型を知った時は驚きでした。インタプリタできる芸当ですね。

ところで...
じっくり取り組もうとか宣言しているにも関わらず、パコの前で気絶してしまいましたorz...


246 :名前は開発中のものです。:04/04/21 11:34 ID:5LzXW3vc
×disenable
○disable

247 :名前は開発中のものです。:04/04/21 14:14 ID:y1g5Kw7w
×Parl
○Perl

248 :親父PG:04/04/21 14:17 ID:iaRnmK/d
>>246 247
orz....

249 :親父PG:04/04/21 19:09 ID:iaRnmK/d
新人PGさんへ
スクリプトを組むに当たって構造設計のお話を致します。

定義 スクリプト言語の本システムにおける位置付け
本システムVMにおいて動作命令を出す事が可能である。
条件文は主にトリガーテーブルに置かれ、実行命令文をわけて管理される(トリガーTBLと実行データ-)

アイドルは何処に書かれる?
アイドル状態を想定する必要は無い。スクリプトは処理が終わると自動的にアイドルモードに切り替わる。
必要がある場合にVM側よりトリガーが引かれ実行される

MAP座標
ユーザーの入力     -トリガ>トリガーTBLを検索 >実行>VMに実行部(が書かれたシナリオ上の番号を渡す) 
ボタンを押した時の処理

現在考えているのはこのようなタイプの静的なスクリプト処理です。(一部引数を動的に処理)

ここからが相談ですが、動的に処理をしたほうが好ましい内容があると思われるのですが、何か希望がありますでしょうか?

変数、配列 などがまず考えられます。

具体的な実装方法は考えていませんが、「外部プログラムの起動」やゲーム特有の処理が必要な場合、DLLの読み込みなども考えられます。

------------------------------------------------------------------------------------------------
余談ですがツクールXPの紹介HPを見ました。あまり細かいところまでは判らないですが、
MAP(地形)が3階層 画面サイズが640*400 MAPツール(チップ編集による地形作成)
スクリプト機能 暗号化機能などがあるようです。 暗号化機能というのは注目すべきアイデアかもしれませんね。

MAPツール(チップ編集による地形作成)については考察が必要かもしれません。


250 :親父PG:04/04/21 19:57 ID:iaRnmK/d

新人PGさんはご存知かもしれませんが、MAPツールについて確認の為に書いておきます。

ゲームの画像の伝統的なやり方として、チップデータ-によるMAP作成という手法があります。
これは決められたサイズ8*8 16*16単位で書かれたチップデーター(画像)を並べて画像にしていくというのがあります。
これはコンシュマーのマシンが1キャラをハードウェア的にそのように扱っていた為に、行われてきた伝統的なやり方です。
同じパターンの使いまわしができるという点で、手動でデータの圧縮しているという側面がありました。
PCエンジン開発用のPC98用ツールが広く出回って、色々なゲームの開発用に使われた事は結構有名(orz...

さてツクールでは、そのような方法とおぼしき方法が使われているようです(違っていたらごめんなさい)

DirectXでは画像を細かく分割して扱うメリットはないので、親父システムではこのような方法はサポートしません。
地形画像データ-はJPGで(笑
 
最近の(とはいってもかなり昔からだけど)地形ツールは論理的な地形データをツールによって並べると、
境目には自動的に埋められていくようです。平平山山<こういうデータ-の場合平^山の間に自動的に間を補完する画像データ-が置かれるようになっています。

こういうツールも1から組み立てると大変ですねぇ。とりあえず最初は1枚画でいいかなorz....


251 :名前は開発中のものです。:04/04/21 20:06 ID:cLgAiJmm
PCGデータ使った方がサイズ小さいというのはともかく
Jpegだとカラーキーやアルファ扱うとき困りませんか?
重ね合わせとか普通しますし

それにハイドライドやFFの森のようなものをやる場合どうします?


252 :231:04/04/21 20:44 ID:uRL7H9Xs
>>親父PGさま
長い解説ありがとうございます。
>>サイトのサンプルはコピペではなく、意味を理解して使う事が望ましい。
肝に銘じておきます。
取り敢えずDev-Cで頑張ってみようと思います。いつかそれなりにプログラムが書けるようになったらここに戻ってこようと思います。

>>新人PGさま
わざわざありがとうございます。

253 :親父PG:04/04/21 23:39 ID:OH77B7oH
>>251
いろいろと方法があります。アンチエイリアスなどが必用な場合を「除いて」単純なクロマキーであれば
|アンド演算で抜けます。また全体を半透明にする場合はα値を偽造します。

うまくいかなかったらPNGでorz.. 

>>231
いつでもどうぞ^^ 前向きな書き込みであれば、歓迎しますよ。



254 :新人PG:04/04/22 00:09 ID:GFAvdjZl
>>243
色々意見ありがとうございます。
あまり大それた物を期待してもらうと逆に恐縮なんですけど、自分の出来る範囲で頑張っていこうかと思います。

>>親父PGタン
一応まとめの方に、トリガデータを載せました。
僕のアタマが悪いのか、完全理解が出来てません。また聞きます(汗

>>スクリプトの構造設計
・アイドル処理は要らない
同意&同感です。こちらはトリガ処理・シーン処理記述のみを書かせます。
しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。

・静的か動的か
変数、配列はサポートします。
DLL読み込みやその他プラグイン読み込み等は、今は考えてないです・・・。
とりあえず、第1段階完成後に考えます。

・チップデータの地形
実はあんまり好きくないです。
本当は3Dで臨場感のあるタイプのが好きなのですけど、難しい=親父PGタンが大変 なので
今回はアリかななんて思っています。
まあ、チップも一枚絵も対応すると言う事ならば、チップで組んだほうが両対応で良いと思いますけどね。

255 :親父PG:04/04/22 00:10 ID:cy5y1emu
>>新人PG様 まとめページ有難うございます。

いくつか修正点がありますので書いておきますね。
ParameterA パラメータ左辺値? 2
ParameterB パラメータ右辺値? 2

意味のコメントはそれであってますよ^^
サイズは4です。

CalcToken 計算式?? あまり良く分っていない・・・
unsigned char CalcToken;// 計算式
2つの価(ParameterA ParameterB)
をどのように計算するか示します + - and or not > < >= <= ,INTかShortか両方か
パラメーターが複数ある場合(PAtypeで指示)、もここのコードで判断します。
同じ[+]を表すコードでも両方を加算するトークン用、片方だけのトークン用があります
パラメーターが複数ある場合、処理に引き渡す引数としても使えます。

例 10は足し算 A+B
  11は足し算 A'A+B'B 二つの価を上位ビット下位ビットで解釈
  12は足し算 A'+B'   サブパラメーターで演算

例 21は比較 A?B
22は比較 A?B A'?B'
23は比較 HIWORD(A)HIWORD(B) LOWORD(A)LOWORD(B)

こんな感じです。

ParameterType ?
以下の3つのintの分割方法を示します。Short *6とか

解らない点がありましたらどしどしご質問ください。

256 :名前は開発中のものです。:04/04/22 00:10 ID:hQ7KmIOV
>>253

いや、jpegってことはピクセルが綺麗に抜けないってところが問題なわけで
ブロックノイズ単位で色が抜けるのはなんかいやだ
ま、pngでいいんじゃない?
αももてるし、パレットもあるし

ところでハイドライドとかの森って実現できるの?
キャラのY座標によって手前に行ったり奥に言ったりするようなオブジェクトなんだけど

257 :親父PG:04/04/22 00:19 ID:cy5y1emu
>しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。
キャラがある座標にいどうする。
MAP上にはトリガーがあるという情報しかありません

そこで初めてMAPからトリガーテーブルに対して座標引数をもったトリガーが呼ばれます。
と、いっても実際にシステム側からすれば、一致する座標のトリガーテーブルを検索して探すだけなんですけども。
(これが理由で命令コードにMAPから呼ばれた命令)というのがあるわけです。
検索速度を上げるためです。

スクリプト側から見れば、座標データ−さえセットしておけば、システム側から勝手にトリガーを
引いてくれる事になります。


チップデータ−を内部でサポートするというとは、実際にチップINDEXを持って使用時に組み立てる作業を
PG内部でおこなう事をいいます。今回このようなことはおこないません。


258 :親父PG:04/04/22 00:30 ID:cy5y1emu
>>256
おお256を踏みましたね。このスレも無事に1バイトを超えました(W

ご心配のJPGデータですが、内部に読み込むとARGB各8ビットというデータ−に変わります。
この時点でαは全ピクセルにFFが割り当てられています。
このFFの価を変化させてあげると半透明になります。

実はこのようなことを心配しなくても、2つのテクスチャはちゃんと抜くことができます。
αが意味を持つのはエッジ処理です。全体に薄くしたり特定色(黒)を透明にする事は特に
PNGを使う必用は無いのです。

綺麗にエッジを抜く場合はαデータ−を持ったPNGが有利ですが。それほど必用でないものや
最初からスクリーン<−フォトショップのレイヤー属性のあれ(or演算)
であればαデータ−なしでもそれほど問題になりません。
要するに使う場所と目的によって決定されます。


259 :親父PG:04/04/22 23:37 ID:cy5y1emu
>>新人PGさんへ
>しかし未だにMAP座標にトリガーを持たせるのにはちと抵抗があります・・・。
もしかして、地形MAPにあの48バイトのトリガーデータを持つと、お考えですか?
もしそうなら違いますよ。地形データには「トリガーを引いて」という意味の1バイトデータしか使いません。

眠い、眠いです。ツールにバグがあった...ナオサナケレバorz...

とある会社のデータ−ベースに製品シリアルに「ハイフンと全角ハイフン」が混じって登録されているのを発見。
直すのは不可能との事....(メインフレーム上にあり、直すのにんんんん万かかるらしい)激しく鬱ですorz...



260 :名前は開発中のものです。:04/04/22 23:42 ID:q2BwaruN
ウィンドウ見せてクリ

261 :新人PG:04/04/23 00:03 ID:zEfEFbHL
>>親父PGタン
お疲れ様です。
メインフレームは触った事ないんで良く分らないですが、コンバータ組むぐらいじゃダメなんでしょうね・・・きっと。

>もしかして、地形MAPにあの48バイトのトリガーデータを持つと、お考えですか?
>もしそうなら違いますよ。地形データには「トリガーを引いて」という意味の1バイトデータしか使いません。
いえ。トリガーを変更した場合、直接は関係なさそうな地形MAPもデータを作りなおさなきゃいけないのでそう思いました。
ツールが補完するとしても、地形MAP編集ツール等がトリガーの事を気にしなくてはいけないデータ構造はちょっと・・・。
地形MAPは地図情報のみを扱う事にすると良いのでは?、と思ったのです。

言語設計なのですけど、一連のシーンを1関数として定義していきます。
吉里吉里のスクリプトを大いに参考にさせて頂いています、が、そこまでの汎用性は無いです。
言語上に機能として持たせたい物で、レイヤー・ウィンドウ管理、外部ファイル読み込み、がありますがどうでしょうか?
(特に外部ファイル読み込みは静的か動的かの話題なんですけど・・・)

262 :親父PG:04/04/23 00:05 ID:nZvvFTd4
>>260
まだデザインなど適当ですがこんな感じです。
http://www02.so-net.ne.jp/~wizzhen/flash/test.jpg

今 標準的なメッセージ表示用のものを造っているところです。
OKボタンは左上のものが入ります

ツールのバグでいま表示できていませんorz...


263 :親父PG:04/04/23 00:11 ID:nZvvFTd4
>>261
おつかれさまー
メインフレームの件は私もそう思ったんですけどね。そういう簡単なものではないらしい
未知の世界(デッカイTAPE装置が動いている世界...

MAPの話
例えばMAPにトリガーが無いと仮定すると、
キャラが移動する毎にトリガーテーブル−のサーチが必要になります。
これは効率が悪いので、MAP側に「探せ!」というコードを埋め込むわけです。

外部ファイル読み込みは 動的に処理しないとあまり意味はありません。
固定長のトリガーテーブルは後ろに付け足しできるなど、扱い易い点はあると思いますけどね。

264 :親父PG:04/04/23 19:05 ID:nZvvFTd4
新人PGさんへ
豆乳システムの命令リファレンスです
ttp://tonyu.kake.info.waseda.ac.jp/api/wiki.cgi?page=%cc%bf%ce%e1%a5%ea%a5%d5%a5%a1%a5%ec%a5%f3%a5%b9

これを参考に実行部のほうも定義していきますね。

265 :親父PG:04/04/25 16:09 ID:F+nBnVBh
まだデザインなど適当ですがこんな感じです。
http://www02.so-net.ne.jp/~wizzhen/flash/test.jpg

文字出力が出来ました。

このウインドは全角で24文字程度の出力用です。
文字量が増えた時は何もしませんorz...

スクロール機能を備えたウインドはこの次に作成します。

ところで皆さんは文字列用のライブラリは何をお使いですか?
(特に可変文字列など)
私はSTLのbasic_string を使っておりますが^^


266 :親父PG:04/04/25 16:10 ID:F+nBnVBh
ageてしまったorz.........................

267 :親父PG:04/04/25 16:25 ID:F+nBnVBh
>>新人PGさんへ 今、ある下位コマンドです。設計の参考にしてください。
const hOBJECT _mesNewOBJWin( int objtype,D3DPRIMITIVETYPE stype,unsigned ten ,byte* pstruc ,int zindex);//Winsowの登録(OBJを呼び出し)
const hOBJECT _mesNewOBJ( int objtype,D3DPRIMITIVETYPE stype,unsigned ten ,byte* pstruc );//OBJの登録
const hOBJECT _mesNewOBJ( int objtype,char* texfilename ,int usealpa);//テクスチャの登録
const hOBJECT _mesNewOBJ( int objtype ,float x,float y ,float z );//四角などの登録
const hOBJECT _mesNewOBJ( int objtype ,float x,float y ,float z ,D3DLIGHT9* );//ライトの登録
const hOBJECT _mesNewOBJ( int objtype ,float x,float y ,float z ,float w,float h,float r );//空間の登録
const hOBJECT _mesNewOBJ( int objtype ,float D3Dfontsize, char* outputtext ,int D3Dfontnumber );//フォントの登録
void _mesVirePortTextureSet();
int _mesViewPortProfileLoad(char* datfilename );//ViewPortの切替 セッテイングファイルの読み込み
int _mesViewPortProfileLoad();//ViewPortの切替 セッテイングファイルの切替
int _mesLoadTextureforProfile();//テクスチャファイルを一気に読み込む関数
int _mesMakeButtonforProfile();//ボタンを貼り付ける□を作成する
int _mesSetButtonText( dBOption* pButtonData ,char* newtext);
int _mesSetButtonText( int btnumber,char* newtext);//ボタンのテキストを変更する
int _masMakeButton(int btnumber ,dBOption* dbt,dRECT* rect,int zindex);//ボタンを作成する
int _mesMovingOBJ( hOBJECT,int time ,float x ,float y ,float z ,BOOL sw );//objの移動  
int _mesMovOBJ( hOBJECT handle,int time ,float x ,float y ,float z ,BOOL sw );//objのSTOP移動


268 :親父PG:04/04/25 16:26 ID:F+nBnVBh
int _mesScaleOBJ( hOBJECT handle,int time ,float x ,float y ,float z ,BOOL sw );//objの拡大縮小
int _mesShowOBJ( hOBJECT handle, int time );
int _mesHideOBJ( hOBJECT handle, int time );
int _mesSetObjectOutputText( hOBJECT handle,float x,float y,float z,float fontsize=FONT_NORESIZE,const char* outputText =NULL );
int _mesDeleteOBJ( hOBJECT handle, int time );
int _mesSetWindowPos(unsigned int nWin ,float x,float y ,float z);//Moveコマンドを一斉に発行する_mesmoveの上位コマンド
int _mesSetTexture( unsigned int taget,unsigned int texnumber ,unsigned int coindex =0);
int _mesSetArea( hOBJECT tagetA,hOBJECT objnumber,unsigned int _incommand_=0,unsigned int _outcommand_=0,unsigned int _hitcommand_=0 );
int _mesSetObjectStatus1( hOBJECT handle,OBJSTATUSFORMAT _format_ );//
int _mesFontColorChange( hOBJECT handle,float r,float g,float b );//FONTに対してのみ有効 即対応型
int _mesFontSizeChange( hOBJECT handle,float _fontsize_ );//FONTに対してのみ有効 即対応型
void ClearALLOBJ_();
hwin _mesCreateWindow(unsigned char WinType ,short X,short Y);
void _mesDeleteWindow(int hwin);

変更・追加はありますorz...つぎはぎだらけなのがばれてしまうソースですな(汗

269 :名前は開発中のものです。:04/04/25 17:29 ID:TuLiLdfJ
>>265
std::string でお茶を濁してまつ

270 :新人PG:04/04/26 00:37 ID:RHLEfjhQ
公言した連休まで一週間しかないYO!
先に謝っておきます。多分動くもの、できません・・・。

Boostのspiritを使いつつ、字句&構文解析を頑張って作っているところです、が、なかなか思うように進んでおりません。
言語仕様ですが、まだ公開できる段階ではありません(汗
最終形は似非C言語+謎の独自予約語と思って頂くとわかりやすいかも知れません。

出来たところ
・EBNFの基幹部分(やっと終わった・・・)
・演算部分の字句・構文解析実装
・if文の字句・構文解析実装

出来てないところ
・その他の構文の字句・構文解析実装
・中間コード設計(先にやった方がいいな・・・)
・目的コード設計
・中間コード出力実装
・中間コード解析実装
・目的コード出力実装
・その他ドキュメントなど・・・
全然出来てませんな・・・。早く出来るなんて嘘こきましたがもうちょっと時間を下され・・・。


271 :親父PG:04/04/26 00:46 ID:Tu3Nnhfj
>>270
お疲れ様。^^
まぁ肩の力を抜いて楽しくいきましょう。
自分で仕様を決めて造るProgramは、楽しくやらないと損ですからね。
力を抜いて頑張ってください。

私の方もWINDOWの拡張に努めています。文字列が入りきらない場合の
文字のスキップ(スクロール)の処理などをやってます。
出来上がった所から少しずつ、先のURLにあぷしていこうと思います。

私事ですが明後日に光が開通します。
勢いでMN8300W買ってしまいましたorz....


272 :名前は開発中のものです。:04/04/26 09:31 ID:YvjKmIIw
なんか文字の後ろが透過されてないんだけど、
もしかして例のDIB側で合成して、αを使っていないせい?

273 :親父PG:04/04/26 12:40 ID:Tu3Nnhfj
>>269
スタンダートストリングですか^^
何が何に強いとか特長とかあるんですかね?
C関係は文字ライブラリの種類多すぎorz...

デルファイのようにStringが、すべてカプセル化して1つしかない状態のほうが
シンプルで良いような気もするんですけどね(個人的には)

string.sort() ←こういう事が標準でできるあたりはCも便利なんですが...

>>272
そうではありませぬ。
文字の後ろは可読性を考えて、わざと不透明にしております。
文字は高精度αを使って滑らかに出力しております。

「文字 DIB
 |合成(スクリーン)
 背景」Tecture このとき背景のαを255←ここを変化させると透過する
ポリゴン
(重ね合わせ)
WINDOWポリゴン 頂点にα設定 
(重ね合わせ)
サーフェースカラー

274 :名前は開発中のものです。:04/04/28 22:48 ID:ZcMEeys0
応援さげほっしゅ

275 :親父PG:04/04/29 00:55 ID:fKr8I6Zs
>>274
最近、書き込み少なくて寂しいのでorz...ありがとうです^^

さて我が家にも光が開通したのですが、ADSL>光の切替が月末に固定されているので
使えないというorz...

システムのほうはコンポーネントという概念(複数のコントロールOBJ)を一括して扱う
この実現のために新しいクラスの定義、一部命令の移動など工事などを進めました。

仕事の合間に紙に、ボールペンでクラスの構造設計書を書いておりました。
落書きの山ですな。

この新しいクラスのためにSTLのタイプを何を使うか検討しています。

STLの種類選びはなかなか重要で本システムでも、Vector と deque を
切り替えただけで80%速度が改善しました。

さて親父日記は終了して 仕事に戻ります

276 :新人PG:04/04/29 21:03 ID:im0w3ame
>>親父PG
お疲れ様です。
アク禁食らっていてカキコできませんですた・・・。

言語の設計
・ホワイトスペースは 空白・タブ・コメント・改行文字とします。
・コメントはJava風("//" "/* */")
・if,for,while,switch,gotoあり
・型はshort,int,long,byte,string
・予約語としてscene,array等を予定
・関数の宣言 int function Func1(int arg,string str){...}
てな感じです。(細かい所はまた後で)

クラス実装はほぼ諦めてます・・・。(だれか作れる人がいたら受け継いでくれ〜)
標準APIをこちらが実装する事でゲームの記述を行えるようにします。

こちらもコンパイラ作るのが飽きたときにコソッとゲーム考えたりしてます。
地形なのですけど、テクスチャから地形ポリゴンの高低を生成できたりすると面白いかもしれません?

#文字列は普段はstd::string MFC環境はCStringを使っています。

277 :親父PG:04/04/29 21:51 ID:j+4sgpkF
>>276
お疲れさま 現在私は夜勤中ですorz... しかもノートPCの電源家に忘れた。さらに鬱....

仕様ですが、最初の段階としては問題ないと思います。
そもそもクラス言語が理解している人ならば、ゲームツールを使わず自分で作ってるでしょう。orz....
というわけで、簡単な言語仕様をまとめて、シナリオライタークラスの人に「難易度」を計ってもらう事が必要かもしれません。

>>こちらもコンパイラ作るのが飽きたときにコソッとゲーム考えたりしてます。
いいですねぇ。なんかPGの話ばかりしてると、PG以外の人が寄り付かなくなってしまうので、いろいろとネタを振るのもいいかもしれませんね。

>>地形なのですけど、テクスチャから地形ポリゴンの高低を生成できたりすると面白いかもしれません?
すまん。もう少し詳しく教えてくだされ。テクスチャの何から高低を生成するのかな?

いきなりですが、DirectXの描画ループの説明を致します。
DirectXの描画ループ
 ポリゴンを作る
 ポリゴンにテクスチャを張る
 レンダリングGO
 描画(FLIP) 
ポリゴンを張るというのはポリゴンのデータ-に対してテクスチャの(ポインタ)を渡します。
するとあとはDirectXが勝手に描いてくれます。いいですねぇ。
さて2つのポリゴンに対してテクスチャAを割り当てた時に、テクスチャAの内容を変化させるとどうなるか? 答えは2つのポリゴン両方の内容が変化します。
この特性は美味く使うと便利ですが、少し困る事があります。その場合はテクスチャのコピーを作ってそのポインタを渡したほうがいいかもしれません。


278 :新人PG:04/04/29 22:17 ID:im0w3ame
>>親父PGタン
(゚Д゚)オツーです。
シナリオライターはツールやこちらが組んだAPIを使用して、シンプルな記述が出来るように設計します。
ほとんど変数や分岐を記述させないで、こちらが用意した評価関数を使用させるようにします。
(ほとんどGameProgramming Gemsの内容に従っての設計になっています)

>>地形データからマップ生成
http://www.uroboros.org/manageddirectx_csharp.html
こんなのを見ていて面白そうだと思いました。

>>テクスチャの話
テクスチャを1つだけ生成して複数のポリゴンに参照させる事が出来るんですねぇ。
ゲームPGを全く(ていうか画像処理を)やった事の無い自分にとって面白い仕掛けだらけです。

279 :親父PG:04/04/30 01:23 ID:yNfOtjDQ
>>278
お疲れさま。
サンプル見ました。面白いですね。ではランドスケープの部分は新人PGさんにお任せします(w
とりあえずなのですが、MAPは一枚画を3枚ぐらいレイヤー構造でスクロールするものを考えています。

でランドスケープのシステムの話。
シミュレーションなどで使うMAPでは論理座標を管理するMAPが存在します。
これを表すためにXY(Z)の配列をつくってその座標の特性に合わせてランドを作成します。
1が海2が平地として
111111
111211
112211
111111

古典的なやり方では1対1に対応して「チップ」データをおいていきました。
昔の「大戦略」などを思い出していただければ結構です。
これはMAPをユーザーにもエデットできるという仕様上からもこのような設計になってるのでしょう
ユーザーにエディットさせないのであれば、1枚画を使ったほうが綺麗ですね。そういう方法を使っているところも結構あります。

さて次の方法ですが、1に上げた方法を拡張して平地と海の間のグラフィックを補完する方法というのがあります。
1と2の間に海岸のグラフィックを表示する
これは3Dではない地形データを表現する方法として多く使われています。

3DMAP 予め作成済みの頂点データ-とポリゴンデータの組み合わせを表示する。
これは速度的にもよく使用されている方法です。動的に変化するのは必要な部分のみ。
通信ゲームなどはこの方法が多いのではないでしょうか?

本システムでは(とりあえず)斜め上視点を考えてます。後期ドラクエと考えてください。
地形MAPツールも作らないといけないですねぇorz... やる事多すぎw
次に考えているのは論理MAPデータ-からポリゴンデータ-を動的(読み込み時)に作成して
ポリゴンを貼り付けていく方法というのがあります。
速度的な心配があるのですが、精度がそれほどでもなければなんとかなるかも。

280 :新人PG:04/05/02 16:13 ID:tneOjVuC
>>親父PGタン
お疲れ様です。連休入ってから呆けていて遊んでました・・・、スンマソン。
スクリプト言語、中間コード生成までは問題なく進めそうです。(BoostのSpiritのおかげです・・・)
問題はその先なのですが(汗
Mの命令語の設計が出来てからマッピングを考えるのでそれ以上は保留としておきます。
不安要素は、スクリプト言語の汎用性が高すぎる事です。トリガーとマッピングできるのかしら?
恐らく、制御構造が全くといって良いほど違うので「戻り」は発生すると思いますけど。

>>サンプル見ました。面白いですね。ではランドスケープの部分は新人PGさんにお任せします(w
>>とりあえずなのですが、MAPは一枚画を3枚ぐらいレイヤー構造でスクロールするものを考えています。
ちょっと待ったーッ!2Dの表示もやった事のない僕にそんな餌を撒かないで下さい(汗
画像処理系は任せますw 後学の為に参考にさせていただきますので b(・ー・)

個人的にはMAPツールはデータをプレビューできる機能さえあれば十分だと思ってますけどねw
あとはテキストエディタなりバイナリエディタなり使ってw

281 :新人PG:04/05/02 17:45 ID:tneOjVuC
ageてしまった・・・スマソ。
言語仕様なのですけど、関数とトリガーを完全に別の記述方法にしました。
宣言方法も違います。
トリガーの宣言:
"trigger" [シリアルID] ([トリガーより渡される引数]){...}
関数の宣言
[型(戻り値)] [関数名] ([スクリプト内で渡される引数] ){...}

その他の変更・疑問など
・FOR文,SWITCH文が無くなる可能性があります。
・ひょっとして中間コード要らない?←出力する中間コードそのものの変更が起こる可能性が非常に高いため
(字句・構文解析とファンクタは別実装)
・計算式が書けなくなるかも?(VMの命令語次第)

282 :名前は開発中のものです。:04/05/02 19:50 ID:PAfxeO72
for文や計算式が書けないのはまずいんでない?

283 :名前は開発中のものです。:04/05/02 21:08 ID:wpvFJ3U7
普通はスクリプト系にforとかswitchはあまりないんでない?
開発ツールのほうでswitchがあってもそれをifに展開したりする
forのような繰り返しはあまり多くないからさほどいらないはず

どうしてもほしかったら後で付け加えるだけでいいし


284 :名前は開発中のものです。:04/05/02 21:33 ID:PAfxeO72
>普通はスクリプト系にforとかswitchはあまりないんでない?
それ本当?
逆にforに相当するものが書けないスクリプトを知らないんで教えて欲しい。

285 :名前は開発中のものです。:04/05/02 21:34 ID:wpvFJ3U7
普通スクリプトって社内開発で外に出ないもんじゃ?


286 :名前は開発中のものです。:04/05/02 22:19 ID:PAfxeO72
>普通スクリプトって社内開発で外に出ないもんじゃ?
趣味ならまだしも仕事で作って
for文も使えないってことはないのでは?

スクリプトの処理系なんて社内開発以外にも
Python,Ruby,Lua などいろいろあると思います。

参考までにPython+SDLのゲーム開発サイトです。
ttp://www.pygame.org/

287 :名前は開発中のものです。:04/05/02 22:49 ID:wpvFJ3U7
ここでの流れはそういう汎用スクリプトの話してねーだろ


288 :名前は開発中のものです。:04/05/03 00:18 ID:O34XE/AV
いや市販ゲームにも使われてるし別にいいだろ。
逆に社内開発の非公開スクリプトの話されても困る。

289 :名前は開発中のものです。:04/05/03 01:58 ID:ttTkVS1d
スクリプトみたいなユーザーに近いレベルの言語こそ
forとかの制御構文あったほうがいいと思うけどね。
それをjumpやgotoなどに展開するのば普通じゃないのかな。

290 :名前は開発中のものです。:04/05/03 02:07 ID:0IkDbgp8
for文じゃなくてwhile文なんだよ。

ってのは冗談として、ゲームツールのスクリプトでループ文はいらないんじゃない?
Mainループとしてゲーム本体があるんだから段階的に時間軸に沿って処理する場合
でも、ツールユーザーがスクリプトで書くのは判定文だけでいいでしょ。
純粋なツールではないけどMorrowindのスクリプトでもwhile文はあるけどtime Overありだし
推奨はしてないよ。
ttp://www.uesp.net/morrow/editor/mw_cscommands.shtml


291 :名前は開発中のものです。:04/05/03 03:14 ID:uGveXlu0
あくまで学習しながらゲームを作るのってのが目的みたいだし
多少機能が貧弱でもいいのでは?
単に高機能な物が欲しいのならフリーでオープンソースな
ゲーム開発環境なんていろいろあるわけだしそっちを使ったほうがいい。
中途半端に終了ってのが一番最悪ですから。

292 :名前は開発中のものです。:04/05/03 05:34 ID:F5voLn4B
>>288
それは初めて聞くな。PCゲームなの?
その手のスクリプト言語のパーサとかVMって、ライセンスはどうなってるの?
GPLだったら、ゲーム自体のソースも公開になるの?
それともコピーライト表示だけで構わないライセンス?

293 :新人PG:04/05/03 06:49 ID:XPOMrzWI
みなさん色々意見ありがとうございます m(_ _)m

FOR文が消える理由:
>>290さんの言うように必要性を感じなかったのと、目的コードと合わない感じがしたからです。

計算式が消えそうな理由:
計算をする事が出来るかどうか怪しいため。
あくまでゲーム中イベント処理の記述のみをスクリプトで作る手筈なので。

他の処理系(Lua等)を使わない理由:
作ってみたかったからっス・・・(・ω・;)>>291さん、フォローThanx
あと、親父PGさんの方である程度考えにまとまりがあったので下手に他に手を出すよりは良いかと思ったからです。
まあ最初はXMLでの記述のみを考えていたんですけどね・・・w

294 :名前は開発中のものです。:04/05/03 12:47 ID:nXfpjc4K
>>292
最近だとFarCryがLua使ってる。
ttp://www.4gamer.net/store/review/farcry/farcry.html

ライセンスはLuaだとMITライセンス。
GPLとかだったら市販ソフトにはとてもつかえないよ。

295 :名前は開発中のものです。:04/05/03 14:15 ID:GKQkdavB
luaは組み込み目的で開発されてたヤツだし

中間言語系でGC使ってどうのこうのってやつなんで、それでいいのであれば
javaとか組み込んで使ってるのとあまり変わらんと思われ

俺はそういう方向性でいいと思うんだけどね

でもここでは流れ見るに中間言語系は対象外のようなんで確実にクロック数が
わかるようなスクリプトしか実装しないと思う

それの出来はどうであれ、いわゆる再開発好きが集まってるところだと認識している


296 :親父PG:04/05/03 16:28 ID:+yioKA00
>>新人PGさんへ
色々と議論が進んでいますね。レスが遅れてすみません。

FOR文についてですが、FOR文命令トークンがあればそれに従って、VM側が行います。
ご指摘のとうり問題はその意味なんですよね。orz...

シナリオライターがあったほうがいいと感じるか? ということになります

単純に繰り返したいだけなのか
カウント用の数字を何かにつかうのか
カウントの何番目にかによって条件をいれかえるのか?

いずれにしてもVMは一命令ずつ解釈実行なので、(1命令はある程度豪華ではあるけれど)
命令が矛盾無く組み立てられるのであれば、大丈夫だと思います。
ということで、この命令にはこんなトークンの組み合わせではどうか?
という提起がスクリプト側から提示されると考えています。

その中から実現方法の[取り決め]を造って行きましょう。最初からそこまでこちらで決めると
スクリプト側の設計が窮屈になると思って、いままでその話はおいて置きました。

>>其の他の方
いろいろと貴重な意見ありがとうございます。大変助かっています。これからも暖かいご支援をお願いします。




297 :親父PG:04/05/08 01:09 ID:h8sVtZGZ
>>293
計算式が消えそうな理由:
計算をする事が出来るかどうか怪しいため。
あくまでゲーム中イベント処理の記述のみをスクリプトで作る手筈なので。

ADD SUB というトークンと数字の並び替えの規則さえあれば、こちらでぞれを実装しますよ^^;


今、開発マシンにトラブルが発生orz..
修理に出すので今止まってます すみません 汗

298 :名前は開発中のものです。:04/05/08 19:42 ID:cNPB2s8D
スレ一通り読んでみたんだけど一つ質問
今作ってるのはライブラリですか?

初心者の俺にはそれすらわからないy=ー( ゚д゚)・∵.ターン

299 :名前は開発中のものです。:04/05/08 19:58 ID:dkKvY2dU
>>298
>>1

300 :名前は開発中のものです。:04/05/09 18:20 ID:gB+UjQaV
>修理に出すので今止まってます

このままフェードアウトの悪寒・・・。

301 :名前は開発中のものです。:04/05/11 19:53 ID:yHM5YZkv
親父PG=47氏だったら・・・。

>今、開発マシンにトラブルが発生orz..
>修理に出すので今止まってます すみません 汗

実は押収されたの。



と、妄想してみる。

302 :名前は開発中のものです。:04/05/11 20:30 ID:UgvJm544
親父PGさんタイーホされたのか。


とか言ってみる。

303 :名前は開発中のものです。:04/05/11 23:30 ID:yHM5YZkv
結局、2chで企画立てて実現かつ成功した
例は・・・

304 :名前は開発中のものです。:04/05/12 00:01 ID:F6gUxLXe
ゲーム作るのにだって根気と忍耐は必要なのに1〜2週間くらい待てないのか?
仮に企画倒れだったとしても当人達以外に何か被害被った訳でもなし。
うだうだ言う奴に限って自分では何もでk(ry

もうちょっとマターリ待ってみようや(´_ゝ`)y─┛~~

305 :名前は開発中のものです。:04/05/12 00:37 ID:Sy7h6rok
>>304
別に誰も作業を「直接的に」急かしてる書き込みして無いでしょ?


306 :名前は開発中のものです。:04/05/12 13:40 ID:F6gUxLXe
>>305
???
よくワカランが俺の書き込みちゃんと読んだ?
本人がPC修理って言ってるんだから下手な煽りはイラナイだろって言いたいんだがな
>>300>>303とか。ドッチに転がっても何か損するわけじゃないしね
見ててダメだと思ったならここ見なきゃ良い話しだし

俺は変な煽りに対して言ったんだが、レス番付けなかったからちとわかり難かったか

307 :名前は開発中のものです。:04/05/12 15:02 ID:KHeRBBvL
そうではなく2chなんだから煽りにいちいち反応するな
ってことが言いたいのでは?

このスレの住人も当人達以外はヲチしてるだけでしょ。
既存のゲーム開発ライブラリなんてたくさんあるし
ゲーム製作したことが無い素人が作るライブラリの
完成を待ってる人なんているとは思えん。

308 :名前は開発中のものです。:04/05/12 21:23 ID:B+KWN/WZ
>>307
当人たちのやる気を削ぐような、刺のありすぎる言葉だな。
まあ、言ってる事は同意だが最後の二行は書くべきではなかったと思うぞ。

309 :名前は開発中のものです。:04/05/12 22:58 ID:gxCJLa/h
>>307
漏れニヤニヤしながら待ってるよ
使いたいからじゃなくて、見てみたいから

特に、豪華固定長命令セットの威力に期待


310 :新人PG:04/05/15 16:36 ID:0t0FzjJn
お疲れさんです。ずいぶんさがりましたな。
仕事の引越しの関係でインターネットが新居に繋がってません。今月中に何とかします。

スクリプトは機能を大幅に削って、ある程度完成しました。どうにかゲームの進行ができる程度です。
計算処理は復活させました。限定的な(非汎用的な)命令語が増えています(汗
現在C# + DirectX9にてデバッグ用のインタプリタプログラムを作成中です。
動作するものができたと判断した段階(6月初頭を目途)で一度公開します。
スクリプトレビューはその時に行ってもらいます。
現在作成できるゲームの限界はSFCのドラゴンクエストV+αとしています。
オーソドックスな2DのRPG(俯瞰)としていますがRPGツクールと差別化したいかな〜とも思ってます。

311 :親父PG:04/05/15 23:46 ID:n956sXSw
現在IBMに修理出してます。すんません。orz...

問題は...サルベージが必要かも知れません(涙
でも諦めませんので^^;まだまだ頑張ります。


312 :親父PG:04/05/15 23:48 ID:n956sXSw
>>310
こちらも事実上止まっていますので、ゆっくりかかってください。
サルベージにHDDの基盤交換が必要やも知れないorz...

巻き戻ったソースは残っているのですが....
で逮捕はされていませんよw


313 :名前は開発中のものです。:04/05/16 23:37 ID:XGd16B+k
タイーホされてなかったのか・・・よかったよう。
早く復帰してねー

314 :親父PG:04/05/19 08:49 ID:DXpNx74z
まだ修理から戻ってこないorz...

315 :名前は開発中のものです。:04/05/19 12:12 ID:OYSXu2wF
IBMのノートって壊れやすい?

316 :名前は開発中のものです。:04/05/19 12:43 ID:wKTG0vf1
そりゃもう踏んだだけで壊れます

踏んで壊れなかったのはLet'sだけだった・・・


317 :名前は開発中のものです。:04/05/21 04:10 ID:GxmUKizO
踏みすぎ

318 :名前は開発中のものです。:04/05/24 19:14 ID:8F9Ymse0
保守

319 :親父PG:04/05/24 20:54 ID:o3eQYwoe
ところで HDDなのですが、だんだんおかしくなって
最後にWINDOWSまで起動したあと、認識不能になったので
おそらく基盤故障かモーター故障だと思うのですが、
サルベージでよいとこ知ってる方いませんかね?

これもある意味 ネタにもなるし(苦笑

IBMに当初修理を依頼したところ落下判定されていました(笑
かばんに入れて持ち歩いていたので、チャックの部分とこすれて傷だらけなのがいけなかった...
状況を説明して 落下判定は取り消されました。
やはりちゃんと説明しないといけないんですね。落下だと「保障」が効かなくなります。
当初6万の請求が、修理範囲をHDDに絞ったことで「無料」
また壊れたHDDの引き取り代金だけになりました。
壊れたHDDの引取りにもお金がかかります。まぁこれは仕方の無いことですが^^;

320 :名前は開発中のものです。:04/05/24 21:15 ID:GTVh4I4h
俺なら新しいの買う

321 :名前は開発中のものです。:04/05/24 22:31 ID:npejv8oY
サルベージの話だろ?

ところで
>壊れたHDDの引取りにもお金がかかります。まぁこれは仕方の無いことですが^^;
知らんかった。なぜに?

322 :名前は開発中のものです。:04/05/25 01:31 ID:/brKs1IB
俺の場合、壊れたハードディスクは表面を透明プラスチックとかに変えて
部屋の隅っこに飾ってる。
ちょっとかっこいい。

323 :名前は開発中のものです。:04/05/25 03:37 ID:aIdTCCHF
パソコンリサイクル法とかでいろいろと理由付けて金とるんだなぁ。

漏れもIBMのHDD(ノートじゃないが)使ってたけど2年しないで
起動するたびに遅くなったり、認識しなくなったりしてとうとう逝ってしまった。
まぁ、前兆が2,3日に続けてでてたからあわててバックアップとったが、
親父PG氏はバックアップとってないのん?

開発マシンが逝っちゃうとカナーリショックだと思う。

324 :名前は開発中のものです。:04/05/25 10:17 ID:MYIRdGjF
PCやHDDは消耗品。万が一の時のために
バックアップはまめにとるのは開発者の常識。
個人でも何枚かのDVDRAMやRWに焼くだけでも
安心感が違うから、面倒でも最低2〜3日に1回は
全ソースのバックアップをとったほうがいい。

325 :名前は開発中のものです。:04/05/25 10:41 ID:2BcRF3mj
確かに必死こいて書いたプログラムが2日分
消えたときはしばらく放心状態だった

326 :親父PG:04/05/25 19:41 ID:srpPWafA
壊れたHDDを引き取るのにお金がかかる理由は、交換により新品をHDDを提供。
交換後の壊れたHDDは「IBMの資産」扱いなのだそうです。
なので引取りにはお金がかかるようです。
当初は新品と同じ額かもしれないと言われていましたが、結局は9000円
になりました。

高いなと感じる方もいるかもしれませんが、ノートの発送代金はすべてIBM持ち
(保険付き)サービスであるとかを考えると、それほど高いとは思っていません。
簡単なチューニングもしていただきました(発熱対策)

あまり参考にしたくない事例ではありますが(汗
なにかの参考なれば幸いです^^;


327 :名前は開発中のものです。:04/05/25 20:34 ID:aH+42FE9
家にサーバ一台置いて、CVSなんかでバージョン管理。
これ最高

328 :名前は開発中のものです。:04/05/25 23:08 ID:j22upQOo
サイト用アカウントにpassがけアーカイブをうpしてる。

329 :名前は開発中のものです。:04/05/26 00:47 ID:ALBjE7I0
>325
でもめちゃ苦労して、ある程度できあがってたものは
一度消えても仕事とかで納期が迫っていると、一気にその段階までもっていけるようなw

俺プログラマーじゃないけど、フォトショとかで1日かかりで作ってたようなのを
納品数時間前にアポーン->一気にそこまで作り上げ。みたいのはあるな。

フォトショの画面作りにしても、プログラムにしても、時間かかってるのは
頭つかって試行錯誤してる部分だけだから、一度形にできてると、
そこまで復帰させるのは、どうとでもなるよね。

・・・まああまり参考にしたくない話しですけど。

330 :名前は開発中のものです。:04/05/26 06:51 ID:pH6Xv3G7
>>329
デザインとプログラムは違うよ。
実際に経験してみないとこの違いはわからん。

331 :名前は開発中のものです。:04/05/26 07:21 ID:AGJ88VBR
>時間かかってるのは
>頭つかって試行錯誤してる部分だけだから
ここらへんがど素人なのね

332 :名前は開発中のものです。:04/05/26 10:02 ID:DwvFe2iA
まあ、かなり特殊な処理だったりするとわからんでもないな。
ただ、手馴れてくればそういう「試行錯誤」より
単なる物量が多いだけの場合が殆どであることに気が付く。

333 :名前は開発中のものです。:04/05/26 10:05 ID:iZv6MyYs
ノートのHDDが壊れたときは、とっとと新しいHDDを買ってきて付け替えたけど。
有償なら自分でやった方が、安いし早い。

334 :親父PG:04/05/26 14:01 ID:FihDUxqm
>>333
交換の部分は無償なんですよ^^ 普通は壊れた部品引き取る人いませんからね。
で目の前に壊れたHDDがあります。どうやってサルベージするか思案中です

335 :名前は開発中のものです。:04/05/26 14:59 ID:9IQYkxl7
クラッシュしちゃったり基盤交換が必要など物理的に
壊れてるHDのサルベージは結構な料金とられるので
多少巻き戻ってもバックアップから作業開始しちゃったほうが
いいと思いますよ。
ソースが必ずしも復旧出来るとも限らないし…

336 :名前は開発中のものです。:04/05/26 18:57 ID:JnixpBgL
壊れたってのがどういう壊れ方なのかもわからないなあ。
カラカラ鳴ってアクセスできなくなるタイプ?

337 :名前は開発中のものです。:04/05/26 19:12 ID:mhiAytbl
  ∧ ∧  カタ       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚Д゚),__カタ_ _< このスレは親父PGのHDDをサルベージするスレになりました・・・と。
  ./ つ_|| ̄ ̄ ̄ ̄ ̄| \_____________
 (,  |\||  VAIO   |
     '\,,|==========|

338 :名前は開発中のものです。:04/05/27 06:55 ID:J/CU7f8p
いやはや、これだけ書き込みがあって、まとめサイトも作ってないし・・
できたツールを片っ端から上げってったほうが良いんじゃないの?
(と言ってみるテスト)

やっぱしデータ構造は問題になるとは思ってたけど・・
オヤジ?さんが考えてる流れは例えば
ある地形上を歩く→どこかに着くと何番のフラグを立てる→
他のフラグもあわせて条件判断→フラグデータにあったイベントの発生
みたいな流れを考えてると思われる。(いかにも初代から3までのドラクエみたいだけど)

最近のゲームを見るに分業が進んで、たぶん上記の方法はあんまり使われてないかも?
だからシナリオが一本道になってるともみえる。でも、開発はこっちの方が容易。
シーン1(シーン1内での簡単なフラグ)→シーン2(シーン2内での簡単なフラグ)
 →シーン3(シーン3内での簡単なフラグ)→・・・
全シーン共通のフラグがこの他にあって、
またキャラクター(登場人物)データや持ち物データは別にある。

最初の方法だとフラグを管理するツールは必須だね。
何個かの条件を関連づけて表示したり、どのフラグがどのデータに関連してるかというのが
明示されて無いと、あとあとわけわかんなくなるし。
2番目の方法なら、フラグについてはほとんど問題無い。(だから最近のゲームはつまらん)

339 :名前は開発中のものです。:04/05/27 13:56 ID:T7P3bbBG
確認してみたがまとめぺーじきえてないぞ?

340 :名前は開発中のものです。:04/05/27 16:56 ID:5pnCAZfx
このスレにまとめのトップページURL二回しか出てきてないよ。
そりゃ気付かなくてもしょうがないんじゃないかな。

http://www.geocities.jp/oyajipg/
まとめページ

341 :親父PG:04/05/28 11:58 ID:tJb+of+g
やっぱしデータ構造は問題になるとは思ってたけど・・
>オヤジ?さんが考えてる流れは例えば
>ある地形上を歩く→どこかに着くと何番のフラグを立てる→
>他のフラグもあわせて条件判断→フラグデータにあったイベントの発生
>みたいな流れを考えてると思われる。(いかにも初代から3までのドラクエみたいだけど)

少し違います。地形データーにはトリガーがあるという1ビットですむデーターしか置きません。
何が起こるかはトリガーテーブルから検索します。
イニシャライズ時に トリガーテーブルを見て地形作業領域にばら撒きます。

構造体配列に値を入れます。1ビットですみますが領域はバイトで、0−255の値をどう使おうかな?
0はなし1はトリガー検査 さて余りましたね^^ 有効な使い方あるでしょうねぼちぼち考えます。



342 :名前は開発中のものです。:04/05/29 08:01 ID:xDPKL8Xl
>>341
なるほど、いいですね。
(もし、トリガーテーブルから検索する時、
位置情報を見ているなら、動く地形等のときやや混乱する気もするけど)

バイトの余った領域(6ビット分)が気になるなんて・・マイコン世代ですね。

343 :新人PG:04/05/29 13:23 ID:XFao9pZD
お疲れ様です。
現在完成しているスクリプトインタプリタ実装部分です。
・点・線・ポリゴン・スプライト・テキストの表示。
・変数として整数・浮動点小数・文字列の定義。
・整数、浮動点小数の計算、文字列の連結といった演算処理。

これがコア部品として、ここからシナリオライタや企画屋さんが使いやすいAPI群を作っていける
段階にはありますが、これからの方針としてどうでしょうか?
正直ゲーム企画屋がプログラミングする羽目になるのは避けたいため限定的な記述のみを採用したいのですけど。
とするとトリガーとの密な連携が必要ですね。難しいです・・・。

現在確実に必要と思う物を挙げます。
・キャラクター定義フォーマット(スクリプトで管理するのは困難なため)
・戦闘定義フォーマット(プログラムに埋め込むのなら要らないけど)
懸案はキャラクターをゲーム中で動的に生成したい場合はどうするかですけど。
また提案します。

#漫喫より書き込んでます。
#ADSL契約用紙送ってから2週間近く経つけど連絡なし・・・。

344 :新人PG:04/05/29 13:25 ID:XFao9pZD
追記:
まとめページ更新していなくてごめんチョ。
そのうちファイルをうpできるようにします。

345 :親父PG:04/05/29 18:29 ID:UBtKpkqa
>>344 おつかれさまです
いよいよキャラデータの話がでできましたね。
現段階できっちり決めるよりは、こういうものが欲しい、こんなもものがあると便利。
などをスケッチするのがいいでしょう。どうせ決まりきったものはあるわけで...

だいぶ前にゲームの概要的な話をネタとして振ったんだけど、誰も相手にしてくれなかったorz...



346 :名前は開発中のものです。 :04/05/30 03:11 ID:DF02WfmI
ライブラリ作るのはあくまで過程で最終的にはゲーム作るんでしょ?
3Dにしようよ、3Dに。
なんか古くて暗いからとっつきにくいよ。見た目とか。

347 :名前は開発中のものです。:04/05/30 03:16 ID:/nGX9ZsE
3Dがいいなら自分で作ればいいじゃん。
3Dのライブラリなんていくらでもあるよ。

348 :名前は開発中のものです。:04/05/30 03:38 ID:+/1k6zgz
2Dのツールこそたくさんある気がする・・・。

349 :親父PG:04/05/30 21:52 ID:whdcT15r
>>346 347
2Dか3Dかはそれほどこだわっていません。
もうすこし内容を詰めた時に選択します。
ちなみに見た目は平面ですが、3Dポリゴン上で展開しているので
3Dのライブラリ?です。

混在するかと思います。2Dと3D 


350 :名前は開発中のものです。:04/05/31 20:07 ID:jkV+M/fp
全てが「じゃあ自分で作ればいいじゃん」で済まされるスレになりました。

351 :親父PG:04/06/02 14:16 ID:WRPhaE/T
サルベージ会社に頼みました。
まずは初期診断、どのような結果が戻ってくるでしょうか...


352 :名前は開発中のものです。:04/06/02 22:44 ID:0e2wqY1U
今日このスレ見つけて一気に読んでしまいました。
タノシカター(*・∀・)=3

当方、完全に素人なのですが、
ゲームとはこのように出来ていくものなんですね。感心しました。
コソーリ今後も応援していきます。
HDD完全復帰するといいですね

353 :親父PG:04/06/03 00:36 ID:4eJyfpo5
>>352
ご拝聴ありがとうございます。
こういうもんなんですかね^^;
楽しんでいただけたならよかったです。
HDDの結果は....まだ届いてないですね。orz....

354 :親父PG:04/06/03 23:52 ID:4eJyfpo5
HDDサルベージ中間報告

業者からのメールでのお話でどうやらPGソース部分の救出可能と判断されました。
原因はヘッドが食い込んでいたそうです。

サルベージ代金は4万円
助かりましたorz... ありがとう神様 そして良心的業者さん

壊れたHDDはふ◎通製でしたが交換後 日立製に変わっていました^^;

355 :新人PG:04/06/05 19:36 ID:wWL88U7t
お疲れ&お久しぶりです。
キャラデータなんですけど、別定義にしておいてスクリプトで読み込める様にするのがいいんですかね?
旧RPGツクールではキャラクタ名称とかは「こんにちは、$1さん。」とかで表していましたね。
これを
import chara "test.chara"
triger main()
{
  chara test;
  text.out("こんにちは、" + test.name + "さん。");
}
とかで出力出来る様にすると便利ですかね。

戦闘定義は、いろいろ考えるとやはり外部に出した方が良いような気がします。
ちょっと想像つきにくいんですけど、意見あればお願いします。

356 :新人PG:04/06/05 19:45 ID:wWL88U7t
キャラクタデータで想像つくものを挙げていきます。
・名称   ・生命値(HPとか)
・特殊能力値(MPとか)  ・レベル ・体力
・賢さ  ・すばやさ  ・運のよさ  ・魅力(?)
・各パラメータの上昇率(パーセンテージでも数式でもOKかと)
・職業とか  ・属性(炎とか水とか?)
・共通台詞の語尾?("だぜ"とか"ですわ"とか?)
・アイテムの所持量

なんでも考えられますね・・・。

357 :名前は開発中のものです。:04/06/06 02:58 ID:EmiSNu9x
ほしゅうう

358 :親父PG:04/06/06 21:43 ID:TFl9YsaT
お疲れさま
キャラデータはなんでも出てきますね。いやほんとに
今回、私が計画しているゲームではアイテムには持続時間(無限大もある)
を持たせておいて、場にセットする。場にセットされたアイテムの種類によって
「コマンド」が使えるようになる。

ターン使用時において コマンドを実行するか、場にアイテムを置くか?
悩むところではあるでしょう。また相手のアイテム持続時間を減らす攻撃など
いろいろと戦術が考えられます。カードゲームみたいですねw

359 :名前は開発中のものです。:04/06/10 18:42 ID:ZmE5oMyN
ほしゅ

360 :親父PG:04/06/11 20:24 ID:yIL1qXgr
HDDのデータサルベージに成功しました
先ほどリビルドと実行を行ないましたが正常に動作いたしました。ちょっと感動

HDDの物理障害でしたが4万円で復旧できました。
それでは製作を再開いたします

361 :名前は開発中のものです。:04/06/11 20:32 ID:FbUf2QVY
おー、実は話半分に聞いてたんだけど、サルベージって本当に成功するんだね。

362 :名前は開発中のものです。:04/06/12 05:56 ID:kitVjPtB
祝☆親父PGタソHDDサルベージュ成功!

        おにぎりワッショイ!!
     \\  おにぎりワッショイ!! //
 +   + \\ おにぎりワッショイ!!/+
                            +
.   +   /■\  /■\  /■\  +
      ( ´∀`∩(´∀`∩)( ´ー`)
 +  (( (つ   ノ(つ  丿(つ  つ ))  +
       ヽ  ( ノ ( ヽノ  ) ) )
       (_)し' し(_) (_)_)

バンガレー

363 :親父PG:04/06/16 17:29 ID:UJduKH1D
さてぼちぼちどっかに上げたいですなぁ。
ってまだまとまってないけどorz...

364 :名前は開発中のものです。:04/06/18 02:32 ID:XddDHYg8
おおう、もう形になってるんですか。
実を言うといまいち概要を掴みかねてるから、実際に動くものを見てみたいなあ。

365 :親父PG:04/06/22 20:59 ID:CADman1B
うん^^ といっても今は リソースツール> 環境+ウィンド 
という程度ですけどね。


366 :名前は開発中のものです。:04/06/30 18:49 ID:SwcLf7ai
おおぅい 何か進展はないのかぁい?
期待age!

367 :名前は開発中のものです。:04/07/01 00:18 ID:X3i18rrm
■関連スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1082083548/

368 :名前は開発中のものです。:04/07/01 00:24 ID:7ydqqCh2
目標の半年までの半分が経過したということで
とりあえず現在の物をアップしてみては?

369 :親父PG:04/07/02 11:22 ID:pX1kWnhH
そうですね^^ 今、サルベージ後復活したソースでビルドしたのですが、
開発環境 9.0Bに入れ替えると何故か「対象のサーーフェースの範囲を越えています」
というエラー(英語)がでて一部機能がおかしくなってしまったので、原因追跡中です。

エラーを出している関数はわかっているのですが、以前と(データー等)を変えていないのに圧制しています。
サルベーシしたHDDの中にアーカイブされたソースもあったので、
解凍して動かしても現象が同じなので開発環境が変わったのが原因かorz...

ちょっと根が深いエラーで今、いろいろ調べています(涙

370 :名前は開発中のものです。:04/07/03 03:52 ID:NtmdvZio
>>369
ビューポートのエラーですか?オレは昨日遭遇しました。
CreateDeviceのパラメータであるD3DPRESENT_PARAMETERS構造体のBackBufferWidth,Heightを設定したら直りました。MSのなんかのサンプルだと省略されていたんですけどね・・・。

D3DPRESENT_PARAMETERSD3DPresentParameters;
ZeroMemory( &D3DPresentParameters, sizeof(D3DPresentParameters) );
D3DPresentParameters.BackBufferWidth = GetScreenWidth();
D3DPresentParameters.BackBufferHeight = GetScreenHeight();
...
hResult = pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &D3DPresentParameters, &pD3DDevice );


371 :親父PG:04/07/05 21:24 ID:dEjBB1tn
うを! 情報有難う
ちょっと調べてみます

372 :名前は開発中のものです。:04/07/11 01:23 ID:sEDaSior
せめて開発中のスクリーンショットだけでも見たい。

373 :名無しさん@そうだ選挙に行こう:04/07/11 11:22 ID:IcCsmxs7
頑張れおじん。

374 :親父PG:04/07/15 20:49 ID:RCSAJz51
最近激忙しくて放置っぽくてすみません
>>370さん
の情報をもとに関係する場所を調べたところ、サイズは指定してあったのですが、
「ビューポートを任意のサイズに分割する為の」データより大きくなっていた為
激重になっている事が判明しました。
*この部分はMSのサンプルのままなのですが(苦笑
m_d3dpp.BackBufferWidth = m_rcWindowClient.right - m_rcWindowClient.left;
m_d3dpp.BackBufferHeight = m_rcWindowClient.bottom - m_rcWindowClient.top;

ここのBackBufferHeightのサイズが756なのに
ビューポートは縦800を前提に分割しようとして、エラーがでていました。
以前は重くなる事はなかったのに...orz...

解決できました。有難う。

HDDが飛んだ時に激しく落ち込んで、
現実逃避の為に三国志ネット系のゲームで君主やったりしてました。
昨日、滅びましたので現実の世界に戻ってこれそうです。
(もちろん忙しかったのはこれが原因ではないのですが)^^;


375 :名前は開発中のものです。:04/07/27 08:14 ID:jrBmHKfT
スレ違い申し訳ないんだけど、
親父PGさんはVisual C++ .NET Standard 2003で開発してるの?

376 :駄目PG:04/08/07 21:56 ID:rKnHjytK
2001です^^13000円ぐらいで買ったものです。


377 :名前は開発中のものです。:04/08/12 18:55 ID:CwNTMR01
親父逃亡

378 :名前は開発中のものです。:04/08/12 23:26 ID:qp2QHNJh
もう許してやれや。

379 :名前は開発中のものです。:04/08/13 01:19 ID:70XDoCYw
これだけ実力のある人でも、構想が大きすぎると完成しないもんなんだなぁ。
いわんや自分ごときでは。戒めねば…。

380 :名前は開発中のものです。:04/08/13 03:32 ID:EI4JTtEl
実力あったらこんな中途半端にはならんだろ…
構想も最近よく見かけるMMO厨にくらべたら
十分完成できる内容だと思うけど。

381 :名前は開発中のものです。:04/08/14 00:14 ID:QE6GprSu
結局ダメだったのか…

382 :名前は開発中のものです。:04/08/17 20:24 ID:4zoJaIbh
まあ、よくあることで、とやかく言うことでもない。

月単位や年単位でモチベーションが持続する人のほうが少数派なんだよ。
絵1枚とか音楽1曲とかなら、ゴールまでノンストップで駆け抜けることもできるけどな。
ゲームや長編小説だと、制作中に必ずスランプ期が来る。それも1度や2度でなく。

常人が中規模以上のゲームを完成させたきゃ仕事としてやれってこった。
気が乗らないときでも強制的にケツ叩かれて作業を進めさせられるからな。
給料も出るし。(たぶん)

383 :名前は開発中のものです。:04/08/17 23:32 ID:swKTwwBB
このスレの場合、最初にこのすすめかただと
モチベーション維持できない、時間がかかりすぎて結果が出ないと
みんなに指摘されていたのに大丈夫、大丈夫といいつつすすめてきたというところが
つっこみどころ満載で面白いところだ

384 :名前は開発中のものです。:04/08/17 23:40 ID:Ey/3rwny
と、外野の企画厨が申しております。

385 :名前は開発中のものです。:04/08/18 04:06 ID:xaW55mes
わざわざサルベージまでしてその後何もせずに終了ですか…
あそこが良いやめ時だったと思うけど。

386 :名前は開発中のものです。:04/08/18 04:40 ID:QOsGAV3O
と、外野のシナリオ厨が申しております。

387 :名前は開発中のものです。:04/08/18 13:53 ID:iefLqNu5
こいつレス早いな。

388 :名前は開発中のものです。:04/08/18 16:44 ID:QOsGAV3O

 だって引きこもりだもの

             ミツヲ

389 :名前は開発中のものです。:04/08/19 06:10 ID:p3JaqRwv
新人PGももう見てないのか?
お別れの挨拶くらいしてもいいよ
社会人なんだから

390 :名前は開発中のものです。:04/08/19 06:40 ID:0awC84Sm

  逃がしてやろうよ。ね。
       
             ミツヲ

391 :親父PG:04/08/25 15:19 ID:fmTb/M4o
すまん^^
ちょっとリアルが忙しくて
もう少しで再開しますorz..

392 :名前は開発中のものです。:04/08/26 00:55 ID:cjxLj/oA
それを1ヶ月前に書き込んでもバチは当たらなかったと思うが

393 :名前は開発中のものです。:04/08/26 03:37 ID:GWEpquVX
チミらにいちいち報告しなきゃならない義理が発生するような
借りは何もなかったと思うのであります。

394 :名前は開発中のものです。:04/08/26 05:10 ID:2v90/hnV
スレ立てたからにはあるだろ…

395 :名前は開発中のものです。:04/08/26 10:36 ID:a0UqgPyA
新人PGと協力していたから報告は上げる必要がある気はするが、
逃げたからどうでもよくなったな

396 :名前は開発中のものです。:04/08/26 15:52 ID:03VygtWN
逃げたというかあまりのダメさにあきれたのでは?
この調子じゃライブラリだけでも完成するまでに数年かかりそう。

397 :新人PG:04/08/28 15:49 ID:3/V/WtDW
(゚Д゚)ニゲテネーヨ
話題がサルベージになっていたのでしばらく放置でした。

とりあえず、今のシステム面の欠点を指摘。
スクリプト言語をコンパイル⇒生成物をExcelで編集⇒ゲーム内で固定長バイト変換という方式は、かなり無駄がある。
固定長バイトに拘らなければ、メタ言語(XML)= ゲーム記述になるでしょうが。

あと、どのような画面・機能が必要か全然わからない。
そういうのは、外部データ構造に影響するので、外部データ構造からアプローチするのは難しい。
シーンの列挙をして欲しい。
ライブラリ作るにしても、方向性がないとつくれないじょ?

どういうシステムにするか決まってないのに、プログラム始めるスタンスに萎え(´Д`;

398 :新人PG:04/08/28 16:09 ID:3/V/WtDW
今回のライブラリの生成物はソースにしましょ〜?
他システム(yaneScriptとか豆乳とか吉里吉里)は基本となる実行ファイルが、外部データを読み取って動作しますが
そんな汎用性のあるのはむりぽ。
やるんだったら、Pythonとかluaとかで楽したいです。
僕は「基本的なシーンの枠は決めておいて、その中の限定的な記述ができる」ぐらいの汎用度で良いと思いますけど。
要は、シーンの遷移処理まで外部に出す必要あるかな?、てところです。(もちろんトリガーとなるデータは必要ですけど)

つか、シーンの数なんてたかが知れているような。
(1)タイトル (2)フィールド (3)戦闘
後、なんかあるんでしたっけ?

399 :名前は開発中のものです。:04/08/28 16:30 ID:jI7Dh6fq
本人?

>萎え(´Д`;

それを承知ではじめたのに、いまさらその発言は無いだろ。

400 :名前は開発中のものです。:04/08/28 16:39 ID:YTH8UYqt
>>398
エンディング、オープニング、スタッフロールw

401 :名前は開発中のものです。:04/08/28 17:03 ID:syHQKUN7
なんだなんだ、内部確執によるプロジェクト崩壊現場はここでつか?

402 :名前は開発中のものです。:04/08/28 18:04 ID:51GnK4hL
つーか、webサイト立ち上げていたり具体的に動いているところは
新人PGのほうばかりだな

まぁ、同情はする

403 :名前は開発中のものです。:04/08/29 11:40 ID:VmVZYpoo
この際独立しちゃえば?

404 :名前は開発中のものです。:04/08/29 12:54 ID:VmVZYpoo
と言ってて思ったんだが、親父PGさんは一体どんなゲームを目指してたんだ?
以前、Windowsみたいなフレームワーク?の画像は公開されてたけど。

405 :名前は開発中のものです。:04/08/29 18:11 ID:msTaT4Bl
>>404
RPGツクールじゃねぇの

406 :名前は開発中のものです。:04/08/29 22:01 ID:XNIpS8PD
>>397
おまえ偽モンじゃねーの? トリップでも付ければ?

なんで突然こんなにレベルアップしてるんだよ。
本物の新人PGはこんなまともなこと言わなかったぞ。
まるでゲームを1本作ったことがあるかのような発言じゃないか。

つか、本人なら独立した方が良いと思われ。
このレベルの人間がコード書くなら手伝ってもいいかもと思われなくもない。

407 :新人PG ◆EJ0MB3jlw2 :04/08/29 23:07 ID:64zrapQK
本物ですので、一応。

>>399 まあね
>>400 リストアップしておきます
>>401 親父さんには復活して欲しいんですけどね(本心)
>>402 ども
>>403 その気は無きにしも非ずだが、続けれるかどうかで迷っている。
>>406
親父さん主体で進めているので、極力邪魔はしないようにしています。
自分はマネージャータイプじゃないんで、誰か牽引してくれる人が欲しいんだけど。

ちなみにゲームは作った事ありませんので、悪しからず。

408 :新人PG ◆EJ0MB3jlw2 :04/08/29 23:35 ID:64zrapQK
んで、提案の続き。

●ゲームの全般的な構想
フィールド+戦闘のみ存在する、単純な2D俯瞰タイプのRPG。
フィールドのイベント、戦闘のイベントをテキストで書く事で動作する。
アートワークは現段階で一切考えない。音楽も然り。

とりあえず、この構想を実現できるバージョンを0.1とする。
レビジョンは完成品ができるまでに、提案としてまとめて、0.1完成後に実装に移る。

上記でどうよ?

409 :新人PG ◆EJ0MB3jlw2 :04/08/30 00:02 ID:0D+4Eo2G
フィールドのイベント、戦闘のイベントについての詳細が無かったので追記。

●フィールドのイベント
・テキスト出力(こいつは議論する必要があるな)
・PC、NPCの制御:移動させる、向きを変える(3D化したい場合に影響あるかな?)
・戦闘イベントへの遷移(当然全滅したかどうかの判定システムが必要だな・・・)
・画像の出力:Ver0.1の段階ではアニメーションは実装しない

●戦闘システム
・ゲームの核の問題でもあるし、キャラクターデータの検討が先なのでとりあえずはダミーを用意。
・ダミーはDQ方式で実装するか・・・?

よって、現段階で必要な仕様は
・フィールドのマップ(オーソドックスなマップチップで良いよね?)
・PC,NPC,etcのスプライト仕様
・コマンドやテキスト出力の為の、ウィンドウシステム(これは柔軟にしたい)
・トリガー条件:会話、接触、etc
・キャラクターデータ仕様(仮段階で良いと思う。とりあえずどのスプライトを表示させるかぐらいは必要か)
・ガイドライン(ロードマップ)作成:このまま親父の作りたかった物へシフトする様に。

広報するのでage

410 :名前は開発中のものです。:04/08/30 00:38 ID:yIQQlF9+
やっぱり新人PGをベースの方がいいんじゃねーの?w


411 :名前は開発中のものです。:04/08/30 00:53 ID:+QhP1Bil
これならDirectXはいらないのでは? それだけでだいぶ楽になると思う。
自作ライブラリもこの段階では不要。
ゲームが完成してからライブラリとしてまとめれば良い。


412 :名前は開発中のものです。:04/08/30 01:35 ID:yIQQlF9+
DirectXとかは最終的な表現手段にすぎないのだから
ここを自由に差し替えられるインターフェース用意するとか
それくらいの自由度がないともはやうまみはないとおもわれ

具体的にはたとえばJavaや.NETのようなレベルの高級言語前提なら
インターフェースベースのプラグイン開発できる感じ

RPGとしての機能と実装を切り離すのだ



413 :新人PG ◆EJ0MB3jlw2 :04/08/30 02:19 ID:0D+4Eo2G
>>410 いや、責任取れないから
>>411
個人的にはOpenGLがいいんだけど。
つかDXはインターフェイス仕様変わり過ぎだから。
もちろんライブラリなんて、現段階毛の先ほども考えておりません。

>>412
統合開発環境作るわけじゃないんで、差し替えは不要かと。
プラグインで組み込めるかどうかは今のところは不定。ある意味、スクリプトそのものか。

ちなみに、対象OSはWindows98SE以降 開発OSはWindows2000です。
クロスプラットフォームとか全然考えていないのでよろしく。

414 :名前は開発中のものです。:04/08/30 12:20 ID:yIQQlF9+
OpenGLが好きならなおさらDirectXべったりやめた方がいい希ガス


415 :名前は開発中のものです。:04/08/30 13:01 ID:mguL3Q17
オヤヂィ〜〜〜〜〜〜〜〜〜〜〜イ!!!!!

416 :名前は開発中のものです。:04/08/30 13:46 ID:en0ftcc8
まだ何もできてないのかよ

417 :名前は開発中のものです。:04/08/30 14:24 ID:a36Q37vH
>新人
まとめページの方はまだあのまま保全?
久しぶりに見たけど、
> 10:参加したいのであれば年齢は問いませんが、姿勢は問いますよ。
ワロタ

>408-409
本職からの助言として、まず、ver 0.1 の外部仕様として以下を定めることを薦める。
・フィールドマップの数(外・城・町・ダンジョンくらい?)
・各フィールドにいるNPCの数と種類
・敵の種類(外・ダンジョンで書く種類と、ボスくらい?)
・フィールド上のエンカウントマップ(種類と数だけでも良いか。森・山・平地・ダンジョン近辺・町近辺くらい?)
・スクリプト一覧(NPC全員分と、ボス、マップ間の移動くらい?)

で、疑似スクリプトを先に書けば、とりあえず先が見えるようになるのでは?

戦闘は、ターン制で最低限のものでいいと思うよ。
「戦う」コマンドだけでいいと思う。フルオートでも、一発解決でもいいくらいだが、戦闘中イベントを入れたいみたいだから、ターン制は維持かな。

あと、パーティーは後回しでいいと思う。

この辺を決めて、そこから ver 0.1 に反映する内部仕様を導くのが妥当だろう。
YAGNI

418 :名前は開発中のものです。:04/08/30 15:01 ID:XVFqp4fH
↑ワロタ

419 :名前は開発中のものです。:04/08/30 15:05 ID:8ohy38YP
なんだこのスレ

420 :新人PG ◆EJ0MB3jlw2 :04/08/30 18:26 ID:txFEAH/U
>>414 そこは後ほど考えます。
>>417
>まとめページの方はまだあのまま保全?
そのまま保全。このまま親父さんが戻らなかったら書き換えますけど。

>本職からの助言として、まず、ver 0.1 の外部仕様として以下を定めることを薦める。
>・フィールドマップの数(外・城・町・ダンジョンくらい?)
>・各フィールドにいるNPCの数と種類
>・敵の種類(外・ダンジョンで書く種類と、ボスくらい?)
>・フィールド上のエンカウントマップ(種類と数だけでも良いか。森・山・平地・ダンジョン近辺・町近辺くらい?)
>・スクリプト一覧(NPC全員分と、ボス、マップ間の移動くらい?)
どんなゲーム作るか分ってないから敵の種類とかは決定できないんすわ。
数や種類に制限は付けない方向で行こうと思ってるんですけど。(ダメ?)

>で、疑似スクリプトを先に書けば、とりあえず先が見えるようになるのでは?
擬似スクリプトはXMLでそのまま記述できるようにする構想です。

>あと、パーティーは後回しでいいと思う。
そうかも

421 :新人PG ◆EJ0MB3jlw2 :04/08/31 21:28 ID:Zv1g6YxS
データ構造(案)をアップ
ttp://www.geocities.jp/oyajipg/topic007.html

試しにMSXML4.0を弄っている時に、ふと気が付いた。MSXML4.0のインストールを
ゲームのインストール条件には出来ないなぁ。XMLSchemaの検証が使えないジャン。(ダメダメ)
アプリケーション側で、チェックロジック組むか・・・。

今回のStage要素の構想が済めば、トリガー仕様はひとまず完成かな?
一番の山場はEvent要素の設計だと思うが。

422 :新人PG ◆EJ0MB3jlw2 :04/08/31 21:49 ID:Zv1g6YxS
フラグ管理構想を思案中。
キャラクターやら、そういうオブジェクトが状態コードとしてフラグを管理できないかな?
セーブ時も、オブジェクトそのものをシリアライズして、ロード時復活(゚Д゚)ウマー
それとも、フラグはどっかに一元管理するもんなのかな?
一元管理するとデータ構造迷うし、オブジェクトごとに持たせるとスパゲティになる希ガス。
ここなへん定石ってないのかね?

423 :名前は開発中のものです。:04/08/31 21:55 ID:ViRwUBWM
xmlって最近いろんなところで見る。。。
勉強しなきゃならないのか。
ところでアドレスが/oyajipg/になってるyo。
一人二役するなら気をつけないと。。。まだ
疑惑の段階だから破綻はしてないけど、怪しいな。


424 :新人PG ◆EJ0MB3jlw2 :04/08/31 22:02 ID:Zv1g6YxS
>>423
アドレスは敢えてoyajipgにしているんだけどなー。
当然 新人PG≠親父さん なので。

425 :名前は開発中のものです。:04/08/31 23:29 ID:eG4/8KZG
XMLスキーマはまぁなくてもいいだろ
ツールのほうでいろいろと整合性をとる・・・って感じじゃなかったっけ?
なんとでもなるさ


426 :名前は開発中のものです。:04/08/31 23:37 ID:Q8+xpMsy
スクリプト>XML
データ>独自形式

ってどうよ

427 :名前は開発中のものです。:04/09/01 00:52 ID:igqIIkqJ
初代ドラクエのような物を作ってるの?
いまいち見えてこないよ!


428 :名前は開発中のものです。:04/09/01 01:30 ID:JSL7Dn8l
そして初代ドラクエすらできあがってない


429 :新人PG ◆EJ0MB3jlw2 :04/09/01 01:46 ID:ZiXTJC9p
>>425 定義する意味で必要。ツールとか作るときに汎用性欲しいじゃんw
>>426 独自形式はかえってめんどくさい・・・。
>>427 僕も見えてこない。

今のイメージなんですけど、これ(かなり落書き)
ttp://www.geocities.jp/oyajipg/up/memo01.jpg

ひとつのゲームを1つの舞台に置き換えて、データ設計を練っています。
ひとつのステージには色々な配役(背景や音楽も含めて)がいて、その配役が舞台で色々振舞います。
脚本はどこに記述してあるかと言うと、全てEventとして記述されています。

今の目的はソーサリアンタイプのゲームを作る事です。
しかし、最終的にそれ以上のものを作る為に、汎用性、冗長性を持たせて作っていますので分りにくいかもしれません。

430 :新人PG ◆EJ0MB3jlw2 :04/09/02 23:17 ID:bSRAKxF0
なんか、動くもの作らないと信用されないっぽいので、適当に雛形まで作ってみんとす。

今まで貯めていたGlutのコードをMFCに移植、テクスチャが貼られない・・・。
なんか作法があるみたいだな。ちょっと鬱。

431 :名前は開発中のものです。:04/09/03 00:36 ID:1gtMdeX1
というか、いまさらMFCってのはやめた方がいい気がするけどどうだろう。
絶対に(いろんな意味で使いづらくて)躓く。

432 :名前は開発中のものです。:04/09/03 14:16 ID:slI9+kNi
というかゲームにMFCは、テストコードにすら後々不便なような

433 :名前は開発中のものです。:04/09/03 23:51 ID:e6QRPo5l
市販されているゲームは殆どMFCでは?


434 :名前は開発中のものです。:04/09/03 23:57 ID:6BnkbEbT
API直書きじゃないの?

435 :名前は開発中のものです。:04/09/04 00:54 ID:/1JuLZWl
市販のゲームはほとんどMFC使ってないだろ。
逆に使ってるのあったら教えて欲しい。

436 :名前は開発中のものです。:04/09/04 01:45 ID:KhwIOOzK
ええっ! じゃMFCを使う理由なんて無いじゃん!
Delphiなら手伝えるけどなぁ…

http://www.kogado.com/html/kogado/kyujin.htm
>プログラマ(使用言語はCまたはC++で、Win32SDKまたはMFCを使用)

437 :名前は開発中のものです。:04/09/04 04:15 ID:/1JuLZWl
http://www.kogado.com/html/kuma/mars3/const.htm
たしかにこういうゲームならMFC使ってるかも。

438 :名前は開発中のものです。:04/09/04 10:29 ID:VYIP8ddf
コモンコントロール使用か…市販品でそれは萎えるな

シミュレーションならありなのかね
はて、初代シムシティですらどうだったかな

439 :名前は開発中のものです。:04/09/04 11:34 ID:Pf2Z+TKE
初代はさすがにすべて自前描画かと


440 :名前は開発中のものです。:04/09/04 17:33 ID:cfFDLJN6
つーか初代シムシティって何版よ

441 :名前は開発中のものです。:04/09/04 23:44 ID:KRp2PvVG
音関連でDirectXが必要になるのかな。
DirectSoundでWAVを重ねたり出来るんだよね。


442 :名前は開発中のものです。:04/09/04 23:53 ID:Pf2Z+TKE
なにを当たり前のことを
DirectX使わなくてもできないことはないが

443 :名前は開発中のものです。:04/09/07 01:37 ID:teKT740i
初代ドラクエならサクッと作れるのでは?

444 :名前は開発中のものです。:04/09/07 12:35 ID:D4BjwQvS
そのさくっと作れるものすらできてない>ここ
まぁ、新人PGは何とかがんばろうとしているのが分かるが、
時間取れていたときから親父PGの方向性はまったくわからん

445 :名前は開発中のものです。:04/09/08 00:04 ID:bAlt1rnK
まとめると、
1)ソーサリアンタイプのアクションゲーム
2)3Dを何かに使う。
3)スクリプトは中間言語に落とす


アクションゲームを作った事のない私なら、この順番でやるかな。

プレイヤーキャラクタの移動

マップ描画

マップ内をプレイヤーのキャラクタが自由に動けまわるようにする

敵キャラクタをマップ内で移動させる

戦闘関連

スクリプトで拡張できるようにする

446 :名前は開発中のものです。:04/10/17 10:25:34 ID:yYhKMqEo
定期挙げ

447 :名前は開発中のものです。:04/10/17 10:33:03 ID:Qo0J6b1x
親父、妻子を残して蒸発。
予想通りの結末。

448 :名前は開発中のものです。:04/10/17 18:41:25 ID:tKRlfG6F
>>447
よくわかんないけど、なんかワラタ

449 :名前は開発中のものです。:04/10/18 00:05:20 ID:sIeHxSBC
>>445
なんだその大雑把な計画はw
お前、ゲームの作り方全然わかってないだろw

450 :名前は開発中のものです。:04/10/26 04:11:03 ID:6T+OiAcq
>391 >もう少しで再開しますorz..
=>2ヶ月経過....

今年中に再開(再会?)できる?

>363 >さてぼちぼちどっかに上げたいですなぁ

フレーム以外に何か表示できるの?


451 :名前は開発中のものです。:04/10/26 04:21:58 ID:6T+OiAcq
今からでも遅くないから、

簡単な表示.....

例えば、DIBでのスクロール表示などをつくってから

DirectXへ直せばいいと思う。

それとも、プログラム作成依頼スレに依頼する?


452 :名前は開発中のものです。:04/10/29 00:15:02 ID:AnZYweju
さっさと作ればいいのに。
ほれ、俺はここまで作ったぞ。
http://gamdev.org/up/img/1706.jpg



453 :名前は開発中のものです。:04/10/29 01:01:46 ID:GaWFlfVe
それマップチップだけじゃないか
親父がやろうとしていたのはどうもWindowシステムとかそっち方面らしい

でもゲームとしてそのシステムが必要かといわれると弱いから
マップチップだけでも動いてる>>452のほうが上

どちらにしろ動いてる画面を定期的にあげれなかったのがだめすぎ

独自Windowシステム作るにしてもさっさとSwingとか身近なもので
参考にして実装していけばよかったものを


454 :名前は開発中のものです。:04/10/29 01:50:54 ID:UU8ZUtmv
あー、じゃゲームそのものを作るわけじゃないんだ。
そういうのは似たようなゲームを何個も作ってから考えるんじゃないの?

455 :名前は開発中のものです。:04/10/29 06:17:48 ID:BgZ8oHeN
スライムだってアニメーションしながら動きますよ。
http://gamdev.org/up/img/1709.jpg


456 :名前は開発中のものです。:04/10/29 06:24:27 ID:qQ8ZbLd9
>>454
それが、プログラミングスキルはあるが
ゲームを作ったことが無い人が陥る罠だ

457 :名前は開発中のものです。:04/10/29 23:17:08 ID:Zus9+Ne0
>452,455
 なんとかツクールっぽいのはしかたがないけど
 作成した言語は何かな?

 JavaやVBなら比較的簡単だからねェ。


458 :名前は開発中のものです。:04/10/30 01:36:29 ID:hl13v9Yk
言語はインタプリタでも高速に動く時代だし
自分が知ってる言語でさっさと作れていれば問題ないぞ

親父がこだわってツールの言語とかにも融通をきかせれない結果分解したともとれる

過程も大事だが、その過程もなくサイト開いたり具体的にあらわしていたのは
新人のほうだけ

まぁ新人南無というスレだ

459 :名前は開発中のものです。:04/10/30 04:45:47 ID:XUVveJNs
>458
 まあ、親父氏はDirectXの情報がほしかった、っぽいけどね!

 しかし、フレーム表示だけでもupしただけマシとみるべきだ
 (みたかぎりでは、VCで作ったフレームにはみえなかったけど)


460 :名前は開発中のものです。:04/10/30 04:54:54 ID:XUVveJNs
>458 >自分が知ってる言語でさっさと作れていれば問題ないぞ

 いや、いまさらMS-DOSモードでつくられても、、、


461 :名前は開発中のものです。:04/10/30 06:56:23 ID:0ycsf0g8
>>457
Delphiですよ。

三頭身にしてみた。
http://gamdev.org/up/img/1729.jpg

462 :名前は開発中のものです。:04/10/30 10:48:36 ID:L54vnZuk
>>458
俺はこういう流れだと思う

プロジェクトに人をいれる
入れた人間が独断専行し始める
意図していた方向に進まなくなる
やる気がなくなる

良くある話

463 :名前は開発中のものです。:04/10/30 12:55:39 ID:F+QdzJMq
最後はおきまりのハードディスククラッシュでとんずらですか

464 :名前は開発中のものです。:04/10/30 13:31:18 ID:hl13v9Yk
まともな考えの持ち主ならバックアップ取ってるはずなんだがな

465 :名前は開発中のものです。:04/10/30 19:20:31 ID:cRS7fzGT
>>464
ここの人じゃないが、最近HDDクラッシュで自分のデータほとんど失ったぞ
1ヶ月前バックアップしたMOも壊れてたorz


466 :名前は開発中のものです。:04/10/30 23:33:19 ID:i2+Z3JZN
ソースを定期的にアップロードしておけば良かったのに。


467 :名前は開発中のものです。:04/10/31 01:01:08 ID:CzxbfcvK
攻撃可能になりました。
http://gamdev.org/up/img/1743.jpg


468 :名前は開発中のものです。:04/10/31 02:20:38 ID:dezWJ3do
>>467
がんばれ
ちみがこのスレ再利用してくれ

469 :名前は開発中のものです。:04/10/31 23:32:20 ID:fh/b9WyJ
HDDを複数つないで、しょっちゅうコピーしてないの?


470 :名前は開発中のものです。:04/11/02 04:10:43 ID:uhXzk5Nq
行き詰まったから、ハイドライドタイプのアクションRPGを作ろうとしたけど、
そっちの方が難しかった。
階段上り下り中は衝突判定が無くなるのかな。
でないと、頭がぶつかって上れない

471 :名前は開発中のものです。:04/11/02 12:00:46 ID:KF4w3WQZ
ハイドライドは見下ろし型だろ

472 :名前は開発中のものです。:04/11/06 06:51:16 ID:mvHt1yOh
もうマップチップだけだなんて言わせない。
http://gamdev.org/up/img/1799.lzh
http://gamdev.org/up/img/1800.jpg

473 :名前は開発中のものです。:04/11/08 14:37:25 ID:v33V7XiK
ガンガン攻撃しまくってしばらく遊んでたよ。
かなりいい出来だな。

ちょっと考慮して欲しいんだが、
敵も自キャラもダメージ受けたら引いた方が良くないか?

474 :名前は開発中のものです。:04/11/08 21:45:27 ID:c5XeeqoT
USBメモリにバックアップ取れよ


475 :名前は開発中のものです。:04/11/08 23:21:35 ID:5/r76r9w
やってくれた人いたー!
http://gamdev.org/up/img/1818.lzh
ダメージひかれます。
一度の攻撃で死んだ場合はバーを点滅させるか、少しずつ減らすか
した方が良さそうですが、後回しです。
簡単なBGMあり。
ジャンプ時と着地時に効果音あり。
鍵をとって扉に入れます。
単純なアルゴリズムのボスキャラあり。
時間も経るし、スコアも入ります。

476 :名前は開発中のものです。:04/11/09 01:11:06 ID:dXHv6g2L
がんばれ

477 :名前は開発中のものです。:04/11/09 10:12:51 ID:SDXBmGRH
>>475
Debian+wine20040716で動作しました。
なんか悪魔城ドラキュラ思い出すね。

478 :名前は開発中のものです。:04/11/10 05:18:54 ID:8S47tk+T
面白い! まだマップ管理系のシステムを練ってるところなんだとは思うけど、
もっと広大なエリアを歩き回ってみたい。がんがれ!

479 :名前は開発中のものです。:04/11/10 16:15:29 ID:9nEHLgUo
悪魔城よりも先にYsIIIを思い出した。

480 :475:04/11/11 04:12:59 ID:sPBtL0QG
>>478
現段階で広大なマップも作成かのうですよ。
16x11で割り切れる長方形にすればOK。

あとは、
動く床(ブロック)
ナイフを飛ばす
背景アニメーション

481 :名前は開発中のものです。:04/11/16 01:30:43 ID:fto+RzTX
とりあえず動く床。
http://gamdev.org/up/img/1886.lzh


482 :名前は開発中のものです。:04/11/16 22:12:43 ID:kq6+iAbN
マップを書き換えても遊べるね

483 :名前は開発中のものです。:04/11/17 00:06:58 ID:ZHPNjlat
スピード上げると階段が上れなくなるね

484 :名前は開発中のものです。:04/11/17 14:08:12 ID:rlNYN/ED
プレイ中にマップ書き換えたらゲームオーバーになるのか……

485 :481:04/11/18 23:59:31 ID:Y1BiVZsl
>>483
それはなんとかなりますが。

>>484
そんな事できますか?

わたしは面白くないと思うのですが、
このまま完成度を高めたら面白くなりますか?
それとも作った本人には楽しめないのでしょうか?
ライブラリやクローンに逃げる理由はこのへんにあるのでしょうか?

486 :484:04/11/19 14:36:47 ID:VR4yU6Z1
今やってみたらマップ書き換えてもゲームオーバーにならなかった。
なんか勘違いしてたみたい。ごめんよ。

> わたしは面白くないと思うのですが

多分、細かいところで面白さが欠けてるんだよ。
ジャンプの挙動が単調だとか、敵はボス以外移動してるだけで攻撃してこないとか。
既存のアクションゲームをもっと注意して見てみるとどこが違うのかよくわかるよ。

俺はメタルスラッグってゲームが好きなんだけど、
・敵が単純ながら攻撃してくる
・一番単純な放物線だがちゃんとジャンプする
・マップに凹凸があるけど大きな段差以外はそのまま歩いて進めるし、
 歩く速度も速いので普通に歩き回ってるだけでもフラストレーションにならない
みたいないい部分がある。

まず、どういった状態にしたいか、理想を考えてみて、
次に今のプログラムの状態と見比べてみる。
それで改善が困難だと思ったら作り直してみてもいいんでないかな。
重複する作業も少なくはないと思うから、二度目はそんなに手間かからんと思うよ。

487 :名前は開発中のものです。:04/11/20 05:57:51 ID:dJO277JK
親父より期待できるな


488 :名前は開発中のものです。:04/11/20 06:09:36 ID:E0zTh0s1
>>486
メタルスラッグはゲーセンでやった事あります。

では、次は敵魔術師を登場させてファイヤーボールを発射させてみます。

489 :名前は開発中のものです。:04/11/20 09:47:34 ID:z6kdR0Io
体力バーと文字がイースのに似てる

490 :名前は開発中のものです。:04/11/20 16:05:24 ID:d3ZA3Kvz
がんがれ

491 : ◆JR1fHEKlGE :04/11/23 04:33:11 ID:W1+tdUqy
そう言えば、攻撃時は41x40や42x40でもいいですよ。
一連のコマ(攻撃時の3パターン)を全部同じ大きさにする事と、
キャラの位置を同じにしてくれれば問題ありません。

このコマを3フレーム、次のコマを5フレーム表示して欲しい
と言うのがあったら言って下さい。

492 :名前は開発中のものです。:04/11/23 04:45:18 ID:W1+tdUqy
F6を押して、Spaceでコマ送りになりますよ。
ファイヤーボールはまだ。
http://gamdev.org/up/img/1955.lzh

493 :FINALFACTs ◆iWNwl/.CWE :04/11/25 04:19:19 ID:APawskSi
ttp://gamdev.org/up/img/1977.zip
とりあえず、ちょっとばかし編集しました。
キャラ絵は無いです。

なんか、まともなキャラ絵が書けない・・・。
絵の練習し直ししているので、もうしばらくお待ちください。
とりあえず、日曜日の朝ぐらいまでに上げるんで。

494 : ◆JR1fHEKlGE :04/11/25 23:35:27 ID:YMCVen1o
マップチップはちょっと待って下さい。
まだ細かい所を考えていません。

案としては、

足元を隠せば、階段を上り下りするアニメーションがいらなくなるかもしれない。
段は背景のマップチップと合成する。

の二つです。
両方採用すると良いかな。

Stage1.mapでドアの位置は指定していますが、ドアはマップチップではなくて
背景に描画するキャラクタとして存在します。
これなら背景はマップチップに依存しなくなるので、多彩な背景を描画できそうです。

あと、急がなくてもいいです。
私やゲームの為ではなくて、何よりも自分の為に描いて下さい。

495 : ◆JR1fHEKlGE :04/11/26 00:20:28 ID:DSOP7/2E
http://gamdev.org/up/img/1982.lzh
S で敵魔術師がファイヤーボールを発射します。

内部を見直し中なので、おかしいところがあるかもしれません。

496 :FAINALFACTs ◆Vyfxi/dpqw :04/11/27 13:41:46 ID:HU8qFqJW
>>494(JR1fHEKIGE)
パソコンが、動かなくなりました。
水曜〜10日ぐらいで復活できると思います。
ネットカフェで、スキャナが使えればその間でもUpしにきます。

497 : ◆JR1fHEKlGE :04/11/28 02:25:27 ID:BsHPkVqA
はっきり言って、完成させようと思ったらものすご〜く大変なので、
完成しないものと思った方が良さそう。
だから、そこまでやらなくてもよいと思うのですけど。

プレイヤーのドット絵は、半身と下半身を分離すればよかったかも。
ジャンプとしゃがみを同じにして。

上半身は (歩き、攻撃)*左右
下半身は (歩き、階段上り下り、しゃがみ=ジャンプ)*左右

498 :名前は開発中のものです。:04/11/28 03:31:17 ID:jsiKMzm2
どうせそこまでやるなら上半身と下半身をクラスで分けちゃえば。

499 : ◆JR1fHEKlGE :04/11/28 23:32:26 ID:FK1fXaYR
マジックミサイル(ホーミング)を撃たせてみた。
グラフィックがちょっとおかしい。
Sで発射、 F8で無敵。
http://gamdev.org/up/img/2007.lzh

>>498
そこまでやらなくても。

500 :名前は開発中のものです。:04/11/30 01:59:20 ID:1EZNHerE
ステータス部分を変えてみた。
http://gamdev.org/up/img/2018.png


501 :名前は開発中のものです。:04/12/02 06:34:54 ID:gmh1+o4i
DirectSoundで効果音を鳴らしたら、なぜか遅れて音がでる。
http://gamdev.org/up/img/2033.lzh

502 :名前は開発中のものです。:04/12/04 01:32:10 ID:wjOWKZbP
あー難しい。 上半身と下半身を別けた所から訳が分からなくなった。

こういうゲームの方がいいかな。
http://gamdev.org/up/img/2045.png

503 :名前は開発中のものです。:04/12/04 02:03:38 ID:S1GApVQc
(・∀・)?

504 :FAINALFACTs ◆WcOabcjNAM :04/12/06 14:13:57 ID:0//szTZE
>>502
もう少ししたら、パソコンが復旧できるらしいです。
予定では、木曜日までに復旧です。キャラ絵はそのときにUpします。
キャラの方は、しゃがむ必要があるなら、必要におおじて書きますよ。
三頭身(今の等身)でも十分できると思います。(半分とまではいかなくても)


505 :FAINALFACTs ◆WcOabcjNAM :04/12/06 14:16:32 ID:0//szTZE
キャップが違いますが、木曜にはちゃんとしたのが使えると思います。
・・。アハハハハ

506 :名前は開発中のものです。:04/12/06 15:22:31 ID:hC0ocwBs

ほれ。
http://himatsubu.fc2web.com/22/fir/ かなりシュールな心理テストでオモロイ。



507 : ◆JR1fHEKlGE :04/12/07 06:58:33 ID:6mg17QSn
ではお願いします。 上半身と下半身に分けるのは、
プログラムが出来てから考えます。
階段をやめて、梯-子にするとかなり楽そうですけど、
階段で頑張ります。

508 :名前は開発中のものです。:04/12/07 19:06:51 ID:8ArU9Es6
親父PG 結局とんずらかよ
ハードディスククラッシュて
ド素人じゃねぇか



509 :名前は開発中のものです。:04/12/07 19:21:28 ID:pRNw5ifO
適当に使っていいよ、このスレ
スレッド名に自分の名前いれてトンズラってどうしようもないからな

510 :名前は開発中のものです。:04/12/07 21:57:21 ID:RerrmthA
終了荒らしもアレができなくなったから段々手が混んできたね。

511 :名前は開発中のものです。:04/12/07 23:46:17 ID:pRNw5ifO
終了荒らしってなんだ?

512 :名前は開発中のものです。:04/12/08 20:26:19 ID:DyTqBWcM
この板の過去スレいくつか読んでいればすぐわかるよ

513 :507:04/12/16 05:33:25 ID:zuxWYHp5
飽きたので辞めます。 絵を描いてくれた人、ごめんなさい!

514 :名前は開発中のものです。:04/12/16 08:21:48 ID:nYcbMoQ4
>507
この根性なし!

515 :名前は開発中のものです。:04/12/16 08:57:20 ID:VuAamGHE
同じトリップ出したら信じてやる。

516 :名前は開発中のものです。:05/01/23 21:29:46 ID:6oxyZTGh
このスレ使われてないなら俺が勉強しながら何か作ってもいい?

517 :名前は開発中のものです。:05/01/23 22:25:13 ID:oL+WWsWJ
許す

518 :516:05/01/24 00:00:03 ID:4d7vmFMm
3Dをやった事が無いのと、Cは少しできますがC++がわからないので
ここら辺を勉強しながらやってみようと思います。

題材はSLGでいこうかと。
とりあえずホムペ作ってきます



519 :名前は開発中のものです。:05/01/24 00:13:28 ID:+Mkj565D
言語は手段であって目的ではないっ

といいたいが、言語の勉強ならべつにかまわんか

まずはアクションやシューティング、パズルなど結果がすぐに目に見えるもののほうがいいと思う
他の人にも遊んでもらいやすいしね

520 :516:05/01/24 23:51:19 ID:4d7vmFMm
帰宅が遅くなりました
ほむぺ
ttp://gpj.hp.infoseek.co.jp/

アクションやシューティングは難しそうな気がしますがどうでしょう?

521 :名前は開発中のものです。:05/01/25 01:37:32 ID:r+t1N9De
一番簡単なのは実はシューティング

ものにもよるが、主に縦だと細かい地形判定とか必要ないし
絵を表示できてキーボードからの入力ができればもうすぐだね

低コストで開発できるからこそいまだに細々とアーケードででたり
仕事のあいまに作る同人やフリーソフトでは2DSTGはわりとシェアがあるかと
仕事でやるならそれなり二時間掛けるからジャンルはなんでもいいのだろうけどね

逆にプログラムは容易でも開発が最後までいかないのがRPG

522 :516:05/01/26 03:03:17 ID:KA1rKiUq
なんか動作がおかしいですが
明日も朝はやいので寝ます

つ ttp://gpj.hp.infoseek.co.jp/cgi-bin/uploader/src/0002.zip



523 :名前は開発中のものです。:05/01/26 03:21:40 ID:QwoyVc3J
シューティングはグラフィックを用意しやすいというのもある。



524 :名前は開発中のものです。:05/01/26 03:36:05 ID:s02mdSIF
>>522
別におかしいとは思わんが・・・
この調子だと516がシューティング作るのもそう遠くはないな。

525 :名前は開発中のものです。:05/01/26 14:36:49 ID:JeRKJ8s4
>>522
いきなり音なってる。
ホムペもよくできてるし。
すごいなあ。

エロゲとか作ったことあるんですか?

526 :516:05/01/27 01:30:57 ID:dvRkyvO3
動作がおかしいと言ったのは希に例外が出たりでうまく終了しなかったりするので

素材があるならシューティング作るのはかまわないんですけど
あんまり見かけないですね

前回のは絵も音もフリー素材ですし
コードも以前作った物から適当に切り貼りして辻褄合うように書き換えた
だけなのであんまり手間はかかってないのですよ

明日も早いので今日は何も無しです
今後は早起きして作業する方向にします

527 :名前は開発中のものです。:05/01/27 09:50:58 ID:3kFZzIX6
ゲーム作った経験があるなら、
シューティングにこだわる必要はないかもしれないですね。
早起きとか大変そうですけど、がんばってください。

528 :名前は開発中のものです。:05/01/27 23:08:03 ID:Q1silL9f
言語何か知らないけど、無効なポインタにはちゃんとNULL代入している?


529 :516:05/01/29 02:38:11 ID:VHgFIMGL
昼休みにUSBのコントローラ買って帰って来たのですが
シューティングじゃなくてもいいっぽい流れになってるのですね・・・
応援してくれる方もいるみたいでもうちょっとがんばろうかと思ったり?

言語はCですVC6使ってます
新しいDirectX SDKが対応しなくなったみたいなので
そろそろ買い替えが必要そう

〜おかしい話ですが
>>528 の問題はビルド時の構成でメモリ状態の違いがあり
Releaseビルドした時に問題が出るってやつですかね?
ポインタも含めて初期化はしてますが
その他色々の所が激しくいい加減なのでモニョ
気にかけてくれてる人もいるみたいなのでこんな感じですってやつを↓に

エラーが出るパターンはDLL内部で起きていてインターフェイスの破棄忘れとかがあるのかも?
アプリが固まる流れはCoUninitialize でブロック↓
COM解放待ちのスレッドを WaitObject INFINITE で待ってる間イベントループもブロック↓
結果固まってるように見える

こんな感じです
ネタなので無かった事にしてさらっと流そうかと
とりあえず、また何か作ってみます

530 :名前は開発中のものです。:05/01/30 04:31:51 ID:Qe6b8yAX
楽しみにしとります。

531 :名前は開発中のものです。:05/01/30 14:41:41 ID:eKeNmJlW
ソース出してみれ。
ちゃんと全部読んでやるから。

532 :名前は開発中のものです。:05/01/31 03:24:32 ID:iPNK9omT
マルチスレッドとかインターフェースとか使わない方が堅実に作れますよ。

533 :516:05/01/31 23:03:18 ID:0EeOdMck
帰ってきました
中学生も寝ない時間に寝ますのでレスだけ

今は縦シューティングっぽい何かを作ってます
せっかくコントローラを買ってきたので対応しました
素人以下の絵が全力でやる気を削ぐ脱力風味です

リリースまでしばらくお待ちを

不具合ですが悪い所の見当もついてますしそのうち直します
マルチスレッドでのコーディングは好みの問題ですが
OggVorbisのデコードに結構時間かかりますし
アーカイバからデータ展開するのにも時間かかるので妥当だと思いますよ

ではまた

534 :516:05/02/03 01:19:49 ID:yiICYg0t
作業途中のup
つ ttp://gpj.hp.infoseek.co.jp/cgi-bin/uploader/src/0003.zip


535 :516:05/02/03 01:21:05 ID:yiICYg0t
orz

536 :名前は開発中のものです。:05/02/03 01:32:44 ID:h8r1D1W3
>>534>>516
すまんが、エラー出て何も言えん
おそらく漏れPCに原因があるかと・・・

537 :名前は開発中のものです。:05/02/03 15:32:05 ID:LbC3BrX1
動いた動いた。敵も倒せた。
俺のマシンが二世代ぐらい前(ThinkPad X20)だからかもしれんが、
開始時の中央位置から画面左端に移動するまで最高速で三分ぐらいかかるな……

538 :名前は開発中のものです。:05/02/03 16:00:18 ID:iQjN0w7W
おお、いいね。既にMSX時代よりいいね。

キーボードだと弾を撃ちながら、斜め移動できないのがちと気になるかな
(同時押し最大数云々のハード的な問題じゃなくて)。パッドだと問題なかったっす。
まぁ、軽く作ってみただけだろうし。

一瞬「当たり判定が小さくて俺好み!」とか思ってしまった。

539 :名前は開発中のものです。:05/02/03 16:48:30 ID:J3eLPxj0
>>534
キャラが左上にかってにうごく
キーボードだとまったく動かない

負荷はCPU使用率は2%程度なので問題なし

環境は
PentiumM725/855GME、XP


540 :537:05/02/03 22:39:39 ID:LbC3BrX1
んじゃうちはビデオカードがタコでHALになってないんだな。
悪い悪い、気にしないでくれ。

541 :516:05/02/03 23:52:05 ID:yiICYg0t
こんばんわ
ボロクソに叩かれてるだろうなぁと思いながら帰って来たのですが
そんな事も無く動作報告までしてくれる貴殿方々に惚れそうです

>>537氏の言う通りDirectXの初期化は
早いデバイスから順に試して動く物を選択するようにしていますので
遅い場合もあるかもしれませんが
タイミング管理がかなりいい加減なのでそっちが原因かもしれません

>>539氏の勝手に動く問題はプログラムの問題で
軸の中央値を設定してないのが原因です
軸を検出するCALLBACKの中でSetPropertyすれば直るかと思ってます
作ってる最中に同じ現象を確認してたのに放置してましたスマソ
もしデジタル軸でこの現象が出てるなら考え方を改め
もうちょっと手抜きしないように改心します
キーボードだと動かないのはちょっと考えてみますね
スペースキーも駄目ですか?

>>538氏の問題はちょっと興味があります
プログラム的にはキーボードでも斜めに移動しながら弾が撃てるようになってます
開発環境では使ってるKVMスイッチがPS2なので
キーボードもマウスもPS2の環境ですが斜め移動+弾の発射はできてます
PS2またはUSBをPC直挿しでその状態でしたら、かなり悩ましいです

キーボードはバッファリングして
いらないデータを捨てる方向のがいいような気がしてきました
ここは勉強になるインターネッツですね

長文失礼

542 :名前は開発中のものです。:05/02/04 12:34:51 ID:QfOMST7c
> キーボードはバッファリングして
> いらないデータを捨てる方向のがいいような気がしてきました

使用しないキーを捨てるって意味?
それとも、多すぎたキーを捨てるって意味?

543 :名前は開発中のものです。:05/02/04 15:40:07 ID:uPjPpADz
キーボードで操作
そんなことが可能なのか・・・
あれはハードの問題だと思ってました。

544 :538:05/02/04 18:53:57 ID:mXaHlELa
>>541
それがPS/2なんですよ。いやでもうちだけかも知れないし、お気になさらずに。完成目指して下さいな。
些末に煩わされ始めるとモチベーション落ちますしね。
一応うちのをDirectInput、GetKeyState辺りでテストしてみましたが、拾えてるみたいです。

545 :名前は開発中のものです。:05/02/06 03:46:47 ID:Ma8s9baR
言語は何使ってんだ?

546 :516:05/02/07 21:57:07 ID:FJrYKXbd
土日も仕事だったので全く進んでないですが生存報告
軸の設定はやりましたけど買ってきた物は8%位ずれてました

>>542氏の意図がわかりませんが両方です
バッファリングしてサマリしたら操作感がどう変わるかみたかっただけですよ

>>544氏わざわざ検証までしてもらったみたいでありがとう
頭の片隅に残しておきながら何か思いつくまで無かった事にします

>>545
Cです

シューティングは次くらいで終わりにしようと思います

547 :名前は開発中のものです。:05/02/07 23:03:02 ID:I7lXy+J5
何のゲームでもいいけど、最低限の実装でいいから完成させるくらいじゃないとみにつかんぞー

548 :542:05/02/07 23:32:14 ID:pm45371y
>>546
何でわざわざあんなことを聞いたかと言うと、
多すぎるキー情報を捨てた場合、
「おい、処理落ちでキー情報捨てられた! 俺はさっきからボム押してるっつーの!」
なんて状況が発生し得るから。っていうか間違いなく起こる。

使わないキーは捨てていい。
でも、必要なキーの情報は全部残せ。
じゃないとまともに動かなくなる。

あと、まあ他に作りたいものがあるから先にそっちやりたいってんならいいんだが、
>>547 の言う通りある程度大きなものを作らないとプログラム全域を見渡す能力がつかないぞ。
非常に視野が狭いまま、全体の整合性を付けるのに苦労し続けることになる。
グダグダでも何でもいいから少し大きいものに手を出して、
そしてどう改善していけばいいか考えるようにした方がいい。

549 :516:05/02/19 09:41:54 ID:iBs9S8/t
規制に巻き込まれてたのですがスレ伸びてないですね


550 :548:05/02/19 14:41:08 ID:SeeIdQIF
>>549
あ、なんだやってたのか。
このスレ沈みっぱなしだったから見てる人かなり少ないだろうし、
多分みんなお前がいなくなったんだと勘違いしてたんだと思うぜ。

で、サイトの方にあったレスにレスするぞ。

> >>548 それはむしろ今の状態というか
> 今はゲームループの中で1回ポーリングしてその瞬間のデータで処理をします
> これは言い換えると次のポーリングまでの間のデータを捨てているのと同じです
> 多すぎるデータは最終的に捨てなければなりません
> バッファリングでキューにデータが溜まるなら
> プログラムがデータの処理を選択できるのではないでしょうか?ということです
> 嘘ついてたらスマソ

OS 側にイベントキューってのがあって、
ポーリングとポーリングの間にアプリケーション(この場合お前のプログラム)が受け取った情報は全て
OS 側で勝手にイベントキューのバッファに保存されてる。
つまり、「次のポーリングまでの間のデータを捨てているのと同じ」ではない。

巨大なファイルを圧縮したりして CPU に負荷をかけまくると、
チャットで入力した文字が遅れて表示されたりしないか?
ありゃ負荷が掛かってる間に溜まってたイベントを
アプリケーションが後からポーリングして受け取ってんだわ。
Windows とか、Unix + X とか、MacOS とか、最近の OS は普通そういう実装になってる。

Windows の場合、限界を超えた量のキー入力を受け取ると
アプリケーションに渡す以前に Windows が根を上げてビープの警告音を鳴らす。
つまりキーイベントのバッファリングも、
受け取れないほどの量のキーイベントを破棄する処理も、
既に OS 側に実装されてる。

551 :516:05/02/19 19:23:48 ID:iBs9S8/t
私の説明不足感が否めないのでレスします

まずはじめに、最初に作ったプログラムはキーイベントから入力を拾っています
絵が表示できてキーボードで操作できたらシューティングっぽいって話だったので
おまけ感覚で入力を付加したけどスルーでしたね・・・
次のシューティングっぽい物はDirectInput直接データを使っています

> キーボードはバッファリングして
> いらないデータを捨てる方向のがいいような気がしてきました
これは言い換えれば現在バッファリングしていませんということです
>>544 氏も書かれていますが、Win32なら GetKeyboardState の方が近いでしょう

> 軸を検出するCALLBACKの中でSetPropertyすれば直るかと思ってます
何故イベントから入力を拾っていると勘違いしたのかわかりませんが
実際に使ったことがある人なら、ここらへんでDInputを使っていると察しがつくだろうと考えていましたが浅はかだったようです
ゲームパッドはDInput使ってもキーボードやマウスは従来通りで処理する人もいると思いますが
動きのあるゲームプログラムで入力をメッセージキューに結び付けるのはちょっと乱暴です

>>548氏の言っている事が間違っていると言ってるわけではなく
私は直接データの話をして、548氏はメッセージキューを使っている事を前提に
イベントドリブンの話をしている違いに過ぎません


552 :548:05/02/19 22:09:02 ID:SeeIdQIF
> 動きのあるゲームプログラムで入力をメッセージキューに結び付けるのはちょっと乱暴です

まったくその通りだ。
すまん、俺が勝手に勘違いしてしまってた。
言い訳すると、実はゲーム屋じゃないのよがはは。

一番最初の話に戻す。
キー情報はそのフレームで使う分を取得するだけでいいから、
バッファリングする必要は無いんじゃないかな。
フレームの開始ごとに新しくキーマップを取得すべきだし、
それ以外のタイミングで取得したキーマップを使う場面が浮かばない。

553 :名前は開発中のものです。:2005/05/14(土) 13:53:42 ID:ZEgVRKUL
今ごろ、親父PGはどこで何をしているのだろうage

554 :名前は開発中のものです。:2005/05/14(土) 16:37:25 ID:7Tz1A4Jg
なにこの良スレ

555 :名前は開発中のものです。:2005/05/14(土) 17:26:56 ID:Paq2TGj/
懐かしいな、このスレ
まただれか活用してくれ

556 :名前は開発中のものです。:2005/05/14(土) 20:22:15 ID:omksdaSL
良スレ発見


557 :名前は開発中のものです。:2005/10/11(火) 07:02:42 ID:kLBdLptE
http://gamdev.org/up/img/3529.lzh

ちょっと作ってみたのですが、どうでしょうか?
敵は出ません。
カーソルキーで移動、Zキーで発射です。
最後までスクロールしたら、F9で最初に戻ります。

558 :名前は開発中のものです。:2005/10/11(火) 13:34:21 ID:jKMzqgum
何を評価して欲しいんだかわからんす。普通に動くよ。

559 :557:2005/10/12(水) 00:19:26 ID:znuWtBEm
問題無く動いたらそれで良いです。
次はマップエディタ作って、敵を配置して
当たり判定付けます。

560 :名前は開発中のものです。:2005/10/13(木) 12:46:16 ID:qHul1ILG
>>552
コマンド入力。

561 :名前は開発中のものです。:2005/10/19(水) 05:12:32 ID:7eXt/o8U
Aキーで敵が出て、当たり判定もあります。

http://gamdev.org/up/img/3562.lzh

562 :名前は開発中のものです。:2005/10/21(金) 02:21:35 ID:TQGWbfQM
http://gamdev.org/up/img/3565.lzh

自動的に敵が出現します。
Sキーで敵が弾を発射します。

後は、
敵を沢山配置する。
攻撃を自動化する。
敵の種類を増やす。
敵と自機の攻撃方法を増やす。

563 :名前は開発中のものです。:2005/10/29(土) 23:37:10 ID:etEGubDM
3方向ショットにボスキャラ付き。
http://gamdev.org/up/img/3604.lzh



564 :名前は開発中のものです。:2005/11/26(土) 02:04:14 ID:zwQZIttK
画面だけ見ると期待できそうだけど、
ものすんごいつまらないからやめる。
http://gamdev.org/up/img/3907.jpg


565 :名前は開発中のものです。:2006/04/28(金) 09:02:31 ID:MsACIxME
今ごろ、親父PGはどこで何をしているのだろう。

566 :名前は開発中のものです。:2006/06/02(金) 15:33:48 ID:aoUDSlad
キーバッファがどうのこうのいうのが最後の書き込み?
XPでキー同時押しで本体Beepがピーピーいうのは
最近初めて知りマスタ。たぶんこれの解消をしようとしてそれっきりに?

とにかくなんでもあるからね・・・ライブラリならSDL、DXライブラリ、
他のスレではシューティングツクール、スクリプトなら豆乳、
アドベンチャーなら吉里吉里、簡易言語ならHSP、AB・・・
おやじさまが作りそうなものはすべて揃ってる。
もし一番欲しいものをと聞かれたら3DMMO RPGツクールだろうか。

567 :名前は開発中のものです。:2006/07/16(日) 20:42:30 ID:fs7bxhod
スレ主は凄い知識もってるみたいだけど、結局2004年9月で
まとめページの更新終了されてる。

やはりゲーム作りに必要なのは躓いても
投げ出さない根気なんだな…今の俺に作り始める
資格はあるのだろうか。

568 :名前は開発中のものです。:2006/08/10(木) 20:02:17 ID:UXnD9CIA
関連スレ

NEETの俺が無料ソフトだけでRPGを作るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1152609390/

569 :名前は開発中のものです。:2006/09/22(金) 21:21:48 ID:iYNT4fJm
親父戻ってこいよ!!

570 :名前は開発中のものです。:2006/09/23(土) 23:48:54 ID:5B2t9XQk
親父さま、結局動くものは一つもup無しでしたっけ?


571 :名前は開発中のものです。:2006/10/10(火) 21:34:59 ID:Wu1hOgHH
warota

572 :名前は開発中のものです。:2006/10/11(水) 00:26:04 ID:25nMnDje
今は もう 動かない〜

573 :名前は開発中のものです。:2006/11/13(月) 02:38:20 ID:UMHcizAv
今は もう 秋た…

574 :名前は開発中のものです。:2007/01/12(金) 16:20:35 ID:r6ASBmR/
フォッシュフォッシュ

575 :名前は開発中のものです。:2007/01/25(木) 13:37:04 ID:WhfH6lHO
良スレ!っと思ったら、もうだめぽ…
という訳でこのスレでの議論内容は、僕が有効利用させて頂きます。
この出会いに感謝。
あ〜、素人が一人でゲーム作るなんて大変だ〜…
まず十年はみとかないとね。
なんせ、技術的な事から調べないといけないからな〜…
まったくもって一人ALL開発はマゾゲーだぜ。

576 :名前は開発中のものです。:2007/01/25(木) 17:23:07 ID:hJSWH9Vy
晒しage

577 :名前は開発中のものです。:2007/01/25(木) 17:23:51 ID:GHH80Ulb
がんが

247 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)