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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0904
龍のなArtlet2Dで仮想イメージを複数持つと重くなる?5解決


龍のな

リンク

2019/9/4(Wed) 22:38:13|NO.88322

お世話になります、質問させていただきたいです。

Artlet2Dで仮想イメージを多数持ち、それを画面に反映させていく、
着せ替えゲームのようなものを作っています。
ところが挙動が重く、実行してボタンを押しても、
反応が鈍かったりするような状態になってしまっています。
全18か所の着せ替え出来る箇所に対し、パーツを1種選び、
パーツ1つに対して3つの仮想イメージを持つ感じなのですが、
こういったやり方では重くなってしまうのでしょうか…

重い理由がArtlet2Dの仮想イメージが多いから、以外の理由もあるかもしれませんが、
何枚くらい仮想イメージを作ったら重くなったよ、みたいな経験がある方がいたら
教えていただきたいです…。

よろしくお願いいたします。



この記事に返信する


ソラ

リンク

2019/9/4(Wed) 23:37:54|NO.88323

仮想イメージはメモリ上にあるだけなので、
RAMにある程度空き容量があれば重くはならないかと。
「重い」と感じるのは実際に画面に表示する瞬間です。
その時の枚数が多ければ、その分重く感じます。
とはいえ、18枚でも極端な重さにはならないと思います。

とりあえずソースコードを貼っていただけないでしょうか?
ソースコードなしでは可能性が無数にあり絞りきれません。



龍のな

リンク

2019/9/5(Thu) 09:20:52|NO.88325

ソラさんありがとうございます。
画像ファイルが必要なので、すべてをまとめたファイルをアップしました。
https://ux.getuploader.com/ry_game/download/34
anon.hspが作業ファイルになります。

コメントをきちんと入れてなかったりしてかなり読みづらいですし、
バグがめっちゃ出まくり正常動作しないので、
かなりお見苦しいのですが…

正確には、最大18*4枚の着せ替え用の仮想イメージと、
背景画像やアイコン画像などの仮想イメージで、実際かなりの数を画面に出していることになります。
あと、原因としては、カラーチェンジャーとしてアイコンやバー、ボタンなども使っているため、
そちらも重い原因になってしまっている可能性もあるのかな?と思います。



ソラ

リンク

2019/9/5(Thu) 11:20:10|NO.88326

重い原因として、以下の3つの命令が原因かと思います。
dirlist
alCreateImageByFile
note系命令

まずdirlistが一番の原因だと思います。
この命令は本当に遅いので、最初に予めディレクトリリストを読み込んでおいたほうがいいかと。
ただのテキストなのでメモリも殆ど消費しません。

次にalCreateImageByFileですが、これも遅い原因となります。
やはりリアルタイム性を重視するなら、予め読み込んでおきましょう。

note系命令も遅いですね。
dirlistで読み込んだファイルリストの分割に使っているようですが、split等を変わりに使ったほうが良いかと。

これでだいぶ早くなるかと思います。



ソラ

リンク

2019/9/5(Thu) 11:21:06|NO.88327

連投すみません。
ディレクトリリストとファイルリストが混在してますけど、どっちも同じ意味で言いました。



龍のな

リンク

2019/9/5(Thu) 11:48:30|NO.88328

ソラ様、的確にアドバイスいただきありがとうございます!

ディレクトリのリストは最初に読み込んでおくようにして、
起動時に「ロード中…」などの画面を出すようなイメージにしたらいい感じになりそうですね。

alCreateImageByFileについては、読み込んだ仮想イメージをこまめに変更するため、
こちらについては大きくソースを書き換えなければなりませんが、
何とか軽量化を試してみたいと思います。

dirlistの中身の取得についてもnote→splitに変更を試してみます。
この場合は「\n」を区切られた文字列として指定したらいいのかな…

自分ではどこが重くなる原因だったのか全くわからなかったので、とても助かりました。
本当にありがとうございました!



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