Minecraft 1.8のmodding環境を作ってみた

久しぶりに自分のブログを見てみると、httpsでアクセスしても「httpへ通信が飛んでる!」と警告が出ていました。
なんじゃらほいと言うことで自分のプラグインを洗い直してると、仮想テスト環境用のモードになっていました。 )゚0゚(
フラグを1つ変更するだけの簡単な変更・・・なんか不完全燃焼。

もの凄くコードを弄りたくなったので、久々にMinecraftのMODを作ってみることにします。
IDE環境推奨って事だけど、やっぱり普通のエディタが良いのでIDE環境用の設定は使用しません。

海外フォーラムを見ていると、IDE環境使わない人は結構MOD作成止めているみたいなんですよねー
私もそうですがw

ともあれドキュメント読んだりしてコマンドラインからコンパイル、クライアント起動、配布パッケージ作成が出来るようになりました。
Minecraft 1.8 forge modding
マルチプロジェクトにも対応しているので、独自の前提MODとかを指定しておけば自動でコンパイルしてくれるのは楽でいいかも。

やっぱりMinecraft自体の仕様はもちろん、メソッド。変数。forgeの使用方法などが変わりまくってるので1.6.4のコードはそのまま使えないw
この仕様変更に追い回されるのがメンドウで嫌なんですよ・・鬱だ。

私が作った商用のコードとかはできるだけ下位互換にして、それでも無理なら一枚ラッパーを作っておいたりします。
今回のMinecaftの場合はそもそもの仕様が変わってしまってるので仕方ないですけどw

と言うことで、v1.6.4自体のコード引き継ぎは無くして新規で作っていきます。
仕事じゃないし納期もないので、その方がモチベーション上がるんですよーw

かなりスローリーでやっていくので開発を再開した・・と言っても今まで見たいに即日対応ってのは無理ですw
最近、不定期でツイッターを初めて見たので小さな更新状況はツイッター側で。

SKSE 1.7.2のPapyrusスクリプト配列拡張を使う

従来のPapyrusスクリプトの配列の上限は128でした。
この128制限のお陰で配列を複数作って自前APIで配列を管理していましたが、SEKE 1.7.2で配列を拡張することが出来るようになったようです。

早速SKSEのコードを確認してみると、Utility.pscの69~76行目に以下のコードがありました。

; Size is treated as unsigned, negative numbers will result 
; extremely large positive numbers, USE WITH CARE
float[] Function CreateFloatArray(int size, float fill = 0.0) global native
int[] Function CreateIntArray(int size, int fill = 0) global native
bool[] Function CreateBoolArray(int size, bool fill = false) global native
string[] Function CreateStringArray(int size, string fill = "") global native
Form[] Function CreateFormArray(int size, Form fill = None) global native
Alias[] Function CreateAliasArray(int size, Alias fill = None) global native

おおお?返ってくる値はちゃんと配列だから、他のスクリプトでも楽に移行できそう。

と言うことで、RaceMenuのオーバーレイ機能を拡張してみます。
編集するのはRaceMenuのAPI「RaceMenuBase.psc」。

Event OnInitialized()
    _textures = new string[128]
    _textureBuffer = 0
 
    _sliders = new string[128]
    _sliderBuffer = 0
 
    _categories = new string[128]
    _categoryBuffer = 0
 
    ; Body Paint
    _textures_body = Utility.CreateStringArray(256, "")
    _textureBuffer_body = 0
 
    ; Hand Paint
    _textures_hand = new string[128]
    _textureBuffer_hand = 0
 
    ; Feet Paint
    _textures_feet = new string[128]
    _textureBuffer_feet = 0
 
    ; Face Paint
    _textures_face = new string[128]
    _textureBuffer_face = 0
EndEvent

変更は超簡単で、78行目の
_textures_body = new string[128]

_textures_body = Utility.CreateStringArray(256, "")
へ変更してコンパイルするだけ。

あとは今まで使いたくても使えなかったオーバーレイMODを有効にしてゲームを起動する。
CTDせず起動できたら、showracemenuコマンドでRaceMenuのオーバーレイを確認してみる。
Skyrim - PapyrusScript 配列拡張
・‥…━(゚∀゚)━━━☆
やった!登録テクスチャ数が128超えてるよ!

と言うことで、オーバーレイを拡張することができました。
オーバーレイ選び放題だ-!ヽ(゚∀゚)ノ

 
要望があったのでコンパイルしたバイナリを置いておきます
Racemenu: オーバーレイ登録上限拡張

オオカミなフォロワーを作ってみた

オオカミっぽい種族を追加するMOD「Lykaios - Playable Wolf Race」を2/19に導入し遊んでいました。
Skyrim - Lykaios
遊んでいるうちにフェネックの時のように同じ種族のフォロワーが欲しくなったので、Lykaiosのフォロワーを作ることに。

今フェネックフォロワーMODを見直してみると、当初は手探り状態だったせいかespにゴミが沢山ありましたw
なので、フェネックのNPC設定データだけエクスポートして新規espで作成開始!
Skyrim - Lykaios フォロワー作成 - CreationKit
フェネックの時に悩んでた甲斐があって、今回のリメイクはCTD等のバグを出さずにサクっと作成できました。

CreationKitでの作業が終わったら、Wrye BashでMODのマスター設定をしてTES5Editでゴミ探し。
Skyrim - Lykaios フォロワー作成 - MOD Manager Skyrim - Lykaios フォロワー作成 - TES5Edit
ゴミ探しは別にやらなくても良いけど、NPCの配置などでカメラ操作をミスったり、他のオブジェクトを起点にしたときに余計な変更ができてしまう場合があるから。
オブジェクトの動作に問題がなくてもMODを適用するときに差分は少ない方が良いしねー

次はSkyrim String LocalizerでMODの翻訳データを作成。
Skyrim - Lykaios フォロワー作成 - ローカライズ
テキストデータを外部Stringにする事で英語と日本語をゲーム内の設定だけで変更ができる(`・ω・)b
これも本当は要らないんだけど、公式の翻訳がおかしいときは英語にしたりしているので・・・

あとはゲームを起動して・・・テスト!
Skyrim - Lykaios フォロワー1 Skyrim - Lykaios フォロワー2
今回追加したのは、かなり赤いオオカミさんとちょっと青くてショタなオオカミくん。

Skyrim - オオカミとフェネックのフォロワー
赤い方はドレモラを意識した感じで、グレートソード等の両手持ち武器を使う近接タイプ。
青い方はショタ・・というよりは青年っぽい感じの破壊魔法タイプ。
ちなみにショタっ子のMPは初期値から+1000に設定したのでレベル毎のMPボーナスを含めると達人レベルの魔法もガンガンぶっぱなせる鬼畜仕様にww

これでケモノなパーティが完成。
最高難易度であるレジェンドにしても楽に遊べそうw
(*´p`)

Skyrim MOD: フェネックフォロワーMOD

«The Elder Scrolls V: SKYRIM - MOD配布ページへ
SkyrimMOD: フェネック高解像度テクスチャ

更新日 2014/03/26 17:49:20
バージョン v0.85
MODタイプ フォロワー
前提MOD Playable Fox Race - Fennec
簡単な説明 Playable Fox Race - Fennecで追加されるFennec種族のフォロワーを追加します。
追加されるフォロワー
・Lambert
 不死、プレイヤーレベル同調、吟遊詩人(フォロワー化していない時のみ)

・Chilaili (不具合があるのでデータのみ)
 不死、プレイヤーレベル同調

ダウンロード Download, 365Kb

利用方法

MODを導入後、ホワイトランにあるバーナードメア 2Fで出会うことができます。
(プレイヤーが借りることができるベッドの裏)
 

ギャラリー

Skyrim MOD: フェネック高解像度テクスチャ

«The Elder Scrolls V: SKYRIM - MOD配布ページへ
SkyrimMOD: フェネック高解像度テクスチャ

MODタイプ テクスチャ、モデル、男性専用
前提MOD [Steam] Playable Fox Race - Fennec (2015.02.18 v1)
[Nexus] Playable Fox Race - Fennec (2015.02.18 v1)
Better males (Nudes - FavoredSoulMeshes - ErectVersion)
簡単な説明 Playable Fox Race - Fennec用の4K 高解像度テクスチャです。
標準で付属しているテクスチャのズレ等も修正してありますので違和感がなくなると思います。
 
このMODはKhajiitas氏の「Muscular Khajiit Textures and Skeleton」をベースにしています。
素晴らしいテクスチャを作成されたKhajiitas氏とShinglesCat氏に感謝します!

足のモデルはGrimoa氏の「Grimoas Plantigrade Feet For Beast Races」を使用しています。

このMODはKhajiitas氏、ShinglesCat氏から配布許可を得て配布していますので無断再配布は行わないで下さい。
This MOD is distribute with permission of Khajiitas and ShinglesCat.
Forbid redistributing it without getting permission.

ダウンロード
テクスチャのみ v1.0.0 (2014/08/24 17:57) 27Mb
テクスチャ&モデル修正版 [Steam版] v1.1.1 (2015/03/06 22:04) 88Mb
テクスチャ&モデル修正版 [Nexus版] v1.1.1 (2015/03/06 22:04) 88Mb
下着&性器 非表示モデルデータ v1.0.0 (2014/03/30 16:51) 175Kb

お知らせ

一部のユーザーさんから「手の部分のテクスチャが正常に表示されない」と連絡が来ます。
MODのバグの可能性があるため検証を行いましたが症状を確認できませんでした。
私が普段プレイしている環境ではMODを約150個導入していますが正常に動作しています。

従って他のMODが悪さをしていると判断しました。
正常に表示されない方は導入しているMODを確認してみてください。

検証動画はこちら (服を脱いでいるためR18指定です):
https://youtu.be/otmj9tr0Zpc

English
Some users will be informed that "hands texture is not displayed".
I confirmed that this MOD works properly in the minimum environment.
The environment I normally play is introducing 150 MODs, but I can not confirm the anomaly.

It may not be displayed due to your environment or MOD.
Backup the current environment,settings and please check whether it works in the new environment.

MOD validation video:
https://youtu.be/otmj9tr0Zpc
 

特徴

Khajiitas氏、ShinglesCat氏が作成されたカジートの高解像度テクスチャをベースに、フェネック用に毛並み・毛色などを変更したテクスチャです。
標準のテクスチャにあった毛並みの切れ目を可能な限り目立たなくし、ふわふわ感が出るようにしました。
(ENB環境では効果大)
 
「テクスチャ&モデル修正版」では下記項目が追加で変更されます。
 ・テクスチャの命名方式を統一
 ・手足のテクスチャがカジートの物になる問題の修正
 ・足のモデルを変更
 ・フェネックのナイトビジョンの時間を60秒から120秒へ延長
 
テクスチャの切れ目の変更点の比較画像
腰:
Skyrim - フェネック テクスチャミス: 腰 デフォルト Skyrim - フェネック テクスチャミス: 腰 修正版

脇腹:
Skyrim - フェネック テクスチャミス: 脇腹 デフォルト Skyrim - フェネック テクスチャミス: 脇腹 修正版

おしり:
Skyrim - フェネック テクスチャミス: おしり デフォルト Skyrim - フェネック テクスチャミス: おしり 修正版
 

ギャラリー

Skyrim - フェネック: 高解像度テクスチャ ポーズをとってみる4 Skyrim - ENBメモリ拡張 1 Skyrim - フェネック: 高解像度テクスチャ 全体 Skyrim - フェネック: 高解像度テクスチャ 頭・胸 Skyrim - フェネック: 高解像度テクスチャ 胴体 Skyrim - フェネック: 高解像度テクスチャ 尻尾・おしり
Skyrim - フェネック: 高解像度テクスチャ プリセットでテスト1 Skyrim - フェネック: 高解像度テクスチャ プリセットでテスト2 Skyrim - フェネック: 高解像度テクスチャ プリセットでテスト3

 

更新履歴

2015/03/06
 [モデル版][v1.1.1 Steam&Nexus]
  足が正常に表示されない問題を修正

2015/02/18
 [モデル版][v1.1.0 Steam&Nexus]
  espのクリーンアップを行い、Steam版とNexus版の両方に対応

2014/11/13
 [モデル版][v1.0.7]
  テクスチャ&モデル修正版を公開開始

2014/08/24
 [テクスチャ版][v1.0.0]
  テクスチャのみ公開開始