あほげー参加作品「1万ニワトリ(略称)」の開発記録

あほげー第28回に参加してきました。

あほげーとは出されたお題に対して大体24時間でアホなゲームを作る企画です。
今回は2月8日に「にわとり」というお題が出され
翌9日にゲームを提出する形でした。

そしてこれが提出したゲーム
「10000円をニワトリで稼ぎたいだけの世界」

この記事ではこのゲームの開発記録なんかを記していきます

で、ここから開発記録
Twitterの情報を引っ張り出しながら話するよ


まずお題を聞いて思ったのは
ニワトリが卵を産んで、それを売って儲けるゲームにしよう
ってことでした

多分、以前のあほげーのゲームを遊んでいた際に
豆苗をひたすら育てるゲームがあって、面白かったから
結構影響を受けたんだと思います。

豆苗を育てるゲームは水道代と売値のチキンレースみたいな感じで
上手く育てて上手く売って儲けてねってゲームだったから
初期思想はかなりこの内容に引っ張られてる

で、とりあえずニワトリのグラフィック用意せんにゃってことで
グラフィックを描き始めました
使用ソフトはいつものEDGE
Asepriteも買ったんだけど
速度重視だとどうしても慣れたソフトを使ってしまう

で、卵・ひよこ・ニワトリを制作

この段階で卵を売るのか育ててニワトリにして卵生産力に充てるか
っていうところを遊びにしようと思ってた

あと、餌の概念もあって
餌をあげることで育ったり卵を産んだりするから
餌の工面とニワトリのバランスを考えるゲームにしようとしてた

当たり判定は四角じゃ面白くないから
多角形の当たり判定を使ってそれっぽく囲ってます
実際ここにある当たり判定のままいきました

とりあえず物理を乗っけて
生物は重力影響下、その他は静止オブジェクトとしてます

ツイートでは触れてませんが
掴んだところを動かすのはけっこう大変だった

最初は中心点をマウスと合わせてたけど
それだと箱が思いっきり動くので
掴まれたオブジェクトがマウスの動きを追従するように修正

実はこれでも物理演算が入ると掴んでる座標がずれまくるから正しくはない
ただ、この規模のゲームならまぁいいかなということにしました。

ホントなら掴まれた点がマウスのところに来るように
ベクトルをかけて動かすのが一番いいと思う

このツイートはいいね数が異様に多くて
やっぱみんなバグが好きなんすねぇってなった

何が起きているかというと
卵→ひよこと成長する時、
卵がひよこを生成して卵自身が消える
っていうプログラムを書いたつもりが

卵自身が消えるって部分を書き忘れていた
さらに指定時間が経過したらひよこを生成する
になっているもんだから
指定時間以降永遠とひよこを生成し続ける

ひよこ→ニワトリも然りで
時間が進むごとに増える増える
なんていうバグが起きていたんです

で、こっちはちゃんと自身が消えるっていうのを入れた版
成長時間や卵を産むインターバルは調整してないから
結局ブワーってなるけど
こっちは秩序のあるブワー

この辺りからこのゲームの方向性が決まってきてて
ニワトリがブワーって増える中で頑張って売るゲームにしようということになった

でもこの段階では販売エリアを動かす予定はなくて
その変更が入るのはもうちょっと先のお話

これはもうちょっと秩序をもたせた版で
どんな挙動をするかの確認用

で、次にUIとかを揃える必要が出てくる
個人的にuGUIが嫌いなので
自前でGUIを作りたかった

時間もないし今開発しているAegisから素材を拝借することに

それが今実装されている数字の部分
あれ実はAegisの残弾表示用の数字なんです

この辺りで眠気に限界が来て8日の開発は終了しました


翌9日、最終日の開発はGUIの制作からです


これは販売エリアを作ろうと思って
勢いだけでドットを打った結果
あれ?って思って調べて
売るってSellじゃん!ってなったシーンw

結果的に箱を販売することになったから
両方使うことにはなったけど
正直作ったものが無駄になるかと思って焦った

UIを揃えたあとは
ニワトリのステータス遺伝システムを作って
各ステータスの依存関係を作って

さて、じゃぁどうやってステータスをユーザーに伝えよう
これがほんとに大きな課題だったと思う

シミュレーションゲームって大概のステータスが
全部見えるか全部見えないんだよね

膨大になるニワトリの全ステータス管理は
人間の能力を超えるから無理

見せなかったらなんか違うぐらいの認識になる

ほぼ苦肉の策として
カーソルを合わせたやつのステータスを表示する
という形で収まりました

カーソルにステータスのウィンドウを出させるかとも思ったけど
それだと見た目が迫っ苦しいので却下したり


箱を購入で増やせるシステムも追加して
さてそろそろ完成かなと思いながらテストプレイをしてました

ニワトリを増やして
いらないニワトリを販売エリアに運んで
そんなことしてる間にニワトリが爆発的に増えて

頑張って箱増やしてニワトリを溜めて
また運んで売る

そんなことをしているとふと頭によぎったのが
自動生成施設を作りたい…

つまり売却エリアを動かせれば解決なのでは!?

その考えに行き着くのはすぐでした
早速動かせるようにしてみたところ
思ったより面白い!

もちろん欠点はありました
画面外に持っていってしまうと
取り返せなくなる点

でもまぁあほげーだからいいじゃない
それぐらいあほでも

そう考えさせてくれる点で
本当にいいゲームJAMだと思います

そしてブラウザー上でテストして
Unityroomに登録して
提出じゃー


ブラウザ上でマウス操作が効かないんですけど!?

ほんとにこれは困りました
試しにマウスカーソルの座標とマウスボタンを画面上に出してみたら
ちゃんと操作したとおりになるんですよね

つまり
マウス操作は出来る、ゲームも動く
ただしゲームは操作を受け付けない
っていう状況に陥ったわけです

創作仲間の方々にいろいろと質問したり
ネットで似たような事例がないか調べたりしましたが
なにもない

これは本当に困った
Unityの公式ページを10回ぐらいは見直したと思います

で、いろんなブログを渡り歩いていたら
WebGLはデバッグしにくいからCtrl+Jでログ出して
エラーログとか全部見たほうがいいよ
って言われました

そんなもんかねぇと思いつつ
ビルドしたやつを動かしながらログを追いかけると

警告でも注意でもない普通のコメントに
未知のタグが指定されているオブジェクトがあります
的な文面を発見

タグはunTaggedになってたオブジェクトがいくつかあったので
これしかないだろうなぁと思って適当なタグを指定

なんとタグを指定するだけでうまくいきました
悩みに悩んだ4時間は何だったんだ!?

これでやっと完成
一回Unityroomにアップしたあと
一通り遊んでみてバグがないことを確認して


あほげーに作品提出して開発は完了しました!

ちなみに餌要素は
ブワーッと増えるゲームと相性が悪いので
仕様ごとボツりました


はい、ここから後日談
あほげー参加者の方、身内、Unityroom見ている方
様々な方にこの略称「1万ニワトリ」を遊んでいただけました

様々な意見をいただく機会もありましたが
特に多かったのが
・ブワーって増えだしたらめっちゃ面白い
・最初待つのが長い
・ニワトリ売って詰んだ
・タイマーあるならランキングあってもいいかも
という意見

確かに最初は長いし
初めてだからスルーしたけどオレもランキングがほしい
ニワトリを売ってしまって詰むのは仕様です(あほげー要素

ということで
開発に区切りをつけるためにも
Ver.2を作ろうとなりました

まず最初の課題
始まってから面白くなるまで時間がかかる

これは2つの問題を孕んでいると考えました
1.ニワトリが一定数にならないとあふれるほどにならないのでヒマ
2.卵を産む時間分更に待ち時間が発生している

そもそもこのゲームはねずみ算式にニワトリが増える
ニワトリなのにねずみ算とはこりゃ如何に
みたいなところがあるので
最初は数が少ないんですよね

それでもまずは2羽いればオーバーフローまでの時間を
かなり短縮できると考えたので
初期は2羽スタートに変更しました

次に待ち時間問題
最初2羽いようが卵を産むまでの時間が長いと
1羽が成長する分の時間を短縮したに過ぎないので

ニワトリになった直後に卵を産むように調整しました
開始早々に卵を産んで
成長したらすぐに次の卵を産む

ニワトリに成長してから卵を産むまでの時間を縮めることで
プレイ全体でのサイクルを短縮してプレイの高速化に成功

プレイ時間問題は一先ずこれで解決しました。

そして次の課題
ランキング実装について

これについて
ここでは深く語りません

すでに実装方法を素晴らしい方がまとめてくださっているので
そちらを御覧ください。
【Unity、WebGL】なるべく簡単にオンラインランキング機能をつけるサンプル
WebGLからツイートするサンプル

非常にわかりやすく実装もカンタンだったので
ランキングの実装自体は30分もかかりませんでした

仕上げにランキングで日本語が使えるよう
プラグインを追加して完成です
WebGLでIME入力を可能にします


画像つきツイート・オンラインランキングは
先駆者様のおかげで非常に早く実装できました

そしてこれらが正しく動作することを確認して
「10000円をニワトリで稼ぎたいだけの世界」の開発が終了しました

今回の開発を通して
今まで積み重ねてきた経験が
技術として身についていることを実感しました

また、様々な反応をいただいたことで
これからどんなゲームを開発していきたいのか
についても方向性が見えたように思います。

以上
質問等あればTwitterやコメントなどでご連絡ください

いろいろ開発進んだよって話とかとかとかクラウドファンディングよろしくお願いしますって話

結構まえの記事から間があいてしまった…
とりあえずあけましておめでとうございます。

で、開発の方ですが
ゴリゴリ進んでおります。
どれぐらい進んだかって

UI周りが一通り完成して
一回大きな仕様修正が入って
必要なシステムは全部揃って
タイトル考えて
タイトル画像作って
クラウドファンディングして資金集めたいぜ!!
ってとこまで出来てます
(あまりにも読みにくい…)

とりあえずある程度体験してもらえる準備は揃っているということです。



そして次に目指したいのが皆さんに支援をお願いすること。
この記事をご覧の方々にもお願いすると思います

何卒よろしくお願いします。

動画をGIF化するときに役立ったツール

ちょいちょいツイッターにゲーム開発の進捗GIFをあげてるんですが
そのGIFの作り方について、最近やり方を変えたのでまとめとこうと思います。

まず私のやり方は「スーパーアマレココ」でUnityの開発画面をキャプチャして
AviUtl」でAVI動画データを作ります。

その動画データをなんとかしてGIF化させていたのですが…
今まではEZGIF.COM様でGIF動画化していました。

こちらのサービスも結構具合が良くて
動画をアップするだけでトリミングからGIF化、更にはいろんな調整も出来てしまうわけです。

ですがフレームレートの制限とかがあったので
どうも不自由な時があるなぁと思っていたら
もっといい手段に巡り会えました。

動画編集ソフトのAviUtlにプラグインでGIF出力ができるようになるのがあったんですよ!
その名も「Direct Animated GIF Export Plugin

これが結構具合が良くて
そもそも私の作業手順であるAviUtlから作業用ファイルの出力を省略できるので大助かり

サクッとものが作れるのは本当に便利ですな。

「public const」ってstatic化するんですってよ

ボスの行動ルーチン作成中に困ったことが起きました。

行動内容を変数で取っていたんで、そのケース分けを定数で管理しようと思ったんですよ。
以下のような感じで

const int a = 100;


int state;


switch(state){
  case a:
    …
    break;
}

で、Unityってパーツ分けしてパーツごとにアニメーション指定できるので
別のパーツ部分からこの行動分岐ルーチンにアクセスしたかったんです。

その際、現状の行動内容をいれたかったから定数を参照したかったんですよね。

なので以下のように調整しました。

public void class ClassX(){
  public const int a = 100;
  …
}

public void class ClassY(){
  ClassX x = new ClassX();
  x.state = x.a;
  x.WayPoint();  //行動分岐ルーチン
}

するとエラーが起こるんですよね
x.state = x.a;」この部分で

頑張って調べた結果やっとこさ情報が出てきました。
public const」で指定したものはstaticと同じ扱いになるらしいです。
つまりプログラム状は一つしか存在できない定数になるんですね。

この状態の定数にアクセスするにはnewで作られたクラスからではダメらしいです。
なので以下のように修正したらうまくいきました。

public void class Y(){
  ClassX x = new ClassX();
  x.state = ClassX.a;
  x.WayPoint();  //行動分岐ルーチン
}

クラス名からの参照をすれば正しくアクセスできるみたいですね。

実際はGet関数とかを使うのが健全だと思います。
一つ一つ作るのが面倒だったので横着した結果ですね…。

とりあえずこれで解決したのでこのまま行こうと思います。


敵がプレイヤー関連を狙うようにしてみた

このゲームはプレイヤーの他にもコア・ユニットと敵が狙うべき要素が多いので
そのへんを一元管理して誰を狙うべきか教えてくれるクラスを作ってみました。

ざっくり言うと
敵自身の座標を送ると、ターゲットとなる相手の座標が返ってくる感じです

まぁ内部的にはプレイヤーとコアと全ユニットの距離を調べて
一番近いものを返してるんですけどね

ユニットにはターレット型や妨害型の用意を考えていて
特に妨害型は移動の邪魔になり、攻撃の邪魔になるものなので
敵はこれを攻撃しないと流石にバカ過ぎるだろうと思うわけです。

ひとまずは現状で様子見して、もし重いようだったらいろいろ修正かけます。

Jsonファイルで敵出現情報を管理できるようになったゾイ!

前回のMiniJsonで敵出現の情報をまとめたいから更に頑張った結果
なんとかJsonファイルで敵出現の情報をまとめれるようになりました。



画面上に出現箇所をオブジェクトとして置いておいて
その位置から敵が出現してきます。
あとはどの敵が出現するのかというIDを行列で記載するだけ。

なんですが
これがまぁ、文字数と行数がすごいのなんの
テストで作ったデータだけで軽く混乱しました。

Excelのマクロなり関数なりで簡単に情報作れるようにできるようにしたいですわ。


で、ここからが開発の話

突然こんなエラーが出てきました。

InvalidCastException: Cannot cast from source type to destination type.

簡単に言うとその型を入れたいっておかしくない?ってやつです。

どんなタイミングで出たのかと言うと

EnemyCreate((int)EnemySpawn[0]);

こんなふうにリストから敵のIDを取ってこようとしたときでした。

じゃあ何故こうなったのか
そもそも「EnemySpawn」リストはObject型で情報を格納するIListを使っています。
そこに入れている大本の型が原因でした。

Jsonファイルから持ってくる数字ってint型じゃなくてlong型なんですよね。

つまりもともとlong型のものをいきなりint型にしてるんじゃねぇ!ってことだったらしいです。

なのでこのようにしたら解決しました。

EnemyCreate((int)(long)EnemySpawn[0]);

一回long型で呼んでからint型に切り替えるってわけですね。

まぁ実際は引数をint型からlong型に変えたんですけどね…
ごちゃごちゃ書くのはまどろっこしいので…

MiniJsonで敵出現の情報をまとめたい

ゲーム制作の作業で一番大切で大変なのはデータ作成と調整
でもそれができるようになる土壌の用意が必要。

というわけでどの敵がどこからいつ出現するのかをデータ管理したいと思い
データ読み込みの処理を現在作成中です。

まずデータはどのようなものが良いのか
一般的にはXMLかJson形式がよく使われます。

単に有名で例が多いということと、データを作る側がわかりやすい
という特徴のある形式です。

私は今回Jsonを使おうと思います。
Json形式の方が書き方がシンプルで使いやすいのが最大の魅力です。


で、ここからが作業の話

ぶっちゃけネットで色々と調べたのですが、
外部からJsonファイルを読み込んでUnity上で使えるように整形する
って記事はいっぱいあれど
どれも言ってることが微妙に違う!

そしてチュートリアル的な記事はそもそもJsonファイルの読み込み方が書いてない
悲しい

大体の記事はJsonをString形式で読み込んでから整形しているので
ひとまずファイルデータをString形式で読み込むところから始めようと思います。

まずはJsonファイルまでのファイルパスを取得

FileInfo jsonPath = new FileInfo(Application.dataPath + "/Scripts/Jsons/text.txt");

次にファイルの中身を全てString形式で抽出します

string json = File.ReadAllText(jsonPath.ToString());

ここで一つ注意点があります。
ReadAllTextはファイルパスをString形式で要求してきますが、
この場合のjsonPathはFileInfo形式なのでStringに変換する必要があります。

その後はIList形式に変換してデータが抽出できるところまで進みました。

IList familyList = (IList)Json.Deserialize(json);


まだ敵出現のデータとかと整合性が取れてないので要調整です。
またタブを消しておかないとバグるので注意してください。



ついでにオススメのツールを紹介します

JsonEditor
https://jsoneditoronline.org

Jsonファイルの検証・分解をしてくれるすごいやつです。


というわけで今回はここまで
また進展があったら記事を書きます。



新作ゲーム開発中

Yoke Lightが発売から一段落したので
新作ゲームの開発を始めました!

コードネームは「lagopus」
雷鳥の意味です。

名前の意味は特にないのですが、
コードネームは統一感がある名前の方が良さげなので
地球上でも種類の多い鳥類の名前にしようかと思いました。

このゲームはアクション要素の強いディフェンスゲームを目指していて
プレイヤーは飛び回って銃を打ちまくってコアを敵から守ります。

お助け要素として様々なギミックを駆使して敵を押さえることもできますが
あくまで戦うのはプレイヤー自身、タワーディフェンスではなくディフェンスアクションです。

フリーゲームの「花咲か妖精」に近い感じで
ナイフじゃなくて銃を使って防衛するイメージですかね。

で、現状の開発状況は以下の感じです

動く、飛ぶ、狙う、撃つ、食らうが現状できているので
アクションゲームとしてはひとまず形になっています。

ここからギミックを追加して敵がウェーブ毎に出るようにすることで
いい感じになっていく予定です。


で、ここからは開発の話

まず狙った所に向くというモーションをいかにして実現しているかですが、
UnityのAnimation機能を使っています。

まず上から下に向くまでの180度を180Fのアニメーションで作ります








次にキャラの中心からポインターまでの角度を出します。

MP→マウスポインタ
CenterPoint→キャラの中心

float gx = MP.transform.position.x - CenterPoint.position.x;
float gy = MP.transform.position.y - CenterPoint.position.y;
float rad = Mathf.Atan2(gy, gx);

gunAngle = rad * Mathf.Rad2Deg * -1 + 90;


最後に出てきた角度の最大を180、最小を0としてアニメーションのコマを引っ張り出せば完成

PChandAnime.Play(PChandAnimeInfo.shortNameHash, -1, gunAngle / 180);


あとはダメージ中に敵オブジェクトとの当たり判定を消す方法ですが
[Edit]→[Project Setting]→[Physics2D]
で、レイヤー同士の当たり判定を設定することができます。

ダメージ中専用のレイヤーを使って切り替えることで
レイヤーが変わっている間は敵との当たり判定が消えます・

レイヤーの変更はこんな感じ
gameObject.layer = LayerMask.NameToLayer("PlayerDamage");

調べてたら間違った方法で設定できるよと書いてる記事があったりしたので注意してね

vaganteで死んでみた

2Dアクションローグライクゲームであるvaganteを身内とやってみました。

階層を探検して敵を倒してお金を集めたりアイテムを拾ったりしていきます。
更に階層ボスを倒すことで大量のアイテムゲットもできちゃう。
ただし大量の罠、それも即死級の罠が探検を阻んできます。
そして回復要素が少ないためダメージを受けているといずれジリ貧に…。

そんな緊張感のある探検を最大4人で遊べる素敵なゲームです。

一応階層を一つ進む毎に回復ポイントも用意されていますが
初期体力が100に対して回復量は20…。

しかも味方の蘇生にも体力20使います…。
ツライ
※スクショは2人でやったときのものでゴメンね

ダンジョンはこんなふうに立体的な作りになってます。
画面中央下にあるのが即死のスパイクトラップ! こわいね!

またプレイ風景が取れたら新しくアップしていきますので

献血に肩こり解消の効果を期待して行ってきた

献血をすると血が抜けるため、
減った血液で通常の体の機能を維持するために血流量がアップするらしい。

血流量がアップすると血液の循環が良くなり
結果的に肩こりに効果があるらしいので献血に行ってきました。

献血ルームはドリンク飲み放題で快適的なことを聞いていたので期待してましたが
どちらかと言うと血を取るから水分とって倒れないようにしてくれってことらしい。
つまり飲めと言われる。

で、検査採血してから本採血。

採血用の針はぶっとくて、針の穴がよく分かるぐらいだった。
だが痛いのは刺すときだけで、採血中は別に痛くもなんともない。

基本ヒマなわけだが、初めてだからかめっちゃ看護師っぽい人に話しかけられる。
こちらとしても興味本位で来てるし、ちょっと血が吸われる感じは楽しいので悪くない。

それに暇つぶし用のテレビがベッド毎に個別でついているので全然ヒマしない。

で、採血終了後はちゃんとドリンクを飲んで帰れということでした。
あと、なんかちょっとしたものをくれるぐらい。

400ml抜いた感想としてはちょっとボーッとする。
けどそれもその日だけで次の日からは特になんともなかったです。

そしてついでに血液検査してもらえるのは嬉しい。
特にどこも悪くなく至って平均的な結果でしたが、それがわかることは良いこと。

で、結論の肩こり解消の効果についてですが
多少の効果は見込める感じですねぇ。

ぶっちゃけ筋トレするほうがいいけどね。

あと抜いた血液を作るために体がカロリー使うので
ダイエットの休憩日なんかに献血を挟むといいかもよ。
あくまで個人の感想だけどね。

Steamでゲームをリリースしてから来たCDキー要求のスパムメールリスト

Yoke LightをリリースしてからCDキーをくれっていうメールが大量に来ました。

試しにどれ位キーがほしいか聞いてみた結果、何名かは明らかに怪しい動きをしました。

他人を語って送ってきている可能性が高いメールがあったので、
備忘録と警告を兼ねてここにリストアップしていきます。

引っかかっている場合注意してください。

新しく怪しい人が確認され次第追加していきます。

※@前のみを羅列します

jdh2obusiness
tomo0723akagami

eovynaut
majorawesome1nl
ladytora93
※上記3名はTwitchからTwitterへのつながりが確認できないうえ、同時にメールを送信した所、返信が5分ズレのみで返ってくるという怪しい動きだったのでリストに載せておきます

Unityの角度取得で悩んだ話

transform.rotationで獲得できるのはラジアン角度になるので
狙い撃ちを実装するときうまくできませんでした。

transform.eulerAnglesを使うとちゃんとした角度が取得できるので
それを活用すればいろいろうまくいくと思います

Steamworks.NETをUnityに突っ込んでる話

右も左もわからないような初心者状態でSteamworks.NETをUnityに入れて奮闘してます

今一番わからなかったのはオーバーレイの動作確認ってどうやるの?だったのですが
どうも突っ込んでビルドしてSteamのサーバーにアップして
さらにクライアントアプリから落としてプレイすれば見れるそうです

至極果てしない…

UnityでひたすらNullReferenceExceptionが出た話

NullReferenceExceptionエラーがひたすら出続けたのですが、
コードを見直しても別にNullになる要素がなく、
ほとほと困っていたわけです。

友人の助力もあり、なんとか解決したのでここに記そうかと。

結論から言えばオブジェクトが非アクティブになっていたのが原因でした。

開始直後に非アクティブ化してたオブジェクトの中身を呼び出そうとしたため
呼び出された関数がStart関数より先に呼ばれていたので
参照先が未設定だったようです。

この問題のたちが悪いところはエラーが起こってから原因を調べると
ちゃんと目的のクラスがFindで探されてアタッチされた状態になってるんですよね…

今日1日ぶっ飛んだ記念に書き残しておきます。

AIでYoutuber作ってみたい苦闘期3

いろいろ考えた結果簡単には行かんなと言う結論に至りました。

まず試したサービスやAPIとその結果を御紹介

DialogFlow → 出力が定型文なので、成長するAIを作りたいというコンセプトから外れる
FastText → 私の技術力不足でUnityに乗せれない
Wit.ai → 会話機能が魅力的だったのだが、なぜかこの記事作成現在でStory機能が消えている
Web.ai → GoogleAPIの終了に伴い文鎮化

正直自力でやるっきゃねぇって結論に至ったわけで
だが、何度も言う通り私には技術力と経験値が圧倒的に足りない

理論で実現しててもそれを現実まで引っ張り出す事ができない

というわけで勉強をはじめました。
まずデータ作成のためにJsonを入出力・処理出来るようになるところからだ!

また進捗があったら記事更新しますんで。

AIでYoutuber作ってみたい苦闘期2

生放送でテキストを受け取って言語処理してからAIに通したいので
そのへんを全部Unityでできないか考案中

ザックリ言えば
生放送のテキスト

MeCabで分かち書き

FastTextでゴネゴネ

何らかのテキスト

Dialogflowに受け渡し

Dialogflowから結果取得

Unity上で処理
という流れにしたい

つまり全部Unityにまかせて言語処理をやりたい

で調べました

NMeCab:https://ja.osdn.net/projects/nmecab/
FastTextC#版:http://imadedede.hatenablog.com/entry/2012/10/02/022340

多分この辺りを組み合わせればゴネゴネするところまではいけるはず!
少なくともNMeCabまではUnityに入れれたので

次はFastTextからどうやってDialogflowにつなげるかを考えて
その中間点を作る感じになると思います。

ひとまず受け答え出来るAIができたらお試し生放送も悪くないかもね

AIでYoutuber作ってみたい苦闘期

チャットボットのシステムを使ってチャット越しに会話できるYoutuberを作ってみたくなった

とりあえずDialogflowに登録して試しにチャットボットを作成中
あとでUnityと組み合わせて動いて棒読みちゃんで喋れるようにするんじゃぁ

MonoDevelopでペーストができなかった話

配列内の変数を大量に作るときとかはいろんなツールを跨いで文字列を加工するんですが、
最終的な貼り付けの段階でつまずいたんで共有

結論から言うとMonodevelopの再起動で解決しました。

FileからQuitで閉じてしまって
再起動したら問題ないらしいです。

原因はパソコンをスリープさせているからですかね?
まだ検証してないんで詳しくはわかりません。

ただ貼り付けが機能しないっていうのはテキストツールとして致命傷に思いますがね…

TwomonUSBでスマホをサブディスプレイにした話

今の作業環境はディスプレイ2枚で頑張ってますが
片方が作業用、もう片方が資料用となると
作業用動画が見れないのが悩みだったでした。

最初は1万ぐらいでサブディスプレイを買うか迷ってたんですが、
よく考えたらスマホをサブディスプレイ化すればいいんじゃね?って結論に辿りついたんですよ。

で、いくつかアプリを試してみました。
SpaceDesk
Kamado2
TwomonUSB
この3つです。

SpaceDesk
Wifi経由でつなげるんで都合がええわとやってみたんですが、
どうも起動直後は普通につながるんですが、
PCをフリープ→起動をするとつながりが悪くなっちゃいます。

基本スリープ派なのでちょっと思ったようにいかなかったです。

あと、動画見ようと思ったらちょいちょいフレームが飛ぶんでどちらにせよやりたいことには向いてなかったですわ。

Kamado2
USB経由でPCに繋いでサブディスプレイ化できるとのことでやってみましたが
ミラーリングしかできなかったです。

これはディスプレイの能力に問題があるらしいのですが、ちょっとよくわかんなかったです。

ミラーリングでは意味が無いのでこちらもボツ。

TwomonUSB
こちらもUSB経由でPCに繋いでサブディスプレイ化ができるんでやってみました。
最初はPCとの接続を全然読み込まなかったので困り果ててました。

ただ、設定の開発者オプションからUSBデバッグをえいえいとオンオフしまくってたら
勝手に繋がったんでまぁ大丈夫です。

使った感想は、接続直後に接続完了するまで少し時間がかかってじれったいですが
一旦つながってしまえば問題ないので大丈夫です。

LeTV Leeco Le Max 2で開発者向けオプションを出す方法

LeTV Leeco Le Max 2をいじりはじめてはや1ヶ月
やっと開発者向けオプションの出し方がわかったのでご報告をば

設定>端末情報 を開いて
ビルド番号を連打してください

そしたら「デベロッパーになりました」と出るので
これで開発者向けオプションがアンロックされます。


これまで仕事でスマホをいじってきた経験が生きたね!

あほげー参加作品「1万ニワトリ(略称)」の開発記録

あほげー第28回に参加してきました。 あほげーとは出されたお題に対して大体24時間でアホなゲームを作る企画です。 今回は2月8日に「にわとり」というお題が出され 翌9日にゲームを提出する形でした。 そしてこれが提出したゲーム 「10000円をニワトリで稼ぎたいだけの...