ゲーム開発会社がゲーム製作技術を伝授するスレ
■ このスレッドは過去ログ倉庫に格納されています
ワールドワイドソフトウェアという開発会社の者です。\n 社員がゲーム開発の質問に可能な限りお答えします。\n http://www.wwsft.com/ \n 長年RPGを中心に開発していますが、シミュレーション、アクション、スポーツ、ペット育成、麻雀など多くのジャンルの開発経験があります。 >>586 で、オブジェクト管理というか、表示用マップ情報を、破壊されたら、上記の仕様の場合0(背景)にしてしまえば、その回は再描画されない、と。 横レスですいません。 >>585 >>589 585さん 弊社はファミコン開発は行ったことがございませんので、 グラディウス自体は判りますが、ファミコン版2面の仕様がすぐには判らないです。 589さんのご助言のように二次元配列でBGを管理すれば実現できます。 (もし今、弊社がグラディウスっぽいゲームを作るならそうします) 589さん、ご助言ありがとうございます。 余談ですがファミコンを調べたところ解像度は256×224(240)ドットでした。 仰る通り軽い判定で実現できますね。 みなさん回答ありがとうございます。 背景配列とのあたり判定だったんですか。弾幕ゲームの考え方とは根本から違ったんですね。 レーザーも背景にしてたとは意外でした。 アーケード版の画面一杯に伸びるレーザーはオブジェクトですよね? (グラディウスに限らず) ついでに気になったのですが、雷電のうねうねレーザー(蛇みたいにぐるぐるうねって動く)の当り判定はどうやっているんでしょうか? レーザーの始点と終点を細切れオブジェクトで配列で繋いで描画と当り判定をしてるんですかね? グラディウス 2面 雷電 レーザー で画像検索すれば だいたいのイメージは出てきます >>594 おまえが質問してんだから画像くらい貼れよ ひどいな >>599 聞いてくるのは良いんじゃね。 それより、お前に聞いちゃいねぇってのに、しかも自論全力の奴が笑えるw そんなに質問して欲しけりゃ、同じ様にスレ立てろってね。 質問してる側からすれば、誰が回答したって回答は回答だろう。 意見が多いほうが取捨選択もしやすいし 明らかにそれおかしーだろって回答も無さそうだし。 ならなぜこのスレに書き込むのか?…質問スレに人いねーんだもん >>593 雷電のうねうねレーザーをYoutubeで調べ、たぶんこんな感じだろうというものをプログラミングしました。 http://www.wwsft.com/sp/ 当たり判定は、一般的な方法、すなわち距離による判定か、オブジェクトが重なったかの判定で可能です。 レーザーのうねうね具合で、一見すると何か特別な判定が必要と感じられたのかもしれませんが、 1つずつ撃ち出される弾の判定と同じになります。 >>602 見てる側からしたら名無しの無責任な回答は社員さんのじゃましてるとしか思えんよ 回答は沢山あってもまったく問題ないが スレ仕切りたいマウント君はほんと邪魔 どうも。 火種になって申し訳ありません。 なので、 不特定多数の質問に、心優しい不特定多数が答えるというスレを建ててみました。 【ゲームで、この処理ってどーやってんの?】 https://mevius.5ch.net/test/read.cgi/gamedev/1527678545/ >>606 貴方はたぶん火種になってませんよ。 マナー的に断り入れてから入ってますし、少なくとも私には、善意のだいさんしゃとして映っています。 489-491みたいな、お前はアミバそっくりだな奴が要らない子です。 駄スレでした。では。 >>607 最後にします。 フォローありがとうございます。 m(_ _)m 雷電初期のうねうねレーザー、それを書けるプログラマが辞めてしまったので途中から無くなったそうな・・・mjd? さすがに質問を不特定多数が答えるのは、質問スレでいいのでは・・・ >>603 レーザーの進行方向laDに、ターゲットへ向かうようにlaPを加減算すのですね。 あのレーザーってたまに円軌道を描くから、laPのインクリメントはいらないような気がするなぁ。 (一定時間生き延びたレーザーは、laDへの加減算が行われなくなるイメージ) C系しかやらない俺には、 HTML?とJavaScript?でここまで書けることに目からウロコだw >>603 動作つきの画面まで作ってくださりありがとうございます! 実際のプラズマレーザー(正式名)の動きにするにはまだまだ改良しないといけないようですが、非常に参考になります。 俗名はリーマンレーザー(会社帰りのリーマンが好んで使うため)と言うらしいです。 なんでlaDにlaPを加減することでああいう軌道に変化するのかがイメージしづらいですが・・・。 発想がすごいです。 >>603 なるほどなるほど。 複雑な計算しなくても面白い挙動は作れるんですね。 勉強になりました。 >>615 リーマンレーザーは止めろぉ‼ (金融システム畑) >>613 オイオイ 続編のほうが技術レベル低級なのかよw RPGとかのセーブデータですが、やはり暗号化して保存しているのでしょうか? >>619 619さん 簡単に解析できるハードや環境であり(例:パソコンでローカルに保存する) 暗号化すべき内容のゲームであれば、暗号化するはずです。 パソコン用のゲームでもデータを解析されて問題ないものは暗号化していないでしょう。 各ゲームによって暗号化の必要があるか、無いかが重要です。 例えばキャラを成長させ他のユーザーと対戦するゲームで、データをローカルに保存するなら暗号化の必要があります。 (今はそういった内容のゲームであればサーバ保存が多いですが) ちなみに弊社がスマホ用に開発したアプリで、セーブデータが解析されても問題ないものは暗号化しません。 R -TYPEの反射レーザーはどうやっているのでしょうか? 地形に応じて反射後のレーザーの長さも変わってますが >>623 623さん ご質問の意味は、 ゲーム会社勤務の社員は「高度プロフェッショナル制度」の対象になる人が多いのですか? というものとして回答します。 高度プロフェッショナル制度について調べまたところ、年収1000万円超の方が対象らしいです。 ゲーム業界にはそんな高給取りはほとんどいません。 以前も書きましたが、ゲーム業界は(同じようにコンピューターを扱う他の業界と比べ)一般的に低賃金でして 好きだからやってられるけど、、、という現場も多数存在します。 ですので高プロ対象者に該当する方は極少数だと思います。 >>624 624さん 「R -TYPE 反射レーザー」でググった画像と(昔遊んだ記憶を頼りに) こんな感じだろうというものをプログラムしました。 http://www.wwsft.com/sp/ レーザーの長さを管理する方法もありますが、その方法では障害物の反射で支障をきたす恐れがありますので、 “レーザーを短い線が何個もつながったもの”としてプログラムしています。 おまいら、何でも作ってくれるからって課題とか宿題とかそれとなく出すなよ >>626 ありがとうございます。かなり再現性高いですね ひょっとして残業で作ってくださったのでしょうか(汗)。 細切れを繋ぐ方がゲーム中も多分色々と扱いやすいんだろうなと思えました。 効果音ww 確かにゲーム制作に関わる技術かもしれねーけどさw 素材使うこともあるしシンセでイチから作ることもある。 >>629 629さん 630さんの仰っているように、 ・素材集(法人が商用利用可能なもの)から加工する ・サウンド担当者が一から作る いずれかです。 ちなみにJavaScriptなら、プログラム的に音を作り出せる仕様が各ブラウザに実装されつつあり、 将来的には簡単なSEであればプログラマーが直接音を流す(処理を組み込む)と思います。 >>631 ありがとうございます。 tone.jsとかあるんですね。 サウンド担当者はどうやって採用に至るのでしょうか?どういった点を見られるのですか? 作曲は社内で行うのでしょうか? ちょっと考えれば分かるような技術的な質問より (ってかちょっとは考えろよ的な)、 こういう質問のほうがいいな。 音作成というとドンブラを弾いているイメージ(SHROBAKO脳) >>632 DTMの掲示板を見てると、難聴や耳鳴などの症状に悩まされてる人が多いみたいだけど、 正規雇用している会社では、労災責任問われないように就業規則を徹底してるのかな 治癒不可の難聴・耳鳴を患わせてしまったら取り返しの付かない十字架になるが、一方で、頭のおかしい生産性ゼロの被雇用者に仮病でたかられたらたまったもんじゃないからな しかし個人差もあるだろうから、難聴や耳鳴などの労災回避を保証する科学的根拠・基準なんて、設定しようがない >>632 サウンドは現在、主に外注で作っています。 必要な時にホームページでサウンドクリエイターを募集 ↓ 応募して下った方のサンプル曲を視聴 ↓ 弊社のカラーに合う曲を作れる方を採用 という感じです。 過去に作って下さったクリエイターさんにまたお願いすることもあります。 >>635 意外と専属で雇っているわけじゃない場合もあるんですね。参考になります。 素材がどうのこうの言ってた人です。 外注メインなんですね。 応募しようと思ってたのに。 作例は、プログラム初学者にシンプルでわかりやすいコードに書かれてありありがたいです。 ジャンプの実際の横アクションでは、左右移動しながらジャンプすると斜めジャンプになるのと、カーソルが左右に入ったまま着地した後そのまま移動できると思うので、実装の際はどうすればよいか等ワンポイントヒントがあれば尚良いと思いました。 なんかもう初心者の都合の良い回答マシンにさせられちゃってるな 肝の部分は提示されてるんだからワンポイントヒントのところは自分で試行錯誤できないもんかね 1が不満言っていない以上、他がとやかくいうでない。ほんといちいち難癖つけたがる奴はいるもんだな。 黙って仕事する人ほど突然辞めるし、不満を言う人ほど長く続く >>638 >>639 >>640 >>641 638さん 仰るようにプログラミング初心者向けに、できるだけシンプルなコードで書いていますので、 同時キー入力は省いていたのですが、今後のサンプルには必要そうなコメントを書いておくように致します。 639さん、640さん、641さん 639さんの仰るように、ご自身で調べられることがプログラミング力の向上につながりますが、 初心者の方は何を書けばよいか全く判らない方もおられると思いますので、できる限り回答します。 同時キー入力は需要があると思うので、サンプルを用意しました。 http://www.wwsft.com/sp/ このスレをご覧になっている方の中にはシューティングやアクションゲームを 作りたいと考える方が多いのではと思い、STGを想定したサンプルも用意しました。 プログラミングのご質問を下さる皆さん、よろしければご確認ください。 >>642 おまえもそれを散々いわれてきたんだろw 同時押しの考え方は非常に参考になりました。 シューティングの実例はプログラミングの習得のモチベーション上がりますし ゲーム制作の取っ掛かりになりますね。 ありがとうございました。 モチベーションがあがる?? 製作の取っ掛かりになる??? 3軸を持つ、つまり奥行きと左右以外に空中の概念がある ベルトスクロールアクション(特に判定)はどのように作成したらよいでしょうか? 折を見て検索したり、書籍を探してはいるのですが、まずベルトスクロールの作例自体がほとんどなく、 稀に合っても2軸(プラスせいぜいが空中フラグをboolで持つ程度)ばかりです 中身は3Dそのもので見た目を2Dに見せるように作っていますが、 古くはくにおくんなども2Dで実現しているゲームもあり、効率が悪いのではないかと常に疑心暗鬼で身が入りません 最近はスマホゲームなどでも2Dベルトスクロールがありますが、どのように作っているのでしょう >>649 649さん ベルトスクロールのサンプルを用意しました。 http://www.wwsft.com/sp/ 3次元座標(X,Y,Z)をベルトスクロールする画面(2次元座標)に変換するところがポイントです。 ※変換の計算は各ゲームの画面構成に応じ調整します、今回はやや上から見下ろした感じにしています ジャンプ中のbool(trueかfalseか)だけでは(既にご理解頂いておりますように)接触判定がうまくいきません。 ジャンプ中の高さをZ軸で管理し、Zの値(及びX,Yの値)を使えば、空中での接触判定も問題なくできます。 (補足) 古いアクションゲームでは座標変換しないものもあるようですが、今回の方法であれば様々な画面構成に応用できます。 奥行への動きは別に勝手に斜め移動しなくてもいいような。 ファイナルファイトやダブルドラゴンはこんな動きしないですよね。 >>651 651さん 斜め移動させない場合は function beltX(x, y, z) { return parseInt(x-y/2); } ↓ function beltX(x, y, z) { return parseInt(x); } とすればよろしいです。 ただ画面構成を判りやすくするために表示しているラインもまっすぐになります。 説明にも書きましたが、皆さんが作られるゲームの画面構成によって座標変換の式は変えて頂くわけです。 >>652 ありがとうございます。この動きはこれはこれで参考になるのでありがたいです。 >>650 ありがとうございます、考えてもいない解決法で目から鱗が落ちました しゅごい FOR-NEXT 10億回ループまとめw追加&補正 Linux版Firefox60.0.2更新記念編 JavaScript(Core i7 8700K、IE11)....................................... 1.271秒 [Win10p64] + (*3) JavaScript(Pentium Gold G5400、Firefox60.0.2) ..... 1.308秒 [Linux....64] # New ! (*1) JavaScript(Core i7 8700K、edge)........................................1.329秒 [Win10p64] + (*4) JavaScript(Core i7 4770K、IE11)....................................... 1.581秒 [Win10. 64] + JavaScript(Pentium Gold G5400、IE11)......................... 1.589秒 [Win10. 64] JavaScript(Pentium Gold G5400、edge)..........................1.613秒 [Win10. 64] JavaScript(Core i7 4770K、edge)........................................2.102秒 [Win10. 64] + JavaScript(Celeron G1820、IE11) .................................... 2.272秒 [Win10. 64] JavaScript(Celeron G1820、edge)..................................... 2.992秒 [Win10. 64] JavaScript(Atom x5-z8300、IE11) ................................... 8.372秒 [Win10. 64] (*2) JavaScript(Atom x5-z8300、edge).................................... 9.070秒 [Win10. 64] (*2) JavaScript(Tegra3 1.3GHz、Chrome).............................36.480秒 [Nexus7.....] JavaScript(Cortex-A9 800MHz、Safari).......................36.521秒 [iPhone4S] JavaScript(PS4Slim、Netfront) .................................... 130.0. . 秒 [PS4 .] (*5) # クリーンインストールによる再計測、10秒未満の項目については10回計測の平均値 + 8700K、4770Kはturbo boostあり (*1) Linux Mint 18.3 Cinnamon 64bit版 (*2) ドンキ2in1 (*3) IE11 - Internet Explorer 11 (*4) edge - Microsoft Edge (*5) PlayStation4、CPUリソース割り当てが極端に少ないか、サブCPU担当と予想される [Win10p64] Windows10pro 64bit版 [Win10. 64] Windows10 64bit版 [Linux....64] Linux Mint 18.3 Cinnamon 64bit版 [PS4 .] PlayStation4 [Nexus7.....] Nexus7-2012 [iPhone4S] iPhone4S ファミコンドラクエ3の旅の扉に入ったときの画面効果はどうやっているのでしょうか? だからスクショとか参考URLとか貼れって どんだけスボラだよ >>657 657さん 弊社はファミコン開発は行ったことがございませんが、あの画面演出は有名でして、 あれはファミコンというハードに備わった機能で実現しています。 ちなみに同じ任天堂ハードのスーファミやゲームボーイアドバンスでも同様の演出ができます。 現在のハードではソフトウェアの工夫で似たような演出ができますので、 ソースコードを書く時間があれば公開したいと思います。 それからみなさん、このドラクエの画面演出は判りましたが、 中には調べないと画像が見つからないものもあると思います。 658さんの仰るように参考URLなどがあると助かりますので、 そのようにお願いできればと思います。 しらないが、ソフトウェアで可能だろ。 ハードでしかできないとかしょぼ過ぎる性能だ いま実物は確認してない ラスタースクロールかな?懐かしい。 シェーダ使えば簡単にできるけど 使わない場合はどうするのか期待 >>657 >>659 >>660 >>661 ラスタースクロール(風の演出)を「ゲーム プログラミング テクニック」にアップしました。 http://www.wwsft.com/sp/ 宣伝になりますが、使っているRPGの画像は、RPGの制作過程を完全公開する企画 「 One Hour Quest 」のものです。 RPG開発に興味のある方はこちらもご覧頂けると幸いです。 http://www.wwsft.com/ohq/ (補足) ファミコンというハードに備わっていると書きましたが、改めて調べたところ、 ファミコンの場合は“完全に備わっているというわけではなく、ある程度工夫して実現”していたようです。 詳しくはwikiに解説がありましたので、そちらもご確認ください。 このスレの趣旨に沿うのかわかりませんが、 曲がるビームの見た目(例えばレイストームのような)はどのように作るのでしょう 弾の進む方向を途中で変化させることはできますが、グラフィックに悩んでます。 昔は直線状のグラフィックのエフェクトをいくつも繋げたり、板ポリを角度を変えていったりしていたようですが 昨今は継ぎ目も見えず綺麗にくねくねするビームをよく見ます 毎秒いくつのパーティクルでは弾速のあるものは生成数が少ないと途切れますし、多いと処理が重すぎるのでは、と不思議です >>656 PS4のjsエンジン遅すぎワロタwwとバカにしてるそこの豚! Switch内蔵ブラウザもNetfront製だからな!ザマァwwwww >>662 ギザギザじゃねーか!(とりあえずツッコミ) ソースを見たところ、y+=8やその他の8を1に変えればスムーズな波になりそう(重そうですが) それより、一枚絵を千切りにしてずらして表示してるんですね。 つまり、ゲームに実装する場合は、画面キャプチャーして一枚絵を作ってから、この処理ですね。 >>668 え? 一枚絵表示するときに処理すればいいんじゃね? なんでキャプチャがいるの? >>668 668さん 現行の全てのハード(ゲーム機、パソコン、スマートフォン)及び(多くの)開発環境で、 画面に描いたグラフィックを1枚絵のデータとして処理できます。 やり方はそれぞれの開発環境によって違うため、ここで簡単に解説はできませんが、 669さんの仰るとおりで処理できるわけです。 また表示をスムーズにするには仰るように1ドットずつ処理すればよく、 各環境でハードの処理速度が許す範囲で、細かく描画すればよいわけです。 JavaScriptは基本的に重いので、とりあえず8ドットにしています。 あくまでプログラミング初心者が理解しやすいソースコードにしておりますので、 みなさんが作られるゲーム内容や開発環境に合わせて改良してみてください。 俺も似たようなことよくやってたけど、旅の扉はHブランク割り込み使って各ライン毎にBGの座標レジスタを書き換えてるんだよね んで、F-ZEROはさらにアフィン変換パラメーターも弄って奥行きを表現してる DSまでは結構普通に使ってた技術なんだよね >>670 なるほど、ありがとうございます! 自分の環境はDirect3Dで描画しているので、同じようなことをしようとすると 遅延シェーディング(は知識がない)またはテクスチャにレンダリングしてから 改めて画面にレンダリングする(こちらなら多分できる)ので、 テクスチャに落とす部分をキャプチャと表現していました。 最近のゲーム機は、もっと手軽に、画面に表示した画像相当のデータを 一枚絵として手に入れられるということなのですね。 itch.toとSteamで販売した場合の売上差ってどのくらいか誰か分かりませんか? >>1 とても勉強になる回答ばかりで読んでて楽しいです。 時折心貧しき人間が心無いレスしておりますが、 稀に見る珍しいほど有意義で建設的な意見が多いスレですので 初心者のためにも>>1 さんによるスレ継続を希望します。 (たとえば広場で美味しい料理を子供達に配っていれば、 どこからかハエもたかってくるもんです) で、質問です。 >>1 さんのサイトのコンテンツはどれも非常に魅力的なんですが(特にRPG作るやつ、 個人的にはソースコードはJavaScriptよりもC#で記述してほしいと思っています。 近年猛威を振っているUnity開発上でもJavaScriptは廃止となった様ですし、、 CやC++の流れを組んだC#で書いてくれた方がこれからゲーム開発しようとする万人向けというか 喜ぶ人は多いと思うんですが、、今後も確実にUnity人口は増えると思いますし。 それでもJavaScriptにこだわり、推奨する理由とか>>1 さんにはあるのでしょうか 横レスで申し訳ないが、 さすがに既に例があるのだから、ご自分で移植するのが勉強では? itch.ioはフリーゲーム(フリームみたいなもの)目当てだから 利益はあまり出ない。itch<<<<<DLSITE<<<<<Steamな感じ >>662 ありがとうございます。 今回は最初から1枚絵ですが、 >>668 の言うように、描画したものを1枚絵として確保するのに、 環境によって知識が要りそうですね。 >>675 Webならその場で誰でも動作確認できてソースもわかりやすいからでは? C#だとVisualStudioないと確認できないし。 >>664 664さん レイストームをYoutubeで検索し、たぶんこれのことではというビームの表現方法を作ってみました。 http://www.wwsft.com/sp/ ↑ページの真ん中くらいにあります 弾の軌道は計算できており、描画面でお悩みとのことですが、 ・3Dでしたら板ポリ(板ポリなら数百枚表示しても一般的に処理はさほど重くなりません) ・2Dでしたらpng画像、テクスチャからの切り出し表示、あるいは線を引くなどの描画命令 で十分綺麗なレーザーが描けると思います。 今回のサンプルはJavaScriptですので2Dで単純に線を引く命令で実現しています。 >>675 675さん ありがとうございます。今後ともよろしくお願い致します。 JavaScriptで公開している理由は、678さんの仰るようにまさに「誰もが確認でき」「ソースが判りやすい」ためです。 弊社HPのコンテンツはパソコンだけでなく、iPhoneでもAndroidでも(それらのOSを搭載したタブレットでも) 確認できるようになっておりまして、より多くの方にご覧頂ければと願っております。 それからJavaScriptに力を入れるもう一つの理由は、 Google、Apple、MicroSoftというコンピュータ産業のトップ3社は ブラウザ開発(つまりJavaScriptを含めた技術)でもしのぎを削っており、 JavaScriptの普及には目を見張るものがあります。つまりJSは今後も将来性のある技術のためです。 >>675 >>680 補足となります。 弊社HPでは今後C系言語の技術、Javaの技術、そしてPythonの技術も公開する計画があります。 弊社は小さな会社ですので、マンパワーの問題で、それらを順に行っていく予定でして、 今期はPythonの解説をスタートします。 JavaScriptでいいと思います。 基本や考え方は変わらないし。 JSじゃなくC#でかけやゴルァって・・何もわかってないわな 解説やるなら、動画でやってほしい 学習効率が段違いなんで Pythonいいですね!期待してます! R言語はやりませんか?(やりませんw) Pythonはマニアックすぎるでしょー なかなか古い言語ですが当時解説も英語ばかりで 日本ではそれほど浸透せず、ハッキリ言うと廃れた言語です。 しかもゲーム制作ならpygameになりますし、 そのパイガメすら閑古鳥状態のはず。 そんな言語の解説に時間かけるの勿体無いですよ 喜ぶのは極少数の人だけです。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる