したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

【エミュレータ】Emueraスレ【+1】

100館の羊 ◆rUj9ETkRpU:2019/07/01(月) 03:32:30 ID:yHXxSWTU
>>99
すみません。他のバリアントや、技術的なことはわかりませんが、
おっしゃる通り、問題が起きた時は
COM_ABLEに条件式を書いて回避していました。
稚拙ですがこんな感じに書いて、コマンドが表示されるのを限定的にしていました。

;CFLAG:100は 0が快感 1が奉仕 2が苦痛 3が恥辱 4がその他になります。
;FLAG:XXXは新しく作成したほうがいいです。
@COM_ABLE10
;CFLAG:100 = 0 快感方針の時、イベントフラグ = 0
SIF CFLAG:100 == 0 && FLAG:110 == 0
 RETURN 1
RETURN 0

参考にならないかもしれませんが…。ご報告までに。

101妊)|д゚):2019/07/01(月) 03:56:06 ID:74twulD.
>>98
これはバリアントの仕様ですね
一部のバリアントはEmueraの自動処理をバイパスして、自前で処理するようなシステムを組んでます
(内部処理でやってることを自前で実装することで拡張を行う目的)

で、このケースの基本的な仕組みは>>100の言っている通りで、
フラグが寝てる時はCOMABLEが0が返すように仕込んでおいて、
自動処理はこのフラグを寝かせておくことで全部通り過ぎさせ、
@SHOW_USERCOMの先頭でフラグを立てて、
今度は自前で全ての@COM_ABLEXXX呼び出して判定してコマンドを自前で表示させる処理系になってます

というわけで、結論から言えば、このバリアントの仕組みに沿わない追加をした結果、正しい表示が得られていないだけになります

ちなみに、このタイプのシステムを想定するなら、
・_Replace.csvで"COM_ABLE初期値"を0に設定し@COM_ABLEXXX系は実装しない
・@COM_ABLEXXXの役割を持つ通常関数を用意し、自前処理ではこれを呼び出す
の方がフラグ管理が必要無いので、スマートなコーディングになる気がしますね

102あなたの名前を入力してください:2019/07/01(月) 05:27:00 ID:yHXxSWTU
>>101
確認をして頂きまして、ありがとうございました。
また、横からお手数をお掛けして申し訳ありませんでした。

103あなたの名前を入力してください:2019/07/01(月) 08:18:09 ID:Z1.N.rD.
>>101
バグではないということで、承知しました
この手の処理をしている場合は@COM_ABLEでのフラグ判定が必須ということですね
お手数をかけさせてしまい、すいません

104あなたの名前を入力してください:2019/08/01(木) 22:29:59 ID:iKyDtZEY
いつもお世話になっています。
EmueraのOSDNのページについてお尋ねしたいのですが、exfuncページの自作関数における引数指定の項に
ver1.808現在、これらの変数を用いた場合は初期値を設定できず、また引数を省略できません。
とありますが、この記述は1824現在でも有効ですか?

105あなたの名前を入力してください:2019/08/06(火) 22:01:53 ID:AHmonDz.
Emuera1824beta005.exe
1.GCREATEでグラフィック作成、
2.DRAWSPRITEでスプライトを編集
3.CBGSETGを実行
4.emueraの「タイトル画面へ戻る(T)」または「再起動(R)」を実行
5.再度1〜3を実施

上記5の表示段階で、1度目の編集と2度目の編集両方を保持していることを確認しました
「タイトル画面へ戻る(T)」、「再起動(R)」ではスプライトの破棄は行われないのでしょうか?

106妊)|д゚):2019/08/09(金) 03:50:10 ID:GVvJEgpU
○1824+v3
https://ux.getuploader.com/ninnohito/download/462

行連結時に数値変数指定FORM文字列に対して誤爆をかますのを修正

>>104
現在も有効です

>>105
なぜにbeta…
とはいえ、コードぱっと見は行われてない気もしますね
ここらへんのコードあんま触ってない上に週末から少しAFKになるので、
修正はEmuの人とっつかまえないと時間かかるかもです

107喚く ◆btr76hqMa6:2019/08/11(日) 23:41:23 ID:RQG9HHoE
Emuera1824.exeにて、
1. PRINTFORMLで作った入力値__INT_MAX__のボタン
2. PRINTBUTTONで作った入力値__INT_MAX__のボタン
3. HTML_PRINTで作った入力値__INT_MAX__のボタン
4. HTML_PRINTで作った入力値1のボタン
5. HTML_PRINTで作った入力値2147483647のボタン
6. HTML_PRINTで作った入力値2147483648のボタン

以上をINPUTにかけると、3,6のボタンがクリックできなくなります。
5がいけて6が駄目(符号つき32bit整数の最大値はいけるが、それに1足すと駄目)なことから、
HTML_PRINTでボタンを作ると、符号つき32bit整数の範囲しかINPUTで拾えなくなる感じなのかなと思うのですが、
これは仕様上の限界ですか?

やりたいこととしては、「戻る」のようなありがちなボタンの入力値に普段使わない値を固定で割り当てたいだけなので、
64bitまで拡張できない感じであるなら、それはそれで符号つき32bit整数の限界値を突っ込めば良いかという感じなのですが。

108喚く ◆btr76hqMa6:2019/08/11(日) 23:46:33 ID:RQG9HHoE
>HTML_PRINTでボタンを作ると、符号つき32bit整数の範囲しかINPUTで拾えなくなる感じなのかなと思うのですが、
ここ日本語おかしかったので修正します。
「符号つき32bit整数の範囲から外れるHTML_PRINT製ボタンがINPUTでクリックできない」です。

109あなたの名前を入力してください:2019/08/12(月) 19:05:50 ID:PnP75iss
デバッグモードにしようとしてもパス名とファイル名が違うって言われて通してくれないのは何が問題なんですかね

110あなたの名前を入力してください:2019/08/12(月) 19:12:11 ID:EXF9xTwE
>>109
手順は
ttps://ja.osdn.net/projects/emuera/wiki/debug
にある通り?
ショートカット作成時のパスが
“(前略)\Emuera1824.exe"
のように””で囲まれている場合は
“(前略)\Emuera1824.exe" -Debug
のように”の後に半角空白1つあけて-Debugを追加してください。
この空白がないとエラーになります。
また、
“(前略)\Emuera1824.exe-Debug"
“(前略)\Emuera1824.exe -Debug"
も同様にエラーになります。

111あなたの名前を入力してください:2019/08/12(月) 19:13:49 ID:7TFMK.Yk
デバッグモードは /Debug じゃなくて -Debug

112あなたの名前を入力してください:2019/08/13(火) 04:33:12 ID:lIaUqokY
空白いれてなかった・・・ありがとうございます

113妊)|д゚):2019/08/17(土) 02:09:05 ID:4YcIeDd2
戻り

>>108
見たところ、内部処理がintで回ってますね
別にintに制約される理由は無い気はするので、問題ないなら修正対象でしょう

114妊)|д゚):2019/08/17(土) 02:23:48 ID:4YcIeDd2
ついでに>>107の3番目は現状buttonのvalueには変数等が渡せないので、それで引っかかってます
これ直すのは色々ややこしいので現状見なかった方向で

115あなたの名前を入力してください:2019/08/17(土) 10:13:54 ID:dIswJs..
いつもお世話になっています。便乗で申し訳ないのですが
ARRAYMSORTの第1引数も32bitまでしか対応しておらずRESULTに0を返してソート失敗するようです
64bitのハッシュ配列を作ってソートしようとした時に確認しました
環境はEmuera1824+v3です
ARRAYSORTは64bitまで可能でした

■サンプルコード
#DIM CONST MAX_32BIT = 2147483647

PRINTFORML MAX_32BIT %SORT_TEST(MAX_32BIT)%
PRINTFORML MAX_32BIT + 1 %SORT_TEST(MAX_32BIT + 1)%
PRINTFORML __INT_MAX__ %SORT_TEST(__INT_MAX__)%

@SORT_TEST(最大値)
#FUNCTIONS
#DIM 最大値
#DIM ARR1, 100
#DIM ARR2, 100

ARR1:0 = 最大値
FOR LOCAL, 1, 100
ARR1:LOCAL = RAND:最大値
ARR2:LOCAL = LOCAL
NEXT

ARRAYMSORT ARR1, ARR2
IF RESULT == 0
RETURNF "ソート失敗"
ELSE
RETURNF "ソート成功"
ENDIF

■実行結果
MAX_32BIT ソート成功
MAX_32BIT + 1 ソート失敗
__INT_MAX__ ソート失敗

116喚く ◆btr76hqMa6:2019/08/17(土) 12:35:01 ID:EY3E3Sek
>現状buttonのvalueには変数等が渡せない
FORM構文の文字列内での変数展開、あるいは文字列+変数+文字列みたいな形で渡すことができないという意味ですか?
ためしに数値変数用意してvalueのところで展開したら普通に展開されたようですが……。

117妊)|д゚):2019/08/18(日) 21:06:00 ID:Ts3y8iQY
>>115
コード見てみましたが、処理を大きく作り替えないと対応は困難そうかもです
(ARRAYSORTとはまったく別処理なのです)

>>116
ちょっと言葉足らずでした

もっと単純な話で、valueの中身は平文文字列として扱われますので、
valueが数値べた書きの時以外は数値を返すボタンとして認識されないということでしょ

これはHTML_PRINTに渡す文字列自体を文字列式使って設計してから渡せば回避できますが、
(この時点で数値に展開されるため)
直書きで変数を渡すとうまくいかないよ、ということです

118妊)|д゚):2019/08/18(日) 21:08:18 ID:Ts3y8iQY
謎の語尾「しょ」が発生したでござる…

何にせよ、HTML_PRINTのvalueとかに変数を使いたい場合は
あらかじ文字列式を使って変数をその中で展開させたものを渡さないとダメだよってだけのお話です

119あなたの名前を入力してください:2019/08/19(月) 20:45:08 ID:x3Cbt2e6
>>117
ARRAYMSORTの処理の件承知しました
ハッシュ配列については32bitでも問題なさそうなので丸めて使うことにします
コードの確認ありがとうございました!

120妊)|д゚):2019/08/22(木) 23:34:43 ID:lT/ZJivw
○1824+v4
https://ux.getuploader.com/ninnohito/download/463

v1の修正が甘くてエラー吐くのを修正
ついでに>>107の<button>タグで32bitを超える整数値のボタンを作れないのを修正

121あなたの名前を入力してください:2019/08/23(金) 11:32:32 ID:mRZnRzNw
更新おつです!
1824+v4でSTRJOINの不具合見つけました!
ここに書くには少し長いですが単体テストコード作りました。ERBファイルひとつだけで動きます。よろしければ使ってください。
主に3番目の引数が無視されてるみたいです


@ASSERT_ARE_EQUALS(ARGS:0, ARGS:1)
IF ARGS:0 != ARGS:1
THROW ASSERT_ARE_EQUALS エラー! "%ARGS:0%" != "%ARGS:1%"
ENDIF

@SYSTEM_TITLE
#DIMS L_ARRAYS, 10
#DIMS L_ARRAYS2, 10, 10
#DIM L_ARRAY, 10
#DIM L_ARRAY2, 10, 10
L_ARRAYS:0 '= "a", "b", "c", "d", "e"
L_ARRAY:0 = 10, 20, 30, 40, 50
L_ARRAYS2:2:0 '= "a", "b", "c", "d", "e"
L_ARRAY2:2:0 = 10, 20, 30, 40, 50
PRINTL 単体テスト開始

CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAYS, ",", 0, 5), "a,b,c,d,e"
CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAYS, ",", 0, 10), "a,b,c,d,e,,,,,"
CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAYS, ",", 2, 3), "c,d,e"
CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAYS, ",", 2, 8), "c,d,e,,,,,"
CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAY, ",", 0, 5), "10,20,30,40,50"
CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAY, ",", 0, 10), "10,20,30,40,50,0,0,0,0,0"
;CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAY, ",", 2, 3), "30,40,50" ; 失敗 1824+v4
;CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAY, ",", 2, 8), "30,40,50,0,0,0,0,0" ; 失敗 1824+v4

CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAYS2:2:0, ",", 0, 5), "a,b,c,d,e"
CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAYS2:2:0, ",", 0, 10), "a,b,c,d,e,,,,,"
;CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAYS2:2:0, ",", 2, 3), "c,d,e" ; 失敗 1824+v4
;CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAYS2:2:0, ",", 2, 8), "c,d,e,,,,," ; 失敗 1824+v4
CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAY2:2:0, ",", 0, 5), "10,20,30,40,50"
CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAY2:2:0, ",", 0, 10), "10,20,30,40,50,0,0,0,0,0"
;CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAY2:2:0, ",", 2, 3), "30,40,50" ; 失敗 1824+v4
;CALL ASSERT_ARE_EQUALS, STRJOIN(L_ARRAY2:2:0, ",", 2, 8), "30,40,50,0,0,0,0,0" ; 失敗 1824+v4

PRINTL テスト終了
WHILE 1
WAIT
WEND

122妊)|д゚):2019/08/23(金) 11:53:18 ID:Wf9of2XY
○1824+v5
https://ux.getuploader.com/ninnohito/download/464

>>121修正

123あなたの名前を入力してください:2019/08/23(金) 16:31:49 ID:mRZnRzNw
更新おつです!
修正確認しました。素早い更新ありがとうございました!

124あなたの名前を入力してください:2019/09/18(水) 17:17:38 ID:N7Bate5Q
デバッグコンソールで UNICODE(0) と打つと以降何をしても(Emueraを再起動するまで)コンソールの出力に何も表示されなくなります
そうならないようになったらいいなあという要望です。多分コンソールに文字列を追加する際にReplace("\0", "")とかするだけでいいとは思うんですが、よくわからず
ちょっとUNICODE系の関数で遊んでたら見つけました

125あなたの名前を入力してください:2019/10/05(土) 08:42:26 ID:GsIt42mk
…インジェクション系脆弱性?

126あなたの名前を入力してください:2019/10/06(日) 21:29:33 ID:hbRgoscY
コンソールに表示されるまでのどこかでゼロ終端扱いになってるだけ
ERBのどこかにDEBUGPRINT UNICODE(0)紛れ込ませるとデバッグモード殺しできるよ

127あなたの名前を入力してください:2019/10/07(月) 03:17:43 ID:Ah3m3dt6
バグというよりCの仕様に近いしなぁ

128あなたの名前を入力してください:2019/10/07(月) 10:46:39 ID:MheTtEmk
普通にCのレイヤーに渡る前にヌル文字を削除すればいいけど

129あなたの名前を入力してください:2019/10/10(木) 05:27:41 ID:uYBE12Fs
だが待ってほしい、ヌル文字をわざわざコンソールに流す意図を考えるならばそれを終端と考えそれ以降表示されなくなるというのは仕様として問題ないのではないか
制御文字を制御文字のままとすることの何が問題なのか

130あなたの名前を入力してください:2019/10/10(木) 16:47:08 ID:INqBRuxQ
どっちでもいいけどどっちがいいということもない気がするからEmueraの開発者さん方にまかせるけど
デバッグ用途という事を考えたら役に立たなくなる状態を回避した方が良いんじゃないかと思うよ

131妊)|д゚):2019/10/11(金) 02:34:58 ID:w2N84Gcw
そこまでクリティカルな案件じゃないから様子見してたら何かよくわからんことに
根本的な仕様としては制御文字にあたるところを受け付けてしまうのがよろしくないかもですねーって感じですかね

132好好 ◆hcbh0U7bsY:2019/10/25(金) 05:28:50 ID:5jEBZ24U
唐突にすみません、
BEGINの仕様についてお聞きしたいのですが、
BEGINは特定の条件(呼び出し元の階層)などでスルーされることはありますでしょうか?

//////////////////////////////////////////
@関数1
CALL 関数2
CALL 関数3

@関数2
BEGIN ~ (TITLE,TRAIN,SHOPで試しました)

@関数3
$INPUT_LOOP
INPUT
GOTO INPUT_LOOP
///////////////////////////////////////

このような組み方で、「関数2」内のBEGINがスルーしてしまい、
「関数3」のINPUTとGOTO文を消すと「関数2」のBEGINも正常に動くといった症状に陥ってしまい頭を痛めています。

またBEGINの後の行は無視されRETURNと同じように抜けて呼び出し元に返ってしまいます。

///////////////////////////////////////
@関数1
BEGIN ~
CALL関数2
BEGIN ~
///////////////////////////////////////
「関数1」内でBEGINを呼ぶと動きます。

現在は無理やり一度「関数3」を抜けて「関数1」でBEGINを直接使い、
GOTOFORMで元の場所に戻るようにしています…

必要であれば、編集中のバリアントごとアップします。
お知恵をお貸しください。

133あなたの名前を入力してください:2019/10/25(金) 08:50:34 ID:0zsrosA.
>>132
初心者スレの>>93-95あたり読んでみて
ちなみにCALLEVENTでもダメだった
一度RETURNで処理を返してからじゃないとBEGINできないっぽい

134好好 ◆hcbh0U7bsY:2019/10/25(金) 20:33:55 ID:5jEBZ24U
>>133
ありがとうございます。
あちらの方のスレですでにあったんですね。見落としてましたすみません。

135妊)|д゚):2019/11/18(月) 02:05:00 ID:G4.uWVpg
○1824+v6
https://ux.getuploader.com/ninnohito/download/465

しばらく新しい問題出てないのでメンテ的更新
>>124に絡んでUNICODE関数に制御文字列に対応する数値が与えられた場合エラーになるように変更

136あなたの名前を入力してください:2019/11/18(月) 08:24:12 ID:sgd8nERg
>>135
マジかー・・・・
今関数に異常値が入った場合に\C返す仕様にしてるんだが、見直しが必要か・・・・

137あなたの名前を入力してください:2019/11/18(月) 11:07:18 ID:zeRzsgU6
その修正だと改行も扱えなくなるので
SAVETEXTでテキストファイルとしてCSVを出力させる
CSVジェネレータがEmueraで制作できなくなるので辛い

LSTR '= "abc" + UNICODE(0xD) + UNICODE(0xA) + "def"
SAVETEXT LSTR, 1, 0, 0


main.erbの12行目でエラーが発生しました:Emuera1824+v6
LSTR '= "abc" + UNICODE(0xD) + UNICODE(0xA) + "def"
エラー内容:UNICODE関数に制御文字に対応する値(13)が渡されました
現在の関数:@SYSTEM_TITLE(main.erbの10行目)

138124:2019/11/18(月) 11:41:00 ID:KymTlp3Y
UNICODE関数は前の仕様のままがいいです
発端はUNICODE関数にいろいろな数値を渡す類のライブラリを作ったときに見つけたことなんです(疑似可変長数値配列ライブラリ)
問題は特定の文字列をデバッグコンソールで表示させたときにデバッグコンソールが動かなくなることで、でも通常使用には問題ないレベルではありました
それらの文字も通常の出力(PRINTなど)をさせたときは問題は見当たりませんし、デバッグコンソールに出力される際(DEBUGPRINT等)のみそれらを取り除くことはできませんか?(>>124の二行目)

139あなたの名前を入力してください:2019/11/18(月) 23:25:46 ID:rnElS6Tw
>>135
乙です!
SAVETEXTをUNICODEで改行するのはEmueraで編集できる疑似CSVとして
カスタムキャラの保存時やマップデータ保存時多用していたので
同じく使えると嬉しい…せっかく修正してくださったのにすみません
SAVE&LOADTEXTとても便利です
ファイルに名前を付けられたら更にわかりやすく使えそうで嬉しいです

140妊)|д゚):2019/11/19(火) 13:44:06 ID:ZNne8JUA
CRは需要ある感じですか
あれ内部処理ややこしくする場合あるんで怖いけど、通すようにはできますよ(単なる範囲指定の問題だから)

実のところエラーにするかは悩んだんですが、
動作途上では警告にしようがない+通すと問題に気づかない恐れがあるだけに、こうした感じですね

141あなたの名前を入力してください:2019/11/19(火) 14:13:30 ID:9uEtCOFI
エラーはエラーのままで例外的な利用はそれ用の命令の方がよさそう

142妊)|д゚):2019/11/19(火) 14:27:11 ID:ZNne8JUA
○1824+v6.1
https://ux.getuploader.com/ninnohito/download/466

改行絡みの制御コード(0x0A、0x0D)は通すように変更
他は呼び出しに関する注意文を表示させた上で、空文字を返すように変更(そのまま返すのはやはり好ましくないので)

143あなたの名前を入力してください:2019/11/19(火) 19:11:52 ID:DbdXuFec
UNICODE_CHECKED関数とか用意してそっちをその仕様で実装した方が
せっかくEmueraは過去のコードをエラー化しないように更新をしているのでこの更新で昔更新停止したゲームが動かなくなる(可能性がある)のはちょっともったいない気がする

144妊)|д゚):2019/11/19(火) 20:21:30 ID:ZNne8JUA
6.1は通常の使用法である限り後方互換性が保たれるので、その心配はご無用かと

145あなたの名前を入力してください:2019/11/19(火) 20:25:27 ID:1/KR1nus
>>142
ありがとうございます!

146あなたの名前を入力してください:2019/11/19(火) 23:43:07 ID:dKRp8RzQ
>>142に既存コード読ませたら豪快にVCのException投げて来ますけど・・・・w
で、これのせいで呼びだしてる関数が全滅してます

警告Lv2:関数\CHECK_CHARA.ERB:93行目:@GET_BETWEEN_STRING の解析中にエラー:System.NullReferenceException:オブジェクト参照がオブジェクト インスタンスに設定されていません。
@GET_BETWEEN_STRING(targetString,splitString,targetIndex)
場所 MinorShift.Emuera.GameData.Function.FunctionMethodCreator.UnicodeMethod.GetStrValue(ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameData.Function.FunctionMethod.GetReturnValue(ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameData.Function.FunctionMethodTerm.Restructure(ExpressionMediator exm)
場所 MinorShift.Emuera.GameProc.Function.ArgumentBuilder.checkArgumentType(InstructionLine line, ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameProc.Function.ArgumentParser.EXPRESSION_ArgumentBuilder.CreateArgument(InstructionLine line, ExpressionMediator exm)
場所 MinorShift.Emuera.GameProc.Function.ArgumentParser.SetArgumentTo(InstructionLine line)
場所 MinorShift.Emuera.GameProc.ErbLoader.setArgument(FunctionLabelLine label)
場所 MinorShift.Emuera.GameProc.ErbLoader.checkFunctionWithCatch(FunctionLabelLine label)

147妊)|д゚):2019/11/20(水) 01:18:47 ID:X3LAcd/.
ああ、事前解析だとそれ踏む可能性あるのか
ちっと直してこよう

148妊)|д゚):2019/11/20(水) 01:26:55 ID:X3LAcd/.
○1824+v6.2
https://ux.getuploader.com/ninnohito/download/467

>>146修正

149あなたの名前を入力してください:2019/11/20(水) 22:24:55 ID:WQsxQ0GM
>>148
Exceptionは消えました
対応お疲れ様です

150あなたの名前を入力してください:2019/12/26(木) 11:24:16 ID:Y1wTjEK2
デバッグウィンドウに関してですがこの窓をモードレスに出来ないでしょうか。
再起動時にデバッグウィンドウの背面に確認画面が来ると固まります。
あとメニューから再起動時した場合は位置を覚えておいてくれるとありがたいです。

151あなたの名前を入力してください:2020/01/08(水) 15:19:15 ID:6x84nRi6
キャラクタ変数を弄っていて思ったのですが
「キャラクタ変数の引数を補完しない」オプションがYESの時に
「代わりに最も大きい次元を補完する」が設定できると可読性もあがるのではないでしょうか。

152あなたの名前を入力してください:2020/01/14(火) 18:38:41 ID:cgd0sRHA
ちょっと質問なんですが、emueraってユーザー定義変数・定数の設定上限などはあるのでしょうか?
昨日、制作中のバリアントが急に膨大なエラーを吐き(全てユーザー定義変数・定数が存在しないというもの。つまりERHファイルにある変数定数が無効になってる)、その後調べた結果、正常動作するバージョンに#DIM CONSTで定義した定数を4つ追加したら、同様のエラー状態になりました

可読性を上げる為に#DIM CONSTでの定数の設定を多用しているのですが、これが原因でしょうか?

153妊)|д゚):2020/01/14(火) 23:47:30 ID:4PpsgZgU
>>152
そういう制限は具体的には存在しない、が回答になります

エラーログ等がない、なかなかのエスパー案件状態ゆえ、厳密なところはコメントしにくいですが
コードから予想される範囲ではメモリ確保に失敗して例外投げられた可能性あたりがありえるところでしょうか
内部処理的には結構メモリ使う処理になってるので、かなり環境依存が生じやすい部分ではあります

154あなたの名前を入力してください:2020/01/15(水) 00:43:08 ID:S1qQDhNU
>>153
ありがとうございます、そういう可能性もあるんですね
エラーログに関しては、ただひたすらに「解釈出来ない識別子です」が並んでるだけだったんで、あげなかったんです
era弄るのはメモリ4Gのおんぼろノート使ってるんですが、これが原因っぽいですね

155妊)|д゚):2020/01/15(水) 01:46:28 ID:a21T1jpE
>>154
当然ですが、示された情報では詳細に分析できない以上、上の予想が正しいという保証は一切ありません

ログに関しては保持行数の設定なんかもありますし、
再現に必要な最低限のコードだけの環境を作ることで、必要な情報だけを取り出すという手段もこの手の問題の解析ではよく取られる手段です

そこらへんを駆使して何かしらの情報が出てくれば、もう少し細かい分析ができるかと思います

156あなたの名前を入力してください:2020/01/15(水) 02:08:09 ID:S1qQDhNU
なるほど、分かりました
ぶっちゃけ、とあるERHファイルに#DIM CONST4行追加しただけでエラーが起きる様になるので
そこだけ抜き出すというより丸上げになってしまいますが、よろしいでしょうか?

157妊)|д゚):2020/01/15(水) 02:16:06 ID:a21T1jpE
>>156
大丈夫です

起こってる現象については>>154で示されたエラーからあたりがついてますので、
後は何がそれをトリガーしているかだけになります
(エラーログの有用性は基本こちらで判断するものなので、ユーザー側でそれを考える必要はありません)

158あなたの名前を入力してください:2020/01/15(水) 02:20:12 ID:ietAldtM
#DIM CONST hoge 負の整数
正数しか使えないモノに突っ込んでるとエスパー

159あなたの名前を入力してください:2020/01/15(水) 02:23:42 ID:S1qQDhNU
>>157
ありがとうございます
http://book-shelf-end.com/up/dwlink.cgi?eraRx0801.zip
エラー確認用丸上げと言う名前でロダに上げさせてもらいました
お手数ですがよろしくお願いします

160妊)|д゚):2020/01/15(水) 02:27:32 ID:a21T1jpE
>>159
確認ですが、追加した4行というのはどれでしょうか?

161あなたの名前を入力してください:2020/01/15(水) 02:30:01 ID:S1qQDhNU
それ分かる様にしてませんでしたね、すみません
\erb\shop\shop_horo\horo\horo_flag.erhの末尾の#DIM CONST 知識_触手 = 200以下の4行になります

162妊)|д゚):2020/01/15(水) 02:32:19 ID:a21T1jpE
>>161
了解です
であれば、単にERHファイルの構文エラーですね

最後に何故かいる謎の"]"がすべての原因です

163あなたの名前を入力してください:2020/01/15(水) 02:37:28 ID:S1qQDhNU
マジですね……
なんでこんなとこにんなもんが
アホみたいな理由で、お騒がせしました
わざわざありがとうございました、以後もうちょいよく見るようにします

164妊)|д゚):2020/01/15(水) 02:39:46 ID:a21T1jpE
で、本来この類のエラーがERBで見つかったら、その時点でエラーとして処理打ち切らないといけないのに、
それができてないというEmueraのバグが見つかったので、これは頑張って直します、はい

165妊)|д゚):2020/01/15(水) 03:07:19 ID:a21T1jpE
○1824+v7
https://ux.getuploader.com/ninnohito/download/469

ERHで構文エラーや解析エラーが起きたときに正しくハンドリングできておらず
エラー状態でERBを処理しに行ってgdgdになるのを修正

166Яeverse★:<売却済み>
<売却済み>

167妊)|д゚):2020/01/26(日) 05:01:25 ID:Zi8BAYas
ちょっくらテスト版(実行ファイルのみ)
https://ux.getuploader.com/ninnohito/download/470

>>105に対応したつもりになってみたバージョン
完全にテスト版なので、エラー等が出ても泣かない、というか出たら報告してくれないとこっちが泣く

168あなたの名前を入力してください:2020/02/08(土) 14:11:22 ID:HLt4JemE
>>167をベースに、式中関数の存在判定を行う関数を追加するパッチを作りました。
http://book-shelf-end.com/up/dwlink.cgi?eraRx0881.zip

追加した関数の仕様や使用イメージは、同梱のreadme.txtに含まれています。
あと権利放棄しますので、取り込んでいただけるとうれしいです。
(今作っているバリアントで、これがないためにいろいろと困ってるので)

169あなたの名前を入力してください:2020/03/11(水) 16:58:57 ID:Vzaezwh6
emuera最新版(Emuera1824+v7)で変な挙動してたので報告します。

eramegatenプレイ中、emueraの再起動ボタンを押すと、再起動せずにそのまま終了してしまいます。
最初はおま環かと思っていたんですが、自分以外にも同じ症状が出ていたので、とりあえずここに記しておきます。

eramegaten側は私家版パッチRev.120〜Rev.127で確認。
私家版パッチRev.114では異常なし。
(Rev.115〜119は手元に保存してなかったのでテストできず)

なお、異常が出たRevでも、画像ファイルを全て抜いたら通常通り再起動が掛かりました。

よろしくご査収くださいませ。

170妊)|д゚):2020/03/11(水) 23:18:30 ID:TxMr1e6U
>>169
うーん、原因がぱっと見では絞りきれないだけに面倒そう
ちなみに>>167のテスト版だとどうなります?

171あなたの名前を入力してください:2020/03/11(水) 23:40:01 ID:v5fnQlsI
>>170
だめでした、画像を全部取っ払ったら動くところも含めて同じ挙動を致しまする……

172妊)|д゚):2020/03/11(水) 23:48:07 ID:TxMr1e6U
>>171
うーむ、となるとすぐに原因が思いつかないところですが、
少しずつ画像ファイル削っていったら、どっかで問題なくなるという予感がするだけに
そこらへんの線から予想してくしかないか…

173妊)|д゚):2020/03/12(木) 01:53:13 ID:O9uvQN36
○1824+v8
https://ux.getuploader.com/ninnohito/download/471

タイトルに戻る・再起動時の画像データの内部ハンドリングの修正関係の問題(>>105>>169)修正できたはず

>>168に関しては自分が可否を判断する範囲ではないので、私家版段階での取り込みはいたしません

174あなたの名前を入力してください:2020/03/12(木) 12:15:38 ID:yb6HnC1E
>>173
お早い対応ありがとうございます!
おかげさまで正常に再起動が掛かりました、大変助かりました。

175Яeverse★:<売却済み>
<売却済み>

176あなたの名前を入力してください:2020/03/26(木) 22:08:51 ID:I5Ddt6Zs
Emuera1824+v8+g1
http://book-shelf-end.com/up/dwlink.cgi?eraRx0998.7z
勝手改造版のEmueraです。
通常のEmueraでは描画インターフェースがGRAPHICSの場合に、等幅フォントでも派手にズレることがあります。
Emuera1824+v8+g1ではGRAPHICSでMS ゴシックやMS 明朝を使用した場合のズレが少なくなっているはずです。少しズレることもあります。
また、WindowsXPでも起動可能です。動作保証はありません。

177あなたの名前を入力してください:2020/04/12(日) 20:44:06 ID:cxiAwFms
OSDNの誤字報告ってここでいいのかな
命令の表示操作・フォント操作・表示仕様参照のとこなんだけど


SETCOLOR <R>, <G>, <B>
SETCOLOR <RGB>
RESETCOLOR
文字色を指定した色に変更、適用はRESETCOLORが呼ばれるまで。
指定方法はRGB形式になります
SETCOLORで指定した色はRESETCOLORでリセットすることができます
現在の背景色はGETCOLORで、デフォルトの背景色はGETDEFCOLORで取得することができます。
1.731以降ではSETCOLORに0xRRGGBB形式で指定できるようになりました。


ってなっててGETCOLORとGETDEFCOLORで背景色が取れるってなっちゃってる
文字色の間違いだよね?

178妊)|д゚):2020/04/18(土) 14:19:27 ID:Dd1Hsli6
フルパス表示でピチューンした勇者がいたと聞いたので

○1824+v8.1
https://ux.getuploader.com/ninnohito/download/472

エラーログ出力時のファイル名表示をフルパスでないように変更

179あなたの名前を入力してください:2020/04/18(土) 17:46:25 ID:BS/8m7YY
これで世界が平和になる

180あなたの名前を入力してください:2020/04/18(土) 18:05:09 ID:oB6RBaD6
如月 千歳さんは・・・・嫌な、事件だったね・・・・w

181妊)|д゚):2020/04/21(火) 02:58:33 ID:mYZUk9Pc
告知兼自分用メモ兼Emuの人出てこいや(゚Д゚)ゴルァ!!メモ

画像回りで挙動が怪しいところがあるようで、
何かしらの要因でサイレントにクラッシュするケースを確認しております

手元では、eraMegatem 母ちゃんでRPGステータス画面のキャラ画像表示ONでダンジョン探索中に発生を確認
画像表示OFFでは全く起こらないので、画像関連の取り扱いに何かしら原因があるというのはほぼ確実です

なお、発生条件は不明瞭というか、サイレントに落ちてしまうのでどこが原因か全くわからねぇよ状態
(イベントログ追いかけてやっと.Net Flamework側でハンドルされない例外投げられたのを確認したレベル)

182妊)|д゚):2020/04/22(水) 05:41:45 ID:sOjfeKtQ
一応もう少し詳細に調べてみましたが、これ思った以上に単純じゃないかも
一応画像なしでも1回だけ同じ現象が起こりました(ただし画像ありに比べ遥かにレア)

さて、どこからあたりをつけていったものやら

183妊)|д゚):2020/04/23(木) 13:38:08 ID:ovhglBC2
描画の際に処理が詰まってそのまま落ちる感じってのが共通してるから、
何かしらリソース競合でも起こしてるんじゃなかろうか感

っても、競合するような処理あったっけかなぁ…

184あなたの名前を入力してください:2020/04/24(金) 20:58:19 ID:BSM4OiKE
超乙

185あなたの名前を入力してください:2020/04/24(金) 21:53:51 ID:pcyo5Sus
どっかで描画用のハンドル上書きしてるのでは?

186妊)|д゚):2020/04/27(月) 22:43:07 ID:MsFVIMhQ
○1824+v9
https://ux.getuploader.com/ninnohito/download/473

ARRAYMSORTがint32の範囲外の値を扱えなかったのを修正

187妊)|д゚):2020/05/05(火) 07:41:29 ID:mCaYU0Go
ちょっと話に出てたので、Emueraのフォント回りの初期設定について

サイズと一行の高さをずらしているのは見た目の問題もありますが、意図的な部分もあります
MSゴシックの場合だとサイズと高さを一致させても『たまたま』うまく収まってくれてますが、
これはMSゴシックがそういうフォントだからというだけで、
実はフォントの高さはフォントサイズでは決まらないという楽しい仕様があります
なので、サイズ13pxでも高さが13px以上というフォントってのが普通に存在しています
そういうフォントでは意図的に高さを大きくにとらないと欠ける(描画被り)のです

以上を踏まえてデフォルトではなるべくどの環境でも安定して表示できるような設定としての意味もあって現状を維持しています
(これでも全然足りないフォントも実のところありますが)

これについてはフォントそのものの特性から来るものでプログラム的に手の打ちようがないですので
設定をいじってフォントの描画が欠けて表示されるとかが起こっても自己責任ということでお願いします

188あなたの名前を入力してください:2020/05/05(火) 10:02:53 ID:F1zf.s4Q
ふぉんとうに大変やね

189あなたの名前を入力してください:2020/05/06(水) 13:56:17 ID:WRu2xm.Q
[反発刻印]

190あなたの名前を入力してください:2020/05/06(水) 14:50:27 ID:uiCYCAFM
【崩壊】

191average:2020/05/06(水) 22:01:55 ID:0MYNxND6
バグ報告です。
#DIM で初期値を代入すると初回呼び出し時しか代入されない不具合が確認されました。
ユーザー定義変数を使用した場合、同じ関数を2回呼び出すと、2回目以降は初期値が格納されず、前回関数実行時の変数が格納されたままになってしまいます。

http://book-shelf-end.com/up/dwlink.cgi?eraRx1125.zip

192あなたの名前を入力してください:2020/05/06(水) 22:13:23 ID:IS2joLTo
仕様だと思ってたけど違うの
ダイナミックにしたら多分考えてる挙動になるはず

193average:2020/05/06(水) 22:14:12 ID:0MYNxND6
>>192
仕様だったみたいです、ありがとうございます
https://ja.osdn.net/projects/emuera/wiki/UserVars

194あなたの名前を入力してください:2020/05/07(木) 00:48:33 ID:M2xQJSaY
この仕様有効活用してるケース意外と多い(特にライブラリ系)

195あなたの名前を入力してください:2020/05/10(日) 17:48:41 ID:xXsw53IY
特別なコード呼び出しを利用せずシングルトンを実装する手法だからね…
割と闇技法だけど

196妊)|д゚):2020/05/11(月) 01:27:53 ID:SKORQ4Cc
staticを前提とする言語自体特殊過ぎるからねぇ…

197あなたの名前を入力してください:2020/05/12(火) 07:12:21 ID:X6cgLrfM
erabasicの関数自体が、ほかの言語を基準でstaticを使わず考えると、(最低でもLOCALが含まれる)「ローカル変数」というメンバとメソッドを1つを持ったシングルトンみたいな感じ
なので、引数で"getFoo,"setBar"とか与えてシングルトンオブジェクトっぽい運用がeraでできてしまう闇技法

198あなたの名前を入力してください:2020/05/12(火) 07:47:21 ID:H66NOu5Y
ERBファイルの文字コードが複数ある場合(SJIS産ERBとウニコード産ERBがごっちゃごちゃになってる場合)はどうなるんじゃろ?

199あなたの名前を入力してください:2020/05/12(火) 08:22:42 ID:Clqrtu5s
>>198
ちゃんと読んでくれるぞ

200あなたの名前を入力してください:2020/05/12(火) 08:28:15 ID:H66NOu5Y
>>199
㌧㌧

201あなたの名前を入力してください:2020/05/12(火) 09:54:46 ID:X6cgLrfM
(Emuera内部挙動的な話として そもそも、EmueraではすべてのファイルをSJIS指定で読もうとしているが、C#ひいては.Netの読み込みの仕様としてBOMがついている場合Unicodeと判定して自動でファイルを読み込む という話を聞いたことがある)

202あなたの名前を入力してください:2020/05/26(火) 11:42:27 ID:7Vg4qX7Y
ERHでキャラクター変数を多次元で定義したんだが
この場合ってVARSETは使えないんだろうか

203がめら ◆yRq2AQRMpQ:2020/06/04(木) 09:15:19 ID:.wbsCb66
http://book-shelf-end.com/up/dwlink.cgi?eraRx1214.7z

EmueraでWebP画像を読み込めるようにしました。

・PNGのようなロスレス(ファイルによってはPNGより大きくなることもあるが概ね削減)
・ロスレス風の高画質非可逆圧縮
・JPEGみたいな感じになるけど透過ファイルも対応した非可逆圧縮

の3種に対応した凄いコーデックです。
Readmeにも書きましたが、eraTW4.750のresources直下のPNGでテストした所

オリジナルPNG:28.3MB
非可逆:15.85MB
ロスレス風(画質重視):17.2MB
ロスレス風(容量重視):14.2MB
ロスレス:25.4MB

になったため、既存バリアントのサイズをかなり縮める事が出来ます。
src1824.7zの中のlicense.txtにWebPライブラリのMITライセンスを追記しています。

204がめら ◆yRq2AQRMpQ:2020/06/06(土) 01:52:53 ID:IuQxOpnI
>>203
すみません、同梱したexeに問題があって動かないケースがあったようなのでビルド設定を見直して再うpしました
http://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1590129716/833

http://book-shelf-end.com/up/dwlink.cgi?eraRx1220.7z

205あなたの名前を入力してください:2020/06/19(金) 16:53:42 ID:9ufmwQhs
>>204
URLこっちじゃないですか?
http://book-shelf-end.com/up/dwlink.cgi?eraRx1221.7z

206あなたの名前を入力してください:2020/07/09(木) 18:40:17 ID:UDG9w6Pc
ちょっと疑問に思ったんで質問ですが
関数内でlocalとlocalsのサイズ制限宣言してない場合
emuera起動時に関数毎に確保されるlocalとlocalsのメモリ量って
デフォルト(又はvarなんとかsize.csvで定義されている)値分確保される認識でいいです?

207あなたの名前を入力してください:2020/07/10(金) 00:12:30 ID:zdTBhvQM
https://ja.osdn.net/projects/emuera/wiki/exvar#h5-LOCAL
LOCALが1000個 LOCALSが100個で固定のようです

208あなたの名前を入力してください:2020/07/10(金) 01:00:43 ID:qN3YlIRc
>>206
確保サイズはその通りだと思うけど、
確保タイミングはEmuera起動時じゃなくて関数の初回呼び出し時らしいぞ
https://jbbs.shitaraba.net/bbs/read.cgi/otaku/12839/1290444111/564

209あなたの名前を入力してください:2020/07/10(金) 05:39:08 ID:XZT5cKc.
>>208
トントン

210あなたの名前を入力してください:2020/07/10(金) 22:53:16 ID:qN3YlIRc
適当な関数にバカでかいユーザー定義プライベート変数を生やして試してみたら、
なんか起動直後にメモリ確保されてるように見えて、ユーザー定義変数は動作が別とかかなーとか思ったが
タイトル冒頭でRESETDATA呼んでるのが原因だったというオチ。
RESETDATAはローカル変数も含めて全初期化するんだから当然の動作であった

211あなたの名前を入力してください:2020/07/16(木) 00:17:24 ID:tHD0yyO.
最近のバリアントは ユーザー関数の数が数千数万行く上、キャラ数も多いので、その手のでは
RESETDATAや(C)VARSET操作の時、初期値の代入じゃなくて RemoveAll() とか Clear() とか、積極的にデータを 破棄 しに行ってもいい気がします
ぬるりが怖いグラフィクス系だけど、生 System.Forms や System.Drawing系と接する設計にしちゃってる現状は構造的に辛い様に思います。
ImageMagicやらその他の、あーゆーグラフィックス操作ライブラリをレイヤーとして挟めないもんでしょうか。
(1個のバイナリで済まなくなるのは嫌だけど…)

212あなたの名前を入力してください:2020/07/18(土) 22:35:09 ID:HP3Q0OR2
それ自体は否定しないけど、既存動作を崩し、特に今までのAAや図、マップが崩れるようだったらみんな設定で避けるようになるだけなきもする >レイヤーとして挟む

213あなたの名前を入力してください:2020/07/19(日) 11:42:20 ID:nmkU9XFc
ああ確かに、別ライブラリを介したときに、調整しづらい僅かな描画ずれが起こる可能性は否定でき無いか (デコード結果がアクセラレーションON/OFFで変わるやつもあるし)
最近のちょっぴり賢くなったコンパイラと .net とかインメモリDBとかに任せちゃえば、メンテとかしやすくなるかなと思った次第

そういえば、テキスト描画位置の絶対指定命令って無いのよね。PRINTC系も太字などでずれるけど、今更変えられないか

214あなたの名前を入力してください:2020/07/20(月) 00:55:37 ID:ZzcYK3Vo
まずは条件替えながらヒープのスナップショットを撮るところから始めてみては?

215あなたの名前を入力してください:2020/07/31(金) 19:54:46 ID:7CBQO/NE
Ubuntuでeraやりたかったんだけど
wineというかPlayOnLinuxの使い方が全然分からんので
Monoで動かしたよ

そのまんまだと環境の違いで色々動かなかったりしたけど
多少C#分かるので色々修正してなんとか動くようにした
まだ挙動が怪しいけど

Linuxで動かしてる人はやっぱりwineでやってるのかな?
互換性とかどんな感じ?

216あなたの名前を入力してください:2020/07/31(金) 23:16:01 ID:VhzAfzec
android用だけどuEmueraとかじゃね?
メンテされてるか知らんけど

217あなたの名前を入力してください:2020/07/31(金) 23:22:00 ID:7CBQO/NE
あー存在は把握してたけどAndroidのみだと思ってた
Linux向けにビルドすればいけるのかな?

最終コミットが4月だから
完全に死んでるわけじゃなさそうだが

218あなたの名前を入力してください:2020/08/06(木) 21:42:44 ID:nzkhPgIo
>>204
resourcesのCSVに書けばWebPも読めるけど、GCREATEFROMFILE命令ではWebPに対応していない感じでしょうか?
ちょっとしたお遊びのために試してみると、GCREATEFROMFILEでPNGは読めましたがWebPは失敗しました。
また、普通やらないと思いますがresourcesのCSVに書く方式でPNG画像のファイル名を"顔.WEBP.PNG"のようにするとPNGなのにWebPとして読もうとして失敗?

219あなたの名前を入力してください:2020/08/08(土) 22:35:38 ID:NMBSTzJ6
MonoでEmueraだけど
海外で開発されてる互換フレームワークだけあって
IMEや日本語周りの実装が甘くて
どうしても色々不具合出るね

とりあえず大抵のバリアントは動くようになったと思うけど
これ以上はC#詳しくないと厳しそうだし
限度もありそうだから諦めてwineにするかな

ソース欲しい人いる?

220あなたの名前を入力してください:2020/08/09(日) 18:22:23 ID:vikSb9QY
EmueraのLinuxでの動作回り
Emueraの描画に中でWindows Forms周りさわってるからそこらへんでどうしてもWineでもMonoでも動作怪しいところが出てくると聞いている

現状、.Net CoreのほうでUIライブラリ提供してくれる様子もないからLinuxやMacでのEmueraはきつそう

221あなたの名前を入力してください:2020/08/09(日) 21:02:49 ID:Kvga6Irk
ありゃwineでも限度があるのか
UI周りをマルチプラットフォーム対応のやつに差し替えればいけるかもしれないけど
そこまでする気もないし諦めてwindowsでやるか
情報ありがとう

222あなたの名前を入力してください:2020/08/09(日) 21:08:34 ID:5EatEALI
あたいはmacosの上でParalles Desktopで仮想化したWIndows10を
動かして楽しんでる

223あなたの名前を入力してください:2020/08/09(日) 22:57:08 ID:ZT8/KQwE
つVMware

224あなたの名前を入力してください:2020/08/09(日) 23:18:24 ID:RmTtq54g
.NET MAUIでワンチャンかね
フォントが合わなくてガタる問題に行き着きそうな気はするが…

225あなたの名前を入力してください:2020/08/10(月) 00:36:08 ID:A2pb3acA
linux移植するならUI用のを根本的に変えるくらいまであるかも
gtksharpに移植かなぁ?

226あなたの名前を入力してください:2020/08/10(月) 00:49:37 ID:I4RMuz3A
Winetricksで.NET Frameworkと適当なフォントを入れたら割と普通に動いてた気がするんだがなあ

227あなたの名前を入力してください:2020/08/10(月) 00:54:08 ID:Zx19iUBs
Wineで動いたとしてもまあ本筋ではないよね
本来ならネイティブで動くのが理想ではあるけど、Emuera根本からWindowsべったりな実装だから…

228あなたの名前を入力してください:2020/08/10(月) 02:42:55 ID:U1SmGdyc
普通に動いてるし、すごく素直な方だと思うけどね

229あなたの名前を入力してください:2020/08/10(月) 08:56:08 ID:YpCtdSPQ
個人的には今.Net Coreをマルチプラットフォームって頑張って売りに出してるんだからマルチプラットフォームなGUIライブラリも欲しいなーってMSに期待したいところ

だけど、CUI専用として割り切って作ってる様子があるんだよなぁ…

230あなたの名前を入力してください:2020/08/10(月) 09:01:20 ID:9gs.rrQg
そもそもMS自身のGUIライブラリもWPFとかUWPとかあってどれが本命なのやら

231あなたの名前を入力してください:2020/08/10(月) 15:22:16 ID:NTb0LS6M
https://docs.microsoft.com/ja-jp/windows/apps/desktop/choose-your-platform
いちおうMS的に現行本命はUWPっぽい口ぶりではある
プラットフォーム全体の冗長性の面から従来の物もサポートしているという話で

232あなたの名前を入力してください:2020/08/10(月) 15:32:15 ID:5W9vaEIs
こんな動きも
Microsoft、Win32とUWPの2つのAPIを再統合する「Project Reunion」
〜WinUI 3に統合され、開発者は新しいアプリケーションを開発可能。EdgeやTeamsも機能強化
ttps://pc.watch.impress.co.jp/docs/news/1253193.html

233あなたの名前を入力してください:2020/08/10(月) 18:04:03 ID:RX6mBz4k
>>229
.NET 5で全部統合してマルチプラットフォーム展開(Linux, macOS, and Windows)
その後、.NET 6に向けてマルチプラットフォームGUIは.NET MAUIに。てのがMSの展望ぽいね

と、調べ直してて気づいたんだけどマウイーでもLinuxはCommunityベースなのか…
InputMethod対応まで視野に入れるとGTKの手を借りたほうがはやいかも。つらたん

234あなたの名前を入力してください:2020/08/10(月) 18:51:22 ID:zGAposPQ
マルチプラットフォーム考えるなら
C#から離れて互換エンジン作るのもアリかも

PythonとかJavaScriptはもうあったよね

235あなたの名前を入力してください:2020/08/12(水) 10:14:04 ID:VZUGVNns
互換エンジンは言うほど簡単じゃないというか
そもそもC#のままでもUIに限らない一部機能がWindows Formsに接着してた気が…

236あなたの名前を入力してください:2020/08/12(水) 10:24:06 ID:5I2/PYBk
マルチプラットフォームにするならC#離れるより、フロントエンドをXamarinで作り直す方が現実的な気はするがね

237あなたの名前を入力してください:2020/08/12(水) 10:30:31 ID:VZUGVNns
どうせマルチプラットフォームにするならERBも捨てて「ゲームエンジン部分」「UI部分」「バリアント独自の部分」に完璧に切り分けてライブラリ化したい みたいな欲求も絶対出てくるし…

238あなたの名前を入力してください:2020/08/15(土) 20:32:22 ID:tcnadA8o
てかuEmueraがUnityで作られてるんだから、たぶんUnityでビルドすればLinuxでもMacでもAndroidでもiOSでもできるとは思う

239あなたの名前を入力してください:2020/10/11(日) 21:23:47 ID:rcjQyaEM
文字列変数に対して空文字列でFINDELEMENTしたときの挙動がおかしくねぇ?
正規表現になってるのが原因かなと"^$"で検索しても、正しく見つかったり見つからなかったりする

240妊)|д゚):2020/10/18(日) 03:45:10 ID:oO4.A2kM
空文字列検索は事実上結果未定義に近い実装になってますからねぇ
どうすっかねぇ

241あなたの名前を入力してください:2020/10/18(日) 18:05:40 ID:r4slU2zk
>>240
単純にいくなら、正規表現パターンなら全ての行に一致、完全一致パターンなら空文字列に一致かなと
ただまあ確かに考え方難しいですねぇ

242あなたの名前を入力してください:2020/10/21(水) 00:41:05 ID:hY5LkmEg
空文字列を渡す&flagが0の場合は部分一致でOKなので検索対象の先頭要素に一致する
空文字列を渡す&flagが非0の場合は完全一致なので検索対象の空文字列要素に一致する
になっているように見えるし、これで良いのでは?
正規表現 "^$" で部分一致の場合の挙動がどうあるべきかはわかりません。.NETの挙動にお任せするのが楽?

243あなたの名前を入力してください:2020/10/21(水) 09:18:19 ID:BG/Ma77g
>>242
それがね。場合によっては全部空文字列の配列でも一切ヒットしないのよ
SAVEDATAつけたユーザー定義変数を作って、
(1)一度クリアしてから検索
(2) (1)の状態でセーブしてEmuera再起動後、そのデータをロードしてから検索

すると、(1)はちゃんと検索できるけど(2)は一切ヒットしなかったりする
(2)の状態でも、配列の中身見るとちゃんと空文字列だったりする
もうイミフ

244あなたの名前を入力してください:2020/10/21(水) 09:39:30 ID:FIydrfKU
form使うprintとform使わないprintって何かメモリ消費的に差はありますか?

245あなたの名前を入力してください:2020/10/21(水) 23:04:47 ID:hY5LkmEg
>>243
もしかして、古いバージョンのEmueraを使ってたりしない?
1.823の更新履歴には「FINDELEMENT関数に空文字列とマッチするパターンを渡した場合の不具合を修正」が含まれてる。
うちの環境でも、「Emuera1824+v9.exeでは検索に引っかかるけどEmuera1821.exeでは検索に引っかからないパターン」は確認できた。

246あなたの名前を入力してください:2020/10/21(水) 23:31:27 ID:BG/Ma77g
>>245
あー、なるほど、それか。
確かに1821使ってるわ

自前のバリアントじゃないし、どうするかな・・・・

247あなたの名前を入力してください:2020/10/21(水) 23:51:18 ID:hY5LkmEg
ロードしてから

; S_ARRAY は #DIMS SAVEDATA で定義した配列変数
FOR LOCAL, 0, VARSIZE("S_ARRAY")
SIF S_ARRAY:LOCAL == ""
S_ARRAY:LOCAL '= ""
NEXT

みたいなので回避できるかもしれないけど美しくはない

248あなたの名前を入力してください:2020/10/28(水) 01:43:20 ID:vnE5lUrA
FLAG.CSVで
  0,EMU
  1,ERA
と定義し、@SYSTEM_TITLEで
  @SYSTEM_TITLE
  FLAG:EMU = 1
  FLAG:ERA = 1
  CALL TEST(FLAG:0)
  CALL TEST(FLAG:ERA)
  PRINTFORMW FLAG:EMU={FLAG:EMU} FLAG:ERA={FLAG:ERA}
  @TEST(VAR)
  #DIM REF VAR
  VAR = 123
として実行するとFLAG:EMUとFLAG:ERAの値が一致しないんだけど仕様なのかな

249あなたの名前を入力してください:2020/10/28(水) 11:19:27 ID:6M7VEg/Y
仕様の勘違い REFは配列をまるまる渡すのでFLAG:0にしてもFLAG:ERAにしてもFLAG配列全部が引き渡されてる
つまり、VAR=123はVARをFLAGに置き換えるのでFLAG=123、FLAG:0=123と同じ意味になる

250あなたの名前を入力してください:2020/10/28(水) 16:17:41 ID:6M7VEg/Y
これと同じように配列の指定した場所に何らかの処理をしたかったらきちんと
@TEST(VAR,INDEX)
#DIM REF VAR,0
#DIM INDEX
VAR:INDEX = 123

みたいにしないとできないから気を付けよう

251あなたの名前を入力してください:2020/10/28(水) 22:37:23 ID:3j113bGU
その手の処理をREFで組むの自体がどうかって気がするけどな

252妊)|д゚):2020/11/10(火) 02:07:41 ID:pjIUGIH.
大型のバリアントも多くなってきたし
いい加減メモリ使用量周りについても考えてかんとねぇ

さすがにERB読みこむだけでGB超えるとか平然と起こるのはいただけない

253あなたの名前を入力してください:2020/12/07(月) 22:44:53 ID:DvXOx1tU
文字列式中と書式付文字列(FORM構文)ってera検定に使えるぐらいややこしい
文字変数で+=とか使うたびにwiki見直してるんだけど
なんかいい覚え方ない?

254あなたの名前を入力してください:2020/12/07(月) 23:51:24 ID:rVifxp4M
いっそ、基本文字列式しか使わないとか()
PRINTSとか使ってれば解決 PRINTFORMSは地獄だから使わないでお願い

255妊)|д゚):2021/01/07(木) 01:58:18 ID:j4TZtfRs
Emuの人が、管理する余力がないと言い出しましたので、それについてもろもろ

まず、当人曰く
・現状コードを管理する余裕がない
・何かしたいなら勝手にフォークしてやってくれ
ということ

で、とりあえずの方向性として
・私家改造はバグ修正に専念、事実上のコードの基盤とする
・新しい機能等欲しい人は自分でフォークしてやってくださいな
・自分はメモリ消費量削減などの方向性を探って別にごねごねやるかも
となります

256あなたの名前を入力してください:2021/01/07(木) 10:10:14 ID:x.C7E9T6
eratenメモリたくさん問題もあるからそれは素直にうれしい

257好好 ◆hcbh0U7bsY:2021/01/12(火) 06:59:57 ID:kyxe9Lfc
>>255
妊)|д゚) さん
いつも開発お疲れ様です。

手前のバリアントにて、
「Emuera1824+v9.exe」をフォークし、
追加を行ったものを使用したいのですが、
その際には、それが「Emuera1824+v9.exe」を元に追加を行った物だという旨を、
readme.txt等に記載すれば問題はございませんでしょうか?

----
追加は、

コマンド「INPUTMOUSEKEY」を使用した際、
結果の6番目[RESULT:5]に、
変数「selectingButton.Input」の値が返される

といった内容です。

258妊)|д゚):2021/01/13(水) 03:20:35 ID:vos4ugZg
とりあえず、これをベースのバージョンとして公開します

○1824+v10
https://ux.getuploader.com/ninnohito/download/476

・1823+v1のツールチップ周りの変更が取り込まれてなかったのを再追加
・VARSETが特定条件でアホな挙動するあまりにしょうもない書き間違えを修正

>>257
私家改造版もEmueraのライセンスにそのまま準じますので、
Emueraのライセンスファイルを添付の上、フォーク元であることを書いていただければ
フォークはご自由に行っていただいて大丈夫です。

259あなたの名前を入力してください:2021/02/17(水) 21:03:29 ID:zsKf9xQ6
>>204
WebP対応のEmueraはeraTWで起動時にエラーが出たり出なかったりする現象が確認されてるけどライブラリ部分を少し修正してみたらエラー出なくなったような気がします
http://book-shelf-end.com/up/dwlink.cgi?eraRx2100.7z

260あなたの名前を入力してください:2021/02/18(木) 21:19:46 ID:nmOlxT6I
>>259
size_t の UIntPtr への割り当て漏れがまだ数か所あります
エンコ系は(まだ)使ってなさそうだからいいと思いますけど
(WebPDecodeBGRInto / WebPDecodeBGRAInto / WebPEncodeBGR / WebPEncodeBGRA / WebPEncodeLosslessBGR / WebPEncodeLosslessBGRA)

261あなたの名前を入力してください:2021/02/18(木) 22:24:23 ID:HDhFN9rM
>>260
64bit環境でsize_tをintで受け取っても、上位32bitが捨てられて次の1bitが符号扱いになるだけなのでほとんどの場所では実害無いのかなと思います
画像のファイルサイズやデータサイズ等が1個でギガバイト級になることは考えにくい
でもテスト版ならともかく正式版では修正したほうがいいですね
(自分が正式版を作るとは言ってない)

>>259で修正した場所はサイズではなくアドレスを返している、そして受け取って使用する場所では値がゼロか非ゼロかだけをチェックしていたのでアドレス上位32bitが非ゼロで下位32bitがゼロの場合に判定を間違えていたのだと思います

262260:2021/02/19(金) 02:24:58 ID:fM61t2NQ
>>261 259直して頂いたのありがたう

気にしているのは cdecl 呼び出し=スタック経由だから、次のパラメータが正しく渡せなくなる *かもしれない* 事が問題かなと
パディングで助かってて動いてるけど、運が悪いければ (メモリー境界にあたるとかコンテキストスイッチで) おちるかもって感じ

神経質な人は厳密に制御するために MarshalAsAttributes で逐一やってるみたい
あと、IOExeption やらでのリトライ処理の方で、更に落ちにくくなりますよ

263259:2021/02/20(土) 00:14:45 ID:3.AoG0bI
>>260 のあたりも全部ひっくるめて元のGitHubのリポジトリで適切なコードに修正してくれたらそれを持って来るだけでいいんだけどあんまり期待はできないかな……)
(自分でforkして修正するほどの気力は無いなぁ……)
(そもそも >>259 の問題に対して誰も直接ツッコミ入れてなかったように見えるのがちょっとアレなので、別のライブラリを探してみてもいいのかなぁ……)
(x86とx64のWindows限定だったらいいんだろうけど、厳密にはsize_tをUIntPtrに置き換えできると言い切れるものではない……? stackoverflow.com/questions/32906774/what-is-equal-to-the-c-size-t-in-c-sharp )

264あなたの名前を入力してください:2021/02/21(日) 10:37:36 ID:OxB2x.cg
巨大バリアントだとMOD管理がしんどいからキーバリューデータベースが欲しいかも

・KVPUT("KEY", "VALUE") ;値に空文字列なら内部でremove
・KVGET("KEY", "初期値") ;初期値は省略可能

これひとつで#DIMS SAVEDATA .KVD, 10000, 2 みたいなのを内部で保存してくれるイメージ
内部が.NETならDictionary使ってハッシュでキー検索できるしERHでMODごとに分けずに一元管理してもいけそう

265あなたの名前を入力してください:2021/02/22(月) 00:27:07 ID:Qlo5ysxs
汎用関数・ライブラリ総合スレに「文字列を使った連想配列もどき&可変長配列もどき」はあったね
当時のファイルそのものは現在ダウンロードできないけどtohoKに取り込まれてるのかな(使われてないはずだけど)

266あなたの名前を入力してください:2021/02/22(月) 02:31:54 ID:fkJWcDpk
eraTWのERB\ステータス表示関連\CN_GRAPHICに入ってるやつかな
_Dictionary.ERB/ERHと_List.ERB/ERH
CC0で再配布しても大丈夫なやつ
とはいえERBレベルでなくEmuera本体で実装してあればそっちのほうがスマートではある

267妊)|д゚):2021/02/23(火) 04:56:20 ID:QzucMbmY
○1824+v11
https://ux.getuploader.com/ninnohito/download/477

v10で取り込んだツールチップ関係の変更をtweak

268260:2021/03/01(月) 21:58:20 ID:FD1YjcrA
昔挫折した WebP関連バグの修正を発掘して、マージしてみました
>>267 の v11にリベースしました
>>259 に便乗して、さらにいくつかの Dll の呼び出しをより C 側に近づけますた
MarshalAs の駆使は読みにくいから止めた…UIntPtr も Core化したいならやめろって言われるけど…
・webpラッパー内の専用例外処理: 今まで全部まとめてExceptionだったので、Webp専用のExceptionクラスを作った
・リトライ : 今はハードコーディングで各ファイル3回。うーん
・バグ修正: 今まではファイルパスにwebpって入っていたらwebpファイル扱いされた!
・Creator.Method.cs の スプライト用のGCREATE(filename) っぽいとこに WebP.Load() を呼ぶように
ただしここは未テスト。スプライト関係のテストERBが書けないんだ…
・(過去の残骸) 本体のパス文字列参照を IO.Path.DirectorySeparatorChar / IO.Path.AltDirectorySeparatorChar から取るように書き換え
Worktreeに混じっちゃった…
MONOユーザ注意! (Config\Config.cs / Config\ConfigData.cs / ContentAppContents.cs / Program.cs / Sys.cs )

http://book-shelf-end.com/up/dwlink.cgi?eraRx2170.7z
※Windows Defenderではチェック済みですが、VirusTotal では引っかかっています※
※独自ビルドしたEmueraのほか、libwebp_x86.dll/libwebp_x64.dll を同梱してます
 ソース/速度上特に他で配布されているものと変わりないです (NMAKEでビルド、/favor:blend)

/// 今、eramaker/Emuera系を Github に上げたくはないっすね。master/slave の語を消すくらいBLMが怖いから…

269259:2021/03/03(水) 00:06:17 ID:o8xDnWpc
>>268
おお、乙です
GCREATEFROMFILEでWebPの画像も読めるようになったみたいですね
(個人的には、「自分が使うだけなら元ソースの複数箇所の new Bitmap(filepath) のあたりにそれぞれWebPかどうかで処理を振り分けるコードを追加するだけで済ませるけど、ソース公開するならImageWrapperとかいう名前の何かを用意して振り分けコードは1か所だけ記述するほうがいいのかな」ぐらいのことをなんとなく考えてました。でも何もやってません)

270あなたの名前を入力してください:2021/03/06(土) 20:38:09 ID:Qizk40rY
>>268
Program.cs 56行目に + が混入してて、DebugDirが変なことになってます

ChromeやWindowsセキュリティがうるさいから自分でビルドしてみようかとも思ったけど気が進まない
VSBuildTools入れればVisualStudio入れなくてもビルドできるんですかね?

271あなたの名前を入力してください:2021/03/06(土) 22:55:05 ID:b1rfKVhA
.Net Framework入ってれば
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
以下にコンパイラ入ってるしできる、と思ったけど、これC# 5のコンパイラなので
現在のEmueraはC# 6で追加された構文使ってるからコンパイルできないな
大人しくVS持ってくるのが手っ取り早いかも

272260:2021/03/07(日) 01:43:04 ID:QJTritZs
>>270
おおうチョンボ… 修正しました。GCREATEFROMFILE のテストしてたら…
改良テスト版 v0.2.0
http://book-shelf-end.com/up/dwlink.cgi?eraRx2187.7z

>>269
TypeConverter / ImageTypeConverter ? インターフェースを実装したら、
何も考えなくても、System.Drawingで読み込めるようになるらしいけど茨の道
そんなことよりほんとの目的のSVG対応のほうが…

273260:2021/03/10(水) 18:07:07 ID:HSNkGH22
トロイ検出騒動で鯖全体にまで悪影響が及ぶようになったらしいので取り下げました
もうこりごり…

274あなたの名前を入力してください:2021/03/11(木) 00:11:53 ID:kOs6NiE.
雑談スレでは「同じユーザーとパスが不特定多数に使われてるからパスお漏らしするサイトとして扱われてる可能性がある」とか言われてますが、Emuera実行ファイルのせいでロダに悪影響というのもどこかで言われてるんでしょうか?
セキュリティ対策ソフトがEmuera実行ファイルに文句付けてくるのは過去にも発生事例がありますね
せっかくの修正内容が公開取り下げになってしまうのはもったいないので何とかできるものなら何とかしたい

275260:2021/03/11(木) 22:20:25 ID:ps.Vcuqg
アンチウイルスソフト業界はダウンロード鯖ランキングリスト持ってて、今回私のバイナリがトロイ入り(となった)ので鯖のスコアを大きく悪くしたってことです
>>274 の言うように、今回初めてではなくて元々スコア悪い鯖扱いになってた様なので、今般 Avastとかいくつかでは監視リスト入り濃厚っぽい
一手遅かったけどバイナリは自主的に消したので、しばらく落ち着くのを待ってれば鯖スコアも回復する…と思いたい

配布バイナリに耐ディスアセンブルや難読化等の改変対策してなかったのは私のミス
で、最初引っ掛かりまくった物の VirusTotal での指摘によると、悪い点は Emuera 単体起動したときに Emuera.config などを吐くこと (元々)、ほか
Emuera にある、許可なく *ファイルを書き出す機能* が減点対象みたいですが、
本体側にUACやアクセス権とか仕様にかかわる変更が必要になる様なので私は白旗

276260:2021/03/19(金) 17:19:09 ID:6DYB3.kQ
この前の書き込みから放置プレイするのもあれなので、ほとぼり冷めた?くらいに Update ver 0.5.0 上げます

Emuera1.824+v11+webP v0.5.0(Secure対策版)
ソースのアップが主目的、バイナリは暗号化 7z になってます
http://book-shelf-end.com/up/dwlink.cgi?eraRx2231.7z

・webp読み込み周り安定化した…はずです
・webpのGCREATEFROMFILE() 周り安定化しました…と思います
・起動時、ディレクトリ権限&CSV・ERBディレクトリ有無を確認し、特にオプションがなければ、(コンフィグファイルやポップアップを吐かず)即終了
・いくえふめい…になってたReadme類をDocs添付
・バイナリの難読化 & libwebp のパッチ:セキュリティ対策ですがおまけ処置

権限チェック回りが難しくて、多分特定のWindows環境固有の実装だろうと思われます。これ以上は詳しい人に任せます

277あなたの名前を入力してください:2021/03/21(日) 00:17:10 ID:Zs5CstMs
>>276
まずはアップローダーに新しいファイルが置かれたことを嬉しく思います
+Secureのほうは、Emueraの設定を開こうとすると例外が発生する?みたいですが最初から発生していたのか途中から発生するようになったのかよく覚えてません
ところで、今回アップロードされた実行ファイルそのものはまだVirusTotalでチェックされてない感じなんですかね
(同じソースでもリビルドすると実行ファイルのハッシュは変化したりするので、等価の物は既にチェックされてるのかもしれませんが)

ちなみに自分は、libwebp_x64.dllやlibwebp_x86.dllという名前の外部ファイルの中身を実行するのはセキュリティ上のリスクと見なされるかもしれないのでlibwebp相当の処理を行うC#のソースがあればいいのかな、と思って何かやってたけど何の成果も得られませんでした

278あなたの名前を入力してください:2021/06/06(日) 03:41:01 ID:cePTN0ls
そういえばemuera側でcsvを作成って実装できたりしますか?
バリアントにオリジナルキャラ追加をゲーム画面でできるの提供できると面白そうだなと

279あなたの名前を入力してください:2021/06/06(日) 12:00:08 ID:HOy/u1bw
1番欲しい機能はFUNCTION関数をTRYCALLFORMする機能かな

280あなたの名前を入力してください:2021/06/06(日) 12:14:49 ID:QvtGR9rw
ERBからCSVのキャラ追加ってこと?
バグ出そうで怖いなぁ

CSV同様のデータを追加したいなら普通にADDVOIDCHARAしてNOを設定するだけでいけそうな気もするし
CSVにこだわらないならLOADTEXT/SAVETEXTで保存すればいけるか?

281あなたの名前を入力してください:2021/06/06(日) 15:25:01 ID:cePTN0ls
1ゲームを長くやるならともかく周回するような遊び方だとcsv作りたいのでaddchara系はあんまりですね……
10や20周同じキャラで周回とかオリジナルキャラを複数人追加して周回、みたいな遊び方には向きませんので

各自で作るにしてもバリアントが多様化してきてcsvがバリアントごとに追加の仕方微妙に違ってきているので
中身見ないと追加しにくいよりは直感的に作れるほうが好ましいし、キャラメイクそのものをゲームに組み込めそうだなと

282あなたの名前を入力してください:2021/06/06(日) 16:20:50 ID:2Zin1Qpw
昔、同じこと考えたなあ
要はCSV・ERBジェネレーターみたいなのが作れたらなと
Emuera側でポチポチするだけでCSV作れたら
バリアントによってはプレイヤーが手軽にオリキャラ持ち寄れるんじゃないかなみたいな

283あなたの名前を入力してください:2021/06/06(日) 16:39:37 ID:HsZmTquE
CSVの内容をEmueraの画面で出力して、ログをCSVファイルに保存させる形でやってたバリアントはある
今ならSAVETEXTで出力して拡張子を変えてねで済むかな
CSV形式にこだわらないなら、SAVECHARA/LOADCHARAでdatファイルに保存で済むのでは

284あなたの名前を入力してください:2021/06/06(日) 19:04:52 ID:cePTN0ls
CSVで調べていたからSAVECHARA/LOADCHARAはwikiでチェックしていなかったので
今制作しているものが終わったらいじってみます

285あなたの名前を入力してください:2021/06/06(日) 19:44:53 ID:HOy/u1bw
TWのモブ子セーブロードに使われてるね

286あなたの名前を入力してください:2021/06/08(火) 14:52:53 ID:TLkiUi4w
ここで質問していいのかわからないのですが、
INPUTMOUSEKEYでマウスの入力と、画面上に出力したボタンからの入力を同時に受け付ける方法ってあるのでしょうか?
マウスホイールでのステータス画面スクロールを実装したいと思いご教示いただきたく。

287あなたの名前を入力してください:2021/06/10(木) 00:08:26 ID:e2NKxmO.
>>286
RanceKのEmueraを使ってみてもいいのかな…… どうなのかな……
https://jbbs.shitaraba.net/bbs/read.cgi/otaku/16783/1595116469/457

288286:2021/06/10(木) 14:45:47 ID:DwU2fIQo
>>287
ありがとうございます。うーん、emuera本体をいじる必要がありそうですね。自分はパッチだけ弄ってる側なので今回は見送ることにします。

289あなたの名前を入力してください:2021/07/10(土) 03:25:11 ID:h60FpsDM
バイナリの取得場所がダークウェブ(パス入れないと入れず、検索エンジンからたどれない)のみなのが一番まずそう
なるほどたしかにexe系はちゃんと明るい場所に置かないとチェックできないと・・・

290あなたの名前を入力してください:2021/07/10(土) 20:33:52 ID:35eNoZEE
急に的外れなこと言い出してどうしたの

291あなたの名前を入力してください:2021/07/10(土) 20:42:13 ID:Qn9kCBpM
eratohoスレでアンチウイルスソフトがemuera.exeを弾いてしまうのでアップローダ上のzipファイルに含めるか否かで議論になってたけどその関係かな

292あなたの名前を入力してください:2021/09/04(土) 13:52:05 ID:HdZgv6Mg
すいません、質問です
以下のように関数ローカルで定数きった場合、続く配列宣言でその定数を認識してくれないのですが、これは仕様でしょうか
UserVars見る限りではいずれもERH内という限定がないので、いけそうに思ったのですが
>1次元配列変数を定義する際に変数名の前にCONSTを入れると、1次元配列の定数が定義されます。
><要素数>はすべて1〜1000000の範囲内の任意の整数または定数式です。省略した場合、1となります。

@HOGE(fuga:0 = "",fuga:1 = "")
#DIM CONST VALUE_COUNT = 2
#DIMS fuga,VALUE_COUNT ;<-コイツがエラー吐く
FOR index,0,VALUE_COUNT
PRINTFORML fuga:index
NEXT

293あなたの名前を入力してください:2021/09/06(月) 16:17:20 ID:UH5eeMCI
>>292
さっとコードを眺めた感じ、確かにエラーになりますね
弄り倒せるかどうかは調べてみないと何ともです

294妊)|д゚):2021/09/06(月) 16:21:24 ID:UH5eeMCI
おっと、つけるの忘れてた

295妊)|д゚):2021/09/13(月) 02:03:48 ID:Z7vYOd3Q
かなり環境依存かと思いますが.NetアプリとATOKで相性が出るみたいです
Emueraでも短時間で入力が連続した場合に落ちることがあります(手元で散々出てる

まあ、かなりエッジケースなので再現する人は少ないとは思いますが念のため告知
(Emuera側でどうこうできる案件ではないので対応は不可能かと思います)

296あなたの名前を入力してください:2021/09/18(土) 03:28:05 ID:15P/Ir1s
Atok側でAtikインサイトをOFFにしましょう

297あなたの名前を入力してください:2021/09/18(土) 14:42:10 ID:T46GHJW.
>>294
ありがとうございます
可能ならば、修正いただけると助かります

298妊)|д゚):2021/09/19(日) 00:09:03 ID:qaH4XKMA
>>296
OFFでも再現したので対処法にはなりませんでした
現状はEmuera起動時はATOKを使わない、しかないでしょう

299妊)|д゚):2021/10/12(火) 22:32:23 ID:8xRFF39k
Win11がリリースされて少し経ったので、Emuera絡みを

.Net Framework 4.8が普通に入ってるので特段影響はないかと思います

一応、手元では.Net5以降への移植はできてはいますが、
これは完全に個人的なお遊びの範疇なのと、配布ファイルが色々不便な形態になるので
現在のところ、.Net5以降に移行する予定はありません

300あなたの名前を入力してください:2021/10/13(水) 10:23:15 ID:a0ZsqD/s
emueraの場合、windows api 使ってるから、.net5系統に移植してもあまり美味しくなかったりする?

301妊)|д゚):2021/10/14(木) 00:07:20 ID:NQmUlKVk
>>300
OS依存バリバリなので、そもそも多プラットフォーム展開できないですからねぇ
(すべてのOS用に処理を分岐させれば不可能ではないが、Windows依存コードが最低でも200ヶ所以上はあるので、現実的ではないどころの騒ぎではない)
後は配布面でのデメリットも大きいので、移行するメリットがない感じですね

302あなたの名前を入力してください:2021/10/14(木) 00:33:53 ID:/sGtGwLE
uEmueraはAndroidで動作してるけどソースを多数書き換えてUnity用のファイルも追加されてるみたいだし、未実装機能などもあるみたいですね
Windows向けビルドを作ってもEXEファイル1個だけではなく他のファイル群も一緒に配布しないと実行できないみたいですし

303あなたの名前を入力してください:2021/10/14(木) 00:59:45 ID:RG0BIGL.
Unity用のファイルが追加というよりUnityをベースとして作ってるのかも?
ウディタをSwitchに移植するのもUnity上でやりくりしてるなんて話あるし、Unityだとエミュレーションがやりやすいんだろうな

304あなたの名前を入力してください:2021/10/14(木) 02:21:06 ID:woxkVGW2
(.Net4→Unityは同言語・別フレームワークへの移植じゃないかなー)

305あなたの名前を入力してください:2021/10/14(木) 03:15:16 ID:8Tg19n.2
構文解析まわりが流用できても、表示関係は全部作り直しなんだろーなー

306あなたの名前を入力してください:2021/10/17(日) 14:13:02 ID:TF464/fI
随分前に妊)|д゚)さんかemuの人さんにセーブに記録される変数のサイズは大きくなる方には互換性ある(配列のサイズとか)と聞いた記憶が有るんじゃが
その認識で問題ないどす?

307あなたの名前を入力してください:2021/10/24(日) 10:41:34 ID:/xg64oQw
そもそも「表示関係は作り直し」とかそういうレベルではなく
内部で表示関係が切り分けされてなかったり内部の処理でWindowsに無自覚に依存してたりしてるからかなり苦しいよ

308あなたの名前を入力してください:2021/10/24(日) 21:29:11 ID:YBQNeG9g
表示関係の処理きちんと切り離そうにも、なんなら完全に一から実装し直した方が早いんじゃないかまであるくらい
内部まで表示関係が食い込んたりする

309あなたの名前を入力してください:2021/10/25(月) 12:48:37 ID:ZLumrMvc
でも1から構文解析まで作り直そうっていうなら今度エディタ連携とかLintとかも出来るように最近はやりのアプローチで解析木作ってほしいとか欲望が沸きあがってしまう…

310妊)|д゚):2021/10/26(火) 22:08:34 ID:pmK0iwCM
そこまでやるんだったら、もう言語1から作り直せよ案件

311妊)|д゚):2021/10/26(火) 22:19:55 ID:pmK0iwCM
で何となく

○1824+v12
https://ux.getuploader.com/ninnohito/download/478

・何かADDSPCHARAの動作が怪しいらしいので変っぽいところをとりあえずいじってみた
・コードを保持するとメモリ喰いすぎるので、保持せずにエラー時にファイルから読み出すように変更

多分これぐらいだと思う(色々遊んでたので何か変わってても文句言えない案件

312あなたの名前を入力してください:2021/10/26(火) 22:19:56 ID:FqEkuGLE
妊の人きた、これで勝つる
という訳ですみませんが良かったら>>306の質問にも回答頂けると大変助かるます

313妊)|д゚):2021/10/26(火) 22:21:56 ID:pmK0iwCM
>>312
セーブデータの読み出しについてならYesですね
元々配列はデータが入ってるところまでのみ保存する仕様なので、大きくなる分はそこはデータ無しという扱いになるので互換性が維持されます
逆は…試したことないけど多分チェックしてないと思ったからエラーか例外になりそう

314あなたの名前を入力してください:2021/10/26(火) 22:22:42 ID:FqEkuGLE
>>313
|ω・)��゙ ㌧トトト㌧㌧

315あなたの名前を入力してください:2021/10/27(水) 00:07:40 ID:HSzPI/4M
妊の人おつ
自分で実装する気がないから気楽に言うけど、仮にやり直すならBASIC系よりも、もう少しC系の文法に寄せたいよね

316あなたの名前を入力してください:2021/10/27(水) 00:09:48 ID:i.qa2B2s
>>311
更新乙です
>・コードを保持するとメモリ喰いすぎるので、保持せずにエラー時にファイルから読み出すように変更
ということは、起動後にファイル上書きするとメッセージ内容ズレるのか
上書きする方が悪いのはわかるけど、ちと不安

317あなたの名前を入力してください:2021/11/09(火) 12:50:19 ID:nqPeoTuU
ちょっと前に出てた.Net5移行の移植に関して個人でやろうと思ってる話を
なんかちょっと前に話だけ聞いたけどそんなもの夢物語でマジで実現なんてできないだろうって甘く見てた.Net MAUI(WinFormsみたいなUIツールをマルチプラットフォームに動作できる形で提供するプロジェクト)が実現しそうなので
それが正式リリースきたらちょっと試しに触ってみるね…配布についてちょっと面倒は出るけど少なくてもWinだけじゃなくMacでもうごくようになるとかは少ないながら今では実現できない需要あるだろうし…

318あなたの名前を入力してください:2021/11/09(火) 19:14:19 ID:qeU5decc
マイナーバグ報告。スキップブロック、完全にスキップしてない…
こういうところの処理を枝刈りしたら早く&軽くなりません?

【対象】
Emuera1824+v11
【現象】
[SKIPSTART]〜[SKIPEND]ブロック間にC言語のソースを記入 (多段 {} が使用されている )するとパースエラーが出る
C言語に限らず、C#、js、powershellなど、{}をブロックに使用する言語で発生する。
エラーメッセージは以下。ファイル名・行番号報告なし

MinorShift.Emuera.Sub.CodeEE:予期しない行連結記号'}'が見つかりました
ERBコードに解釈不可能な行があるためEmueraを終了します
※互換性オプション「解釈不可能な行があっても実行する」により強制的に動作させることができます
emuera.logにログを出力します
※※※ログファイルをemuera.logに出力しました※※※
エンターキーもしくはクリックで終了します

319妊)|д゚):2021/11/09(火) 21:23:55 ID:93FYgq6U
○1824+v13
https://ux.getuploader.com/ninnohito/download/479

>>318修正

320あなたの名前を入力してください:2021/11/09(火) 21:39:43 ID:k1lUGqGs
>>319
お早い対応乙です

321あなたの名前を入力してください:2021/11/09(火) 23:09:32 ID:qeU5decc
妊の人、素早い修正どもです
>>318 修正OKでした

メモリ問題はパース時のオブジェクトnewで、1オブジェクトが(.NET Frameworkの)Gen2入り判定とされる85kBを超えるので、すぐにGCされないゴミが溜まっていくからのようです
v11→v12で少し改善してますが、C++のBoost HASHライブラリだと 数百M〜1GB 前後でパフォーマンスが悪化するらしいので、適度な強制GCは必要かもしれません
一定数のファイル・関数数以上の場合、ファイルをパースし終わるたびに GC.Collect(2,GCCollectionMode.Optimized,false); を入れてみますか?

322妊)|д゚):2021/11/10(水) 09:32:02 ID:ZnnV3bmg
現実、ロード完了時に一番強いGC.Collect()して全部掃きだしてこれなんですよね

単純に行の解析済みデータのサイズが大きいのが問題という感じで、
メモリ使用量はここの再設計なしでは圧縮は難しそうです

323あなたの名前を入力してください:2021/11/11(木) 21:52:51 ID:kZ23/KU6
すみません、ここで聞いたら良い質問かどうかわからないんですが
Wikiを見るとローカル変数LOCALとLOCALSは廃止されたとあるのですが、
実際のバリアントを見ると今でもLOCALやLOCALSが普通に今でも使われています。
過去ログの議論を見ても実際に廃止にしたという話は見た限りではありませんでした。
実際問題現状ではどのような扱いになっているんでしょうか?

324あなたの名前を入力してください:2021/11/11(木) 22:05:12 ID:jIMyECB2
今でも廃止されてはないし、使えるけど、古い機能なので非推奨。
#DIMや#DIMSで変数定義して使うのが推奨されるやり方。
Obsoleteだし将来的に廃止される可能性はあるけど、実際問題としてまだまだ広く使われてるし
そう簡単には廃止されないと思われ

325あなたの名前を入力してください:2021/11/11(木) 23:34:41 ID:dHPoDVfM
obsoleteってよりはdeprecatedという雰囲気ではある
まぁ新規で作るなら使わないに越したことはない

326あなたの名前を入力してください:2021/11/11(木) 23:45:29 ID:/2YsLxkg
#DIMや#DIMSで困らないでしょうしね

327あなたの名前を入力してください:2021/11/22(月) 18:10:55 ID:23R4GUP.
正直出来ることならすでにあるLOCALやLOCALSを使った全ての変数をちゃんと#DIMや#DIMSで置き換えたい…
LOCALをちゃんとプログラミング的な配列として使ってる分にはいいんだけどera界隈は歴史的事情で一つの配列に全く別の意味の数字を入れるからコード読みづらくてメンテ性が…

328あなたの名前を入力してください:2021/11/24(水) 11:20:38 ID:Q411JnG2
>>327
それを成功させてるバリアントはいくつかあるので根気次第だ

329妊)|д゚):2021/11/28(日) 00:33:29 ID:zfpZZuvg
メモリ使用量をちょっとだけ減らすテクニックはあるが、若干パフォーマンスと引き換えになるのが難しいところだのぉ…

330あなたの名前を入力してください:2021/11/28(日) 00:37:48 ID:y9N7oFQU
eraBIOSから起動するEmueraOSの完成が待たれる

331妊)|д゚):2021/11/28(日) 01:25:29 ID:zfpZZuvg
理想論的には静的変数は全部連想配列的に扱うのが一番メモリの無駄が少ない気はするが、
パフォーマンスがかなり厳しい気がしないでもないがはてさて

332あなたの名前を入力してください:2021/11/28(日) 09:34:25 ID:OIcybwZg
パフォーマンス犠牲にしてメモリ使用量少し減らすくらいなら現行のままでいい気もする

333あなたの名前を入力してください:2021/11/29(月) 21:52:08 ID:Kan1dNi.
一部のバリアントは、少しなんてレベルじゃなく大きく複雑になっていますから。
プラグインになっている関数が非常に多いので、先日の対処があってもいずれヒープかスタックか、Framework の仕様限界が来て起動不能になると思います。

懸念があるのは一部の大型バリアントでしょうから、オプションで関数用変数やobsolute系変数など一部からDictionary・HashTable・DBなどを試行しては?
あと、破棄できる静的変数は積極的に破棄していいと思います (必ず初期化されていて、構文木的にさほど使われないものとか)

/// それ以前に、GetFilesでのファイル列挙時と読み込みforループ時に、ウインドウメッセージを処理できていない時間が長いのはよくないです
/// 読み込み途中で再起動するとウインドウ表示は無いけれどプロセスだけ一時的に残っちゃう時が…

334あなたの名前を入力してください:2021/11/30(火) 01:53:21 ID:IzYpg0fI
業務アプリでもないのですからロード中のハングなど些事でしてよ
LogicalLineとInstructionLineで削れるメンバの目星は付きますが、この構造を弄るとなるとそれなりの範囲でコード修正が必要ですわね
とはいえここを見直す以外に大きくメモリ消費を減らすのは厳しいので少しずつ手を入れるしかありませんわね

335あなたの名前を入力してください:2021/12/05(日) 03:39:32 ID:hQRn.Tso
バグ報告です。1824+v13(>>319)で確認
デバッグウィンドウのコンソールで、以下のように変数と定数を==で比較した場合、本来は比較として処理されるべきところが代入として処理されているようです
(以下の結果は、全て間に処理を挟まず連続して入力しています)
なお、直接確認したのはデバッグウィンドウのみですが、ERBファイル内でも同様の挙動をしているように見えます。

ITEM:0
1
ITEM:0 == 0
ITEM:0
0
LOCAL
0
LOCAL == 1
LOCAL
1
TALENT:0
1
TALENT:0 == 0
TALENT:0
0
TALENT:ASSI:0
0
TALENT:ASSI:0 == 1
TALENT:ASSI:0
1

336あなたの名前を入力してください:2021/12/05(日) 03:43:25 ID:hQRn.Tso
失礼、
>ERBファイル内でも同様の挙動をしているように見えます。
この部分撤回します。よく見たら思ってた挙動と違った

337あなたの名前を入力してください:2021/12/05(日) 12:58:22 ID:D3rdYu.s
真か偽かを返す式として解釈できる記述ではありますが、
警告Lv0 代入演算子に"=="が使われています
に相当する記述なので代入文としての解釈も可能、そして代入文としての解釈が優先されているようですね
現状のデバッグモードで真か偽かを確認したい場合はコンソールではなく変数ウォッチのタブを使うか、 (LOCAL == 1) のように括弧を付けて記述すれば良いかと思います

338あなたの名前を入力してください:2021/12/09(木) 01:02:18 ID:EdyF5kPE
Emuera1824v13のソース弄っていての気づき事項っす

1) Config.cs の getUpdateKey() で、ローダー(GetFiles)とは別にERB&CSVファイルを列挙している
.NETの仕様上、ファイル走査・列挙はファイルシステム分以外にはキャッシュしないから二重処理になってる
getUpdateKey()用のLastWriteTime取得をデータローダーの方に持っていくか、または*.ERB、*.CSV専用の読み込み関数を用意するのは如何?

2) 同 getUpdateKey()にて無駄な配列を確保している
ファイル数だけwritetimes配列を確保する必要がないような。デバッグ用か、凝ったHASHを計算するつもりだった名残かな?

3) 各 Directory.GetFiles() + for() は、foreach(var i in Directory.EnumerateFiles()) の方がいいかも
非同期読み込みするなら別だけど、.GetFiles から ListへのCopyと待機が余分に発生する
IEnumerable() で返ってくる方が遅延評価され僅かにマシ

4) 同、foreach()しかしないんなら、戻り値/引数はList() じゃなくてIEnumerable()で
遅延評価は副作用が怖いけど…

5) Framework Verを上げるなら、Unicode制御文字に注意
4.6.*からサポートされてる双方向文字や結合文字等、UNICODE制御文字が…
STRLENSUやエスケープ関数が危ない
欧米人は絵文字に喜んでるけれど、結合文字などのインジェクションクラッキングはどう思ってるんだろうね

6) 同、ファイルパスでロングパスと代替データストリーム(ファイル名:名前)が使えるようになってる
ほか、フォルダ名に空白が許可されてたりする

339あなたの名前を入力してください:2021/12/16(木) 13:07:46 ID:G76W/RCM
>欧米人は絵文字に喜んでるけれど、結合文字などのインジェクションクラッキングはどう思ってるんだろうね
これについては欧米人でも利用者は喜んでても実装側は複雑なUnicode仕様にf○ck言ってるのよく見かけるね…ただでさえUnicodeがバイト列として取り扱えないことにうだうだ言ってた人たちだから…

340あなたの名前を入力してください:2021/12/16(木) 23:26:47 ID:dY3biUeA
追加の気づき事項っす

7) GetFiles で、再帰呼び出しの制限がない
以前に、MSやGit (MSYS2) 、アーカイブソフトなどいろんなソフトでやらかしてる件です
GetFiles() をディレクトリ以下も走査する条件で呼んだ場合、ディレクトリの深さに依存して再帰呼び出しする仕様になっている
このとき無限フォルダ生成バグや、ハードリンクによる循環などが起こっていると、スタックオーバーフローで死んじゃう…
システム側で総列挙(対策済み)または再起深さ制限した方が良い

>>339
タイムリーに、VSでUNICODE双方向文字関連のセキュリティパッチが入りましたね
UTF16やUTF32でせっかく固定長の方向だったのに、またMBCS地獄ですからね
Emueraに関しては、通称UTF-8MAC (日本語濁音・半濁音が独特のエンコードされているやつ)食わしたとき、正常に動くのだろうか?

341あなたの名前を入力してください:2021/12/17(金) 02:31:47 ID:K5RM.Ck2
Emueraが大半のファイル/ディレクトリ読み込みでカレントディレクトリを無視する挙動になっているのは何か意図がお有りなのかしら?
解析モードで他所にあるファイルを食べさせることはできるようですのでセキュリティ的にはあまり意味がなさそうですわ
複数バリアントでのテストが行いにくいので、問題がないようでしたらcd起点で処理させるようにしたいと存じ上げますわ

342あなたの名前を入力してください:2021/12/24(金) 09:34:29 ID:eu2.Ul0M
>>341
Emueraはコンソールで使うことを意図せず、なおかつそういう使い方を知らずエクスプローラーでファイルを取り扱う人にとって直感的に使えるように…
…ということは特段なくまあeramakerからの伝統にのっとり実行ファイルのディレクトリ基準で動作し続けてきました
もしもemueraがその様に動作することを求めるのであれば2つの選択肢があります
1つはemuera改造をしている人達に要求を上げることです 運よく興味を持った人が出てきたら更新されるでしょう ですがまあemueraをコンソールから叩いてる人がそんなにいるとは思えませんこの界隈
2つは自分がemuera改造に乗り出すことです 自分でフォークして改造し…メンテする 必要ならば自分で作るのが最も端的な方策でしょう

2つ目にかかわって現在のEmuera界隈について
本来ならばemueraメンテナに対してパッチを投げて取り込んでもらうというのは一つのゴールでしたが現在中心的な開発者であったemuの人が実質的引退をして妊の人が代理で保守的なバグ修正を続けている状況です
そのためいつか複数のemuera改造を取り込んでまとめ上げようという意欲的な誰かが出てくるまでは新規の機能開発については個々にメンテし続けなければいけないでしょう

343あなたの名前を入力してください:2021/12/24(金) 09:39:44 ID:eu2.Ul0M
>>340
> Emueraに関しては、通称UTF-8MAC (日本語濁音・半濁音が独特のエンコードされているやつ)食わしたとき、正常に動くのだろうか?
ここについてはぶっちゃけEmuera内部では.Netのエンコーダに食わせて表示するときも.Netに食わせてレンダリングしてるだけだからそっちの実装次第かなぁ…
ただ濁音半濁音のせいでEmuera自体のコードで具合が出るかというと構文はほとんどがASCIIの範囲内で解決しているから.Netがそれを正しく取り扱えるのなら動くんじゃないかな

344あなたの名前を入力してください:2021/12/24(金) 21:00:47 ID:IIGECoNw
UTF-8MACと同等かは知らないけど、UTF-8でNFDの濁点文字を食わせてみた
結果としては「フォントによる」という感じで、
手元では游ゴシックだとほぼ問題なく表示されるけどメイリオだとダメだった

結合文字の濁点が使えれば喘ぎ声に使えて良いなぁと思ったんだけど、実用は厳しそう

345あなたの名前を入力してください:2021/12/25(土) 22:35:27 ID:j4aisRHk
.NET例外によるクラッシュです。以下長文也

〔対象〕 Emuera1824+v13
〔環境〕 Windows 11 Home 21H2 22000.376 / .Net Framework 4.8
【問題】
1, 「resourceディレクトリ」 に 「拡張子の最初の三文字がcsv」 (例: badfile.csvx) というファイルがあると、csvとして読み込んでしまう。
2, CSVに対する警告エラー表示のために行内容 を取得する際、ハンドル外例外 System.IO.FileNotFoundException が出力されクラッシュしてしまう。

【エラーログ】
警告Lv1:badfile.csvx:3行目:指定された画像ファイルが見つかりませんでした:;L.LMKNBJVHCGYIUHIOJLKMNNB NCGVYIHUIOJK;MN
予期しないエラーが発生しました:Emuera1824+v13
System.IO.FileNotFoundException:ファイル 'C:\XXX\XXXXX\x\XX\XXXX\era\erb\badfile.csvx' が見つかりませんでした。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
場所 System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
場所 System.IO.StreamReader..ctor(String path, Encoding encoding)
場所 System.IO.File.ReadLines(String path, Encoding encoding)
場所 MinorShift.Emuera.GameProc.Process.getRawTextFormFilewithLine(ScriptPosition position)
場所 MinorShift.Emuera.GameProc.Process.printRawLine(ScriptPosition position)
場所 MinorShift.Emuera.GameView.EmueraConsole.PrintWarning(String str, ScriptPosition position, Int32 level)
場所 MinorShift.Emuera.ParserMediator.FlushWarningList()
場所 MinorShift.Emuera.GameProc.Process.Initialize()
初期化中に致命的なエラーが発生したため処理を終了しました
※※※ログファイルをemuera.logに出力しました※※※

【原因&対処】
1 過去からあった模様。リソースCSV読み込みに Config.GetFiles() ではなく、System.IO.Directory.GetFiles() を直接呼んでいて、拡張子のチェック漏れ。

2 クラッシュはソースを保持しなくなった変更の影響のよう。
GameProc\Process.cs 内 getRawTextFormFilewithLine() のファイル読み込みがErbDir決め打ちになっていて、またファイル存在チェックをしていないため。
今の仕様では position (ScriptPosition) がフルパスまたは「Exeからの」相対パスを保持していないので、再スキャンが必要。

if ((position?.LineNo ?? 0) <= 0) return "";
//try {
var filepath = Directory.EnumerateFiles(Program.ExeDir, Path.GetFileName(position.Filename), SearchOption.AllDirectories)
.FirstOrDefault(cond => cond.IndexOf(position.Filename, 0, StringComparison.OrdinalIgnoreCase) > -1);
if (string.IsNullOrEmpty(filepath)) return $"<<File {position.Filename} not found.>>";
return File.ReadLines(/*Program.ErbDir + position.Filename*/ filepath, Config.Encode).DefaultIfEmpty("").ElementAtOrDefault(position.LineNo - 1) ?? "";
//} 以下catch節


オープンなとこでForkしてる人もいるわけですが、EraはOSSよりリアルでの炎上延焼リスクが大きいですからね
細々と、手前味噌でやるのがいいんじゃないかと

346妊)|д゚):2022/02/16(水) 17:15:21 ID:ledALMn.
○1824+v14
https://ux.getuploader.com/ninnohito/download/480

・手元ではとっくに直してたけど、他になんか出てきたら面倒だなぁで寝かせてた>>345の単純な修正

347あなたの名前を入力してください:2022/02/16(水) 22:44:59 ID:KvIN9qkA
ERBって文法上の理由で構文の静的解析が完全にはできなくて
実行時じゃないと確定しない場合があるとかなんとかあった気がするんだけどどういうの書いたときだっけ

348あなたの名前を入力してください:2022/03/17(木) 22:02:25 ID:sS3qieYs
文法上の理由というのはわからないけど、同名ルーチンが複数のファイルにある時にどれが呼び出されるんだと思った覚えがあるなあ
調べてないからわからないけど多分OSのファイルシステム検索順で決まってるんじゃないかという気はした

349あなたの名前を入力してください:2022/03/19(土) 16:07:45 ID:98imkZM.
>>347
HOGE=1+1
いや冗談じゃなくこの構文ですらHOGEが文字列変数か整数変数かという情報がないと構文解析できない

350あなたの名前を入力してください:2022/03/20(日) 07:40:31 ID:.IwhNRQM
11か2じゃないの?で、文字列操作にそんな構文があるならPRINT文のバリアント要る?

351あなたの名前を入力してください:2022/03/30(水) 19:36:06 ID:Xwo/.nHw
定義型変数がintegerなのかcharacterなのか宣言しなければ機械語的にそれがなんなのかわからないのは普通じゃね?

352あなたの名前を入力してください:2022/03/30(水) 22:40:15 ID:rQ9AvgsI
言語によるけど、文字列連結演算子と数値加算演算子で別の文字使ってたりすると定まるでしょ
パッと思いつくのはPerlぐらいしかないけど、数値加算は + だけど文字列連結は . 使うみたいなやつ

353あなたの名前を入力してください:2022/03/30(水) 23:19:40 ID:tiCWYo7I
文字列をクォーテーションで括る必要あっても定まりそう

354あなたの名前を入力してください:2022/04/01(金) 22:09:41 ID:nlRpu1js
>>351
真面目に説明するが違う
より正確に言うならPRINTとか文字列変数への代入がリテラルではなく生文字列を要求するところが違う
世の中のおおよその言語とかだとさっきの事例は
HOGE="1+1"とかHOGE='1'+'1'とかHOGE=1+1とか
この様にして型を判別する前から、それが文字列であるか数字であるかにかかわらず構文を解析できる
勿論HOGE="1"+1みたいな型が整合しない式もあるが構文解析の段階ではそれを正しく解析できるしそれをはじくのは解析した後に型の検証をする際の話だ

355あなたの名前を入力してください:2022/04/01(金) 22:12:04 ID:nlRpu1js
>>350
そしてこれも間違っている
文字列変数だった場合
HOGE'="1+1"
文字列変数への代入は生文字列だから連結してくれたりはしない

356あなたの名前を入力してください:2022/04/03(日) 00:22:47 ID:b63BFHtE
そもそもHOGEが代入不可の何らかである可能性が否定できない
広域変数宣言、#DEFINEマクロ、関数の多重宣言、あるいはこの式が特殊な関数に記述/呼び出しされている場合などの可能性を考えると、
おおよそ全てを読み込み(=実行)してみるまで確定できない

357妊)|д゚):2022/04/13(水) 21:59:39 ID:NwC8N5KE
○1824+v15
https://ux.getuploader.com/ninnohito/download/481

・LOADTEXTがあまりに致命的な面倒事を引き起こす原因になってくれてるのを修正

358あなたの名前を入力してください:2022/04/19(火) 20:29:00 ID:Jl1mLjhM
eraAWT自宅hybrid版 ver.1.0.4で、本体に同梱されているEmuera1824+v5では問題ないけどEmuera1824+v15に差し替えたらカスタムキャラやマップエディタのロードが正常動作しないようですね
とりあえず
REPLACE RESULTS:0, UNICODE(13) + UNICODE(10), "/"
の次の行に
REPLACE RESULTS:0, UNICODE(10), "/"
を追加すればv5でもv15でも正常動作しそうな感じかな

359妊)|д゚):2022/04/21(木) 21:43:37 ID:hV3jHlQ2
前後を見てないけど、LOADTEXTで読みこんだ文字列の改行コードを手動でいじってる感じの処理だから、変更点の影響がもろに出る処理になってますね

簡単に言えば、v15ではLOADTEXTで読みこんだテキストの\rを殺してる(Emueraの文字列変数と同様の扱い)ので、
v15以降は改行コードは\nだけ考えればOKになります

360妊)|д゚):2022/04/21(木) 21:47:55 ID:hV3jHlQ2
で、なぜこの挙動変更をしたかというと、
TextRendererのみ、\rがあると、そこで描画が1行下にずれてしまうという挙動をしてしまうので、
描画形式によって違いが生じない様にするためになります

361あなたの名前を入力してください:2022/04/21(木) 23:58:16 ID:TRSya166
つまり、MacOS9以前で作られた複数行テキストファイルを読み込ませたら改行が削除されて長い1行になってしまうということですね。
誰もやらないと思うけど。

362妊)|д゚):2022/04/23(土) 10:54:06 ID:WKzYQxCU
>>361
そこらへんが問題になるようなら、それはそれでまた考えたいところ
(おそらく、単独\rを\nに差し替えるだけでいいだろうけど

363あなたの名前を入力してください:2022/05/03(火) 01:12:09 ID:gbb8VsdM
eratoho総合スレのInt.MinValueの絶対値は、THROWにしてしまってERBで対応させるべきだとおもう。
emuera本体でごちゃごちゃ変に例外的な処理入れるのよくないよ・・・

364あなたの名前を入力してください:2022/05/03(火) 12:40:28 ID:LA/0h29I
tohoTWが使ってるのは野良改造版だから、ここでは妊の人のEmueraの話ですね
少なくとも、.NETの例外をお漏らししてるから本体側に手当てが必要かと

類似案件で、エラーは出ないものの(-__INT_MIN__==__INT_MIN__) という式が真を返してます
つまり、数値の内部表現がdecimalやBigInteger型等でない限り、境界値__INT_MIN__で -INTVALUE != -ABS(INTVALUE)になります
対処ですが、ABS(__INT_MIN__)で実行時エラーにするか、正の範囲に丸めるか、そのまま返すか、お好みで

365妊)|д゚):2022/05/03(火) 13:26:57 ID:5FFSlXaw
>>364
案件の方、確認したけど、そもそも.Net自体が
直接-long.MinValueするのは例外になると弾くくせに、一度変数に代入してその変数の-を取った場合は何もしないで素通しする素敵挙動ですわ
こっちは処理が通ってしまう仕様な以上、エラーにするのは現実的ではなさそうなので、実行時注意文表記で対応かな

まあ、とりあえずごねごねやっておきます。

366あなたの名前を入力してください:2022/05/04(水) 16:50:33 ID:M25qmfd6
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/expressions#1183-unary-minus-operator
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/checked-and-unchecked
constant expression以外はcheckedがオプションなりコード側なりで明示的に指定されていなければ単項-のオーバーフローを無視する仕様ですわ
この振る舞い自体はオーバーフローチェックの実行時コストを考えると現実的かつ妥当なものですの
constant expressionの場合はその問題がないので既定でcheckedとして扱われ怒られるというわけですわね

367あなたの名前を入力してください:2022/05/07(土) 09:38:53 ID:6RE/JgMQ
OSDNの演算についてのページ
https://ja.osdn.net/projects/emuera/wiki/exop
での演算子の優先度表について||とするべきところが|?|となっていないでしょうか?

368あなたの名前を入力してください:2022/10/07(金) 18:46:05 ID:6M90G.z2
NOSAMES関数についてバグ報告
wikiの説明と違い!GROUPMATCHのような挙動をします

NOSAMES("HAGE","HIGE","HIGE","HUGE","HUGE")
NOSAMES(0,1,1,1,1,1)
上記をデバッグウインドウでテストしても共に戻り値は1になりました

369妊)|д゚):2022/10/08(土) 17:31:45 ID:mFVtGyiQ
>>368
こりゃ、実装がおかしいですね、直してきます。

370妊)|д゚):2022/10/08(土) 18:57:44 ID:mFVtGyiQ
○1824+v16
https://ux.getuploader.com/ninnohito/download/482

>>368修正
・その他雑多な微変更

371あなたの名前を入力してください:2022/10/11(火) 00:31:29 ID:.NG1MpEk
おつです

372あなたの名前を入力してください:2022/11/03(木) 21:32:50 ID:iUB2hkcw
http://book-shelf-end.com/up/dwlink.cgi?eraRx3508.zip
Emuera私家改造版をベースにパフォーマンス改善等を行ったfork版ですわ
起動時で20%程度のメモリ消費削減と5%程度の実行速度アップが見込めるかと思われますわ
readmeにも記しましたがSKIPDISPでPRINT系命令を非表示にする際の挙動が異なりますので注意してくださいまし

正常動作・バグの発生問わず動作報告を頂けるとありがたいですわ
何分一人で行えるテストは量も質も程度が知れていますので

373あなたの名前を入力してください:2022/11/05(土) 20:07:35 ID:SwUDZlv6
>>372
eraten かーちゃん版144&口上&fix タイトル起動時

メモリ2.6GB前後:Emuera1824+v8.1(かーちゃん版デフォルトexe)
メモリ1.7GB前後:eee 

メモリ消費量が半端なく減ってました すごい

374あなたの名前を入力してください:2022/11/06(日) 00:32:53 ID:ChpHeNFQ
全データは3回試行した平均結果ですわ
eraMegatenと簡単なテスト用バリアントの2つですわ

eraMegatenRev144+口上+fix
起動後にロードしてホーム
v16: 1768MB
eee: 1356MB

起動後にEmpty.bat走らせてロードしてホーム
v16: 228MB
eee: 270MB
eraMegatenの起動時間はうまく測れなかったですわ

以下はテスト用コード
計算だけのFOR文を1億回回した時
FOR i, 0, 100000000
var = MAX(var, 0)
NEXT
v16: 5163ms
eee: 4618ms

表示だけするFOR文を10万回
FOR i, 0, 100000
PRINTFORML var: {var}
NEXT
v16: 5785ms
eee: 5757ms

375あなたの名前を入力してください:2022/11/07(月) 02:19:26 ID:Rn0iwQow
eeeforkでeraMegatenRev144+口上+fix起動後ホーム画面で[114] - 魔貨交換 -> [2] アイテムと交換 でエラー落ちしました(1824+v16では落ちませんでした)
SHOP関連\MOUSE_UI_STORE_UTILS.ERBの781行目で予期しないエラーが発生しました:eee
System.IndexOutOfRangeException:インデックスが配列の境界外です。
場所 MinorShift.Emuera.GameData.Variable.ReferenceToken.CheckBounds(Int64[] arguments, Boolean[] doCheck)
場所 MinorShift.Emuera.GameData.Variable.ReferenceToken.CheckRangeValidityForLastDimension(Int64[] arguments, Int64 index1, Int64 index2, String funcName, Int64 i1, Int64 i2)
場所 MinorShift.Emuera.GameData.Function.FunctionMethodCreator.FindElementMethod.GetIntValue(ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameData.Function.FunctionMethod.GetReturnValue(ExpressionMediator exm, IOperandTerm[] arguments)
場所 MinorShift.Emuera.GameProc.Function.FunctionIdentifier.RETURNF_Instruction.DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state)
場所 MinorShift.Emuera.GameProc.Process.runScriptProc()
場所 MinorShift.Emuera.GameProc.Process.GetValue(SuperUserDefinedMethodTerm udmt)
場所 MinorShift.Emuera.GameData.Function.SuperUserDefinedMethodTerm.GetIntValue(ExpressionMediator exm)
場所 MinorShift.Emuera.GameData.Variable.VariableTerm1D.GetStrValue(ExpressionMediator exm)
場所 MinorShift.Emuera.GameProc.Function.FunctionIdentifier.SET_Instruction.DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state)
場所 MinorShift.Emuera.GameProc.Process.runScriptProc()
場所 MinorShift.Emuera.GameProc.Process.DoScript()

376あなたの名前を入力してください:2022/11/08(火) 21:14:26 ID:aphXF6xg
eee 0.1.0.1
http://book-shelf-end.com/up/dwlink.cgi?eraRx3517.zip
>>375様の報告なさられたバグを修正いたしましたわ
動作報告をいただけたことを感謝申し上げますわ

わたくしの作業方針としましていわゆるホットパスにあたる部分を集中的に改良していきたいと思っております
現実的な用途においてPRINT系統の命令が秒間に実行される回数はせいぜい3桁程度でしょうからここのパフォーマンスは現状でも十分だと思っておりますわ
変数アクセスや数式の計算といった行為は非常に頻繁に行われるでしょうからこちらはまだ改善していきたいですわね

377あなたの名前を入力してください:2022/11/09(水) 20:27:06 ID:o1gXgRFc
調べても見つけられなかったんですが現状TOOLTIPの中身を改行するのは不可能ですか?
もしそうで可能ならば\nなり<br>なりで改行できるようにしていただけるとありがたいです
あとはSETDELAYと同じ要領でいいのでフォントサイズなんかも変えられるようにしていただけるとうれしいです

378あなたの名前を入力してください:2022/11/25(金) 19:58:22 ID:VGdKP1r6
>>376
eee 0.1.0.1でEra4Xを動かした所宙域マップおよび船内マップ表示が無くなりました
本体同梱のEmuera1824+v9・別途用意したEmuera1824+v16では正常にマップが表示されます
(それ以外は一応問題なく動いていそうでした)

379あなたの名前を入力してください:2022/12/03(土) 18:39:04 ID:IY.uy9KM
Emuera開発系の皆様、初めまして。
おかげさまでeraを楽しく遊ばせていただいております。

私はeraMegatenの起動が遅すぎる問題について、Emuera側の原因調査と改善を試みておりました。
つきまして、「Emuera1824+v8.1」にERBファイルを高速読み込みするモードを追加した改造版を作ってみました。
私個人の環境だとERB読み込み時間が24秒→5秒程度に改善しています。(その他の処理もあるため、全体としては通常の60%程度の時間でした。)

上記のご報告に加えて、ERBファイルのパッチではなくてEmuera自体の改造であるため
どこにアップロードしたらよいのか作法や手順等を知りたくてここに書き込みました。
お手数ですがご存じの方、よろしくお願いいたします。

380あなたの名前を入力してください:2022/12/03(土) 19:10:51 ID:IY.uy9KM
ちなみにERBファイル読み込み速度についてですが
読み込んだファイル内容を1行ずつ「Emuera\Sub\EraStreamReader.cs」の「public StringStream ReadEnabledLine()」
でチェック・取得している部分の処理がERBファイル読み込みの所要時間の大半を占めていました。
(既に皆様ご存じでしたらすみませんm(__)m)

上記の改造版ではチェック済みの内容をファイル出力しておくことで
次回以降はこのファイルをチェック無しで読み込むことで速度が改善するという理屈です。

381あなたの名前を入力してください:2022/12/03(土) 20:35:32 ID:4MnElVKw
アップロードはeraロダ3号機で良いのでは?

382あなたの名前を入力してください:2022/12/03(土) 20:56:18 ID:IY.uy9KM
なるほど、eraロダ3号機ですね。
ありがとうございました。m(__)m

383あなたの名前を入力してください:2022/12/05(月) 03:53:59 ID:DogpA89M
>>379
eraRx3534.zipのそれを試してみた所
とりあえずeraAS_0.663・era4Xは問題無く高速起動できるみたいです
(一応4Xの方はemueraの(元の)バージョンを下げる恰好になるのは気がかりではありますが)

ただエラーチェック済みのERBファイルを別の場所にコピー(+コメントの削除)しておくのではなくて
(元の場所にある・オリジナルの)ERBファイルを読み込む際にエラーチェックを省略するオプション設定を用意する、などの方が利便性は高そうだと思います

もちろん「そんなやり方をしたら事前にエラーを確認できない」というのはありますがエラーチェックと起動速度のどちらを取るかの話(極論「QUICKSTART内のERBを変更されたら確認できないのは同じ」)なので
「そもそもエラーを確認したい時に使うモードではない」と割り切っていいのではないでしょうか

384あなたの名前を入力してください:2022/12/05(月) 21:05:08 ID:SpnSgzbk
>>383
eraAS_0.663・era4Xにて高速起動に成功したとの報告、ありがとうございました。
わざわざ探した上で動作をお試しいただいたようで、ホントに感謝です。
改造元バージョンが古い件については恐縮ですが、eraMegatenでの標準版にあわせているということでどうかご了承下さい。

>ただエラーチェック済みのERBファイルを別の場所にコピー(+コメントの削除)しておくのではなくて
>(元の場所にある・オリジナルの)ERBファイルを読み込む際にエラーチェックを省略するオプション設定を用意する、などの方が利便性は高そうだと思います

上記のご助言につきましては、内容に強く同意しつつも私の力量不足により実現困難となっております。
今回の改造版Emueraが出力するファイルはコメントの削除だけでなく内容の変換・加工も行っているのです。
例えば[[キャラ:○○]]→2566 みたいな感じですね。内容精査・チェックと変換が入り組んでいる感じです。
内容チェックなしモードだけなら可能だと思いますがこの変換部分を効率化できるだけの知識がないため
苦肉の策としてEmueraが変換したERBの内容をそのままファイルとして保存しておき
高速起動モード起動時は該当処理自体をすっ飛ばして変換後ERBを読むだけ、といった対策をしております。

以下、eraロダ3号機にうpした改造版Emueraです。興味のある方は是非お使いください。
http://book-shelf-end.com/up/dwlink.cgi?eraRx3535.zip

385あなたの名前を入力してください:2022/12/22(木) 01:55:51 ID:YhBad3Pk
eee 0.1.1.1
https://book-shelf-end.com/up/dwlink.cgi?eraRx3553.zip
>>378様の報告内容を含めた不具合の修正を行いましたわ
他に_Rename.csvによるファイル置換処理を高速化していますが恐らくEraMegaten以外で差を体感するのは難しいと思われますわ

386あなたの名前を入力してください:2022/12/22(木) 21:42:59 ID:4HrfOkf6
すいません、ちょっと質問したい事があります

@SYSTEM_TITLE

CALL TEST
PRINTFORMW COUNT == {COUNT}

@TEST
#DIM LCOUNT, 2
#DIM ループ数 = 3, 7
#DIM 再帰回数

FOR LCOUNT:再帰回数, 0, ループ数:再帰回数
IF !LCOUNT:再帰回数 && !再帰回数
再帰回数++
CALL TEST
再帰回数--
ENDIF

SIF !再帰回数
COUNT++
NEXT

上のコードの結果は3じゃなく7でした、これは仕様なのでしょうか?

387あなたの名前を入力してください:2022/12/22(木) 22:27:09 ID:EHYHbpr2
その手のERBの書き方に関する質問は初心者スレの方がいいよ

388あなたの名前を入力してください:2022/12/22(木) 22:47:34 ID:UFEkDy/A
なるほどね、再帰から抜けた後にループ回数が7になってるわけだ

FOR前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
IF 始 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
FOR前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:0 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:0 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:0 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:0 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:1 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:1 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:1 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:2 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:2 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:2 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:3 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:3 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:3 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:4 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:4 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:4 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:5 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:5 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:5 COUNT:0
FOR後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:6 COUNT:0
SIF前 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:6 COUNT:0
SIF後 再帰回数:1 ループ数:再帰回数:7 LCOUNT:再帰回数:6 COUNT:0
IF 終 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:0
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:0 COUNT:1
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:1 COUNT:1
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:1 COUNT:1
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:1 COUNT:2
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:2 COUNT:2
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:2 COUNT:2
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:2 COUNT:3
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:3 COUNT:3
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:3 COUNT:3
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:3 COUNT:4
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:4 COUNT:4
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:4 COUNT:4
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:4 COUNT:5
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:5 COUNT:5
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:5 COUNT:5
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:5 COUNT:6
FOR後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:6 COUNT:6
SIF前 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:6 COUNT:6
SIF後 再帰回数:0 ループ数:再帰回数:3 LCOUNT:再帰回数:6 COUNT:7

389妊)|д゚):2022/12/22(木) 23:17:32 ID:CA8fp5ag
実は初期実装の仕様から延々と残っている課題で、Emueraはループはスタックされる形になっていないということから来る挙動になります。
スタックではないとどうなるかと言うと、同一のREPEAT・FORが呼び出される度に、カウント変数とループ回数が再定義されることを繰り返すことになりまして、
そのため、最後に呼び出された時のループ回数が再帰を抜けた後に残ったFORのループ回数となってしまっている
という現象になります。

390妊)|д゚):2022/12/23(金) 00:26:35 ID:geKxUqt6
じゃあ、スタックにすればいいんじゃね?ってなりそうなんですが、
CONTINUEとBREAKの仕様がこれまた、再帰をまーーーーーったく想定してないやばい奴なもんで、
かなり絶望したくなる何かになっております。

391あなたの名前を入力してください:2022/12/23(金) 07:31:08 ID:nwpQ.sys
>>389-390
なるほど、理解しました、今後そういう構文は避けます
詳しい解説ありがとうございました、勉強になります

392あなたの名前を入力してください:2022/12/24(土) 21:22:39 ID:J/a5WUYk
eramakerのループとGOTOまわりの挙動を確認していたら大変奇妙な問題に遭遇しましたわ

@TEST
A = 0
REPEAT 5
$LABELJMP
PRINTFORML COUNT={COUNT}
REND
PRINTFORML A={A}
IF A == 0
A = 1
COUNT = 0
GOTO LABELJMP
ENDIF

このようなコードが無限ループを引き起こしますわ

393あなたの名前を入力してください:2022/12/24(土) 21:45:25 ID:J/a5WUYk
詳細を調べたところ、どうやらREPEATに投げられる値より2以上小さい値(この場合は3以下)をCOUNTにセットしてループ内部にGOTOするとRENDの後に処理フローが関数の先頭に戻るようですわ
正直なところ原因が皆目検討つかない意味不明な挙動ですわ
他にもGOTOでループに飛び込んだ際にCOUNTが増える(emueraは増えない)という挙動の違いも確認しましたわ

eramakerをターゲットにした新規バリアントも長らく登場していないことを考えると、ループの再帰呼び出しがおバグりになる問題含めてeramakerとの互換性を切り捨ててでも挙動を整理してしまってよいのではと存じ上げますわ
あるいはループ内へのGOTOと再帰呼び出し(確認しやすい直接再帰だけでも)を解析時にエラーまたは警告扱いにするといった対処も考えられます
皆様はどう思われますでしょうか?

394妊)|д゚):2022/12/24(土) 22:07:21 ID:1GJV9Cqs
何が起きてるかはわかる
eramakerだとどういう挙動になるんだったかな…

ここらへんもループ系統がスタック処理になってないのが本質的原因ではありますね

395妊)|д゚):2022/12/24(土) 22:21:51 ID:1GJV9Cqs
えーと、予想になりますが
両者ともに
GOTO後RENDでループを抜けるか判定
抜けない場合はREPEATに戻るまでは共通で、
eramakerはここで新たにループ先頭に来たと判定しループを開始するが、
Emueraの場合は入り直すという処理をしないという違いになります。
これは再現する必要のある仕様でもないしどうでもいいかー

ちなみにループ周りのEmueraの挙動の問題は互換性はまったく無関係で、単純にEmueraの設計そのものの問題です

396あなたの名前を入力してください:2022/12/24(土) 22:41:14 ID:zlEjYtkU
>>385
era4Xの旧版相当(少なくともエラーを吐いた部分は>>378当時のもの)ですが宙域画面へと出ようとしたらエラーを吐いて落ちました
(船内マップは正常に表示されるようでした)

LIBRARY\WindowDrawer.ERBの1396行目でエラーが発生しました:eee
m_arrWndText:nWndId:(ARG) '= ARGS
エラー内容:インデックス-1は2次元配列変数M_ARRWNDTEXTの1次元目の範囲外です
現在の関数:@WNDMGR_WINDOWMGRMAIN(LIBRARY\WindowDrawer.ERBの1266行目)
関数呼び出しスタック:
↑LIBRARY\WindowDrawer.ERBの789行目(関数@WNDMGR_TEXTSET内)
↑SLG4X\MAP_WINDOW.ERBの722行目(関数@DRAW_SPACE_FORCE_OCCUPANCY内)
↑SLG4X\MAP_WINDOW.ERBの52行目(関数@DRAW_WINDOW内)
↑SLG4X\SLG_SHOP.ERBの37行目(関数@SLG_SHOP内)
↑SHOP\SHOP_LIFE\SHOP_LIFE82_宙域画面.ERBの23行目(関数@SHOP_LIFE_EVENTBUY82内)
↑SHOP\SHOP_LIFE.ERBの89行目(関数@EVENTBUY_LIFE内)
↑SHOP\SHOP.ERBの132行目(関数@EVENTBUY内)

また他のイベントの発生でも落ちました
どちらも旧版に同梱されていたEmuera1824+v9.exeや別途用意したEmuera1824+v16.exeでは正常に進行します

SYSTEM\EVENT_DAILY\各イベント群\LENDER_金貸しの来訪.ERBの74行目で予期しないエラーが発生しました:eee
System.ArgumentOutOfRangeException:インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
パラメーター名:index
場所 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)

場所 MinorShift.Emuera.GameProc.ProcessState.IntoFunction(CalledFunction call, UserDefinedFunctionArgument srcArgs, ExpressionMediator exm)

場所 MinorShift.Emuera.GameProc.Function.FunctionIdentifier.CALL_Instruction.DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state)

場所 MinorShift.Emuera.GameProc.Process.runScriptProc()

場所 MinorShift.Emuera.GameProc.Process.DoScript()

397あなたの名前を入力してください:2022/12/25(日) 00:46:43 ID:D5/gelw6
これはなかなかに恥ずかしいケアレスミスですわね
>>396様の不具合を修正いたしましたわ
eee 0.1.1.1
http://book-shelf-end.com/up/dwlink.cgi?eraRx3555.zip

398あなたの名前を入力してください:2022/12/25(日) 01:00:38 ID:D5/gelw6
>>396様へ
イベントで落ちる不具合は再現・修正ができましたが上の宙域画面へ出るときのエラーがわたくしの環境では再現いたしません
メニューから進行カテゴリの[宙域画面]を開いたときに落ちるということでよろしいでしょうか?
差し支えなければ落ちる状況の再現が取れるセーブデータをアップロードしていただきたく存じます

399あなたの名前を入力してください:2022/12/25(日) 02:16:12 ID:t6zrh.L.
>>398
(eeeおよびera4X双方共に)最新版においても・セーブデータを問わず(例え解凍したまま・過去版からデータを移行していない状態で最初から始めた直後であっても)メニューから宙域画面を出そうとするとエラーを吐いて落ちます

再現しないとの事ですが
4Xスレ767にリンクがあるera4X-main.zipの中身(era4X ver 1.4.14)はだいぶ古いバージョンの様であり(769でリンクミスと言及されています)
一番新しい所で4Xスレ764にリンクがあるera4X-feature-replace_K.zip(era4X ver 2.0.0(このバージョン表記も変更が無いままの更新が続いていますが))の方がより新しいバージョンであると思われます
4X本体の取り違えの可能性はありませんでしょうか

また(宙域画面を表示した際にエラー落ちはしない)era4X ver 1.4.14であってもクリックした際に表示される本来は画面中央下のボックスの中に表示されるべき情報がセクターマップ右横部分に表示されるなど非正常な動作をしている様です

400Яeverse★:<売却済み>
<売却済み>

401あなたの名前を入力してください:2023/01/12(木) 19:37:49 ID:naHdB.Cw
>>399
ご指摘どおりera4Xが古いバージョンだったようですわ
無事に再現取れましたので改めてお礼申し上げますわ

eee 0.1.1.2
http://book-shelf-end.com/up/dwlink.cgi?eraRx3589.zip
時間がかかりましたが不具合修正のみですわ

402あなたの名前を入力してください:2023/03/12(日) 00:20:52 ID:mocyFadc
特定フォルダ以下をemuera規定のフォルダ構成と同じ様に読み込めたら便利だと思います。
こんなかんじで↓
eraNanika
├CSV
├ERB
├resources
└MOD
 ├任意フォルダA
 │├CSV
 │├ERB
 │└resources
 ├任意フォルダB
 └任意フォルダC...

403妊)|д゚):2023/05/28(日) 17:22:23 ID:EZxISraA
○1824+v18
https://ux.getuploader.com/ninnohito/download/487

・ビットマップファイルの一部拡縮表示でひどいことになるのを軽減(根本的原因はMS側なのでどうにも
・CUSTOMDRAWLINEが毎度文字列を生成して無駄に処理が重いので、色々変更
 (DRAWLINEFORMの方もおいおい処理変更予定)

404あなたの名前を入力してください:2023/07/09(日) 01:02:17 ID:/T.kjoEE
HTML関係のnonbuttonのposをかなり活用しているのですが
HTML_GETPRINTEDSTRで再取得しようとしたところnonbuttonの情報が失われてしまいました。
nonbuttonの情報もHTML_GETPRINTEDSTRで再取得できるようには出来ないでしょうか?
よろしくお願いします。

405妊)|д゚):2023/07/11(火) 22:18:26 ID:U0WLzBhI
>>404
テストケースあったりします?

406あなたの名前を入力してください:2023/07/12(水) 11:01:16 ID:LauQ5ik2
>>405
すみません、私の方で問題があったようです。
お手数おかけし申し訳ございません。

407あなたの名前を入力してください:2023/09/15(金) 01:23:44 ID:ezGjpZP.
最近OSDNがクソ重くて困る…

408妊)|д゚):2023/10/20(金) 00:30:43 ID:qxucA8ec
将来的なこと考えると、ここらへんでWindows依存の処理系から脱却を図りたいところだが、一部DLL直叩きしてる処理あるのをどうするかだなぁ
それ以前にSkiaSharpあたりの習得から始めないといけないけど

409あなたの名前を入力してください:2023/10/28(土) 09:13:22 ID:HHbkTXbo
とりあえず薄いラッパーみたいなのを作ってみて、小手先じゃ対応できない部分は元の処理を書きなおして解消するか、
それがごく一部ならば依存機能をむしろ独立したライブラリにすれば、各プラットホームにそこだけ移植すれば動かせるってことなんじゃないだろうか?

410あなたの名前を入力してください:2023/10/29(日) 20:43:33 ID:QUgRJPdo
目が悪いんで解像度+150%に拡大してるせいか
前々から画面サイズの設定が上手く反映されない問題あったけど
とうとう設定画面自体が異様に縦長になって、設定変更できなくなってしまった

411あなたの名前を入力してください:2023/10/31(火) 02:29:48 ID:O06xHUuM
Windows依存から離れようとしてる人チラチラいるけどみんないきなりWinFormで脱落してる印象

412 ◆eraTWk3.v6:2023/11/14(火) 02:04:02 ID:wwXQXwyU
https://book-shelf-end.com/up/dwlink.cgi?eraRx4164.zip
海外の開発者から転載許可を貰った実行ファイルです。
画像を必要な時に読み込むようになりメモリ使用量を削減するとのこと。

413あなたの名前を入力してください:2023/11/27(月) 11:03:46 ID:RGqby8xk
最近Emueraのソースコードが公開されてるのに気が付いて、いじって遊ばせてもらってます。
.NETを最新にして、.NETの標準乱数を使うようにしたり、タイマーを標準のDateTimeを利用するようにしたり…
WinFormsを剥がすのは無理ですけど_LibraryにあるDLL依存は簡単に剥がせそう。

414あなたの名前を入力してください:2023/11/28(火) 06:35:54 ID:H4j0rFVk
口上のネタが浮かばないときってどうしてるかな
ちょっとたくさん作らないといけなさそうなんだけど

415あなたの名前を入力してください:2023/11/28(火) 06:40:28 ID:H4j0rFVk
スレチかもだけど、なんだか製作相談スレが動いてないみたいだから
やっぱりあっちで聞いた方がよかったかな

416あなたの名前を入力してください:2023/11/29(水) 14:32:47 ID:fnH.yBgQ
WinFormsから脱却とか目指すならeramakerから脱却してnwjsやElectronのが良さげにも思える
あれがJavaみたいにライブラリをサンドボックスに出来るかはしらんけど

417あなたの名前を入力してください:2023/11/29(水) 22:28:56 ID:MahckLDI
erabasic版のEmueraが作れる程度の命令は持ってるサブセット処理系を作ってみるとか?

418あなたの名前を入力してください:2023/12/14(木) 23:16:33 ID:va7IeBrs
https://book-shelf-end.com/up/dwlink.cgi?eraRx4198.zip
>>413 ですが、フレームワークのバージョンを上げて、C#の新しい言語機能をいくつか利用しただけでだいぶ早くなった(感覚)ので、公開します。
動作自体に手は入れていないので、大きなバグとかは無いはず…
唯一挙動が違うのが、C#標準の乱数が内部状態を公開しないので乱数の状態を保存できないことですが、標準乱数の高速化の恩恵を受けたかったので、妥協しています。
もし使うのなら.NET 8のランタイムを入れてください

419あなたの名前を入力してください:2024/01/11(木) 20:54:22 ID:fS1vVS3g
>>418
era悪魔でメイド 2023_12_21 で使わせてもらった
体感、確かに軽くなったが不具合発生
「日付変更時に固まることがある」

いつでも固まるわけでは無いんだが、「一日が終わった・・・(SYSTEM.ERB 841行目)」の後で固まることが複数回あった。

DRAWLINE
PRINTW 一日が終わった・・・

;画面の色替え
CALL FADEOUT, TOSTR(GETBGCOLOR()), 4
TWAIT 100, 1
;一旦ログを流す
CALL MULTILINE, WINDOWROWS()
CALL EFFECT_ALLRESET

こんな処理の部分なので、自分のオマ環でないなら参考にしてくれ

420あなたの名前を入力してください:2024/01/12(金) 21:53:09 ID:CFIcsywA
>> 419
使用とバグ報告ありがとうございます

テストのためメイドさんを何日も放置して眠り、
タイマー系に問題が発生しているのを確認したので修正しました。

https://book-shelf-end.com/up/dwlink.cgi?eraRx4245.zip

src.zip以外をD&Dして.NET 8のランタイムをインストールしていただければ使用できます。

421あなたの名前を入力してください:2024/01/12(金) 23:31:01 ID:5YbUC.Y6
>>420
修正thx
メイドさんを何日も放置して眠り、でクスっとした

net8版emueraはこの週末にでも使わせてもらう

422あなたの名前を入力してください:2024/01/13(土) 05:41:33 ID:7AoZJiF.
>>420
別のコード変更を行っている最中に上のファイルだと、開発環境以外で実行できないという致命的な不具合を発見したので修正版を上げておきます…
https://book-shelf-end.com/up/dwlink.cgi?eraRx4247.zip
他の変更も入ってしまってるけど挙動に変更は無いので問題ないはず(2度目)

423あなたの名前を入力してください:2024/01/14(日) 18:43:46 ID:kF3skkrc
>>422
eraMegaten 150+151+151patch2+口上まとめ という環境で使おうとしてみたが起動しなかった

emuera.log
DDS-NETに接続しています...
警告Lv2:関数\画像エディット用ライブラリ\パーツ共通設定.ERH:24行目:行連結始端記号'{'が使われましたが終端記号'}'が見つかりません
警告Lv2:RPG\戦闘\SYSTEM_BATTLE.ERH:20行目:"TYPENUM"は解釈できない識別子です
警告Lv2:RPG\戦闘\SYSTEM_BATTLE.ERH:21行目:"TYPENUM"は解釈できない識別子です
ERHの読み込み中にエラーが発生したため処理を終了しました

>パーツ共通設定.ERH:24行目;#DIMS _CN_DRAW_CHARASPRITE_NAME,200
>SYSTEM_BATTLE.ERH:20行目;#DIM SAVEDATA CHARADATA C_HAVE_SKILL_ATK_TYPE, TYPENUM
>SYSTEM_BATTLE.ERH:21行目;#DIM ENEMY_HAVE_SKILL_ATK_TYPE, TYPENUM

スパゲティが食べれなかった可能性もあるが……参考までに書き込んでおく

424あなたの名前を入力してください:2024/01/15(月) 05:06:32 ID:7IZysM8U
>>423
使用とバグ報告ありがとうございます。
https://book-shelf-end.com/up/dwlink.cgi?eraRx4249.zip

eraMegatenに関する修正とタイマー処理の修正忘れを修正して、
UI系の最適化をいくつか行いました。
その際の都合でWINAPIモードが使用できなくなりました。
もし不都合があれば教えてください。

それと前回のバージョンからなのですが、ソースファイルを最初に一気に読み込むように変更したので、起動時の反応が若干悪いです。

425あなたの名前を入力してください:2024/01/15(月) 07:35:45 ID:7IZysM8U
https://book-shelf-end.com/up/dwlink.cgi?eraRx4250.zip
徹夜の成果でeraMegatenの起動が半分以下になる最適化方法を発見できたので、
連投になって申し訳ないのですがアップロードします。

当方の環境では15秒ほどで起動可能になりました

426あなたの名前を入力してください:2024/01/19(金) 16:39:05 ID:LIgYFdCo
https://book-shelf-end.com/up/dwlink.cgi?eraRx4251.zip
さらなる最適化の結果、eraMegatenの起動時間を10秒程度に短縮することができました。

ここから更に高速化、軽量化するためには、全体の大幅な書き直しが必要だと思われ、
私がERB構文に詳しくないのでこの辺で終わろうと思います。

もし不具合がありましたら、教えてください。

427あなたの名前を入力してください:2024/01/21(日) 04:32:53 ID:TfA4x8fc
.NETの標準乱数って線形代数だっけ?んでeraが昔からメルセンヌツイスタでこれが今になると結構遅めだよね
XORSHIFTとかその派生にしたらもっと早くならないかな

428妊)|д゚):2024/01/21(日) 09:11:24 ID:D5lbVSJg
C#のRandは結構問題ありますからねぇ…
メルセンヌツイスタが空間でかいわ遅いわなのは今ではそのとおりで、個人的には一応乱数アルゴリズム変えようかなって計画はある
XORSHIFT系もありだし、PCGあたりも候補になるかなと

429あなたの名前を入力してください:2024/01/21(日) 12:16:12 ID:MgsVUm/M
>> 427
C#は以前は線形合同法をベースにしたLagged Fibonacci法が使用されていましたが、
.NET6からxorshift系のxoshiro256**を標準乱数に使用しています。

430妊)|д゚):2024/01/21(日) 19:09:20 ID:D5lbVSJg
ここまで書いておいてなんだが、RANDDATAが存在する時点で移行が難しいな…
Emueraの使ってるSFMTがやっていることを前提にしてて、他のルーチンではこんなことやってないから、再現無理だ、これ

431あなたの名前を入力してください:2024/01/22(月) 01:44:31 ID:bAjKRIR6
>>429
あ、そうなのか
結構簡単に互換性壊してんのね.NET
お疲れ様でした

432あなたの名前を入力してください:2024/01/22(月) 02:15:16 ID:fDl/rrUw
>>431
シード値を指定された場合従来のLagged Fibonacci法を使用し、
シードが指定されなかった場合、つまり再現性を求められなかった時のみxoshiro256**を使うことで、
一応互換性について問題がおこらないように配慮はされています。

433あなたの名前を入力してください:2024/01/22(月) 18:36:18 ID:6DLdvhjo
OSDNが閉鎖するみたいです

434あなたの名前を入力してください:2024/01/22(月) 18:43:24 ID:WvQOvzNA
emueraの解説ページがなくなるのは困りますね
どこか引越しすることになるのかな

435あなたの名前を入力してください:2024/01/22(月) 23:09:02 ID:6DLdvhjo
移転できるならまとめWikiあたりに移転すべきかも
買収後のOSDNの重さ考えるとなおさら
構文の解説はEmuera.EM+EE版のが充実してるけど完全互換ではないからなぁ

436妊)|д゚):2024/01/22(月) 23:41:46 ID:yRVjnh2E
後はとりあえず、旧Ver含めた各種ファイルの引き上げも必要っすね

437あなたの名前を入力してください:2024/01/24(水) 14:16:57 ID:d0qYcHSs
https://book-shelf-end.com/up/dwlink.cgi?eraRx4266.zip
扱いやすいよう実行ファイルが一つになるようにコンパイルオプションを変更しました。
変わらず.NET 8のランタイムは必要です。

438あなたの名前を入力してください:2024/02/01(木) 00:11:14 ID:NKP7Y6xc
OSDN(とスラド)の閉鎖延期ですってよ(どのみち移転は必要だろうけど)

439あなたの名前を入力してください:2024/02/04(日) 00:22:41 ID:W457uTu.
>>437
.NET 8のEmuera
-Debug を引数にしたデバッグモードは使えないようになってるの?

440あなたの名前を入力してください:2024/02/04(日) 01:03:33 ID:29lhq/f.
>>439
引数の解析を作り直した際に、大文字での-DEBUGしか認識しなくなっていたようです。
修正しておきました。テストありがとうございます。

https://book-shelf-end.com/up/dwlink.cgi?eraRx4281.zip

441あなたの名前を入力してください:2024/02/04(日) 16:21:00 ID:W457uTu.
>>440
修正助かる
小文字のみはやったが、大文字のみは予想外だった

442あなたの名前を入力してください:2024/02/14(水) 03:35:52 ID:AyG.XzPA
>>440です
フォントに関するバグを見つけたので近いうちに修正版を出します。

ところで、現状では起動処理以外は殆ど手を加えていません。
これは起動以外に重いと感じる処理が見つからなかった為です。
もし、処理落ちするケースを教えていただければ、もう少し最適化できるかもしれません

443あなたの名前を入力してください:2024/02/18(日) 17:30:18 ID:2jj7wdgI
.NET 8のEmuera で eraMegatenやってたらバグに遭遇した
特殊弾変更ができない

セットアップ → 装備変更 → キャラ選択 → 特殊弾変更

バリアント付属のemuera1824では特殊弾変更の操作可能
.NET 8のEmuera由来と思われる

444あなたの名前を入力してください:2024/02/18(日) 21:28:37 ID:9pGU7jcw
>>443
https://book-shelf-end.com/up/dwlink.cgi?eraRx4313.zip

ありがとうございます
上記のフォントのバグと報告していただいたeraMegatenの装備変更のバグ(キー入力のバグ)を修正しました。

実行に必要なファイルが2つになりました。Emuera.exeとlibSkiaSharp.dllです。
両方フォルダに入れて使ってください。

また、オリジナルと同じように起動中でもウィンドウが応答する様になりました。
起動速度はさほど犠牲になっていないはずですが環境によるので遅くなっていたら教えてください。

それと、これはおまけみたいなものですが、別作業の副作用でWebPを読み込めるようになりました。
eraTWが起動するようになりましたが、EM+EEの拡張に対応していないので途中で落ちます。

以上です。報告ありがとうございます。

445あなたの名前を入力してください:2024/02/20(火) 17:58:36 ID:ftLgpF5A
>>444
https://book-shelf-end.com/up/dwlink.cgi?eraRx4321.zip

あるバグを修正していた時に、eraTWがEM+EEの拡張をほとんど使っていない事に気づき、
ピンポイントでそれを実装することで、eraTWがある程度動くようになりました。
時間がないのでほとんどテスト出来ていませんが、元々のバグ修正と共にアップロードしておきます。

446あなたの名前を入力してください:2024/02/21(水) 00:05:32 ID:7c5Bs96U
eraTWで標準採用されているのはEM+EEじゃないはずなので、eraTW向けEmueraの機能拡張部分をEM+EEが取り込んだだけでは?

447あなたの名前を入力してください:2024/02/23(金) 14:40:17 ID:qXV6G5Mw
>>444-445
修正助かる、あとでtwでも遊んでみる
気づいたらeratenに取り込まれる予定なようで、メデタイ

448あなたの名前を入力してください:2024/03/01(金) 22:06:13 ID:gVPTnFrk
>>445
https://book-shelf-end.com/up/dwlink.cgi?eraRx4346.zip

eraMegaten サーバーの皆さんのフィードバック等に基づき
様々なバグを修正し、パフォーマンスを改善し、
新しい乱数の使用をオプションにし、デフォルト設定では互換性を維持するようにしました。
又、マウスを合わせているボタンの背景色を変えるオプション等を追加しました。

土日前にこちらにもアップしておきます。

449あなたの名前を入力してください:2024/03/01(金) 22:15:16 ID:aV684O/2
Emuera1824 で 「予期しないエラー」が出たので報告します。

【環境】 Emuera1824+v18 (>>403)、v16、v9 / Windows11 x64 Home 23H2 / .NET Framework 4.8.9181.0
【概要】 ARRAYSORT 使用時、指定する範囲上限が配列の限界を超えていると .NET エラー (System.ArgumentException)。
範囲境界検証漏れ、エラートラップ漏れ。
【エラー箇所】 src1824.backup\Emuera\GameData\Variable\VariableEvaluator.cs Line 730-731辺り
【検証コード】
@SYSTEM_TITLE
#DIM LIST, 4
LIST = 1, -1, 2, -2
; ↓配列範囲の上限を超えた指定:LISTのサイズ(= 4)で処理範囲が制限されるか、または解析時/実行時エラーが出ることを期待。
ARRAYSORT LIST, FORWARD, 1, 4
PRINTFORMW %LIST:0%, %LIST:1%, %LIST:2%, %LIST:3%

【エラーログ】
Now Loading...
MAIN.ERBの10行目で予期しないエラーが発生しました:Emuera1824+v18
System.ArgumentException:ソース配列の長さが足りません。srcIndex、長さおよび配列の最小値を確認してください。
場所 System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
場所 MinorShift.Emuera.GameData.Variable.VariableEvaluator.SortArray(FixedVariableTerm p, SortOrder order, Int32 start, Int32 num)
場所 MinorShift.Emuera.GameProc.Process.doNormalFunction(InstructionLine func)
場所 MinorShift.Emuera.GameProc.Process.runScriptProc()
場所 MinorShift.Emuera.GameProc.Process.DoScript()
※※※ログファイルをemuera.logに出力しました※※※

450妊)|д゚):2024/03/01(金) 23:16:37 ID:Chn.3qSU
>>449
こらひどい
ちょっと見て来ます

451妊)|д゚):2024/03/01(金) 23:34:26 ID:Chn.3qSU
○1824+v19
https://ux.getuploader.com/ninnohito/download/488

>>449修正できたはず(手元ではしっかりハンドリングできてる

452あなたの名前を入力してください:2024/03/02(土) 00:46:54 ID:OXfpcBKc
https://book-shelf-end.com/up/dwlink.cgi?eraRx4348.zip
>>451 こちらに追従させて頂き、ついでに配列のソート処理を書き直し、逆順ソートを高速化しました。

453>>449:2024/03/02(土) 10:09:11 ID:Ht69eW.I
>>451 素早い対応ありがとうございます。.NET例外が治っているのを確認しました
些細ながら、"私家改造版Emuera_readme.txt" の「◎現在のベースバージョン」の番号がv18のままでした
・Emuera1824+v18
 ○ARRAYSORTの第3変数と第4変数の和が範囲外になった時のハンドル漏れ修正

454fairiesvillage ◆O5Ld6sWb7U:2024/03/08(金) 21:33:39 ID:B0Diy3TY
よし、OSDNのEmueraのwikiの文章・画像データを回収できた
大した重さじゃないはずなのにすごい時間かかったなあ
Emueraのソースと実行ファイルは証明書エラーでとれんかった…

455あなたの名前を入力してください:2024/03/17(日) 16:52:00 ID:eO8Y5F9w
>>452
https://book-shelf-end.com/up/dwlink.cgi?eraRx4378.zip
変更点が多くなったので新しいバージョンとして投稿させていただきます。

以下が変更点です
・起動を高速化
・再起動処理を変更し、メモリを適切に開放するように変更
・実行ファイルが分かりやすいように、デフォルトのアイコンを変更
・ログ (前バージョンから有りますが書き忘れました)
 ・戦闘に.NET Emuera (バージョン)と表記されるように変更
 ・実行ファイルと同じ階層にpatch_versionsフォルダがあり、中にテキストファイルが有った場合、内容をログに含めるように変更
  主にeraMegatenでパッチバージョンをログに表記するための機能です
・UIの調整
 ・メニューを選択時に文字がホワイトアウトする事に違和感を覚えたので、変化しない様に変更
 ・その他細かい調整
・その他最適化

456あなたの名前を入力してください:2024/03/19(火) 00:28:10 ID:DDBJCEZQ
1824+v19にて奇妙な挙動を確認したので報告させていただきます。

読み込み完了後、メニューバー等から再起動を行うと、初回と比べて読み込み完了後のメモリ消費量が明らかに増加します。
更に再起動を繰り返していくと徐々に読み込み完了後のメモリ消費量が増加していきます。
増加量はバリアントごとに異なりますが、eraMegaten(口上あり)で2.5GBほどera悪魔でメイドで200MB程です。

繰り返していると、あるタイミングで初回と同等のメモリ消費量になる為、再起動時にGCが動いていないのではないかと推測します。

457あなたの名前を入力してください:2024/03/19(火) 02:21:01 ID:zNFBIsrk
みなさんお疲れ様です
まさか今あちこちでemuera制作が進むなんてすごいですねぇ……

458妊)|д゚):2024/03/23(土) 05:53:24 ID:MiyWLYTE
>>456
再起動やタイトル戻る時のリソース削除は完全にGCにかけずに、回収待ちなものが混ざってるので、後者が影響してるのかなという第一印象ですかね
Collectさせてからやるとどうなるかですかね、ちょっと試験してみます

459妊)|д゚):2024/03/23(土) 06:02:12 ID:MiyWLYTE
試してみたけどあんま変わらんですね
おそらく行データなどが未使用と判定されるまでのタイムラグがあるので、現状の実装では回避不能なのかもなぁ

460妊)|д゚):2024/03/26(火) 21:23:51 ID:1.eR.Lns
○1824+v20
https://ux.getuploader.com/ninnohito/download/489

・INPUTSに"@"1文字を渡すと何も起こらず入力処理も抜けないのを修正
無条件でデバッグコードだと決めつけるのも考えもの
readmeが更新されてないのは、単に忘れただけなので気にしない方向で

461あなたの名前を入力してください:2024/03/29(金) 20:05:33 ID:YCtI9zq.
>>455
.NET(8) 版v0.2.2.13 で不具合
* 起動時引数 -debug によるデバッグモードでデバッグウインドウを開いているとき、メニューから再起動を実行すると .net JITエラー
* VARSET命令の第三引数以降が機能しない。VARSET variable, n, A, B を指定しても、[A, B) 範囲での値設定が行われない
* TINPUT系命令の第三引数 残り時間表示フラグを指定したとき、カウントダウンの途中経過表示が更新されない

462あなたの名前を入力してください:2024/03/29(金) 23:33:29 ID:5vIRYc/.
>>461
報告ありがとうございます。

1と3に関しては確認し修正できたのですが、2に関して手元で再現できず…
再現するコードなどがあれば頂けると有り難いです。

463461:2024/03/30(土) 00:01:04 ID:wWUzFZHU
追加で確認したところ、2はDYNAMIC 変数で発生するようです。
【テストコード】
@TEST
#DIM DYNAMIC DVARS,10 = 0,1,2,3,4,5,6,7,8,9
#DIM SVARS,10 = 9,8,7,6,5,4,3,2,1,0
PRINT (PRE) DVARS:
FOR LOCAL, 0, 10
PRINTFORM {DVARS:LOCAL,2},
NEXT
PRINT  (PRE) SVARS:
FOR LOCAL, 0, 10
PRINTFORM {SVARS:LOCAL,2},
NEXT
PRINTL
DVARS:5 = -1,-2,-3
PRINT (POST) DVARS:
FOR LOCAL, 0, 10
PRINTFORM {DVARS:LOCAL,2},
NEXT

SVARS:5 = -1,-2,-3
PRINT  (POST) SVARS:
FOR LOCAL, 0, 10
PRINTFORM {SVARS:LOCAL,2},
NEXT
PRINTL
VARSET DVARS , -5, 0, 5
PRINT VARSET DVARS:
FOR LOCAL, 0, 10
PRINTFORM {DVARS:LOCAL,2},
NEXT
VARSET SVARS , -5, 0, 5
PRINT  VARSET SVARS:
FOR LOCAL, 0, 10
PRINTFORM {SVARS:LOCAL,2},
NEXT
PRINTW

【.NET Emueraログ】
# 環境情報
.NET Emuera 0.2.2.13

# ログ

Now Loading...
(PRE) DVARS: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, (PRE) SVARS: 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,
(POST) DVARS: 0, 1, 2, 3, 4,-1,-2,-3, 8, 9, (POST) SVARS: 9, 8, 7, 6, 5,-1,-2,-3, 1, 0,
VARSET DVARS: -5,-5,-5,-5,-5,-5,-5,-5,-5,-5, VARSET SVARS: -5,-5,-5,-5,-5,-1,-2,-3, 1, 0,

464あなたの名前を入力してください:2024/03/30(土) 01:55:12 ID:6C6L2jjE
>>463
https://book-shelf-end.com/up/dwlink.cgi?eraRx4394.zip

ありがとうございます。
1,2,3が修正出来たはずです。

そのほかにいくつか作業中の変更が入っています
・v20の修正の取り込み
・最適化データを保存してより適切な最適化が行われるように
・exeと同階層のDataフォルダ内にerbフォルダなどが配置されていても読み込めるように
(ファイル整理用)
フォルダ階層のイメージ
-Data
--erb
--csv
--etc...
-Emuera.exe

465461:2024/03/31(日) 16:41:22 ID:zXJTVGI2
修正直後で申し訳ないですが、デバッグウインドウでの不具合を報告します。
【環境】 Emuera1824+v20 (>>460) : 少なくとも 1824+v9 〜 / Windows 11 x64 Home 23H2 / .NET Framework 4.8.9181.0 built by: NET481REL1LAST_C
     .NET(8) Emuera v0.2.3.3 (>>464) / .NET 8.0.1 でも発生
【現象】 デバッグウインドウのコンソールタブ内テキストボックスで、上キーで履歴を参照し入力する事を繰り返すと、約100件目で.NET JIT 例外。下キーでは発生しない?
【再現手順】
1. 起動時オプション -debug で起動
2. デバッグウインドウ → コンソール タブを選択
3. テキストボックスに任意の式を入力。参考に (A++)
4. 「上カーソルキー+Enter」 を約100回繰り返す

【エラーログ】
************** 例外テキスト **************
System.IndexOutOfRangeException: インデックスが配列の境界外です。
場所 MinorShift.Emuera.Forms.DebugDialog.updateInputs()
場所 MinorShift.Emuera.Forms.DebugDialog.textBoxCommand_KeyDown(Object sender, KeyEventArgs e)
場所 System.Windows.Forms.Control.OnKeyDown(KeyEventArgs e)
場所 System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
場所 System.Windows.Forms.Control.WmKeyChar(Message& m)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.TextBoxBase.WndProc(Message& m)
場所 System.Windows.Forms.TextBox.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** 読み込まれたアセンブリ **************
mscorlib
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.8.9181.0 built by: NET481REL1LAST_C
コードベース:file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
Emuera
アセンブリ バージョン:1.824.8851.38172
Win32 バージョン:1.824.0.0
コードベース:file:///C:/〜〜/Emuera1824+v20.exe
...

466あなたの名前を入力してください:2024/03/31(日) 19:47:52 ID:J.XNPEl6
>>465
報告ありがとうございます。

https://book-shelf-end.com/up/dwlink.cgi?eraRx4397.zip

修正しました。

467妊)|д゚):2024/04/01(月) 21:04:29 ID:mP7eUaWw
○1824+v21
https://ux.getuploader.com/ninnohito/download/490

>>465修正

468あなたの名前を入力してください:2024/04/19(金) 20:44:05 ID:Mc2CtNnI
.NET Emuera 0.2.3.9
https://book-shelf-end.com/up/dwlink.cgi?eraRx4458.zip

・命令の追加、仕様変更
 ・命令としてVARI,VARS命令を追加 (要設定)
  ・関数中のどこでも関数ローカルなダイナミック変数を定義できます
  ・VARIが整数、VARSが文字列です
   例.
    VARS Question = "生命、宇宙、そして万物についての究極の疑問の答え"
    VARI Answer = 42
  ・初期値として配列は与えられず、文字列は””で囲われている必要があります
 ・PRINTN系命令の追加
  ・改行しないPRINTW系命令です
  ・基本的なPRINT命令にのみ追加しています
 ・HTML_PRINTの仕様変更
  ・第2引数に0以外を与えることで自動的な改行を行わなくなります。(EM+EEと同仕様になるように調整)
・エラーログに実行ファイル名ではなくバージョンテキストを表示するように変更
・UIの調整
・様々な最適化、バグ修正

469妊)|д゚):2024/06/13(木) 23:31:58 ID:vF2WOaWI
○1824+v22
https://ux.getuploader.com/ninnohito/download/491

・一部の処理系でCALLNAMEがハンドリングできないのを修正
ごく一部なのでほとんど影響がなかったっぽい
・式中関数GETNUMBが実装はあるのに使われていないのを修正
式中関数GETNUMの第1引数が文字列指定のバージョン ただそれだけ

470あなたの名前を入力してください:2024/07/20(土) 13:56:01 ID:Uq5DagCE
Emuera.NET 0.2.6.0
https://book-shelf-end.com/up/dwlink.cgi?eraRx4609.zip
・描画システムをSkiaSharpに置き換えることで高速化
・命令の追加
 ・HTML_PRINT_ISLAND
  TAGを用いた記法はHTML_PRINTと同じだが、行情報に依存しない。
  このため、<div>タグでabsolute系の指定をしないとどこにも表示されない。
  行情報に依存しないため、通常のPRINT命令と違っていくらスクロールしても消えることがない
 HTML_PRINT_ISLAND_CLEAR(int)
  HTMLPRINT_ISLAND で宣言した領域を破棄し、表示を消す。
  この命令を行うまで常にHTML_PRINT_ISLANDの内容は表示され続ける。
  第一引数に数値を指定した場合、HTML_PRINT_ISLANDの第二引数で指定したレイヤーだけを破棄する。
  省略した場合、すべての領域を破棄する。
・式中関数の追加
 ・GDRAWTEXT(int ID , str TEXT , int x , int y)
  指定したIDのGraphicsの、座標x・座標yを起点に、TESTの内容の文字を描画する。
  文字の色、フォントなどはGSETFONT命令で指定する
  Emueraと同じフォルダ内にfontフォルダがあるなら、その中に置いてあるフォントファイル(TTF、OTF)を読み込み、インストールしているものとしてEmueraで使用可能になる。
 ・int HASH_XXH32( str ハッシュ名)
  ハッシュ名に対応したハッシュ値を、32bit内の数字で返す。
 ・int HASH_XXH3(string 入力)
  入力に対応した64bitハッシュ値を返す
・<font>タグに属性sizeを追加。
 <font size='x'>の様に指定する。
 コンフィグのフォントサイズに対してX%のサイズで表示するようになる。
・<div>タグを追加
 タグそのものには効果はなく属性を設定することで出力される内容に影響を与える。
 ・属性
  ・xpos = 'int' / ypos = 'int'
   出力される文字列等の位置がintの数だけ移動する。
   移動量はフォントサイズに依存しており、フォントサイズのint%となる。つまり100を指定することで全角1文字分移動する。
   '100px'のようにpxをつけて指定した場合はピクセル単位での距離指定となる。出力の情報自体は移動前の行で持っているので
   その行が見えない位置にスクロールされると出力された内容が消える。
  ・display = ('absolute-lefttop',absolute-leftbottom','relative')
   relativeはデフォルトの設定で、[xpos/ypos]が相対位置となる。
   absolute-lefttopは絶対位置指定で表示中の画面の左上を基準点とした位置から[xpos/ypos]で指定された位置に描画するようになる。
   absolute-leftbottomは左下が基準となる絶対位置指定となる。
   絶対位置指定の最中はスクロールなどをしても追従せずに同じ位置に表示され続ける。
  ・background_color = '#XXXXXX'
   背景を任意の色に変更できる
  ・height = 'X'
   divの高さを定義する。これを定義にすることにより文字がない部分にも背景色等が及ぶ
   高さはフォントサイズ単位で、pxを付けた場合はピクセル単位となる
  ・width = 'X'
   divの幅を定義する。これを定義にすることにより文字がない部分にも背景色等が及ぶ
   幅はフォントサイズ単位で、pxを付けた場合はピクセル単位となる
  ・border_width = 'X'
   エリアの外周の太さXの枠線を引く。
   Xはフォントサイズ単位で、pxを付けた場合はピクセル単位となる
  ・border_color = '#XXXXXX'
   枠の任意の色に変更できる
  ・padding = 'X'
   サブエリアの内周と文字の間の余白を定義する。この属性を定義しない場合、文字が外枠にほぼ密着するのに注意
   Xはフォントサイズ単位で、pxを付けた場合はピクセル単位となる
  ・hover-background-color = '#XXXXXX'
   この属性を宣言した<div>を<button>タグで囲んだ時、そのボタンにマウスカーソルを合わせると、<div>で指定した領域の背景色がこの色に変わる。
・UIの調整
・ローカライズ等(CRER氏に感謝)
・v22の取り込み
・様々な最適化、バグ修正

471あなたの名前を入力してください:2024/08/18(日) 20:41:21 ID:JX8hKOec
OSDN上のemueraソース、実行ファイル関係が落とせたので目下簡易的に共有
https://ftp.iij.ad.jp/pub/osdn.jp/emuera/
各中身についてのバージョン等はOSDN上のリリース番号確認の上、上記URL内の番号を確認すれば目的のファイルにアクセスできます

472あなたの名前を入力してください:2024/08/18(日) 21:16:52 ID:JX8hKOec
ちょっとわかりにくいので追記
>>OSDN上のリリース番号=ttps://ja.osdn.net/projects/emuera/releases/各番号←ここです

473妊)|д゚):2024/10/16(水) 19:43:42 ID:TxVeI8ho
○1824+v23
https://ux.getuploader.com/ninnohito/download/492

・GETNUM、GETNUMBでNICKNAME、MASTERNAMEを指定できないのを修正

474あなたの名前を入力してください:2024/10/16(水) 21:41:52 ID:EsSd0.Xc
>>473
うp乙

475妊)|д゚):2024/11/06(水) 21:31:37 ID:NkLIhmFk
○1824+v24
https://ux.getuploader.com/ninnohito/download/493

・ISNUMERIC関数で特定文字列がエラーになってしまうのを修正できたはず

476あなたの名前を入力してください:2024/11/06(水) 22:55:49 ID:ShECrbWU
うぽつ

477Яeverse★:<売却済み>
<売却済み>

478Яeverse★:<売却済み>
<売却済み>

479あなたの名前を入力してください:2025/06/01(日) 12:24:45 ID:j3.JSNgY
Emuera.NET 1824+v22+EMv18+EEv53の不具合?っぽいのここに挙げても大丈夫かな?
html_printの<div>でdisplay='absolute'にした時に、中のテキストがxpos無視して左端から書き出してしまうようなんだけど。

480あなたの名前を入力してください:2025/07/17(木) 16:19:46 ID:ShdfRhA.
仕様の範疇だと思うのですが、Emueraや自家版ではセーブデータにおける日時のロケール指定がされていないようで、たとえばWindowsで「令和y年/mm/dd」のようなロケールを使っていると
セーブデータの日時も07/07/17のようになってしまうようです。

[ 0] 07/07/17 16:16:37 1ターン経過難易度:E
[10] 2025/07/17 16:15:20 1ターン経過難易度:E
(上がEmuera・自家版、下が強制的に西暦対応のロケールを指定したemuera)

個人的には仕様の範疇だと思うのですが、ロケールを変更した際にセーブデータの日時を参照するようなバリアントではバグが起こらないとも限らないので想定した動作なのかどうか報告しておきます

481妊)|д゚):2025/07/20(日) 00:10:12 ID:msFutro.
>>480
確かに想定してなかったですね
どうするのが正解なんかなぁ…

482あなたの名前を入力してください:2025/07/20(日) 18:39:27 ID:z.EotAdg
>>481
やっぱり今から変えるのは破壊的変更ですよね。
ロケール指定できる機能を追加するのが妥当だと思いますが、他のEmueraとの互換性はどうなるのかな……?


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板