カテゴリー
制作

プレイヤー視認方法を見直し中

敵キャラクターからのプレイヤーキャラクター視認方法を見直し中。

四角形の隅から隅までレイを飛ばすというのは効率が悪い処理のような気がする。

敵の視点からプレイヤーの位置に対するベクトルを計算し、プレイヤーの立ち位置が一定の距離及び角度の範囲内かつプレイヤーとの間にさえぎる障害物が無い時に視認する方法を試してみる。角度を扱うのに試行錯誤しそうではあるが。

こういう時はローカル座標とワールド座標の違いを意識しておく必要がある。

transform.TransformPoint(変換したいベクトル)

でローカル座標をワールド座標へ変換できる。

カテゴリー
日記

GREEN HELLをプレイ中

GREEN HELLをプレイ中。

ストーリーを最高難易度でクリアするのは意外に難しくなかったが、チャレンジモードは別格の難しさだと感じた。時間制限があるのがきつい。

リストの一番上にあるので恐らく一番簡単と思われるキャンプファイアに挑戦してみたが、丸太40本集める工程が終わったところで原住民に殺されてしまった。また丸太集めからやり直す気になれず中断。

残りのトロフィーは焚火を5日間燃やし続ける、60か所を地図に記す、チャレンジモード制覇の3つ。

気ままに探索したり建築したりというのを楽しみたいので、決められた時間に決められたことをするチャレンジモードは自分がこの手のゲームに求めているものとは違うなという印象。

他の二つのトロフィー取ったら一区切りということにしよう。

カテゴリー
日記

GREEN HELL をクリア

先週GEEN HELLのPS4版を購入して案の定はまってしまった。
建築、クラフト、サバイバルといった要素のあるゲームが流行っている気がする。自分もこの手のゲームを見かけるとつい手を出してしまい時間を忘れて遊んでしまう。

とりあえず取れそうなトロフィーはだいたいとった感じ。プラチナまではやる気が起こらないが。時間制限のあるチャレンジモードや死んだらセーブデータが消える最高難易度が絡むものは、今のところ手を付ける気にならない。
ストーリーは当初自分が予想した以上に力が入っている印象を受けた。
主人公が記憶を無くしており、妄想に取りつかれているのでストーリーを正確に理解するのが難しい部分もあるが、引き込まれるものはあった。
アマゾンから未知のウィルスが広がり世界中でパンデミックが起きて治療法を探すというストーリーが妙に今の現実と重なって見えるのは偶然なのか狙ったものなのか。陸路での感染拡大を防ぐために太平洋沿岸から大西洋沿岸まで壁を築くとか、少し前の大統領がやりそうな描写もあったけどこれも偶然なのだろうか。この作品の世界にはWHA(WHOではない)という機関があるが、ウィルスを根絶するための議論ができないという描写もあった。

…たまにはゲームをプレイした感想でも書いてみようかと思ったが、まとまりのない文章になってしまった。

カテゴリー
日記

昼休みの学習を実践中

3台目のkindleが届いた。
さっそくこれを使って昼食後の学習を始めたが特に問題無さそうなのでこのまま続けて習慣化したい。

今はアルゴリズムに関する書籍を読み進めている。
アルゴリズムとその実装方法を定石として知っておくことはプログラミングを行う上で有利になるということらしい。

週末は仕事からの解放感のためだらけて時間を無駄にすることもよくある。
昼休みは職場という空間と、仕事の合間の時間という適度な緊張感があり集中するには悪くない。とはいえ長い時間ではないため何でもできるわけではない。
今のペースで進んだら、この書籍を読み終わるまでに何週間かかるのだろうか。もっと集中力があればいくらかましになるかもしれないが。

アルゴリズムの学習を進めるのは良いが、それと別に個人で作品を作って公開したいという目的もある。
個人製作に関しては作るための学習ももちろん、公開するプラットフォームとしてどのようなものがあるか、それぞれの長所短所は何かなど、開発作業そのものの他にノウハウや情報が必要になるのでは…とあれこれ考えると週末の時間を無駄にしている場合では無いように思う。
個人開発という視点からも参考になる書籍を探すべきか。

カテゴリー
日記

昼休みを学習や読書に充ててみる

読みたい本や学びたいことは色々あるのだが、なかなか時間を確保するのが難しい。
会社の仕事に拘束される日々で隙間時間を何とかしようと考えると、思いつくのは通勤時間と昼休み。

自分はマイカー通勤なので通勤でできる事は限られるが、たまに英語のCDを聞き流している。

昼休みは食事が終わって残る時間はだいたい25分ほど。
たかだか25分とはいえ、毎日の事なので積み重ねたらかなりの時間になる。
ここを有効に使うことができれば読書や学習がかなりはかどるのでは。

一度買ったものは手放さずに持っておきたい一方で、保管する場所を取られたくないことから、自分は本を電子書籍というかkindleで買っている。読みたい本がkindleに無い場合は紙で買っている。
会社にもっていくために紙の本を別に買うのも出費がかさむし、持ち運びに不便。
本を何冊か買う値段でkindleをもう1台買う方が便利だと思い、会社持ち込み用のkindleを買った。
自分への投資と考えれば出し惜しみする金額ではないだろう。

昼休みに会社のパソコンでできそうな暇つぶしとして当たり障りのないニュースなどを眺めていたが、明確な目的も無くニュースをただ眺めても特に得るものが無いと思い始めている。この時間をもっと有効な事に使いたい。

しかし、いざ職場で学習や読書をしようと思うとなぜか周りの目が気になり、妙な「覚悟」が要るような気がする。別に周りの迷惑にはならないし、休憩時間にスマホでゲームを遊ぶ人がいる事を考えたら問題無いはずだが。

カテゴリー
日記

学習目標

制作は進捗が無い。
休日になるとどうも気がゆるんで時間を無駄にしてしまう。

色々思うところあり、データ構造とアルゴリズムについて学ぼうと思い書籍を読み始めた。

学んでみたいことは他にもあり、全部やろうと思うと時間が足りない。
学んでみたいと言いつつも、いざまとまった時間があっても結局時間を無駄にしている。

書籍を読んでいると、前回作ったレイで視界の範囲を走査する方法は処理に時間がかかってあまりスマートでない気がしてきた。やっぱりコライダを使うべきか。

カテゴリー
制作

視覚と攻撃判定を追加

敵のモーションに続いて、レイを使った視覚判定と攻撃モーションの当たり判定を追加。

敵の視界は敵の目線の代わりにレイを飛ばして判定することにした。コライダで四角錘や円錐が使えればそうするのだが、基本形状に無いものだとうまくいかない気がする。
敵の目のあたりから例を飛ばす角度を少しずつ変えて平面上を走査するような方法にした。

敵の右手にダミーの武器を追加して、攻撃アニメーション時に当たり判定を行う。攻撃動作を行っていない時に攻撃判定が発生しないようにアニメーション時に判定有無を切り替え、武器を振る瞬間のみ攻撃判定を行う。この時に衝突したオブジェクトにプレイヤーのタグが付いていたらプレイヤー側でダメージ処理を行う形にした。

歩き回る機能、プレイヤー発見時や未発見時の挙動などはこれから作っていく。

もっとペースを上げないといけない気がする。

カテゴリー
制作

簡単な人型モデルを動かしてみた

3Dモデルを動かすとき、Unityではどうするのかとざっと調べてみたが馴染みのない言葉ばかりでしり込みしてしまった。

手っ取り早く動かすならモデルもアニメーションもどこかから持ってくれば良さそうなだが、できているものを使ってもいまいひとつ面白くない。
自分で中身を理解していないデータを持ってきても応用が利かなそう。
バージョンアップで動かなくなると自分でどうにもできなくなったりしないか。

できる範囲でやってみようと思い、まず立方体で胴体、腕、足、頭を作って簡単な人型のモデルを作った。
腕、足などをジョイントとなる空のオブジェクトの子オブジェクトにし、角度を指定することでアニメーションさせてみる。とりあえず某サンドボックスゲームで見たような歩行モーションや攻撃モーションが用意できた。
スクリプトから歩行の状態と待機の状態を切り替え、攻撃モーションを動かすことができた。

アニメーション機能はTransformやアニメーションパラメータ以外にも、アタッチされたスクリプトのパブリック変数も変化させることができるようなので、いろいろな使い道がありそう。

カテゴリー
日記

時間の使い方を改善したい

深夜になってしまったが、たまに平日更新してみる。

学習したい事はあるし、読みたい本もあるのだが、会社の仕事が終わった後にこういった時間を確保しようと思うと、もともと不足している睡眠時間をさらに削ることになってしまう。
週末の時間を有効に使うことも重要だが、もう少し平日に工夫できることは無いか。
時間が無いと言っても、文字を一文字も読めないというほど忙しいことは無いはず。頭の切り替えを素早く行って細切れの時間を活用するしかない。

志気を保つのに手軽な方法は進捗や成果を見えるようにする事だと思う。
本を読む場合、どれだけ進んだかはページ数から簡単に把握できるのでこれを意識すれば継続しやすいのではないか。

会社の仕事だけやっていても新しい知識に触れる機会が無いので、自分を変えたいなら自分で学ぶしかない。

カテゴリー
制作

モーションを作ろうと思ったが…

敵の攻撃動作を作ろうと考えているうちに敷居の高さを感じ始めた。

攻撃動作を作るなら骨格を決める必要があり、骨格を決めるならそれが人間か獣か機械かなどを決める必要がある。
攻撃と一口に言っても人間が剣を振るか銃を撃つのか、獣が噛み付くのかひっかくのかなどで攻撃動作が変わる。

敵がどんな姿をしていて、どんな能力を持っているのか、など具体的な事がある程度決まっていないと攻撃動作を作れない。

3Dモデルが3D空間で動き回るという情報を肉付けするのはかなりの根気が必要になると思われる。

とりあえずこれを後回しにしてモーション無しで歩かせてみようとも思ったが、歩くアルゴリズムを考え始めるとまた課題が見えてくる。
視界に入ったプレイヤーに向かって真っすぐ突っ込んでくるだけなら実装は難しくないが、それではゲームとして単調になってしまう。
プレイヤーを見失った時はどうするか。
時間経過で持ち場に戻って待機するのか。探索しないと間抜けに見えてしまうが。
持ち場で待機しているときははただ突っ立っているだけなのか、歩き回るのか。
歩き回るならどこを歩くのか。ランダムなのか、決められた経路なのか。

これらのアルゴリズムの良し悪しがゲームの面白さにつながるのだろう。コーディングやツールの使い方といった実装する方法だけではなく、仕様設計でもはやり工夫が必要。

敵のアルゴリズムといえば、画面スクロール型のシューティングゲームの場合はこういった敷居は低いのではないかと思う。敵の動きは直線や曲線など単純で経路探索も不要のため、あらかじめ決められた動きで成り立つからだ。持ち場で待機するとかプレイヤーを探すという挙動も必要ない。

完成したものを公開するならどこを落としどころとするのか決める必要がある。
いっそのこと敵がいなくても成り立つゲームにするのも一つの手かもしれないが、それとも何とか頑張って素人なりのアルゴリズムで動き回る敵を実装するか。
考え事をするだけで全然進んでいない。
プロトタイプと割り切ってとにかく作ってみるしかないのだろうか。