Ancient-blog みんなでまもって騎士:たまには技術的な話でも
fc2ブログ

みんなでまもって騎士:たまには技術的な話でも

いつもゲームの中身の話が多いので、たまには技術的な話でもしてみようと思います。
とはいっても、中身はほぼ一人で作ってるので、それほど技術的に優れたことはしていません。

キャラが多くて驚く方も多いようですが、特に大したことはしていません。
3Dのゲームとは違って2Dのゲームは毎フレーム頂点数が変わってしまうため、
一つずつ描画依頼を出すとすぐに重くなってしまいます。
そこで、あらかじめ一つにまとめることで描画周りは最適化をしました。
とはいえ、根本的には30フレーム/秒にしたことが一番効果があったと思います。

前作のまもって騎士では60フレーム/秒だったのですが、
本作は画面数や敵の数が何倍にもなっています。
見えない敵は処理を省きたいところですが、
マルチプレイ前提なのでホストにとって画面外でも、
クライアントにとっては違うときもありますので、省くわけにもいきません…。
また、3DSの液晶画面で、しかも画面変化の小さい2Dゲームでは、
60フレーム/秒はそれほど恩恵は得られません。
まもって騎士はキャラもエフェクトも多いので、それなりに効果はあるものの
死守するほどの意義は薄いので早々に見切りをつけて30フレーム/秒でやりたいことが実現できる環境を作りました。

とはいってもやっぱり60フレーム/秒は魅力的なんですよね…。
たまに60フレームモードで動作させたりしてました。
実はシングルプレイならほとんどのシーンで60フレーム/秒で動作しているんです。
マルチプレイになるとさすがにちょくちょく落ちてしまうんですけどね…。
そう思うと3DSのマシンパワーはあなどれないですね。

CPU負荷の話でいうと、このゲームは画面がグリッド状になっていて、
モンスターはグリッドに沿って移動しています。
移動中はほとんどの敵が周囲を見ていないため、数は多くても負荷が軽減されます。
これは通信の負荷にも好影響を与えています。


話しは変わって、キャラが水などに浸かった時に体が半分隠れるのですが、
実はこれが結構大変なんですよ。
ご存知の方も多いと思いますが、ファミコンでは8x8ドットが絵(スプライト)の単位となっています。
小さいキャラはこれを、縦2つx横2つの4枚を正方形に並べて16x16ドットのキャラクターを表現するわけです。
そして、下2つを描画しないことで水没などの表現をしていました。

時代は過ぎて現代の2Dゲームではこうした8x8ドットの制限もなく、
一つのキャラクターを何枚もの絵を組み合わせて表現することができるようになりました。
単純に表現の幅が広がったことも大事ですが、作業コストにも影響しています。
まもって騎士では頭部と体、武器などが別に描かれていて、
スプライトエディターという専用のツールでアニメーションを作っています。
バラバラに作ることで、キャラの量産作業をシンプルにでき、管理も楽になります。

話を戻して、水没の表現をするためには、一定ラインより下の絵を非表示にしないといけません。
ですが、何枚もの絵を組み合わせている以上、どの絵を非表示にすれば
水没感がでるかはプログラム側からは判断できません。
そこで、水に入ったキャラを描画するときに、全体を斜めにして地面に突き刺すことで水没感を出しました。
画面上から見ると絵が斜めになっているとはわかりませんが、横から見ると足元の頂点が地面を突き抜けています。
正確にいうとキャラの足元にいくに従って地面(画面奥)に向かって引き延ばすような処理になります。
この表現は昔っぽくて気に入ってます。

もう一つ面白い処理にラスタースクロールがあります。
オープニングでロゴがうねうねしてるアレです。
本物のラスタースクロールは画面の走査線に合わせて変化を付けていくのですが、
今の時代ならもっと違う方法で実現できます。
ていうか今の時代だとできないかもしれませんね…。

で、普通なら、描画結果を弄った方が楽と思うんでしょう。
ですが、私はデザイナ出身でツールでできることはツールでデータを用意した方が楽だったりします。
下手に新しいことに挑戦するより、手元の知識の応用で実現しちゃったわけです。
まずスプライトエディタで縦1ピクセル幅の横長データを128枚に作りました。
この1ピクセル相当のポリゴンを画面に敷き詰めるとロゴになります。
(プログラマから見ると開いた口が塞がらないようなやり方かと思います…)
あとはそれぞれのスプライトにサイン波で位置を変えてやればラスタースクロールの完成です。
リザルト絵の某タツノコ的スキャニメーション風表現もこれの応用です。
特別なプログラムを描く必要もなく、処理を稼ぐ必要もない場面でしたので、
案外シンプルに実装できたと思います。

[karu_gamo]

コメントの投稿

非公開コメント

No title

みんなで騎士たのしくあそんでます!
アップデートで誤字脱字の修正もあるといいなー

Re: No title

楽しんでいただけてうれしい限りです!
誤字脱字、意外と多かったですよね…。申し訳ないです…。
きちんと直して、より良い物をお届けします。
アップデートはもう少々お待ち下さい!

No title

一人で作られていたんですね!
驚きました
これからも頑張って下さい!

個人的にはPvPとかあったいいなぁなんてw

Re: No title

はい、頑張ります!

続編の構想の一つにローラ姫VSマリア姫的な対戦スタイルはどうかな~とか考えたのですが、
プレイヤーが操作するキャラが敵の姫を切り刻む絵を想像するとあんまりなのでやめました…。
単純にプレイヤー同士で殴り合う分には良さそうですが、
このゲームシステムでの対戦は無理がありそうですねw

こういうのを待ってました

3DSで「みんなでまもって騎士」やっと購入しました!
懐かしいFC起動ネタから始まり、まさかのOP、ところどころはさんだ小ネタもあり楽しいですw
素敵なゲームをありがとうございます!今後も期待しています!

No title

開発お疲れ様です。
楽しく遊ばせて頂いております。

マルチプレイでハード100面を攻略していたところ
相手が姫をもちあげて移動した際、攻撃を受けて(?)
姫を落としてしまい、そのまま敵に囲まれてしまったのですが、
相手側の画面では姫は担いだままということがありました。
ホストは自分側です。
すぐリトライしてしまったので細かく検証などはしていません。
100面は敵の数が多いこともあり仕方ないと思いますが、一応ご報告まで…

他に、ゲーム本体を終了することなく(3DSのスリープやタスク切り替えなどは行う)「ひとりであそぶ」をしばらく続けたあと、
「みんなであそぶ」を始めるとプレイ中にフリーズ→強制終了することがしばしばあります。
そのため、マルチプレイに切り替える際は一度ゲーム本体を終了して起動しなおしています。
この辺の不安定さがアップデートで多少緩和されることを願っております。

Re: こういうのを待ってました

コメントありがとうございます。
長い年月かけて作っていたため、これで良いのか? と不安になることも多かったのですが、
こうして喜んでいただけて本当にうれしく思います。

あまりたくさんのゲームは作れませんが、
また機会ございましたらエインシャントを思い出してください。

Re: No title

バグのご報告ありがとうございます。
大変、助かります。

持ち上げるがらみでクライアント側と同期がとれなくなることがあるようで、
こちらでも確認いたしました。
普通に行動できるのに頭にバリケードが付いたままになったり…
見た目面白いのですが、結構困っちゃいますよね…。
一応対策は取る予定ですが、通信状態が悪くなるとパケットロス率が上がってしまうため、
きちんと同期させるのは難しいところがあります。

数秒遅れで正常化するとか、攻撃したら直った、といった感じにできれば…
と考えております。

マルチプレイ中にフリーズ発生とのこと了解いたしました。
せっかくの皆さまでお楽しみの時間に問題が発生してしまい申し訳ございません。
現状、マルチ固有でのフリーズ現象はサンプルが少ないですが、
いろいろと調査してみたいと思います。
ありがとうございました。

No title

ライトスパークを使ったときの画面シェイクで目が変になっちゃいます
最近はオプションで画面シェイクをON/OFFできるゲームも多いので、
アップデートの際にはぜひご検討願えませんでしょうか

ここのように開発の人に直接意見や感想を言える場があるというのは、
当時のゲームでは全く考えられないことだったと思います
いまこのゲームに、このような場があるということを凄く嬉しく思います。
これからも応援してます!

Re: No title

画面シェイクちょっとキツかったでしょうか?
ライトスパークは後半の調整でMP消費を減らしたので、
使用可能回数が上がりすぎたことも問題かと思ってます。

オプションはもう追加コンテンツが入ってくるといっぱいになってしまって、
項目が足りなくなってる状態だったりします。
また機能追加は基本的には行えない方針ですので、
なかなか難しいところがあります。

ひょっとしたらアップデート後のモード選択時にLボタンを押しながら
項目を選ぶといいことがあるかもしれません。

アップデートと追加コンテンツが遅くなってしまい
本当に申し訳ないと思っています。
皆さまのお声掛けを励みになんとか良いものをお届けしますので、
もうしばらくお待ちください! 応援ありがとうございます。
プロフィール

AncientBlog

Author:AncientBlog
主に家庭用ゲームを開発している(株)エインシャントのブログです。開発中のゲームに関する話題や、社員の日常などをお届けします。
Ancientホームページ


新作「みんなで まもって騎士 姫のトキメキらぷそでぃ」

まもって騎士オフィシャルサイト[JP]
まもって騎士オフィシャルサイト[EN]
ご購入はコチラで!

Twitterアカウント
日本語版/英語版

最新記事
最新コメント
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク