ホーム » 私生活

私生活」カテゴリーアーカイブ

スチームチャレンジ364日目(失敗)

今年もお世話になりました。来年もよろしくお願いします。
さて、皆さんは、今年の目標は達成しましたか?

自分はスチームでゲームをリリースするという目標をたてました。

でも全然でした。
作ってる途中というか最初から、迷走してたよ。
最初は3Dゲーム作ろうと思って、やっぱり2Dゲーム作りたいとなって、VRゲームも作りたいなとかなって、いろいろ目移りしているうちに、あっというまに1年経ってた。時の流れは速い!

このチャレンジはまたやりたいけど、先延ばしにしようと思います。

でも無駄に過ごしたわけではないアピール。
この1年の成果を発表するよ。


■2Dゲーム

キノコ族が、他の種族に因縁をつけて冒険するゲーム。 システムだけを作って、まだステージも作ってない。 これの制作の続きは、来年頑張ると思う。 2Dゲームの製作には「コーギーエンジン」にお世話になっています。

■3Dゲーム

3Dアクション作ろと張り切ってたが、いろんなアセットを試すのが楽しくて全然進んでないという罠。でも楽しかったからヨシ!

■VRゲーム

VRゲームも素敵だなと思って、でもこれもいじるだけで楽しいので、何も作ってない。 でも楽しかったからヨシ!

■2020反省会

今年の反省点ははっきりしてます。 ゲーム作るのは楽しいが、完成までの道筋までを考えてないこと。 ゲームを完成させたいと思ったら、企画とかコンセプトを明確にしなきゃとも思いました。 一応だけど、ゲームジャムに2回参加して、それは完成できた。 それはテーマがあったからできたのかも。 来年は、スチームチャレンジではなくて、もうちょっとリリースまでのハードルが気軽な、シャケラケチャレンジにしようかなと思ったりもしてます。 コンセプトを明確にして、ゲームを完成させるクセをつける。 詳しい話は、明日まとめる。

VRでモデリングするソフトまとめてみた

VRがやっと手頃なお値段になってきてきたので、オキュラスクエスト2を購入しました。まだ新参者なので、なんもわかってないのですが、没入感がやっぱすげーという感想。あと、実際に触ってみて思ったのがコントローラーの精度の良さ。どの指を、どのように動かしたかを検知してるので、むしろそっちに感動した。

ゲームで遊んだりもしたいところなんだけど、とりあえずは前から気になっていたVRでモデリングできるソフトをいじってみようと思いました。

4つぐらい見つかったのでその比較。


結論を先に言うと、「Medium by Adobe」がとても良かったので今のところ個人的な暫定1位。 PCに繋いで「Oculus Link」にしないといけないのはネックだけど、ソフト時代のお値段は無料で、モデリングからペイント、エクスポートまでできるのは実用性が感じられました。既存のソフトで近いのは3D-Coatになるかな? ポリゴンは意識しないで、粒子を固めたり削ったりっていう雰囲気。

こっちは「Blocks」というソフトです。PCに繋ぐ必要はある。
ポリゴンモデリングをVRでできる感じだった。無料。
曲線のものよりも直線的なものを作るなら、こっちのほうが向いているような気がする。


Gravity Sketch」というソフト。
これはPCに繋がなくて大丈夫なやつ。ちょっとお値段はする。2990円。
色々、出来ることは多そうだけど、学習コストがかかるなという印象。
これからじっくり触っていきたい。


SculptrVRというソフト。
PCに繋げなくてよい。
お値段990円。
モコモコとした質感が楽しい。




結論。
PCにつなげられるなら「Medium by Adobe」と「Blocks」が無料でできるので、その二つを試すのがいい。
繋げなくても遊びたいってときは、「Gravity Sketch」と「SculptrVR」で。
ちょっとしか触ってないからアレだけど全部、良いもののはず。

Unityリフト移動

Unityでつまずきやすいポイントのメモ。
移動するリフトに乗っても、プレイヤーは移動しない問題。
床だけが移動するリフトというのも面白いけど、一緒に動きたい場合は、
リフトに乗っている間だけ親子関係にするとよい。
子供のオブジェクトは、親の動きと同期する。

↓の記事が詳しく載っていました。
Unityで動く床を実装するときにハマる罠とその解決方法

これの応用で、接地している間だけ、リフトの形状を変えたり、動きを変えたりもできる。

タグの種類を増やしてって、リフトの種類も増やせる例を作ってみた。 コードは乗る側、タグはリフト側で設定。
void OnCollisionEnter(Collision col)
    {
        //接触した相手のタグが"LiftA"場合、その子供になる
        if (col.gameObject.tag == "LiftA")
        {
            transform.SetParent(col.transform);
        }

        //接触した相手のタグが"LiftB"場合、相手のサイズを変える
        if (col.gameObject.tag == "LiftB")
        {
            col.transform.localScale = new Vector3(20, 1, 5);
        }

     }

    void OnCollisionExit(Collision col)
    {
        //接触が終わったとき元に戻す
        if (col.gameObject.tag == "LiftA")
        {
            transform.SetParent(null);
        }

        if (col.gameObject.tag == "LiftB")
        {
            col.transform.localScale = new Vector3(5, 1, 5);
        }
    }
    

Unity覚書 二次配列のマップ

Unityで二次配列を使ってマップを作るやつ。よく忘れるのでメモ。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MAP : MonoBehaviour
{
    public GameObject kabe;
    public GameObject jimen;
    public GameObject st;


    int[,] map = new int[,] {

        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        { 1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1},
        { 1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1},
        { 1,0,0,0,1,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,1},
        { 1,0,1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,1,0,1},
        { 1,0,1,0,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1},
        { 1,0,1,1,1,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,1,1,1,1},
        { 1,0,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,1,0,1,1,1,1,1},
        { 1,0,1,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,1},
        { 1,0,1,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1},
        { 1,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,0,1,1,1,1,1},
        { 1,0,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,0,1,1,1,1,1},
        { 1,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,0,1,1,1,1,1},
        { 1,1,1,0,1,0,1,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1},
        { 1,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1},
        { 1,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1},
        { 1,0,0,0,1,0,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1},
        { 1,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1},
        { 1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1},
        { 1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1},
        { 1,0,0,0,0,1,0,0,0,0,0,0,1,1,2,1,1,1,1,1,0,0,0,1},
        { 1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1},
        { 1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1},
        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},

    };


    // Start is called before the first frame update
    void Start()
    {
        
        for (int i= 0;i< 24; i++){
            for (int j = 0; j < 24; j++)
            {

                if (map[i,j] ==0) { Instantiate(jimen, new Vector3(i * 1, 0, j * 1), transform.rotation); }
                if (map[i,j] ==1) { Instantiate(kabe, new Vector3(i * 1, 1, j * 1), transform.rotation); }
                if (map[i, j]==2) { Instantiate(st, new Vector3(i * 1, 0, j * 1), transform.rotation); }
            }
        }
    }


    // Update is called once per frame
    void Update()
    {
        
    }
}

ラストオブアス2をクリアした感想(ネタバレ注意)

※ネタバレ注意です。クリア後に読むことをオススメ。

自分なりの妄想を含んだ感想です。

敵側にも、色々事情があって、想い合う仲間がいる。
血が通った、同じ人間なのだ。
そういうのを徹底した結果がこんな恐ろしいゲームになってしまった。
敵は悪者ではないが、どうしても憎いし許せない。ぶっ殺してやる。
そういうゲームだった。

エリーもアビーもお互いの大切に想う仲間が殺されて、憎しみを増幅させるたびに、周囲の誰かが死んでいく。

エリー側に感情移入してるので、どちらかというとエリーを応援していたので、中盤以降アビーに主人公交代することに面食らったし、ショックだった。

アビー視点でスタートすると、エリーに仲間たちが殺されていくのを見せつけられる。最終的には、エリーと対峙し、エリーを倒す方向に話が進む。

ここが、自分の中でモヤモヤしたポイントでした。
主人公の目的と、プレイヤーの目的が一致しなくなるのだ。
アビー操作をミスして、ゲームオーバーになった時、これが結末でもいいのでは? という考えが頭をよぎる。
エンディングを迎えるよりも、あるタイミングでアビーが命を落としてくれたほうが、マシな結末になるのだ。

でもゲームは進めたい。
ゲームを進めたいので、アビー視点で、エリーを倒さなきゃいけない。
何でプレイヤーにエリーを殴らせてるんだろう?
訳が分からない。

再びエリーに主人公交代したときは、安心したが、これはこれで複雑な気持ちになった。
この頃にはアビーは憎い相手ではあるけど、悪者ではないということに気付いてしまうからだ。
もしも、アビーが極悪人だったなら、喜んで復讐に進めるのに。

それをわかってのことか、エリーはアビーに対して不思議な行動をとる。

放っておけば死ぬ状況のアビーの命を救い出し、それから決闘を申し込むのだ。
決闘を申し込んでおいて最後トドメを刺せるタイミングになって、中断する。
ジョエルに対して放った「許せないけど、許したい」という言葉がここに重なってくる。

面白かったかと聞かれると、答えに迷うゲームだが、遊んでよかったゲームではある。

ジョエルとエリーに感情移入していたので、ふたりには幸せになって欲しかったが、そういうゲームではなかった。特効薬を見つけてハッピエンド、そういうのだったらいいなと思ったが、そんなお花畑な考えはすぐに吹き飛ぶ内容でした。

3が出ることがあれば買いたいが、さらに過酷な内容のゲームになりそうで怖いな。

ゲーム完成できない病からの脱出

頭に浮かんだゲームは神ゲーなのに、実際に作ろうとすると形にならない。
実力以上のことをやろうとしてたんだなと冷静になって考えた。

長編の超大作も作りたいが、コンパクトでカジュアルに遊べるゲームも合間に作って経験値稼ぎをしようと思ったのが6月の初めでした。

で、作ってみた。

神経衰弱にRPGの要素を加え、インド風味にした内容のゲームです。
3分ぐらいで遊べます。

今はなき「神経衰弱塔」っていうブラウザゲームの影響を強く受けて作ったものです。

「神経衰弱・インド編」ブラウザで遊べます。


ここで反省会。
ちょっとしたブラウザゲームを作るのにも一か月掛かってしまった。
作るスピードが遅いかもしれない。
思いついたアイディアはすぐに形にして、どんどんリリースするのを目標にしたい。

とはいえ、自分はゲーム作っているのに完成できない人間じゃないかと不安が膨らんでいたのが、その呪縛を解くことができたってのは収穫でした。

今はまだ、超凄いゲームは作れていないけれど、いつか超凄いゲームが作れるはずだと信じて、頑張ります。

千里の道も一歩から。
少しづつ進んでいけばいいんだと思いました。

マジックザギャザリングに差別問題の余波

少し昔に「ちびくろサンボ」という絵本があった。
絵本の内容は、虎が何故かバターになるというシュールな話で、差別的な表現はない。ただ、サンボという表現は、良くない言葉だったらしく、それに抗議が起こり、この絵本は世界から消えた。
そんなエピソードがあったことを、ぼんやりと思い出した。
その時と、似たようなことがさっき起こったからだ。

マジックザギャザリングというカードゲームで、7枚のカードが消滅することになった。
その理由が、差別的な表現があるカードだったからだそうだ。
どんなカードが禁止になったのか、どの部分がアレだったのか気になったので調べてみた。

※テキストはWikiから引用

Invoke Prejudice (青)(青)(青)(青)
エンチャント

対戦相手1人が、あなたがコントロールするクリーチャーと共通する色を持たないクリーチャー呪文を唱えるたび、そのプレイヤーが(X)を支払わないかぎり、その呪文を打ち消す。Xはそれの点数で見たマナ・コストである。

Cleanse (2)(白)(白)
ソーサリー

すべての黒のクリーチャーを破壊する。

Stone-Throwing Devils (黒)
クリーチャー — デビル(Devil)

先制攻撃1/1

Jihad (白)(白)(白)
エンチャント

Jihadが戦場に出るに際し、色1色と対戦相手1人を選ぶ。
選ばれたプレイヤーが選ばれた色のトークンでないパーマネントをコントロールしているかぎり、白のクリーチャーは+2/+1の修整を受ける。
選ばれたプレイヤーが選ばれた色のトークンでないパーマネントをコントロールしていないとき、Jihadを生け贄に捧げる。

Imprison (黒)
エンチャント — オーラ(Aura)

エンチャント(クリーチャー)
プレイヤーが、エンチャントされているクリーチャーの、その起動コストに(T)を含むマナ能力でない能力を起動するたび、あなたは(1)を支払ってもよい。そうした場合、その能力を打ち消す。そうしなかった場合、Imprisonを破壊する。
エンチャントされているクリーチャーが攻撃かブロックするたび、あなたは(1)を支払ってもよい。そうした場合、そのクリーチャーをタップし、戦闘から取り除く。この戦闘でそれによってのみブロックされていた、それがブロックしていたクリーチャーはブロックされていない状態になる。そうしなかった場合、Imprisonを破壊する。

Crusade / 十字軍 (白)(白)
エンチャント

白のクリーチャーは+1/+1の修整を受ける。

ざっと効果に目を通してみると、自分の色を有利にし、別の色を不利な状況にするものという共通点は見られる。
でもそれが理由だとすると、そういう類のカードはこの7枚に留まらず、大体のカードがそうなる。

あとマジックザギャザリングには5色の色があり、白は秩序と正義。
黒は狂気と死という、そもそものコンセプトカラーがあり、黒は邪悪な色という前提がある。それが、差別問題に触れるというなら、このゲーム自体の存続が危うい。

他のゲームではどうだろう。
属性を色で分けるものはあるが、闇属性は紫色が多かったりする。
配慮があってそうなってるわけではないと思うが、黒を避けるのであれば紫が妥当である。

結論。
いつ個人のゲームにも余波がくるかわからないので先手を打った方が良い。
個人でゲームを作る人は、エルフやゴブリンにも人権があることも思いをはせながら、闇属性に該当する魔法や技は、紫にしとくのがいいと思った。














どんなゲームシステムがナウいのか水平思考/友好度システムについて

「ゲームを遊んでいて、自分ならこうする」っていうのを大事にしようっていうコメントがツイッターのTLで流れてきた。
確かに。
そういうところから、アイディアが育んでいくんだなと思った。

自分の中でもそういうのがひとつあって、ゲームの友好度のシステムで、常に思っていることがあった。
それは、友情よりも恋愛のほうが、上位の扱いにされているということだ。
恋愛は素晴らしいことだが、それが人間関係の中で一番てっぺんなのか?
といつも思う。

NPCと交流して仲良くなるシステムは、世界観に深みがでていいんだけど、
異性キャラクターに友情があっても、恋愛という訳ではない場合の選択肢がない(場合が多い)。
そして恋愛に発展するのが、一番エライこととされている。
もっと色んなバリエーションがあってもいいのにと思った。

◆ペルソナ3では複数の異性と同時に交流を深めると、ペナルティがある。
そんなつもりじゃなくて、みんなと仲良くしたいのに。
◆ フォールアウト4では、関係がMAXになるとロマンス状態になり、そのキャラにちなんだスキルを習得できる。そこまではいい。
ただ、こっちは複数のキャラと関係を持っても何のペナルティないので、主人公は、スキルを覚えるために、身近な人に次々に手を出す人になってしまう。
ロマンスじゃなくて友情MAXという項目を用意したら良かったのでは? とずっと思ってた。

つまりは仲が良いかどうか、友情か恋愛かの2種類ではなくて、いろんな種類の関係性があって、それぞれメリットデメリットがあるようなゲームはどうか。
そういうのを作れないか考えているところ。
でも複雑にしたところで、面白さにつながる訳ではないんだよなぁ。
うむー。

結局、振出しに戻る。
でも色々考えた記録として残しとこう。

あと、アマガミというゲーム。
未プレイだけれど 、自分が思い描いてるイメージに近いかもしれない。
あれは、キャラの関係性がスキ、ナカヨシ、ソエンの3種類に分岐していく感じらしい。関係が不可逆に分岐してくのが良いよなぁ。

思案中。
なんか思いついたら、まだ追記します。

新しくなったMandelbulber2、使ってみた。

3Dフラクタルが作れるソフトが新しいバージョンになったので、いじってみた。
基本の形になるものが画像アイコンになってわかりやすくなったのと、画面が綺麗になって良くなっている感じはある。
フラクタルはやっぱり奇妙でカッコイイ。

左側が形状を決める項目で、右側がカメラいじったりの項目だった。
上部メニューのImageで画像に保存できる。
その隣のViewから呼び出せるAnimatonの項目で、どうやら動画にできるみたいなんだけど、まだ調査中。
ちょっといじって失敗したので、また今度やる。

Archery Motion Packもやってみる。


「Motion Controller v2 」と同じ方が作ったアセットが色々ある。
弓矢で攻撃ができるアセットArchery Motion Packと、
剣と盾のアセット Sword & Shield Motion Pack を併せて購入。

とりあえず今日は弓矢のアセットがどんなものなのかを試してたところ。
導入の手順が結構ややこしくて、手間取ってた。
独自の仕様と付き合わなきゃいけないみたい。

でもまあ、モーションの動きの生々しさと操作性はとても良い。
こういうのは自力では作れない。やっぱり買ってよかったと思う。

こういう基本的なシステムはアセットに頼るだけ頼って、
他の部分に力を入れていけたらなあと思う次第。

管理人

ハンドルネーム:タケハタ
本名:波田野剛望(はたのたけみ)

お絵描きとゲームが好きなオス。
2020年の目標は、スチームでゲームをリリースすること。