AndroidでDOSゲーをプレイできるMagic DosBoxを触ってみた

Magic DosBoxとは

WindowsLinux等複数のプラットフォームで移植されているオープンソースMS-DOSエミュレータDosBoxのAndroid移植版。

Android移植されているDosBoxは複数あるが、Magic DosBoxは2018年7月現在も積極的にアップデートされています。
特徴は「追加の物理デバイスを接続しなくても快適にMS-DOSゲームを使えること」 としており、バーチャルボタンの配置や設定が豊富に用意されています。

今回試してみたのはMagic DosBox Freeという無料版。
有料版は2018/7現在、390円で販売中。

無料版の制限はゲーム毎の設定情報を保存するcollectionが一つしか作成出来ないこと。
使えるウイジェット(バーチャルボタン)が10種類中、主要な3種類のみとなっている点です。

Google Play: Magic DosBox
https://play.google.com/store/search?q=%22MagicDosbox%22

□Magic DosBoxホームページ
http://magicbox.imejl.sk/magic-box/

Magic DosBoxでDOSゲーを起動するまで

1.インストールが完了したら早速起動してみる
(画面には既に作成済みのcollectionが表示されています)
左メニューの「+」ボタンをタップする。

f:id:skybluemonolith:20180717184633j:plain

2.Addウインドウが表示されるので、「New Game」を選択する

f:id:skybluemonolith:20180718144604j:plain

3.「Configuration Menu」が表示されるので入力していく
細かい設定を抜きにすれば下記項目を入力すればOK。
- Title: collectionの名前
- Memory: DosBoxが確保するメモリ量。 デフォルト16MBになっているが、ゲームに寄っては32MB以上求められることもある。
- CD-ROM: CD-ROMデータの読み込みが求められる場合はEnabledにチェックしisoデータを指定。
- Main Program: 起動するゲームのexeファイルを指定。

入力が完了したら下部のチェックマークを押して完了させる。項目に入力するだけでautoexecも含めたDosBoxの設定を生成してくれるのでとても便利。
直接DosBoxの設定ファイルを直接触りたい場合はExpert項目から編集することも可能。

f:id:skybluemonolith:20180718144911j:plain f:id:skybluemonolith:20180718145035j:plain

4.ゲームの起動を確認する
作成したcollectionが最初に画面に表示されるので、collectionをタップする。
タッチするとDOS画面が立ち上がり、 自動でexeファイルを起動、ゲームが開始する。

f:id:skybluemonolith:20180718150513j:plain

5.更に詳細な設定を行う
スマホの戻るボタンを押すと、General Settingsというメニューが表示される。
ここで更にメニューを選び、詳細な設定を行っていく。 (触ってみた設定を下記します)
- Advanced settingsのorientationで縦画面か横画面かを設定 - Add virtual buttonsでウイジェットの配置 - saveボタンで設定の保存

f:id:skybluemonolith:20180718150848j:plain f:id:skybluemonolith:20180718150852j:plain f:id:skybluemonolith:20180718150854j:plain f:id:skybluemonolith:20180718150859j:plain

横画面に設定してみた場合場合
f:id:skybluemonolith:20180720131326j:plain

さわってみた印象

DosBox Turboとの比較になりますが、DosBox Turboではautoexecを自分で作らなければならなかったのがMagic DosBoxではフォームに入力するだけなのでとてもハードルが低くなった印象です。
また、マウスの動きがDosBox Turboと比較して滑らかな感じでした。 タッチパネルでのマウスのポインタの操作は相対操作と絶対操作の2つが選べますが、基本は細かい操作が出来る相対操作になると思います。 今回、 試してみたのがIncredible Machineでウイジェットを使う必要があんまり無かったのですが、今後One Unit Whole BloodみたいなFPSを快適に出来るか試してみたいと考えています。

node.jsでAzure Machine Learning studioのAPIにリクエストを飛ばしてみた

Azure Machine Learning Studioで作成した機械学習APIにリクエストを飛ばして、 結果を受信したかったのでnode.jsで作成してみました。

基本は下記Microsoftのリファレンスを参照して作成
□Azure Machine Learning Web サービスを使用する方法
https://docs.microsoft.com/ja-jp/azure/machine-learning/studio/consume-web-services

□作成してみたスクリプト

var req_ai = require("request");
const uri_ai = "{APIのURI}";
const apiKey_ai = "{APIキー}";

var req_target = "{送信するパラメータ}"

//Azure Machine Learning Studio APIへ送る「target_text」の作成
var data_ai = {
  "Inputs": {
    "input1":
      [
        {
          'target_text': req_target
        }
      ],
    },
  "GlobalParameters": {}
}

//Azure Machine Learning Studio APIへ送るリクエストのヘッダー情報の作成
const options_ai = {
  uri: uri_ai,
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + apiKey_ai,
  },
  body: JSON.stringify(data_ai)
}

//Azure Machine Learning Studio APIへリクエストの送信・回答の受領
req_ai(options_ai, function (err, res, body){
  if (!err && res.statusCode == 200) {
console.log("<Azure Machine Learning Studio API>request success: " + body);
  } else {
    console.log("<Azure Machine Learning Studio API>The request failed with status code: " + res);
  }
});

□その他参照先
Microsoft Azure Machine Learning Web Services.
https://services.azureml.net/Quickstart.

AndroidでDOSゲーをプレイできるDosBox Turbo

DosBox Turboとは

WindowsLinux等複数のプラットフォームで移植されているオープンソースMS-DOSエミュレータDosBoxのAndroid移植版(有料270円)。
リリースは2012年とかなり昔からあるアプリ。
無料で利用可能な別のDosBox移植もあるが、 DosBox Turboには下記のようなゲームに特化した特徴がある。

①画面に表示させるバーチャルキーボード、ボタン、ジョイスティック機能
②物理コントローラの認識、マッピング機能
③物理入力・バーチャルマウスからのマウス操作機能
 - Samsung Spen, 物理マウス, コントローラのジョイスティック, トラックパッド等を認識し、マウス操作設定が可能
④画面タップ・ジェスチャーによる操作

また、DosBox Turbo上でwindows3.1や95を起動させることも出来るため、完全に玄人向けだがandroidwindows向けゲームを楽しむ事も出来る。

●DosBox Turbo google play
https://www.google.com/url?q=https://play.google.com/store/apps/details%3Fid%3Dcom.fishstix.dosbox%26hl%3Dja&sa=U&ved=0ahUKEwjt8aiIyJXcAhXJf7wKHa1fCO0QFggLMAA&usg=AOvVaw3MTKuxxUm8EKPWkTPfH0dh

●DosBox Turbo公式ホームページ https://sites.google.com/site/dosboxturbo/

DosBox Turboの性能について

Android端末に搭載しているCPU・メモリに左右される。
2013年発売のtegra4を搭載したShield Portable(Antutuスコア:38969) では大体Pentium 90Mhz程度の性能を要求するMS-DOSゲームを遊べる状態で起動できている。
2018年現在のAntutuスコア20万周辺のハイエンド端末ではどの程度の性能を出せるのだろうか。

お勧めのMS-DOSゲーム入手方法

GOG.comにて購入することをお勧めします。
大抵の名作ゲームがダウンロード形式で格安で販売されています。
MS-DOSのゲームはDosBoxが同梱されており、Windowsにてインストール後に すぐに起動出来る様に調整されています。
また、後述するautoexecの設定時に活用する事が出来ます。

また、CDから追加データを読み出すタイプや認証に使うタイプ等、本来CDが無いとプレイが出来ないゲームはCD無しで起動できるようにも調整されています。

DosBox Turboでのゲーム起動までの手順

1.windows等の母艦PCにDosBox TurboでプレイしたいMS-DOSゲームを用意します。

GOG.com等から入手したゲームをインストールした状態にします。
(以降はGOG.comから入手したゲームで説明を続けます。)

2.ゲームのインストールフォルダを丸ごとandroidにコピーします。

GOG.comの場合はc:/GOG Gamesフォルダ内の対象のゲーム名のフォルダを 丸ごとコピーします。

Android側のコピー先は例として今回はローカルドライブ直下にdosboxフォルダを 新規作成し、そこにフォルダごと設置します。
(パス例:/storage/emulated/0/dosbox/{game_name})

3.androidにDosBox Turbo, DosBox managerをインストールします。

DosBox managerを使うことでゲーム毎のDosBox Turboの設定を保存し、すぐにゲームが開始できるようにします。
逆にDosBox Turbo単体では起動してもDOS画面が出てくるだけで、自身でのコマンド入力を求められてしまいます。

4.DosBox managerの起動、autoexecの編集

3でdos環境が出来たので、2でコピーしておいたゲームを起動するように設定してあげれば、ゲームが遊べるようになります。

DosBox managerを 起動し、右上の「+」マークを押し、新しいプロファイル(プロファイル名は任意)を作成します。

設定画面が表示されるので、DosBox Settingsを選択します。

Autoexecを選択します。
(Autoexecは指定したコマンドをプロファイル起動時に自動で実行する設定のことです。)
テキスト編集画面と「mount~」が出てくるのでこれを編集していきます。

編集はgog.com版の場合、ゲームフォルダ内に配置されているautoexec.batのコンフィグファイルを参考にするのが良いです。

gogの場合、フォルダ内にdosbox{game_name}_single.confの様なファイルがあるのでそれを表示します。

●stonekeepの例 下記はGOG.com版の「dosboxstonekeep_single.conf」全文

=============================
[ipx]
# ipx -- Enable ipx over UDP/IP emulation.

ipx=false

[autoexec]
# Lines in this section will be run at startup.
@echo off
cls
mount C ".."
mount d "..CD" -t cdrom
C:
cls
SK.EXE
EXIT
=============================

●dosboxstonekeep_single.confを参考に作成したDosBox Turboのautoexec Gog.com版から[autoexec]部分のみを抜き出し、CドライブとDドライブの マウント先(フォルダパス)を動作させるAndroid端末用に修正しています。

=============================
@echo off
cls
mount c:/storage/emulated/0/dosbox/stonekeep/
mount d:/storage/emulated/0/dosbox/stonekeep/CD -t cdrom
c:
cls
SK.EXE
EXIT
=============================

設定が完了したら「OK」を押して戻るx2回で一番最初のプロファイル選択画面に戻る。

編集したプロファイルをタップし、起動する。
Autoexecがうまく設定されていれば自動でEXEファイルが読み込まれ、ゲームが起動します。

ゲームの動作確認後、やること

動作確認後はプロファイルのInput Preferencesの項目を中心に操作をカスタマイズして プレイ環境を充実させていきます。
普通のソフトウェアキーボードではEscやCtrl等の入力ができないので、 Hacker's Keyboardなどのアプリを入れて使うと便利です。

あとはBluetoothゲームパッドやキーボード等と組み合わせることでより快適な環境を 構築可能です。

起動確認ゲームメモ

実際に起動してプレイできたゲームのメモ

・Arena
・Daggerfall
Duke Nukem 3D
Might and Magic 4-5
・One Unit Whole Blood
・Shadow warrior
Simcity 2000
・Stonekeep
Ultima Underworld
Ultima Underworld II

powershellでselenium 構文等

powershellseleniumを利用するための基本的な構文

DLLの読み込み

例:「WebDriver.dll」と「chromedriver.exe」はc:\seleniumフォルダに格納

$env:PATH += ";C:\Selenium"

$chrome_object = New-Object "OpenQA.Selenium.Chrome.ChromeDriver"

指定したURLに移動する(例:http://google.com)

$chrome_object.url = "http://google.com"

HTMLソース中のNAMEタグを元にエレメントを特定し、指定する

例:name = “COMMIT”

$commit_button = $chrome_object.FindElementByName( "COMMIT" )

↑で指定したエレメントの操作(クリック)

$commit_button.click()

↑で指定したエレメントの操作(キー入力)

例:confirmedと入力

$commit_button.SendKeys("confirmed")

表示しているページのHTMLソース取得

$htmlsource = $chrome_object.pagesource

 

BASIC認証の突破方法

①URL移動時のURLにユーザ名とパスワードを直接表示することで突破可能

 例:ユーザ名:user, パスワード:password, URL:http://something.com 

 http://user:password@something.com/  

②「①」ではうまく認証できないケースがあり、その場合はPowershell(.NET Framework)の機能で直接ブラウザの認証画面にキー操作を行って対応  

 Start-Sleep -s 3  #3秒待つ

 [System.Windows.Forms.SendKeys]::SendWait("user") #ID入力

 [System.Windows.Forms.SendKeys]::SendWait("{Tab}") #Tabキー送信

 [System.Windows.Forms.SendKeys]::SendWait("password")  #パスワード入力

 [System.Windows.Forms.SendKeys]::SendWait("{Enter}")  #Enterキー送信

proxy環境下でのpipの利用に詰まったメモ

会社のWindows PCでpipを実行したところ、検索で探した対策だけでは
うまくいかなかったので、成功例をメモ。

プロキシサーバアドレス    :proxy.local
プロキシサーバポート     :port
プロキシ ユーザアカウント  :id
プロキシ ユーザパスワード  :password
インストールしたいモジュール名:module_name

コマンドプロンプトで下記コマンド2行を入力。

set HTTPS_PROXY=http://id:password@proxy.local:port  
pip install module_name --proxy= proxy.local:port

これで成功。

powershellでselenium webdriverを動かした話

洋史東平さんのslideshareを参考にし、 Powershellselenium webdriverを動作させることが出来たので、実施したことをまとめます。

動作させた環境

Windows 7 32bit
Powershell Ver 5.1
Google chrome Ver 6.5
Selenium Client C#用 3.11.1
Google Chrome Driver 2.36

概要

 Selenium Webdriverの公式HPの「Selenium Client & WebDriver Language Bindings」
 を参照する通り、対象の言語に「Powershell」の記載はありませんが、
 C#用を使用することが可能です。

環境準備

1.SeleniumHQ.orgより最新のリリースをダウンロードする

URL:https://www.seleniumhq.org/download/
 ・Selenium Client & WebDriver Language Bindings : Language C#
 ・Third Party Drivers, Bindings, and Plugins : Google Chrome Driver

2.ダウンロードしたファイルを解凍し、必要なものを一か所に集める

例として、今回は「C:\selenium」に集める。

selenium-dotnet-3.11.1.zip」は解凍すると、distフォルダが出来るので
フォルダ内の「Selenium.WebDriver3.11.1.nupkg」を解凍する。
nupkgは拡張子をzipに変更して解凍。Lhaplusではnupkgそのままで認識して
解凍してくれました。
解凍して出来たフォルダ内の「lib/net35」に格納されている「Webdriver.dll」を
c:/seleniumフォルダに移動させる。

「chromedriver_win32.zip」は解凍すると、「chromedriver.exe」が出来るので
それを「c:/selenium」フォルダに移動させる。
「Webdriver.dll」「chromedriver.exe」が「c:\selenium」フォルダにそろったら、
環境の準備はOK。

powershellで動かしてみる

powershell ISEなどのpowershellのエディタで下記スクリプトを貼り付けて、起動してみる

Add-Type -Path "C:\selenium\WebDriver.dll"
$chrome_object = New-Object "OpenQA.Selenium.Chrome.ChromeDriver"
$chrome_object.url = "http://google.com"

google chromeが立ち上がり、google.comが表示されればOK。

次はスクリプト作成時に使った構文を書いてみたいと考えています。