Giter VIP home page Giter VIP logo

krkrz's Introduction

吉里吉里Z

吉里吉里Zは吉里吉里2フォークプロジェクトです。

2016/08/18
リポジトリの分割は一通り完了。
未追加のプラグインは各 Author が追加予定。 今回 external 内の外部ライブラリをサブモジュール化。
external の各フォルダが空の場合は、サブモジュールのアップデートを。
今後、 Android 版開発に伴い、ディレクトリ構成が変更される可能性があります。

2016/08/09
プラグイン等全て一つのリポジトリに入れていたものを削除し、このリポジトリには本体のソースコードのみ入れるようになりました。
旧ディレクトリ構成は https://github.com/krkrz/krkrz/tree/last_hodgepodge_repository ブランチを参照してください。

従来の構成に近い全てを含んだリポジトリは、https://github.com/krkrz/krkrz_dev になりました。
各プラグイン等をサブモジュールとして参照し、独立した形で管理するようになっています。

krkrz's People

Contributors

27068 avatar darkskygit avatar jin1016 avatar lioncash avatar miahmie avatar sakano avatar tousei-seiso avatar uyjulian avatar yaqinking avatar yuki12 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

krkrz's Issues

TJSで文字列の split() が正常に動作しない

[不具合]
TJSで文字列の split() が正常に動作しない

[テストスクリプト]
var str = "a b c";
var ary = str.split(/ /);
dm('ary.count = '+ary.count+', 0:"'+ary[0]+'", 1:"'+ary[1]+'"');
var str = "a\t\tb\tc";
var ary = str.split(/\t/);
dm('ary.count = '+ary.count+', 0:"'+ary[0]+'", 1:"'+ary[1]+'"');

[望まれる出力(=吉里吉里2の結果)]
ary.count = 3, 0:"a", 1:"b"
ary.count = 4, 0:"a", 1:""

[現在の吉里吉里Zでの出力]
ary.count = 2, 0:"a ", 1:"c"
ary.count = 3, 0:"a ", 1:" c"

[備考]
上のsplitを str.split(/[ \t]/,,true) に変更すると、以下のように
表示された。
吉里吉里2:
ary.count = 3, 0:"a", 1:"b"
ary.count = 3, 0:"a", 1:"b"
吉里吉里Z:
ary.count = 2, a:"a ", 1:"c"
ary.count = 2, a:"a ", 1:""

Window.setSizeが機能しない

Window.setSizeが正しく機能していないようです。
Window.width, .heightは指定どおりにサイズを変更できるようです。
またWIndow.setInnerSizeの方は正しく動きます。

メニュー操作が遅い

以下、報告内容転記
[不具合]
メニューに関連する操作に時間がかかる

具体的には、data/system/MainWindow.tjsのsetMenuAccessibleAll()が
吉里吉里2 = 1~2ms
吉里吉里Z = 22~31ms
と10倍以上かかります(Core i3 2120T(2.6GHz)で実測)。
setMenuAccessibleAll()はさまざまな箇所から呼ばれていますが、代表的にはページクリック待ちグリフの表示(showPageBreak()→notifyStable()→setMenuAccessibleAll())から呼ばれているため、改ページの際に吉里吉里全体の動作が一瞬停止します。
動的な画面のゲームは、(停止中画面が更新されないため、)表示が激しくカクつきます。

data/system/Config.tjsのnumBookMarks = 10で上のような状態で、これを 100 にすると、
吉里吉里2 = 3~6ms
吉里吉里Z = 176~200ms
停止するようになりました。動的な画面のゲームは吉里吉里Z上でのプレイが困難となります。

GDI で文字描画位置がずれるフォントがある

GDI で文字描画位置がずれるフォントがある。
#41 の対策によって発生するようになっている。
#41 では DEFAULT_CHARSET を指定することで正しくレンダリングされるようにしたが、その影響で正しい位置に描画されないフォントが発生している様子。

EnumFontFamiliesEx を用いてフォント名からキャラセット取得して指定した場合、ANSI_CHARSET が指定されるケースで位置がずれるフォントが存在する。
SHIFTJIS_CHARSET だと期待した位置に描画されているように見える。

[修正済確認待]split で最後の要素がパターンにマッチするようにすると配列が1個多くなる

[不具合]
TJSで文字列の split() が正常に動作しない

[テストスクリプト]
var str="(1,2)(3,4)";
var ary = str.split(/[(),]/, ,true);
for (var i = 0; i < ary.count; i++)
dm('ary['+i+'] = ' + ary[i]);

[望まれる出力(=吉里吉里2の結果)]
23:44:36 ary[0] = 1
23:44:36 ary[1] = 2
23:44:36 ary[2] = 3
23:44:36 ary[3] = 4

[現在の吉里吉里Zでの出力]
23:35:28 ary[0] = 1
23:35:28 ary[1] = 2
23:35:28 ary[2] = 3
23:35:28 ary[3] = 4
23:35:28 ary[4] =
 ※要素数が一つ多い

フルスクリーン時右側クリアされずWindows背景が表示される

以下報告転記。
フルスクリーン表示時、右側黒帯部分がクリアされずWindows背景がそのまま表示される。

おそらくDirectXかGraphicドライバ周りの問題と思いますので、DxDiagの実行結果も添付します。
手元の2台のマシンでは両方同じ症状を確認しました。ただし、両方ともIntel内蔵Graphicなので、デバイス依存かもしれません。

マルチディスプレイ環境でウィンドウが出てこない

以下、報告内容転記
マルチディスプレイ環境下で[ 2 ][ 1 ][ 3 ]のような設定をしていると、プライマリウィンドウが出てこないようです。
コマンドライン上のメッセージは正常に流れています。
rvpwin32 rvpwin32_dbgどちらでも同様になります。
krkrz_20131126使用です。まったく手を入れずに起動のみです。

menu.dllで MenuItem.caption="&File" 等のALT+英字ショートカットが効かない

MenuItem.caption="&File"とした場合,ALT+Fキーでショートカット選択できるはずだが選択できない(ALTを押している間にFにアンダーバー表示は出る)
ALT単体で(もしくはF10キーを)押してメニュー選択モードにしてからショートカットの1英字キーを押した場合は反応する

GDIフォントラスタライザで一部英文フォントが正しく表示されない

Issue #39 からの派生です。
「Impact」等のフォントがGDIフォントラスタライザだと正しく表示されません。(FreeTypeでは問題ない)
詳細は#39の添付画像をご確認ください。

この問題は吉里吉里2本家でも起こっていたように思います。
(フォントのCharSet指定が間違っているせい?)

背景画像読込時のウィンドウサイズ

以下、報告内容転記。
[不具合]
KAGで、scWidth/scHeightより大きな画像をkag.fore.baseに表示すると、ウィンドウサイズが(scWidth/scHeightを無視して)画像サイズに合わせて変更される

[再現スクリプト]
; KAGスクリプトです。
; scWidth/scHeight = 640x480で初期化されています。
[eval exp="dm('(w,h) = ('+kag.innerWidth+','+kag.innerHeight+')')"]
[image layer=base page=fore storage=800x600の画像]
[eval exp="dm('(w,h) = ('+kag.innerWidth+','+kag.innerHeight+')')"]
[s]

吉里吉里Zの実行結果
15:32:17 (w,h) = (640,480)
15:32:17 first.ks : [image layer=base page=fore storage=800x600の画像]
15:32:17 (info) Direct3D 読込み...
15:32:17 800x600の画像 の読み込みに 31ms かかりました
15:32:17 first.ks : [eval exp="dm('(w,h) = ('+kag.innerWidth+','+kag.innerHeight+')')"]
15:32:17 (w,h) = (800,600) ★ここ
15:32:17 first.ks : s

望ましい(吉里吉里2の)実行結果
15:35:10 (w,h) = (640,480)
15:35:10 first.ks : [image layer=base page=fore storage=800x600の画像]
15:35:10 Passthrough: Using passthrough draw device: DrawDIB (no buffering)
15:35:10 800x600の画像 の読み込みに 13ms かかりました
15:35:10 first.ks : [eval exp="dm('(w,h) = ('+kag.innerWidth+','+kag.innerHeight+')')"]
15:35:10 (w,h) = (640,480) ★ここ
15:35:10 first.ks : s

一部のゲームでは、scWidth/scHeightと違うサイズの背景を使っているものがあり、そういうものを表示するとおかしなことになります。

RegExp.replace と "string".replace の挙動がおかしい

置換対象以降の文字がカットされて返されてる?
System.inform("ABCDEFG_abcdefg".replace(/cd/, "-")); // 2:"ABCDEFG_ab-efg" | Z:"ABCDEFG_abcdefg-"
System.inform("ABCDEFG_abcdefg".replace(/cd/i, "-")); // 2:"AB-EFG_abcdefg" | Z:"ABCD--"
System.inform("ABCDEFG_abcdefg".replace(/cd/ig, "-")); // 2:"AB-EFG_ab-efg" | Z:"ABCD--"
カットではなく、置換位置が狂ってる?

Menuを非表示にしてもウィンドウがリサイズされない

以下、報告内容転記。
ウィンドウモードでメニューを表示・非表示すると、表示している画像の下が切れる

[再現スクリプト]
; KAGスクリプトです
; これまでにmenu.dllを読んでメニューを表示しておいてください
[layopt layer=0 page=fore visible=1]
[image layer=0 page=fore storage=何か画像]
[l]
[eval exp="kag.menu.visible = 0"]
[l]
[eval exp="kag.menu.visible = 1"]
[l]
[eval exp="kag.menu.visible = 0"]
[l]
[eval exp="kag.menu.visible = 1"]
[s]

吉里吉里2ではメニューを非表示とするとウィンドウ全体の縦サイズを縮めていましたが、吉里吉里Zでは(ウィンドウサイズは変更せずに)画面を引き伸ばしていて、これが原因でメニューの表示・非表示を繰り返すと、「引き伸ばしたままの倍率で画像がメニュー分下にずれる」ことがあるために発生している
ようです。

krkrdebg.exe が、Shift-JIS のファイルのみを対象にしている

以下、報告内容転記。
krkrdebg.exe が、Shift-JIS のファイルのみを対象にしている。

UTF-8/UTF-16LEでもツリー表示はされますが、内容を表示すると、UTF-8は文字化け、UTF-16LEは行がそもそも表示されないため、ブレークポイントが指定できません。

FreeTypeフォントラスタライザの位置がGDIに比べて3px下に表示される

issue #39 からの派生です。
FreeTypeラスタライザGDIラスタライザで同じ文字を出力して比べた場合,
ほとんどのフォントについてFreeTypeの方が3ピクセル下に描画されてしまうようです。
何か理由があってこのような仕様となっているのであればそれに従いますが,
そうでない場合は合わせた方が混乱がないように思います。

[修正済確認待]Window.onKeyDown()で、Altキーが反応しない

Window.onKeyDown()で、Altキーが反応しない

[テストスクリプト(first.ks先頭)]
[iscript]
kag.onKeyDown = function(key, shift) {
dm('key='+key+', stat='+getKeyState(VK_ESCAPE));
dm('shift='+shift+', ssRepeat='+ssRepeat);
} incontextof kag;
[endscript]
[s]

[望まれる出力(=吉里吉里2の結果)]
altキーを押す:
15:16:13 key=18, stat=0
15:16:13 shift=2, ssRepeat=128

shiftキーを押す:
15:16:22 key=16, stat=0
15:16:22 shift=1, ssRepeat=128

ctrlキーを押す:
15:16:24 key=17, stat=0
15:16:24 shift=4, ssRepeat=128

escキーを押す:
15:16:37 key=27, stat=1
15:16:37 shift=0, ssRepeat=128

[現在の吉里吉里Zでの出力]
altキーを押す:
(反応せず)

shiftキーを押す:
15:17:58 key=16, stat=0
15:17:58 shift=129, ssRepeat=128

ctrlキーを押す:
15:18:01 key=17, stat=0
15:18:01 shift=133, ssRepeat=128

escキーを押す:
15:18:03 key=27, stat=1
15:18:03 shift=133, ssRepeat=128

フォントラスタライザをGDI->FT->GDIと切り替えると文字表示がおかしくなる

Font.rasterizerを一度frFreeTypeに切り替えた後にfrGDIに戻すと一部の文字が25%濃度表示になってしまう問題があるようです。(添付画像の左列:GDI1回目,中列:FreeType,右列:GDI2回目)

再現方法:
Krkr2Compatのテストウィンドウから,FontSelect(GDI)⇒FontSelect(FreeType)⇒FontSelect(GDI)と選ぶと確認できます。
半透明になる文字は特に決まっていないように見られます。

その他気になった点:
・一部英文フォントがGDIだと正しく表示されませんが,これは吉里吉里2本家でも同じような問題があったと思われます。
・FreeTypeラスタライザの方が縦3pxほど下に表示されているように見られます。
・FreeTypeで表示されないフォントがありますが,これは絵文字系のフォントのようです。drawTextの描画時に「Font Rasterize error.」の例外が発生しています。Font.getListから除外しても良い気がします。

fontrenderingproblem

Font.faceで複数フェイスを","で区切った時にフォントがないとハングアップする

吉里吉里2本家ではFont.faceをカンマで区切って複数の候補を含める事ができる実装がありましたが,Zで","を指定すると該当フォントが無いとプロセスが固まるようです。
また先頭に","を指定した強制フェイス指定の場合はフェイスがあっても固まります。
例:
font.face = "MS 明朝,MS ゴシック"; // OK(MS明朝で表示される)
font.face = "MS 明朝,存在しないフォント名"; // OK(MS明朝で表示される)
font.face = "存在しないフォント名,MS 明朝"; // NG
font.face = ",MS 明朝"; // NG(強制フェイス指定)
※上記face指定の時にdrawTextを実際に行う所で固まります

辞書の作成が遅い

以下、報告内容転記。
[不具合]
要素数の多い辞書の作成が、吉里吉里2に比較して遅い# 100000要素で 15 % 程度遅い

[再現スクリプト]
function generate_hash(num)
{
var hash = %[];
var now = System.getTickCount();
for (var i = 0; i < num; i++) {
var elm = "hash_number_is_" + "%06d".sprintf(i);
hash[elm] = 1;
}
return (System.getTickCount() - now);
}

var tick = 0;
for (var i = 0; i < 10; i++)
tick += generate_hash(100000);
dm('avg = ' + tick/10);

[吉里吉里Zの結果]
avg = 12844.7

[吉里吉里2の結果]
avg = 11176

hash = new Dictionary(16) などで初期化すると劇的に性能が向上するのは存じていますが、上はあくまで %[] で初期化した時の性能の差を問題としています。

Shift-JIS の変換失敗エラーメッセージが不適切

Shift-JIS の文字コード変換に失敗した場合に「UTF-8 文字列を UNICODE 文字列に変換できません。……」と表示される。

KAGParser は Shift-JIS で文字コード解釈するが、ks ファイルを UTF-8 にして読ませると、変換失敗時に上記エラーメッセージが出る。
KAGParser は、UTF-8 ではないことを周知する必要もある。

フルスクリーン時のメニュー動作がおかしい

以下報告転記
menu.dllでメニューを表示させた状態でフルスクリーン表示すると、ゲーム画面がメニュー縦幅分下にずれて表示されるため、画面下がメニュー(24dot?)分切れる。
画面下からメニューが出てくるようなゲームが操作不能となる。
吉里吉里2では、フルスクリーン表示時、メニューが画面上部に被さって表示され、自動的に隠れていたので問題にならなかった。

ただ、これは「フルスクリーン時はメニューは表示すべきでない」や、「そもそもメニューはおまけで、使用すべきでない」などポリシーで回避できる問題ではあります。

Font.getListで絵文字フォントなどを除外してほしい

issue #39 からの派生です。
Font.getListにFreeTypeフォントラスタライザで表示できないフォントが含まれるので
これを除外したほうが良いかと思います。
もしくは「fsfSymbolFont」のようなオプションを追加してそれをつけないと出ないようにするとか
Font.rasterizerの状態で返すリストを変えてしまうといった方法にしてしまうとか,
色々対応方法はあるかと思いますが,最終的な仕様については判断をお任せします。

吉里吉里Z 外で解像度変更するとデバイスロストする

以下報告転記
吉里吉里Zを表示中、吉里吉里Zの外(たとえばデスクトップのプロパティ変更、別に起動していた吉里吉里2のフルスクリーン
表示などで)で画面解像度を変更すると、以下のエラーが記録される。
error : Device lost. Cannot reset device.

稀に、エラーダイアログが表示され、ゲームがエラー終了する。
<そのときのログ例1>
23:59:18 error : Device lost. Cannot reset device.
23:59:18 スクリプトで例外が発生しました
Faild to create Direct3D9 Device.

<そのときのログ例2>
00:17:52 error : Device lost. Cannot reset device.
00:17:52 error : Device lost. Cannot reset device.
00:17:52 スクリプトで例外が発生しました
Faild to decide backbuffer format.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.