☆ベルトアクション作成 Beats of rageスレッド☆
1 :名前は開発中のものです。 :2019/01/14(月) 03:57:54.21 ID:BfjgfhbB.net フリーのベルトアクション作成ツールBeatsofrageでオリジナルの ベルトアクションを製作するスレッドです。 http://ime.nu/senileteam.segaforums.com/ なかったので立て直しました
2 :名前は開発中のものです。 :2019/01/14(月) 04:02:36.42 ID:R9mMQjas.net いくらググっても出てこないしデフォルトでついてる壁を消す方法と1ラインの作り方の詳細がほしい。 あとできれば放物線移動をするナイフの作り方も
3 :kt住江 :2019/03/22(金) 23:06:02.20 ID:nuPVe/4Y.net こんばんは、皆様お久しぶりです。kt住江です。 去年の10月より開発中であった、東方二次創作ベルトアクション『巫女と吸血鬼』が、 無事完成しましたので、ここに報告します。 明日の夜9時にアップする予定ですので、僭越ながら宜しくお願いします。 >>1 さん スレ設立ありがとうございます。 今後も日本人のOpenBOR開発者のひとりとして、 頑張りたいと思います。 >>2 さん 機会があれば、Beats of rageの日本版開発マニュアルを作りたいですね。 正直なところ、Beats of rageは初心者殺しだらけで、 わしも何度か、心が折れかけましたので・・・
4 :kt住江 :2019/03/23(土) 21:12:45.65 ID:U3LwF5EW.net こんばんは、kt住江です。 新作『巫女と吸血鬼』が無事に完成しました。 ttps://ux.getuploader.com/gikotakurpg/download/77 12300 前作『くにおくんLA』は、コチラです。 ttps://ux.getuploader.com/gikotakurpg/download/46 12300 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
5 :kt住江 :2019/04/03(水) 21:37:36.49 ID:oN3p4yD2.net 『巫女と吸血鬼』にて一部、おかしい箇所がありましたので、 修正バージョンをアップします。 ttps://ux.getuploader.com/gikotakurpg/download/79 12300 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
6 :名前は開発中のものです。 :2019/04/06(土) 08:35:31.08 ID:lyXiFoQr.net >>1 ありがとうございます。 >>5 おつかれさまです。楽しませてもらってます。 ChronoCrash(海外サイト)だと、ログインやら英訳やらで大変なので こちらで日本勢の情報交換ができるといいですね。
7 :名前は開発中のものです。 :2019/04/07(日) 09:02:39.49 ID:jFfEIfMF.net >>2 自分は困ったときはまず、ここで調べてる ↓ OpenBOR(英語) マニュアル http://dcemulation.org/index.php5?title=OpenBORManual マニュアルで解決できないときに Chrono Crash(英語) 公式サイト http://www.chronocrash.com/forum/index.php
8 :kt住江 :2019/04/16(火) 21:51:51.21 ID:NREKrxKi.net >>6 さん 楽しんで戴けて、どうもありがとうございます。 僕もまだまだ、OpenBORマニュアルにて、 どのような効果を発揮するのかわからないプログラムがたくさんありますので、 今後はスレの皆様と情報交換しながら、より面白いゲームを開発できればと思っていますので、 僭越ながら、宜しくお願いします。 なお、次回作はアーケード版ダブルドラゴンモチーフの、 ダブルドラゴン二次創作を予定しています。
9 :名前は開発中のものです。 :2019/04/22(月) 13:45:05.97 ID:GOpVXkaR.net 日本語マニュアルアップして
10 :名前は開発中のものです。 :2019/05/13(月) 12:25:32.20 ID:PvWAiouI.net 今更SUPER Final Fight GOLD Plusの気に入らない所自分でいじってみたけど 数値置き換えてるだけでも楽しいな 一から作れたらもっと楽しいだろうな
11 :名前は開発中のものです。 :2019/08/10(土) 14:38:43.66 ID:9CRYwala.net borってパンチキック別枠としてコンボさせられないの? 攻撃が1種類だとどうしても作りたい感じにならないので…
12 :名前は開発中のものです。 :2020/11/04(水) 10:00:50.86 ID:OIHDdznS.net ☆ アタマからっぽ日本人はマスコミのおもちゃ(笑) ☆ @日本人の精神を腐敗・堕落させ愚民化させろ! A日本人の女を集中的に狙い洗脳しろ! Bネトウヨ、ヘイトスピーチ等の言葉を浸透させ、同胞への批判を封じろ. C韓国人識者に政治的意見を言わせ、御意見番化させろ. D「同性婚・LGBTを全面肯定しない者は差別主義者だ!」という雰囲気を作れ! E海外セレブやハーフモデルをもてはやし、「日本人は劣等人種だ!」と植えつけろ. F「未だにガラケーの奴は笑い者」という雰囲気を作れ. G「LINEに入らない奴は仲間外れ」という雰囲気を作れ! H「日本人の男VS日本人の女」の対立を煽り、分断しろ! I日本人同士で恋愛・結婚させない、子供を生ませないよう誘導しろ. J日本同士で結婚していたら離婚させる方向に仕向けろ. K我々がステマしてやれば無名女優も売れっ子女優に早変わり Lイケメンブームを定着化させ、「男は外見が全てだ!」と洗脳しろ。 - ソース - 電通グループ会長 成田豊は朝鮮半島生まれ http://ja.wikipedia.org/wiki/%E6%88%90%E7%94%B0%E8%B1%8A
13 :名前は開発中のものです。 :2021/02/04(木) 17:19:23.33 ID:jX0oqsZX.net >>11 ワイが質問の意味を取り違えてるだけかもだけど アタックの種類はいくつか設定(レバー入れ攻撃とか)出来るので、そのいくつかのアタック毎にコンボ設定すれば良いんじゃないかな。 もしするとスクリプト導入しないと駄目だったかも。調べてみる。 無限のリソース導入できるようになったり公式?も相変わらず進化してるよね。 画像と当たり判定用意すれば、作りてに特殊な技能無くてもキャラや技がどんどん増やせるのが OpenBoRの魅力の一つだと思うんで気軽にどんどん弄って遊ぼう
14 :名前は開発中のものです。 :2021/02/05(金) 01:19:54.77 ID:abFcte/J.net 自分でキャラ差し替えしたりして遊んでたDataが出てきたんで中身見てみたら 当時の自分は別人格じゃなかろうかってくらい色々組み込んであって 何も思い出せない 今ではどうやるのか全く思い出せないステージ中の段差とか導入してあるし 一番問題なのはJtoK使ってもパッドが上手く動作しないことだったり JtoK噛ましてればX-InputもD-Inputも関係ないですよね?
15 :名前は開発中のものです。 :2021/02/05(金) 23:23:09.57 ID:abFcte/J.net キャラ差し替えや、デバグなどで毎回パック、アンパックするのは面倒。 そんなとき、 ダミーファイル(何でも良いので例えばテキストファイルを拡張子をPakに変更)を PAKSフォルダに一個だけ入れる(他のPakファイルは何処かに退避) OpenBoRエンジンと同じ階層にDataフォルダ(中にキャラデータとか入ってる奴)を置く そして普通にOpenBoRをスタートするとDataフォルダが実行されます。
16 :名前は開発中のものです。 :2021/02/07(日) 00:53:10.92 ID:C9uSCc3y.net 少しOpenBORManualを見てみたら以前なら@Scriptを使わなければ出来なかった処理が 通常コマンドでできるようになっていますね。 2年前の質問なのでアレですが、投射物を放物線を描いて飛ぶようにするには Bombというコマンドがあります、直線ならKnife ジャンプ中専用にStar、あとBoomerangてのが追加されているようですね。 乗り物に乗ったキャラの落下処理をやってくれるRiderというのも面白そうですね。
17 :名前は開発中のものです。 :2021/02/07(日) 01:04:49.48 ID:C9uSCc3y.net kt住江氏の新作は逃してしまったのですが、息災そうでなによりです。 過去作でもプレイするたび繊細な作りこみに驚かされます。 なにより8x8ドットの情念とでも呼んだら良いのでしょうか、 プレイするたび発見があり、毎回とても楽しめます。 最近はユニティなどかなり簡易にゲーム開発できる環境になってきましたが、 OpenBoRならではのパラパラ漫画がアクションゲームになるという、 気軽さは他には無いものですね。
18 :名前は開発中のものです。 :2021/02/13(土) 01:37:26.65 ID:IDjzs9Ej.net 各種リソースから材料をいただく際に便利なツール Fighter Factory Studio(本来無限のキャラなどを作るものです) openBoRStats(無限のairファイルを読み込んだり、offsetを調整したり) Alferd Spritesheet Unpacker(スプライトを自動で切り抜いてくれる) とくにASUはユニティなどでお馴染みの一枚の画像に大量のキャラなどが描かれた ファイルを自動で切り分けてくれる優れもの。
19 :名前は開発中のものです。 :2021/02/13(土) 01:55:23.90 ID:IDjzs9Ej.net いま色々実験してるのが BindEntity これは別々なEntityを関連付けて処理するというもの。 昔サイバーボッツという対戦ゲームがあったのだけど プレイヤーが操作する機体は大雑把に身体と腕(主に攻撃担当)に別れていて ロボットなので腕は回転したり、もげたり自在に動くのだけど これを表現するには絵を何枚用意しても足りない感じなので 機体そのものと腕は別々に表示して絵を節約してたんだけど それを表現可能にするといえば判っていただけるでしょうか? BindEntityによって関連付けされたEntityは たとえばプレイヤーのAnim Idleが実行されると もう一方のAnim Idleも実行されるというもの 位置や向きを指定することも出来るし、使いこなせれば ダークネスイリュージョンも簡単に作れそう。 ただし、Entityは別に専用のものを作ろう。 自分に自分をBindEntityしたら落ちました。
20 :名前は開発中のものです。 :2021/02/13(土) 02:09:06.65 ID:IDjzs9Ej.net maxAttacks 30 maxFollows 30 maxAttackTypes 30 maxFreeSpecials 30 上は Models.txt の一例です、 キャラクターなどの Entity.txt 内の記述に間違いが無いはずなのにエラーが発生する場合は、 Models.txt や Levels.txt 内の設定をチェックしてみても良いかも。 Follow や FreeSpecial はとても便利でついつい多用してしまいますが、 標準の設定では 12になっています。 それらを解除するのが上の max~設定、 メモリーや処理スピードの関係で初期値が低くされているのだと想像します、 昨今のPCであれば上げても特に問題は無いと思います。
21 :名前は開発中のものです。 :2021/02/19(金) 00:31:11.85 ID:kAXiPLiE.net anim special2 @script void self = getlocalvar("self"); if(frame==0){ float MHealth = getentityproperty(self,"maxhealth"); float Health = getentityproperty(self,"health"); if(Health <= MHealth/2){ changeentityproperty(self, "animation", openborconstant("ANI_FREESPECIAL2")); } } @end_script スクリプトを使うと結構いろんなことが出来ますが なかでも結構便利なのが上で、スペシャル2(レバー入れ必殺ボタン)の 動作に「プレイヤーが最大体力の2分の1なら、FreeSpecial2を実行する」というもの DCマニュアルの「ANI_xxx」を見れば色々と変えられるので 英語で判らんチンでも一度は覗いて見てはいかがでしょうか。
22 :名前は開発中のものです。 :2021/02/21(日) 22:41:48.70 ID:ke3KkwTC.net 便利なスクリプト、敵との距離によって技の変化とか anim runattack loop 0 @script void self = getlocalvar("self"); void target = findtarget(self); int x1 = getentityproperty(target, "x"); int x2 = getentityproperty(self, "x"); int z1 = getentityproperty(target, "z"); int z2 = getentityproperty(self, "z"); if(frame == 0){ if(z1-z2<20 && z1-z2>-20 && x1-x2>-80 && x1-x2<80){ changeentityproperty(self, "animation", openborconstant("ANI_FREESPECIAL4")); }else if(z1-z2<20 && z1-z2>-20 && x1-x2>-160 && x1-x2<160){ changeentityproperty(self, "animation", openborconstant("ANI_FREESPECIAL")); } } @end_script ダッシュ(→x2)中に攻撃した場合、敵との距離を測ってFREESPECIAL4と FREESPECIALを距離によって発動するというもの。 毎度おなじ動作ばかりだと飽きやすくなるので、アクセントにどうぞ。
23 :名前は開発中のものです。 :2021/02/22(月) 01:12:07.12 ID:Ak0x7Qvg.net そもそも、@Scriptとか言われても意味ワカンネって感じの方は、 Open BoR 導入について とか検索してもらって、 どうすればPakファイルの中身の取り出し方を調べてみても良いかもです。 Pakファイルを解凍するとDataフォルダが出てくるんで、 そのフォルダの中にはいくつかのフォルダとTXTファイルが入ってます。 最初に一番いじることになるのは MODEL.TXTと CHARSフォルダかと思います。 これは ENTITYと呼ばれるファイルを設定しているもので、 プレイヤーや敵、障害物、アイテムの内容を設定しています、 簡単な所では必殺技出したら敵は全滅とかの決め事を纏めたもの。 attack 44 13 49 62 5 0 0 0 9 12 とか見ても何ソレて思うかも知れませんが、最初の2ケタの数字4つは 画面上のキャラクターの座標 横44 縦13 そこから横49ドット縦62ドットの位置 敵に当たった場合 5ダメージ与える 吹っ飛ぶか?0だから無し ガード不能か?0だから無し ヒットマークなど演出は?0だから表示 攻撃が当たったら100分の9秒位止まる 攻撃の範囲は12ラインほどと知ってしまえば何て事はない数字の羅列になります。 実際 5ダメージの所を100にしてしまえば、ワンパンK.O.という事が想像できるかと思います。
24 :名前は開発中のものです。 :2021/02/22(月) 01:29:59.35 ID:Ak0x7Qvg.net 基本ヨッパラって書き込んでいるので、てにをは、や日本語としてどうなのかについてはゴメンナサイです。 Pakファイルを解凍して出てきたDataフォルダの中にあるMODEL.TXTそして CHARSフォルダを覗くと、キャラやアイテムなど色々な名前のフォルダが並んでいるかと思います。 だいたいフォルダ名は、キャラそのものを指して入る事が多いので適当のフォルダを開いてみると たぶん大量の画像ファイルと一つかいくつかのTXTファイルが入っていると思います。 TXTファイルは大概キャラそのものの名前である事が多いので、見てみると最初に Name XXX Type Playerとか HP 100 MP 100とか書いてあると思います。 ゲームに詳しい人は一目見ただけでなんとなく、名前はXXXでプレイヤーキャらで 体力は100で攻撃くらって0になったら倒されてしまうんだな、 MPって、何か技とか使うと減って、無くなると技が出ないとか? と察することが出来るのではないでしょうか? お察しの通りそのまんまの事が多いので、ゲームに慣れているほどわかり易い内容になっています。
25 :名前は開発中のものです。 :2021/02/22(月) 01:43:08.21 ID:Ak0x7Qvg.net 少し戻りますが、MODELS.TXT これはOpenBoRの要と言ってよいファイルで、 プレイヤー、敵、アイテム、細かい演出などなどの基本を設定しているファイルです。 自分でMODを作り始めた時、試しに起動してみたらエラーで落ちた そんな時は大概ここで読み込むファイルを指定し忘れたから、ということ多いです。 あ、エラーで落ちた!ってとき何処をみればいいのか? OpenBoRのEXEファイルがあるフォルダにLOGSというフォルダあって、そこに OpenBoRLog.txtというファイルがあるんで、それを開けば XXXとかいうファイルLoadしろって言うけど、ねーからそんなもん とか下の方に書いてあるんで、ソレをたよりに修正してゆくことになります・
26 :名前は開発中のものです。 :2021/02/23(火) 00:41:59.00 ID:XlcKRtDD.net MODELS.TXT を見てゆくと最初のほうの数行以外は殆どが Know か Load で Data/Chars/xxxといった内容になっています。 大雑把に Know はいずれ使うから覚えていてと指示しているもの Load はすぐに Data/〜を読み込んでおくというもの 昔はPCのメモリも少なかったんで重要なもの(プレイヤーとか)だけ 読み込んでおいて、その他出番の少なそうなものは Knowにしておいて 必要になったものだけ都度読み込むという仕様だったようですが、 8ギガ超えのメモリを搭載しているのが当たり前の現在では 最初から全部 Loadでもよいようです。 とはいえ私の想像なので実は何か理由があるのかもしれませんが、 いまのところ全部 Loadでも不具合は無いようです。
27 :名前は開発中のものです。 :2021/02/27(土) 02:13:36.78 ID:BZAtihYI.net @script if (frame == 1) { void vSpawn; clearspawnentry(); setspawnentry("name", "Test"); vSpawn = spawn(); bindentity(vSpawn, getlocalvar("self"), 50, 1, 60, 1, 0, 1); } @end_script これは機能するのに @cmd bindentity "test" getlocalvar("self") 50 1 60 1 0 1 これだと上手くゆかない なかなか難しいものです
28 :名前は開発中のものです。 :2021/02/27(土) 02:45:28.85 ID:BZAtihYI.net 必死になってDCマニュアル読みこむより 過去に作られたシンプルなスクリプト 例) void spawnEnt(void vName,void x,void z) { clearspawnentry(); setspawnentry("name", vName); void ent=spawn(); changeentityproperty(ent,"position",x+openborvariant("xpos"),z+openborvariant("ypos")); } こんな感じのものを ~data/script/~に適当な名前(spawn00とか)で設定しておき 使いたいキャラの設定ファイルのヘッダー(上のほう)に animationscript data/scripts/spawn00.c と記入、 anim idle frame data/chars/test/Test01.gif @cmd spawnEnt "Test_spawn" 0 0 1 あとは上のように使いたい Animの Frameと一緒に書き込んでおけば Test01が表示された時に Test_spawnが同時に表示されるというもの ?それなら最初からある CustEntityとかとSpawnFrameでいいんじゃ? 確かにAnimの中で一回だけ表示するならSpawnFrameなりで十分なのですが 複数回表示するときはFrameと@cmdセットで使えば、 いちいちFrameコマを数えたりしなくてすむのでなかなか便利です。
29 :名前は開発中のものです。 :2021/02/28(日) 18:25:57.18 ID:aAXgr/zu.net game joltでopen borを検索すると結構色んなmodが見つかって楽しいよ。
30 :名前は開発中のものです。 :2021/03/04(木) 01:04:42.36 ID:flx7Tt6m.net Open BoR のビルド違いによってMODによっては動作が変になる。 基本バージョンは3のまま結構な期間経過しています。 Build6391あたりが一番手に入り易く、公式的にも安定しているっぽいですが、 2016年あたりを境に過去のMODは動作がおかしくなったり エラーで落ちたりし易くなるようです。動いてもキャラがブルブル震えて変な動きになったり。 原因としては Scriptを使っていることが多く、過去のビルド3789とか本体のファイルサイズが2メガ弱位だと エラーが発生してもある程度受け流してくれるwのですが、本体のファイルサイズが3.4メガくらいになると スクリプトや内部の予約語?的な名称を厳密に判断したりしてエラーが出易くなっているようです。 これは、MODにあったBuild環境のOpen BoRをMOD作者さんが提供してくれるか、 片っ端からちょうど良いビルドを探すしかないようです。 上記のファイルサイズが2メガ弱か3.4メガかの違いが大雑把な分け方になりそうです。
31 :名前は開発中のものです。 :2021/03/04(木) 01:18:13.47 ID:flx7Tt6m.net ご本人の許可は取ってないとは思うんですが、 kt住江氏の作品が海外で良くみかける上、 評判も良いよう(星で評価されてると大概5)なので なんだか自分まで嬉しくなってしまいます。 Streets of Rage Z2 というキャラはメガドライブ版からの流用っぽいですが、 Final Fightなんちゃら系によくあるレベルアップスクリプトを導入していて なかなか楽しめますね。
32 :名前は開発中のものです。 :2021/03/04(木) 01:30:05.90 ID:flx7Tt6m.net remove 0か1 これはハドーケン!とかナイフとかの飛び道具系 Entityのヘッダーに設定するのですが、 使うときは CustKnife xxx(このEntityに設定) ThrowFrame 1なんて感じで 投げると 0なら敵に当たったら消滅、1なら貫通する xxx(投げられるEntity)これの HitFlash を爆発系のEntity(AttackをBlastにするとか)にすれば 連鎖爆発みたいなこともスクリプトを使わずに行えます。 よく血しぶきてきな演出で HitFlash を設定し、そのHitFlashにさらに CustBomb xxx TossFrame 1なんてすればチがドバドバみたいなこともできます。
33 :名前は開発中のものです。 :2021/03/06(土) 03:14:00.97 ID:jHze2gK/.net 結構便利なコマンド anim Attack 内に記述して使う cancel {start frame} {end frame} {hits} {sequence of inputs} {freespecial#} start frame と end frame で指定したフレーム内で sequence of inputs のボタン入力があったら freespecial# を実行するというもの hits は当たったかどうか anim attack3 loop 0 delay 5 offset 121 152 cancel 9 99 1 A freespecial3 frame data/chars/Test/empty.gif こんな感じ start frame は入力を受け付けるフレームなので、きちんと数える必要がありますが end frame にかんしては99とか大雑把でOK コンボに一味加える感じで使えます。
34 :名前は開発中のものです。 :2021/03/09(火) 01:00:15.73 ID:vWs4Sul9.net Rescue Command という Mod が Weapons を上手く使って変身を表現しているのが面白いですね。 そもそも Weapons とはゲーム中キャラクター(Entity)が武器を拾ったさいに 素人の想像では基になったキャラ(Entity)に武器のEntityを重ねて表示して 武器の分だけ攻撃力を上昇させたり、攻撃の判定を大きくしたりなんて処理をしてるのかな? と思いますが、Open BoRでは 別なEntity、武器を持ったキャラの画像(Frame)を使った Model に完全に切り替えることになります。 なので、Weapons に設定したからといって武器である必要はなく、完全に別キャラ(Entity)でよい訳です 別キャラなんで Anim Attack#はもとより SpecialやFreespecial だって完全別にしてOK なので、初期は弱能力キャラで武器を拾うもしくは、初期キャラのSpecialなどで別キャラ(Entity)に切り替えることが できる事になります。アイデア次第で夢が広がりますね。 強制スクロール時のキャラを設定する事ももちろんできますので、キャラ管理も楽になりますね。
35 :名前は開発中のものです。 :2021/03/09(火) 01:57:36.98 ID:vWs4Sul9.net Cancel コマンドについて飛び先は基本 Freespecial#である必要があります(@Cmdとか@Scriptとか言い出すとキリがないので)。 たとえば Anim Jump に Cancel 3 99 0 Freespecial# として、 Freespecial#に Jumpframeを組み込む事でダブルジャンプなんてことも出来るわけです。 これはプレイヤーに限ったことでは無く、どんなEntityでも良いわけで(一応Typeによって制限はありますが) Range 設定などによって敵AIに色々設定できますが、やはりどうしても単調になりがちな敵の動作などに ちょっとした味付けが出来るわけです。 私などは、ついついAnim Attackだから攻撃動作させなきゃなどと固まった考えに陥りがちですが 別に Anim Jumpにダッシュをさせたって良いわけです もちろんAnimごとにOpen BoRの基本設定があるので、それに則った動作をさせるに越した事はありませんが。
36 :名前は開発中のものです。 :2021/03/09(火) 02:27:25.00 ID:vWs4Sul9.net 基本的コマンド Attack について、もっとも使われるコマンドの一つになるかと思います。 Open BoRで作られるModは殆どが2D横スクロールアクションで、 ゲーム画面でキャラクター(Entity)達は 左右への移動(X軸)手前や奥に移動できる奥行き(Z軸) ジャンプなどによる上昇、下降(Y軸(A軸))で管理される事が基本になります。 そこでキャラクターが攻撃動作をさせようというときに Attackコマンドが使われます。 書式は attack{#} {x} {y} {right} {down} {damage} {power} {block} {noflash} {pausetime} {z} 基本的に Frame(画像の表示)と一緒に使われます。 Frameの手前の行に Attack 10 30 50 50 10 0 1 0 10 20 などと数値を書き込むと、Attackの次に記入されたFarmeが表示されたとき その画像が横100,縦200の大きさだった場合には、画像の左上0,0から横10ドット縦30ドットを基点に、 さらにそこから横に50ドット、縦に50ドットの範囲で四角形を形成し、 そこに敵などのEntityのやられ判定(Bbox)が重なると攻撃が成功したと判断され、 以降ダメージ(例では10)、吹っ飛ぶか?、防御は出来るか?、 当たったと表示するか?(打撃やチなどのエフェクト、1で表示しない、普通は0) 攻撃が成功したら設定した時間分硬直する、 攻撃がZ軸に数値分影響を及ぼす、 という動作が実行されます。
37 :名前は開発中のものです。 :2021/03/09(火) 02:36:19.87 ID:vWs4Sul9.net 色々と書かれていてパニックになりそうですが、羅列された数字の意味が分かってしまえば なんて事ないですね、特にゲームに慣れた方なら感覚的に理解できるかと思います。 Open BoRでは基本的にこの繰り返しで作られています。 画像が表示されて、それぞれに攻撃判定ややられ判定があって、ジャンプさせる事ができたり 走ったりが簡単に作れるようにAnimという形で基本設定がされています。 パラパラ漫画の要領がわかれば誰でもゲームが作れる、そんな素敵システムがOpen BoRなのです。
38 :名前は開発中のものです。 :2021/03/09(火) 23:07:14.40 ID:vWs4Sul9.net Bindentity を使って燃やされエフェクト anim burn @script if(frame==0) フレーム0の時 { void self = getlocalvar("self"); 自分の情報 void e; 仮の入れ物 clearspawnentry(); これから表示用の入れ物をクリア setspawnentry("name", "BurnFX"); 表示用の入れ物に BurnFXというEntityをセット e = spawn(); 入れ物に入れた Entityを出力する準備 bindentity(e, self,0,1,0,1,4); 自分自身に上の Entityをバインド(一緒に動く) } @end_script delay 30 landframe 2 offset 225 198 frame data/chars/test/empty.gif 何も描画しないGIF画像 delay 300 frame data/chars/test/empty.gif delay 20 frame data/chars/test/empty.gif frame data/chars/test/down.gif 自分がダウンした画像
39 :名前は開発中のものです。 :2021/03/09(火) 23:08:13.02 ID:vWs4Sul9.net こんな感じで BurnFX(燃えた画像)というEntityをModels.txt で設定しおき。 Anim Burn はもともと炎上攻撃に対するリアクション専用 Animで Painと同じように使います。 炎上攻撃 burn {x} {y} {right} {down} {damage} {knockdown} {block} {noflash} {pausetime} {z} アタックと同じようにつかいます。 他にShock電撃 Freeze冷凍など とはいえエフェクトを用意しておかないと、あまり効果は感じません。 これの便利なところはキャラ(Entity)毎にやられパターンを作らずとも 共通のエフェクト(例ではBurnFX、冷凍ならFreezFXとか)を作れば あとは Bindentityで貼り付ければいいわけです。
40 :名前は開発中のものです。 :2021/03/13(土) 00:39:54.70 ID:eh+j2tUI.net 上でも少し触れましたが、基本はパラパラ漫画の要領で 1枚ずつ絵を表示して、その絵に攻撃判定ややられ判定を一緒に添え付ける事を繰り返してゆく。 一連の動作にしてゆくことになります。 動作のうち大雑把な纏めとして Anim(Animationの略)という括りで動作の整理が行われます。 攻撃その1なら Anim Attack1、ジャンプなら Anim Jumpなどなど ただどのAnimでもかならず Frame という画像を表示するコマンドがほぼ必須で 例えば Anim Attack だからといって、いきなり Attack 0 0 30 80 10 0 0 0 10 10 などと書き込んでも機能しません、対というか属する Frameが必要になります。 Frame data/chars/test/test.gifなどと一緒に記述してはじめてAttackなどが機能します。
41 :名前は開発中のものです。 :2021/03/13(土) 16:15:01.43 ID:R+3whepu.net 日本語による解説 ありがたいです。 自分の思い描いた ゲームを(たぶん) 気軽に作れるのは 魅力的ですよねー
42 :名前は開発中のものです。 :2021/03/13(土) 18:45:04.39 ID:5eJPgycF.net いきなり質問何ですが、OpenBORstatsのLevel Designウィンドウの右上にある チェック項目のPTrans ってFrontとPanelsの透過色の設定と言う認識で良いんですかね? 下の画面に反映される場合と反映されない場合があって悩んでいます…。
43 :42 :2021/03/13(土) 18:46:37.43 ID:5eJPgycF.net 上の質問は自分で作っているゲーム内の話ではなくて、他の方がすでに作ったゲーム内の ステージを見てみると言う事です。
44 :名前は開発中のものです。 :2021/03/13(土) 22:15:34.36 ID:eh+j2tUI.net >>36 Attackの説明にて {Z}の所、ここが0だと同じ座標に並ばないと攻撃がヒットしません。 たとえば 10にすると攻撃者から手前側と奥側にも10ドット分判定が発生し攻撃があたり易くなります。 必殺技などは60なんて数値にすれば、かなりの敵を巻き込む事ができます。 同じように Bbox(やられ判定)でも {Z}の指定は可能で、数値の分やられ判定に厚みがでます。 大型の敵などに設定すれば、見た目の割りにスカスカで当たらないといったことも少なくなりそうですね。
45 :名前は開発中のものです。 :2021/03/13(土) 22:37:41.47 ID:eh+j2tUI.net >>42 さん せっかくスレが立ってたので適当な事をダラダラと書き綴っていました。 OpenBoR Statsに関しては、とくにLevelDesignとか殆どやったことがなかったので 透過色に関しての設定があるなんて今まで知りませんでした。 色に関しては結構いろいろ設定があるようで、グローバルなパレットを使うだの 個別に設定するだの、Drawmethodでさらに設定できるだの、 色々ありすぎて基本手を出さないようにしてます。 あと、私の使ってる OpenBoR Statsは0.53という古いもので Levelを読み込むと色々透過前の色のままドバっと出てきます。 公式で話題になってるのはの 0.67のようですね。 0.67で見てみると、確かに右上にチェックボックスがあり、そこをチェックして 左上2番目のリロードを押すと、透過された表になりますね。
46 :名前は開発中のものです。 :2021/03/13(土) 23:16:12.22 ID:eh+j2tUI.net 攻撃動作の設定例 anim attack delay 4 offset 46 87 frame data/chars/karin/94.gif hitfx data/chars/karin/sounds/karin_5-2.wav delay 6 attack 54 8 67 50 10 0 1 0 10 20 offset 46 87 frame data/chars/karin/95.gif offset 46 87 frame data/chars/karin/96.gif これは適当なキャラの攻撃 Animになります Delayというのは言葉からなんとなく想像できるかと思いますが 次に実行される Frameが数値分の時間表示されるというもので、 単位はおよそ100分の1秒、ゲーム(MOD)中では基準となる時間が流れていて その中で、Delay 4であれば100分の4秒間 Frameで指定された画像が表示される訳です。
47 :名前は開発中のものです。 :2021/03/13(土) 23:28:50.14 ID:eh+j2tUI.net Offsetはこれ以降に表示される Frameの基準点(X座標の中心とY座標の0ベース(地面と接地する点))の 設定になります。100x100の画像を表示するとして例では左から46ドットが縦の中心線、 上から87ドットが地面と接する点となります。 毎回設定しなくても同じ座標でよければ1回で以降も機能します。 Delayに関しても同じ描画時間でよければ1回で以降も同じ時間表示されます。 そしていよいよ本番の Frameこれが無ければ何を設定しても機能しません。 基本、どんなコマンドも絵(Frame)と一緒ではじめて効能が発揮されると考えてOKです。 上の例では 94.Gifを一回表示して。 次に 95.Gifを表示すると共に Attackコマンド(攻撃処理)を実行。Hitfxは攻撃が当たったら鳴らす効果音。 そして 96.Gifを表示して終わる。 というもの、いろいろ記述されていて面倒そうですが、分かってしまえば単純ですね。
48 :名前は開発中のものです。 :2021/03/13(土) 23:43:16.40 ID:eh+j2tUI.net これらを踏まえて見てみると Offset 46 87て3回書いてるゃん? はい無駄です anim attack delay 4 offset 46 87 frame data/chars/karin/94.gif hitfx data/chars/karin/sounds/karin_5-2.wav delay 6 attack 54 8 67 50 10 0 1 0 10 20 frame data/chars/karin/95.gif frame data/chars/karin/96.gif 一気にキレイになりました。 これDelay 6の所をDelay 9なんてすると 95.Gif、96.Gifが少し長く表示されます さらに95.Gifと96.Gifの間に Delay 6と記述することで 95.Gifが他より長く表示され 人間の視覚的に強調される感じとなり、見ようによっては重い攻撃といった印象に なる(なって欲しいな)かと思います。 こんな感じで動作に味付けしてゆきます。
49 :名前は開発中のものです。 :2021/03/14(日) 01:12:03.76 ID:Xy6iR8cQ.net 結構便利なコマンド Anim Block が記述されているとSpecialボタンを押すたび Anim Blockが実行されます。 さらに Entityのヘッダー(HealthやらMpやら記述するとこ)にHoldBolck 1と記述しておく事で Spcialボタンを押している間ずっと Anim Blockが実行され続けます。 記載された言葉どおり 主に防御動作に使うものですが、基本一人でゲームを遊ぶ場合 防御動作だけでは、いわゆる固められてジリ貧になるのは目に見えてます(もちろんMODによりますが)。 で、この Anim Blockの面白いところは、Bboxを設定しておき、そこに敵の攻撃(Attack)が ヒットすると、Anim Blockpainに処理が飛ぶというところ、そうここには別にやられ動作を仕込む必要は無く 逆に Attackコマンドを仕込むことで 防御すると 自動で反撃にすることもできるわけです。 自動で反撃にには他に Counterrangeがあり、こちらの方が汎用性がありますが @Cmdや@Scriptを使わずとも既存の処理だけでプレイヤーの手数を増やすという意味で とても効果的だと思います。 私はすぐ頭沸騰してしまい中々有用な手は思いつきませんが、Cancelコマンドも合わせると かなり可能性は広がると思います。 ただただ攻撃連打して、敵が集まったらSpecialで一掃みたいな単調な展開になりにくくなるかな。
50 :名前は開発中のものです。 :2021/03/14(日) 01:15:14.34 ID:Xy6iR8cQ.net 訂正 HoldBlock 1 です。 あとこれを使うと Special技(Anim Special)を使うには A(攻撃ボタン)とJ(ジャンプ)を 同時押しする必要があります。
51 :名前は開発中のものです。 :2021/03/14(日) 01:32:53.13 ID:Xy6iR8cQ.net 私の例文で AnimとかAttackとかアルファベットの大文字で記述している所 もし万が一参考なんかにする事があったら、できるだけ実際には anim や attackなど 全て小文字で記述して下さい。 基本どちらでも良いのですが、Open BoR Statsなどで読み込むとき コマンドの頭文字を大文字で記述していると認識されないことがあります。 スクリプトなんかを記述するときは大文字小文字区別するんで なかなかに面倒ですね。
52 :名前は開発中のものです。 :2021/03/14(日) 02:06:32.98 ID:Xy6iR8cQ.net counterrange {start} {end} {condition} {damage} FollowAnim と一緒に使う事で少なくとも4種類の追加動作をすることが出来る。 以前は CounterFrame といって特定のFrameを指定する必要があったのが {start} {end} とあるように範囲指定(0から99とか)できるようになったので、 CounterRange を記述したAnimが実行されている間にBboxに敵のAttackがヒットしたら 追加動作(Anim Follow1〜4)に処理を飛ばす事ができるようになった。 followanim {value}ここに1〜4の数値を指定して処理を飛ばす。 Blockもそうだったけど、Bboxを設定しておかない機能しない。 似たものに CounterAttack 1というのがあるが、これは自身のAttackコマンドのヒット判定が 敵の Attackで指定した範囲にも効果が及ぶというもの、いわゆる相打ちOKて感じ。
53 :名前は開発中のものです。 :2021/03/15(月) 23:34:43.67 ID:bg70rxpE.net anim jumpforward delay 12 offset 34 104 frame data/chars/karin/167.gif @cmd clearspawnentry();setspawnentry("name", "test") @cmd bindentity spawn() getlocalvar("self") 0 1 0 1 0 1 offset 34 104 frame data/chars/karin/168.gif Bindentityが少し成功の兆し、上のAnimはジャンプ中にレバー前入れ攻撃 Attackコマンドは記述してないので、今は格好だけですが "test”という名前のEntity(MODELS.txtで設定したもの)を同時に表示するというもの。 それなら Custentity testでSpawnframe 2とかで十分でしょ? 一応それでも十分な効果は得られるんですが、 それだと親Entity(仮)168.gifが移動すると、子Entity(仮)"test"が置き去りにされて なんか間抜けになってしまいます。 がBindentityを使えば親と一緒に子も動くのです。さらに機能として、向きの調整や 子Entityに複数にAnimを記述しておけば、親と同じAnimを実行させる事ができるのです。
54 :名前は開発中のものです。 :2021/03/15(月) 23:49:59.96 ID:bg70rxpE.net bindentity(entity, target, int x, int z, int a, int direction, int bindanimation, int sortid) これが基本の書式ですが、貼り付けるEntity、貼り付けられるTarget、 TargetのOffsetに対してX,Z,Aドット調整して表示、Directionは向きを合わせるか反対にするか常に同じ向きか、 少し分かり辛いのがBindanimationで上の例では貼り付けるEntity(子)のほうのAnimのFrameが終わったら 自然と消去される。1だとTarget(親)と同じAnimだけ実行。 2ならTarget(親)のFrame数ともリンクさせる(面倒そうだけど、上手くできたら凄そう)。 3は機能無しで、4はTarget(親)のAnimと常にリンクして動くEntity(子)にAnim Attack1など 設定しておけば、Target(親)がAnim Attackを実行したとき一緒に実行される、 一緒に実行できるAnimが無いと消滅(KillEntityされる)。この4の機能が面白いですね。
55 :名前は開発中のものです。 :2021/03/16(火) 00:31:34.32 ID:t+wd47Is.net >>49 のBlockに関連したコマンドとして guardpoints {int} intというのは整数という事です。ここで設定した数値分ガード(ブロック)できる。 guardrate {int} 上の数値の回復レート、mpのように設定した数値ずつ回復します。 そしてGuardPointがBlockするたび減ってゆき0になると下のAnimが実行される事になります。 Anim guardbreak Block系は結構いろいろ設定が可能なようで、 thold {int}これを0で設定するとほぼ全ての攻撃をブロックしたり、 逆に10など設定しておけば11以上の攻撃はガード不能になります。 似たものにblockpain {int}があって、ここで設定した数値ぶんBlockすると Anim Blockpainに処理が移行する。 敵やNPC用に防御率を設定するコマンドもあり。nopassiveblock {bi} biというのは 0か1 この辺の設定をしっかりすれば、防御の駆け引きも作れそうですね。
56 :名前は開発中のものです。 :2021/03/16(火) 17:28:14.56 ID:FVENZVHs.net project fgcというmodが格闘ゲームのように奥行きの無い2D作品です。しゃがみ動作もできるようになっているので2D研究用にも良いかもしれない。ver1.4辺りが手に入りやすい。
57 :名前は開発中のものです。 :2021/03/16(火) 23:36:37.91 ID:t+wd47Is.net FollowAnim 1 FollowCond 1 上の条件“同じAnim内のAttackがヒットするとAnim Follow1へ処理が飛ぶ”というものです。 @cmd changeentityproperty getlocalvar("self") "animation" openborconstant("ANI_FREESPECIAL1") Frame data/chars/test/empty.gif このコマンド文で強制的にFreeSpecial1に処理を飛ばすこともできます。 CounterRangeやCancelを使っても出来ることですが、力技で飛ばすのもたまには良いかも。 下の行のFrameはOpen BoRのお約束、基本的にコマンドには属するFrameが必要だから。 Attackコマンドの判定を消すには Attack 0という記述が必要です(もしくは別なAnimに移行する)が、これにも Attack 0 Frame data/chars/test/empty.gif といったように属するFrameが必要になります。
58 :名前は開発中のものです。 :2021/03/16(火) 23:42:20.95 ID:t+wd47Is.net スクリプト系は大変便利なコマンドが多いのですが無言で落ちたりするので注意も必要です。 あとお約束として@cmd 以降はアルファベットの大文字小文字を区別するのでさらに注意です。
59 :名前は開発中のものです。 :2021/03/17(水) 00:14:15.58 ID:qqhuc2mx.net なんだか色々偉そうに書き込んでますが、私は他人の作ったMODに ぼくのかんがえたさいきょうのって感じで 無限などから拝借ゲフゴフしたプレイヤーキャラを登場させて悦に入る事しかできません。 まったくもってOpenBoRの仕様を理解しているわけではありません。 上の方のGuardPointsについてもAttaker側にGuardCostが必要だったり各コマンド実際には さまざまな制限があります。 ですが、まああ、とりあえず弄って遊んでみましょう、時に新しいコマンドの使い方発見や 万が一MODなんか出来ちゃったら嬉しくない?というのが、私のやりたいことです。 スクリプトなんかについても他人のを勝手にコピペして動いた!ヤッター!程度のものです。 私が書き込んだのを信用してエラー落ち頻発で悶絶しても悪しからずでお願いいたします。
60 :名前は開発中のものです。 :2021/03/17(水) 01:27:39.23 ID:qqhuc2mx.net 頼みの綱 DCマニュアルには 操作ボタンの中で Accepted action inputs are: A: Attack button A2: Attack button2 A3: Attack button3 A4: Attack button4 J: Jump button S: Special attack button K: Alternate special attack button とありますが、 この一番下のKボタンてどこなんだろ?
61 :名前は開発中のものです。 :2021/03/17(水) 01:36:13.25 ID:qqhuc2mx.net すぐ下にBlockのKだからSpecialと一緒、BはBackで使ってるし、 コマンド指定で混乱しないようにモッダーさんが自分で選んで使ってね 的なことが書いてありました。 ググル先生やディプル先生がいなかったら一生判らないですよ。 座標指定についてもXZA(Y)だったりXA(Y)Zだったり 微妙な違いがあって、悶絶案件は尽きないですね。
62 :名前は開発中のものです。 :2021/03/19(金) 02:35:44.16 ID:hdeOB3k/.net Palette none 私にとって結構重要なコマンド Open BoRでは基本システムで用意されたパレット(絵の具のパレットと同じような意味)を 使ってFrameで指定された画像が表示されるのですが、ご存知の通り画像にも色々な種類があって、 常に共通のパレットで画像が描かれると不都合(肌色が緑とか)が出てしまう訳です。 そこでPaletteコマンドを使い、専用のパレットを指定して画像を表示することになりますが、 結構面倒だったのが、モデルのヘッダーでPalette noneを宣言することによって、 次の最初のFrameのパレットを基準として、以降のFrameも描かれることになります。 他のEntityや多彩なFlash(ヒット演出)を使うとき便利です。
63 :名前は開発中のものです。 :2021/03/20(土) 01:30:17.59 ID:nx9KiXPx.net com A2 freespecial 普通は上のように設定する事で A2を押すと Freespecialが発動します。 anim walk cancel 0 99 0 A2 freespecial2 loop 1 delay 6 frame data/chars/test/test.gif このように Anim WalkにCancel(3つ目の数値が0なのでA2押せばいつでも)を仕込む事で Walkはレバーを入れている方向に歩くというAnimなので、 Comで設定してなくても実質 レバー入れA2 が成立し、 Freespacial2に処理が移行します。 Anim Runに入れれば レバーx2 A2が実質成立しますし、 Run Attackとの2択みたいなことも簡単にできますね。
64 :名前は開発中のものです。 :2021/03/20(土) 02:36:39.18 ID:nx9KiXPx.net grabin {type} {distance} つかみに関するもので格闘ゲームの吸い込みみたいな forcedirection {dir} 相手を無理やり自分とは反対側に向かせたりする damageonlanding {value} {type} 吹き飛ばし攻撃で地面にFallすると追加ダメージとか dropv {height} {speedx} {speedz} 吹き飛ばし攻撃の高さや距離を、別ラインに強制移動させたり nokill {bool} この攻撃ではHP1を残して生かしておく stun {int} 設定した時間、硬直させる(Freezeみたいな) seal {time} {energy} SpecialやFreespecialを設定した時間使用できなくする forcemap {map} {time} 設定した時間強制的にmapのパレット色にする noreflect {bi} Anim PainやAnim Fallに移行させずダメージを与える jugglecost {int} 打ち上げ攻撃からの追撃(おてだま)回数管理 OTG {bi} Anim Fallずみの相手にもAttackをヒットさせたり guardcost {int} Blockしてる相手のガード削り DOT {Index} {Time} {Mode} {Force} {Rate} 設定した時間徐々にダメージを与える staydown {rise} {riseattack} 強制的にダウンさせたままにする、起き上がり攻撃も遅らせる これらは、基本Attackコマンドと一緒に使う事になります。 BurnやFreezeなど元々特殊な効能のあるAttackコマンドの派生とは別に、 特殊な状況を作り出すのに便利です。
65 :名前は開発中のものです。 :2021/03/20(土) 02:43:58.72 ID:nx9KiXPx.net 例えば Attack 0 0 50 50 0 1 0 0 0 0 dropv 4 1 0 こんな感じで設定すると、 Attackはダメージ0だけど吹き飛ばし効果あり そしてDropvにより 吹き飛ばしの効果に上昇4横方向1奥行き0がプラスされます いわゆる おてだま するとき便利ということになります
66 :名前は開発中のものです。 :2021/03/21(日) 02:32:40.10 ID:xsxh/Aen.net 悶絶案件 Anim ChargeAttack(一定時間攻撃ボタンを押して、離すと発動)のタメ時間を設定する ChargeTime これは、Anim ChargeAttackの中に記述しないと(例えばヘッダーとか) 落ちます、エラーログに原因が出力されずに。 マニュアルをちゃんと読めば何処で宣言すべきか書いてはあるんですが、 他のコマンドでは間違った場所でも特にエラーも出ず、無視されることが多いのに、 上のようにエラー出力せず無言落ちするものも一部ではあるので、油断できません。 ChargeAttack自体使い辛い(特にボタンを押してタメてるとか表示されない)ので、 滅多に使わないんですけどね、専用FXの設定とかあれば良いのですが。 逆にそういうのがエラー原因だとなかなか特定できなくて悶絶。
67 :名前は開発中のものです。 :2021/03/30(火) 01:38:56.46 ID:1gbSxSh3.net Anim Throw なにげに Anim Grabからの派生だと思ってしまうかもしれませんが 単体(Anim Grabが無くても)で使用可能です。 Entityのヘッダーなどで設定(宣言)した GrabDistanceの距離に近づくと勝手に投げます。 ダメージもThrowDamegeで設定できます。 手数が増えますね。
68 :名前は開発中のものです。 :2021/03/30(火) 02:02:18.70 ID:1gbSxSh3.net それならAnim Grabに攻撃コマンドを設定したら? Anim Grabの最後のFrameで一旦停止して入力待ちになってしまいます。 なので、上の直接Throwは実際には手数少なくなります。 OpenBoR のシステム上、Anim Grabからの派生 GrabUp、 Grab Down、 GrabForward さらにそこからのAttack3や各Grabの2への合計6回分の攻撃が使えなくなるためです。 しかし、Anim Grabからの一時停止によるテンポの悪さは無くなるので、 いきなりThrowは、そこまで悪手でもないのかなと個人的には思います。
69 :名前は開発中のものです。 :2021/03/30(火) 10:33:03.24 ID:1gbSxSh3.net 訂正 ThrowDamege X ThrowDamage O Grabに関して、6回分の攻撃? ThrowやAttack3(GrabAttackなどの3撃目)を出さなければ、 掴み抵抗など何も設定してない敵に、 2系(GrabUp2などの2系はGrabから3撃目のフィニッシュ攻撃)までAnimを用意してあると、 連打せずポチ・ポチとボタンを押す事で各方向2回ずつ攻撃できる(GrabUp・GrabDown・GrabForward分)ので 掴んだらやりたい放題になります。 ムゲンからのキャラ流用なんかだとモーションが余る事が多いので、 派生技が多くなるのは便利です。
70 :名前は開発中のものです。 :2021/04/05(月) 10:33:40.89 ID:JCfKgngn.net ロケットヴァイパーのシステムや敵をまるごと流用してるのに作りが雑なbriga de rua(英訳street fight) キャラクター作りに愛が無い感じで正直微妙な出来 スクリプトの内用を理解しつつ改変してるようなので それなりの技術力はありそうなのにゲームバランスやキャラの作り込みが 今一なんでなんとも勿体無い ただわかる範囲では3まで作られているんで力尽きてるようでもなさそう 作者さんは飽きっぽい方なのかな
71 :名前は開発中のものです。 :2021/04/06(火) 01:42:29.99 ID:XHHis+ii.net Anim Follow#に処理を飛ばせる Followanim#これは Grabの派生攻撃であっても記述すれば効果あるので anim grabdown delay 8 hitflash Flash2 hitfx data/sounds/beat4.wav frame data/chars/test/ga1.gif followcond 1 followanim 4 attack 92 114 28 39 13 1 1 0 10 frame data/chars/test/ga2.gif こんな感じで組み込み、Follow4なんかには よく使う攻撃なんか設定しておけば、その他のAnimとも共用できるので 便利に使えます。 一回しか使わないなら、そのまま記述しても良いのですけどね。
72 :名前は開発中のものです。 :2021/04/08(木) 01:35:22.90 ID:91QCSGqP.net いろいろなMODを楽しんでいると、いつものメニュー画面とは違ったものに出会う事もあるかと思います。 基本OpenBoRではDATAフォルダの中を読み込んで、各種メニューやセレクトシーンなどに移行するのですが (level.txtだったりBGSフォルダの中だったり)。 DATAフォルダ直下にScript.txtが用意してあって中に、alwaysupdate 1などと記述してある場合 DATA/SCRIPTSフォルダ内にある Updated.cが優先して読み込まれ中に記述されてるスクリプトが実行されます。 MOD内で普遍的に使用されるスクリプトもここで定義されている事が多いので、 まずはここを探してみるのも良いかもしれません。
73 :名前は開発中のものです。 :2021/04/08(木) 02:02:29.42 ID:91QCSGqP.net 訂正 level.txt → levels.txt updated.c に関しては update.c(公式ではこっち)ですが、どちらも優先して読み込まれるようです。 こちらのスクリプトに記述するメリットは、オープニングメニューを派手にしたり、 その場でゲーム難易度などを変更可能にしたり、キャラにレベルアップの要素を仕込むときや 拡大縮小、ゲームの演出上の一時停止を組み込んだりなど、基本システムへの介入を可能にする事でしょうか。 各キャラ(Entity)に一つずつスクリプトを記述する手間が省ける(setglobalvarなどで変数を渡すだけで色々処理できる) ような感じでしょうか。可能性は無限大になりますが、作る側に立つと脳天炸裂案件ですね。
74 :名前は開発中のものです。 :2021/04/09(金) 17:18:04.09 ID:ncGtWkZW.net 開発中断か別なプロジェクト名に変わったのかも知れない Demon Sluga 思い切りスクリプト使って 拡大縮小、キャラクターを飛ばしたり奥や手前から敵が出現したり、誘導弾を弾き返したり 全盛期のアーケードゲーム風に作られてます 手に入るヴァージョンによってかも知れませんが海外の環境依存文字を使っているため 一部手直ししないとステージ1すら始まりません 見るべきところは models.txt data/misc data/misc/plane この辺りの pu・i.txtやpu・d.txt、pu・.gif、 それらを呼び出すplaneb2.txtなどに関連するファイルの手直しになります
75 :名前は開発中のものです。 :2021/04/09(金) 17:33:36.00 ID:ncGtWkZW.net 幼少の頃ゲームセンターで見た ノリマロが大活躍するRescue Command remake 敵はオンナサンばかり 面白いのは 掴まれた時のレバガチャ要素 抜け出せないとダメージはもちろん、別なイベントに移行したりと 有効に使われてます。 ゲームバランス的に敵の攻撃力が高いのであれなら defense all 0.1などモデルのヘッダーに記述して調整しましょう
76 :名前は開発中のものです。 :2021/04/10(土) 10:53:12.10 ID:36EPLB+j.net anim idle loop 1 delay 22 offset 23 102 bbox 13 5 22 100 drawmethod shiftx 0 frame data/chars/ciel/std1.gif drawmethod shiftx 0.02 frame data/chars/ciel/std1.gif drawmethod shiftx 0 frame data/chars/ciel/std1.gif drawmethod shiftx -0.02 frame data/chars/ciel/std1.gif アニーメーションさせるなんて絵描けないしって方は上のようにすると 一枚の元絵が左右にゆらゆらします。 drawmethod shiftx 0 数値の0は何もしない、 +−の数値を入れる事で数値分元絵が変形します。 他に Scale 大きさ Rotate 回転など様々なオプションあり。
77 :名前は開発中のものです。 :2021/04/11(日) 00:13:20.60 ID:9LUoOlWn.net 以前にCancelで気軽にダブルジャンプと書きましたが anim jump loop 0 cancel 1 9 0 j freespecial3 landframe 3 offset 33 121 delay 16 bbox 19 5 31 73 frame data/chars/ciel/jmp1.gif frame data/chars/ciel/jmp2.gif frame data/chars/ciel/jmp3.gif delay 12 frame data/chars/ciel/jmp4.gif anim freespecial3 jumpframe 1 2 1 landframe 3 offset 33 121 delay 16 bbox 19 5 31 73 frame data/chars/ciel/jmp1.gif frame data/chars/ciel/jmp2.gif frame data/chars/ciel/jmp3.gif delay 12 frame data/chars/ciel/jmp4.gif 具体的にはこんな感じ
78 :名前は開発中のものです。 :2021/04/11(日) 00:19:43.51 ID:9LUoOlWn.net 上の例では見たとおりAnimの表題だけ変えて中身はほぼ一緒 anim jumpland loop 0 cancel 2 9 0 a freespecial2 delay 9 offset 33 72 frame data/chars/ciel/jmp5.gif frame data/chars/ciel/jmp5.gif frame data/chars/ciel/jmp5.gif これはジャンプの着地に攻撃(A)ボタンを押しておくとFreespecial2発動 Anim Landなんかに同じような記述しておけば、投げられ受身に 反応してFreespecialを発動なんてことも自由です。
79 :名前は開発中のものです。 :2021/04/11(日) 00:32:07.96 ID:9LUoOlWn.net cancel 2 9 0 a freespecial2 この記述だと Frameの2〜9の間に Attackコマンドの有無に関係なく(0) aボタンが押されたら FreeSpecial2を実行 え?例ではFrameコマンド3つしか無いけど? スタートフレーム(2)は大事ですが終了フレーム(9)に関しては多すぎても 特にエラーにはならないようです。 3フレームで入力なんてきついなー、Delay 9となっているのでFrameコマンド 1つにつき100分の9秒あるんで、格闘ゲームみたいに忙しくなることはありません。
80 :名前は開発中のものです。 :2021/04/11(日) 00:41:33.67 ID:9LUoOlWn.net 訂正 3フレームで入力 → 1フレーム Frameの数え方なんですが、コマンドでフレーム数を数える場合 どうも1番目は 0と数えるようです。 なのでFrameコマンドは 0,1,2の3フレーム Cancel コマンドの記述は 2、9とありますが9フレーム目なんてないので Cancel コマンドの判定は 2フレーム(3番目)の一つのみになります。 このFrame数を数えるのが以外に面倒で、Cancelコマンドなどは特に問題にならないのですが LandFrameやThrowFrameなど間違えるとゲームが遅延したりすることもあるので注意です。
81 :名前は開発中のものです。 :2021/04/12(月) 01:07:22.51 ID:rapSeOc5.net スクリプトを無理やりねじ込む didhitscript @script void main() { void self = getlocalvar("self"); void tar = getlocalvar("damagetaker"); void anims = getentityproperty(self,"animationid"); if(tar != NULL()) { if ( anims == openborconstant("ANI_ATTACK3") ||anims == openborconstant("ANI_FREESPECIAL5") ||anims == openborconstant("ANI_FREESPECIAL6") ||anims == openborconstant("ANI_FREESPECIAL7")) { tossentity(tar, 4, -1, 0); } } } @end_script 普通はSCRIPTSフォルダに〜.cな感じで入れておくのですが、 特定のEntityでしか使わない時には、 ヘッダーに上記のようにスクリプトを直接記述するという手もあります。 Didhitscript というのは、こちらの攻撃がヒットした際に参照されるScriptで この辺はOpenBoR側で規則が設定されているので、他人の使い方を参考にしたり DCマニュアルを読み込むしかないですね。
82 :名前は開発中のものです。 :2021/04/12(月) 01:15:42.00 ID:rapSeOc5.net 上の例では、Void Main(){ }となっています。これは攻撃ヒット判定が行われるたび 毎回参照されるという意味になります。 C言語準拠の記述になるので、この辺の記述や演算子については、 適当にC言語 演算子などで検索してみてください。 で、内容としては、何らかのターゲットに特定(Attack3やFreespecial#)の攻撃がヒットしたら いつもより大きく吹き飛ばします(TossEntity)。 それぞれのAttackコマンドにDropvなど設定すれば同じ効果は得られますが、 このスクリプトを使う事でAnim単位で動作を変化させる事ができるのがメリット。
83 :名前は開発中のものです。 :2021/04/13(火) 00:39:56.52 ID:r7OWv6Qx.net void EnemySpawn(float fX, float fY, float fZ) { void self = getlocalvar("self"); void vSpawn, vName; int iMHealth = getentityproperty(self,"maxhealth"); int iHealth = getentityproperty(self,"health"); int iDirection = getentityproperty(self, "direction"); int iR = rand()%10 + 10; if (iR >= 0 && iR < 4){ vName = "roxi"; } else if (iR >= 4 && iR < 8) { vName = "Yanyu"; } else if (iR >= 8 && iR < 12) { vName = "Sakura"; } else if (iR >= 12 && iR < 16) { vName = "Spiral"; } else { vName = "Heiderna"; } clearspawnentry(); setspawnentry("name", vName); if (iDirection == 0) { fX = -fX; } fX = fX +getentityproperty(self, "x"); fY = fY +getentityproperty(self, "a"); fZ = fZ +getentityproperty(self, "z"); vSpawn = spawn(); changeentityproperty(vSpawn, "position", fX, fZ, fY); changeentityproperty(vSpawn, "maxhealth", iMHealth); changeentityproperty(vSpawn, "health", iHealth); changeentityproperty(vSpawn, "direction", iDirection); }
84 :名前は開発中のものです。 :2021/04/13(火) 00:46:02.19 ID:r7OWv6Qx.net 上のスクリプトは、vName="Spiral"や"Sakura"など5種類の敵(Entity)を ランダムに出現させるものです。 changeentityproperty(vSpawn, "maxhealth", iMHealth); 最大HP changeentityproperty(vSpawn, "health", iHealth); 現在HP changeentityproperty(vSpawn, "direction", iDirection); 向き この辺は好みでランダム(rand()%200+ 50)とか設定しても良いでしょう。
85 :名前は開発中のものです。 :2021/04/13(火) 00:50:45.59 ID:r7OWv6Qx.net name REnemy type Enemy health 100 nomove 1 1 nodrop 2 lifespan 1 defense all 1.0 offense all 1.0 animationscript data/scripts/REnemy.c load roxy load Yanyu load Heiderna load Sakura load Spiral anim spawn delay 10 offset 1 1 frame data/chars/misc/empty.gif @cmd EnemySpawn 0 0 0 frame data/chars/misc/empty.gif anim idle delay 100 offset 1 1 frame data/chars/misc/empty.gif これをMODELS.TXTにEntityとして設定します。 spawn REnemy alias Island_Guard map 1 coords 500 270 at 3200 そして好きなLevelのテキスト内に上のように記述すれば、そのポイント到達するたび 設定したランダムな敵(Entity)が出現するわけです。
86 :名前は開発中のものです。 :2021/04/13(火) 00:57:10.12 ID:r7OWv6Qx.net ステージを作ってるとどうしても内容を覚えてしまったりで、 だんだんテストプレイも飽きてきますので、ちょっとした気分転換になるかな? 敵を増やしたとき、スクリプト側とモデル側を少し書き換えるだけで登場させられるので 少しだけ手間が減らせるかなと思います。 もちろんEntityでさえあれば良いので、登場させるのはNPCだってITEMだって良いわけです。
87 :名前は開発中のものです。 :2021/04/13(火) 01:17:53.40 ID:r7OWv6Qx.net @cmd EnemySpawn 0 0 0 frame data/chars/misc/empty.gif この部分を @cmd EnemySpawn 0 0 0 @cmd EnemySpawn 40 0 0 @cmd EnemySpawn 80 0 0 frame data/chars/misc/empty.gif なんてすれば、敵が3人ずつ登場します。
88 :名前は開発中のものです。 :2021/04/13(火) 01:36:45.64 ID:r7OWv6Qx.net Anim Blockを設定してしまうと、Special用のボタンを押すたびAnim Blockが実行されてしまい Specialは標準攻撃(A)とジャンプ(J)の同時押しで発動ということになります。 Anim Blockに攻撃モーションを設定したり、Anim BlockPainに攻撃を設定したりすれば 攻撃にもカウンターにも使えるので、想像力次第でいかようにも使えるのですが。 OpenBoR側でもともと設定された機能としてSpecialだと攻撃を受けたり、掴み攻撃を受けたり そんなときも1ボタンでSpecial発動できるメリットもあるわけです。 そんなとき意外と忘れられがちなSpecial2(レバー入れスペシャル)にガードポーズを組み込み FollowAnim#などで反撃モーションなど入れておけば、1ボタンでスペシャルの利便性を残しつつ ガードも可能になります。もっと忘れられがちなのがジャンプ中にSpecialのJumpSpecial もともとジャンプには垂直(JumpAttack)レバー上ジャンプ攻撃(Anim JumpAttack3) レバー下入れ(Anim JumpAttack2)前方ジャンプ攻撃(JumpForward、ForwardJumpと紛らわしい)に Anim RunJumpAttackと多彩な動作が可能なので、あまりJumpSpecialを使う機会は無いのですが。 ついでにコマンド設定 Com D F A Freespecial2などで、 Com B B A Freespecial なんてすると、レバー入力的には ← → Aという事になります。
89 :名前は開発中のものです。 :2021/04/13(火) 18:04:23.86 ID:pM+4VIKL.net 一番出し辛い攻撃はRunSlideだと思う Run→→中に↓ジャンプ、自然な動作としては スライディングかなあ OpenBoRに最初から設定されているAnimは 大概過去に存在したゲームからヒントを得ているぽいね
90 :名前は開発中のものです。 :2021/04/14(水) 00:12:02.00 ID:Bl01iZfT.net Anim Pain @script int Crnd = (rand()%20)+10; if (frame==0 && Crnd>26) { changeentityproperty(getlocalvar("self"), "animation", openborconstant("ANI_PAIN4")); }else if (frame==0 && Crnd>18){ changeentityproperty(getlocalvar("self"), "animation", openborconstant("ANI_PAIN3")); } @end_script 例ではAnim Pain1(攻撃を受けた際のリアクション) 本来Attack2 なら Pain2…Attack4 → Pain4 など対応するAnimは固定されいてる(と思う)。 changeentityproperty(を使って強制的に別なAnim を実行させてみる。 まあ気分転換くらいなものですが、攻撃のリアクションを一つ一つ設定するのって コピペで良いとはいえ結構労力つかうんで。
91 :名前は開発中のものです。 :2021/04/14(水) 00:20:22.41 ID:Bl01iZfT.net 上の例だと、もちろんAnim Pain3とPain4は設定しておかないと駄目です。 いろいろと検索していると、ユニティとかアンリアルとか目にしますが、 一つのゲームを完成させるとなると結構な労力になると思うのですが、 OpenBoRって基本ゲーム(BeatsOfRage)を土台にすれば、ともすれば いわゆるツクールより楽にアクションゲームを完成させることが出来ると思うんです。 やはり知名度なんでしょうか?他人のプログラムの改変であっても、一個のゲームまで いかなくてもキャラ一つでも弄ってみたら嵌ると思うんだけどなぁ スクリプトとか小難しく言っちゃうのが駄目なのかな
92 :kt住江 :2021/04/16(金) 03:27:16.33 ID:kkjyE+N0.net 最近復活しました、kt住江です。 長らくスレから遠ざかってしまい、申し訳ありません。 現在新作としてダブルドラゴンのゲームを創意開発中です。 ↓開発中のダブルドラゴン用敵キャラ ttps://twitter.com/ktsuminoe/status/1379416846458253314/photo/1 そして、kt住江のゲーム保管庫が出来上がりましたので、 皆さま、僭越ながら宜しくお願いします。 ttps://amberusagi.theblog.me/posts/13123474 (deleted an unsolicited ad)
93 :名前は開発中のものです。 :2021/04/18(日) 00:19:35.36 ID:FUfakm3o.net おつかれさまです。 早速、DLさせていただきました。
94 :名前は開発中のものです。 :2021/04/18(日) 20:34:55.61 ID:FUfakm3o.net kt住江氏の作品はやはり流石の出来ですね。 アクションのバランスも良くて、強技出してればクリアなんて事は無く。 微妙なmodにありがちな敵に殴られる位ならスペシャル連打でいいや、なんて事が無いのが素晴らしい。 敵ごとにちゃんと対処しないと1クレジットクリア出来ない、絶妙なバランスで、とても楽しませて頂きました。 グラに関しても解像度が高ければ良いってものじゃ無いのがとても良く分かります。
95 :kt住江 :2021/04/19(月) 18:52:55.18 ID:bjKqc+m0.net >>93 さん DLしてくださり、ありがとうございます。 ごゆっくりと、ゲームをお楽しみください。 >>94 さん ありがとうございます。そう言っていただけると、開発したかいがあります。 現在、ダブルドラゴンのゲームを開発中ですが、 2012年の『ギコタク』から続いて『カオスファイト』『コテハンファイト』 『アインバイン』『くにおくんLA』『巫女と吸血鬼』『削除隊』と7作も作ると、 流石によくある攻撃を仕掛けてくるザコ敵はともかく、 中ボス格の敵キャラのアイディアが狭まってきました。 毎回、どんな攻撃をしてくる敵キャラを出そうかというアイディアで悩んでいますので、 僭越ながら、敵キャラのアイディアを出していただけると大変助かります。 参考に開発中のダブルドラゴンの粗筋をご紹介します。 ダブルドラゴン4でリー兄弟がレネゲーズを壊滅させた数か月後・・・ 西海外の町、サンフランシスコに突如出来上がった格闘道場『フェニックス』の 稽古中を捉えた写真には、死んだはずの宿敵ウィリーの姿が映っていた。 ウィリーが蘇った真相を探るため、ダブルドラゴンはサンフランシスコへと乗り込む!
96 :名前は開発中のものです。 :2021/04/20(火) 22:57:09.31 ID:N5Bx9E2D.net @script { if (frame == 48) { void vEnt,self = getlocalvar("self"); int dx =100,dy=0,dz=0; int dir = getentityproperty(self, "direction"); int tgtdir = 0; if(dir==0) { dx = -dx; } setlocalvar("T"+self, findtarget(self)); void target = getlocalvar("T"+self); void TType = getentityproperty(target, "type"); tgtdir = getentityproperty(target, "direction"); if( getlocalvar("T"+self) != NULL()&&TType == openborconstant("TYPE_ENEMY")) { int Tx = getentityproperty(target, "x"); int Tz = getentityproperty(target, "z"); changeentityproperty(self, "position", Tx+dx, Tz+dz, dy); if (dir == 0) { if (Tx+dx > dx) { changeentityproperty(self, "direction", 1); } else { changeentityproperty(self, "direction", 0); } } else { if (Tx+dx > dx) { changeentityproperty(self, "direction", 0); } else { changeentityproperty(self, "direction", 1); } } } else { changeentityproperty(self, "animation", openborconstant("ANI_FAINT")); } } } @end_script
97 :名前は開発中のものです。 :2021/04/20(火) 23:12:55.15 ID:N5Bx9E2D.net 改行多杉かと思ったら通った。 プレイヤーの周囲にいるTYPE_ENEMYを探して、 いたらENEMYの後方100ドット(int dx=100)にテレポートする。 最初のFrame[==48というのがテレポートを実施したいFRAME数 ここをFrame==0にすれば、いきなり跳ぶ 下の方にANIM_FAINTというのがあるが、これは該当する敵が居なかったときに 移行するAnimで、別にANIM_IDLEなどでもよいし他の技でもいい。 まあ、Move 100とかしてFlipFrameで反対向きにしても、それっぽい事はできるんですけどね。 スクリプトだと結構いい感じにテレポートしてくれるんですが、 どこかに嵌ってる敵にも反応してしまいます(そのまま穴に墜落とか)。 画面の解像度数を拾って+−補正すれば良いのですが、とりあえず、 敵の座標を拾って、そこに移動(プレイヤーの座標を書き換える) 条件を満たさなければ別なAnimに移行する この辺が分かり易ければよいかなと思います。 分かり易く
98 :名前は開発中のものです。 :2021/04/21(水) 00:05:05.46 ID:fX+bN6sg.net X Frame[==48 O frame == 48 or frame==0 X ANIM_FAINT O ANI_FAINT X ANIM_IDLE O ANI_IDLE 間違えると落ちるとこばかりミスった、すいません。 まだ試してませんが、敵に仕込んで跳び先(TType)をTYPE_PLAYERにすれば 後ろにテレポートしてくるウザイ奴にできるかもしれません。
99 :名前は開発中のものです。 :2021/04/21(水) 00:57:17.50 ID:fX+bN6sg.net >>95 見逃していました。いつも楽しい作品をありがとうございます。 DDシリーズとても楽しみです。 どの作品でも、敵キャラの動きに表情というか個性を感じられ 予備動作や「間」にとても愛情を感じる事ができ、 次はどんな技を使ってくるんだろう?と敵を倒さずウロウロしてみたりしてます。 さっさと倒して駆け抜けようとしても強技連打が通用せず意外と歯応えがあったりと バランスの妙に感心するばかりです。 私は、プレイヤーキャラにテレポートや分身をくっつけて激しく連打など プレイヤーの強化しか考えていないので、敵のちょうど良い塩梅の動作というのは 仰るとおり非常に難しいことだと想像できます。 クライムバスターズというMODの敵は多彩な動きをするんですが、 画面を斜めに横断するように攻撃してきたり、空中から遠距離攻撃連打してきたり プレイヤー側の対処する技がSpecial位しか無く、ずっと作業になりがちなちょっとアレなバランス 敵の無敵が長すぎるのもフラストレーションになるでしょうし、難しいですね。
100 :名前は開発中のものです。 :2021/04/21(水) 01:02:42.96 ID:fX+bN6sg.net maxattacks {max} Default is 4. maxattacktypes {max} Sets the maximum number of attack types. PAIN,FALL, RISE, BLOCKPAIN and DEATH animations limit is also set together with this. {max} is number of available types. Default is 10 & maximum value is 99. maxfollows {max} Default is 4. maxfreespecials {max} Default is 8. maxidles {max} Default is 1. maxwalks {max} Default is 1. maxbackwalks {max} Default is 1. maxups {max} Default is 1. maxdowns {max} Default is 1.
322 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者