Brother DCP-J925NでControlCenter4が起動しない

いい塩梅にハマったのでメモ。

症状としては、ControlCenter4を起動しようとしても何も起きない。
起動しないしエラーもでない。
それだけならまだしも、複合機側から操作してもちゃんとPCが認識できないらしくてスキャンとか無理ゲー。

この時点で実施していること
DCP-J925NをUSB接続して、公式サイトのサポートからフルパッケージダウンロードしてインストール。
あ、ちなみに使ってるOSはWindows8 pro x64。
ちなみに無線LANでつないでも変わらず。

とりあえずまあ色々と調べてみて、なんか怪しいログを発見した。

“C:Program Files (x86)ControlCenter4BrCtrlCntr.exe” のアクティブ化コンテキストの生成に失敗しました。 従属アセンブリ Microsoft.VC80.OpenMP,processorArchitecture=”x86″,publicKeyToken=”xxxxxxxxxxxxx”,type=”win32″,version=”8.0.50727.6195″ が見つかりませんでした。 詳細な診断を行うには sxstrace.exe を実行してください。

ということで、Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ MFC のセキュリティ更新プログラムをインストール。
動いた。

で、なんでこんなことが起きていたのかというと、どうもユーザ名がマルチバイト文字を含んでいたからっぽい。
ユーザ名にマルチバイト文字とか使うなよksgって言うかもしれないが、まあおれもわざわざそんなことしようとは思わないわけなんだけども、Windows8にしてからアカウントはWindows Liveアカウントを使うようにしたわけで、そうするとアカウントのプロフィールで設定している名をユーザ名として利用するようで、まあプロフィールで設定していた名前とか全力日本語だったと。
んで、DCP-J925Nのドライバのフルパッケージのインストーラでは、どうもVisual C++ 2005の再頒布可能パッケージもインストールようになっている(ControlCenter4をインストールしないようにした場合は入れないのかもしれない)ようなんだけど、ユーザ名にマルチバイト文字が含まれているとインストールに失敗することがあるらしく、まあ、なんか[Command line option syntax error.Type Command /? for Help.]的なエラーが出現してたから多分これだと思う。

つまり、 DCP-J925Nをマルチバイト文字含むアカウントで利用する場合は、予めMicrosoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ MFC のセキュリティ更新プログラムをインストールしておこね、っていうことでした。
x64なOSの場合はx86版とx64版両方入れとこね。

あるいは、半角英数字なユーザ作ってそっちで入れるとかでもいいのかもね。
例えばコマンドプロンプトから secpol って叩いて ローカルポリシー>セキュリティオプション>アカウント:Administratorアカウントの状態>有効 にして、フルパッケージドライバインストーラをshift+右クリックして別のユーザとして実行でadministratorで実行してインストールしてもいけるかもね。

PostfixでOP25B対応@so-net

OP25BはOutbound Port 25 Blockingの略でまあ内容はそのまま25番ポートの外向きの接続をブロックするってやつで、要するに直接SMTPを外部にしゃべるなってやつです。
でまあ、代わりにプロバイダが用意しているMTAにリレーして、代理配送を頼むっていうお話。

今まではrelayhostにmail.au-one.netだかを設定していて問題なかったんだけども、なんか先日突然ブロックされました。
KDDIなんだからええやんと思うわけですが、方針を変えたようです。
ので、プロバイダはso-netなので切り替えようとしたわけですが、so-netではrelayhostを指定するだけではAuthentication requiredが帰ってくる。
SMTP認証を要求されるということでして、その設定も必要に。
ところがプロバイダのメールなんて使ってないし、IDもなんもかんも覚えてない上に、書類を紛失して再発行依頼する羽目に。
書類が届いたところでようやく設定です。

main.cf

relayhost = [mail.so-net.ne.jp]:587

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtpauth
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = LOGIN, PLAIN, CRAM-MD5

smtpauth

[mail.so-net.ne.jp]:587 xxxxxx@xxx.so-net.ne.jp:PASSWORD
# chmod 640 smtpauth
# postmap smtpauth

をしてpostfix再起動。

# echo test | mail xxx@example.com

とかやって外部にメール配送できるかチェック。
ダメだったら/var/log/mail.logとかでどこでこけてるか確認して何とか。

コマンドラインのmysqlでmysqldからのメッセージが文字化けする

データベースの中身に入っているデータが文字化けするとかじゃないです。
ターミナルでサーバ機に接続して、そこからmysqlコマンドでデータベースに接続して、そこでSQLかちゃかちゃ打ち込んでたりすると、コマンドの実行結果そのものとは別にちょっとしたメッセージが出るじゃないですか。
えーといまいちわかりにくいですね、まあエラーメッセージに顕著なんですよ。

ERROR 1064 (42000): Something is wrong in your syntax  : ‘lock’ ノユカ・ : 1 ケヤフワ
ERROR 1141 (42000): ・譯シ・カ。シ ‘root’ (・ロ・ケ・ネ ‘%’ 、ホ・?・カ。シ) 、マオト、オ、・ニ、、、?サ、・
ERROR 1044 (42000): ・譯シ・カ。シ ‘root’@’localhost’ 、ホ ‘information_schema’ ・ヌ。シ・ソ・ル。シ・ケ、リ、ホ・「・ッ・サ・ケ、ン、キ、゙、ケ

とかこんな感じ。
で、これ前々から気にはなっていたんだけども、ずっと放置していて、まあいい加減直したいなと。
そこでまず、この文字化けの文字コードはなんだろうと。
SJISでもUTFでもないんだよなーっていじってたらでましたEUC。

mysql> grant lock tables on information_schema.* to root;
ERROR 1044 (42000): ユーザー ‘root’@’localhost’ の ‘information_schema’ データベースへのアクセスを拒否します

EUCとかどこにも使ってる覚えないんですけど、っていうかサーバ基本的にUTF8なんですけど、っていうことでしらべていたらこちらに答えが。

んで、「/etc/my.conf」の設定行をコメントアウトして、MySQLをリスタート、経過観察を繰り返すこと数回。

わ、わかりました。

以下のように、コメントアウトして試したところ、文字化けしたエラーメッセージが出なくなりました。

[mysqld]
#language = /usr/local/mysql/share/mysql/japanese

でも、日本語のエラーメッセージではなく、デフォルトの英語に戻ってしまった。

気になって、エラーメッセージを出力するソースを見てみたところ、Shift-JISとEUC-JPしか、用意されていないことが判明しました。
UTF-8の要求しても、EUC-JPの出力で返されていたので、文字化けが起こるのも当然だな

はい、うちでもlanguage設定しています。
MySQLはUTF-8で設定しています。
文字化けの文字コードはEUCでした。
完全に一致。

よし。コメントアウトして終わりと。

information_schemaのmysqldumpがうまくいかない

先日MySQLを5.0から5.1にバージョンアップしました。
出てることに気づいてなかったんです。
別にあげなくても困らないんですけど、なんとなくあたらしもの好きということで。
5.5はdebianだとexperimentalだったのでやめました。

で、まあ、5.1にしたらちょいちょい問題が出たんですけど、まあエラーログ眺めてなんとかしたんですよ。
skip-bdbオプションあったらうごかないとか。(たぶん削除されたんでしょう)
default-character-setがdeprecatedになってcharacter_set_server使えとか。

そんなこんなでとりあえずうごかしはじめて問題なさそうだったので数日、ふとroot宛てのメールを見ると日々cronで回しているmysqlのバックアップさんからエラー通知。

mysqldump: Got error: 1044: _桼____ ‘root’@’localhost’ __ ‘information_schema’ _ǡ____١____ؤΥ____________ݤ__ޤ_ when using LOCK TABLES

なんか化け化けですけど、とりあえずエラーコード1044ってことでいいすかね。

でまあ、ぐぐってみたら結構でてくる。
正しいエラーメッセージはこうらしい。

mysqldump: Got error: 1044: Access denied for user ‘root’@’localhost’ to database ‘information_schema’ when using LOCK TABLES

権限が無いといっているようにみえる。
rootなんですけど。。。

んで、解決策としては、mysqldumpのオプションに、–single-transactionをつければいいらしい。
LOCK TABLES権限をユーザに与えてもいいって書いてるところもあるんだけど、rootでやってるから全権限あるんすよね。
一応権限確認したら all on *.* だったし。
ということで、試してみたらいけた。

mysqldump –add-drop-database –add-drop-table -e –add-locks –quick –quote-names -u root –password=XXXXXXXXXX –single-transaction information_schema > /backup/information_schema.sql

みたいな感じで。
rootにgrantはしっぱいした。
ほかのユーザならうまくいくのかもね。

Minecraftをデコンパイルする

なんのためにするかっていうと、まあ、ソース調査したいときありますよね。
主にMOD作ったりPlugin作ったりするときに。
そのためにMinecraftのjarからクラスファイルを引っ張り出してデコンパイルしてソースに戻します。
俗に言うリバースエンジニアリングってやつ。
ということで、そのやり方。

Minecraft Coder Packを使う。
普通のJava DecompilerのJD-Eclipseとかだとなんかうまくいかんのよね。
なんかパック的なことでもやってるんかもね。

まず、JDKを入れる。
JREじゃなくてJDKね。
必要ならPATHを通す。
C:Program FilesJavajdk1.6.0_24bin;C:Program FilesJavajre6bin
このあたりを。
でも、なんかWindows7 x64だとPATHの設定しなくてもjavaとかはじけるので設定しないでよかった。

で、MCPをDLしたら、適当なフォルダに解凍して設置。

んで、肝心の対象をMCPのjarsフォルダに入れる。
サーバのjarは公式から落とす。
minecraft_server.jarってやつね。
クライアント側のは
%APPDATA%.minecraft
にある

bin
resources

フォルダをコピペする。

以上で準備は完了。

あとはMCPのdecompile.batをたたけば、src以下にserverおよびclientのソースファイルが展開される。

ちなみに、展開されたソースをEclipseで扱いたい場合の簡単な方法は、EclipseのワークスペースにMCPのEclipseフォルダを指定すればいい。
するとServerとClientのJavaプロジェクトができあがってる。
普通に新規プロジェクトウィザードで外部ソース指定でももちろんいい。

CraftBukkitをソースからビルドする

環境はWindows7 64bit。

まず、JDKとEclipseをダウンロードする。
JDKはとりあえず最新のやつ、Eclipseはhttp://www.eclipse.org/のdownloadsからEclipse IDE for Java Developersを選んだ。
gitとmavenが使えるならなんでもいい。
使えなかったら適当にプラグインで追加しよか。

次に軽く日本語化する。
いらない人はスキップ。
とりあえず公式のinternationalizationのBabelを使おうとしたが、Unable to read repositoryとかエラーが出るので、Pleiadesを導入することにした。
Pleiades All in Oneは32bitなのでやめた。
余計なもんもくっついて来すぎて重いし。
Pleiadesの導入は

  1. Pleiades本体をDLして展開
  2. 中身をEclipseのフォルダにつっこむ
  3. eclipse.iniの最終行に以下を記述
    -javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
  4. eclipseを-cleanオプション付きで起動する

標準JREを変更する。
ウィンドウ>設定>Java>インストール済みのJREでさっきいれたJDKを指定。
JRE(Java Runtime Environment)じゃなくてJDK(Java Development Kit)な。
じゃないとMaven実行時にこける。

WS000172

んで、gitの準備。
環境変数HOMEを設定。
値は%USERPROFILE%でよいでしょう。
Eclipse>ウィンドウ>設定>チーム>Git>複製リポジトリー>デフォルト・リポジトリ・フォルダーを好きなところに設定。

gitでBukkitとCraftBukkitを持ってくる。

ウィンドウ>パースペクティブを開く>Gitリポジトリエクスプローラ

WS000164
GITリポジトリの複製でBukkitのソースを持ってくる。
URIはhttps://github.com/Bukkit/Bukkit.git
WS000165

とりあえず両方

WS000157

適当に保存場所設定

WS000158

同じパターンでCraftBukkitもやる。
CraftBukkitのURIは

https://github.com/Bukkit/CraftBukkit.git

になる。

Gitからソースの取得ができたら、プロジェクトを作る。
ファイル>Import>Maven>Existing Maven Projects

WS000166

ルートディレクトリにGitでとってきたBukkitのソースがあるディレクトリを指定する。

WS000167

CraftBukkitもやる。

実行>実行構成>Mavenビルド>新規で基底ディレクトリにGitで拾ってきたBukkitのアドレスを指定して、ゴールにclean installを指定して実行。

WS000170

CraftBukkitでもやる。

できました。

WS000171

Minecraftサーバの導入

例のごとくWindowsではなくてLinuxの話です。
まあ管理ツールの使い方なんかはWindowsでも参考になるかもしれない。

導入環境は以下の感じ

OS: Debian GNU/Linux sid
kernel: 3.2.0-1-amd64
CPU: Intel(R) Core(TM)2 Duo CPU E6850  @ 3.00GHz
memory: 4GB
jre: sun-java6-jre 6.26-3

なお、このマシンはxenで仮想化した64bitゲストOSだけど普通にいけた。

ということで、まずインストール先ディレクトリを決める。
今回は /usr/local/minecraft をインストール先ディレクトリにした。

ということでサーバ本体をダウンロードしてそこに配置。
この辺においてある。
exeじゃなくてjarを拾ってこよね。

で、これでjre入ってればサーバ起動できるんだけど、色々とそれだと制御に難があるので、シェルスクリプトを導入する。
screenコマンドを使っているので、もし入ってなかったら入れること。
元はhttp://www.minecraftwiki.net/wiki/Server_startup_scriptのものなんだけど、ちょっと問題点を修正してあるのが以下。
-Djava.net.preferIPv4Stack=trueを入れていないとIPv6でバインドされて接続できなかった。

#!/bin/bash
# /etc/init.d/minecraft
# version 0.3.6 2011-10-17 (YYYY-MM-DD)
 
### BEGIN INIT INFO
# Provides:   minecraft
# Required-Start: $local_fs $remote_fs
# Required-Stop:  $local_fs $remote_fs
# Should-Start:   $network
# Should-Stop:    $network
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description:    Minecraft server
# Description:    Starts the minecraft server
### END INIT INFO
 
#Settings
SERVICE='minecraft_server.jar'
OPTIONS='nogui'
USERNAME='minecraft'
WORLD='world'
MCPATH='/usr/local/minecraft'
BACKUPPATH='/usr/local/minecraft/backup'
CPU_COUNT=1
INVOCATION="java -Xmx1024M -Xms1024M -Djava.net.preferIPv4Stack=true -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $SERVICE $OPTIONS"
 
ME=`whoami`
as_user() {
  if [ $ME == $USERNAME ] ; then
    bash -c "$1"
  else
    su - $USERNAME -c "$1"
  fi
}
 
mc_start() {
  if  pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is already running!"
  else
    echo "Starting $SERVICE..."
    cd $MCPATH
    as_user "cd $MCPATH && screen -dmS minecraft $INVOCATION"
    sleep 7
    if pgrep -u $USERNAME -f $SERVICE > /dev/null
    then
      echo "$SERVICE is now running."
    else
      echo "Error! Could not start $SERVICE!"
    fi
  fi
}
 
mc_saveoff() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is running... suspending saves"
    as_user "screen -p 0 -S minecraft -X eval 'stuff "say SERVER BACKUP STARTING. Server going readonly..."15'"
    as_user "screen -p 0 -S minecraft -X eval 'stuff "save-off"15'"
    as_user "screen -p 0 -S minecraft -X eval 'stuff "save-all"15'"
    sync
    sleep 10
  else
    echo "$SERVICE is not running. Not suspending saves."
  fi
}
 
mc_saveon() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is running... re-enabling saves"
    as_user "screen -p 0 -S minecraft -X eval 'stuff "save-on"15'"
    as_user "screen -p 0 -S minecraft -X eval 'stuff "say SERVER BACKUP ENDED. Server going read-write..."15'"
  else
    echo "$SERVICE is not running. Not resuming saves."
  fi
}
 
mc_stop() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "Stopping $SERVICE"
    as_user "screen -p 0 -S minecraft -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..."15'"
    as_user "screen -p 0 -S minecraft -X eval 'stuff "save-all"15'"
    sleep 10
    as_user "screen -p 0 -S minecraft -X eval 'stuff "stop"15'"
    sleep 7
  else
    echo "$SERVICE was not running."
  fi
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "Error! $SERVICE could not be stopped."
  else
    echo "$SERVICE is stopped."
  fi
}
 
mc_update() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is running! Will not start update."
  else
    MC_SERVER_URL=http://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar?v=`date | sed "s/[^a-zA-Z0-9]/_/g"`
    as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
    if [ -f $MCPATH/minecraft_server.jar.update ]
    then
      if `diff $MCPATH/$SERVICE $MCPATH/minecraft_server.jar.update >/dev/null`
      then
        echo "You are already running the latest version of $SERVICE."
      else
        as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/$SERVICE"
        echo "Minecraft successfully updated."
      fi
    else
      echo "Minecraft update could not be downloaded."
    fi
  fi
}
 
mc_backup() {
   echo "Backing up minecraft world..."
   if [ -d $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"` ]
   then
     for i in 1 2 3 4 5 6
     do
       if [ -d $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`-$i ]
       then
         continue
       else
         as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`-$i"
         break
       fi
     done
   else
     as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`"
     echo "Backed up world"
   fi
   echo "Backing up $SERVICE"
   if [ -f "$BACKUPPATH/minecraft_server_`date "+%Y.%m.%d_%H.%M"`.jar" ]
   then
     for i in 1 2 3 4 5 6
     do
       if [ -f "$BACKUPPATH/minecraft_server_`date "+%Y.%m.%d_%H.%M"`-$i.jar" ]
       then
         continue
       else
         as_user "cd $MCPATH && cp $SERVICE "$BACKUPPATH/minecraft_server_`date "+%Y.%m.%d_%H.%M"`-$i.jar""
         break
       fi
     done
   else
     as_user "cd $MCPATH && cp $SERVICE "$BACKUPPATH/minecraft_server_`date "+%Y.%m.%d_%H.%M"`.jar""
   fi
   echo "Backup complete"
}
 
mc_command() {
  command="$1";
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    pre_log_len=`wc -l "$MCPATH/server.log" | awk '{print $1}'`
    echo "$SERVICE is running... executing command"
    as_user "screen -p 0 -S minecraft -X eval 'stuff "$command"15'"
    sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
    # print output
    tail -n $[`wc -l "$MCPATH/server.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/server.log"
  fi
}
 
#Start-Stop here
case "$1" in
  start)
    mc_start
    ;;
  stop)
    mc_stop
    ;;
  restart)
    mc_stop
    mc_start
    ;;
  update)
    mc_stop
    mc_backup
    mc_update
    mc_start
    ;;
  backup)
    mc_saveoff
    mc_backup
    mc_saveon
    ;;
  status)
    if pgrep -u $USERNAME -f $SERVICE > /dev/null
    then
      echo "$SERVICE is running."
    else
      echo "$SERVICE is not running."
    fi
    ;;
  command)
    if [ $# -gt 1 ]; then
      shift
      mc_command "$*"
    else
      echo "Must specify server command (try 'help'?)"
    fi
    ;;
 
  *)
  echo "Usage: $0 {start|stop|update|backup|status|restart|command "server command"}"
  exit 1
  ;;
esac
 
exit 0

 

minecraft実行用のユーザを作成する。(useradd minecraftで上等)

minecraftインストール先ディレクトリのパーミッションもそのユーザに変えておこう。

#Settingsの部分を自分の環境に合わせて /etc/init.d/minecraft に配置して chmod 755 minecraft。

これで

# /etc/init.d/minecraft start

とか

# /etc/init.d/minecraft restart

とかできるようになる。

できなかったらなんかができてない。

で、あとはサーバ起動/終了時に自動で起動/停止するようにサービス登録。

debian系なら

# update-rc.d minecraft defaults

cronで定期バックアップなんかもできる。

/etc/init.d/minecraft backupを登録すればいい。

このスクリプトを通してサーバコマンドを打つこともできる。

# /etc/init.d/minecraft command list

みたいな。

 

で、あとはServer.propertiesの編集。

デフォルトでかかれている以上のものがあるんで、http://www.minecraftwiki.net/wiki/Server.propertiesを参照した方が良い。

訳してもいいけどわかんないんだったら日本のwikiでも大体乗ってる。

で、一通り設定が終わったら、サーバ管理でスクリプト経由でコマンドをうてるっていっても、いちいち端末起動して接続してsuしてコマンド打ってってやっぱ面倒なので、普段はrcon使いましょ。

あ、普段使ってるデスクトップがLinuxでそのLinuxでminecraftをうごかしているっていうのは例外です。

ということで

enable-rcon=true

rcon-passwordはお任せ。

これはいいって感じではないんだけど、まあとりあえずうごくレベルのは転がってたから、無いよりはきっとましなので一応紹介。

http://www.minecraftforum.net/topic/852452-minecraft-rcon-tool-by-r3b0rn/

http://www.minecraftforum.net/topic/842376-minecraft-server-rconquery-utility/

これいいよ!っていうrconツールあったら教えてほしいです。

あとは各種ポート解放(通常ゲームポート 25565, rconポート 25575)をFirewallおよびルータで実行。

たぶんこんな感じでおっけーなはず。

おつかれさまでございます。

nVidiaのスケーリング問題が解消されていた

以前というかもう2年も前になるんだけども、nVidiaのドライバはHDMI接続の場合、スケーリングをドライバ側で行うことが出来ないと言ったんだけど、なんかつい最近確認してみたらできるようになってた。
nVidiaコントロールパネルを開いて、ディスプレイ>デスクトップのサイズと位置の調整>スケーリングでGPUが選べる。

WS000153

。。。えーと、ただそれだけです。

nVidiaコントロールパネルの設定をいじってゲームを快適にしてみるテスト

最近WizardryOnlineってなゲームやってるんですけど、なんか重いんですよね。
いや、別に重いっていってもフレームレートが10とかになっちゃうってわけじゃなくて、こう、ヌルサクじゃない感じ。

うちのCPUとグラボは結局色々あったものの2600KとGTX295に帰ってきてて、でまあWizってべつにちょー重い感じのゲームじゃないんですよね、やってる感じ。
だから設定次第じゃ普通に60FPSでてもおかしくないと思うんだけど、なんかそういう感じがしない。
戦闘中でエフェクトが重いとかっていう時じゃなくて、街中で誰もいないような場所にいてもそんなにFPSが出てる感じがしない。

ということで設定を色々いじって、FPSをとにかくはじき出して、そっから画質も調整という流れにしてみようかと。

まずはなんも設定していない状態で1chの露店街のど真ん中でFPS計測。
おそらくこのゲームで一番重い場所はココだ。

でまあFPSは15-25FPS。
SSモードにして25くらいか。

次に、nVidiaのコントロールパネルで、

3D設定>3D設定の管理>プログラム設定>1.カスタマイズするプログラムを選択する>追加

ということでWizardryOnline.exeを追加。

さて、とりあえず画質は犠牲にしてひたすら軽くしていくか。

  • CUDA – すべて
  • AA トランスペアレンシー – オフ
  • スレッドした最適化 – オン
  • TF クオリティ – ハイパフォーマンス
  • TF トリリニア最適化 – オン
  • TF ネガティブLODバイアス – 許可
  • TF 異方性サンプル最適化 – オン
  • トリプルバッファリング – オン

25-30くらいまで向上。
SSモードで35-40くらい。

で、うちのカードはGTX295なんで内部的にSLIなんで、その辺もいじってみる。
ついでにディスプレイもデュアルディスプレイで運用していて、場合によってはSLI構成を解除して一時的にトリプルディスプレイにしたりもする感じなんで、マルチディスプレイ/ミックス GPU アクセラレーションあたりもいじってみる。

まずマルチGPUレンダリングモードから攻める。

とりあえず現在がNVIDIA推奨設定。
シングルGPUはさすがにないのでとばす。
フレームのレンダリングを強制的に交互にする1 – 25-30FPS
フレームのレンダリングを強制的に交互にする2 – 27-32FPS

GPUの負荷具合みていると、推奨設定およびAFR1ではGPU Bしかほとんど負荷がかかっておらず、AFR2だと双方のGPUに負荷がかかっていることと、微妙にFPSがあがっていることから、今回のケースではAFR2が良さそう。

次にマルチディスプレイ/ミックス GPU アクセラレーション。
マルチ ディスプレイ パフォーマンス モードがデフォルトで設定されているんだけども、その他いくつかあるけど、まあ結論から言うとどれもあんまり変わらなかった。
ので、推奨とされているデフォルトのまんまにしておくことに。

とまあなんかいろいろやってたら、まあ人が多いところ以外はわりと60FPS出る感じになったみたい。
画質も別に気にならないしこんな感じでしばらくやってみよう。

Just another WordPress site