【アリス】system4.0【御用達】
■ このスレッドは過去ログ倉庫に格納されています
アリスソフトのゲーム開発で使われているsystem4.0のスレです。 長所 ・フリー ・C/C++ JAVAっぽい(オブジェクト指向 仮想マシン) ・ゲーム製作に特化している ・ADV、SLG、3Dダンジョン、なんでも作れる ・同梱されているチュートリアルが親切、解りやすい ・実際にアリスソフトで使用されている言語なので、力さえされば同じレベルのものが作れる 短所 ・使用者が少ないため、参考にするサイトが少ない ・専用エディタが無い アリスソフト公式 ユーザークラブ専用ページからDL可(登録無料) ttp://www.alicesoft.com/ あまりにも書き込みがないので、もうちょいどんなもんか書くね。 C/C++は扱ったことがないけど、見る限りでは似ていると思う。 JAVAやC/C++を使ったことがある人なら、同梱されているチュートリアル通り一通りやればすぐ慣れる(と思う)。 VBやツクール系が中心だった人には解り辛いとは思うけど、ちゃんとプログラムしてゲーム作りたい人には良い。 どのへんがC/C++やJAVAと比べてゲーム作成に向いているかというと、SACT2という関数集がデフォで使える。 SACT2はゲーム作成で良く使う、BGM・効果音、キー・マウス・コントローラー入力、画面エフェクト、シナリオ記述系、 CG表示、セーブ・ロード関係などの関数が入っている。アリスソフトで実際に使われているものなので、ゲーム作成 に最低限必要なものはまず入っていると思って良い。 外部のDLLを利用できるおかげで高い拡張性を持ってるはずだけど、 対応したDLL作ってる有志も見かけない。 ユーザ数増えれば大化けする可能性はあるかも・・・と思ってたが いつまで経っても化けないね・・・ >>4 高い拡張性が逆にアダになっている。 初心者には、機能限定したほうが使いやすいし、外部DLL作れるやつなら いっそのこと全部自分で作ってしまったほうが自由にできる。 ツール類がGUI化されて、外部ツールが作りにくくなったことも、 ユーザーが増えない原因になっていると思う。 >>5 まぁそうだね。位置づけが中途半端。 いちおう初心者向けにポポリタンも用意されてるけど、あれも何か微妙だしなぁ。 でも、SACT2を使ったスプライトの扱いやすさはなかなかのもんだと思うんだけどな・・・ ポポリタンは微妙だね。 熟練者セットのチュートリアルに書いてあることだけで、簡単なADVは作れるようになるんだから 最初からそっちやったほうが良いかもね。 ちょいと質問。 A.jaf B.jafと作って、A.jafからB.jafの↓を呼び出したところ 二週目以降もif(!g_bSys_Mouseon)の中を通ってしまう。 これは一体何が悪いんだろう? //グローバル変数 bool g_bSys_Mouseon = false;//fMouse_Onマウスオーバ状態取得 true:ON false:OFF //マウスオーバー時表示切替(int 非オーバー時画像, int オーバー時画像, // int マウスオーバー時サウンド(省略時無音)) void fMouse_On(int nSpA, int nSpB, int nSnd = 0) { int nX = -1, nY = -1; MOUSE_GET_POS(nX, nY); if (SP_IN_POINT(nSpA, nX, nY)) {//マウスがSPの上なら if(!nSnd == 0){//サウンドがあれば if(!g_bSys_Mouseon){//一週目なら(*ここ毎回通る) g_bSys_Mouseon = true;//SP上に乗っかったフラグ立てる SND_PLAY(nSnd, false);//音鳴らす } } SP_SET_SHOW(nSpA, false);//SPAを非表示 SP_SET_SHOW(nSpB, true);//SPBを表示 } else {//マウスがSP上に無ければ g_bSys_Mouseon = false;//フラグ消す SP_SET_SHOW(nSpA, true); SP_SET_SHOW(nSpB, false); } } >>8 だけど自己解決したわ。 並列にAとB、座標の違うスプライトで呼び出したとすると、 Aではtrueだけど、Bではfalseって状態になるのね。 それで、trueとfalseが瞬間的に切り替えられまくった訳だった。 System3.9と4.0では簡単に言ってどう違うの? データの入ったファイルを読み込ませる為の外部DLLを作ろうと思ったが 確かWin32DLLを作る技術・環境がなくて諦めた…… >>11 大きく違うのはスクリプト言語と、基本機能。 >>12 技術はともかく環境は無料版のVisual C++ 2005 Express Edition使えばできそうな気がする。 やったことがないので環境が作れるかわからんけど。 やったことある人いる? >>13 スクリプトが違うというのは、 今3.9でadv作ってる自分などは 4.0にすぐには入っていけない感じでしょうか? 分かってなくてすんません。 SYSTEM4.0はプログラムを囓ったことがあるかどうかでかなり違うと思う。 DLできるんだから、とりあえず試してみるのが一番っすよ。 ちょっと見てみたけど、難しそうかなという感想。。 ただ、やってできなくもなさそう。 ところでSystem3.9で組んだスクリプトって 今後の4.xでもずーっと実行できるままでいてくれるのかな? ADVなら、シナリオ関数揃ってるし、あんま良くわからんでも なんとかなるんじゃないかな? とりあえず、ADVというかノベルで使いそうな機能を一通り使って 作ってみた。ソースも同梱しといたから、参考になればしてちょうだい。 ttp://up.viploader.net/src/viploader58829.lzh.html pass:system と、いっても俺も二週間くらい前に始めたばっかりだから色々変だと思う。 構造体の正しい使い方とか良くわかってない。 >17 System3.xと4.xのスクリプトに互換性はない。 仕様や設計も違うから、 たとえ変換ツールを作ってもそこからかなりの修正がいるから 4.xに移行するならすべて1から書いたほうがいいでしょうとは開発者の談。 >>18 文字入力はInputStringよりもダイアログのDLLの方を使う方が楽だとオモ。特に 何か装飾を施すのでなければ。あとボタンの文字は、わざわざフォトショップとかで 作るの面倒でね? まずボタン用のメッセージ枠用意して、その中にフォント指定で書き込み、 そのSPをQNT形式で別フォルダに書き出したものを使う方が楽だと思う。 ちなみに俺は構造体を使わんので、ソースみてもよくわかんなかった。 >>18 吉田のCGの形式は256色ですか? 24ビットじゃないと、上手く表示されませんよ。 >>21 ダイアログのdllもあったんだね。見逃してた。 >>23 めんどくなって、変になったままにしちゃった。 //グローバル array@int@4 Status[1000][1000][1000]; OK、ブラクラだ。 ∧_∧ ∧_∧ (´<_` ) 流石だよな俺ら。 ( ´_ゝ`) / ⌒i / \ | | / / ̄ ̄ ̄ ̄/ | __(__ニつ/ FMV / .| .|____ \/____/ (u ⊃ ガガガガ・・・・ 大分前にこの板で一度見かけたっきり、dat落ちしていたsys4スレが復活とな! 以前、ちょっとsystem4を触った時に ホームページを作りかけて止めた残骸がまだ残ってた まぁ多分ここの人の参考になるような事はないだろうけど、何か変な所があったら指摘しておくれ http://hatune.jorougumo.com/system4.html RPG作り始めたが結構作りやすいな。 Allocをallocと書いてエラーもらってた時はどうしようかと思ったが。 ちょこっとADV作るぐらいならSys3.xの方がいいかもな。 公式じゃもう公開されてないけど。 >29 だが探せば出てくると言うw ttp://enquete.alicesoft.co.jp/support/sys39agr.html なんとかRPGの戦闘部分とMAP部分の作成完了。 30対30戦闘まで出来るが普通にソース分かりにくいなこりゃ。 >>31 SRPGじゃなくて、RPGで30VS30の戦闘なの? なんかもう、それだけでやってみたい。 class Input // キー入力 { public: void initialize( int KEY_CODE ); void update(); bool trigger(); bool raw(); private: bool m_trigger; bool m_raw; bool m_newStatus; int m_keyCode; }; void Input::initialize( int KEY_CODE ) // キーコード { m_keyCode = KEY_CODE; m_raw = false; m_trigger = false; m_newStatus = false; } void Input::update() // 更新 { m_newStatus = KEY_IS_DOWN( m_keyCode ); m_trigger = m_newStatus & ( m_newStatus ^ m_raw ); m_raw = m_newStatus; } bool Input::trigger() // 押した瞬間だけ真 { return m_trigger; } bool Input::raw() // 押してる間ずっと真 { return m_raw; } 以上 大したことないコードだけど書き込みも少ないので貼ってみる プログラム殆どやったことないんだけど、いきなりコレから始めるのはどうなんだろう? やっぱり難しいかな。 ADVやノベル作るんならお勧めしない。 他のツール使ったほうが簡単だし、労力も少なくて済む。 RPGやシミュレーション、パズル等、ノベル系以外のものを作るつもりなら、 難しくてもチャレンジする価値はある。 ただし、ある程度プログラミングの経験がないと労力かけた割りに しょぼいものしか作れないってことになりかねない。 他のツール使ったことないから分からないんだけど、具体的にRPGとか作る時どう違うの? 配列関数を使えるスクリプトなら結局、それなりに出来ると思うんだけど。 C 言語だとか C++ 言語はロジックを組むためのものだから 組んだロジックは何らかの API 関数やグラフィックライブラリを叩いて 画面なりメモリなりに出力しなければならない。 だから C + コンソール機 とか C + Windows(DirectX) とかいう組み合わせが生じる。 Flush なんかだと ActionScript(Javaベースだっけ) + Flush で自前で全部まかなう事が出来、 System4 もそれと似てて、System4 は C++ と CG 表示ライブラリが一体化したようなものなので Windowsアプリケーションとしてのゲームを自前で完結させやすい。という事だと思う。 俺の中ではそういう認識 つまり、吉里吉里とかYU−RISと比べると、どんな具合? 記述方の使い易さはともかくとして、できることはそんな変わらない? 結局小難しいことをやろうとすると拡張DLLとかつくんないとならないので吉里吉里とかと一緒。 記述のしやすさは、ちゃんと「スクリプト言語」として設計されている吉里吉里の方が上。 System4.0のこの文法は劣化C++でしょ、これじゃC++とかで書いてるのと大差ないし C++かけるやつはこんなのじゃなくてC++つかう。これはスクリプト言語としての設計を間違ってるとしか 言いようがない。 標準付属のライブラリとしては4.0の方が上かな。 YU-RISはプラグインとか使えないしあの文法ではすこしめんどくさい記述をしようとすると すぐにめんどくさくなるので全然同じ土俵に上がれない。 ところでこいつの実行速度ってどんなもんなんだろうか ttp://gamdev.org/w/?%5B%5B%A5%CE%A5%D9%A5%EB%A5%C4%A1%BC%A5%EB%C1%AA%B9%CD%5D%5D だれかこれやってみない?(おれの環境は相当昔にすてちゃった) まあ自分で使いやすいように設計してるだけだから 社内で使う分には間違って無いわな。 久々に弄ってて思ったんだが読み込める外部データって画像と音楽だけだよな ゲームのデータとかを纏めた外部テキストとか読み込ませるにはどうすれば良いんだ テキストの入出力関数はないし……スクリプトに埋め込むしかないのか? 埋め込んだ方が早いんじゃない? どうしてもっていうなら自分でDLL作るしかないと思う。 system4.0ってswf読み込むことできますか? swfを読み込んでサーフェースへ流し込むDLLを作ればいいんじゃね? swfを読み込めるゲーム開発環境なんてあるのか? OPがFlushくさい物は、スプライトをバンバン動かしてたり アフィン変換をかけたりしてるからそう見えるだけで 実際にはプログラマーが手動で回してるか、専用の補助ツールでも作って アニメーションを出力してるかのどっちかだと思うけど このツール、今日初めて触ったけどいいな。 色々と自作しなくてはいけない部分もあるが、吉里吉里よりイベント処理とかしやすい気がす。 少しアクションさせたいとかある場合こっちのがいいかもな。 動作が速いので結構気に入ってる。まあ細かいことやろうとすると手間はかかるが。 玄人向けだな。 ユーザークラブページで入手できるZEROはアクション系ゲームだから 参考になるのでは デカいスプライトを動かそうとするととんでもなく遅かったことがあるのだが あれはSys4が悪かったのかデカいスプライトを動かそうと思った俺が馬鹿だったのか・・・ ちなみにデカいスプライトというのは 640x480 の一枚絵 全画面スクロールとかよくやるけど遅いって感じたことないですよ?>800x600 なにをしようとしたんすか? その全画面スクロールをやろうとしてた。 ノートPCだったのがマズかったのかもしれん・・・アリスの3DダンジョンRPGは快適に動くので それくらいなら大丈夫だろうと思ってたんだけど ここんところずっとSystem4.0を使ってゲーム作りの準備をしているが 戦国ランスとかどうやってプログラムしているか激しく気になる >>55 1ループ毎にnドットずつ動かすんでなくて、 最初のフレーム描画時からの経過時間を元に スプライトの移動先を決定してやれば 高速PCではぬるぬるに、低速PCではかくかくに でも移動スピードは同じになって良いと思うお データの定義部分とか言われても困るんだが、どうわからないんだ データの定義なんて、 1.キャラクターは構造体配列で持つ。 2.イベントはフラグ配列を持つ。 で終了だと思うぞ。 >>62 各キャラのステとかかな? そんなら、HLLライブラリに入ってるData.hllを使ってんじゃね? >>58 多分影データの半透明合成が遅いんじゃないかな? 4.0は使ったことないけど、3.9だと大きな画面を重ね合わせると結構重くなった。 4.0で使っているルーチンは、3.9と同じか多少チューニングしただけのものじゃないかと思う。 >>63 ごめん言葉足らずで だいたい>>65 の言うとおりキャラ単位のステータスの定義の仕方 自分の場合は構造体を用意して ・各々のメンバを直接指定してデータを入れる ・ある程度データを一括で指定できるメソッドを作ってそれを利用 の二つを用途に応じて使い分けているんだけどデータが増えてくると メンテとかでしんどい事になりそうだなあって思ったんだ もうちっと効率よく出来たりするのかなあとか あとSACT2のCG〜関数のヘルプの解説、端折りすぎで困った DirectDrawを少し勉強していたからか何となく理解は出来るんだけど >>68 それって、構造の定義の問題というより、データの入力や登録、管理メンテナンスが大変だってことかな? だったら、EXCELかなんかでデータ入力して、CSV吐いて読ませるか、 VBAで初期化設定ソース吐き出すようにすればいいんじゃない? スクリプト内に直接、大量のデータ設定を記述すると見づらいし、 項目が増えたときメンテナンスがめんどくさい。一覧性にも劣るし、一括修正もしにくい。 だからデータはデータで別管理したほうがいいと思う。 俺は大量データを扱うときは、EXCELでやるか専用の管理入力ツール作ることにしている。 そういう話じゃなかったらごめん。 System4の話というより、SLGの作り方だから他で聞いた方が早そうだ >>69 うい、そう言う話です ゲームを作ろうと考えてSystem4.0に本格着手する前には 自分もCSV形式でデータ一覧を作って読み込ませようと思ってたのですけど、 System4.0にテキストのI/Oコマンドが見当たらなかった為、一度はHSP辺りに 流れたのですがHSPはHSPで自分的に問題があって、いろいろ吟味した結果 データの部分を別ファイルで管理する事を諦めてSystem4.0に舞い戻って来たんですよ スクリプトで初期設定ソースを自動的に吐かせるのは良いアイデアかも…… HLLライブラリにCSVを読み込ませるっぽいプログラムがあるのが気になりますが ちゃんとData.hllっていう例だしてくれてるじゃまいか。HLLライブラリ確認しる。 それでも気に入らなきゃ、VC++あたりで自作する必要有り。 >>72 ライブラリを見てみましたが何となく判ったような判らないような…… ひとまず色々と弄ってみます >>73 File.hllの方を使うってのは? こっちのほうが使い方簡単そう。 構造体丸ごとセーブロードできるみたいだから、 保存フォーマット解析して、互換データ作成して、それを読ませるとか。 まあ、初期化ソース吐かせるのが一番簡単そうな気がするが。 Data.hllの説明が少なくて使い方が解り辛いなら、ACXLoaderは? こっちも同じような機能だけど、マニュアル入ってるから使いやすいと思う。 System4.0らしい質問でもしてみるか 先日からAliceCG2.exeでのCG圧縮がうまくいかない 圧縮はうまくいくんだがリンクの段階で §リンク番号抽出 。 ・・・・・・・・・ ───────────────────────── §ALDに保存 保存:000% ───────────────────────── リンク失敗 ━━━━━━━━━━━━━━━━━━━━━━━━━ ● エラーが発生したた処理を中断しました ● ━━━━━━━━━━━━━━━━━━━━━━━━━ ×××× ← みたいになる 最後に上手くいった時から構成を変えずにやってもダメだった 生成されていたALDを消したりしても変わらない もう少し詳しいエラー内容が判ればなあ >>76 たぶんフォルダがないとか、空き容量がないとかそんなところでは? リンクは基本的にコピーしてるだけだから、エラーの原因なんて、 そのくらいしか考えられん。 圧縮なら、画像が壊れてるとかあるけど。 >>77 最初の頃からずっとRAMディスク上で開発をしてて 一応aldの生成先はDIR.HEDを弄って変えてあるけど 今の今まで問題なくaldを生成出来てたんだよなあ RAMディスクも空きは900MBはあるから容量不足ではないと思うし…… わからんね >>78 RAMディスクなら、フォルダ消えちゃってるとか、フォルダ作り直したときに 名前間違ってるとかない? AliceCG2.exeはフォルダを作らないから、フォルダがなかったり 名前を間違っていたりするとエラーになる。 落ち着いてフォルダ名や設定を見直してみろ。 最初から使えないんならともかく、今まで使えていたんなら、 設定を間違えているか、環境が違うか、どこかで絶対ミスをしている。 でなきゃRAMディスクが壊れているか、AliceCG2.exeが壊れているかだな。 一度開発環境を作り直してみたら直った あと、aldの生成先をAliceCG2と同じフォルダにしてみたけど これは関係あるのか判らないなあ…… System4.0のWikiとか作ってみようかなあ 応援できるかどうか判らないけど時間があったら是非応援したい >>80 >あと、aldの生成先をAliceCG2と同じフォルダにしてみたけど >これは関係あるのか判らないなあ…… 関係ない。 ALDはどこにでも作れる。 おそらくフォルダ名が間違っていたからRAMディスクが壊れていたんだろうと思う。 >>83 誤 -> おそらくフォルダ名が間違っていたからRAMディスクが壊れていたんだろうと思う。 正 -> おそらくフォルダ名が間違っていたか、RAMディスクが壊れていたんだろうと思う。 WAVEファイルにループ情報を埋め込むのは 公式だと故意にはぐらかされている気がするぜ。 フリーの効果音でループ情報入ってるものが WA.ald(だっけ)に格納できないのが不便 できるよ。wavLinkerは使えないけど。 まあ上書き保存すればどっちみち使えるしね。 System4.0で使えるMIDI系のDLLってあるのかな…… RPGツクール2000みたいにデータ内の特定コマンドでループさせたり ついでにWaveも使えたりして鳴らす位置や音量を変えたりとか出来ると もっと良いけど >>89 自分で使ってないからどんな感じか解らないけど 「れつとれ」でググってみ smplチャンク入りのWAVって、アリスの独自仕様なのかな。 それとも市販の波形エディタとかで吐けたりします? とりあえずFLStudioでループポインタ設置したのはだめでした。 まあ>>90 のサイトのツールを使わせてもらえばいいけど。 >>90 やっぱりこれくらいしかないのかなあ 何にせよSystem4.0はこの手のにしては情報が少なくてこまる やはりWikiを展開すべきか なさそうだったら自作してねって主旨のツールだからな とはいえ、インターフェイスの仕様書もまともに無いんじゃ、ちょっとC++組める程度の人はお手上げだし、 上級者でも、解析に手間がかかって、労力の割りに得られる成果が少ない。 サイトのSDKは2004年12月のだから、そろそろ新しいやつを出して欲しいところだけど、 その時にはマニュアルを何とかしてもらいたいよねぇ。 それとも、このまま、放置するつもりかな? いい加減2年以上だからなぁ。 当初「どーせ誰も欲しがらないだろうから公開しない」と言ってたモノを、 一部の欲しがってた人の声に押されて公開したけど やっぱり誰も使ってくれないからモチベーションも上がらない のではないかと思う wiki作ってもどう内容を増やすかっていうのはあるな。 範囲が広すぎてちまちまやってるだけじゃ 中途半端で終わるんじゃなかろうか。 マニュアルは親切なんだけど肝心なところでが足りない感じなので それを補うようなwikiが作れればいいと思うんだが それはそれで大変そうだ まあ作ってみて損はないんじゃね? とりあえずSYS4関連のリンクだけでも貼って。 れつとれのサイトも>90に聞いて始めて分かったし、公式リンクが 役に立たない状態なら、わりとこういうのって必要だと思う。 あとはこんなコンパイラーエラーはこんな解決試してみてとか 公式のF&Aの内容を有志でまとめればいいと思うけど。 >>95 これほど使いにくいものだとは思っても見なかったからなぁ。 言語仕様はともかく、ツール系が半端にGUIになったものだから、 使いにくい上、サポートツールも作れない。 それで、3.x用のツール作ってた作者がみんな移行せずに脱落していった。 せめてコマンドライン版のシナリオコンパイラがあれば、 3.xのときのツールがそのまま、あるいは多少の変更で使えたんだが。 これそんなに使いにくいかなあ… 最近いじりはじめたけどなかなか面白い セーブやスプライトの環境が標準であるから、生の言語でやるより手っ取り早い 3.xは使った事がないから比較出来ないけど 不便なところはα付きのPNGを直接読めないのと、 サクラエディタの行番号指定に対応してないのぐらい ただ情報量はとにかく足りてないから、Wikiが出来れば活用したい ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる