串焼きほるもん

ゲーム制作サークルSMGほるもんXのブログです。製作状況やくだらない話などがメインになります。

※ご注意
R-18要素があります。直接的なものはなるべく記事にしないようにしていますが全年齢版からこられた未成年の方やそういった表現が苦手な方はお気をつけ下さい。
タイトルかタグにR-18のついているものを避けるようにすれば大丈夫だとおもいます。

※Please be careful
There is an R-18 element. I try not to write direct things as much as possible. However, please be careful for minors and those who dislike such expressions.
Please do not refer to the article with the title or tag of R-18.

急がば回れからの道に迷って元の木阿弥!

皆さんお元気ですか?私は元気です。
腰の状態はあと少しで完治って状態からずっと横ばいですが寝起きに気をつけておけば日常生活にはほぼ問題なくなりました。

ですが制作の再開はほぼしていません。
どうも現状のシステムでの面白さに納得がいかないというかなんというか…。
突き詰めていくとおもしろいんじゃないかというアイディア部分に納得がいかない訳ではないんですが、そのアイディア単発ではちょっと弱いというか、そのアイディアと既存のシューティングを組み合わせたのがまずくてアイディアにしばられてゲームの広がりがないというか…まあ要するに迷っているわけです。
で、なにもしないと言うわけにも行かないのでちまちまとイラスト描いたりして技量のレベルアップをはかっておりました。

サマンサさんで厚塗りしてみたり

春麗さんでエロを描いてみたり

ゲームに使うイラストだと全体の統一感とかいろいろと余計なことに気を遣ってしまうけど練習がてら好きに描く分には何も考えず描けるのでそこそこハマりました。

春麗さんはニジエに全身(髪とか細かい部分は未完成)を公開してますのでアダルトな紳士諸君は見に行って抜いたボタンを連打しといて下さい。
未成年の方は閲覧不可ですよ。
ちなみになぜか乳首だけ差分を描いてるんですが、全部重ねて出力してしまったので真っ黒になっちゃってます。
それはそれであんなことやこんなことをされまくったので黒くなったと想像すればエロ度アップするかもなのでそうしてください。
閲覧するときに効果音再生でJK系かお姉さん系の興奮_弱にすると雰囲気あっていいですよ。
ニジエの効果音再生機能はなかなか良いですね。
髪の毛と装飾品に影をつければ1枚ものとしては完成するので近いうちに差し替えれたらいいなと思っています。
最終的にはコス差分とか表情差分、そしてエロテキストを入れられたらいいなと思っていますがその前にゲームの制作に戻れバカ。
それはそれとして左のブログパーツにニジエのマイページへのリンクを追加しときました。
これからエロイラスト関係はニジエに投稿しようと思いますのでよろしくお願いします。

という事で重金属ガールの制作は全くすすんでいませんが、実はゲームを作りたい気持ちは逆に盛り上がってきたおります。
現状、堕ちる捜査官制作凍結、重金属ガール制作休止、金字塔と冥府の王2制作はぼんやり考えてるだけというなんとも中途半端な状態ですがベルトスクロールアクションが作りたい病が再発してます。
そういう意味でゲームを作りたい気持ちが盛り上がってきております。
実はCF2.5を購入してすぐにベルトスクロールアクション制作のためのテストをしています。
定期的にベルトスクロールアクションは作りたくなるのです。
ですが判定的なものがなかなか難しいのです。
頭のなかにぼんやりとイメージがあれば制作はすぐなのですが一体どうやっているのかということが全く想像もつかなければ作りようが無い訳でして、ベルトスクロールアクションはイメージのない部分が非常にたくさんあるのです。
例えば8方向移動は簡単ですがそれにジャンプをつけるとなかなか一筋縄ではいかなくなります。
攻撃にしても単純に拳や足に判定をつければ良いわけではなく奥行きによって当たり判定が変化します。
要は画面上ではY座標一つで位置が変わるのに対して画面内のキャラクターは高さと奥行きという二つの要素で位置が変わるのでその判別をしなくてはならない訳です。
そしてその判別をプレイヤーキャラはもちろん敵キャラや地形、障害物やアイテムに至るまで全てやらなくてはならないのです。
ジャンプの下降も奥から手前への移動もどちらもY座標がプラスされていきますが障害物に当たった時ジャンプ下降中なら障害物の上へ乗るし、移動中なら障害物に当たった所で停止しないといけません。
障害物の上に乗ったらそこで移動できないと駄目ですし、そこからはみ出るようだと落下しないといけません。
他に投げなどのアクションにもいろいろなパターンがあります。
参考に過去発売された様々なゲームをプレイしたり動画をみたりしていますがやはり詰まるところは同じみたいで、ジャンプとか段差の無いものや投げのないものなどなにかしら要素を絞って発売されているものも結構ありました。
もちろん、投げの無いものは剣や魔法といった投げる行為が不自然に思える世界観であったり、ジャンプの無いものは代わりに緊急回避や連続技などのアクションが豊富だったりと、要素を絞っている事が必ずしも技術的問題ということではありませんが、私の場合は技術的な足かせをごまかす為に要素を絞るということになるのでそれは本意ではないんですよね。
そんなわけで過去何度もベルトスクロールアクションが作りたい病が発病しても、なかなか良い妥協点がみつからない為本格的な制作に突入したことはないのです。

ゲームを作りたい気持ちはあるが重金属ガールを作りたい気持ちは醒めてきていると言うことを考えるといまは気分転換にサマンサのドキドキトレジャーハンティングみたいな小規模なゲームを作るのが良いのかもしれないな。
ちなみに重金属ガールの肝の部分を活かすのに奥行きつけるのはありかもしれないと思ったのですが、最近流行っているアズールレーンとかいうゲームが動画を見る限り奥行きのあるシューティングみたいな感じだったのでこのタイミングで奥行き追加はなぁ…しかもこっちも舞台海だし…。

そういうことでしばらくは迷走すると思います。
今月中には決断して年内に新作を1本は発売するつもりで頑張ります。

それではみなさんごきげんようさようなら。

久しぶりの…

皆さんお元気ですか?私は元気ではありません、Sです。

ここ10日ほど何もしていません。
朝起きたら起き上がれないくらい腰が痛むという謎現象が起きたからです。
腰痛の起きた当日と翌日はまともに動くこともできず大変でした。
その後も直立しているか寝ているかのどちらか以外の姿勢では腰が痛み、その痛みをかばうために無意識に身体の変な部分に力が入っているため体中(主に背面)が疲労で痛むというなかなか素敵な状態でした。
不幸中の幸いだったのは動けなかった二日間の派遣のお仕事がたまたま休みだったことと、その後の派遣のお仕事は腰に負担がかからないように作業すれば普通にこなせたことでした。

そんなこんなでだましだましやってきたのですが2日ほど前から少々前屈みになったところで腰が痛むようなことがなくなったのでようやく作業を再開できるんじゃないかと思って簡単なイラストを書いてみました。

サマンサラフ

金字塔と冥府の王からサマンサさんですね。
ラフスケッチに適当に色をのせただけのものなのでそれほど時間はかけていませんが腰回りがじんわりと悲鳴を上げてきたのでこれで終了。
うん、30分とか1時間くらいなら普通にこなせそうです。
無理して腰痛が再発してもいけないので毎日短時間の作業をしつつ養生したいとおもいます。

今年中には重金属ガールを完成させたいと思っていますがどうなることやら。

そういう訳でみなさんも腰には気をつけましょう。
今回の場合は寝てる間の出来事なので気のつけようもありませんが…(;´Д`)

ではまた今度!ばいちゃノシ

やる気がでな~いっ

みなさんこんばんは
タイトル通り最近やる気が低空飛行のSです。

やる気がでない時みんなはどうしてるかな?
私は旨いもん食べたりお酒を飲んだりします。
ところがここ半月ほどそういうことをしてもどうにもやる気が回復しません。
今日も朝からやる気が停滞していたので派遣のお仕事が休みだったのもあり外で昼飯と食べて気分転換しようと思ってでかけたのですがお目当てのラーメン屋は閉店していました。
仕方がないので別のラーメン屋に行くも臨時休業…結局適当な店で定食を食べて来ました。
やる気メーターはガッツリ下がりましたね、はい(;´Д`)

ちなみにやる気がないときに絶対やる気が出てくる方法をひとつだけ知っているのですがそれはなかなか実行できません。
その方法は「やる気がなくてもやる」ということです。
やってたらだんだん作業にのめり込んできてテンションも上がってきます。
それを繰り返すうちに毎日やる気に満ち溢れてきます。
ですが肝心のやる気がない状態なので開始することが至難の業です。
会社でのお仕事なんかだとやる気がなくてもやらされるのでこのパターンを実行するのは容易なのですが個人での作業となるとわかっててもできないときはできません。
大抵は無理やりCF2.5を起動してやればいつのまにか作業に没頭しているのですが、最近のパターンはCF2.5で製作中のプロジェクトを開くと「あーっ!!」となって閉じてしまいます。
重症ですね。
ちなみにテレビやゲームなんかをしようと思っても同じ状態なので制作意欲が沸かないというよりは生活自体に意欲が沸かなくなっているようです。

そんなこんなで今日もまた1日を無駄に過ごしてしまうのか?
それをするとさらにやる気が失せるので今日は制作に近いところでイラストを描いていました。

ドナ

ドナ・ドラモンドさんですね~♪
天空城と密林の王 Donna Drummond Chronicle 2(仮)(金字塔と冥府の王2)をイメージしてみました。
背景はマチュピチュの写真を加工しただけです。
パブリックドメインのやつだから問題ないはず。

思ったより上手く描けたのでやる気も少しだけ湧いてきました。
この調子で制作作業に近い事を継続していって制作作業のやる気の回復をしていこうと思います。

というわけで今回はここまで!
次回更新時には作業報告できるといいな~。

ばいばいノシ

CF2.5でレーザーをつくったよ

みなさんこんにちは、最近は身体を酷使しすぎて疲れが抜けないSです。

今回はCF2.5でレーザーをつくったので忘れないようにいつものようにメモ記事にします。

レーザーをつくるのは意外と簡単で細長いオブジェクトを発射オブジェクトから発生させてやればそれだけでいけます。なんせ光の速さで発射されるのでいきなり画面端まで届いても全く違和感がありません。強いて言えば発射される前に光が集る様な発生モーションと終わったときに徐々に細くなって消えるモーションをいれてやれば完璧です。実際そういうゲームも多いです。

だがしかしっ

重金属ガールはシールドで防ぐんだよぉぉぉぉっ!!!

という訳で何かに遮られたときにそこで止まるレーザーを作りました。



2パターンあります。(動画はそのうちの超連射方式版です)

一つ目は金字塔と冥府の王で使った方法なのですが細長いレーザーの画像をX軸の方向のみスケールを変更して伸縮させてやる方法。
この方法の利点はあらゆる意味でお手軽ということ。
欠点は直線にしか発射させられないことと画像をアニメーションさせられないということ。

二つ目は小さい弾を切れ目なく連射して1本のレーザーに見せる方法。
この方法の利点は軌道を好きに変えられることと、見た目を自分の好きなようにできること。
欠点は制御があらゆる意味で難しいということ。

です。
今回もサンプルを置いておきますので見たい人はどうぞ。

ダウンロード

大まかな所はサンプルのイベントリストにコメントを入れているのでわかると思いますので今回の記事も補足説明に留まります。

今回はforeachループとそれを使ったオブジェクトの同期を理解していないと難しいと思います。

foreachループはアクションにあるカウントの中の「各オブジェクトにつき」というやつです。
これは高速ループとは違い文字通り「各オブジェクト」につき処理を行うということです。
もう少し詳しく説明すると同一のオブジェクトが複数あるときに一括処理ではなくオブジェクト一つ一つ個別に処理するということです。
この同一オブジェクトというのは複製で作ったオブジェクトのことでオブジェクト名も完全に同じものになります。クローンでつくったものはオブジェクト名の後に数字がついてオブジェクト2みたいになりますがこちらは別オブジェクトになるので気をつけてください。
通常、同一オブジェクトの処理は全て同じ処理をするか個別に処理するかをCF2.5側で勝手に判断して行っています。
例えば「障害物と衝突」という条件が入っていればその衝突したオブジェクトだけにアクションを適用してくれたり、「常に実行」の条件下で変数Aに1を追加とあれば存在する同一オブジェクト全ての変数Aに1が追加されたりします。
条件次第である程度バラバラにオブジェクトの処理をすることは可能なのですが意図した動作をしてくれないことがよくあります。特に同一オブジェクトの処理を同一時間(1フレーム内)で行うとよく変な動作になります。
そんなときforeachループを利用します。

で、今回は更にそのforeachで処理する各オブジェクトに別の各オブジェクトを同期して処理しています。

同一ではないオブジェクト同士を同期させるにはインビルドペアなどいくつか方法がありますが今回は固定値を利用した方法を採用しています。
オブジェクトにはそれぞれ個別の認識番号である固定値が設定されています。
親になるオブジェクトの固定値を子になるオブジェクトの変数に代入して固定値と変数が同じなら処理するというイベントを組めば別のオブジェクト同士を同期することができます。
この方法の利点はオブジェクトの作成されるタイミングも同期するオブジェクトの数も関係なく処理できることです。
例えば巨大なキャラに破壊できるパーツを5つ作って同期させてやることも簡単にできます。
全てのパーツオブジェクトの変数に巨大なキャラオブジェクトの固定値を入れてやって、条件に「巨大なキャラの固定値=パーツオブジェクトの変数」を入れてやればよいのです。

ただし巨大なキャラが複数体になったときにおかしな挙動になることがよくあるのでforeachと組み合わせるわけです。

各巨大なキャラにつき~
パーツオブジェクトの変数=巨大なキャラの固定値

みたいな感じですね。
変数を比較するときに基本的にはforeachを指定するオブジェクトは後ろにもってくるようにしてください。
条件で指定する場合どちらのオブジェクトを先にもってくるかでアクション時にピックアップされるオブジェクトが変わってくるためです。
あくまで自分の経験則によるものであってCF2.5がどういう風に判断しているのかが重要なので上手く動作しないときは逆にしてみるといいかもしれません。

このサンプルでは

親オブジェクト(発射台)の固定値
レーザー根本の識別番号

の2つで同期を取っています。

どの発射台(固定値)から発射されたレーザーで何番目(識別番号)に発射されたレーザーなのか、という認識です。

また小ネタとして
経過フレーム数 mod 2 を利用して

=0 偶数
=1 奇数

という条件もつかっています。

ではサンプルファイルの説明ですが

スケール変更方式はレーザー根本とレーザー本体とレーザー先端の3つのパーツで構成されています。
レーザー本体は細長い1枚の画像でこれのX軸のスケールを変更してレーザーを伸縮しています。
ホットスポットとアクションポイントを両端に持ってくることで拡縮しても根本と先端がきっちりと位置同期するようになっています。
計算しやすいように100ドットの長さで作成してあるので0.01単位で変化させれば1ドットづつの伸縮が可能となっています。
無限に伸ばすのもあれなので最長は表示領域の最大値640にしています。
スケールに換算すると6.40ですね。
障害物に当たったときは高速ループを利用して1フレームで障害物にギリギリ当たらない長さまで縮小しています。
こちらは比較的シンプルにできました。
そしておかしな挙動もないのでいろいろな場面で利用できます。

続いて超連射方式ですがこちらもレーザー根本とレーザー本体とレーザー先端の3つのパーツで構成されていますがレーザー本体にアニメーションが2パターンあります。
こちらは360度撃てるようにベクター動作で移動します。
その際、レーザーとレーザーが連なって見えるようにレーザーの長さ16ドットと同じか少し短い距離を移動するように速度を1550(いろいろ試した結果ベクター動作は速度100で1フレーム1ドットの移動になるようです)に設定しました。上下左右の4方向なら1600でも良いのですが中途半端な角度になると一部隙間が確認できたので少し短めの1550で設定しました。
レーザーをアニメーションーのパターンAとBが交互になるように発射します。
レーザー根本で1フレームごとに照射時間をカウントしておきその値が偶数か奇数かでアニメーションシーケンスを切り替えています。
発射された後はアニメーションのフレームはレーザー根本と同期させています。
レーザーの先端は最初の1発だけ発射してあとはそれを使いまわしています。
レーザー本体が障害物に当たらなかったときはそのまま画面外へ出ていき、画面外では絶対に利用しないであろう位置に強制移動して待機。
レーザー本体が障害物に当たったときは障害物に当たったレーザー本体の位置に移動します。同時にレーザー本体が破壊されるのであたかも障害物に当たってるかのようにみえるというカラクリです。

こちらは苦労してつくりましたがいろいろとつくりが甘く状況を考えて利用しないと行けないレベルの出来です。
具体的には
障害物に遮られた時に障害物より先のレーザーは破壊されないので飛んで行くのが見える。
まあ消滅するのもおかしな話なのでこれはこれでありなんだけど、そのとき障害物に遮られるレーザーが2つ以上存在することがあるのに対しレーザーの先端は1つしかないのでおかしなことになります。
レーザーを薙ぎ払うパターンにしたときに先端が明後日の方向に飛んでいったりもします。
もう少しいろいろと考える余地は残っているのですが重金属ガールで想定される使い方ではこれで問題ないのでこれで完成としています。
最終的には雷電IIのプラズマレーザーみたいなのがつくれたら良いな~とおもっていますが先は長い。

誰かこれ改造して作ったサンプルうpしてくれてもいいのよ|д゚)チラッ

という訳でいよいよ重金属ガールにも光学兵器が登場しますがこのサンプルを上手く移植できるでしょうか…心配です。

制作もゆったりとしたペースですが進んでいますのでのんびり完成を待っていてくださいね。

それでは今回はこの辺で!
アデュー(´・ω・`)ノシ



CF2.5での自機動作を自分で作ったよ

皆さんこんばんは
9つ工場の一番搾りを手に入れビール三昧の日々を送っているSです。

今回は重金属ガールの制作でPMOを使用せず移動処理を組んだのでその際にサンプルとして作った重力制御とスムースな加減速のmfaファイルを解説&公開したいと思います。
いつも通り自分メモとして記事を書きますので自分以外の人がみてもわからないかもしれません。
参考にする方はCF2.5のチュートリアルのチョコブレイクと縦スクロールシューティングあたりは理解していないときついと思います。

が、その前に…

前回の記事で急遽実施したアンケート結果の発表で~す!

なんと予想の3倍以上の10票入りました!!
有難うございます。
そして

堕ちる捜査官・・・・・3票
重金属ガール・・・・・4票
金字塔と冥府の王2・・3票+1票

となりました。
金字塔と冥府の王2の+1票はアンケート期間の終わった後にツイッターで寄せられた票です。
ツイッターの集計期間は7日までしかないのですができれば1ヶ月と1年と無期限をつけて欲しいですね。

情報の露出量から考えて妥当な結果となりました。
という訳で心置きなく重金属ガールの制作に邁進できます。
残り2つはいつでも制作を開始できるようにネタを溜めていこうと思います。


ここからCF2.5での自機動作のサンプル公開と解説します。

最初に
  • 衝突マスク
  • 高速ループ
  • mod
  • abs
  • int
を使っているので簡単に説明しておきます。

衝突マスクは特定の座標が「障害物」もしくは「はしご」かを判定するもので条件のストーリーボードコントロール(チェス盤と馬みたいなアイコン)にあります。

高速ループは指定した回数同じ命令を繰り返すためのものです。条件、アクションともに特別(歯車アイコン)の中にあります。
何らかの条件を使用しアクションでループを開始。
条件でループ実行中を選び繰り返したいアクションを入れる。
といった使い方をします。
最低でも2行使用します。

「mod」「abs」「int」は数式です。
数値Aを数値Bで割った時の余りを出すのが「mod」で「数値A mod 数値B」というように使用します。
例えば「13 mod 10」とすれば「3」と返してくれます。

「abs」は絶対値を返してくれます。
絶対値ってのは0からどれだけ離れているかを表しています。
わかりやすく言うとプラス・マイナスを除いて数字だけを返してくれます。
「abs(-3)」も「abs(3)」も「3」と返してくれます。

「int」は小数点以下を切り捨ててくれます。
「int(1.41421356)」の場合「1」となります。

詳しくはCF2.5のwikiを見てください。

ではサンプルの解説です。

まずは重力制御サンプルです。
フレーム「ゲーム的重力制御」のリストにコメントを入れているのでみればわかると思います。
基本的な考え方としては

重力→落下速度の最大値
重力加速度→1フレームごとに加算される速度
落下速度→現在の落下速度

となり落下速度分オブジェクトを下に移動させることになります。

条件・落下速度が重力より下
アクション・落下速度=現在の落下速度+重力加速度

条件は空中にいる時が判別できればなんでも良い
アクション・オブジェクトのY座標を現在のY座標+落下速度

文章にするとわかりにくいですがサンプルの重力基本の所をみれば理解しやすいと思います。

後は障害物に衝突したときに落下速度を0にするなりフラグなりなんなりで空中判定から地上判定へ切り替えてやれば重力制御の完成です。

ここまでできればジャンプに関しては落下速度をマイナスにしてやれば勝手に上昇した後落ちてきます。
重力を5、重力加速度を1、ジャンプ力を4とした場合
  1. 落下速度を-4にする→落下速度に加速度を加える--4+1=-3→Y座標を-3(3ドット上昇)
  2. 現在の落下速度は-3なので加速度を加えて-2→Y座標を-2
  3. -2+1=-1
  4. -1+1=0→落下速度0なのでこのフレームではオブジェクトは移動しない(ジャンプの頂点)
  5. 0+1=1→ここから落下し始める
  6. 1+1=2
  7. 2+1=3
  8. 3+1=4
  9. 4+1=5
  10. 以降は重力の5を超えてしまうので毎フレーム5ドットの落下
内部的にはこんな感じになります。
1フレームでの移動量が-3,-2,-1,0,1,2,3,4,5,5~と徐々に変わっていくのがわかると思います。
あとは重力と重力加速度をいろいろといじってやれば自分の納得できる挙動ができるのではないかと思います。


次に小数点以下の移動サンプルです。
こちらは1フレームに1ドットの移動よりも遅い移動を実現するためのサンプルです。
しかしゲーム画面がピクセル単位で構成されている以上1ドット以下の移動はできません。
なので1ドット以下の移動の表現は経過時間と絡める必要があります。
どういうことかと言うと

1フレームに0.5ドットの移動は不可能

2フレームに1ドットの移動は可能

ということです。

ここからは説明が難しいのでサンプルをみて解析してほしいのですが考え方としては

最低速度は1フレームに1/100ドット移動、つまり100フレームに1ドット移動とする
移動開始と共に経過フレーム数をカウント
カウントが100に達したら1ドット移動してカウントを初期化
加速して速度が2/100になったら50フレームに1ドット移動なのでカウントの上限を50に設定

といった感じ。

加速時のパラメータは
  • 現在の速度(移動速度)
  • 加速度
  • カウント(移動用タイマー)
  • 移動するタイミング
の4つになりリスト的には

移動開始とともに移動用タイマーを常に1加算していく
同時に移動速度に加速度を足していく
移動するタイミングは100を現在の速度で割った値
移動用タイマーの値が移動するタイミング以上になったら1ドット移動

となる。
現在の速度が100を超えたら機能しなくなるのでここでmodを利用しています。
移動速度 mod 100 として0~99を繰り返してます。

移動速度が100を超えたら上記の移動分に加えて1フレームにつき「int(移動速度/100)」ドット移動させています。
intを使って小数点以下を切り捨てています。

小数点以下の移動と1フレームに1ドット以上の移動の2つの処理を組み合わせて作っています。

減速に関しては移動速度から減速度を引く処理をするだけで他の処理は加速と兼用です。
移動の反転時は減速と加速が同時に働くように組んだので入力がない場合と反転入力がある場合とでは制動距離がかわるようになっています。

う~~~~~~~~~ん

そんな感じ!

あとはmfaファイルみてとしか言えない。
そもそもこの記事は後々自分がみて思い出せればいいのだ!←身も蓋もない(;´Д`)

最後にこのサンプルを経てできた重金属ガールの挙動がこちらになります。

ダウンロード

CGがつくと結構それっぽい動きになってますね。

カーソルキーとZXVキーで操作します。
サマンサのドキドキトレジャーハンティングのキーコンフィグプログラムをコピーしてexeファイルとおなじ場所に置けばキーコンフィグもできちゃうぞw

ジャンプとかできちゃいますがプレイヤー操作でジャンプする予定はありません。



しれっとα版を配布しつつ今回は終わりたいと思います。
ではでは!

DLsite作品一覧
DMM作品一覧
itch.io作品一覧
訪問者数
  • 今日:
  • 昨日:
  • 累計:

記事検索
最近のつぶやき
  • RSS
  • Dlsite blog