1 :
親父PG :
04/03/30 02:40 ID:phIrC7nN C++やC、アセンブラは昔こなしたし、プログラムの事なら自信はあるけど ゲームは作った事が無い方。現場からも引退したし(w。 ここは一つ趣味でDirectXでも勉強して、ゲームでも作ってみようかなぁと思った、 オジサンPGのスレッドです。 一緒にマターリライブラリから作りませんか?
2 :
親父PG :04/03/30 02:48 ID:phIrC7nN
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とは直接関係ないけどね。 とりあえずこの辺までは共通事項かなぁ。追加があればご指摘ください
ゲームを作るのか、ライブラリを作るだけなのか。 C++とかでブイブイやってたんなら、オープンソースのDirectXライブラリ持ってきて まず何かゲームを作りつつライブラリを解析したほうが良いと思う。 パソコンを勉強するおじ様方に多いけど、本だけ読んでもあんまり身につかないからねぇ。 実際に動かして、動きを見ながらソースをトレースして理解したほうが本読むより早い。 ていうかC++なら0円でIDEも揃うけど。DEV-C++とかEclipseとか。 VC系が必要になるのはポトペタでデザイン作るときだしね。
6 :
親父PG :04/03/30 04:08 ID:phIrC7nN
>>5 早速レスありがとう
>パソコンを勉強するおじ様方に多いけど、本だけ読んでもあんまり身につかないからねぇ。
既にそのレベルは超えてもらわないと話が進まない^^;
スケルトンぐらい(質問はしてもいいけど)自作作成できないとおそらく
オープンソースライブラリなんて使いこなすのは無理でしょう。
>オープンソースのDirectXライブラリ持ってきて
>まず何かゲームを作りつつライブラリを解析したほうが良いと思う。
これは一旦自分で(調べて作って)解析した後でないと、かえって理解が遅くなると思います。
まぁあくまで持論ではあるのですけどね。
DirectXの動きを理解してからライブラリからコツコツと、それも楽しみの一つですから...
[最低でも問題のSDKのHELPは調べる]
親父PGに限った事ではないと思いますが^^;
ヘタレだけど面白そうだから参加していいかな。 大分前、SDKのみの自前描画で簡単な3Dモデルを表示してみた。 ちょい前、DirectXを覚えようと、とりあえず突貫工事で Xファイルを表示してキーボードで移動させてみた。 いろんな所からサンプル拾ってほとんどコピペしただけ。 次はスキンメッシュのサンプルをどっかからパクって組み込もうと考えたが わけ分かんなくて挫折。 最近、TCPとWinsockでS/C型の簡単な一対一チャットを作ったが、 一対多のやり方がワカンネェので挫折。 先週、暇だったからテトリス作ってみた。初めてのゲーム。 ライブラリ?クラス?なにそれ。 分割コンパイルすらままならない、道しるべが欲しいそんなダメオジサン。
8 :
名前は開発中のものです。 :04/03/30 09:44 ID:B2V5bL2q
それより親父さんよ この板にはたくさんの厨がいる そいつらは開発ってのを分かっていない ここは一つ、お前さんが連中を管理してゲームを完成させるスレとかにしてみたらどう?
みんなリストラされたのか?
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画ポリゴンは基本となるので、
まずはここまでを目標にしましょう!!
>プログラム理論ロジック習得の壁 if for >言語そのものに対する知識の壁 C++ int >環境に関する知識の壁 Windows DirectX 計算機の動作原理の理解に対する壁が抜けてるな。
>>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が書けなかった時代がありました。
現代の目で見ると、私の書いたような事はもはや御伽噺になっておりますなぁ...
>>14 懐かしいな、もうそこらへんのことはすっかり忘れたよ
今やれといわれても資料読みつつじゃなきゃ絶対無理だ。
>>11 は親父PG氏に計算機の動作原理の理解がない、と言ってるんじゃなくて
3つの壁じゃなくて4つの壁ではないか?と提案してるんじゃないか?
少なくとも俺はそう読んだ
まぁ計算機に関する理解は環境に関する理解に含まれると思うけどね
コーディングが汚くて読みづらい。
>>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として扱ってるが
>その値は思いっきり環境依存です
このあたりを解決するには調べることがありそうですね。
頑張ってみます^^
あーしまった、何を使って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);
ってーミスってるΣ 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 の書き込みも参考にさせていただきます。
たとえゲームといえど、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スレ潰してしまうな、こんな話始めたら(笑 )
>>16 単語の頭と、単語と単語の切れ目は大文字っていうルールでコーディングしてるんだったら、一貫してくれないと読みづらいね。
FSP60nonSYNCcall は FSP60NonSyncCallみたいに・・・・。
27 :
名前は開発中のものです。 :04/03/30 23:32 ID:fcRSAwJm
個人的な好みだけど、前回のループのカウンターサンプリングからの経過時間⊿t を、実数で持ってたほうが何かと便利かも。おじさんの頃は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; //⊿t (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 コードサンクス! オープンソースっぽくなってきましたね。
タイマーのブレをうまく吸収してくれそうですね。
ゲームの種類によっては、これが解決になるかも。
[タイマー系の処理は(時間が)くるまで動かないではなく
「(時間が)越えれば動く」ように設計する]
ですかね^^
何気なく覗いてみたけど良スレの予感。 親父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
ってことだよ。
35 :
名前は開発中のものです。 :04/03/31 10:37 ID:uLEtiF6X
>>34 アフォですか?
世界を1フレームに微分して捉えるのは、CPUの能力が有限である以上
当たり前だよな?それ以上の何がある?
とんちんかんなシロートさん。
時間の概念が古いんだよw
37 :
名前は開発中のものです。 :04/03/31 11:43 ID:uLEtiF6X
>>36 おもしろんじゃん。その新しい時間の概念とはなんだよ?
何にも提示するものはないのに一応偉ぶって見たいだけですか?
どうせ逃げるんだろうケドナ。
煽りに釣られてんなよ低脳
親父PGさんは仮性ですか?
↓何事もなかったかのように親父PG登場
こういう親父は せいぜいライブラリ作りで終わりそうな予感・・・
んで、ゲームは何つくるの?
>>37 2,3年前で頭止まってんじゃねーの?
世の中進んでるのはグラフィクス技術だけじゃないぜw
44 :
親父PG :04/03/31 13:34 ID:7Yj92Zqq
スレが伸び取る! 2ちゃん的に(w
>>34 タイマーについては一度議論するのも悪くないと思います。もっともご指摘のように
いつまでもすることではないですか(w
>>41 ライブラリ作っていると「無駄に複雑」な仕様になりがちです。戒めて前に進まないとorz
>>42 ゲームですが、キャラクターデータ-を中心に(制約はあるものの)
ゲームの内容は後から追加できるように考えています。
まだ具体的にゲームの内容までは絞り込んでいません。
グラフィックは嫁にメタセコイア覚えさせないと(笑
スクリプトエンジンを設計して、実装したらゲームの具体的な部分を考えます。
プログラム初心者程度でも、データを設計できる難易度に落とし込みたいと考えています
(野望)幾つかのモジュールはDLLで配布して他の方もゲームシナリオが作れるような環境も
提供していければなぁと。これってある意味ツクール的かも知れないですね。
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 落ち着け俺
既に環境依存してますって(汗) HG系はリコーの商用フォント。Windows標準では使用不可能 MS-Officeについてくるから勘違いされることが多いけどね フォントを複数種類使いたいならEnumFontFamiliesEx使ってフォントを列挙し、 ユーザーに選ばせるのが一番安全
ちょっと低レイヤー過ぎるような。 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があったら書き込み位置の移動。これは大丈夫だね。
プログラムは良いけど、まず企画が無いと設計できないんじゃ…
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ゲー目指してる感じだったけど、スクリプトエンジンの
内容はノベルゲームを目指してるようにも聞こえるのだが…
フォントとかってアクションゲームなら使わないし、イマイチ最終的に
何を作りたいのかが分からないのだが。
>>58 どんなゲームだろうとフォントを全く使わないって事はないだろう。
今までどんなゲームやってたのか知らんが、
お前さんのいうアクションゲームって
たとえばどんなのよ?
>>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作成>文字描画>ポリゴン貼り
内に秘めたり、趣味に走るのは全然問題無いのですが、 目的が分からないとアドバイスしようがないよ、という話だと思います。
64 :
親父PG :04/04/02 12:08 ID:5nHc263h
>>63 なるほど、では今、思案中で是非アドバイスして欲しいことがあります
>>57 にも書きましたが、ゲーム用のスクリプトの仕様決定の為の指針についてです。
ゲームは取り合えずRPG用と仮定してください。(カードゲームや其の他にも応用化)
画面形態はドラクエと仮定します。(画面形態は固定しない仕様を考えています)
この場合、シナリオを作成する側はどのような機能が欲しいか?
どのようなレベルまでPG的な事を理解できるか? ということです。
フラグ管理機能なども必要でしょうし;
文字列を解析してデータ-を作成するというのは、自作でコンパイラを作るようなものですねぇ。
数値計算とかポーランド記法。。。
いろいろ待っていそうですね(汗 そういえば昔、電卓作ったなw
それとも今ではフリーのMASMのマクロで組むかな....
テキスト出力なら、 フォントサイズを計算 -> テクスチャの生成 -> GetGlyphOutlineのイメージをテクスチャ -> レンダリング 出力先の大きさを固定するのならサイズの計算はいらないけど。 BMP作成というのが意味不明。
>>65 素人は引っ込んでろよ。
>>64 文字主体のゲームだとしても漢字全部を入れる必要はないかと。
使用している文字吐き出して必要な分だけ抽出する仕組みを用意すれば効率いいよ。
だいたいBMP作成なんて訳の分からないことをしたら、
GetGlyphOutlineで得られるα成分はどうするの?
なんちゃって玄人の
>>66 よ、素人にも分かるように説明してくれ。
なんかBMPを画像(フォーマット)としてのBMPとかと勘違いしてる?
69 :
名前は開発中のものです。 :04/04/02 12:58 ID:WZRWRsbY
>>68 GetGlyphOutlineのイメージをテクスチャ に転送する際に、
BMPがDIBや自分で確保したヒープであっても、
余計なものを経由して、わざわざ動作を遅くする理由は?
>>69 DirectX経由の話であって、コンシューマーの話ではないはずだが、
何を言っているのかますます意味不明。
>>57 作業がしやすいなら(使いたい機能を感覚的に探せる)どんなタイプでもかまわない。
最低限の改行/改ページ指定の入った文章をスクリプト書式に変換(もしくはデータ化)
でき、可能ならその逆(スクリプトからほとんど文章のみの形にする)もできるようにして欲しい。
校正しやすい形でシナリオを書きたいからね。
BMPを経由する理由というのがあるのなら、 その時点で私のよけいなお節介だったというだけの話なんだが。 話が別のところへ行きそうな予感。
いやもうウザイんで消えて。なにやるか判ってないのにアドバイスできると 思ってる池沼にはうんざり。
>>73 何故BMPなんて余計なものを経由するのか、明確な説明があれば即消えるけど。
なんで理由を書かずに、高圧的な書き込みだけ残していくの?
理由があればそれでよし、無駄な部分なら省けばいいだけの話題なんだが。
けんかやめれ 抱きしめてやるよ俺が
76 :
名前は開発中のものです。 :04/04/02 14:20 ID:J12mvrUf
テクスチャを利用する場合は、アルファで透明色の設定が必要になるから、 例えば、 TextOut>DIB>テクスチャ なんかの場合は、透明色をテクスチャに設定し直さなければならないので、 GetGlyphOutlineからダイレクトの方が効率がいいのでは?
俺も
>>68 とか意味がわからんので教えて欲しいな。
しかし、このスレはいろんな意味でマズーだなぁ・・。
いいのかこんなんで、みたいな。
結局なにも説明できず、煽ってごまかすことしかできないとは。 それがプロの仕事なのか? 文句があるのなら技術的に突っ込みを入れればいいだけなのに。
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.....
根本的なところに考え方に食い違いがあるようなんだけど、 なぜレンダリング時にハードウェア側で背景とフォントを合成しないの? >文字列が変更した時意外 背景と分離しておけば、背景が動的に更新される場合も、 文字列に変更がなければ、文字列用のテクスチャを書き換える必要が無い。 背景は更新されないことが前提?
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つ持っています。
レンダリング直前に加算してます。
レンダリング直前というのが謎なんだけど、 テクスチャを使っているのなら、なぜレンダリング時に、 ハードウェア側で合成をかけずに、その前過程で合成するのかが疑問。
世の中にはいろんな人がいるものさ
87 :
親父PG :04/04/02 16:20 ID:5nHc263h
>>85 ポリゴンに張り込むテクスチャ1枚目に、データ-を放り込んだらうまくいったからというのが理由です。深い意味はありませぬorz
加合用の2枚目のテクスチャをさらに別途用意して、データ-を他所からもってくるなら(他にいろんな可能性があるとはいえ)
テクスチャは1枚でいいような気もするのですが...
ハードウェアとソフトウェアでは合成速度に雲泥の差があるんだけど。 それにゲームの内容にもよるけど、サウンドノベルでもなければ、 普通は背景が一枚絵である場合は少ない。 複数のパーツを結合して背景やキャラクターを合成して、 一つのフレームを生成するわけなんだけど。 もしかして3Dデバイス経由でノベルのシステムを作るという話だったの? だったらすまなかった、この話は忘れて。
>>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...
>>91 スマン
非番という言葉使っていることからタイムシフト系か
つらそうだな
おやっさん、頑張れ。 密かに応援しているぞ。
94 :
親父PG :04/04/03 23:27 ID:0WOw9AyH
>>92 93
どうもありがとう。その言葉を励みに頑張ります。
今仕事から戻ってきました。土曜日は電車が空いてるので、ひざの上でPG組んでました(w
電車には携帯電話禁止と書いてあるが、携帯パソコン禁止とは書いてないからな。
GetGlyphOutline って結構面倒ですね。まだ動きがおかしいorz
文字列からひとつひとつコードを取り出さないといけないし、
UINTに対応して上位バイトと下位バイトを入れ替えなど...
ほんとにこんな処理をループ中にして大丈夫なのかな。
毎フレームやることじゃないな。この処理
ライブラリとかフレームワーク作るだけで力尽きないように SDLとか使うのもいいのではないかと。
96 :
親父PG :04/04/04 09:51 ID:6UsE36R6
DIBについてトリビアを発見しました。 BITMAPINFOHEDERのbiHeight メンバを-にしてDIBを作成すると 左上原点のボトムダウンDIBになる。 既に概出かもしれませんが.....orz
それって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 ダイジョウブカナ...
ソーサリアンの拡張版!? それは楽しみ。 絵とか音楽とか必要な段階になったら、 状況が許せばお手伝いします。
101 :
新人PG :04/04/04 14:53 ID:yroz7+Kx
>>親父PG
快い回答ありがとうございます。
いきなりそんな重要な部分の設計を任せてもらって感謝とガクブルが半々ぐらですw
勝手ながら、まとめページを作ってしまいました・・・いらなかったら消します(^^;
http://www.geocities.jp/oyajipg/index.html うpローダとか考えたのですが、ちょっと様子見ということで個人サイト形式です。
シナリオエディタとデータ規格ですね?
先にデータ規格の方の設計を考えておきます。でわ。
最初からソーサリアンみたいなの作りたいとかいっとけば 流れ分かりやすくてよかったかも ソーサリアンシステムの概要はしっとるかな? まぁ、今なら参考にすることはあんまり無いと思うけどね 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
ソーサリアンか。懐かしいの選ぶねぇ。
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
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水準 基本 かな かたかなの全てチェックしておりますです。
うにこーどとマルチバイト文字はサポートしてません。
チェックを入れることは可能ですが、それは別のところで一括変換されるべきでしょう。
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
XMLは慣れると内部データにも使いやすいよ domツリーそのままというよりはElementを多用するというか MapとListを自由に組み合わせれるコレクション型と考えればいいかな CPUが1GHz超えているのなら メインループでDOMツリーガリガリ操作していても余裕で60fpsくらいでますぜ
というか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
画像班もいてくれると大助かりです。宜しくお願いします
120 :
新人PG :04/04/04 22:42 ID:yroz7+Kx
121 :
親父PG :04/04/04 23:07 ID:3txQVYNu
122 :
新人PG :04/04/04 23:42 ID:yroz7+Kx
>>121 ちょっとトリガーテーブルの記述が判りにくかったので解説求む。
124 :
新人PG :04/04/04 23:58 ID:yroz7+Kx
寝ます。
平日の書き込みペース&進捗はかなり落ちますので、そこんとこよろしくお願いします。
>>123 もうちょっと踏み込んで設計していたらもっとキモイフォーマットが出来ていたかと思います。
XmlSchemeなんてこんな物では?
ま、ゲームで扱うものならdtd程度でいいとは思うけどね
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
親父PGって何歳なん?
1024*768のウインドウモードでその程度ならなんの問題ないと思うんだが
133 :
親父PG :04/04/05 11:49 ID:6z0RwfU5
>>131 現在のLVではそれは使用できません。orz嘘ですゴメンナサイ
取り合えず、妻子持ちという事で^^
あと2~3週間を目処にいったんあぷします。
親父PGたんのスペックおしえて。 身長、体重、血液型など。
>>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ツールを作ってトリガーテーブル部分のみを編集できる。というスタイルになります
●必要なデータ-群
トリガーテーブル (トリガーが書かれている 固定長)
シーンデータ- (処理が書かれている 可変長)
ストリングテーブル (名前などストリング系のテーブル)
ファイルネームテーブル (ファイルネームを収めます)
マップデータ- (地形を表すデータ-)
アイテムデータ- (魔法とかキャラデータ-など....)
ゲーム管理用データ-(画面分割数 ボタン大きさや処理等)<こちらで作りました
ざっとこんな感じです。まとめたほうが良いデータ-もありますね
また単独であったほうが良いファイルもあります。
コレ全部の仕様決めるのは大変ですが、一つ一つ詰めていきましょう。
作る課程を楽しむのならいいけど ゲームを完成させるのが最終目的ならば富豪的プログラミングでいいとおもうけどなぁ 空中分解するスレ何度も見てきているので完成後の最適化とかバランス調整とか そっちに時間かけて欲しいと思ったり
139 :
親父PG :04/04/06 14:03 ID:QeLHJL6C
>>138 お気つかい有難う。
過程を楽しんでいるのはもちろんですが。
今はゲームを作る為の環境を整えているところです。
まったくの0からなので、時間はかかってしまいますが^^;
文字周りが一息ついたところで、WINDOWSシステムを作ります。
リソースデータ(構築データ-)より作成されるシステムとなり
データ->翻訳>内部ルーチン呼出 という流れを
本格的にサポートする為の、雛型になると考えています。
親父PGたん、むちむち体型なの? 背は高いね。きっとダンディーなんだろうな。 オヤジPGタン(´Д`)ハァハァハァ
もしフリーソフトの RPGツクール出来たら 凄い需要があると思う この板の神になるかも
いきなりコードを書き始めるプロジェクトの顛末。 まあ期待しないで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のデータとの絡みは無いですか?)
マップデータとトリガデータ分離するの?
編集はエディタのみで、単にファイルが分離しているだけならいいけど。
データ間の依存関係は、データ修正の手間が軽いかどうかを重視するのが
よいと思うがどうか。
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座標を引数にイベントトリガー内を検索します。
とちらにも利点欠点 あ時間だ 帰ってきて書き込みます
親父PGタンはブリーフ派?トランクス派?
ふんどしに決まっているだろ。
ぱ ん つ は い て な い
>>親父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(フラグ)は変数置き場です。
子供は娘さんですか?
160 :
名前は開発中のものです。 :04/04/07 20:11 ID:OoCqvErc
子供は娘さんですか!??
娘さんは私が責任を持って育てさせていただきますので どうぞプログラムに専念していただきたい!!!!!! なんの心配も要りません!!!!!!!!!!!!!!
以後、親父PGの娘さんを奪い合うスレッドになります。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ありがとうございます。 では娘さんをお迎えに 行かせていただきます!!!!!!
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 (ごめんなさい、ほんとに判らないんです)
俺的にはマップとmapでわけてるというか 会話になると混乱するかもしれん つーか、普段の会話でmapってでてこないしなー hashmapとか実装込みで離すだろうし
168 :
新人PG :04/04/07 22:35 ID:7aasUls1
>>167 マップが地形の方でmapがデータ構造の方?w
うちの会社ではiniファイルもpropertiesファイルも全て「マップファイル」と呼びます。(ガクブル
しかし、データ構造やシステム面から詰めていってゲームって作れるんでしょうか。
本当に行き着く先がRPGツクールな気がしてきましたw
ラフ絵等が出てくると雰囲気出て良いかも。
そしてそういったゲームには欠かせない 絵とか音楽とかシステムまわりがこのプロジェクトにはまったく無い 技術ありきだとプログラマ本人以外ついていけんしな
170 :
名前は開発中のものです。 :04/04/07 23:16 ID:SEG+EKoN
ああ。。僕の真鈴たん(仮名)早く逢いたいよ。。
171 :
新人PG :04/04/07 23:55 ID:7aasUls1
寝ます。 親父PGタン夜勤ご苦労様です。 絵柄は洋ゲーっぽく、渋くクドイのが良いなぁ・・・。 硬派さを出したいw
なんだか凄そうなので、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
子供ください
エルモアってなにか遠い昔に聞いた名だなと思ったが D&Dのパッケ描いた人か…。
179 :
親父PG :04/04/08 15:40 ID:msAPqSAi
>>176 orz...
>>177 調べてくれて有難う。こんなHPあったんだねorz
僕が中学生の頃、D&Dのイラストを見て、激しく感動したイラストレータです
RPGの話をするならこの人は避けて通れません。
Windowのパーツを作り始めました。仕様もこれから固めていきます。
イメージのたたき台になりますかね?
| ああ~ やっぱ3歳は / | シマリがいいな~!! / . ____ | |・∀・| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ∥' 、 ソ| ノ と、_入`_,つ λ う カク
181 :
144 :04/04/08 16:49 ID:kikONY5O
トリガテーブルは固定長じゃないほうがいいと思うよ。 で、番号じゃなくて名前の文字列にしよう。 で、std::map< std::string, TriggerAndProcess > みたいなのに突っ込もう。 ハッシュでもいいけど。 マップの方では、トリガ番号をセルに埋め込むのはよろしくないと思う。 3Dにしたときにどうしようもなくなる。 その代わりに、アトリビュートファイルを作ろう。 アトリビュート範囲とトリガの名前が書いてある。 (もちろん、マップファイルの固定長地形データ配列の次にくっ付けても 構わないが、実行の問題じゃなくて構造の問題ね) トリガの条件判断は、やはりスクリプトに譲ったほうがよいと思う。 寄り道できない一本道のシナリオなら今のトリガテーブルの条件記述 で構わないと思うが、ちょっと複雑になったら、結局素人の手には 終えなくなると思う。 当面は今のトリガ記述方法で良いと思うけど、早いうちからスクリプト への変換をしておくと、トランスレータだけいじればよくなるので、 トリガデータ構造はもっと柔軟なもの(できればスクリプト)にしておいた ほうが良いだろう。
親父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++でいう基底クラス
スクリプトを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値も入れましょう。
ゲームの種類のよっては使わないかもしれませんが...
トリガーからトリガー呼ぶのはいいがそのへんはシステムがインテリジェントにやってくれて スクリプトを書く人は意識しないでいいんですよね? たとえば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になったら即お願いします。^^;
>>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; //リザーブ };
もう何がなにやら・・・
203 :
名前は開発中のものです。 :04/04/09 16:48 ID:Ws2ssbno
チチキノドク スグカエレ
俺はスレ主には特に何も言わんが けっこう可愛そうな奴らがいるみたいだなぁ この板には
がんがれ
おおよそ固まるまで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?
自信あるみたいだから、思うとおりにやってみるといいでしょう。
使い物になりそうなことは分かったし。
後出しって・・・・なんかの勝負でもしてるのか?
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
>>212 でもあんまりシナリオとか簡単に作れるようにすると
あんまり知識の無い人でも簡単にズルができるようになるような。
まぁ、その人がつまらなくなるだけですけど。
>>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タンの頭の中でできあがってるようですね(汗 俺、要るのかな・・・?
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...)
今日は久しぶりの休みです。ぼちぼち作業を始めます。
Excelでcsv扱うと文字列の先頭のゼロが数値として読み込むために消えたり 全角数値が半角になったりしてくれるんであんまり便利な物ではないですよ ダブルクォーテーションでくくった項目は強制的に文字列として読み込んでくれるとよかったのですがね
222 :
親父PG :04/04/14 10:50 ID:EE4mRz9N
>>221 それは拡張子をtxtで読みこめば回避できます。読み込み時にセルの属性指定可能。
このシステムに関してなら、トリガーテーブルに文字列はありませんので大丈夫です。
ひげぽんOSは飽きたのか?
224 :
親父PG :04/04/14 17:50 ID:EE4mRz9N
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
今始めてきたけど、親父さんすごいなぁ。 全くわからん。 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
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...
取り急ぎトリガー構造体 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もやってみるか、と思った次第です。
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がパフォーマンスを最も重視して設計したと 豪語していますが、流石に言うだけのことはありますね。
つーかネックになる場所は大概描画方面だったりするので
その辺は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...
×disenable ○disable
×Parl ○Perl
248 :
親父PG :04/04/21 14:17 ID:iaRnmK/d
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....
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とか 解らない点がありましたらどしどしご質問ください。
>>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...
ウィンドウ見せてクリ
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
263 :
親父PG :04/04/23 00:11 ID:nZvvFTd4
>>261 おつかれさまー
メインフレームの件は私もそう思ったんですけどね。そういう簡単なものではないらしい
未知の世界(デッカイTAPE装置が動いている世界...
MAPの話
例えばMAPにトリガーが無いと仮定すると、
キャラが移動する毎にトリガーテーブル-のサーチが必要になります。
これは効率が悪いので、MAP側に「探せ!」というコードを埋め込むわけです。
外部ファイル読み込みは 動的に処理しないとあまり意味はありません。
固定長のトリガーテーブルは後ろに付け足しできるなど、扱い易い点はあると思いますけどね。
264 :
親父PG :04/04/23 19:05 ID:nZvvFTd4
265 :
親父PG :04/04/25 16:09 ID:F+nBnVBh
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...つぎはぎだらけなのがばれてしまうソースですな(汗
>>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....
なんか文字の後ろが透過されてないんだけど、 もしかして例のDIB側で合成して、αを使っていないせい?
273 :
親父PG :04/04/26 12:40 ID:Tu3Nnhfj
>>269 スタンダートストリングですか^^
何が何に強いとか特長とかあるんですかね?
C関係は文字ライブラリの種類多すぎorz...
デルファイのようにStringが、すべてカプセル化して1つしかない状態のほうが
シンプルで良いような気もするんですけどね(個人的には)
string.sort() ←こういう事が標準でできるあたりはCも便利なんですが...
>>272 そうではありませぬ。
文字の後ろは可読性を考えて、わざと不透明にしております。
文字は高精度αを使って滑らかに出力しております。
「文字 DIB
|合成(スクリーン)
背景」Tecture このとき背景のαを255←ここを変化させると透過する
ポリゴン
(重ね合わせ)
WINDOWポリゴン 頂点にα設定
(重ね合わせ)
サーフェースカラー
応援さげほっしゅ
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の命令語次第)
for文や計算式が書けないのはまずいんでない?
普通はスクリプト系にforとかswitchはあまりないんでない? 開発ツールのほうでswitchがあってもそれをifに展開したりする forのような繰り返しはあまり多くないからさほどいらないはず どうしてもほしかったら後で付け加えるだけでいいし
>普通はスクリプト系にforとかswitchはあまりないんでない? それ本当? 逆にforに相当するものが書けないスクリプトを知らないんで教えて欲しい。
普通スクリプトって社内開発で外に出ないもんじゃ?
>普通スクリプトって社内開発で外に出ないもんじゃ?
趣味ならまだしも仕事で作って
for文も使えないってことはないのでは?
スクリプトの処理系なんて社内開発以外にも
Python,Ruby,Lua などいろいろあると思います。
参考までにPython+SDLのゲーム開発サイトです。
ttp://www.pygame.org/
ここでの流れはそういう汎用スクリプトの話してねーだろ
いや市販ゲームにも使われてるし別にいいだろ。 逆に社内開発の非公開スクリプトの話されても困る。
スクリプトみたいなユーザーに近いレベルの言語こそ forとかの制御構文あったほうがいいと思うけどね。 それをjumpやgotoなどに展開するのば普通じゃないのかな。
あくまで学習しながらゲームを作るのってのが目的みたいだし 多少機能が貧弱でもいいのでは? 単に高機能な物が欲しいのならフリーでオープンソースな ゲーム開発環境なんていろいろあるわけだしそっちを使ったほうがいい。 中途半端に終了ってのが一番最悪ですから。
>>288 それは初めて聞くな。PCゲームなの?
その手のスクリプト言語のパーサとかVMって、ライセンスはどうなってるの?
GPLだったら、ゲーム自体のソースも公開になるの?
それともコピーライト表示だけで構わないライセンス?
293 :
新人PG :04/05/03 06:49 ID:XPOMrzWI
みなさん色々意見ありがとうございます m(_ _)m
FOR文が消える理由:
>>290 さんの言うように必要性を感じなかったのと、目的コードと合わない感じがしたからです。
計算式が消えそうな理由:
計算をする事が出来るかどうか怪しいため。
あくまでゲーム中イベント処理の記述のみをスクリプトで作る手筈なので。
他の処理系(Lua等)を使わない理由:
作ってみたかったからっス・・・(・ω・;)
>>291 さん、フォローThanx
あと、親父PGさんの方である程度考えにまとまりがあったので下手に他に手を出すよりは良いかと思ったからです。
まあ最初はXMLでの記述のみを考えていたんですけどね・・・w
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..
修理に出すので今止まってます すみません 汗
スレ一通り読んでみたんだけど一つ質問 今作ってるのはライブラリですか? 初心者の俺にはそれすらわからないy=ー( ゚д゚)・∵.ターン
>修理に出すので今止まってます このままフェードアウトの悪寒・・・。
親父PG=47氏だったら・・・。 >今、開発マシンにトラブルが発生orz.. >修理に出すので今止まってます すみません 汗 実は押収されたの。 と、妄想してみる。
親父PGさんタイーホされたのか。 とか言ってみる。
結局、2chで企画立てて実現かつ成功した 例は・・・
ゲーム作るのにだって根気と忍耐は必要なのに1~2週間くらい待てないのか? 仮に企画倒れだったとしても当人達以外に何か被害被った訳でもなし。 うだうだ言う奴に限って自分では何もでk(ry もうちょっとマターリ待ってみようや(´_ゝ`)y─┛~~
>>304 別に誰も作業を「直接的に」急かしてる書き込みして無いでしょ?
>>305 ???
よくワカランが俺の書き込みちゃんと読んだ?
本人がPC修理って言ってるんだから下手な煽りはイラナイだろって言いたいんだがな
>>300 、
>>303 とか。ドッチに転がっても何か損するわけじゃないしね
見ててダメだと思ったならここ見なきゃ良い話しだし
俺は変な煽りに対して言ったんだが、レス番付けなかったからちとわかり難かったか
そうではなく2chなんだから煽りにいちいち反応するな ってことが言いたいのでは? このスレの住人も当人達以外はヲチしてるだけでしょ。 既存のゲーム開発ライブラリなんてたくさんあるし ゲーム製作したことが無い素人が作るライブラリの 完成を待ってる人なんているとは思えん。
>>307 当人たちのやる気を削ぐような、刺のありすぎる言葉だな。
まあ、言ってる事は同意だが最後の二行は書くべきではなかったと思うぞ。
>>307 漏れニヤニヤしながら待ってるよ
使いたいからじゃなくて、見てみたいから
特に、豪華固定長命令セットの威力に期待
310 :
新人PG :04/05/15 16:36 ID:0t0FzjJn
お疲れさんです。ずいぶんさがりましたな。 仕事の引越しの関係でインターネットが新居に繋がってません。今月中に何とかします。 スクリプトは機能を大幅に削って、ある程度完成しました。どうにかゲームの進行ができる程度です。 計算処理は復活させました。限定的な(非汎用的な)命令語が増えています(汗 現在C# + DirectX9にてデバッグ用のインタプリタプログラムを作成中です。 動作するものができたと判断した段階(6月初頭を目途)で一度公開します。 スクリプトレビューはその時に行ってもらいます。 現在作成できるゲームの限界はSFCのドラゴンクエストⅢ+αとしています。 オーソドックスな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
タイーホされてなかったのか・・・よかったよう。 早く復帰してねー
314 :
親父PG :04/05/19 08:49 ID:DXpNx74z
まだ修理から戻ってこないorz...
IBMのノートって壊れやすい?
そりゃもう踏んだだけで壊れます 踏んで壊れなかったのはLet'sだけだった・・・
踏みすぎ
保守
319 :
親父PG :04/05/24 20:54 ID:o3eQYwoe
ところで HDDなのですが、だんだんおかしくなって 最後にWINDOWSまで起動したあと、認識不能になったので おそらく基盤故障かモーター故障だと思うのですが、 サルベージでよいとこ知ってる方いませんかね? これもある意味 ネタにもなるし(苦笑 IBMに当初修理を依頼したところ落下判定されていました(笑 かばんに入れて持ち歩いていたので、チャックの部分とこすれて傷だらけなのがいけなかった... 状況を説明して 落下判定は取り消されました。 やはりちゃんと説明しないといけないんですね。落下だと「保障」が効かなくなります。 当初6万の請求が、修理範囲をHDDに絞ったことで「無料」 また壊れたHDDの引き取り代金だけになりました。 壊れたHDDの引取りにもお金がかかります。まぁこれは仕方の無いことですが^^;
俺なら新しいの買う
サルベージの話だろ? ところで >壊れたHDDの引取りにもお金がかかります。まぁこれは仕方の無いことですが^^; 知らんかった。なぜに?
俺の場合、壊れたハードディスクは表面を透明プラスチックとかに変えて 部屋の隅っこに飾ってる。 ちょっとかっこいい。
パソコンリサイクル法とかでいろいろと理由付けて金とるんだなぁ。 漏れもIBMのHDD(ノートじゃないが)使ってたけど2年しないで 起動するたびに遅くなったり、認識しなくなったりしてとうとう逝ってしまった。 まぁ、前兆が2,3日に続けてでてたからあわててバックアップとったが、 親父PG氏はバックアップとってないのん? 開発マシンが逝っちゃうとカナーリショックだと思う。
PCやHDDは消耗品。万が一の時のために バックアップはまめにとるのは開発者の常識。 個人でも何枚かのDVDRAMやRWに焼くだけでも 安心感が違うから、面倒でも最低2~3日に1回は 全ソースのバックアップをとったほうがいい。
確かに必死こいて書いたプログラムが2日分 消えたときはしばらく放心状態だった
326 :
親父PG :04/05/25 19:41 ID:srpPWafA
壊れたHDDを引き取るのにお金がかかる理由は、交換により新品をHDDを提供。 交換後の壊れたHDDは「IBMの資産」扱いなのだそうです。 なので引取りにはお金がかかるようです。 当初は新品と同じ額かもしれないと言われていましたが、結局は9000円 になりました。 高いなと感じる方もいるかもしれませんが、ノートの発送代金はすべてIBM持ち (保険付き)サービスであるとかを考えると、それほど高いとは思っていません。 簡単なチューニングもしていただきました(発熱対策) あまり参考にしたくない事例ではありますが(汗 なにかの参考なれば幸いです^^;
家にサーバ一台置いて、CVSなんかでバージョン管理。 これ最高
サイト用アカウントにpassがけアーカイブをうpしてる。
>325 でもめちゃ苦労して、ある程度できあがってたものは 一度消えても仕事とかで納期が迫っていると、一気にその段階までもっていけるようなw 俺プログラマーじゃないけど、フォトショとかで1日かかりで作ってたようなのを 納品数時間前にアポーン->一気にそこまで作り上げ。みたいのはあるな。 フォトショの画面作りにしても、プログラムにしても、時間かかってるのは 頭つかって試行錯誤してる部分だけだから、一度形にできてると、 そこまで復帰させるのは、どうとでもなるよね。 ・・・まああまり参考にしたくない話しですけど。
>>329 デザインとプログラムは違うよ。
実際に経験してみないとこの違いはわからん。
>時間かかってるのは >頭つかって試行錯誤してる部分だけだから ここらへんがど素人なのね
まあ、かなり特殊な処理だったりするとわからんでもないな。 ただ、手馴れてくればそういう「試行錯誤」より 単なる物量が多いだけの場合が殆どであることに気が付く。
ノートのHDDが壊れたときは、とっとと新しいHDDを買ってきて付け替えたけど。 有償なら自分でやった方が、安いし早い。
334 :
親父PG :04/05/26 14:01 ID:FihDUxqm
>>333 交換の部分は無償なんですよ^^ 普通は壊れた部品引き取る人いませんからね。
で目の前に壊れたHDDがあります。どうやってサルベージするか思案中です
クラッシュしちゃったり基盤交換が必要など物理的に 壊れてるHDのサルベージは結構な料金とられるので 多少巻き戻ってもバックアップから作業開始しちゃったほうが いいと思いますよ。 ソースが必ずしも復旧出来るとも限らないし…
壊れたってのがどういう壊れ方なのかもわからないなあ。 カラカラ鳴ってアクセスできなくなるタイプ?
∧ ∧ カタ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (,,゚Д゚),__カタ_ _< このスレは親父PGのHDDをサルベージするスレになりました・・・と。 ./ つ_|| ̄ ̄ ̄ ̄ ̄| \_____________ (, |\|| VAIO | '\,,|==========|
いやはや、これだけ書き込みがあって、まとめサイトも作ってないし・・ できたツールを片っ端から上げってったほうが良いんじゃないの? (と言ってみるテスト) やっぱしデータ構造は問題になるとは思ってたけど・・ オヤジ?さんが考えてる流れは例えば ある地形上を歩く→どこかに着くと何番のフラグを立てる→ 他のフラグもあわせて条件判断→フラグデータにあったイベントの発生 みたいな流れを考えてると思われる。(いかにも初代から3までのドラクエみたいだけど) 最近のゲームを見るに分業が進んで、たぶん上記の方法はあんまり使われてないかも? だからシナリオが一本道になってるともみえる。でも、開発はこっちの方が容易。 シーン1(シーン1内での簡単なフラグ)→シーン2(シーン2内での簡単なフラグ) →シーン3(シーン3内での簡単なフラグ)→・・・ 全シーン共通のフラグがこの他にあって、 またキャラクター(登場人物)データや持ち物データは別にある。 最初の方法だとフラグを管理するツールは必須だね。 何個かの条件を関連づけて表示したり、どのフラグがどのデータに関連してるかというのが 明示されて無いと、あとあとわけわかんなくなるし。 2番目の方法なら、フラグについてはほとんど問題無い。(だから最近のゲームはつまらん)
確認してみたがまとめぺーじきえてないぞ?
341 :
親父PG :04/05/28 11:58 ID:tJb+of+g
やっぱしデータ構造は問題になるとは思ってたけど・・ >オヤジ?さんが考えてる流れは例えば >ある地形上を歩く→どこかに着くと何番のフラグを立てる→ >他のフラグもあわせて条件判断→フラグデータにあったイベントの発生 >みたいな流れを考えてると思われる。(いかにも初代から3までのドラクエみたいだけど) 少し違います。地形データーにはトリガーがあるという1ビットですむデーターしか置きません。 何が起こるかはトリガーテーブルから検索します。 イニシャライズ時に トリガーテーブルを見て地形作業領域にばら撒きます。 構造体配列に値を入れます。1ビットですみますが領域はバイトで、0-255の値をどう使おうかな? 0はなし1はトリガー検査 さて余りましたね^^ 有効な使い方あるでしょうねぼちぼち考えます。
>>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...
ライブラリ作るのはあくまで過程で最終的にはゲーム作るんでしょ? 3Dにしようよ、3Dに。 なんか古くて暗いからとっつきにくいよ。見た目とか。
3Dがいいなら自分で作ればいいじゃん。 3Dのライブラリなんていくらでもあるよ。
2Dのツールこそたくさんある気がする・・・。
349 :
親父PG :04/05/30 21:52 ID:whdcT15r
>>346 347
2Dか3Dかはそれほどこだわっていません。
もうすこし内容を詰めた時に選択します。
ちなみに見た目は平面ですが、3Dポリゴン上で展開しているので
3Dのライブラリ?です。
混在するかと思います。2Dと3D
全てが「じゃあ自分で作ればいいじゃん」で済まされるスレになりました。
351 :
親父PG :04/06/02 14:16 ID:WRPhaE/T
サルベージ会社に頼みました。 まずは初期診断、どのような結果が戻ってくるでしょうか...
今日このスレ見つけて一気に読んでしまいました。 タノシカター(*・∀・)=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かと) ・職業とか ・属性(炎とか水とか?) ・共通台詞の語尾?("だぜ"とか"ですわ"とか?) ・アイテムの所持量 なんでも考えられますね・・・。
ほしゅうう
358 :
親父PG :04/06/06 21:43 ID:TFl9YsaT
お疲れさま キャラデータはなんでも出てきますね。いやほんとに 今回、私が計画しているゲームではアイテムには持続時間(無限大もある) を持たせておいて、場にセットする。場にセットされたアイテムの種類によって 「コマンド」が使えるようになる。 ターン使用時において コマンドを実行するか、場にアイテムを置くか? 悩むところではあるでしょう。また相手のアイテム持続時間を減らす攻撃など いろいろと戦術が考えられます。カードゲームみたいですねw
ほしゅ
360 :
親父PG :04/06/11 20:24 ID:yIL1qXgr
HDDのデータサルベージに成功しました 先ほどリビルドと実行を行ないましたが正常に動作いたしました。ちょっと感動 HDDの物理障害でしたが4万円で復旧できました。 それでは製作を再開いたします
おー、実は話半分に聞いてたんだけど、サルベージって本当に成功するんだね。
祝☆親父PGタソHDDサルベージュ成功! おにぎりワッショイ!! \\ おにぎりワッショイ!! // + + \\ おにぎりワッショイ!!/+ + . + /■\ /■\ /■\ + ( ´∀`∩(´∀`∩)( ´ー`) + (( (つ ノ(つ 丿(つ つ )) + ヽ ( ノ ( ヽノ ) ) ) (_)し' し(_) (_)_) バンガレー
363 :
親父PG :04/06/16 17:29 ID:UJduKH1D
さてぼちぼちどっかに上げたいですなぁ。 ってまだまとまってないけどorz...
おおう、もう形になってるんですか。 実を言うといまいち概要を掴みかねてるから、実際に動くものを見てみたいなあ。
365 :
親父PG :04/06/22 20:59 ID:CADman1B
うん^^ といっても今は リソースツール> 環境+ウィンド という程度ですけどね。
366 :
名前は開発中のものです。 :04/06/30 18:49 ID:SwcLf7ai
おおぅい 何か進展はないのかぁい? 期待age!
目標の半年までの半分が経過したということで とりあえず現在の物をアップしてみては?
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
うを! 情報有難う ちょっと調べてみます
せめて開発中のスクリーンショットだけでも見たい。
頑張れおじん。
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円ぐらいで買ったものです。
親父逃亡
もう許してやれや。
これだけ実力のある人でも、構想が大きすぎると完成しないもんなんだなぁ。 いわんや自分ごときでは。戒めねば…。
実力あったらこんな中途半端にはならんだろ… 構想も最近よく見かけるMMO厨にくらべたら 十分完成できる内容だと思うけど。
結局ダメだったのか…
まあ、よくあることで、とやかく言うことでもない。 月単位や年単位でモチベーションが持続する人のほうが少数派なんだよ。 絵1枚とか音楽1曲とかなら、ゴールまでノンストップで駆け抜けることもできるけどな。 ゲームや長編小説だと、制作中に必ずスランプ期が来る。それも1度や2度でなく。 常人が中規模以上のゲームを完成させたきゃ仕事としてやれってこった。 気が乗らないときでも強制的にケツ叩かれて作業を進めさせられるからな。 給料も出るし。(たぶん)
このスレの場合、最初にこのすすめかただと モチベーション維持できない、時間がかかりすぎて結果が出ないと みんなに指摘されていたのに大丈夫、大丈夫といいつつすすめてきたというところが つっこみどころ満載で面白いところだ
と、外野の企画厨が申しております。
わざわざサルベージまでしてその後何もせずに終了ですか… あそこが良いやめ時だったと思うけど。
と、外野のシナリオ厨が申しております。
こいつレス早いな。
だって引きこもりだもの ミツヲ
新人PGももう見てないのか? お別れの挨拶くらいしてもいいよ 社会人なんだから
逃がしてやろうよ。ね。 ミツヲ
391 :
親父PG :04/08/25 15:19 ID:fmTb/M4o
すまん^^ ちょっとリアルが忙しくて もう少しで再開しますorz..
それを1ヶ月前に書き込んでもバチは当たらなかったと思うが
チミらにいちいち報告しなきゃならない義理が発生するような 借りは何もなかったと思うのであります。
スレ立てたからにはあるだろ…
新人PGと協力していたから報告は上げる必要がある気はするが、 逃げたからどうでもよくなったな
逃げたというかあまりのダメさにあきれたのでは? この調子じゃライブラリだけでも完成するまでに数年かかりそう。
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)戦闘 後、なんかあるんでしたっけ?
本人? >萎え(´Д`; それを承知ではじめたのに、いまさらその発言は無いだろ。
>>398 エンディング、オープニング、スタッフロールw
なんだなんだ、内部確執によるプロジェクト崩壊現場はここでつか?
つーか、webサイト立ち上げていたり具体的に動いているところは 新人PGのほうばかりだな まぁ、同情はする
この際独立しちゃえば?
と言ってて思ったんだが、親父PGさんは一体どんなゲームを目指してたんだ? 以前、Windowsみたいなフレームワーク?の画像は公開されてたけど。
>>397 おまえ偽モンじゃねーの? トリップでも付ければ?
なんで突然こんなにレベルアップしてるんだよ。
本物の新人PGはこんなまともなこと言わなかったぞ。
まるでゲームを1本作ったことがあるかのような発言じゃないか。
つか、本人なら独立した方が良いと思われ。
このレベルの人間がコード書くなら手伝ってもいいかもと思われなくもない。
本物ですので、一応。
>>399 まあね
>>400 リストアップしておきます
>>401 親父さんには復活して欲しいんですけどね(本心)
>>402 ども
>>403 その気は無きにしも非ずだが、続けれるかどうかで迷っている。
>>406 親父さん主体で進めているので、極力邪魔はしないようにしています。
自分はマネージャータイプじゃないんで、誰か牽引してくれる人が欲しいんだけど。
ちなみにゲームは作った事ありませんので、悪しからず。
んで、提案の続き。 ●ゲームの全般的な構想 フィールド+戦闘のみ存在する、単純な2D俯瞰タイプのRPG。 フィールドのイベント、戦闘のイベントをテキストで書く事で動作する。 アートワークは現段階で一切考えない。音楽も然り。 とりあえず、この構想を実現できるバージョンを0.1とする。 レビジョンは完成品ができるまでに、提案としてまとめて、0.1完成後に実装に移る。 上記でどうよ?
フィールドのイベント、戦闘のイベントについての詳細が無かったので追記。 ●フィールドのイベント ・テキスト出力(こいつは議論する必要があるな) ・PC、NPCの制御:移動させる、向きを変える(3D化したい場合に影響あるかな?) ・戦闘イベントへの遷移(当然全滅したかどうかの判定システムが必要だな・・・) ・画像の出力:Ver0.1の段階ではアニメーションは実装しない ●戦闘システム ・ゲームの核の問題でもあるし、キャラクターデータの検討が先なのでとりあえずはダミーを用意。 ・ダミーはDQ方式で実装するか・・・? よって、現段階で必要な仕様は ・フィールドのマップ(オーソドックスなマップチップで良いよね?) ・PC,NPC,etcのスプライト仕様 ・コマンドやテキスト出力の為の、ウィンドウシステム(これは柔軟にしたい) ・トリガー条件:会話、接触、etc ・キャラクターデータ仕様(仮段階で良いと思う。とりあえずどのスプライトを表示させるかぐらいは必要か) ・ガイドライン(ロードマップ)作成:このまま親父の作りたかった物へシフトする様に。 広報するのでage
やっぱり新人PGをベースの方がいいんじゃねーの?w
これならDirectXはいらないのでは? それだけでだいぶ楽になると思う。 自作ライブラリもこの段階では不要。 ゲームが完成してからライブラリとしてまとめれば良い。
DirectXとかは最終的な表現手段にすぎないのだから ここを自由に差し替えられるインターフェース用意するとか それくらいの自由度がないともはやうまみはないとおもわれ 具体的にはたとえばJavaや.NETのようなレベルの高級言語前提なら インターフェースベースのプラグイン開発できる感じ RPGとしての機能と実装を切り離すのだ
>>410 いや、責任取れないから
>>411 個人的にはOpenGLがいいんだけど。
つかDXはインターフェイス仕様変わり過ぎだから。
もちろんライブラリなんて、現段階毛の先ほども考えておりません。
>>412 統合開発環境作るわけじゃないんで、差し替えは不要かと。
プラグインで組み込めるかどうかは今のところは不定。ある意味、スクリプトそのものか。
ちなみに、対象OSはWindows98SE以降 開発OSはWindows2000です。
クロスプラットフォームとか全然考えていないのでよろしく。
OpenGLが好きならなおさらDirectXべったりやめた方がいい希ガス
415 :
名前は開発中のものです。 :04/08/30 13:01 ID:mguL3Q17
オヤヂィ~~~~~~~~~~~イ!!!!!
まだ何もできてないのかよ
>新人 まとめページの方はまだあのまま保全? 久しぶりに見たけど、 > 10:参加したいのであれば年齢は問いませんが、姿勢は問いますよ。 ワロタ >408-409 本職からの助言として、まず、ver 0.1 の外部仕様として以下を定めることを薦める。 ・フィールドマップの数(外・城・町・ダンジョンくらい?) ・各フィールドにいるNPCの数と種類 ・敵の種類(外・ダンジョンで書く種類と、ボスくらい?) ・フィールド上のエンカウントマップ(種類と数だけでも良いか。森・山・平地・ダンジョン近辺・町近辺くらい?) ・スクリプト一覧(NPC全員分と、ボス、マップ間の移動くらい?) で、疑似スクリプトを先に書けば、とりあえず先が見えるようになるのでは? 戦闘は、ターン制で最低限のものでいいと思うよ。 「戦う」コマンドだけでいいと思う。フルオートでも、一発解決でもいいくらいだが、戦闘中イベントを入れたいみたいだから、ターン制は維持かな。 あと、パーティーは後回しでいいと思う。 この辺を決めて、そこから ver 0.1 に反映する内部仕様を導くのが妥当だろう。 YAGNI
↑ワロタ
なんだこのスレ
>>414 そこは後ほど考えます。
>>417 >まとめページの方はまだあのまま保全?
そのまま保全。このまま親父さんが戻らなかったら書き換えますけど。
>本職からの助言として、まず、ver 0.1 の外部仕様として以下を定めることを薦める。
>・フィールドマップの数(外・城・町・ダンジョンくらい?)
>・各フィールドにいるNPCの数と種類
>・敵の種類(外・ダンジョンで書く種類と、ボスくらい?)
>・フィールド上のエンカウントマップ(種類と数だけでも良いか。森・山・平地・ダンジョン近辺・町近辺くらい?)
>・スクリプト一覧(NPC全員分と、ボス、マップ間の移動くらい?)
どんなゲーム作るか分ってないから敵の種類とかは決定できないんすわ。
数や種類に制限は付けない方向で行こうと思ってるんですけど。(ダメ?)
>で、疑似スクリプトを先に書けば、とりあえず先が見えるようになるのでは?
擬似スクリプトはXMLでそのまま記述できるようにする構想です。
>あと、パーティーは後回しでいいと思う。
そうかも
データ構造(案)をアップ
ttp://www.geocities.jp/oyajipg/topic007.html 試しにMSXML4.0を弄っている時に、ふと気が付いた。MSXML4.0のインストールを
ゲームのインストール条件には出来ないなぁ。XMLSchemaの検証が使えないジャン。(ダメダメ)
アプリケーション側で、チェックロジック組むか・・・。
今回のStage要素の構想が済めば、トリガー仕様はひとまず完成かな?
一番の山場はEvent要素の設計だと思うが。
フラグ管理構想を思案中。 キャラクターやら、そういうオブジェクトが状態コードとしてフラグを管理できないかな? セーブ時も、オブジェクトそのものをシリアライズして、ロード時復活(゚Д゚)ウマー それとも、フラグはどっかに一元管理するもんなのかな? 一元管理するとデータ構造迷うし、オブジェクトごとに持たせるとスパゲティになる希ガス。 ここなへん定石ってないのかね?
xmlって最近いろんなところで見る。。。 勉強しなきゃならないのか。 ところでアドレスが/oyajipg/になってるyo。 一人二役するなら気をつけないと。。。まだ 疑惑の段階だから破綻はしてないけど、怪しいな。
>>423 アドレスは敢えてoyajipgにしているんだけどなー。
当然 新人PG≠親父さん なので。
XMLスキーマはまぁなくてもいいだろ ツールのほうでいろいろと整合性をとる・・・って感じじゃなかったっけ? なんとでもなるさ
スクリプト>XML データ>独自形式 ってどうよ
初代ドラクエのような物を作ってるの? いまいち見えてこないよ!
そして初代ドラクエすらできあがってない
>>425 定義する意味で必要。ツールとか作るときに汎用性欲しいじゃんw
>>426 独自形式はかえってめんどくさい・・・。
>>427 僕も見えてこない。
今のイメージなんですけど、これ(かなり落書き)
ttp://www.geocities.jp/oyajipg/up/memo01.jpg ひとつのゲームを1つの舞台に置き換えて、データ設計を練っています。
ひとつのステージには色々な配役(背景や音楽も含めて)がいて、その配役が舞台で色々振舞います。
脚本はどこに記述してあるかと言うと、全てEventとして記述されています。
今の目的はソーサリアンタイプのゲームを作る事です。
しかし、最終的にそれ以上のものを作る為に、汎用性、冗長性を持たせて作っていますので分りにくいかもしれません。
なんか、動くもの作らないと信用されないっぽいので、適当に雛形まで作ってみんとす。 今まで貯めていたGlutのコードをMFCに移植、テクスチャが貼られない・・・。 なんか作法があるみたいだな。ちょっと鬱。
というか、いまさらMFCってのはやめた方がいい気がするけどどうだろう。 絶対に(いろんな意味で使いづらくて)躓く。
というかゲームにMFCは、テストコードにすら後々不便なような
市販されているゲームは殆どMFCでは?
API直書きじゃないの?
市販のゲームはほとんどMFC使ってないだろ。 逆に使ってるのあったら教えて欲しい。
コモンコントロール使用か…市販品でそれは萎えるな シミュレーションならありなのかね はて、初代シムシティですらどうだったかな
初代はさすがにすべて自前描画かと
つーか初代シムシティって何版よ
音関連でDirectXが必要になるのかな。 DirectSoundでWAVを重ねたり出来るんだよね。
なにを当たり前のことを DirectX使わなくてもできないことはないが
初代ドラクエならサクッと作れるのでは?
そのさくっと作れるものすらできてない>ここ まぁ、新人PGは何とかがんばろうとしているのが分かるが、 時間取れていたときから親父PGの方向性はまったくわからん
まとめると、 1)ソーサリアンタイプのアクションゲーム 2)3Dを何かに使う。 3)スクリプトは中間言語に落とす アクションゲームを作った事のない私なら、この順番でやるかな。 プレイヤーキャラクタの移動 ↓ マップ描画 ↓ マップ内をプレイヤーのキャラクタが自由に動けまわるようにする ↓ 敵キャラクタをマップ内で移動させる ↓ 戦闘関連 ↓ スクリプトで拡張できるようにする
446 :
名前は開発中のものです。 :04/10/17 10:25:34 ID:yYhKMqEo
定期挙げ
親父、妻子を残して蒸発。 予想通りの結末。
>>445 なんだその大雑把な計画はw
お前、ゲームの作り方全然わかってないだろw
>391 >もう少しで再開しますorz.. =>2ヶ月経過.... 今年中に再開(再会?)できる? >363 >さてぼちぼちどっかに上げたいですなぁ フレーム以外に何か表示できるの?
今からでも遅くないから、 簡単な表示..... 例えば、DIBでのスクロール表示などをつくってから DirectXへ直せばいいと思う。 それとも、プログラム作成依頼スレに依頼する?
それマップチップだけじゃないか
親父がやろうとしていたのはどうもWindowシステムとかそっち方面らしい
でもゲームとしてそのシステムが必要かといわれると弱いから
マップチップだけでも動いてる
>>452 のほうが上
どちらにしろ動いてる画面を定期的にあげれなかったのがだめすぎ
独自Windowシステム作るにしてもさっさとSwingとか身近なもので
参考にして実装していけばよかったものを
あー、じゃゲームそのものを作るわけじゃないんだ。 そういうのは似たようなゲームを何個も作ってから考えるんじゃないの?
>>454 それが、プログラミングスキルはあるが
ゲームを作ったことが無い人が陥る罠だ
>452,455 なんとかツクールっぽいのはしかたがないけど 作成した言語は何かな? JavaやVBなら比較的簡単だからねェ。
言語はインタプリタでも高速に動く時代だし 自分が知ってる言語でさっさと作れていれば問題ないぞ 親父がこだわってツールの言語とかにも融通をきかせれない結果分解したともとれる 過程も大事だが、その過程もなくサイト開いたり具体的にあらわしていたのは 新人のほうだけ まぁ新人南無というスレだ
>458 まあ、親父氏はDirectXの情報がほしかった、っぽいけどね! しかし、フレーム表示だけでもupしただけマシとみるべきだ (みたかぎりでは、VCで作ったフレームにはみえなかったけど)
>458 >自分が知ってる言語でさっさと作れていれば問題ないぞ いや、いまさらMS-DOSモードでつくられても、、、
>>458 俺はこういう流れだと思う
プロジェクトに人をいれる
入れた人間が独断専行し始める
意図していた方向に進まなくなる
やる気がなくなる
良くある話
最後はおきまりのハードディスククラッシュでとんずらですか
まともな考えの持ち主ならバックアップ取ってるはずなんだがな
>>464 ここの人じゃないが、最近HDDクラッシュで自分のデータほとんど失ったぞ
1ヶ月前バックアップしたMOも壊れてたorz
ソースを定期的にアップロードしておけば良かったのに。
>>467 がんばれ
ちみがこのスレ再利用してくれ
HDDを複数つないで、しょっちゅうコピーしてないの?
行き詰まったから、ハイドライドタイプのアクションRPGを作ろうとしたけど、 そっちの方が難しかった。 階段上り下り中は衝突判定が無くなるのかな。 でないと、頭がぶつかって上れない
ハイドライドは見下ろし型だろ
ガンガン攻撃しまくってしばらく遊んでたよ。 かなりいい出来だな。 ちょっと考慮して欲しいんだが、 敵も自キャラもダメージ受けたら引いた方が良くないか?
USBメモリにバックアップ取れよ
やってくれた人いたー!
http://gamdev.org/up/img/1818.lzh ダメージひかれます。
一度の攻撃で死んだ場合はバーを点滅させるか、少しずつ減らすか
した方が良さそうですが、後回しです。
簡単なBGMあり。
ジャンプ時と着地時に効果音あり。
鍵をとって扉に入れます。
単純なアルゴリズムのボスキャラあり。
時間も経るし、スコアも入ります。
がんばれ
>>475 Debian+wine20040716で動作しました。
なんか悪魔城ドラキュラ思い出すね。
面白い! まだマップ管理系のシステムを練ってるところなんだとは思うけど、 もっと広大なエリアを歩き回ってみたい。がんがれ!
悪魔城よりも先にYsIIIを思い出した。
480 :
475 :04/11/11 04:12:59 ID:sPBtL0QG
>>478 現段階で広大なマップも作成かのうですよ。
16x11で割り切れる長方形にすればOK。
あとは、
動く床(ブロック)
ナイフを飛ばす
背景アニメーション
マップを書き換えても遊べるね
スピード上げると階段が上れなくなるね
プレイ中にマップ書き換えたらゲームオーバーになるのか……
485 :
481 :04/11/18 23:59:31 ID:Y1BiVZsl
>>483 それはなんとかなりますが。
>>484 そんな事できますか?
わたしは面白くないと思うのですが、
このまま完成度を高めたら面白くなりますか?
それとも作った本人には楽しめないのでしょうか?
ライブラリやクローンに逃げる理由はこのへんにあるのでしょうか?
486 :
484 :04/11/19 14:36:47 ID:VR4yU6Z1
今やってみたらマップ書き換えてもゲームオーバーにならなかった。 なんか勘違いしてたみたい。ごめんよ。 > わたしは面白くないと思うのですが 多分、細かいところで面白さが欠けてるんだよ。 ジャンプの挙動が単調だとか、敵はボス以外移動してるだけで攻撃してこないとか。 既存のアクションゲームをもっと注意して見てみるとどこが違うのかよくわかるよ。 俺はメタルスラッグってゲームが好きなんだけど、 ・敵が単純ながら攻撃してくる ・一番単純な放物線だがちゃんとジャンプする ・マップに凹凸があるけど大きな段差以外はそのまま歩いて進めるし、 歩く速度も速いので普通に歩き回ってるだけでもフラストレーションにならない みたいないい部分がある。 まず、どういった状態にしたいか、理想を考えてみて、 次に今のプログラムの状態と見比べてみる。 それで改善が困難だと思ったら作り直してみてもいいんでないかな。 重複する作業も少なくはないと思うから、二度目はそんなに手間かからんと思うよ。
親父より期待できるな
>>486 メタルスラッグはゲーセンでやった事あります。
では、次は敵魔術師を登場させてファイヤーボールを発射させてみます。
体力バーと文字がイースのに似てる
がんがれ
そう言えば、攻撃時は41x40や42x40でもいいですよ。 一連のコマ(攻撃時の3パターン)を全部同じ大きさにする事と、 キャラの位置を同じにしてくれれば問題ありません。 このコマを3フレーム、次のコマを5フレーム表示して欲しい と言うのがあったら言って下さい。
マップチップはちょっと待って下さい。 まだ細かい所を考えていません。 案としては、 足元を隠せば、階段を上り下りするアニメーションがいらなくなるかもしれない。 段は背景のマップチップと合成する。 の二つです。 両方採用すると良いかな。 Stage1.mapでドアの位置は指定していますが、ドアはマップチップではなくて 背景に描画するキャラクタとして存在します。 これなら背景はマップチップに依存しなくなるので、多彩な背景を描画できそうです。 あと、急がなくてもいいです。 私やゲームの為ではなくて、何よりも自分の為に描いて下さい。
496 :
FAINALFACTs ◆Vyfxi/dpqw :04/11/27 13:41:46 ID:HU8qFqJW
>>494 (JR1fHEKIGE)
パソコンが、動かなくなりました。
水曜~10日ぐらいで復活できると思います。
ネットカフェで、スキャナが使えればその間でもUpしにきます。
はっきり言って、完成させようと思ったらものすご~く大変なので、 完成しないものと思った方が良さそう。 だから、そこまでやらなくてもよいと思うのですけど。 プレイヤーのドット絵は、半身と下半身を分離すればよかったかも。 ジャンプとしゃがみを同じにして。 上半身は (歩き、攻撃)*左右 下半身は (歩き、階段上り下り、しゃがみ=ジャンプ)*左右
どうせそこまでやるなら上半身と下半身をクラスで分けちゃえば。
(・∀・)?
504 :
FAINALFACTs ◆WcOabcjNAM :04/12/06 14:13:57 ID:0//szTZE
>>502 もう少ししたら、パソコンが復旧できるらしいです。
予定では、木曜日までに復旧です。キャラ絵はそのときにUpします。
キャラの方は、しゃがむ必要があるなら、必要におおじて書きますよ。
三頭身(今の等身)でも十分できると思います。(半分とまではいかなくても)
キャップが違いますが、木曜にはちゃんとしたのが使えると思います。 ・・。アハハハハ
506 :
名前は開発中のものです。 :04/12/06 15:22:31 ID:hC0ocwBs
ではお願いします。 上半身と下半身に分けるのは、 プログラムが出来てから考えます。 階段をやめて、梯-子にするとかなり楽そうですけど、 階段で頑張ります。
親父PG 結局とんずらかよ ハードディスククラッシュて ド素人じゃねぇか
適当に使っていいよ、このスレ スレッド名に自分の名前いれてトンズラってどうしようもないからな
終了荒らしもアレができなくなったから段々手が混んできたね。
終了荒らしってなんだ?
この板の過去スレいくつか読んでいればすぐわかるよ
513 :
507 :04/12/16 05:33:25 ID:zuxWYHp5
飽きたので辞めます。 絵を描いてくれた人、ごめんなさい!
>507 この根性なし!
同じトリップ出したら信じてやる。
このスレ使われてないなら俺が勉強しながら何か作ってもいい?
許す
518 :
516 :05/01/24 00:00:03 ID:4d7vmFMm
3Dをやった事が無いのと、Cは少しできますがC++がわからないので ここら辺を勉強しながらやってみようと思います。 題材はSLGでいこうかと。 とりあえずホムペ作ってきます
言語は手段であって目的ではないっ といいたいが、言語の勉強ならべつにかまわんか まずはアクションやシューティング、パズルなど結果がすぐに目に見えるもののほうがいいと思う 他の人にも遊んでもらいやすいしね
520 :
516 :05/01/24 23:51:19 ID:4d7vmFMm
一番簡単なのは実はシューティング ものにもよるが、主に縦だと細かい地形判定とか必要ないし 絵を表示できてキーボードからの入力ができればもうすぐだね 低コストで開発できるからこそいまだに細々とアーケードででたり 仕事のあいまに作る同人やフリーソフトでは2DSTGはわりとシェアがあるかと 仕事でやるならそれなり二時間掛けるからジャンルはなんでもいいのだろうけどね 逆にプログラムは容易でも開発が最後までいかないのがRPG
522 :
516 :05/01/26 03:03:17 ID:KA1rKiUq
シューティングはグラフィックを用意しやすいというのもある。
>>522 別におかしいとは思わんが・・・
この調子だと516がシューティング作るのもそう遠くはないな。
>>522 いきなり音なってる。
ホムペもよくできてるし。
すごいなあ。
エロゲとか作ったことあるんですか?
526 :
516 :05/01/27 01:30:57 ID:dvRkyvO3
動作がおかしいと言ったのは希に例外が出たりでうまく終了しなかったりするので 素材があるならシューティング作るのはかまわないんですけど あんまり見かけないですね 前回のは絵も音もフリー素材ですし コードも以前作った物から適当に切り貼りして辻褄合うように書き換えた だけなのであんまり手間はかかってないのですよ 明日も早いので今日は何も無しです 今後は早起きして作業する方向にします
ゲーム作った経験があるなら、 シューティングにこだわる必要はないかもしれないですね。 早起きとか大変そうですけど、がんばってください。
言語何か知らないけど、無効なポインタにはちゃんとNULL代入している?
529 :
516 :05/01/29 02:38:11 ID:VHgFIMGL
昼休みにUSBのコントローラ買って帰って来たのですが
シューティングじゃなくてもいいっぽい流れになってるのですね・・・
応援してくれる方もいるみたいでもうちょっとがんばろうかと思ったり?
言語はCですVC6使ってます
新しいDirectX SDKが対応しなくなったみたいなので
そろそろ買い替えが必要そう
~おかしい話ですが
>>528 の問題はビルド時の構成でメモリ状態の違いがあり
Releaseビルドした時に問題が出るってやつですかね?
ポインタも含めて初期化はしてますが
その他色々の所が激しくいい加減なのでモニョ
気にかけてくれてる人もいるみたいなのでこんな感じですってやつを↓に
エラーが出るパターンはDLL内部で起きていてインターフェイスの破棄忘れとかがあるのかも?
アプリが固まる流れはCoUninitialize でブロック↓
COM解放待ちのスレッドを WaitObject INFINITE で待ってる間イベントループもブロック↓
結果固まってるように見える
こんな感じです
ネタなので無かった事にしてさらっと流そうかと
とりあえず、また何か作ってみます
楽しみにしとります。
ソース出してみれ。 ちゃんと全部読んでやるから。
マルチスレッドとかインターフェースとか使わない方が堅実に作れますよ。
533 :
516 :05/01/31 23:03:18 ID:0EeOdMck
帰ってきました 中学生も寝ない時間に寝ますのでレスだけ 今は縦シューティングっぽい何かを作ってます せっかくコントローラを買ってきたので対応しました 素人以下の絵が全力でやる気を削ぐ脱力風味です リリースまでしばらくお待ちを 不具合ですが悪い所の見当もついてますしそのうち直します マルチスレッドでのコーディングは好みの問題ですが OggVorbisのデコードに結構時間かかりますし アーカイバからデータ展開するのにも時間かかるので妥当だと思いますよ ではまた
534 :
516 :05/02/03 01:19:49 ID:yiICYg0t
535 :
516 :05/02/03 01:21:05 ID:yiICYg0t
orz
動いた動いた。敵も倒せた。 俺のマシンが二世代ぐらい前(ThinkPad X20)だからかもしれんが、 開始時の中央位置から画面左端に移動するまで最高速で三分ぐらいかかるな……
おお、いいね。既にMSX時代よりいいね。 キーボードだと弾を撃ちながら、斜め移動できないのがちと気になるかな (同時押し最大数云々のハード的な問題じゃなくて)。パッドだと問題なかったっす。 まぁ、軽く作ってみただけだろうし。 一瞬「当たり判定が小さくて俺好み!」とか思ってしまった。
>>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直挿しでその状態でしたら、かなり悩ましいです
キーボードはバッファリングして
いらないデータを捨てる方向のがいいような気がしてきました
ここは勉強になるインターネッツですね
長文失礼
> キーボードはバッファリングして > いらないデータを捨てる方向のがいいような気がしてきました 使用しないキーを捨てるって意味? それとも、多すぎたキーを捨てるって意味?
キーボードで操作 そんなことが可能なのか・・・ あれはハードの問題だと思ってました。
544 :
538 :05/02/04 18:53:57 ID:mXaHlELa
>>541 それがPS/2なんですよ。いやでもうちだけかも知れないし、お気になさらずに。完成目指して下さいな。
些末に煩わされ始めるとモチベーション落ちますしね。
一応うちのをDirectInput、GetKeyState辺りでテストしてみましたが、拾えてるみたいです。
言語は何使ってんだ?
546 :
516 :05/02/07 21:57:07 ID:FJrYKXbd
土日も仕事だったので全く進んでないですが生存報告
軸の設定はやりましたけど買ってきた物は8%位ずれてました
>>542 氏の意図がわかりませんが両方です
バッファリングしてサマリしたら操作感がどう変わるかみたかっただけですよ
>>544 氏わざわざ検証までしてもらったみたいでありがとう
頭の片隅に残しておきながら何か思いつくまで無かった事にします
>>545 Cです
シューティングは次くらいで終わりにしようと思います
何のゲームでもいいけど、最低限の実装でいいから完成させるくらいじゃないとみにつかんぞー
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
なにこの良スレ
懐かしいな、このスレ まただれか活用してくれ
良スレ発見
何を評価して欲しいんだかわからんす。普通に動くよ。
559 :
557 :2005/10/12(水) 00:19:26 ID:znuWtBEm
問題無く動いたらそれで良いです。 次はマップエディタ作って、敵を配置して 当たり判定付けます。
今ごろ、親父PGはどこで何をしているのだろう。
キーバッファがどうのこうのいうのが最後の書き込み? XPでキー同時押しで本体Beepがピーピーいうのは 最近初めて知りマスタ。たぶんこれの解消をしようとしてそれっきりに? とにかくなんでもあるからね・・・ライブラリならSDL、DXライブラリ、 他のスレではシューティングツクール、スクリプトなら豆乳、 アドベンチャーなら吉里吉里、簡易言語ならHSP、AB・・・ おやじさまが作りそうなものはすべて揃ってる。 もし一番欲しいものをと聞かれたら3DMMO RPGツクールだろうか。
スレ主は凄い知識もってるみたいだけど、結局2004年9月で まとめページの更新終了されてる。 やはりゲーム作りに必要なのは躓いても 投げ出さない根気なんだな…今の俺に作り始める 資格はあるのだろうか。
569 :
名前は開発中のものです。 :2006/09/22(金) 21:21:48 ID:iYNT4fJm
親父戻ってこいよ!!
親父さま、結局動くものは一つもup無しでしたっけ?
571 :
名前は開発中のものです。 :2006/10/10(火) 21:34:59 ID:Wu1hOgHH
warota
今は もう 動かない~
今は もう 秋た…
フォッシュフォッシュ
良スレ!っと思ったら、もうだめぽ… という訳でこのスレでの議論内容は、僕が有効利用させて頂きます。 この出会いに感謝。 あ~、素人が一人でゲーム作るなんて大変だ~… まず十年はみとかないとね。 なんせ、技術的な事から調べないといけないからな~… まったくもって一人ALL開発はマゾゲーだぜ。
576 :
名前は開発中のものです。 :2007/01/25(木) 17:23:07 ID:hJSWH9Vy
晒しage
がんが
参考にしようとした本のリスト (1)図解TURBO Cプログラミング入門、湯田幸八(一応全部読んだ) (2)14歳からはじめるC言語わくわくゲームプログラミング教室(約8割) (3)14歳からはじめるC++わくわくゲームプログラミング教室(約8割) (4)図解・標準最新C++ハンドブック、杉浦賢(約7割) (5)15歳からはじめるDirectX9 3Dゲームプログラミング教室C++編(DirectXに入る前の最初の数章だけ目を通したが、挫折。) (6)Windowsゲームプログラミング、赤坂玲音(挫折。ソースリストは飛ばし、文章のところだけ流し読みした。) やる気が続くかどうか微妙なところ
579 :
名前は開発中のものです。 :2008/02/08(金) 06:44:51 ID:fpTK7+RB
晒しあげ
from
>>578 なぜか上がってる・・・orz
ある2つのスレからの誘導を繰り返してココに来た。
誘導されたからその通りに・・・ってワケでもないけど、
単独専用スレを作ってもやり遂げる可能性は薄いので、
とりあえずココでやってみよ~! ・・・と思った。
よし、親父点呼だ! とりあえずPG35歳定年説に基づいて35歳以上は親父かな… 誰も居なかったらPG30歳定年説に基づいt(ry
from
>>580 あれ?さっきは誰もいなかったのに・・・、行き違いのようです。
その分類だと親父・・・です。w
当分の間は本での勉強を続け、実際に組めるかどうかはその次の段階なのでまだまだ。
本(14歳からのC++)読みながらのコピペで最低限のシューティングは試したけど・・・。
本に付いていけなくなったらそれでオシマイかも。
583 :
581 :2008/02/10(日) 01:01:22 ID:+QCpJ19j
2人だけかなw じゃ30歳定年説にもとづいて再点呼。あとage
24はダメ?
俺も ノシ いちお現役PG上がりSEだが、 趣味でやる&作りたい物が出来るなら ツクールとかでも良いんじゃなかろか 巷の素材も豊富だしw
ノシ
>>585 PGだったらそのツクールを作るとこから始めないとな。
プログラミングが趣味なら、なおさらのこと。
PGなんざ仕事だけで十分なんだよ・・・
from
>>582 個人的にはこのスレは、親父に関係なく誰でも参加OKだと思ってます。w
趣味だけどツクールで3Dオンライン対戦サッカーゲームwを作るのは不可能そうなので、
無謀とは思ったがプログラムに挑戦。
目標が高すぎるので早くも挫折しそうだけど、挫折するにしても自分でやれる所までは挑戦して、
もうこの先未練の無いようにしたいと思ってる。
このスレ懐かしいな あの時の住人はいないだろうが久しぶり!と言っておこう
このスレ今日はじめてしった 37歳同人プログラマ
591 :
名前は開発中のものです。 :2008/02/11(月) 07:03:08 ID:yTlwlA03
オッサン共晒しあげ
from
>>588 未練の無いようにと書いたのは、今思うと我ながら大げさだった。w
軽い気持ちでやっていきます。
今は、「14歳から・・・C++・・・」(>578)を参考に基準のプログラムを組み、
それを改造していく方法を考えていますが、複数のキャラに異なる動きを実装する部分の
理解が不十分なので、ソースにコメントを追加しながらもう一度読んだが、どうも分からない。
やはり、フローチャートが無ければ理解するのは難しいと感じました。
ネットで色々調べてみた結果、
>>592 完璧に理解して動かそう、ってのは
なかなか難しいもんですな
何がしたいか考えて、試して、違う部分を推測するって
やり方もあり
from
>>592 やる気が続いてもう少し頑張れれば、その方法が出来そうな感じもするのですが、
自分はまだ本のソースに理解力が追いつけていないと言うのが実情です。(基本的にまだコピペレベル)・・・orz
でも、今度の土日にもう一度頑張って理解できれば、次からはたぶんそのような感じのやり方になると思います。
で、ネットで色々調べてみたら今はUMLとかいう手法がある事が分かったけど、
かなり効率が悪そうな印象がしたので別の手法(本)で頭の中を整理してみる事にしたw
from
>>594 何故断念しないのか自分でも不思議になってきたw
まだ本当に自分で組んだプログラムは一つも無いのに・・・。
C++でやろうとしたのが失敗の原因かもしれない。
しかし、C++から完全に逃れて目標に到達するのもおそらく無理な気がする。
ならば最初から挑戦したっていい。
それで挫折するなら、残りの時間を無駄にしなくて済むだろうし・・・。
「14歳・・・C++・・・」をもう一度だけ読んで、C++で組む場合の一例だけでも理解できればな~。
沢山のクラスが複雑に繋がっていて、それを追う内に頭が混乱してくる。
元々PGに向いてなかったか・・・。
クラスを羅列して線でつなぐだけでも何かが見えるかもしれない。
・・・と思い今読んでいるのが、
(7)憂鬱なプログラマのためのオブジェクト指向開発講座、Tucker!著、翔泳社(約4割読んだ)
これでもダメなら・・・、また別の方法を考えるけど・・・orz
誤った方向に進んでいるかもしれませんが、もう少し頑張ってみます。
クラスが何かもよく知らんヘボプログラマだが2Dゲームくらいなら作れてる。 C++とDXライブラリで。
> 沢山のクラスが複雑に繋がっていて、それを追う内に頭が混乱してくる。 ここがダメ。 あれは理解するものではない。 実際動かしてデバッガで止めて値を見ながら個々のクラスの挙動を確認するものだ。 それぞれがシッカリ動いていれば、全体がちゃんと動くはず。 全体がちゃんと動かないなら、関連するクラスを一つ一つ確認していく。 理解しなきゃヤダヤダなら、せいぜいC言語程度でとどめるべき。
クラスって言っても中身は自分で書くんだから順番違うわな とアプリ一つも作らずデザインパターンの本いきなり読んで 意味不明だった自分が言って見る
どんなに素晴らしい設計思想でも 自分が理解できないならゴミと同じ シングルタスクで順番に動くとこから覚えるべき
600 :
名前は開発中のものです。 :2008/02/15(金) 07:04:49 ID:0tGM7/Pn
日記ならブログでも作ってそこでやれ。 つーか三点リーダ多すぎ、メンヘラじじいかよ。
>583 ノ 30代前半。外資系IT企業の社内SEやってるけど、コンテンツPGへの転身を画策中。 現在、メタセコ&Blenderでモデリング、irrlichitでゲーム開発中。 まずは…まずは同人レベルで一本完成させないと話にならんのでorz
3Dが無理なら2Dから始めればいいじゃない
プログラムと立ち絵は描けるんだが音楽が出来ないんだよなぁ
from
>>595 まずは2Dゲームから挑戦しようと思ってます。
デバッグも意識します。
勉強段階なので簡単には進まないけど、頑張ります。
>>583 お、こんなスレがあったのか。ということでノ
30代後半に突入してしまった元ゲームPG。
今はまったり制御系PG。
ゲーム制作は趣味でやってる。
2DSTG制作中。弾撃って敵破壊するとこまではできた。
>弾撃って敵破壊するとこまではできた。 元ゲームPGならあっという間でしょうに、これだけ聞くとまるで初心者PG(w
>>606 絵も描いてるんだと思うが、多分違う
俺も元ゲームPGだがセガ○ターンじゃ意味ねぇ
608 :
605 :2008/02/16(土) 16:42:55 ID:KxvbMerX
>>606 ああ、うん。作業量の7割はライブラリ作成だよ。
あと2割はドット打ち。
今は音関係のライブラリやってる。
ゲーム本編はさすがに昔とった杵柄でいけるけど
WinAPIとDirectXで時間取られてる。
まぁライブラリなんぞ自作しなくたって
世に山ほどあるのはわかってるけどね。
>>608 ライブラリから作るからこそ趣味PGですよ。
>>609 だが下手するとライブラリ整備ばっかりやってるライブラリ厨になりかねん罠。
すいませんライブラリのバージョンは3.0になのに完成したゲームは0です。
ver1DirectDrawで作る
ver2:DirextGrapshics対応だけど2Dメイン。
ver3:ようやく3D対応。
そこでライブラリをフリー公開してくだされば、 俺達のようなへたれPGが潤います。
>>604 やっぱり自分でライブラリ作れないとこの先厳しいのかもしれないという気がしてきた。(でも無理w)
最近、もう少し難しい本でさらに勉強しようと思ったのですが、
よく見ると最初の章が「まずライブラリを作りましょう」となっていて
ここで完全につまずく(買う前に気づけよと言われそうですが・・・orz)
>595の「憂鬱なプログラマのためのオブジェクト指向開発講座」は
12章まで読んで区切りつけました。(大体7割読んだ。)
それで「14歳から~C++わくわく~」本をもう一度読み、
クラス図もどきを作成してみた。クラスのつながりの表現はパスした。
そこまで理解しきれないし、時間も無い。
とりあえず、世の中にはクラス図やシーケンス図のような手法があるんだな~と
知っただけでも良しとする。
複数のキャラに異なる動きを実装する部分のしくみについては
ぼんやりながらわかってきた気がする。
この先どうするかは未定。
fron
>>612 上の書き込みにfromを付け忘れていた。
とりあえず、次の目標はキャラを22個表示し、その内の1つだけ8方向移動させる。
一ヶ月位かかりそう。
今まで色々本読んで来てこの目標では恥ずかしい気もするが、そんな事言っても仕方ない。
>>613 というか、なぜ本をもう一度読むのか??
一度読んだならあとは辞書的に使えばいいじゃない。
そもそも何か作りたい最終目標があるなら、
そんな練習問題してないですぐにとりかかりなよ
過去にこのスレを再利用していた連中は最低限動く物レベルでも最初に示してたな。 ターゲットプラットフォームで作った事が無いのならば、とりあえずで良いから何か作る。 話はそれからだ。
親父臭もないひよっ子に仕切られても…w
617 :
名前は開発中のものです。 :2008/02/26(火) 19:16:19 ID:XYOy85Qt
じじい晒しあげ
私は何度も読み返しますが。
from
>>613 なかなか一度で理解出来なくて部分的に読み直したりしています。
途中で挫折している本がほとんどですが、
読んだ部分だけでも何かの役に立っていればいいや位の気持ちでいます。
最終目標は、3Dオンライン対戦サッカーゲーム(>588)・・・orz
>最低限動く物レベルでも最初に示してたな。
ttp://gamdev.org/up/ の11143にUpした。
実はサンプルソースの背景差し替えただけですが・・・。
最近忙しくなってきたので、一ヶ月以内で1キャラだけ8方向移動を実現する目標も
ちょっと怪しくなってきました。
from
>>619 でも、最初の目標はもちろん2Dからですので、3Dやオンラインは遠い遠い先の話です。
やる気が続けばですが・・・orz
>>620 です。(←以前の書き方に変更)
Upしてみたら、無人スレになってしまった。
Upしたのは画面の遷移(スタート、メイン、オーバー、クリア)で、メインの時に
赤いBOX出してたけど、BOXの部分はカットしたものです。
このスレへの参加は2月(>578~)だけど、実際には去年の8月ぐらいから勉強していて
未だにこの内容レベルでは、目標達成は難しいのかもしれないが、もう少しやってみるつもり。
今週は何もやれなかった。ちょっと時間的にしばらくは余裕が無い感じ。
それにアニメパターンを自分で書くのも壁の1つになっていて、
これは、フォトショップエレメント3.0(何かのおまけで付いていたソフト)で
なんとかしようと思っているが、これの使い方を覚えるのに結構時間が掛かりそう。
>>621 です。
ここが無人化してからやる気が出なくなっていましたが、最近気持ちが少し回復してきた様なので再開。
前にうp(←2ちゃん風w)したファイルは、なんとなく恥ずかしくなったのですぐに削除しました。
今回のは中身をほとんど忘れてしまってて苦労しましたが、8,6,2,4キーで移動出来るようになったので、うpしてみました。
ttp://gamdev.org/up/img/11295.zip この中のexeファイルでたぶん動くはず・・・。
アニメパターン自作は早々に諦めました。
フォトショップを覚えるのが困難なので、他のアニメパターン専用フリーツールを探した方が良いのかもしれない。
でもそれ以前に本やネットでまだまだ修行が必要な感じです。
>>622 ざっとソース見てみました。
FieldPlayerControl::move()でキャラ動かしてるけどこれはおかしい。
CharaDataを継承したFieldPlayerクラスを作ってその中でやらなきゃ。
CharaDataをstructからクラスにしてmove()ってメンバ関数持たせる。
FieldPlayerControl::move()はlist<CharaData>に登録されてる
オブジェクトのmove()を呼び出す。
って、するはずじゃない? そのためにlist使ってるわけでしょ。
このあたりは
ttp://www31.ocn.ne.jp/~yoshio2/vcmemo9-1.html がわかりやすいと思います。
>>622 です。
>>623 見てくれてどうもありがとうございます。
ソースは本のモノを改造しているのですが理解不十分な部分もまだまだ多いので、
改造しつつソースを見直していく中で色々覚えていきたいと思います。
ご紹介のサイトも難しそうな内容ですが、ゲームを題材にしてるので
かなり参考になりそうな感じで助かります。
これらをやりつつ、ウィンドウズプログラミングとDirectXにも再挑戦してみようかな~と
最近思い始め、やる気も戻ってきそうなのでまたしばらくの間は潜行wするかもしれません。
>>624 自分の場合、コンテストに出せるようになるには早くても10年くらい掛かりそうな予感がします・・・orz
>>625 です。
昨日の最後2行の
>ウィンドウズプログラミングとDirectXにも再挑戦
・・・の所は今振り返ると余計な話だったので聞き流してください。
何故か話に関係なくつい口に出てしまうようです。
と言っても本当に誰もいなさそうな感じ。
人いるよ!
>>626 です。
実はあれから全然進んでいない為に何も書き様が無く引っ込んでましたが、
人がいる???様なのでちょっとだけ出て来ました。w
途中何度か再開しようとしたけどバグが取れず断念。
でも、最低限、絵を画面に表示して動かせるのだから、何かは作れるはずという気持ちがあるのだろうか諦めきれずにズルズル状態です。
単に引っ込みがつかなくなってるだけなのかも?
ゲーム製作技術板らしくフェードアウトすればいいのに・・・orz、何故か出来ない(といいつつフェードアウトするかもしれないw)。
まぁ、一度頭の中を整理して出直そうかなぁーと今は思っており、>595(7)を参考に設計図を作って(クラス図もどきではなく)、
「プロトタイプはここまで作るぞ!」と決めてからプログラムを書いてみようと思います。開始は未定ですが・・・。
最初は書きながら進めていこうと思っていましたが、ちょっと日が過ぎてしまうと、いくらコメント文を残していても
忘れてしまうからというのが理由です。(もう親父だから3日くらいで忘れる)
あ!
>>623 のHPも参考にしまして、これは第7回で終わっている様子で、
文章だけしか読みませんでしたが(実は自分はWindowsプログラミングが解らないのですorz)、参考になりました。
弾の処理でlist使ってなさそうなので、実装のやり方はきっと色々あるのだろうなーというのが実感です。
>578(3)はたぶんC++の説明の為にあえてlist使ってたのかもしれません。
という事で何か進捗あれば戻りたいけど、出来なければフェードアウト・・・かも・・・? orz
DXライブラリ使えば? それとももう使ってる?
>>628 です。
DXライブラリでやってます。これが無いと自分は何も出来ないです・・・orz
DXライブラリ使ってるのなら後はごりごりやってくだけだと思うんだけどな。 かくいう俺もDXライブラリ使い始めてWindowsゲーム作れるようになった親父PG。 ゲームなんて極端な話、キー入力と画面表示のやり方さえ解ればなんとかなるもんだし。
632 :
名前は開発中のものです。 :2008/06/03(火) 02:05:09 ID:64WS04V1
見学者が通りますよ、あーげっつ!!
ルールなんて後で良いからまず動くものを作るべきだと思う。
>>633 です。
確かにそうだな~とも思います。
やっぱり独りでこもって作業すると無駄(?)な方向に考えが進んでいたとしても
それに自分で気が付かない事もあるけど、こういう場所でなら軌道修正が出来たりする。
という事で次は2,3ヶ月後でもいや6ヵ月~1年後になってもいいから、動くものをうpするようにします。
最終設計図は胸にしまっておいて求められればうpしますよw
ん~、俺も親父ヘタレPGだから解るんだけど、頭ん中でこねこねまとめてるよりも、 とりあえず作った方がいいのよね。初心者なら特に。 2~3ヶ月もかけてまともに動くものを作る、じゃなくて 2~3日で、まともじゃなくてもいいから動くものを作る。 サッカーなら例えば、画面上をボールが跳ね回るだけのプログラムでもいい。 それができたら、次はボタンを押したらボールが別の方向に跳ねるようにするとかして 動きを少しずつ増やしていく。 そうやって実際に動かしてみれば自分に出来る事と出来ない事が判ってくるし、モチベーションも上がる。 そしてある程度できるようになったら、設計とか考えればいい。
同意だ。大工でもない素人がいきなり一軒家作ろうたって無理。 まずは犬小屋とか机程度の小物から完成させるべきだ。
むしろまな板で
DirectXで作ろうとしているが、ライブラリ作成がなかなか終わらない
作る前にじっくり設計を練るべきだ。
DirectXの自作ライブラリについて語るスレあってもいいと思うんだ 物好き大石
>>635 です。
>>636-638 コピペ率を下げて自分でプログラム入力してみると、確かに色々見えてくるものがあるようです。
やる気が続き、自分でバグ取りが出来る限りはこの制作を続けようかな~と思っています。
>>640 自分はまだクラス図もどきしか出来ませんが、いずれは設計も視野に入れておこうと思います。
>>639-641 個人的にはこのスレで語ってOKだと思います。
ここは元々は「ライブラリから作り始めてゲームを作り始めるスレ」ですから・・・。
一応動くのが出来ましたので、うpしてみました。
ttp://www.dotup.org/ の1138番のファイルでパスはP003、ノートン解除しないと落とせないので、気になる場合は
見るのをやめた方がいいかもしれません。ゲーム板用UPロダには何故かうp出来ませんでした。
ファイル容量が大きすぎるのかもしれません。
内容的には、4月8日にうpしたのと変わらず、キャラが4方向に動くだけですが、
今はまだ必要ないと思う部分を削除して書いたものです。
スタート画面、その他の画面への遷移はなくして、あの時は大半がコピペだったので、
使われていない記述もありましたが、それらも全部削除しました。
>>642 です。
親父だからとこのスレに誘導されて約半年が過ぎた。
この板でゲーム作りの勉強を始めた頃から数えればほぼ1年。
その結果がキャラ1人の4方向移動だけ・・・orz
ここで色々レスしてもらっていながら申し訳ない話ですが、
ちょっと訳があり、スレを引っ越す事を考えています。
644 :
名前は開発中のものです。 :2008/08/10(日) 12:39:28 ID:SzbrqgAP
どこに引っ越すんですか?
>その結果がキャラ1人の4方向移動だけ・・・orz ここまでできれば、後はめきめきと伸びるはず。
>>643 です。
引っ越しを考えたのは、自分はライブラリから作れる程のレベルにはなれないし、
このままの超スローペースでしかも入門レベル的な制作報告ではスレ違いになるかもしれないと思ったから・・・。
でも、色々レスしてもらって続けてこれた経緯もあるので、ここに出入りしないという意味ではないし、感謝してます。
>>644 一応「ゲーム製作って実際どのくらいまでできんの??」が空いてる様なので、ここを考えてます。
書き込むのは、いつもと同じでしばらく先の話になるかもしれません。
>>645 励ましの言葉ありがとうございます。(やる気アップw)
自分のプログラムは本、ネット、スレ等から力を借りてつぎはぎして作ったようなモノなので、
それに1年掛かったとなると適性的に実際どうなんだ?という気持ちが沸いて「>その結果が・・・」のセリフが出てしまったのかもしれません。
まぁ、時々どこかで書いてたかもしれませんが、ダメになったらその時はその時でいいやぐらいの気持ちでもいいんだろうなぁ~と思ってます。
>>646 です。
>>647 とりあえずおすすめの方で続けてみる事にします。
メインの書き込み先が移っても同じ板の中での話しなので、
これからも宜しくお願いします。
こんばんはMS-DOSのCで引退した厄年親父です。いいスレがあったんですね! ゲームはすなわち作り続ける根性のみ必要と実感し、RPGツクール2000まで敷居を落としています。 もちろんRTPのみでの大いなる出発です。 装備品はフォトショ、shade10、poser8、ASID、flstudio8、flash6、各データ集もろもろ作れないものはございません! が、これらを使って作品を仕上げる(仕上げたとか言わないかもしれない)だけで3ヶ月とかたちます。 ゲームを作ろう!そうおもって24年。完成品はスーファミのRPGツクール2のゲームだけですw ここの皆さんはすごいです。やる気をみしてくれますね。 脳内では軽く50作品は出来ているのですが、とりあえずWindowsで動くものをw では、完成まで深く潜ります。ごきげにょう。
知識無いのにいきなりお城とか作ろうとすんなよー。 まずは犬小屋、いや、本棚からはじめるんだ。
本立てじゃね?
いい年ぶっこいた中年がRPGツクールって・・・・・
いや、別に悪いことはないだろーよ
おれも久しぶりになんか作るかな
そう言うと彼は奥さんの布団に入っていった
お? ここ見てるやつ居るんだなw
657 :
名前は開発中のものです。 :2009/06/19(金) 18:32:30 ID:akKp4rW7
そろそろ出来た?
>>649 > 装備品はフォトショ、shade10、poser8、ASID、flstudio8、flash6、各データ集もろもろ作れないものはございません!
このうち、実際に金出して買ったのって、どれ?
できたぞ
何という死んだスレ
あれから7年か 月日が流れるのは早いな・・・
冨樫かよw
次に書き込む奴は
>>666 を踏むという呪いをかけた
666 :
名前は開発中のものです。 :
2014/09/08(月) 17:00:16.20 ID:67y2qr+m 教京サーバアビエ無戸籍交際薬剤消毒介護職利権ローション羽田帝国上層部24時間パトロール義務上野飲み会マックさむらいニューヨーク森林火災チェック問題ヤーフォー確定申告不足ラーメンスーパーポイントdビデオデッキ破壊タイピングGTX860MIGOZ 教京サーバアビエ無戸籍交際薬剤消毒介護職利権ローション羽田帝国上層部24時間パトロール義務上野飲み会マックさむらいニューヨーク森林火災グリーにんにく牡丹黒家宝ラーメン 教京サーバアビエ無戸籍交際薬剤消毒介護職利権ローション羽田帝国上昇部24時間パトロール義務セコム強盗マックさむらいニューヨーク森林火災グリーにんにく牡丹黒家宝ラーメン 築地TPP偏食中国人勧誘マナー憤怒北京オリンピックパブ立橋フロアWHO経済制裁代協議会飲み食い代官僚日テレ漏洩ボーリングITC問題調査福岡駐車近代道廃人画税幕張銀行ググール無断決裁広告料寒孫ゼリー失調栄養士指的フィルム不毛ハンバーグースラーメン 糞箱弐個弐個沖縄ランド近年ペット原発難民船頭100万円コミックコラムシフト廃品鉄工業プラチナ小スモ再販問題WHO光金アナ雪エネルギーソーシャル決裁ニッカン奮闘鬼記者サービスカ米ラマン露店捜査キセルストアアイダホ会長農家不動産工場感激息子