Aokashi Room

作った作品の紹介やレビュー、トラブルシューティングとか色々

はてなブログのデザインテーマ「Vertical BlogTheme」をテーマストアに投稿しました

f:id:aokashi:20200114120420p:plain

はてなブログのデザインテーマを投稿しました。

テーマについて

blog.hatena.ne.jp

今回投稿したテーマは「Vertical BlogTheme」です。明るい色と暗い色の組み合わせを目指しました。左側のコンテンツは明るい色で、各記事の項目には白い背景色を与えています。一方の右側のサイドバーは暗い色で、デザインのカスタマイズで背景を変更すると反映されます。サイドバーの暗い色が縦に伸びる意味で「Vertical」と名付けました。

WordPress の公式テーマ Twenty Fifteen をベースに、昔制作した WordPress のテーマの要素と、はてなブログの環境に合う要素を加えながらデザインしました。

ja.wordpress.org

f:id:aokashi:20160505115112p:plain
参考にしていた WordPress テーマの画像 (以前のブログ記事から持ってきました)

Twenty Fifteen は左側にサイドバーが配置されていますが、はてなブログでは右側にサイドバーを配置することがほとんどのため、右側に配置を変更しました。また、ヘッダーやフッターも、左側のコンテンツに配置しています。

スマートフォンでもタブレットでも同じデザインで表示できるレスポンシブデザイン対応のテーマです。

サンプルは下記のブログからご覧になれます。

vertical-blogtheme.hatenablog.com

既存のテーマであれば、「Gravity」と類似しているかもしれません。こちらは3カラムになります。

blog.hatena.ne.jp

開発の経緯

前からブログのデザインを変更して、ブログ更新のモチベーションを上げれば良いなと思っていました。

そこで、自分でテーマを作ろうと思ったのですが、結構手間が掛かりそうだと思い、作成せずに既存のテーマにカスタマイズを加えれば良さそうと判断しました。

しかしながら、後で調べてみると、はてなブログのデザインテーマ作成はCSSファイルのみということが分かり、これなら短時間で作成できると思って開発に至りました。

help.hatenablog.com

開発で時間がかかった箇所

短時間で作成できる と言いましたが、はてなブログのデザインテーマはCSSのみですので、レイアウトの配置に凝ってみようとすると、逆に時間がかかってしまいます。

背景色の割当

  • はてなブログのデザイン設定で背景画像を変更すると、右側のサイドバーにのみ反映されるようにしたかったため、サイドバー部分を透明にする必要がありました。
  • しかしながら、左側コンテンツ外側の背景も簡単に変更できるようにしたい関係で、その外側の背景を充てるセレクタの数も最小限にする必要もありました。

両者とも満たそうと実装しましたが、この場合だとサイドバー部分の位置を絶対座標にする必要がありました。

#container {
    background-color: #c0c0c0; /* 左側の背景色の割当は簡単なのだが... */
    position: relative;
}

#box2 {
    position: absolute;
    top: 0;
    left: 800px;
}

しかし、この場合だと、左側コンテンツの高さが、右側サイドバーの高さよりも低いと、右側サイドバーの背景が途切れるなど、レイアウト崩れが発生してしまいます *1

f:id:aokashi:20200114004144p:plain
サイドバーの方が高いとこんな感じになってしまう。

レイアウト崩れを起こさないようにすることも出来ないことは無いですが、結構大変な作業になることから、ブログタイトル、メイン、フッターそれぞれの要素に左側コンテンツの背景色を割り当てるようにしました。

そのため、左側コンテンツの背景色を変更しようとすると、下記のようになります。ちょっと面倒ですね。

#blog-title,
.header-image-enable #blog-title,
#wrapper,
#footer {
    background-color: (お好きな色);
}

WordPress だと、テーマのカスタマイズ機能があるおかげで、テーマを使用する側からは、簡単に色を変えることができます。

まあ、それ以前にはてなブログでは HTML の編集が出来ないので、出来るだけで解決する問題かもしれません。

左側コンテンツと右側サイドバーの幅のバランス

ここから先は、数学的な内容が含まれています。このために久しぶりに方程式を使いました。

このテーマはレスポンシブデザイン対応です。ということは、画面の横幅を変えると自動的にコンテンツの幅も変わります。

どのようにコンテンツの幅が変わるかを下図に用意しました。なお、 768px よりも狭い場合は1カラムレイアウトとみなし、コンテンツとサイドバーが同じ列に並びます。

f:id:aokashi:20200114114847p:plain
本テーマの横幅によるコンテンツの幅の決まり方

ここで悩んだのが、左側コンテンツ 外側 の幅の決め方でした。

まず最初に考えたのは、50vw + (左側コンテンツ内側の幅) / (何かの率) という計算式で、左側コンテンツ外側の横幅を決める方法です。50vw にした理由は、ブログのコンテンツが中央に寄って見やすくなると判断したためです。率の値は最初は適当に 4 としていましたが、後に 3.238 辺りに変更していました。

  • 例えばPC環境の場合、左側コンテンツ内側の幅は 868px です。実際に左側コンテンツ外側の幅は calc(50vw + 868px / 4) になります。

この方法で進めた結果、幅を変えるとヘッダーとコンテンツの幅が合わない事態が発生しました。

f:id:aokashi:20200113225323p:plain
コンテンツ内側の幅が変わる直後の幅だと、こんな感じで幅が揃わなくなる

スクロールバーが原因で画面の横幅が狭くなってしまい、コンテンツ内側の幅が確保出来ないから・・・というのもありましたが、デバイスごとに率の値が同じだと、違うデバイスで正しく幅が揃わないようです。

とりあえず 50vw にこだわるのをやめて、デバイス毎に幅を vw 単位で割り当てる方法を用意しました。左側コンテンツ外側の幅を決めるには、(左側コンテンツ内側の幅 / 指定したメディアクエリーの最小幅) * 100 で済みます。

  • 例えばPC環境の場合、メディアクエリーの最小値は 1200px です。先程の左側コンテンツ内側の幅である 868px と併せて使用すると、左側コンテンツ外側の幅は 72.3vw になります。

それをデバイス単位で設定したところ、幅が揃わない事態は直りましたが・・・。

f:id:aokashi:20200113230142p:plain
vw 単位のみで指定して 1920 × 1080 で閲覧した場合。右側サイドバーが狭くて違和感がある。

上図のように、幅を広げると内容がかなり右寄りになり、このテーマのコンセプトである「デザイン設定で設定した背景が大きく見えるようになる」と合いません。

そういったことがあって、一度 50vw から値を足す方法に戻って再び最適な方法を模索しました。デバイス毎に率を変えれば良さそうなので、下記関数を用意して計算してみました。

/**
 * 左側の横幅を取得します。
 *     このテーマは右側のサイドバーをなるべく広く取るために、画面の半分の幅をベースに、左側の横幅を計算しています。
 *     左側の横幅を取得するまでには、左側の内容の横幅を割るための率(ratio)が必要です。
 *     ratio はコンテンツとサイドバーの内側の幅で値が異なるため、ここで計算することになります。
 */
@function make-content-outer-width($viewport-width, $content-width) {
    $half-viewport-diff: $content-width - ($viewport-width / 2);
    $ratio: $content-width / $half-viewport-diff;
    @return calc(50vw + #{$content-width / $ratio});
}

// タブレット、PC(狭い)、PC(広い) それぞれに対応した左側内側の幅を設定 (実際は関数を使用して計算しています)
$content-width-sm: 520px;
$content-width-md: 660px;
$content-width-lg: 868px;
// それぞれの左側外側の幅を設定
$content-width-outer-sm: make-content-outer-width(768px, $content-width-sm);
$content-width-outer-md: make-content-outer-width(992px, $content-width-md);
$content-width-outer-lg: make-content-outer-width(1200px, $content-width-lg);
// 設定した変数はレイアウトに使用される

実際に動かしてみると、レイアウトが崩れず、ちゃんと中央に寄るようになりました。

ソースコード

GitHub に公開しています。変更履歴も、下記の GitHub の Releases から確認できます。

github.com

*1:実際 CSS でレイアウトする際に position: absolute を指定すると、あれこれ副作用が発生してしまうため、ちゃんとした形で実装するには結構難しい作業だったりします。

依頼生活3章 制作中!

f:id:aokashi:20200102220036p:plain
3章の中で出てくる舞台「サウシー町」の駅

おまたせしました。ながーい間公開できていないまま放置していた依頼生活の3章ですが、現在制作中です。

依頼生活とは?

2010年2月に1章が公開された長編のWWA作品です。1章は一番最初に公開されたWWA作品となります。3章構成になっていて、自分のWWA作品の中では唯一の複数章作品です。

物語

このゲームの舞台となっている惑星「森星 *1」では、地球温暖化が原因による災害が発生しています。今作の舞台であるハヅツ国も例外ではなく、近年台風の発生に頭を悩ますばかり。

この後絶対おかしい現象が起こるはずだと思った主人公は、翌日見事に的中。普段おとなしくしていたモンスターたちが急遽暴走してきました。本来なら出てこないスライムも出てきてしまい、住民は困惑しています。

普段だったら通っていた学校も、急遽国からの指導により、「冒険者学校」に変更。暴走を止めるために、国中くまなく散策することになります・・・。

ちなみに、この物語の文章はこのブログ記事の執筆時に刷新しました。

章について

  • 1章 ... 冒険者学校で状況を聞き、ハヅツ国北部を探索します。
  • 2章 ... セルドシティに到着後、ハヅツ国南部を渡ります。
  • 3章 ... ハヅツ国南部を探索し、謎の原因を追い求めます。

3章の制作状況について

3章はサントグ町に到着した主人公とその仲間が、まだ残っているとされている鍵を見つけ出すために冒険を進めます。

マップはすでに完成していて、後はメッセージやストーリーの追加、モンスターのバランス調整、最後のシーンの制作が残っています。なお、グラフィックは「謎めいた機械を追い求めて」で使用していたグラフィックを使用しています。

aokashi.hatenablog.jp

章毎にグラフィックが違うのは、WWA作品の中では数少ないかもしれません。プレイしてみると、進むたびにグラフィックが次第に進化していく・・・という小さいお楽しみ要素が待っています。

2章以前の手直しについて

ゲームのストーリーの設定を明確にしたり、優しすぎたゲームバランスを調整したりするため、2章以前のマップデータにも修正を加えます。

なお、だいぶ前に1章をリメイクしたことがありますが、リメイクしたマップは使用せず、すでにあるマップを修正する形で済ませます。

*1:住んでいる人からは森惑星と言っているのだが

2020年あけました

あけましておめでとうございます。 2020年もよろしくお願いします。

さて、気がついたら最初のホームページ「Coden City」設立からもうすぐ10年! このために Aokashi Home を GatsbyJS で作り直しました。

aokashi.hatenablog.jp

これから考えていること

WWA Wing の整理

現在、 WWA Wing のバージョンは 3.2.11。

github.com

2019年では、スタイルシートの SASS (SCSS) 化を担当しました。途中で $color マクロが動作しないバグが発生しましたが、後に修正されています。

現状の WWA Wing は packages/engine/src/ をあれこれ見ればわかるのですが、 ほとんどの処理が wwa_main.ts に集約されています。 ですので、なるべく別のファイルに移りしたりして、ソースコードを見やすいようにリファクタリングを進めています。

新しい WWA 作成ツールの模索

WWA マップ作成ツールに代わる新しい WWA の作成ツールを模索しています。

完成した場合は、そのタイミングで、 WWA のマップデータの仕様を公開したいですね。スーパー正男では、作成ツールが結構出ているので、 WWA も作成ツールを自由に選ぶ世の中になりたいです。 ただ、これは暗証番号がバレるリスクが高いため、慎重に進めようと思います。

その他

  • 就職活動を進めます。
  • 研究活動のテーマが未だにはっきり決まらず、迷走している状態なので、早いうちに決めておきたいです。

謎の機械を見つけるチャンス!「謎めいた機械を追い求めて」 WWA COLLECTION 2 へ収録!

WWA COLLECTION 2 が配信されました。前回と同じく、自分の作品が WWA COLLECTION 2 に収録されます。

aokashi.hatenablog.jp

収録作品「謎めいた機械を追い求めて」

f:id:aokashi:20191210135301p:plainf:id:aokashi:20191210134435p:plainf:id:aokashi:20191210134602p:plainf:id:aokashi:20191210135202p:plainf:id:aokashi:20191210135113p:plainf:id:aokashi:20191210135017p:plain

誰かが街に残した機械を撤去するために行動する主人公の物語です。Aokashi Home で公開している最後の作品「シティーアイランド」から5年ぶりの新作となります。

これまで制作したWWAのいいところを合わせた集大成として、演出やボリュームはできるだけ盛りました。

また、WWAを初めて知る方にも、WWAの文化を知ってもらうためにギミックも入れています。難易度は易しく設定しています。

  • 舞台は三角州となっている「すな地域」です。北はカンセツ連峰、南はヨコテ湾に面していて、昔から物流の中心地として栄えていました。
  • 時代は経済成長の真っ只中。住宅不足が問題となり、ニュータウンの建設を計画していたのですが、地面の調査で正体不明の機械を発見しました。
  • 機械について詳しく知る人は殆どおらず、どう撤去するべきかわかりません。

WWA COLLECTION 2 の作品収録や今後の予定について

WWA COLLECTION 2 のゲームボリュームに収めるには大きすぎるため、前編と後編で分けています。

  • 前編は、機械が入っているとされている、洞窟に入るまでの活動が含まれます
  • 後編は、洞窟に入ってから撤去までの活動が含まれます

そして WWA COLLECTION 2 配信後の来年には、この作品を前編と後編を統合させて、Aokashi Home や PLiCy にも公開します!

WWA COLLECTION 2 を遊んだ方や、逆にこの作品を通じて WWA COLLECTION 2 を知った方が増えればと思っています。

この前編と後編の統合作業については、随時ブログやTwitterで発信する予定です。いつ公開するかは分かり次第お知らせします。

余談

この作品に関する裏話を、ゲームのプレイに影響しない範囲でお話します。

  • この作品を構想したのは概ね3, 4年前。WWA作品の集大成として考えてはいたものの、完成度を高めるために何しようかと考えることしかしていなかったため、制作が遅れました。
  • 舞台は、自分のあるゲームの舞台と隣接しています。その答えは、 Aokashi Home や PLiCy への公開後で明らかになります。
  • 一部の街には、実在の地域をモデルにしています。名前で分かるかな?

ちなみに、 WWA COLLECTION 2 の発表に合わせて、 PLiCy さんと協力して紹介ページを作成しました。今回はトップ画面に収録作品の画面を集めましたので、コレクション作品だと一目で分かると思います!

WWA素材に路面電車を追加!

Aokashi HomeWWA素材に新しい素材が加わります!

新素材 路面電車

街と街の移動として、路面電車が必要なことから制作しました。あ、鉄道とかバスとかでも良かったんですが、時代設定上、路面電車を景観として入れたかったんです。

素材は Aokashi Home のWWA素材ページ からどうぞ。タグ「路面電車」から探すことができます。

ついでに、路面電車を走らせるための路面軌道も追加しています。電停は後ほど追加する予定です。

扱い方

画像素材にある路面電車を、使用するWWAのイメージ画像に貼り付けて、WWA側では各マスを使用して物体パーツを作成します。

  • この素材は列車と違って伸ばしたり縮んだりすることはできません
  • 冷房装置やパンタグラフを消したり、開閉演出を加えたりしたい場合は、画像素材内に専用のチップがありますのでそちらをご利用ください
    • ただし、一部の画像素材では、パンタグラフを消すことができません

各素材の特徴

f:id:aokashi:20191217005213g:plainf:id:aokashi:20191217005217g:plain
路面電車を使用したサンプル

  • 19Tram-1.gif ... アイボリー1色の車体に、1つ目の前照灯が特徴。昭和レトロを感じさせるデザインです。前照灯の位置はお好みでどうぞ。
  • 19Tram-2.gif ... 清潔な白い車体にグレーとオレンジを組み合わせた箱型路面電車。いわゆる軽快電車で、大都市の路面電車では廃止が相次ぎ、実用的な路面電車として開発されたという設定です。なぜかここだけ前方のドアが引戸になっています。
  • 19Tram-3.gif ... 近年話題のLRT方式の路面電車です。超低床電車なので、車内のステップで頑張って上ったり、降りる際にこけて転んだりする必要はありません。3つの車体で構成されていて、真ん中の車両には台車が入っていません。

これらの車両は、実世界の路面電車をモデルにして、いくつか変更を加えながら制作しました。ちなみに、そのモデルになった路面電車一度も乗っていません! (広島とか愛媛に行きたい・・・)

その他の更新情報

Aokashi Homeで更新された情報を下記に掲載しています。

  • WWAページ
    • WWA Wing の対応切り替えをした後に別のページに進んで戻ると、対応切り替えが連動しない不具合を修正しました。
    • Thanks の「天使の血・悪魔の涙」に画像素材を使用した表記が無いため、追加しました。

余談

遠くないうちに、WWAの新作を出す・・・のかも・・・? (路面電車を使用したサンプル画面がヒント)

Aokashi Home を GatsbyJS で再構築しました

これまで Aokashi Home は2017年3月から HUGO で静的サイトを生成していましたが、 GatsbyJS で静的サイトを生成する形に切り替えました。

  • スクリーンショットはすべて開発中のものです。
  • GatsbyJS で発生したエラーとその解決策について見たい場合は、「実装で躓いたところと解決策」からご覧ください。
続きを読む

新しい Aokashi Home を作っています

Aokashi Home は Hugo で作成されていますが、現在 GatsbyJS で作り直しをしています。

せっかくなのでスクリーンショットとともに進捗を公開します。

(ここで掲載しているスクリーンショットはすべて開発中のものです。リリースした時に全く異なるものもあるかもしれません。)

トップページ

f:id:aokashi:20191025105811p:plain
トップページ。PlayingとMakingの分類はやめて、コンテンツ毎だけのシンプルな表示に。

去年のお知らせ でお伝えした通り、Playing と Making の分類を止めて、WWAやソフトウェア、素材といったコンテンツの構成としています。資料集が無いようですが、後ほど追加する予定です。

また、 自分について もトップページに移行し、個人サイトとして扱いやすいように整備しています。

WWAページ

f:id:aokashi:20191026002333p:plain
WWAページ。従来と変わらないような・・・?

WWAページは一覧ページとして扱うように、一覧以外のテキストを減らしました。こちらも、データファイルから取り出して表示しています。

なお、近いうちにはタグで絞り込みできるようにするつもりです。が・・・ WWA Wing の対応以外の絞り込みはあまり意味がないかも?

ソフトウェア

f:id:aokashi:20191026003136p:plain
ソフトウェアページ。

Playing の Portable Launcher と Making のプログラムが掲載されています。こちらも、WWAと同じく一覧表示になっていますが、閲覧しやすいように2カラム構成にしています。

素材

f:id:aokashi:20191026002514p:plainf:id:aokashi:20191026002552p:plain
WWA素材のページ。なんと、プレビューもその場でできます!

ここが一番変わったんじゃないかなあ。

WWA素材とツクールMV素材ではジャンルごとで見出しを分けず、そのまま一覧として表示されるようにしました。そして、各項目の画像をクリックすると、フルサイズでプレビューが表示されるようになっています (が、サイズによってはフルサイズで表示してくれない場合もありますが・・・)。

アイコン素材も見出しではなく一覧として表示されますが、こちらはシリーズ毎に項目を分けている都合上、ソフトウェアと同様に2カラム構成になっています。

こちらも、近いうちにはタグで絞り込むできるようにするつもりです。タグの絞り込みができた時に一番便利に感じるのはここだよね。

ポートフォリオ

f:id:aokashi:20191026002742p:plain
各項目の詳細ページ。ポートフォリオのトップページはまだ制作中です。

当サイトの新コンテンツ、ポートフォリオです。そろそろ就職活動が迫っているため、新設することになりました。これまでの自分について細かく記載していますが、個人情報の都合上すべての項目が含まれるとは限りません。

各項目の詳細ページは、画像を含むことが可能で、複数存在する場合はカルーセルで表示されます。

新しい Aokashi Home がリリースされる直後は、まだ項目数は少ないかもしれません。後ほど増やすつもりでいます。

その他

  • お知らせはありません。これは、最新情報の発信場所をなるべくTwitterや当ブログで集約したいためです。
    • 皆さんには関係ないですが、記録目的で GitHub のプライベートリポジトリで更新内容を含めています。
  • スマートフォンのメニューの表示は現時点では未定ですが、メニューに載せる量からすると、ハンバーガーメニューになるのかなー・・・と思っています。
  • 去年問題だった目次のトラブル はバッチリ解決していますが、目次を出すページが少なくなったので解決と言うには微妙かな・・・?

リリースはいつになるのかな、今年中にできたらいいな。

時間があったら、 GatsbyJS でのノウハウも書こうと思います。