マガジンのカバー画像

知識0からのゲーム制作日記

71
トチ狂ってbashでゲームを作り始めたつれづれ日記。 https://github.com/y-mikou/shellgame
運営しているクリエイター

記事一覧

【0069】sqliteを使う

【0069】sqliteを使う

随分間が空きましたが、間に挟まったタスクは無事終わりました。
というわけでちまちまこっちもまた再開していきたいと思います。
また割り込みが発生する想定ではありますが……。

さて、前回までで基本的にアイテムを拾うことに成功……
してたような気がしますが、
アイテムテーブルをスクリプト内に持つことに将来的な不安が残っていました。解決はしたものの速度的な問題もあったと記憶しています。

やっぱデータは

もっとみる
【0068】アイテム画面を作る⑧

【0068】アイテム画面を作る⑧

前回はアイテム画面の性能問題にぶつかりました。

解決策として、
現在の持ち物リストにアイテムIDだけをもたせるのではなく
すべての(あるいはアクセス頻度の高い)情報を保持することにしてみます。

アイテムマスタを舐めるという行為が
アイテムを拾う(未実装)などの限られた処理に限定されるはずです
アイテムを拾う場合は、
アイテムマスタを舐めることには代わりありませんが、
ほとんどの場合、1件のみの

もっとみる
【0067】アイテム画面を作る⑦

【0067】アイテム画面を作る⑦

アイテムの最大所持数考えてなかったんですよね。

※エラーアイテム、の表記はわざと出してるものなので正常系エラーです。

一応このまま使うのであれば縦に16個並ぶようですが
そもそもアイテムっていくつ持てればいいんでしょうか。

「トルネコの不思議なダンジョンは20」

という情報をwebで見つけました。
今更どうでもいい情報なので
不思議のダンジョン系のアイテム所持数についての言及は少ないです。

もっとみる
【0066】アイテム画面を作る⑥

【0066】アイテム画面を作る⑥

アイテム画面作るの手順が多いというか必要な子要素が多すぎて
目的を見失いそうです…。

前回、アイテムIDを渡すと
アイテムマスタにあるアイテム情報から名称と説明を取得して返す機能
を作りましたが、
アイテムマスタをアイテムIDで舐める機能がまだ出来ておらず、
今は固定で「八卦炉」を返すようにしていました。

というわけで今回はアイテムIDを元にアイテムマスタをなめて
アイテムマスタ配列の添字とア

もっとみる
【0065】アイテム画面を作る⑤

【0065】アイテム画面を作る⑤

前回の残課題
「アイテムIDとアイテムマスタの添字が一致しないケース」
に対処すべく
アイテムIDを持ってアイテムマスタの要素をなめるという処理を作ります。

…の前にですね。

例えば「+3中古品の八卦炉」っていうアイテムがあったとして
補正値が「+03」
修飾子が「中古品の」
名称が「八卦炉」
という場合であっても、
ゲーム中は逐一必ず「+3中古品の八卦炉」って表記になるべきですよね。

何が

もっとみる
【0064】アイテム画面④

【0064】アイテム画面④

いつになったら薬草を拾えるのでしょうか。

アイテム周りの機能だけは設計書でも作ろうかというくらい
いろんな要素が入ってきてて、
最低限の形になるまでの道のりだけでも遠いです。

えーっと、前回は、ああ
アイテム名が固定だった頃の名残で
アイテム名の後に入る空白の数も固定になってて表示が崩れる
でしたっけね。

psnItemList=(1 2 3)for i in "${psnItemList[

もっとみる
【0063】アイテム画面を作る③

【0063】アイテム画面を作る③

アイテム画面は長丁場です。

とりあえず、今はこんな感じになっています。

: 'アイテムレイヤー結合' && { ################################################## ## joinFrameOnItem ## 画面フレームと、アイテム表示枠を結合する ## lnSeedのマップ枠の中にlnItemInfoをはめ込む。 ##

もっとみる
【0062】アイテム画面を作る②

【0062】アイテム画面を作る②

さて、暫定的な持ち物データを作ったので、
前に作ったアイテム表示画面に持ち物データを被せてと思います。

前のときにも書きましたが、
今のところアイテム画面はこう用意されており…

: 'アイテム欄表示内' && { ################################################## ## defItemInfo ## アイテム一覧表示。レイヤー2。

もっとみる
【0061】アイテムマスタを作る

【0061】アイテムマスタを作る

どこまで行きましたっけ。
枠作ったところですね。

【0059】ではアイテム表示画面を実装しました。
今回は、その枠に所持品を表示し…
所持品って何?

というわけで、アイテム画面を描画するのに必要な、
アイテムのデータ実体を作りたいと思います。

【0060】でかいた通り、アイテムのデータの大半は
データベース化された文字列(配列)データの中に蓄えられ
必要に応じて読み出されることになります。

もっとみる
【0060】文字列→配列の変換でxargsを使ってハマった

【0060】文字列→配列の変換でxargsを使ってハマった

そもそもシェルスクリプトを
シェルスクリプトらしく効率的に使おうとする場合
配列は余り意識しないべきなんだという気はしています。

配列自体は作ってもソレ要素分反復するとかいう記述は
シェルスクリプト的じゃないというか
イテレーティブに扱えるデータならそのまま次の処理に放り投げて
要素数とか番号とかを念頭には置くべきじゃないんではないか
という感じがしてきています。

が。

まあ…パイプでつらつ

もっとみる
【0059】アイテム画面を作る①

【0059】アイテム画面を作る①

様々な機能がまだ放置気味だと言うのに
新たな機能に取り掛かる愚行に出ます。

ローグ系ゲームの目玉と言えるアイテム!

を表示する画面ですね。

もうしつこいほど映してますけど、これが今の画面構成です。

実はメニュー画面と同じ領域に
アイテムを表示しようかなと思ってたんですが、
あまりにも表示領域が小さい(文字数の制限がキツイ)ので
途中で全画面を使うように切り替えました。

メカニズム的にはメ

もっとみる
【0058】localだとかdeclareだとか

【0058】localだとかdeclareだとか

以前に、
localにdeclareと一緒になんかオプションをつけるとエラーになるの
なんでだろ
とかいう記事をどこかに書いた気がします。

そもそもbashにおけるlocalとかdeclareのことを
ちゃんと理解していなかったわけですが

調べてみるとこのワードの周辺では
・変数スコープを絞る
・読み取り専用の変数を作る
方法として語られることが多いようです。

その際に
スコープ絞りとして

もっとみる
【0057】readコマンドに穴があった

【0057】readコマンドに穴があった

何で今まで気づかなかったのかと穴があったら入りたい気分なんですが

こんなコマンド無いわけですよ。

「aa」と入力するなら、
「da 4」つまり左方向へダッシュするコマンドなんですけど
間にスペースが有る場合は、
当然違うものとして認識されてほしいわけです。

が。

aaコマンドとして認識される。

なぜじゃ。

どうもスペースがきちんと認識されていないような感じです。

コマンドは、画面上の

もっとみる
【0056】なんか色々実装しました

【0056】なんか色々実装しました

一つ手前のエントリにあるとおりだったんですが、まあ山は越えました。
またその間に、
noteやGithubにはアクセスできないけどazureにはアクセスできる
という環境にいたもので、
azure上のLinuxにcloudshellからSSH接続してgit環境を作り、
テキストエディタMicroで
スキマ時間を使ってちまちまといじっていました。
私のような初学者にはマジ神エディタ。viとか無理だか

もっとみる