シルバーセカンド開発日誌
 ここはゲーム開発者SmokingWOLF(スモーキングウルフ)の開発日誌です。
 【現在の目標】→ ウディタ3.5のバグを落ち着かせる! & 『片道勇者2』の開発!
 ※以前のブログが使えなくなったので、ただいまこの開発日誌に移転中です。
2024年04月

2024-04-27 (土)   続ウディタ修正&ツクール配信&片道勇者2再開
ということで今回も引き続きウディタの修正でドタバタしてたり、
生活が大変だったり、気晴らしに
新作RPGツクール(RPG MAKER WITH)の生放送をしたり、
そのすき間に『片道勇者2』の開発をちょっと進めたりする感じの
色々あった二週間でした!

今回起きたイベントを以下に列挙していきます!






◆ウディタ コードの組み方次第で古いPCで動かなくなる問題

ウディタの最新版の問題が一通り解決したかなあと思ったら
また新たな難題が発生してしまいました!

というのも、
『プログラムのコードの組み方によっては新しめのCPU専用の命令が
使われるようになってしまい、古いPCでは動かなくなる』

という問題が起きてしまったのです!

私も長年プログラムしててこういう問題があるのを全然知らず、
ちょっとした衝撃を受けてしまいました。
前回「うひょーがんばっていじってたら速度28倍になったー!」という部分
がまさに新しめのCPU命令で処理するよう最適化されてしまった場所の一つっぽくて、
2011年以前などのCPUが古いPCの場合は、その処理を回避するようにしないと
エラーが起きることが判明!

ということで、それを発見するために何日も使って何かできないかと奮闘しておりました。


 ↑ CPUの拡張命令の「AVX」の有無で動作が変化していました。
ってよく見たら「メモリ違反のアクセス違反」って言ってるところが!
「メモリのアクセス違反」の誤記です。



結果として、今回は仮想環境でCPUの機能をオンオフしながら検証するなんて
初めての経験ができてとても勉強になりました。
これでいくらか古い環境のテストもできそうです。

ただ、「仮想環境上」ではこのCPU差の問題への対策ができたのですが、
情報をいただいたご報告者さまのPCでは問題が解決しませんでした、残念です。
詳細は掴みきれませんでしたが、他の方でも
同じ時代のCPUで問題が起きるかもしれません。


とはいえ、ひとまず問題が起きる環境はだいぶ昔のPCだけらしいので、
今回は「最新の暗号化を使うと2011年ごろ以前のPCで起動できなくなる可能性があるから気をつけてくれよな!」という警告を
次バージョンからEditor内に入れることで対応しようと考えています。
さらに時間が経てば2011年ごろのPCも徐々になくなっていって、
問題発生頻度はゼロに近付いていくでしょう。


【古いPCでも動かしたい場合は?】

もしゲーム開発者さま側で古いPCでも
動作可能にしたい場合は「Ver3.14~暗号化」という、
1つ前の暗号化を使用することで今回の問題を起きなくすることができます。
(問題が起きる最新版暗号化は「Ver3.31~暗号化」以降のみ)

ウディタはいちおうWindows7(2009年発売)以降で動作するようになっているので、
微妙に今回の「2011年以前のCPUで起動できない」という
条件に引っかかる可能性があります。
どこまで昔のPCをサポートすればいいのかは悩みどころですが、
基本的には「10年以内の環境はなるべく全部動くようがんばる」
「それ以上は時と場合によりけり」という感じでやっていこうと思っています。




RPG MAKER WITH体験版のプレイ配信をしました!

『【ツクール】ウディタ作者がRPG MAKER WITH PLAYER + 体験版を遊ぶよ』
というちょっぴり挑発的なタイトルで生放送させていただきました!

でも中味は全然挑発的じゃなくて
「うひょーこの機能が欲しかったんですよ! 夢が広がるー!」
とか言ってばっかりでした。家庭用ゲームのRPGツクールの記憶が
『RPGツクール3』で止まってた私にはまぶしすぎるツクールでしたね!



出た話題としては、

「ウディタの修正が忙しくて体験版遊べてなかったんですよ!」「家庭用版のいいところはこれですよね、オンラインにアップした他人のデータをDLしやすい!」「一流って感じの曲ですね」「レイヤー4もある…負けた…!(ウディタは3レイヤー)」「デバッグログがある!?」「ルート設定ができる! プレビューもある! すごい!」「ピクチャ番号100まで使える! RPGツクール2000マンにはうれしいですね(50枚までだったので)」「文章の表示で制御文字のリファレンス見られるのいいなー色番号の表示もいいですよねこれ」「\FS[50]こんぬちわ!!」「うおお選択肢が6択も使える!」「アイテム選択の処理!? 通常アイテム1つ選ばせるとかできる!?」「ウフ~ン★」「おっ、乱数が作れる! これだよこれ!」「おおおキャラクターのマップXYと画面XY取れるー!」「(条件分岐で)キー入力が取れる! 音ゲー作れますよ!」「キャラの名前(の頭文字)がRPGMAKERみたいですね、いいですね(ウディタでも似た感じにしてるので共感)」「いやーほんとこれは家庭用RPGツクールで何でも作れそうな感じありますね」「正方形のピクチャ1枚あればなんでもできる!」「指定位置のイベントID取れるのえらい!」「利用規約に賠償請求可能な金額は1000円かソフト購入代金の高い方って記載がある!」「せんめつ!(※たぶん正しくは「じょうめつ」)」

みたいなことを言っておりました。気になる方は動画本編をどうぞ!




『片道勇者2』開発再開!

ずっとウディタの修正にかかりっきりでこちらが進められていませんでした!
『片道勇者2』、今はデータ面もまだまだなのですが、
ひとまず優先順の都合で現在はメインストーリーのところをざっくり作っています!
いつでも「完成」宣言ができる状態にしておくことは精神衛生上大事ですからね!

ですがいつものことながらストーリーのネタバレに配慮すると
ストーリー開発中は何も言えなくなって開発日誌のネタがなくなります! 困った!

ちょっとしたアイテムやスキル紹介などでも期待度を高める役目を
果たしてくれると思うので、今後そのあたりも紹介できる部分がないか
常に考えながら作っていきたいと思います!
「途中の情報を面白くできずして最終成果をワクワクさせられようか!」
とも思いますしね!
その辺の断片情報からワクワクを生むセンスを磨くのにいい訓練にもなるかもしれません。
もちろん本編作成がおろそかにならない程度にですが!



という感じであっちこっち行ったり少し楽しみも確保しつつマイペースに進めております!

ここからしばらくは、ウディタのバグ修正しつつ
第16回ウディコンが始まるまでは
『片道勇者2』開発に集中していきたいです!
ウディコンの準備もがんばります! 今年もお楽しみに!
 2024-04-27 (土) web拍手 by FC2 カテゴリ: ウディタ




2024-04-13 (土)   【ウディタ】セキュリティ向上作業、いったん完了!!
この2週間も引き続きウディタの
セキュリティアップデートのために費やしておりました!
1ヶ月近くもの時間をかけてしまったのでウディタ作業費は
超大赤字ですが、セキュリティやデータ処理について
たくさんのお勉強ができたので人生ではプラスの期間でした。

ひとまず最新版ウディタは一通り動作するようになったっぽいので、
ウディタ公式にてVer3.311をアップしております!
とはいえまだちょいちょいバグが残ってる匂いがするので、
慎重な方はもう少し待ってからお試しください。

【WOLF RPGエディター公式ページへ】






◆ウディタのセキュリティ向上、プレイヤーへの影響はある?

ウディタに対していろいろセキュリティ上の
基本的な対策を行ってみたのですが、その中でも
プレイヤーの方にダイレクトに影響が出る可能性があるのは
『DLLインジェクション』への対策です。

 『DLLインジェクション』とは簡単にいうと
「本来そのプログラムが使わないDLLを注入して、
強引にプログラムの処理を上書きする」手段で、
応用すれば内部データを抜き取ったりするような悪いことにも使えます。

そしてこれを対策したことによるプレイヤーの方への影響としては、
『別アプリの内部データを使用したり処理を上書きするような個人制作ソフト』
を使っている場合、Game.exeの起動時に以下のようなエラーが起きて
起動できなくなる可能性が出てくるという点です。


 ↑正規の署名がないDLLが読み込まれたと出てゲームが停止! 
企業製ソフトならたいてい正規の署名があるので大丈夫ですが、
個人制作ソフトだと正規署名が付いてないことが多いです。お高いんですよね!



※もし↑が出て遊べなかった場合、Gameを「管理者権限で起動」することで
このエラーを回避できるようですので、よければお試しください。
Game.exeの上で右クリック→「管理者として実行」を選べばOKです。

このエラー文そのものにも追記しておきます!
(2024-07-19追記)



なおこの「DLLインジェクション」技法は悪いことに
使われるだけじゃなくて、
「アクティブになってるウィンドウの上にかわいいマスコットキャラを表示する」
みたいなソフトでも昔使われていたと思います。

たとえば
「実行中のソフトのウィンドウ座標処理をDLLで乗っ取り、そこから
座標情報を抜き取って表示する(+ 元の処理はそのまま再現する)」
ことでウィンドウの上にキャラを乗せる処理を実現していたわけですね!

最近はそんな処理をすると厳しめのウィルスソフトに
バチバチに怒られたりする予感がしますので、
2010年すぎからこういったソフトも段々なくなってしまった印象があります。

「ウィンドウを追随してくれるようなデスクトップマスコット系アプリが
なんで全然増えなくなったの!?」と私が思い始めた時期がその辺りでした。

(たとえば私が使っていた『ClockLauncher』というフリーソフトの2009年版では
アクティブウィンドウのそばにランチャーが自動的に移動する機能があり、
普通にそこでDLLインジェクションが使われていたためかソフト起動中は
最新Game.exeを実行できなくなりました(上の画像)。
それゆえか、『ClockLauncher』の特定のバージョンからは
その機能がなくなっています。
このソフトは2となった今でも更新されててすごい!)



ちなみに、セキュリティソフト自体もGame.exeに
『DLLインジェクション』することがありますが、
それには正規の署名が入っているのでウディタ上でもエラーは起きないはずです。
セキュリティソフトのDLLインジェクションは
『勝手に元の処理を上書きして、怪しい処理が実行されてないかを
監視する処理を加えている』わけですね! たぶん!

おかげで今なら私も、どういった造りでそういったことを
実現してるのか、ちょっとだけ分かるようになってきました。





◆セキュリティの難しさとか雑談とか

ここからはこの3週間にあったとりとめのないお話です。

●安全性のチェックを頻繁に入れるほど重くなるので
パフォーマンスのバランス取りにすごい時間がかかった!

 → まず色んな処理の実行時間を検証するのにけっこう時間がかかりました。
「軽い処理で先にチェックして変化を察知したら重い処理を行う」といった組み方を、
かなり細かく作る必要がありました。



●新しい暗号化処理を作ったらうまく復号化できなくて地獄を見た!!
 → 当たり前ですが暗号化と復号化って1バイトだけ処理をシクっただけでデータがグチャグチャになるんですよ!
ヤケクソでSuno AIさんにこんな歌( ↓ )を
作ってもらったりしてました。作業用BGMとして。




●試行錯誤してたら部分的な処理速度が最初の28倍になって笑ってしまった。
 → ファイルを開く速度に影響するので、どうにか暗号化と復号化の速度を上げようといじってたら
最終的に処理速度が最初の書き方の28倍くらいになって笑ってしまいました。
最初の書き方は誰でも書きうるコードだったのに、そこから
CPUが処理しやすいように崩していったら最終的にこれ!
プログラミングの深さがヤバすぎますよ!

ウディタVer3のときも、超がんばってVisual Studio2003から
Visual Studio2022に環境を変えただけで部分的に速度10倍になったりして
驚きましたが、そういった最適化を受けやすい造りでコーディングする効果の
凄さに衝撃を受けました。これからはCPUに優しい組み方も考えなきゃ……。



●親がとうとう要介護4認定がでそうな状態になっててさらにしんどい!!
 → 前は要介護3認定だったんですが
ケアマネさんに見てもらったら要介護4かもって言われました。要するに大変です。
でも空き時間がないわけじゃないので開催まで残り100日を切った
ウディコンはなんとかがんばります!

介護において「半端に動ける状態の方が恐い」という意味が
理解できる段階になってきています。





おまけ ウディタ内でできるセキュリティ対策記事紹介

K-Shin07さまが、ウディタのゲーム開発者側でできる
セキュリティ対策の記事を書かれていたのでご紹介です!

【ウディタでのゲーム開発者が行えるセキュリティ対策】
https://ci-en.net/creator/16060/article/1111345 (アーカイブ)(/a)

「チェックサムによる改ざん検知」「不正なゲーム実行を阻止」など、
ゲーム内からでもできる実用的なテクニックが挙げられています!

特に「チェックサム」は、オンライン要素があるゲームだと
通信内容が改ざんされてありえないスコアが送信されたりしちゃうことも
たまにあるので、そういった場合の防衛策としても有用です。




ということで、今回のセキュリティアップデートはゲームデータの
いくらかの防衛力アップには繋がると思いますので、
気になってた方はよければぜひご利用ください。

とはいっても完全な防御ができないのがこのセキュリティ業界。
限界はありますのでその点はご了承ください。
超有名AAA作品のゲームデータだってたぶん素晴らしい暗号技術が
使われてるでしょうに、だいたい解凍されちゃってますしね。

ウディタ本体もまだもう少し様子見しないといけなさそうなのと、
『ウディタ翻訳サポートツール』の方にも今回の修正を
取り入れる必要があるので、もうしばらくプログラミングをがんばります。

一通り片付いたら、1ヶ月ぶりに自分のゲーム開発が再開できます。
がんばっていきます!
 2024-04-13 (土) web拍手 by FC2 カテゴリ: ウディタ
2024年04月


▲一番上へ戻る


Copyright © SmokingWOLF / Silver Second