HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0612
あは挨拶のあゲーム作りたいけど数年がかりになるかも9解決


あは挨拶のあ

リンク

2019/6/12(Wed) 19:00:10|NO.87588

HSPでゲームを作りたいのですが数年がかりになるかもと感じています。

作りたいゲームは典型的な縦スクロールSTGです。
ゲームの特徴。

自機の攻撃力かなり低めで攻撃範囲も狭い
敵を倒すと支援ポイントがたまる
支援ポイントを消費すると、画面にAIで動く味方機体が追加される
たくさん味方を呼び出すと画面内が敵と味方でものすごい数になる。
敵も味方CPUもどんどん落ちるバランス。
ただし味方CPUが敵を落とした場合も支援ポイントが溜まるのでどんどん味方を呼び出せる。

ゲームの上手さより戦闘が敵味方入り乱れてどんどんド派手になっていく感じを体験できる。
ゲームというより、ゲームもどきの何かを作ってみたいなと思っています。

今日はHSPをダウンロードして画面に文字を表示するとか、簡単な計算をさせてみる所から始めたいと思います。
大言壮語したわりには現実は情けない限りです。

ゲーム作成の知識はほとんどない上に病気持ちなので継続するかわかりません。
少しずつ成果物をアップしたりできたらいいなと思ってます。


もし完成したら、味方CPUを動く防衛ユニットとみなしたタワーディフェンスゲーム(自機を除去した)
などへの応用など色々と野望はありますが捕らぬ狸の皮算用状態です。

長くなりましたが今日は掲示板に挨拶をしに来ただけです。
よろしくお願いします。



この記事に返信する


アイドル

リンク

2019/6/12(Wed) 19:48:33|NO.87589

あは挨拶のあさん、はじめまして〜。

私は縦STGを作っています。
休止と再開を繰り返しているせいで、9年というとんでもない年月が経過しましたが諦めていません。
まぁ実際には2年半ぐらいですが。

ガチで東方を再現しようとしているせいで、結構長い期間になった上にプラグインが必要となり大変になりました。
なので目標を明確にすることをおすすめします。


何十秒間、お互いが増援しまくってどんぱちスコアを稼ぐゲームなら、
よほどの数と変な処理が多くない限り、処理落ちもしないと思うので、
そこら辺だけを実装するといいかもしれません。

それではよいプログラミングライフを〜



あは挨拶のあ

リンク

2019/6/15(Sat) 22:48:28|NO.87617

なんかHSP入れようとしたら管理者権限が必要だったので導入できず。
仕方ないのでJavaScript+HTML5で試作品を作ってます。
でもHTML5は遅いのでやっぱりHSPをきちんと入れるべきかなと悩んでます。

取りあえずAIのパーセプトロンを勉強しています。
逆誤差伝播法の数式が難しいですね。

AIがきちんと戦闘してくれるかが不安です。
お互いに頑張りたいですね。



あは挨拶のあ

リンク

2019/6/16(Sun) 11:58:31|NO.87623

私の利用しているサイトの広告の仕様がどんどん変わるので邪魔ですが
javascript+HTML5で試作品が出来ました。

aiがAチームでbiがBチームの機体でAチームは弾を右に発射Bチームは弾を左に発射。
AIは弾を当てたらチームの得点になり、得点の多いほうが勝ちという感じで教育する予定です。
弾のあたり判定はまだ実装してませんし、まだAIを教育前なのですぐに端っこに機体が集まります。
まだまだAI教育後、きちんと動くといいのだけどという感じです。

試作品
http://ailinksh.kojyuro.com/2dAIGame.html

最終的にはHSPに移植をして動く防衛ユニットとしたタワーディフェンスゲームをつくりたいと考えています。
よろしくお願いします。
この書き込みはルール違反でしょうか?
試作品をJavaScriptで作りその経験をもとに、最終的にHSPに移植をしたいのですが。



ham

リンク

2019/6/16(Sun) 12:52:05|NO.87625

HSPのインストール時に管理者権限が必要になるって事でしたら
こちらからアーカイブ(zip)版をDLしてみては。
https://hsp.tv/make/downlist.html



名無三

リンク

2019/6/16(Sun) 18:07:54|NO.87630

hspで試作作ってc++で本番動かすのは結構やりますし、自分もそれ関連の質問をすることもあるので
逆もokですヨ(多分)



あは挨拶のあ

リンク

2019/6/16(Sun) 21:05:04|NO.87633

返答ありがとうございます。

とりあえず管理者権限を私は持ってないので。
公式以外からダウンロードするのも、借り物のPCで作ってるのでちょっと躊躇します。
そのうち我家のPC管理者に聞いてHSPを導入していいか許可を取ってみます。

今日一日プログラムを書いてました。

今の所
AチームとBチームが同じ動きをしていたバグを修正
ランダム配置から短時間動かしてみて、偶然上手い動きをしたときのデータを教師データとして保管することに成功

ができました。

ですが最大の壁にぶち当たってます。
配列で多層パーセプトロンを手実装しているが逆誤差伝播法の実装方法がさっぱりわからないです。
関数は以下の物を使用

function mysig(x){
return (1.0/(1.0+Math.exp(-x))-0.5)*2.0;
}

今のモデル
出力層は仮にB1,B2,B3の3点とします(これは固定です)。
A1,A2,A3を出力層のひとつ前の層で決まった値とします(3個は例えばの話で数は可変です)。

B1=mysig(A1)*重み1_1+mysig(A2)*重み2_1+mysig(A3)*重み3_1+重み0_1*1
B2=mysig(A1)*重み1_2+mysig(A2)*重み2_2+mysig(A3)*重み3_2+重み0_2*1
B3=mysig(A1)*重み1_3+mysig(A2)*重み2_3+mysig(A3)*重み3_3+重み0_3*1

層は多層でどの層も上記の発想で実装しています。
入力層もxi=mysig(xi)としてから入力しています。
出力層はB1,B2,B3を加工して使いますが、教育用にはB1,B2,B3の値をそのまま使おうと思っています。
多層パーセプトロンで実装しているのですが。
逆誤差伝播法の実装方法がさっぱりわからないので、どなたか具体的な実装例をお教えいただけないでしょうか?
コメントをほとんど書いてないコードなので私のコードを読み解くのは難しいと思いますが。

HSP導入は後日ということで、なんか一人で勝手に質問ばかりしてるようです。
すいません。

3次元配列で実装された典型的な実装例とどの変数がどの意味を持つかが読めれば何とか先に進めると思うのですが。



名無三

リンク

2019/6/17(Mon) 18:28:27|NO.87640

う、うーん…機械学習をhspでさせる試みはあまり考えたことがなかったですね…
構文に自由度があるので、他言語での例やソースを元にコンバートするのはどうでしょう?



あは挨拶のあ

リンク

2019/6/17(Mon) 20:35:50|NO.87641

hsp導入許可が下りました。
HSPテレビを見ましたが皆さんいろいろ作ってますね。

今、リンク先を参考に逆誤差伝播法を記述しようと四苦八苦しています。
https://rhuang.cis.k.hosei.ac.jp/Miccl/ProjectA/L7-2017B.pdf

リンク先の重みの更新(𝑤𝑤5)
の適用関数をシグモイド関数から私流の

function mysig(x){
return (1.0/(1.0+Math.exp(-x))-0.5)*2.0;
}
に変更したこの関数の微分を記述出来たら何とかなりそうです。

色々パラメータや数式をいじくっていたら、最初の未学習状態で派手にランダムに動かすにはこの数式がとても良いことが分かりました。
なのでこの関数で行きたいのです。

逆誤差伝播法のその他の部分はリンク先を見ながら作れると思います。

微分は私難しくてよくわからないです。
微分だけなら大学数学ですのでどなたかご質問にお答えいただけると思います。

目的としてはAIの教育をJavaScriptでやって学習済みAIを3次元配列で表現されたパーセプトロンとして、HSPのゲームに適用する。
という感じで作りたいです。
学習部分の記述は難しいですが学習済みAIを使うのは簡単です。

とりあえず、mysig関数の微分版をよろしくお願いします。


補足
B1=mysig(A1)*重み1_1+mysig(A2)*重み2_1+mysig(A3)*重み3_1+重み0_1*1
の末尾の重みは重み0_2も重み0_3も同じ定数なのですね、勘違いしていました。



あは挨拶のあ

リンク

2019/6/22(Sat) 10:55:12|NO.87692

まだ、リンク先を参考に逆誤差伝播法を記述しようと四苦八苦しています。
https://rhuang.cis.k.hosei.ac.jp/Miccl/ProjectA/L7-2017B.pdf

逆誤差伝播の計算を行う時
出力層から隠れ層への計算方法の実装
隠れ層から入力層への計算方法の実装は原理はわからないけど実装方法はなんとなくわかり始めてきてて
時間をかければ実装できそうなのですが。

リンク先は3層の場合の解説なので隠れ層から隠れ層への逆誤差の計算方法が書いてません。

どなたかリンク先の説明を拡張し。
4層の場合。
隠れ層から隠れ層への場合の数式をリンク先の様式で記述していただけないでしょうか?

いきなりゲームつくりは難易度が高いことが判明してきたので。
少しできるJavaScriptでパーセプトロンを書いて。
上手くいったことを確認したら
HSPで誰でも簡単に使えるパーセプトロンとして移植しようと思います。
使える関数はシグモイド関数限定で行こうと思っています。

HSP版パーセプトロンの仕様
パーセプトロン本体となるグローバル変数名の指定
(パーセプトロンの各辺の重みを現す3次元配列、各層の点の数を表す配列、層の数を表す数字の3種類)

関数1
パーセプトロンの初期化(3次元配列を乱数で埋める)

関数2
パーセプトロンの利用
(一次元配列にデータを入力すると、それを入力層のデータとし、
出力層の結果を指定された一次元配列へ転記する関数)

関数3
パーセプトロンの教育関数
(入力、期待される正しい出力をそれぞれ一次元配列で受け取り、逆誤差伝播法で
パーセプトロンを教育する)
使える関数はシグモイド関数のみ

いきなりゲームつくりは難易度が高いことが判明してきたのでまずはパーセプトロンをHSPに
移植することから始めたいと思うのです。
その前にJavaScriptで実験をしたいのですが難しくて行き詰まってる状態です。

趣味なので、長期間かけて楽しく実装していきたいので数式の方よろしくお願いします。

自作関数の微分はどうもシグモイド関数の微分に2倍をかけるだけでよさそうです。



ONION software Copyright 1997-2021(c) All rights reserved.