卒業論文を終え、どうしてもやりたくて時間がとれなかったJava製ロールプレイングゲームエンジンWWAのJavaScriptの移植に再度着手することにしました。
下記の3プロジェクトをほぼ1人で遂行しました。
Javaアプレットで動作するロールプレイングゲーム実行環境World Wide AdventureのJavaScript 版の実行環境です。 近年、非HTTPSなWebサイトでJavaアプレットを実行するには、実行を許可するサイト一覧である「例外リスト」への追加が必要になり、WWA本来の「サイトにアクセスしてすぐ遊べる」という特徴が失われたために開発を開始しました。
開発途中でWWAの公式サイトの公認を得ており、現在においては公式サイトのWWAもWWA Wingでの動作に対応しています。 また、ゲーム投稿サイトPLiCy (外部サイト) を利用することで、Webサイトを持たずにWWAを設置することができるようになっています。
公式サイトでの配布物では、ローカル環境でサーバを建てて、ゲームのテストを可能にするプログラム「WWA Debugger」(Aruneko氏による)と、 原作からのWWA作成ツール、およびWWALoaderが同梱され、それだけでWWAの開発が可能となっています。しかし、開発ツールはWindowsでのみしか動作しないため、作成ツールのマルチプラットフォーム化が今後の課題となっています。
2018年~2019年には、PLiCyさんの協力のもと、セーブデータの保存の永続化・複数化などの機能をリリースすることができました。
タイトル | WWA Wing ( 発表当初「World Wide Adventure on JavaScript」) |
---|---|
作者 | WWA Wing Team (まつゆき, [Aruneko](https://www.aruneko.net), [Aokashi](http://aokashi.net), [ヒラリラー](http://hirarira.net)) |
ソースコード | https://github.com/WWAWing/WWAWing |
開発言語 | TypeScript, JavaScript, CSS, HTML |
使用ライブラリ | package.json を参照 |
ライセンス | MIT License |
開発期間 | 2015年2月3日〜現在 |
WWAのマップデータ(バイナリ)を解析するJavaScriptプログラムです。 WWA Wingで必要になるため作成を開始しました。
開発当初は、基本的にWeb Workerとして呼び出すことを前提としているプログラムでしたが、多くのブラウザで直接本体に組み込んだ方が動作が速くなることがわかったため、 現在は webpack によって WWA Wing 本体と結合されて動くようになっています。他の npm で開発されている JavaScript のプログラムと一体的に動作させることも可能です (2021年2月現在、ブラウザに限る。 nodeなどのランタイムで動作させることも実現できるか検討中)。
マップデータファイル名を与えると、そのマップデータファイル名を XMLHttpRequest
で取得し、解析結果をJavaScriptのオブジェクト として返します。
タイトル | WWA Loader |
---|---|
作者 | WWA Wing Team (まつゆき, Aruneko, Aokashi, ヒラリラー) |
ソースコード | https://github.com/WWAWing/WWAWing/tree/develop/packages/loader |
開発言語 | TypeScript, JavaScript |
ライセンス | MIT License |
開発期間 | 2013年4月〜現在 |
WWA Wingは、WWA設置サイトの管理者が対応するまで、その効力を発さないという欠点があります。 ですので、既存のWWAを遊ぼうとした時には相変わらずJava版となってしまいます。 そこで、従来のWWAをWWA Wing相当の実行環境に置き換えるブックマークレットとして、WWA Phoenixを開発しました。
タイトル | WWA Phoenix (開発当初「JumpGate」) |
---|---|
作者 | WWA Wing Team (まつゆき) |
ソースコード | https://wwaphoenix.github.io/ |
開発言語 | JavaScript |
ライセンス | Creative Commons CC-BY 4.0 |
開発期間 | 2013年4月〜現在 |
大学に入って所属した研究室で卒業論文を書きました。
あるシステムを構築しました。技術的にはだいたいこんな具合。
2014年8月に行われた、「セキュリティ・キャンプ全国大会 2014 (Web・セキュリティ・クラス)に参加しました。
Webクラスとしては、主にContent Security Policyなどの任意のJavaScript実行を 防ぐ仕組みを学びました。実習では、実習内用の脆弱なWebアプリケーションの脆弱性を探し、脆弱性とその対策をまとめてチームで発表しました。
この実習用のWebアプリケーションは、実習で貸し出されたFirefox OS端末(Flame)から使われる想定となっていました。スマートフォン上におけるHTML/JavaScriptの取り扱いがとても新鮮でした。
この他、他のクラスの方と合同で「セキュアな企業」についてディスカッションしたり、CTF(Capture the Flag)という競技で戦ったりしました。
素晴らしい方々と出会える貴重な機会でしたが、人とコミュニケーションを取るのが苦手であった当時の私は、折角の機会を逃す傾向にあったと思います。
当時注目されていた、スマートフォン向けOSである Firefox OS のアプリケーションを作成する事前課題が出されたため、作成したゲームです。
タイトル | 進捗Clicker |
---|---|
作者 | rmn.(現: まつゆき) |
ソースコード | https://github.com/matsuyuki-a/progress-clicker |
開発言語 | JavaScript, HTML, CSS |
使用ライブラリ | Building-Blocks |
ライセンス | Apache License 2.0 |
開発期間 | 2014年6月-2014年8月 |
2013年の大学学園祭では、各部員が作成したゲームからスコアサーバにスコアを 送信して、ランキングを表示するシステムを作成しました。
展示では、スコアサーバは普通のWindowsマシンでした。常時起動していて、 画面には現在のスコアランキングが表示されていました。各端末からのリクエストを受け取ると ゲームのIDとスコアを適切な順位の場所に挿入し、画面の更新を行っていました。
当時はなぜか生のTCP/IPを扱っていましたが、のちに普通にHTTPでやりとりして、 サーバは普通のWebサーバで、ランキングのデータ保持は関係データベースを使った方が 簡単にできると感じました。そして、2015年度の学園祭では後輩がそれを実装しました (PHP+MySQLだったようです)。
タイトル | ERS( E. Ranking System ) |
---|---|
作者 | rmn.(現: まつゆき) |
ソースコード | 公開準備中 |
開発言語 | C++ (Microsoft Visual C++ 2012 Express) |
使用ライブラリ | DXライブラリ |
開発期間 | 2013年8月-2013年10月 |
2012年の大学学園祭では、部員のゲームを起動するプログラムを作成しました。 Windowsアプリケーションをプロセス処理によって起動し、起動中ランチャは最小化されるようになっています。
タイトル | Only One Launcher |
---|---|
作者 | rmn.(現: まつゆき) |
ソースコード | 非公開 |
開発言語 | C++ (Microsoft Visual C++ 2012 Express) |
使用ライブラリ | DXライブラリ |
開発期間 | 2012年8月-2012年12月 |
大学の授業向けにアクションゲームを作成しました。物理演算を行うJavaScriptライブラリの 「Box2DJS」を用いました。HTML Canvas上で動作します。
また、ゲームをプレイしながらプレゼンテーションを行う新しい取り組みをしました。
タイトル | 線分ABを点Pがノリノリで動くゲーム |
---|---|
作者 | rmn.(現: まつゆき) |
ソースコード | https://github.com/matsuyuki-a/matsuyuki.dev/tree/master/public/trivial/pointp |
開発言語 | JavaScript, HTML |
使用ライブラリ | Box2DJS, Prototype.js, ExplorerCanvas |
ライセンス | Apache License 2.0 |
開発期間 | 2012年11月頃 |
2012年から、データ入力のアルバイトを始めました。
といっても、実際には、Excelでかなり複雑な関数かVBAマクロを組むなど、 プログラミングの要素がとても強かったと言えると思います。
その他、地形データを扱うためにXMLファイルを処理したり、GISソフトウェアを 使って地図上に情報を描画したり、SQL方言でその情報を絞り込んだりといった 作業を行いました。
2012年の頭一発目は、サーブレット!
当時レンタルしていたチャットサービスには、入室者の情報を取得するためのAPIが存在していました。 具体的には、XML形式で、入室中のユーザ数とその一覧を取得することができました。
チャットに人を集めるべく、現在の入室者情報を1時間おきにAPIから取得、TwitterでつぶやくシステムをJavaで書き、 Google App Engine 上で動かしていました。
また、2013年には、Twitter API のバージョンが 1.1
になったため、Twitter4j のアップデートを適用しました。
(現在は、アカウント・サービスともに公開を終了しています。)
タイトル | Acari (Advanced Chat Anouncer Rmn Imagined) |
---|---|
作者 | rmn.(現: まつゆき) |
ソースコード | 公開調整中 |
開発言語 | Java |
使用ライブラリ | Twitter4j |
プラットフォーム | Google App Engine |
開発期間 | 2011年10月6日-2012年1月1日(下準備を含む) |
公開期間 | 2012年1月1日-2013年7月6日 |
WWAを参考に、大学で入ったプログラミング関係のサークルで、予めテキスト形式で記述されたマップデータを読み込むことで動作する 2次元ロールプレイングゲームのエンジンをMicrosoft Visual C++ 2010とDXライブラリを用いて開発しました。 このプログラムは、Windows上のデスクトップアプリケーションとして作成されました。
友人が担当していた戦闘シーン実行プログラミングと組み、2011年度の学園祭で展示されました。
タイトル | シンプルRPG |
---|---|
作者 | rmn.(現: まつゆき)、ごまごま |
ソースコード | 非公開 |
開発言語 | C++ (Microsoft Visual C++ 2010 Express) |
使用ライブラリ | DXライブラリ |
開発期間 | 2011年8月15日-2011年12月18日 |
大学では情報科学を学ぶ学科に進みました。
入学初年度はC言語の基礎を勉強しました。既に、TOWN でPerl によるプログラミングを、 某所でJava によるプログラミングを勉強していたため、そこそこ順調に勉強は進んでいきました。
この授業では、Webアプリケーション上である問題が与えられ、その問題を解くためのプログラムをサーバに提出して正誤が判定されるシステムが用いられていました。 授業で使用されていたシステムの全ての問題 を解いたことが自信となり、その後の技術向上につながったものだと考えています。
また、さらなる技術向上を目指し、競技プログラミングへの挑戦を始めました。具体的には、Aizu Online Judge(以下AOJ) にある問題を解き進めるなど。
(でも、ちょっとアルゴリズムを工夫しないといけない問題はほとんど解けないのでした。)