Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

オリキャラ交流ゲームの作り方を書きたかったけど飽きた

Last updated at Posted at 2025-12-26

はじめに

途中で飽きたので途絶しました
どこで飽きたか予想してみよう!
って右に目次書いてあるからダメじゃねーーーか

この記事は好きなことを話そう! Advent Calendar 2025の25日目に突然入れたやつです。
身内に作り方教えろと脅迫されたので書いてるやつでもあります。
兄の命だけは助けてくれ

定期ゲームの作り方概論みたいなのは過去になんかいっぱい書いたので、
今回は5年くらい定期作りマシーンになった結果の結論だけを話します。
言語は凝ったことしないのでHTML+CSS+JS+PHP+MYSQLと思われる
JSは今回登場しない。

注意

技術的理由を全然説明しません
詳しくは自分で調べてください
なんでそうなるかはAIに聞いたほうが早いのでそうしなさい
GPTとかgeminiとかclaudeなど好きにしなさい
キャラとイチャつくときはclaudeが表現豊かで嬉しい

事前準備/環境構築

いるもの

  • がんばるという気持ち
  • ウインドーズのパソコン
  • XAMMP
  • VisualStudioCord
  • VisualStudioCordの拡張
  • あとなんかChromeかEdge(FireFoxでもいいけどオススメはしない)

環境構築

XAMMP入れる

ザンプって読むらしいよ。
色々出来るんだけど、とりあえず「phpとデータベースを動かすためのマイクラの前提mod」だと思ってもらったらいい

この辺とか読んで従ったらできます
起動できたらApacheとMySQLの行のStartを押して
イメージ1043.png
なんかこんな風にする
MySQLのAdominを押すとphpMyAdminが開かれるので、一旦それでオケー
出来ないときは「XAMPP phpmyadmin できない」とかで調べて

VSC入れる

Q. って何
A. メモ帳Lv.200000のこと
VISUAL STADIO CORDなのでVSCです
普通にテキストエディターとして有能だから俺は文字書くときも割と使ってる

この辺とか読んでいれたらオケー
で、VSCはマインクラフトだからmodがメッチャあるのでOptifine入れる

まずはこれ読みつつPHP Serverを拡張から探して入れる
するとPHP Serverの効能によって
イメージ1044.png
画面右上にこういう青いマークが生じる
押すといま開いてるPHPファイルをその場で動かせる
メッチャ便利

あとはこれ読みつつ、

  • PHP Intelephense
  • Atom One Dark Theme
  • zenkaku
  • Auto Rename Tag
  • indent-rainbow
  • Prettier - Code formatter

あたり入れたらオケー
PHP Intelephense最強伝説(意訳: 関数とかをサジェストしてくれて便利です)
それはそれとして俺はGitHub Copilotがないともう耐えられない
ウィーンガショ

触ってみる

フォルダ作れ

パソコンで作業をする場合まあディレクトリ(要するに場所のこと)を隔離するべきだわな。
デスクトップを右クリックしてテキトーな名前を付けてください
なんでもいいけど慣例として半角小文字英数字で完結しておいたほうが無難
(日本語や記号は得てして文字コードのトラブルに振り回されがちだからです)
イメージ1052.png
今回はphp_tutorialとするよ
よくtuterialって打ち間違える

そしたらVSCを起動して「ファイル」「フォルダーを開く」でさっき作ったフォルダを開く
準備完了です
ポリネシアン開発1日目 環境構築 完了

index.php作ってって書け

まず「ファイル」「新しいテキストファイル」でテキストファイルを開く
そしたら「名前をつけて保存」またはSHIFT+CTRL+Sでindex.phpって入力して保存
するとphpファイルで保存される

多くのサーバーのデフォルトではindex.html(またはphp)を自動的にトップページに認定する
ので、いま書いたページがトップページということになる

そこに今回はこう書く

<?php echo"うんち"?>

これは日本語でいうと「『うんち』という文字列を出力しろ」
つまりうんち出力コード

そして、右上の青いPHPのボタンか、右クリックして「PHP Server: Serve project」をする
するとうんちが出る
イメージ1053.png
この時点でお前はうんちプログラマーが確定した
ざまあみやがれ

htmlの形状を作れ

<!DOCTYPE html>
<html lang="jp">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,user-scalable=1">
    <link href="style.css" rel="stylesheet" type="text/css" />
    <title>ページのタイトル</title>
</head>
<body>
    <?php printf("うんち")?>
</body>
</html>

これをコピペする。以上。
一応説明するなら、

  • <!DOCTYPE html>でhtmlの文章であることを宣言
  • <head>タグ内で初期設定をいろいろする
    • <meta>はなんか要するにコンフィグ 文字コード設定と表示設定
    • <link>は外部リソースの読み込み css以外もあるよ
  • <body>内に本編

ちなみにphpはキモくて、.phpファイルなのにhtmlが書けるし、
<?php (ここに内容) ?>ってするとhtml内にphpが書ける
その一点でphpを使う理由があるというのはwebをある程度やると分かるかも

style.css作ってbody{font-size:72px;}って書け

<link href="style.css" rel="stylesheet" type="text/css" />
っていうのが要するにstyle.css召喚の儀なんだけど、style.cssが存在しないね
つくるよ
「ファイル」「新しいテキストファイル」してから名前をつけて保存、
名前はstyle.cssにしようね
これが要するに外付けの装飾パーツになります

cssは書式がキモくて

セレクタ{
    プロパティ: ;
}

という方式を取るよ 絶対セミコロン忘れるなよ
今回は

body{ 
    /* body つまりbodyタグのこと */
    font-size: 72px; /* フォントサイズ */
    font-weight: bold; /* フォントの太さ */
}

って入れてみよう
/* 内容 */はコメントアウトって言って読み込み無視エリアーです

イメージ1054.png
おお

phpMyAdominで新しいテーブル作ってみろ

SQLっていうのは端的にいうとエクセル
エクセルだからデータベース(.xlsx)があり、テーブル(シート)があり、カラム(列)があり、レコードがある
eno | キャラ名
1 | オリキャラ太郎
2 | 版権キャラ次郎
ってあったとき、enoとかキャラ名がカラム、1 | オリキャラ太郎 がレコード
プロフページ開いた時とかにeno1のデータを検索して、eno1のオリキャラ太郎でプロフはこうで~というデータを呼び出して羅列させているわけです

たぶん去年ぐらいにphpMyAdmin開いたの覚えてる?
閉じちゃった?そっか じゃあもっかい開いてね
イメージ1056.png

するとこういうのがあると思う
そしたら左の新規作成を押そっか

見た目が違う場合はテーマが違うかもなので見てみてね
たぶんpmahommeが一番見やすいと思う

イメージ1057.png
そしたらまあphp_testとかで作って、

イメージ1058.png
charactersとかでテーブル作って、

イメージ1059.png
カラムはこんなんでいいや

  • idのA_Iにチェック入れる
  • charanameとpasswordとcommentのタイプを「TEXT」にする

これだけ注意してね
本当はもっと正規化(ちゃんとする化)した方がいいんだけど、一旦これでいいです
いいな~って思ったら「保存する」で作成

イメージ1060.png
表示タブ押してこうなったらグレイト
このSELECT * FROM charactersとかいうのはこのcharactersの表を出してね~て命令
SQL文だね キモいね
定期ゲーはhtmlが5割でcssが4割にJSが2割、phpが7割のSQLが10割です
28割だね

CREATE TABLE `php_test`.`characters` 
(`id` INT NOT NULL AUTO_INCREMENT COMMENT '連番id enoだよ' , `charaname` TEXT NOT NULL COMMENT 'キャラの名前だよ' , `password` TEXT NOT NULL COMMENT 'パスワードだよ' , `comment` TEXT NOT NULL COMMENT 'キャラの一言コメントだよ' , PRIMARY KEY (`id`))
ENGINE = InnoDB;

ちなみにテーブル作成の儀もまたSQLで再現できます
なぜphpMyAdminを使っているのか?それは本来全部SQL文でやんないと行けないのを、GUI(UIで見えるようにする化)できるからです

でもこれをphpに引っ張ってこないといけないんだよね
それがむずいんだよな
なんなんだ バカ 最悪 アホ

phpでDBにデータを入れてみるよ

説明むずいから呪文置いて終わるね

<?php
    session_start();

    $dsn = 'mysql:dbname=php_test;host=localhost;charset=utf8mb4';
    $user = 'root';
    $password = '';
    $dbh = new PDO($dsn,$user,$password);
    $dbh->query('SET NAMES utf8mb4');
?>

これをindex.phpの一番上(headよりも上ね)にコヒペ。
全部わかんないと思うけど、これでいいです

そうしたら、追加でこれも入れる

<?php 
    $stmt = $dbh->prepare("INSERT characters (charaname, password, comment) VALUES ('テスト', 'password' , 'こんちは~');");
    $stmt->execute();
    echo 'データを追加しました。<br>';
?>

なんやねんこれ
これの

INSERT characters (charaname, password, comment) VALUES ('テスト', 'password' , 'こんちは~');

ここの部分がSQLで、まあ要するにphpでSQLを実行するための術式ね
「charaname『テスト』、password『password』、comment『こんちは~』というレコードを挿入するよ」という意味
idは?idは勝手に入るから気にしなくていいよ
idにはA_Iってチェック入れたと思うんだけど、あれは自動連番という意味なので

入力を終えたらページをリログしてみよう
phpはプログラムだから、勝手にやるぞ
イメージ1062.png
おお
イメージ1061.png
おお

逆に、データを取り出してみる

入った?入ったね 入ったけどこれじゃ観賞用だわな
ちなみに更新連打すると更新しただけ入るから気を付けてね

そしたら今度は取り出してみよう

<?php 
    $id = 1;

    $stmt = $dbh->prepare("SELECT * FROM characters WHERE id = :eno");
    $stmt -> bindParam(':eno', $eno);
    $stmt -> execute();
    $chara = $stmt->fetch(PDO::FETCH_ASSOC);
?>

これをbodyタグの中に入れる
何がいいたいかと言うと呼び出し術式です idが1の人を呼び出すよ。
呼びたしたものは$charaに入るんだけど、そのままだと

"chara": {
    "charaname": "テスト",
    "password": "password",
    "comment": "こんちは~"
}

みたいな風に格納されてるせいで言語化が困難なんだよな。
これを配列って言うぞい。

まあなので、読めるようにする

<?php 
    echo "なまえ: " . $chara['charaname'] . "<br>";
    echo "コメント: " . $chara['comment'] . "<br>";
?>

$charaの中のcharanameの項目見せて~って感じのことを要求しているね
これをうまいこと並べるとプロフになるし、
イメージ1063.png
今はこうだ。
font-sizeは好きに調整していいからね

飽きた

飽きたあああああああああうおおおおおおおおおおおおおおおおおお
ここまで読んでくれた人、ありがとう!
ここまでやって良かったなと思ったひとは以下をAIに聞いてみてくれ。

  • キャラクター登録
    • 登録フォーム<form>を作る
    • formから$_POSTを貰ってバリデーション(整える化)する
    • パスワードの暗号化
    • 整えたデータをINSERTする
  • ログインフォーム
    • 暗号化したパスワードとの照合
    • SESSIONの付与
    • SESSIONの延長設定
  • キャラリスト/プロフ/キャラ設定
    • キャラテーブルを纏めて取得し羅列っち
    • htmlspecialcharasがないとフタハナのプロフになるぞ
    • icon登録とiconsテーブルを作ってcharactersテーブルとリンクしてみよう(JOIN句)
  • チャット
    • 発言のバリデーション
    • 発言のINSERT
    • 発言の読み込み
    • 正規表現置換とかで装飾タグ実装および表示時の変換
    • ページネーション
    • $_GETでエリア切り替えとか
  • cronというのは定時でphpを実行するやつです
    • AP配ったりできるよ
    • 日記みたいな遅延送信もできるよ
    • タイムアウトが怖いから定期更新ゲームの定期更新部分に使うのはやや怖い
  • 本番環境へ
    • レンタルサーバー登録
    • FTPって何/FileZilla便利だよ
    • レンタルサーバー探すときはphpmyadminを備えてるやつがいいよ

いや多 無理だろ
まあ作りたくなったら頑張ってくれ
応援してるから

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?