Elem-ME開発でC# 7を使用します

Elem-MEなどの開発には、今までC#のVer.6を使ってきました。
しかし、C# Ver.7が使用できることが確認できたので、既存コードも移行することにしました。

よって、公開済みのコードに大きな変更が行われる可能性がありますのでご了承ください。
(Elem-MEに限らず、Team.E.L.E.M.E.N.Tで公開しているコード全てが対象です)
また、引数や戻り値の型が変わる可能性もありますので、もしコードを利用した場合は変更を確認するようお願いします。
なお、今すぐに全てのコードをアップグレードするのは不可能なので、少しずつの移行になります。


DXライブラリをC#でより使いやすく

DXライブラリをC#で利用することは公式でもサポートされてはいます。
しかし、利用方法はC#に最適化されていないため、C言語のように手続き型の呼び出し方をしなければいけません。
これではオブジェクト指向を活かせないので、より使いやすいように、オブジェクト指向を活用して利用できるようにするライブラリを作っています。
元々はElem-MEで利用するために作ったのですが、他のソフトウェアでも利用できるように、と公開します。

リポジトリを「https://github.com/TeamElement/DxLib」に公開していますので、もしDXライブラリをC#で利用する機会があれば利用してみてください。
実装した機能はまだ一部ですが、順次追加していく予定です。
実装を急いでほしい機能がある場合は、この投稿のコメントかGitHubのIssueに書き込んでください。(後者に書くことをおすすめします)

利用には、公式サイトからC#用DXライブラリを別途用意して頂く必要があります。
これは、DXライブラリが更新された場合に当ライブラリを更新しなくても変更なしで利用可能にするためです。


【Elem-ME】テストプログラムv1をリリース

E.L.E.M.E.N.T Multipurpose Engineのテストプログラムをリリースしました。
確定仕様版初のテストプログラムです。

今回は、起動から終了までのエラー発生の有無、カーソル情報取得のテストとなっています。
もし良ければ結果をコメント頂けると助かります。
もしエラーがあったらできるだけ報告をお願いします。

E.L.E.M.E.N.T Multipurpose Engine Test Program v1


ホームページとブログを統合しました

この度、ホームページを管理が容易なWordPressにするため、ブログと統合することになりました。
今後、ブログへのアクセスは全てこの「ホームページ兼ブログ」サイトにリダイレクトされます。
また、ブログについても、今までと変わりなく運用していきますので、これからもよろしくお願いします。


【.NET】アセンブリに関連付けてデータを暗号化するライブラリ

更新情報
2016/09/23 1.0.1を公開

.NETアプリケーションから利用できる暗号化ライブラリを作ってみました。
このライブラリの特徴は、暗号化に使う共通鍵に、ライブラリを呼び出したアセンブリの公開鍵を使うという点です。

アセンブリには電子署名を行うことで「厳密名」を持たせることができます。
その厳密名に含まれる公開鍵を使うことで、データを暗号化してもそれを復号できるのは同じアセンブリのみとなります。

厳密名を付けるには、署名に使う公開鍵と秘密鍵のペアが必要です。
そのうち、秘密鍵は開発者が厳重に管理しているはずですので、秘密鍵は開発者しか分かりません。
アセンブリを読み込む際、そのアセンブリが署名されている場合は付属している公開鍵を使って改ざんの有無を確認し、問題なければアセンブリが読み込まれます。
つまり、データを暗号化したアセンブリを改ざんして暗号化データを抽出しようとしても、秘密鍵を知らないため署名が出来ないので抽出は不可能ということになります。


【C#】リフレクションでの呼び出しを検出・禁止する方法

C#には「リフレクション」という便利な機能があります。
これは、メソッドなどを動的に呼び出したり、インスタンスを動的に生成したりすることができる機能です。

ただ、この機能、実はprivateに設定したメンバも呼び出してしまうことができます。
つまり、他から呼び出されると困るからprivateにしたメソッドがあったとしたら、それを利用者が意図的に呼び出すことが出来てしまう、という訳です。
まあ、利用者がprivateメンバまでクラス構造を理解していないとできませんが。
注意:フィールドおよび構造体の引数なしコンストラクタに対するアクセスを検出する方法はありません。


E.L.E.M.E.N.Tの様々な変更について

今まで、なかなか進まなかったE.L.E.M.E.N.Tの開発ですが、いよいよ最終設計が完了し、本当の開発が始まりました。
(今までずっと開発進んでいたと思っていた方、すみません)

今回の仕様確定にて、今までと変更が発生した箇所があるので、以下に記載していきます。

正式名称の確定
今まで曖昧だった正式名称が確定しました。
その名も、「E.L.E.M.E.N.T Multipurpose Engine」、略称「E.L.E.M.E.N.T ME」または「Elem-ME」です。
なぜ正式名称が確定していなかったかというと、単なる「E.L.E.M.E.N.T」だと他の商標に引っ掛かるのではないかと思い、前後に何か付け加えようと考えていたためです。
今回決まった名前の「Multipurpose」とは「多目的」という意味で、Elem-MEがゲームエンジンとしてだけでなく、様々な用途で使われることを願って付けました。

ブログ・各種サイトの障害について

最近、当ブログやホームページ、E.L.E.M.E.N.Tの公式Wikiにアクセスできない障害が発生していました。
原因は、当該サイトをホスト頂いているレンタルサーバがDDos攻撃(分散型サービス妨害攻撃)を受けて全アクセスが遮断されたためとのことです。
詳しくは、レンタルサーバの管理者様のホームページに記載されています。(詳しくはこちら

DDos攻撃について簡単に説明すると、インターネットに繋がっている脆弱な(セキュリティ対策が不十分な)サーバーやクライアントを複数、不正プログラムなどで乗っ取り、攻撃対象のサーバーに一斉に通信を送らせることで攻撃対象の処理を妨害してサービスを停止させるというものです。

もしかしたら、今後もつながりにくい状況になるかもしれませんが、その際は時間を改めてアクセス頂けると幸いです。
以上、障害情報についてでした。


【GE-E.L.E.M.E.N.T】利用者証について

今回は、GE-E.L.E.M.E.N.Tの機能の一つである「利用者証」(旧制作者証)について解説したいと思います。
利用者証は、GE-E.L.E.M.E.N.Tのユーザーを管理したり、制作者の制作物を改ざんから保護したりするためのものです。
以前も似たようなことを書いた気がしますが改めて説明します。

GE-E.L.E.M.E.N.Tはマルチユーザーに対応していて、1つのGE-E.L.E.M.E.N.T環境を複数のユーザーで共有できます。
これにより、ユーザーそれぞれセーブデータを持つことができたり、ユーザーごとに設定(コマンドカスタマイズなど)を分けたり、更にはレーティングコントロール(年齢制限など)を行うこともできます。
利用者証はユーザーごとのデータを暗号化するための鍵として機能し、外部からのユーザーデータ改ざんから保護したり、ユーザーデータを他の環境にコピー・移動・同期する時の暗号化に使われます。
また、ユーザー名などの情報を管理する機能も持っています。


【C#】ファイルパスの正規化

C#でファイルパスの正規化を行おうと思ったのですが、絶対パスならSystem.IO.Path.GetFullName()で可能ですが相対パスについては上手く動作するコードがなかったので、こちらで作ったコードを公開しようと思います。

一応テスト済みですが、もし不具合があったら教えて頂けると助かります。