投稿

『Smile Reversi』−勝利よし、敗北なおよし− 制作ノート

イメージ
  『Smile Rversi』(スマイル☆リバーシ)−勝利よし、敗北なおよし−  を公開してから一ヶ月ほど経過したので制作ノートを記す。 『Smile Rversi』はCPU対戦リバーシであり、初期段階ではプログラミングの練習目的で作ったCPUが弱くてなんの面白みもないゲームであった。 なんの工夫もないのもどうかと思い、最初に行った付加要素は『不揃い処理』であった。 よく見て貰うとわかるようにマスに対して石が中央に配置されず全てが微妙にズレている。 この手のゲームではマスに対して中央に石が配置されるゲームが多いが、人間は正確に中央には配置できないので不自然に見える。 なので、自然に見えるように工夫したのがこの『不揃い処理』である。  ただ、この処理を作った時に思ったのは、自分としてはとても気に入っているけど、ほとんどの人は気づきもしないという事。  プログラミングの練習目的で作っているのだから公開しなければならないわけではないし、弱いだけのリバーシなんて公開しても誰も遊ばないことは明白で、この不揃い処理を加えたところで遊びたいと思わせる要素には全くならない。  でも、せっかく作ったのだからなんかの要素を付加して公開できないかな? と思った。  色んな可能性を考えている中で、前回の『早押し百人一首 十連‼』で音声を付与した途端、作品に色がついたような感覚を思い返していた。  CPU対戦だからキャラクターに個性を持たせて、複数人用意してそれぞれにセリフを用意したらどうだろうかと連想が始まる。  でもCPUは弱いし、リバーシにそれほど興味のない私がこれ以上強いのを作る気力はない。  複数人CPU用意したって強くもなんとも無いリバーシを遊びたいと思う人がいるだろうか?  まてよ、逆に物凄く弱くして、敗けるのが難しいようにしたらどうだろう? そう思って弱いCPUを作ってみた。  うーん、弱いCPUといっても敗けること自体は出来る。  これでいいのかなぁとまた悩んだ。  そして、たどり着いたのが戦況を9段階に分けて状況に応じたセリフを用意する。勝利を目指すのではなく、状況に応じて変化するCPUキャラの表情の変化、セリフの変化を楽しむというコンセプト。  これは勝利という目的を転換して、目的を楽しむに変えるという事になる。  よく考えてみると友達とリバーシをするというのは先に友

早押し百人一首 十連‼ 制作ノート

イメージ
  2月に正式公開した『早押し百人一首 十連‼』について、今更ながら制作ノートを記しておく。 元々、百人一首の練習用プログラムの要望があったので『 百人一首(表示するだけ) 』(2023/05/27)を作成した。 後、ゲーム形式で練習したほうが面白いのでは? と思って作成したのが『 早押し百人一首 』(2023/06/09) シャッフルせずに順番どおりに確認することも、シャッフルすることも出来るようにした。 それからだいぶ時間が経った後、際限がないので10回で終わるようにしてほしいという要望があった。 そこで作ったのが『 早押し百人一首 十連‼ 』(2024/02/08)であった。 基本的に10回で終わるので短時間に練習できるが基本コンセプト。自動でシャッフルし、シャッフルなしのモードは削除してシンプルにした。(なお、当初の早押し百人一首でも5連モードは途中まで作っていたが完成しないまま機能は公開しなかった。内部的には存在していたので、それをちょっと作り変えたので手間はほとんどかかっていない) どうせだからと10回の平均秒数を8段階に評価し、その段階に応じて最後に笑顔の女性を表示するようにした。 これらの画像はnijijourneyによって生成しているが、この時点ではキャラクターを固定化するのはとても難しかったので、同じような印象の女性というレベルで生成しているだけで同一人物に見えるかは微妙。 Ver1.10 正式公開当初、Ver1.00の時点では以上の特徴で終わっていた。 この後、2024/02/24公開のVer1.10では声優の JiRさま に読み上げ音声を収録してもらったので、私の作った中では初めて音声の入ったウェブアプリとなった。 音声が入ってみると、それまで無音でテキストを眺めるだけだった状況から一変して命が吹き込まれたように感じた。 後からお話を聞くと、競技かるたの読み方で百人一首を読むのは初めてだったそうで苦労して練習されたとのこと。 私は競技かるたに詳しいわけではないので、専門的な立場の人は違う意見かもしれないけど、私にとっては十分すぎる音声だった。とてもありがたかった。 それと、いままで作成したウェブアプリは全て私一人で作ったもので、もちろんプログラミングの練習、復習を目的としているのだからそれで当然なのだけど、『早押し百人一首 十連‼』はVer1

『倉子ちゃん』制作ノート

イメージ
 プログラムばかり作っていて最近ブログを書いてないので、最近作ったプログラムについて記してみる。 昨日一般公開した『 早押し百人一首 十連‼ 』についてはおいておいて、1月末に公開した『 倉子ちゃん 』について記しておく。 倉子ちゃんはプログラムの練習用に作ったシンプルなパズルゲーム。 昨年から行っているプログラムの再学習を今年も引き続き行うという方針の元に作成している。 ゲームの内容はずばり往年の名作『倉庫番』を元にしたもので、非公開の初期版では『倉庫番』との相違点は殆どなかった。 ゲームのルールに著作権は存在しないとはいえ一般公開するにあたって『倉庫番』との差別化は必要だろうと思った。 そこで、いくつかの案を考えたのだが、基本的なゲームシステムが変わると手間がかかるので、荷物そっくりのダミー荷物を作り、ダミー荷物は触ると消えるというシステムを採用した。 これが最も手間がかからないアイデアだったし、ダミーを見極めて消してしまった後は普通の『倉庫番』と同じ感覚で遊べる。 この『倉子ちゃん』に限らないが、公開しているウェブアプリは全て素のJavascript(Vanilla JS)で作成している。 昨年の初め、ゲームを作ろうとして初めに選んだのはUnityというゲーム開発環境だった。 実に簡単にゲームを作れることがわかったが、肝心のモバイル向けウェブアプリに対応していなかったので、早々に使用をやめた。 その後は、Webアプリに特化したPlaycanvasの練習を行っていたのだが、各種チュートリアルや解説記事がPlaycanvasのバージョンによって動いたり動かなかったりして、Playcanvasのルールに振り回されるのが嫌になった。 そうして、結局Javascriptを基礎からやり直すことにして開発環境やライブラリの類は一切使わない方針へと転換した。 その後は毎週なんらかのプログラムを作り、公開する価値があるかもと思ったものは公開してきた。 『倉子ちゃん』もそうした多少は公開する価値のあるプログラムの一つで、必要以上に手間を掛けていない。 例えば右に動かした時に右向きに、左に動かした時に左向きになるとか、歩くアニメーションを実装するとか、そういう事はしていない。 そういうのはゲーム開発環境なら簡単に実装できるのだろうけど、一つずつ自分でプログラムを組むと結構時間のかか

スターフルーツと画像生成AI

イメージ
 ブログに記していないが、スクリプトの開発、公開は続けている。 最近では神経衰弱のような絵合わせゲーム「 ペアカード(飲み物) 」を公開した。 これもJavascriptの練習を目的とした単純なプログラムであるが、飲み物の画像を付け、ベトナム語の単語を表示するようにすることで遊びながら単語を覚えるというコンセプトにした。 当初はベトナム語のみであったが、日本語を学習している人にも役に立つように日本語表示も追加した。 カードの画像は昨年からのテーマである画像生成AIを用いている。 ベトナム語変換スクリプトの画像では最近DALL-E3を用いて生成した画像もあるが、ペアカードでは裏面のみDALL-E3で表面の飲み物画像は全てNijiJourneyによって生成している。 画像とテキストを入れ替えれば他の単語の学習にもなるので、次は果物編を作ろうと思い、ベトナムらしい果物5つと世界的に食べられている果物5つを選んで生成を開始した。 いちご、リンゴ、マンゴー、ドリアン、この辺りはなんの問題もなく生成される。 2番めに苦労したのはパパイヤ、カットしていないを指定してもカットされた画像ばかり生成されてしまう。たしかにGoogleでパパイヤを検索して画像を見るとカットした画像ばかりが表示されるので、こうした画像を学習データにしていたらカットした画像ばかり生成されるだろう。 それでも何度か繰り返しているうちにカットしてない画像も生成されたので、それで良しとした。 1番苦労したのはなんといってもスターフルーツだった。 NijiJourneyではこんな女の子の画像が生成されてしまうし Mid Journey(v5.2)ではこの様にカットした画像が生成されてしまう DALL-E3ではこんな星型の謎植物が生成されてしまう これ、1回、2回ではなくて、それぞれに10回以上生成を試みてもまともな画像は生成されなかった。 唯一スターフルーツっぽいのはMid Journeyの V6[ALPHA]であった。 質感的に微妙ではあったが、他と比べれば明らかにマシなので、これで手を打つことにした。 ーーーーー2024/01/07追記 この画像はスターフルーツに見えないので結局ほとんど手描きした画像に変更した。どの様に描き換えたかは ペアカード第2弾 果物編 で確認 まとめ 昨今、画像生成AIを用いた画像をよく

iPad ProをChromebookのサブディスプレイにしてみた

イメージ
 iPad OSが17になって、USBのキャプチャーユニットに対応したというニュースが入ってきたので、以前からiPadをサブディスプレイに出来たら便利だろうなぁと思っていたので試してみることにした。(iPad OS17からUVC(USB Video Class)に対応したとのこと) ディスプレイ化する為に必要なもの USBキャプチャーユニット HDMIケーブル(キャプチャーユニットと出力元のPCによっては違うケーブル) キャプチャー用のアプリ USB A→C変換アダプター(キャプチャーユニットがTypeCなら不要) キャプチャー用のアプリはAppStoreでuvc viewerで検索すると色々と出てくる。 私はEasyC@Mというアプリを選んだ。 USBのキャプチャーユニットは高いのも安いのもあるが、とりあえず試すだけだからやすいので良いだろうと思い、ヨドバシでこちらを購入 ヨドバシ.com - アイ・オー・データ機器 I-O DATA GV-HUVC/4K [4K対応 UVC対応 HDMI-USB変換アダプター] 通販【全品無料配達】  希望小売価格: ¥23,980 価格: ¥8,310(税込)ポイント:831ポイント(10%還元) コネクタがUSB Aだったので手元にあったA→C変換アダプターを使用して接続。 なんか認識に少し手こずったが無事表示されるようになった。 けど、変換アダプターがこのタイプだと重さで斜めになり接触が悪く、動作が怪しい。もちろん見た目も悪い。 なので短いケーブル付きの変換アダプターを購入 これだと問題ない。 無事安定して使えるようになったので長時間利用してみる ・・・iPadのバッテリーの減りが早い。 ちょっとカフェで1時間くらい使うなら問題ないけど、数時間連続使用は厳しそう。 なので、充電しながら使う方法として給電機能のあるUSBハブを購入した。 ヨドバシ.com - バッファロー BUFFALO BSH4U500C1PWH [PD対応 Type-C USB3.2(Gen2) 4ポート バスパワー USBハブ ホワイト] 通販【全品無料配達】   iPad Pro標準添付の充電器からUSBハブの給電端子に接続。 無事充電されている事を確認。 HDMIでChromebookから映像出力。 問題なく充電とキャプチャーを同時に行えて

Niji Journey Mid Journeyの進化 部分訂正機能 Vary(Region)

イメージ
  前回の記事 ではLamaCleanerを用いて不要な箇所を削除する事でNiji Journeyの欠点を補う方法を記した。 単に削除するだけではなく、削除した画像をソースにして再生成する事でバランスが調整されることも確認した。 あの記事を公開したのは2023年9月2日 実は、この時点で既にNiji Journey、Mid Journeyは大きな進化を遂げていた。 部分訂正を行う機能が実装されていたのである。 私がそれに気が付かなかったのはブラウザ版のDiscordを使っていたからだったようで、ブラウザからDiscordを表示していると新機能Vary(Region)が表示されないのである。 Vary(Strong)やVary(Subtle)は表示されているのでVary(Region)だけが表示されないというような自体は想像できなかった。 しかし、その機能が追加されたことを知ってから色々試して、何故か自分のところには表示されないので、もしやと思いLinux環境にDiscordをインストールしたらVary(Region)が表示されたのであった。 そこで色々試してみたが、これはかなり使える機能で、慣れればかなり有効活用できそうである。 ここでは例として前回の記事に掲載した6本指の少女をVary(Region)で改善してみる。 この画像にVary(Region)を適用 訂正したい箇所をマークして、その部分に何を描いてほしいかを指定する。 "girl high five"の部分を"high five"のみにして実行 以下の画像が生成された。 無事5本指に訂正された画像が生成された!(ちょっと不思議な画像もあるけど) 前回の記事では髪の色や服など大きく異なる画像が生成されたが、Vary(Region)では指定した箇所のみが生成されるので、仕上げとしての部分訂正が行える。 今まではちょっとだけ問題があるという理由で全体を再生成して、どれも微妙にちょっとだめだなぁという状況になりがちだったが、これからは問題のある箇所だけ再生成させることで大幅に時間の短縮が可能になった。 前回頑張って導入したLamaCleanerはさして必要なくなってしまった。 部分的な削除目的ではLamaCleanerを使ったほうが効率的な場面はまだあるとは思うが、Niji

LamaCleanerをChromebookのLinux環境にインストールして使ってみた

イメージ
 Niji JourneyやMidjourneyのような画像生成AIを利用していると、手が3本とか指が6本というような不自然な画像が頻繁に生成される。 何度生成しても納得のいく画像にならない事が多い。 それで以前の記事ではApplePencilを使って手で描き変えてしまえばすぐに解決することを記した。 手で描き変えるのは細かな調整も出来るし良いのだけど、もっとお手軽な方法はないものかと調べていたらLamaCleanerというプログラムが存在していることを知った。 画像生成技術をベースにした画像補正ツールLama Cleanerのインストール こちらの記事にはLinuxだと簡単にインストールできること、pythonの実例が載っている。 先にUbuntu(linux)で試すと簡単に起動して動作を確認できた。 Chromebookの場合、直接インストールするよりクラウド上の環境にインストールしてアクセスするほうがOSの思想に合っているとは思うのだけど、まぁせっかくストレージとCPUに余裕のある機種を使っているのでChromebookのLinux環境にインストールしてみることにした。 注意点としてはChromebookのLinux環境ではpythonはpython3と打つ必要があることくらい。 インストールは  pip install lama-cleaner で、あっけなく完了した。 ヘルプの表示などは問題ないが、例のとおりに lama-cleaner --model=lama --device=cpu --port=8080 とするとエラーになる $ lama-cleaner --model=lama --device=cpu --port=8080 - Platform: Linux-5.15.112-19404-g55fe7e355056-x86_64-with-glibc2.35 - Python version: 3.11.2 - torch: 2.0.1 - torchvision: 0.15.2 - Pillow: 10.0.0 - diffusers: 0.16.1 - transformers: 4.27.4 - opencv-python: 4.8.0.76 - xformers: N/A - accelerate: N/A - lama-cle