C4 LAN 2023 SPRING 参加記録
C4 LAN 2023 SPRINGにBYOC参加しました。
BYOC席の詳細は、他の人のブログでも見てください。
毎度のことですが忙しすぎてろくにゲームする暇がないです!でも最高に楽しいのはいつものこと。
いつも会場についてから作る宣伝です。過去最高傑作です。
Slay the Spireのカード画像の変更
カード画像の変更
Slay the Spireのカード画像は簡単に変更できることが分かったので、メモを残しておきます。
上の画像では、いらすとやの画像を借りて、ストライクと防御のカード画像を変えてみました。一気に気の抜ける感じにまりました。
変更の手順は下記の通りです。
オリジナルのカード画像を手に入れる。
オリジナルのカード画像は下記の
desktop-1.0.jar
ファイル内にあります。[Steam installed directory]\steamapps\common\SlayTheSpire\desktop-1.0.jar
jarファイルの実体はzipファイルなので、zipファイルを展開するのと同様に展開してください。その中に
cards
ディレクトリがあるので、cards
ディレクトリごとコピーしてください。カード画像を指定の場所に保存する
前の手順でコピーした
cards
ディレクトリを下記のディレクトリに保存してください。[Steam installed directory]\steamapps\common\SlayTheSpire
ここに保存したカード画像が読み込まれて、ゲームに反映されるようになります。
画像を加工する。
cards
ディレクトリ内にはcards.atlas
、cards.png
、cards2.png
、cards3.png
、cards4.png
があります。その中で編集するのは4つのpng画像だけです。(cards.atlas
はカード画像の位置を保存したテキストファイルなので編集の必要がないです。)それぞれのpng画像を見てもらうと分かりますが、多くのカード画像が1つのファイルにまとまっているので、必要なカード画像の部分だけを変更してください。
なお、cards
ディレクトリ内の画像を変更しても、カードコレクションの画像は変更されません。カードコレクションの画像も変更したければ、images\1024Portraits
内の画像も編集が必要かもしれません(未確認)。
さらにcardui
内の画像も同様の方法で変更できると面白いかもしれません(未確認)。
Slay the Spire MODの作り方(メモ)
はじめに
Default Mod BaseのWikiを足掛かりに、すべてを読めばSlay the SpireのMODは作れるようになるはずです。
すべてを説明するのは大変なので、私が悩んだ部分のみを書いておきます。
開発環境構築
Default Mod Baseの使用
Default Mod Baseを使用します。使用しなくても頑張ればMODは作れるでしょうが、すべて一からを用意するのは大変なので使わせてもらいます。
Default Mod Base Wikiの指示通り、Default Mod BaseのGitリポジトリをzip形式でダウンロードし、自分で用意した任意のディレクトリに展開しておきます。
3つのMODの導入
下記3つのMODをSteam Workshopからインストールしてください。Steamクライアント上でサブスクライブボタンをクリックするだけです。
各MODのGithubのReleaseページからインストールしないでください。
IntelliJでの既存プロジェクトのインポート
Maven開発環境上でMODのためのコードを編集するので、IntelliJを使用します。
Default Mod BaseのWikiでは、ダウンロードしたDefault Mod Baseのプロジェクトをインポートする際に、画面上のインポートボタンから進めています。しかし、IntelliJ IDEA 2022.2.3 (Community Edition)ではそのインポートボタンがありません。下記の通りインポートします。
ウェルカム画面が開いたら、Ctrl+Shift+A を押し、project from existing sources と入力して、ポップアップで既存ソースのプロジェクトをインポートアクションをクリックします。
JDK
最新のJDKではMODのビルドに失敗しました。JDK 8が必要です。下記からOpen JDK 8をダウンロードしてインストールします。
File -> Project Structure -> Project Settings -> Project
とたどり、SDKの設定をします。
Mavenプロジェクトとして認識させる
プロジェクトをインポートした後は、IntelliJにMavenプロジェクトとして認識させて作業をする必要があります。
If you do not have a Maven tab, double-tap Shift to open the intelliJ search (your best friend!) and type "Maven" - you'll find it there.
Default Mod Base Wikiには上記のようにありますが、簡単に見つけられません。下記の手順でIntelliJにMavenプロジェクトとして認識させます。
pom.xml
を選択する。- Shiftキーを2回連続で押して、IntelliJ検索画面を出す。
- その選択画面で
Add as Maven Project
を検索して選択する。
DefaultMod.javaの編集
DefaultMod.java内のTODO:
から始まるコメント行の内容にしたがって編集します。
パッケージ名の設定
//TODO: FIRST THINGS FIRST: RENAME YOUR PACKAGE AND ID NAMES FIRST-THING!!!
左ペインの黒ドットがついたthe Default
を自分のMOD名に変更します。
4か所の変更
DefaultMod()メソッド内に4か所を変更する指示があります。その通りに変更すればOKです。
パッケージ化
Mavenプロジェクト内のpackage
をダブルクリックすれば、[yourmodname].jar
が生成されてMODは完成です。clean
でそのパッケージを削除できます。
SpirePatchの使い方(一部)
Insertの使用
Insertメソッドを使用して、オリジナルのSlay the Spireのメソッドのコードの間に、自分のコードを挿入できます。
挿入箇所の指定の仕方は、loc
、rloc
、locs
、rlocs
をそれぞれ使用する方法もありますが、Matcherを使用した方法もあります。Matcherを使用した方法では、自分のコードを、任意のメソッドの実行の直前などで実行できます。
@SpirePatch( clz = ShopScreen.class, //コードを挿入したいメソッドが含まれるクラスを指定 method = "purchaseCard" //コードを挿入したいメソッド名 ) public class ClickBuyCard { @SpireInsertPatch( locator= ClickBuyMod.ClickBuyCard.Locator.class //[packagename].[thisclassname].Locator.class ) public static void Insert(ShopScreen __instance) { AbstractDungeon.player.gold += 1; //ここに挿入したい自分のコードを書く } private static class Locator extends SpireInsertLocator { public int[] Locate(CtBehavior ctMethodToPatch) throws CannotCompileException, PatchingException { //MethodCallMatcher()の1つ目に対象のメソッドが含まれるクラスを指定する。 //MethodCallMatcher()の2つ目の引数に対象のメソッド名を渡す。 //その関数の直前にInsert()で指定した自分のコードが実行される。 Matcher finalMatcher = new Matcher.MethodCallMatcher(ShopScreen.class, "playCantBuySfx"); return LineFinder.findInOrder(ctMethodToPatch, new ArrayList<Matcher>(), finalMatcher); } }
フィールドにアクセスがあったときに自分のコードが実行されるようにするには、FieldAccessMatcher()
を使用します。
また、オリジナルのコードの中で元のクラスのフィールドにアクセスしたいときは、localvars
にそのフィールドの名前を指定したうえで、Insertメソッドの引数にその引数を指定します。下記の例ではフィールドcardAtlas
を読み書き可能です。
@SpirePatch2 (clz = AbstractCard.class, method ="initialize") public class CardImgMod { @SpireInsertPatch ( locator = Locator.class, localvars = {"cardAtlas"} ) public static void Insert(TextureAtlas cardAtlas) { //ここに挿入したい自分のコードを書く。ここではフィールドcardAtlasにアクセス可能。 } public static class Locator extends SpireInsertLocator { public int[] Locate(CtBehavior ctMethodToPatch) throws CannotCompileException, PatchingException { Matcher.FieldAccessMatcher fieldAccessMatcher = new Matcher.FieldAccessMatcher(AbstractCard.class, "cardAtlas"); return LineFinder.findInOrder(ctMethodToPatch, new ArrayList<Matcher>(), fieldAccessMatcher); } } }
質問は@hotpot774までお願いします。
Slay the SpireのMODを作りました
ショップで買えないアイテムをクリックすると、1ゴールドもらえるMODです。つまり、買えないアイテムをクリック連打で買えるようになります。
MOD作成の練習として作成しました。チートMODです。
C4 LAN 2022 SUMMER参加しました
C4 LAN 2022 SUMMER in ツインメッセ静岡 参加しました!!!
静岡では初めてのC4LAN開催でした。
初日は豪雨の中、なんとかバスで会場に到着。
開場入口にはいつもの立て札。これがあるとC4LANへ来た実感がわく。うれしいね。
コロナ対策で1人当たりのスペースが広くなってて、余裕の設営。
対戦よろしくお願いします #C4LAN pic.twitter.com/mVaxRFu9L9
— ぽっと (@hotpot774) 2022年8月12日
開場の雰囲気が懐かしくて涙でた。
レッドブルが来てくれて、参加者にレッドブル缶を配ってくれてた!でも来た時間がかなり遅くて、参加者が少ない時間帯なのはどうして…
レッドブルの車が来てた。ナンバーがツバサ。 #C4LAN pic.twitter.com/cHdd92Tvib
— ぽっと (@hotpot774) 2022年8月12日
レッドブルのイケメンが冷えたレッドブル缶を配りにきた。ありがたくいただきます! #C4LAN #レッドブル pic.twitter.com/FoewcsIbe8
— ぽっと (@hotpot774) 2022年8月12日
BYOCチケットの売れ残りがあって、空席がそこそこ目立ったのが残念だった。コミケと被ったのは痛い。コロナもあるし。
ちょっと席が空いてて寂しいぞ #C4LAN pic.twitter.com/JwOlpqG5Qq
— ぽっと (@hotpot774) 2022年8月12日
開場の壁側から全体を見渡すように動画をとってみた。広くて余裕のある席配置でした。増席いけますよこれは。
21:30頃の会場の様子です。手ブレひどくてごめんね #C4LAN pic.twitter.com/B0sdT1rXP9
— ぽっと (@hotpot774) 2022年8月13日
お腹が減ってて、丼自体の写真を撮り忘れるミス。値段に対しては百点満点のおいしい丼ぶりでした。
2日目にはちょうど台風が来て、河川に近い地域に避難指示が出て少し焦った。会場はその河川に近い地域ではなく、台風はあっという間に去ったから問題にはならなかったが。
夜は風雨がやんだ隙をついて、レンタサイクルで会場からホテルに戻った。 C4LANのためだけに、会場に臨時レンタサイクルステーションが作られていたのは驚いた。ありがたい。
3日目にはまぐカツ丼もいただきました。
スポンサーブースで販売されていた、しぞーかおでんも食べたけど写真なし。おいしかった!
ステージイベントとスポンサーブースで遊んでいると自席でゆっくりしている時間はないのが悔しい。あっという間に時間が過ぎてしまった。正直、楽しすぎて詳しいことは覚えていない。結局、まともに写真を撮っていないので、公式の写真集を見て思い出すのが最強だと思う。
ほとんどのホテルが静岡駅前にしかなく、会場であるツインメッセ静岡から遠いのは欠点。会場から静岡駅前まで徒歩30分またはバス10分。初日と2日目は、夜にどのタイミングでホテルに戻るか悩んだ。
結局、色々と思うところはあったけど、でっていうの聖衣を確認できたのでヨシ!
#C4LAN pic.twitter.com/2QrlBb5Ktz
— detteiu (@detteiuwwwwww) 2022年8月14日
次回も絶対に行くぞ。そのときは仕込みをしていきたい。
C4 LAN GARAGE #1 感想
2022/4/29から2022/5/1でC4 LAN GARAGE #1にBYOC参加したので、感想を書きます。
初日
会場は日本カレット株式会社の千葉倉庫。京葉工業地域の工場が多く立ち並ぶエリアでした。
海浜幕張より先へ行ったことなし
— ぽっと (@hotpot774) 2022年4月29日
幕張メッセには何度も行ったことがあるのですが、その先は初めてで心臓が飛び出しそうなくらい緊張しました。 雨が降っていたので、最寄り駅の稲毛海岸駅からはタクシーを使い会場近くまで移動しました。
C4LAN会場はこんな感じ。楽しんでます #C4LAN pic.twitter.com/nXm3UwKpHn
— ぽっと (@hotpot774) 2022年4月30日
開場が14:00で14:15前後に会場に到着しました。会場内はまさに倉庫でしたが、パーティー用に改装されていて雰囲気がありました。初日は雨が降るくらいの気候で寒かったので、暖房を効かせてくれていて助かりました。席の幅は今までのC4LANの倍くらいあり、さらにゲーミングチェア付きで個人の環境としては申し分なかったです。
C4LAN設営完了。ゲームします。#C4LAN pic.twitter.com/xL3dth6U20
— ぽっと (@hotpot774) 2022年4月29日
自席のセッティングをして、Apex Legendsをしたり、ご飯を食べたりしていたら、あっという間に24時近くになったので、徒歩5分の東横INNに撤収しました。初日は、はしゃぎすぎないようにするのが大事。
2日目
朝は9:30くらいに会場に戻ってきた記憶があります。午前中は一体何をしていたのか、よく覚えていませんがあっという間に時間が過ぎました。Inscryptionのクリア状況が中途半端だったので、とりあえずクリアしてしまおうとしていたような気がします。結局、最後までInscryptionはクリアできませんでしたが。
薄暗い会場に差し込む入口からの光があまりにもまぶしくて、体に悪いことを続けている感覚があったので、お昼ご飯も兼ねて散歩に出ることにしました。
ずっと椅子に座ってゲームをしてると体に悪いので、散歩に出ました。良い海岸で気持ちよかったです。片道40分もかかったけど #C4LAN pic.twitter.com/mUsS500hJa
— ぽっと (@hotpot774) 2022年4月30日
結局、片道40分以上かけて海岸まで歩きました。海岸の風は気持ちよくて気分は最高でしたが、普段あまり歩いていなかったので脚がぱんぱんになりました。
あとは15:00からのSurvival Quiz CITYマッチに参加して、ゲラゲラ笑っていました。
Survival Quiz CITYのC4LAN大会、最終問題が例の治安の悪いクイズになって最高に笑った
— ぽっと (@hotpot774) 2022年4月30日
そのあと、近所の業務スーパーに行ってお菓子とお茶を買ってきたので、この日はだらだらゲームをプレイしていました。今回のC4LANはステージがないので、ゲームに集中できました。ピザの配給もありました。運営には感謝します。
C4LAN名物ゲーミングピザをいただきました!ありがとうございます!!やったぜ #C4LAN pic.twitter.com/dveSI3VIQZ
— ぽっと (@hotpot774) 2022年4月30日
なお、私がC4LANに参加する目的の50%はでっていうの聖衣を見るためです。
#C4LAN pic.twitter.com/TenzLIhmWy
— detteiu (@detteiuwwwwww) 2022年4月30日
この日は結局、24時近くにホテルに帰った気がします。そこそこ歩いて疲れていました。
3日目
最終日です。この日は10:00から恒例のGolf With Your Friends大会があるので、それに間に合うように会場へ戻りました。大会の結果はぼちぼちでした。
そのあと、急遽13:00から田原さんがCrab Gameのマッチをホストをしてくれたので、それに参加しました。優勝はできませんでしたが、このゲームも毎回やっていきたいと思うくらいには面白かったです。
C4 LANのCrab Gameプレイで、身を隠してやり過ごそうとするdetteiuの様子 pic.twitter.com/hSf1KUj5Qa
— ぽっと (@hotpot774) 2022年5月3日
あっという間に14:00を過ぎ、周りが撤収の準備を始めたので私も撤収作業をしました。とはいえ15:45が閉会の儀だったので、1時間以上することもなくぼーっとしていました。
最後の恒例のじゃんけん大会では、ゲーミングたわしを含めて何も勝ち取ることができませんでした。くやしい。
C4 LAN 2022 SUMMER
— C4 LAN (@c4lanjp) 2022年5月1日
2022.08.12 - 2022.08.14
twinmesse SHIZUOKA#C4LAN pic.twitter.com/zKuBZLWLO6
帰りはタクシーを使わずに歩いて稲毛海岸駅まで行きました。途中から雨が降ってきたうえに、キャリーバッグのキャスターが壊れてしまい、非常に残念な感じになりました。
ですます調で文章にするとあっさりしてますが、今回もとても楽しませてもらいました。次回のC4LANも、人生に問題がなければ参加します。とりあえず会場近くのホテルの検索から始めます。