Hello World


はじめまして

こんにちは。栗名です。ゲーム作ってます。

ゲームの開発の様子や進捗などを垂れ流すためにサイトを立ち上げました。
主に技術的な内容や制作の話などをする予定ですが、それ以外も雑に投げます。受け止めてください。

現在はJRPGを制作しています。開発を始めてから二か月ほどでしょうか。以前の様子はXを辿るとわかると思います。

↑開発初期の様子

↑現在の様子

まあ、そんなに変わってませんね。カメラが少し近くなりました。

サイトの技術スタック

せっかくなのでこのサイトがどうやって作られているのかを説明しましょう。

Astro

ブログサイトなので静的に配信できる形態ということもあり、お試しで選択してみました。

Content collections@astrojs/ sitemapの相性が悪く、astro.config.mjs内部でCollectionsにアクセスできず…
lastmodの自動生成をどうしたもんかと思ってたのですが、だいぶハックな手段で解決しました。

import { getCollection } from 'astro:content';

export async function GET() {
  const posts = await getCollection('blog', ({ data }) => !data.draft);

  const map: Record<string, string> = {};
  for (const post of posts) {
    map[`/blog/${post.id}/`] = (post.data.updatedAt ?? post.data.publishedAt).toISOString();
  }

  return new Response(JSON.stringify(map));
}

こんな感じのファイルをsrc/pages/lastmod.json.tsなんかにおいて、readFileSync('./dist/lastmod.json', 'utf-8')するとあら不思議。読めてしまいます。まあlastmod.jsonは公開されるんですが、見られたからってだから何って話なので、これで良しとします。

Cloudflare Pages

ドメインをCloudflareで取得したのでついでに利用します。
Astroは静的サイトをビルドするので都合が良いですね。
無料で使わせてもらえるなんて太っ腹です。一生ついていきますCloudflare先生。

Cloudflare PagesはAstroをサポートしているので、めちゃくちゃ簡単にデプロイできます。時代に感謝。