一人で完成まで頑張るの寂しいからかまって [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
・ウディタ製
・RPG
・ぼくがたのしいとおもったしすてむ
・ぼくがたのしいとおもったばらんす
・基本システム流用できるところは流用して楽していく
・エタらないように頑張る ツクールで作ってんの?
ツクールで扱う言語はCですかい? プラズマとボスの当たり判定を作った
ビームとプラズマのZ軸の二分探索に
バグが隠れてたのがHPが多いボスで
明らかになったので直しとく >>734
みんなに元気いっぱい貰ったので頑張るぞー >>738
ツクール2003はGUIで1行ずつ組み立てる
専用のスクリプト言語を使う
アセンブラライク x BASICな感じ
Cより低レベルな処理をしている様な気分だけど
スクリプトなので高級言語と言う感覚 さすがにBASICって言うならウディタくらいの自由度がないと無理がないかw
ExcelのVBAで無理やりテトリス作ってるのが近いと思う >>742
8/16bit時代のBASICよりは自由度に溢れてるぞ
ニコ動はオワコンかも知れんが
ニコフェスで職人wとか謎の技術wって
弾幕貼られるのを目指してはいる
まぁ現実は鳴かず飛ばずじゃろう
ブログに日に3人もアクセス有れば燃料として十分だし
モチベの燃費については良い性格してると思う 俺も2003で謎技術やってたからわかるw
DBの存在や変数操作のやりやすさ、何より同じことやっても軽いってので俺はウディタに移行したが応援してるぜ! 自ミサイルとボスの当たり判定を作った
ミサイルに目標のボスのイテレータを追加して
雑魚のイテレータを優先で、目標へ向けて
ロックオン、発射、移動、当たり判定
を実行する処理を追加した 自ブラスターとボスの当たり判定を作った
ラム衝突のダメージも実装したけど
今のボスは無限遠にいるので
テストは動き回るボスが出来てからにする >>739
ビームかプラズマを1発だけ撃つと
連続で当たり続けるバグを修正した
二分探索は問題無くて
ポインタの参照外しのミスだった ボスのパーツのスケルトンを作った
変数とイベントの領域を確保したので
肉付けして行く
先を見据えて予約して行かないと
後で修整効かなくなって詰む
激しく単純労働の上
ツクールの編集機能の弱さに氏ぬ
マウスだけ or キーボードだけで
操作できると良いのだが
ツクールはキーボード見ながら
一本指打法する人向け ボスのパーツの処理を実装した
生成、移動、仮の描画、当たり判定
まで作った
今のはキャラ表示無しのパーツなので
適当に雑魚キャラを仮描画して
座標と当たりを確認してる
ボスとパーツの生成座標を即値で無く
視点との角度から求める様にした
脳内で三角比とか計算しないで済む ボスがレーザー砲を発射できる様にした
砲塔の部位オブジェクトで管理する
フレーム数をカウント・アップして
一定値になったら発射する
砲塔が画面外にいる時は
カウンタを0に戻す ボスのミサイル・ポッドを実装した
レーザーと同様に
砲塔の部位オブジェクトで管理する
砲塔が画面外にいる時はカウンタを1
画面内にいる時は2ずつ増やして
一定値になったら発射する
レーザーより間隔を長く取った ボスの部位ダメージを実装した
ダメージと破壊のエフェクトも
描画できる様にした
ボスのミサイル・ポッドを
2つに増やした ボスの武器の領域を確保した
ボスの関連イベント一式を予約
変数は種類毎に用意すると
多過ぎるので、全部共有にする ボスの武器の変数関連を一式揃えた
ボス共通の構造体と
それのイテレータ等 ボスのロケット・ランチャを実装した
放射状に広がってから
収束しつつホーミングする
「発射」
・半径 = 0
・半径速度 = 200
・Z速度 = 0
「移動」
・半径速度 -= 20
・半径速度 < 0
・半径 < 500 なら
・半径速度 = 半径速度 * 2 / 3
・半径 < 30 なら
・半径 = 30
・半径速度 = 0
・半径 += 半径速度
ミサイルの個数と角度を
指定して発射する
中心の座標を通常のミサイルと
同様に移動させながら
中心から半径分離れた位置に
ミサイルを複数描画する ・Z > 0 なら
・Z速度 -= 5
・Z <= 0 なら
・Z速度 += 5
・Z速度 < -50 なら
・Z速度 = -50
・Z速度 > 110 なら
・Z速度 = 110
・Z += Z速度
前方から来る時は
Z速度を遅めにする
一定フレーム追尾後、消滅する ボス攻撃のスプライトのチラつきを実装した
ボス攻撃のピクチャの最大数を
「ピクチャ数 = Nウェイ攻撃 x ボス最大数」
にすると滅多に使い切れ無いのに
無駄に確保して仕舞うので
「ピクチャ数 = 32」
とか適当に設定して
この中で遣り繰りする
するとピーク時にピクチャが
足り無くなる事が有り得るので
ピクチャを複数のキャラで共有して
フレーム毎に交代で描画する様にした
「描画開始」
・フリッカーN = 1
「描画ループ」
・ピクチャN >= ピクチャMax なら
・フリッカーN++
・N = (現在フレーム % フリッカーN + 1)
・N == フリッカーN なら
・描画フラグ = On
・違うなら
・描画フラグ = Off
・ピクチャN %= ピクチャMax
・垂直同期待ち
・描画フラグ == On なら 描画 ファミコンの横16ドットのスプライトが
水平に4個を超えて並ぶとチラつくのと
原理的に同じ技術を使ってる
何にも考えて無いとスプライトが
チラつくどころか消えて
見え無い敵が襲って来る事になる
チラつきには文句言わずに感謝すべき ツクールの場合は
ピクチャ数が最大を超える度に
・ピクチャN %= ピクチャMax
・垂直同期待ち
とするだけでも1フレームの
チラつき表示が出来る
逆に、狙って無いのに
ピクチャが勝手にチラつく時は
ピクチャ番号が被ってるバグを
疑うと良い 「夜間着陸」のサブ・ゲームの
スケルトンを用意した
特別なイベント時のみプレイ出来る
大型艦は大気圏内では
現代の旅客機程度の機動力しか無く
無防備なので、夜間に熱光音電波重力
ネット等の全てのステルスを駆使して
着陸する必要が有ると設定した
揚力は、PDS物理学を使って
高次元で折り畳まれた宇宙の
何処か遠くに有る天体の重力を
艦の上方に透過させ、惑星重力と
釣り合いを取って発生させる
地球以外の惑星上も
同様の重力制御で1Gに保たれている
ボスは行き成り大量生産は無理ゲー
なのでネタが降りて来る度に
一つずつ追加します
シナリオの量産は
特別な手法を開発済み 夜間着陸の夜景の描画を作った
取り敢えずランダムに
街の灯りを配置して
前進と上昇下降できる様にした 夜間着陸の旋回移動を作った
・まず機体をロールで傾けて
X-Y回転した後
・そのロール角に応じてヨーの
X-Z回転で進行方向を転回する
・そしてヨーの分だけX移動 座標を実数から整数に変更した
固定小数点を無くしたので
繰り上がりのシンクロによる
プルプル振動が無くなった 着陸地点とガイド・ビーコンを実装した
着陸の目標地点から複数の四角い枠を
一定の間隔と角度で配置する様にした
線の細い枠の画像を縮小すると
潰れて見えたり消えたりするので
沙羅曼蛇レーザーの時と
同じ仕組みで線を描いた
ローリングによる回転は省いた 夜間着陸の終了チェックを作った
各終了条件を満たしたら
フラグを立てる
・着陸地点に接近で成功フラグ
・着陸地点を通り過ぎたら
オーバーラン・フラグ
・地面に衝突したら衝突フラグ
各フラグの処理
・フレーム・カウンタ == 0 なら
・対応する効果音を鳴らす
・キー入力無効化フラグを立てる
・フレーム・カウンタ >= 20 なら
・終了/リトライ/ゲームオーバー
・フレーム・カウンタを
インクリメントする >>768
ツクール2003にenumは無いし
ポインタの代わりに変数番号の変数とかは有るけど
スイッチ番号の変数も無いからしゃーない
使った事の無い環境について
あんまし意見しない方がいい 説明の都合で共通処理の様に書いてるけど
それぞれ別イベントで異なった処理をする
成功なら自動操縦の処理をして着陸させる
オーバーランならメッセージを出して
最初からやり直す
衝突だったら爆発する
>・フレーム・カウンタ >= 20 なら
> ・終了/リトライ/ゲームオーバー
暫定的に20としてるけど
終了は自動操縦が終わってからだし
ゲームオーバーは40位まで爆発させる
書籍の様に完成したコードを
解説してる訳じゃ無く
作りながらの進捗報告と言う体で
進めてるので、弄ってる最中の部分への
意見はしなくてえぇよ
つうかワイがツクール先生で
おまいさんらが生徒だからな
勘違いすると単位やらんぞ 墜落後の爆発を作った
恒星系の処理からコピペして
ダメージの部分を取り除いた
爆発中は自機の移動をキャンセル
爆発が止んだらゲームオーバー
未使用のガイドの消去を追加
間違って描画されていたので修正 着陸成功後の自動操縦を実装した
着陸地点に到着したら
自動操縦で下記の方向へ
微調整して接地する
・ロール、ピッチ、ヨーを正面
・X,Y座標を着陸地点(Zは停止)
接地直後にピッチを上下して
画面を縦揺れさせる
成功フラグ等は実際には
状態遷移を表す整数になっている
・開始
↓
・接近、効果音
↓
・自動操縦
↓
・画面振動
↓
・完了、フェードアウト 自機のプラズマ球が一つだけ
点滅するバグを修正した
ボスの部位の攻撃が画面に
ゴミとして残るバグを修正した
何方もピクチャ番号の計算が
間違っていただけ ガイドの通過判定を入れた
ガイド・ビーコンを
潜り抜けた時と外した時に
其々の効果音鳴らす様にした
自機に一番近いガイドの
イテレータを保持して置いて
それ限定で当たり判定を
する事で最適化した 夜間着陸のマップを作った
20x20サイズのマップを
左上から1タイルずつ舐めて行き
タイルのIDに応じて
500x500の座標範囲に
ビルや道路等の灯りを配置する
全体でX,Z座標が-5000から+5000の
領域に収まる
スタート地点や着陸地点の
タイルIDが有ったら
変数に座標を入れて置く
余った灯りのピクチャは
ランダムに配置する
http://lnl.osdn.jp/images/Space-SSS/blog/2019/12/l/sss-2019-12-30-001.png 灯りのマップ配置に道路を追加した
残りは滑走路
街灯りと着陸地点の画像を作った
仮当てしてたものと挿げ替えた 夜間着陸のHUDを作った
ビル街の速度のHUD処理を呼ぶ
最高速度とブーストの設定を弄って
速度メーターをレッドゾーン無しにした
自動接地時に速度を
0まで落とす様にした PSリメイク版ドラゴンクエストWやる。その2
://www.youtube.com/watch?v=JhMPRnomZ1o あけおめ、ことよろ
着陸が成功した時と
着地点を通り越してオーバーランした時に
それのメッセージを描画する様にした
墜落時は空の画像にして置いたので
仕様変更で描画する事になったら
画像を差し替えるだけで対応できる 街灯りのマップ配置処理に
滑走路の分を追加した
これで夜間着陸は一通り出来た
後はS-IIIのパワーアップを
受け取れる惑星の数だけマップを作る
多分あんまし考えずに
フィーリングで量産できる 細かく手を入れた
着地点の直前で艦首を
水平まで持ち上げる様に
ガイド・ビーコンを設定した
Y座標を地面の下から始めて
半径より下に有る時は
半径分の高さに描画する
|
|
|
_ | |
真横から見るとこんな感じ
着地後、ガイドを潜れた数によって
得点とメッセージを表示する様にした
100%:パーフェクト!
80%以上:グレート
50%以上:グッド
10%以上:バッド
0%以上:クレイジー!! 去年末は先生ぶってイキって仕舞い大変スマンコ
たまに来るケチを付ける奴と勘違いしますた
三次大戦を前におまいらと和解せよする等した https://www.youtube.com/watch?v=a9VBHAsIqlg
「スペースSSS」RPGツクール2003用3DシューティングRPG 進捗動画 #014
夜間着陸のサブ・ゲームが出来ました。
緑のガイド枠を潜り抜けて、戦艦を滑走路に着地させます。
ブログ、Twitter、5chで毎日進捗と技術解説をしているので見に来てね。
制作:某犬犬
Web: http://lnl.osdn.jp/pukiwiki/index.php?works
Twitter: https://twitter.com/schrochan
BGM素材は「サイバーレインフォース」さんの提供です
著作者:Cyber-Rainforce
HP:3104式
URL:http://cyber-rainforce.net/
https://twitter.com/5chan_nel (5ch newer account) 今年は図書館でクエスト量産する予定だったが
この世界情勢なので放置してたスマンコ
ネットで図書館の代用できそうなのだが
その前に2件ほど別プロジェクトを割り込ませる事にした
取りあえず、昔誰かが作った戦車のフリゲをリメイクする トリップ違ったな これか?
Linux版ツクールMV用にJavaScriptでプラグイン書いた
スタック管理、構造体、文字列、スプライト等の
個人的便利ライブラリになった
MVはスーファミ時代のアセンブラ風味で
ゲーム職人気分が味わえるので良い
http://lnl.osdn.jp/images/BankerKiller/blog/2020/10/l/bk-2020-10-10-001.png
ミニゲームだから多分そんなに時間かからんじゃろう 全戦車の座標の最小値と最大値を求めて
最小値が画面の左端、最大値が右端になる様に拡大率%を計算する
キャラがはみ出ない様に、X,Y方向の拡大率の小さい方を優先する
拡大率 = 100 * マップ幅 / (最大値 - 最小値)
最小値と最大値の平均を画面の中央にする
描画X = ((X - 平均X) * 拡大率 / 100) + 画面中央X
スマブラみたいにキャラが接近すると、画面がズームインする 戦車は直ぐ下に地面が無ければ落下して
地面より下にいるなら、地面の表面に瞬間移動する
地面が坂道なら、戦車も斜めに移動する
斜め移動用Y = 戦車X % タイル幅 * 地面の傾斜正負
MaxY = 地面Y + 斜め移動用Y - 地面からの高さ
戦車Y < MaxY なら 戦車Y += 重力の速度
戦車Y > MaxY なら 戦車Y = MaxY
スプライトゲーなのでY座標は
画面上がマイナス、下がプラス
ゲームなので定速度運動させるため
重力加速度でなくて「重力の速度」を使ってる
地面の傾斜は45度にしているので
「戦車X % タイル幅」から「斜め移動用Y」が出てくる 地形に合わせて戦車の車体の角度を変える
着地回転率 = タイル高さ - (MaxY - 戦車Y)
着地回転率 < 0 なら 着地回転率 = 0
角度 = 戦車の右端の地面の角度 - 戦車の左端の地面の角度
角度 = 角度 * (戦車の左端X % タイル幅) / タイル幅
角度 += 戦車の左端の地面の角度
角度 = 角度 * 着地回転率 / タイル高さ
戦車が移動しながら
「戦車の右端の地面の角度」と「戦車の左端の地面の角度」の
差の分だけ車体が回転する
降下中は水平で、着地の寸前に「着地回転率」で
地形に角度を合わせ始める ウディタって何が楽しいの?
技術力が上がるわけでもないし。 ラウンド開始時に地面を自動生成する
適当な初期値を入れた後、下記をループする
連続カウントが0になる度に
_上下符号に-1から+1の乱数を入れる
_連続カウントに1から3の乱数を入れる
Yが天井なら
_上下符号に0から+1の乱数を入れる
Yが底なら
_上下符号に-1から0の乱数を入れる
地面X = X
地面Y = Y
X++
Y += 上下符号
連続カウント--
-45度、0度、+45度の何れかの坂道が、1から3の長さで続く
ループ終了後、そのまま逆順にendからbeginへループして
上下符号を地面配列の各要素に入れて行く
1つ先と現在の地面の高さの差で上下符号が決まるけど
それだとイテレータが1つ先に進んで仕舞っているので
endから逆に舐める必要が有る 上下キーで、砲身の角度が0から90度に変えられて
目押しの溜め撃ちで、弾の初速が調整できる
「溜め撃ちの処理」
発射キーが押されてるなら
_チャージ率 <= 0 なら
__チャージ開始音SE
_チャージ率 < 100% なら
__チャージ率 += チャージ速度
__チャージ率 >= 100% なら
___フルチャージ音SE
発射キーが押されて無いなら
_チャージ率 > 0 なら
__チャージ率 < 30% なら
___チャージ率 += チャージ速度
__チャージ率 >= 30% なら
___発射処理
___発射音SE
___チャージ率 = 0%
チャージ率が30%未満の時は、自爆しない様に発射を見送る
発射角に応じて、初速にcos/sinしてX,Yの速度を決める JSプラグインで、変数番号の変数にアクセス出来る様にした
変数番号をアドレス、変数番号の変数をポインタ外し、として扱った
getEfxAdr nDst nSrc:
nDst = &nSrc;
nSrcの変数番号をnDstに入れる
getIndVar nDst pSrc:
nDst = *pSrc;
pSrcの変数番号が指す変数の値をnDstに入れる
setIndVar pDst nSrc:
*pDst = nSrc;
nSrcの値をpDstの変数番号が指す変数に入れる
getEfxAdrSwitch bDst pSrc:
bDst = &pSrc;
pSrcのスイッチ番号をbDstに入れる
getIndSwitch bDst pSrc:
bDst = *pSrc;
pSrcの変数番号が指すスイッチのOn/OffをbDstに入れる
setIndSwitch pDst bSrc:
*pDst = bSrc;
bSrcのOn/OffをpDstの変数番号が指すスイッチに入れる プラグインの引数に変数番号では無く、変数の名前を与える事で
変数の並びを変えた時の修正ミスや手間が省ける
「変数名から変数番号(アドレス)を得る方法」
・キャッシュ[変数名] に値が入っているなら
・キャッシュ[変数名] を変数番号として返す
・ループ
・$dataSystem.variables[i] == 変数名 なら
・キャッシュ[変数名] = i
・i を変数番号として返す
「$dataSystem.variables[]」に
ツクールの変数が変数番号順に入っている 構造体の配列をプラグインで管理した
&foo は変数名 foo を指定する参照渡し
struct は、プラグインのサブ・コマンド
struct iter は、サブ・コマンドのサブ・コマンド
BkkSprite struct init &ctrlHead &iterHead &iterTail &max
BkkSprite struct alloc &ctrlHead
init で管理領域を設定して
alloc で実際にスタック上にデータ領域を確保する
BkkSprite struct iter isBegin &ctrlHead &result
BkkSprite struct iter isEnd &ctrlHead &result
BkkSprite struct iter begin &ctrlHead
BkkSprite struct iter end &ctrlHead
イテレータの終了チェックと、イテレートの開始/終了
BkkSprite struct iter at &ctrlHead &idx
イテレータの値を直接指定して、そこへ飛ぶ
BkkSprite struct iter ++ &ctrlHead
BkkSprite struct iter -- &ctrlHead
イテレータを進める
基本的に要素の削除は無くて
代わりに使用中フラグをメンバーに入れて置くか
またはスタックごと開放して、リセットで最確保する データへのポインタを列べたイテレート領域を使って
構造体のメンバーにアクセスする(管理領域とは別物)
「構造体 Tank のイテレート領域」
Tank.type
Tank.x
Tank.y
BkkSprite getIndVar n Tank.type
で Tank のメンバー type を変数 n に読み込む
Tank.type はイテレート領域のポインタ変数名
BkkSprite setIndVar Tank.type n
は、逆に変数 n の値をメンバー Tank.type に書き出す
要するに、スタック上のデータ配列に対して
メンバー名でアクセスする為の仕組み
モトローラの680x0系アセンブラが分かる人なら
「ディスプレースメント付きアドレスレジスタ間接アドレッシングモード」
見たいなものと言えば伝わるだろう
ツクール2003では、コモンイベントのコマンドで実装してたけど
MVは「変数番号の変数」が使え無いのでプラグインにした 被弾時の爆発が何処かを弄ってる内に描画できなくなったけど
MVの変数は設定した上限を超えるとアクセス出来ない様だ
2003ではおkだけど、多分変数番号の変数で扱える為なのだろう
見た感じコードには何処にも間違いが無さげで数日ハマった 爆発はテクスチャ・アニメの種類毎に
「けむり」「閃光」「炎」に別けて画像をロードする
構造体の配列は共有してるので
描画する時は種類を見て別々に処理する
「けむり」のアニメをゆっくり目に描画しながら
始めに「閃光」を一度だけ生成して
一定フレーム毎に「炎」も生成する
「けむり」のアニメが終わったら
マップや戦車を再生成して次の対戦に遷移する 砲弾のチャージ・ゲージは、飾りの付いた外枠と
上下にグラデーションが掛かったゲージを組み合わせる
ゲージをチャージ率に応じて横方向に縮小表示する 対戦開始時の「Ready」表示中は
射撃禁止/移動おkで、間合いを取れる
「GO!」で射撃禁止フラグをOffにする
爆発中は射撃と移動の両方を禁止にする 砲弾四種
「スタンダード」単発、高速、早チャージ
通常弾
「バースト」二連発、高速、遅チャージ
通常弾を発射後、チャージ率x90%で最発射
「スプレッド」三分裂、低速、遅チャージ
発射後カウンタが0になったら
通常弾二つ生成とそれ自身を通常弾に変える
「サイト」着弾地点表示、フェイント
発射後、予想地点にレティクル描画
左右の移動で速度微調整 マップ選択と障害物の生成をやった
キャラ名を[x][ ]か(x)( )に変更して
メニューから「\N[1]」で表示して
チェックボックスとラジオボタンにした
マップの選択はチェックボックスで選んだ中から
ランダムに選ばれる
マップの種類に応じて、障害物を描画
効果はまだ未実装 マップと障害物の三種を実装した
「草原」「林」視覚的に隠れられる
「岩地」「岩」水平方向の弾除け
「砂漠」「流砂」移動速度を半減 「草原」の「林」だけ戦車より手前に描画した
スプライトのZ座標を使って実装しようとしたが
ツクールのプライオリティ処理が
機能していないっぽいので
別のスプライトを手前に確保して回避した AIを実装し始めた
・AI
・行動トリガー
・行動
・学習トリガー
・弾避け
・敵が射撃
・左、中、右に移動
・敵の着弾
・射線外し
・ランダム
・左、中、右の山の裏へ移動
・敵の着弾
・ランダム移動
・ランダム
・左、中、右に移動
・敵の着弾 ・チャージ
・AIがチャージ開始
・敵の左、中、右を狙う
・AIの着弾
・発射
・敵が射線上に入る
・発射
・無し
・山越え
・AIの着弾
・砲身を上下
・無し
「行動トリガー」で行動が発生して
「学習データ」を元に「行動データ」を設定する
「行動データ」によって毎フレームの行動を決める
「学習トリガー」で学習が発生して
「学習データ」を調整する 学習の例として「弾避け」の場合
・敵が射撃したら
左、中(移動無し)、右の比率に応じて
乱数で移動先を決める
・敵の着弾で当たらなければ
選んだ行動の比率を+2して
それ以外の比率を-1する
・当たった場合は
選んだ行動を-20して
それ以外を+10する ・正しい選択をしたっぽいなら
微妙に正の強化学習をして
・間違っていたなら
ペナルティとして多めに
負の強化学習をする
ゲームを繰り返すにつれて
どんどん強くなって行く(と良いなー)
リセットするか終了すると初期化 音も自分でやってる?
音やろうと思ってもちょっと無理かなあって思ってる SE はデフォ素材のを再生速度変えたりして使ってる
BGM はフリー素材
作曲は時々やりたい病になるけど、出来無い 再生速度、変えるってのがあるのか
商用にする場合、フリーでも著作権問題になる場合あったかも チャージ、発射、山越えを仮実装した
・常にチャージし続けて、弾道計算が当たりなら発射
・目標に当たらなければ、砲身角度を上げて
ロフテッド軌道で山越えを狙う
・当たるかランダムで角度を多めに下げる 弾避けを仮実装した
・敵弾が発射されたら
左、中(その場)、右のステップ座標を指定する
・移動処理で指定座標へ向けて移動する AIが敵の方向を向く様にした
移動の指示が無い時か、画面端にいる時に
前方に敵が居なければ、振り向く様に
移動先を一歩後ろへと指示する ランダム移動を実装した
乱数 % ランダム・フレーム数
が 0 ならランダムにステップ移動
移動距離は弾避けの値を流用
学習は、敵の弾が外れる度に
ランダム・フレーム数 += 1
当たったら
ランダム・フレーム数 -= 10 「射線外し」を実装した
敵から見て、山頂の1ブロック向こう側は
ロフテッド軌道でないと当て憎いので
そこに隠れる様に移動する
乱数 % フレーム数
が 0 なら隣の山陰まで移動
学習は、敵の弾が外れる度に
移動先 += 2%
移動先以外 -= 1%
フレーム数 += 1
当たったら
移動先 -= 20%
移動先以外 += 10%
フレーム数 -= 10 CPU 同士で対戦させてみた
強い順に
1.ノーマル
2.バースト
3.スプレッド
4.サイト
サイトは AI にフェイントは逆効果
スプレッドは溜めと弾速遅すぎ
バーストは溜め遅い割に奮闘
ノーマルは普通が一番強いっぽい
負けると、チョコマカ動く様になるし
動き過ぎると、狙える弾数が減って
更に負ける傾向が有る プレイヤー2をテンキーで動かせる様にした
スクリプトでテンキーのキーの名前を
変えて初期化した
Input.keyMapper[98] = 'down_numpad'
デフォだとカーソルとテンキーに
同じ名前が付けられてるので
語尾に '_numpad' を加えた
内部的には4人同時プレイ出来る様に
作ってあるので、2番目のCPU以外の
プレイヤーに割り当ててる 生存報告(ガチで)
ツクール2003がサポート終了したので
心機一転MSX3に移植する
PyGameで作ってるのでLinuxでも動く
解説は2chでレス開始するより前の一番最初からになる 生存報告(ガチで)
ツクール2003がサポート終了したので
心機一転MSX3に移植する
PyGameで作ってるのでLinuxでも動く
解説は2chでレス開始するより前の一番最初からになる pygameのブログ見た
放ったらかしになってたpythonの
オライリー本の続きを読んでる 今時のゲーム開発は、工場のライン工と変わらない
職人の腕を発揮する要素が無いし詰まらない
ツクールでもやってる方がまし
オールドスクールのスプライトゲーが作ってて一番楽しい 久し振りにSSS起動したけど、もの凄い重くて、
どうしようか思案中 初めてのPythonの22章まで読んだ
PyGame版と2003版を同時進行で作りたい pygame版の推奨スペックは、ラズパイ以上にしとけば、
問題ないだろう
今年の小遣いで、MSX3が買えるかは微妙 爆速のdragonballを並列で128個くらい繋いだ
近代化改修X68kなら弄りたいと妄想してたけど
ただ復刻しただけだと、今からまたやるの?
もう思いでの中でいいよってなってる
MSX3のスーパーリッチなスプライトで
スーファミ時代の業務用ゲームみたいなの作る方が楽しそう PyGameのリファレンス全部読んだ
MSXまだだけど、見切り発車するかも PyGameインスコして、メインルーチン作った
取り敢えず、スクリーンを明滅させて、EscキーかXボタンで終了する なんか、さらーっと流し読みした程度なんだけど、そこまで凝りたいんだったら、ウディタじゃなくてDXライブラリ使った方がいいんじゃない?
ウディタめんどいよ。 宇宙の背景の座標のロール・ピッチ回転を実装
スプライトはまだ無いので、赤い四角を描画
カーソル・キーで操作する
clock.tick(60)でFPSを指定して
clock.get_time()で実際に経過したミリ秒数に応じて、
加速度と速度を調整するので、
フレームレートが落ちても、移動が安定する 調整は、加速度と速度に「clock.get_time() / 基準時間」をかけて、移動させるだけ
経過時間に上限を設定しているので、
それを越えた場合は、処理落ちが発生して、動きが重くなるはず ■ このスレッドは過去ログ倉庫に格納されています