投稿記事

籠城ゲームの記事 (100)

竹林ソフト 2023/02/07 20:00

石垣を建築できるようにするあたり

日本の城郭を築城してねこ巫女で籠城する「ねこ巫女ディフェンダーズ」の開発記録です。
今回は石垣を建築するあたりの実装をしていきます。

石垣の建築方針

石垣は「地面扱いできる特別な建物」という仕様なので、扱いがかなり複雑です。
ただまぁ、まずは最低限の仕様で実装していきます。むつかしい仕様にまじめに向き合うと疲れるので、ちょっとずつ実装していきます。

実装したい仕組みとしては、地面の Terrain を石垣よりも1グリッド内側に描画して、石垣は専用のモデルを配置して描画します。

実装と動作確認

とりあえず現状は石垣を建物と同じように配置できるところまで実装しました。

石垣の上には建物を配置できるようにするとか、石垣の内側に収まるように地面 (Terrain) を描画するとかは、また後で調整します。

まとめと今後の予定

本来実現したい石垣の機能のほとんどを後回しにした気がしますが、気にせず開発を続けます。がんばります。

竹林ソフト 2023/01/31 20:00

地面にテクスチャと草木を配置できるようにする

日本の城郭を築城して、ねこ巫女が籠城するゲームを開発しています。
今回は寄り道して見た目についての実装です。

地面に草を配置する

以前に作った Terrain に草を追加しました。コードを抜粋するとこんな感じです。

        var grassVariants = new List<DetailPrototype>();
        var grassVariant = new DetailPrototype()
        {
            prototype = _grassPrefab,
            prototypeTexture = _grassTexture,
            useInstancing = true,
            minWidth = 0.5f,
            maxWidth = 1.0f,
            minHeight = 0.5f,
            maxHeight = 1.0f,
            renderMode = DetailRenderMode.Grass,
        };
        grassVariants.Add(grassVariant);
        _terrainData.detailPrototypes = grassVariants.ToArray();
        
        int grassDensity = GrassDensityPerUnit * _gridsCount;
        var grassMap = new int[grassDensity, grassDensity];
        var alphaMap = new float[resolution, resolution, _terrainLayers.Count];

        for (int y = 0; y < grassDensity; ++y)
        {
            for (int x = 0; x < grassDensity; ++x)
            {
                grassMap[y, x] = 1;
            }
        }

そして、平坦な地面に草を配置するとこんな感じです。

視点との距離が遠くなると草の描画をやめてしまい、その境界がはっきり見えてしまっているのは後でまた考えます。

それから、今は全面が草ですが土木工事や建築をしたグリッドや、人が何度も通った場所は草をなくしてテクスチャ色も変更しようと思っています。

↓草のあるグリッド、ないグリッドの描画はこんな感じにしたい。

この処理はまたいつか着手します。

地面に木を追加する

木も追加できるようにしました。

        // 木の初期化を行う。
        var treeVariants = new List<TreePrototype>();
        for (int i = 0; i < _treePrefabs.Count; ++i)
        {
            var treeVariant = new TreePrototype()
            {
                prefab = _treePrefabs[i],
            };
            treeVariants.Add(treeVariant);
        }
        _terrainData.treePrototypes = treeVariants.ToArray();
        (中略)    

    public void AddTree(TreeNames treeName, Vector2Int grid)
    {
        var tree = new TreeInstance();
        tree.position = (Field.GroundVertexPosition(grid) + new Vector3(1, 0, 1)) / (GameConstant.GridMeter * _gridsCount);
        tree.prototypeIndex = (int)treeName;
        tree.widthScale = 1.0f;
        tree.heightScale = 1.0f;
        _terrain.AddTreeInstance(tree);
    }

正直、詳しく理解できていませんが木が描画できたのでよいことにします。
これらの実装で木を3本追加してみた結果はこんな感じです。

草木は The Illustrated Nature というアセットを購入して使っています。
https://assetstore.unity.com/packages/3d/vegetation/the-illustrated-nature-153939?locale=ja-JP

これまた詳しくないのですが、色を自由に変更できて秋や冬の表現ができそうです。

現状では木の幹の影がなかったり、木の大きさや向きがランダムでなかったりもしますが、見た目のことはあとでまた着手します。

まとめと今後の予定

ちょっと寄り道して草木の描画まわりを実装しました。
次回以降は石垣や建物を建築するあたりの実装を再開したいです。がんばります。

竹林ソフト 2023/01/24 20:00

巫女キャラクター用に立ち絵用素材を購入してみた

日本の城郭を築城して、ねこ巫女が籠城するゲームを開発しています。
今回は会話シーンに使う立ち絵についての話題です。

実現したいこと

チュートリアルのイベントシーンで説明のための会話シーンを実現したいと思っています。

↓こういうやつです

今作は、キャラクターは VRoid Studio の 3D モデルを使う予定でいます。
さっきのスクリーンショットくらい抽象化されたモデルならそのまま使ってもいいと思うのですが、VRoid Studio 製のモデルだと、ちゃんと表情を作り込まないと違和感の方が大きそうで不安がありました。

なので立ち絵を用意したいのですが、自分で描く代わりにお金で解決しようと思います。私はお金で開発コスト問題を解決するの大好きです。

とりあえず、お試しで「著作権フリー立ちキャラクター素材集vol.5」を購入してみました。
https://www.dlsite.com/maniax/work/=/product_id/RJ060599

自分で描いたり発注したりするコストを考えると、この価格でパーツを組み合わせた立ち絵を作れるのは最高ですね。あと購入の決め手は巫女服も含まれてた、ってことですね。大変よいです。

表示してみたもの

そして、とりあえず巫女服のキャラクターを作ってみたのがこれです。


大変よいと思います。

まだキャラクターの性格や容姿を決めてないので、それを決めたら改めてキャラクターの立ち絵を出力してゲームで使ってみます。
また、将来的に任意のポーズのキャラクター絵がほしくなったら観念して自分で描きます。ただ、自分で描くと時間がかかるので最後の手段にしたいです。

↓自分で描いた巫女イラスト


まとめと今後の予定

巫女服があってパーツを組み合わせて立ち絵を作れる素材集を売ってたので買って試してみました。大変よかったです。今後も開発がんばります。

竹林ソフト 2023/01/17 20:00

壁を建築できるようにする

築城して巫女さんが防衛するゲーム開発をしています。
今回は、木柵や板塀、土塀なんかを建築できるようにするあたりを実装します。

壁の建築指示を行う

壁は、通常の建物配置とは違って連続直線を描くような感じで建築を指示します。
実装はそこそこ小難しいのですが、動作するとこんな感じです。

連続直線の操作で壁を配置する

今は白い板なのでわかりにくいですが、木柵、板塀、土塀なんかがこの操作で建築できます。

まとめと今後の予定

建築指示まわりの基本的な要素は実現できたので、実際にゲームとして建築指示が行えるようにしていったり、地面や建物、壁の見た目を仮作成していこうと思います。がんばります。

竹林ソフト 2023/01/10 20:00

建物を建築できるようにする

築城して巫女さんを操作して防衛するゲームを開発しています。今回は建物を配置するあたりを実装します。

ゲーム中の建築の流れ

ゲームは大きく「日常フェーズ」と「防衛フェーズ」に分かれていて、敵が攻めてくるフェーズは明示的に分けます。その方が実装が楽だし、NPC が違和感なく動作すると思うので。

そして建築は日常フェーズで行えるようにします。
日常フェーズでの主な操作は

  • 作事: 建物や壁、石垣の建築指示を行う。
  • 普請: 地形の高低差の変更指示を行う。
  • キャラクター: 装備やスキルの変更を行う。
  • 模擬戦: 敵の量を設定してシミュレーションを始められる。
  • 設定: システム設定を行う。

↓日常フェーズで行う操作のボタン割当(仮のアイコン)

です。

建物を選択するボタンの配置

そして、日常フェーズで「作事」ボタンを押したときに、具体的に何を建築するかを選べるようにします。

↓防衛施設、城下町の建物、飾り用途の建物、道(仮のアイコン)

そして、防衛施設のボタンを押したときに、建築できる建物ボタンをパネルに表示するあたりも動作しました。

よいと思います。

建物のプレビュー表示から配置まで

そして、先程のパネルに表示された建物のボタンを押すと、その建物がプレビュー表示されてフィールドに配置するまでが、とりあえず動作しました。

エラー処理や作り込みはこれからですが、とりあえず建築の枠組みが動作したのは大変よいです。

まとめと今後の予定

最低限の建築の流れが動作しました。今は建物しか扱えないので、壁や石垣といった少し特殊な建築も今後実装していきます。がんばります。

月別アーカイブ

限定特典から探す

記事を検索