【C96】サークル「albatrus」にお越しいただきありがとうございました!

本日、東京ビックサイトで行われたコミックマーケット96・南-43a「albatrus」にお越しいただきありがとうございました。 今回のコミケでは今までよりと思うところが多かったので反省も含めてブログにまとめていきたいと思います。

コミックマーケット96 サークル参加感想

今回で6回連続でUnityに関する本を配布させていただくことができました。 過去最大数の86ページで「2DAnimation」「UIElements」「ML-Agents」の3つの機能について書きました。

NewImage

その中c96ではいくつか新しいチャレンジを行いました。

チャレンジ1 - アクリルキーホルダーを作った

今回2DAnimationのサンプル用に作成をした画像データの出来が良かったので100個アクリルキーホルダー作成しました。 データの入稿が少し手間でしたが結構良いものを作っていただきました。 完全に個人的な衝動で作ったものだったので喜んでいただいたかどうかは不安ですが、私自身とても満足しています。 今後も良い画像データがあれば、何かしら別のグッズを作成したいです。

チャレンジ2 - 値段

今回同人誌の値段を1,000円にしました。 1,000円にした理由は次の2点です。

原価

今回の同人誌が「P86かつ150部作成した」 + 「アクリルキーホルダ-」を作ったことで、この値段でないと収支が赤字になるからです。

お釣り

これまで中途半端な値段で細かいお釣りが出てしまうことが多かったので切の良い値段にしました。 個人的に500円か1,000円単位が買いやすい値段と思っているので原価を考えると必然的に1,000円になりました。

結果

今回前回と同じ150部用意しましたが、結果115部配布することができました。 ですので、手元に35部残っています。 既刊として次のコミケに受かったときに持っていこうか、また良い機会なのでBoothで販売をしてみようか迷っています。 Boothで販売をする際にはブログ等で連絡をします。

感想

今回は初めて終了時間までサークルスペースにいました。 これまでは遅くても15:00までには完売をしていたので終了まで立ち会えなかったのですが良い経験ができました。 わかったことは終了1〜2時間前はあまりお客さんが来ないということです。特に1時間前になると人もかなり少なくなりました。 ですので、もし完売を目指すのであれば10:00 ~ 14:30くらいまでに90%ぐらい売り切っていないと厳しいということです。

サンプルアプリ

以前にも一度試してみたいのですが、今回「2DAnimation」と「ML-Agents」のサンプルアプリを作成しました。 サークルスペースで常時表示をしていたのですが、結構良い反応をいただける、また足を止めてくれる人が多かった気がしましたので良い施策だったと思いました。

記載漏れ

印刷所で原稿を投げた気づいたのですが、2DAnimationを説明の中で記載漏れがありました。 ネットで調べればわかることではあるのですが、年のため訂正箇所を印刷し1冊1冊本に挟む対応を行いました。 これが結構大変でした。

次回 C97

次のコミケ97のサークル申込書を買いました。 いつも冬はエフェクトに関する本を出していたので、現時点ではUnityの「ParticleSystem」や「Shader」について書きたいなと思っています。 もしくはSpineにも興味があるのでAnimation関係になるかも。

Unity ゲームエフェクト マスターガイド
秋山 高廣
技術評論社
売り上げランキング: 4,495

コミックマーケット96に「Unityお仕事本」を配布します

Twitterでは告知をさせていただいていたのですが、8/12の「コミックマーケット96」にサークル参加を予定しています。 今年の夏は4日間開催となりその最終日です。 台風が近づいて来ているので、天候が心配ですが興味をいただければぜひサークルスペースへお越しください。

Unityお仕事本

今回で6回連続コミックマーケットに参加になります。

内容

  • 2DAnimation
  • UIElements
  • ML-Agents

私は、Unityの「2DAnimation」「UIElements」について書きました。 2D Animation パッケージスターティングガイド – Unity Blog Unity 2019.1 の UIElements の新機能 – Unity Blog

どちらもまだ正式な機能ではないんですが、ゲームの見た目を作る上で今後必要になっていきそうです。 どちらも入門編として何ができるかを紹介しています。

お品書き

お品書きです。

お品書きc96

表紙

表紙はこのような感じです。

Unity book c96

アクリルキー

今回は実験的にアクリルキーホルダーを作ってみました。 こちらは数量が限られているので先着順に同人誌をお買いいただいた方に付けようと思っています。

月曜日(8/12) 南リ-43a

こちらの同人誌は、コミックマーケット96月曜日の8/12 南ホールの「リ43a」のサークルスペースで配布を予定しています。

C96 tizu

最後に

ここ一週間暑い日が続いていますので、体調管理に気をつけて、サークルスペースでお待ちしています。

コミケplus Vol.12 (メディアパルムック)

メディア・パル (2019-07-13)
売り上げランキング: 21,099

5月に読んだ本 - まとめ

経済系

GWで時間もあるということで、結構むずかしめの本を読みました。

国家はなぜ衰退するのか(上・下)

文庫本ですが、かなりの量がある本で読むのに時間がかかりました。 現在の中国の発展がどのようにこの本で書かれているか興味がありました。

国家はなぜ衰退するのか(上):権力・繁栄・貧困の起源 (ハヤカワ・ノンフィクション文庫)
ダロン アセモグル ジェイムズ A ロビンソン
早川書房
売り上げランキング: 68,030
国家はなぜ衰退するのか(下):権力・繁栄・貧困の起源 (ハヤカワ・ノンフィクション文庫)
ダロン アセモグル ジェイムズ A ロビンソン
早川書房
売り上げランキング: 59,032

父が娘に語る 美しく、深く、壮大で、とんでもなくわかりやすい経済の話。

貧乏人の経済学

貧乏人の経済学――もういちど貧困問題を根っこから考える
アビジット・V・バナジー エステル・デュフロ
みすず書房
売り上げランキング: 41,818

技術

今の仕事に役に立ちそうな系の本。

エンジニアの知的生産術

>桜井政博のゲームについて思うこと

桜井政博のゲームについて思うこと 2015-2019
桜井 政博
KADOKAWA (2019-04-25)
売り上げランキング: 1,166

>実力養成C#ワークブック

実力養成C#ワークブック
Vaskaran Sarcar
翔泳社
売り上げランキング: 92,184

最後に

どれも読んで一ヶ月近く時間が過ぎているので、内容ほとんど覚えていない気がするのは気にしないです。

「荒野のコトブキ飛行隊」 最終話先行上映会に行ってきました

昨日、お台場で行われた「荒野のコトブキ飛行隊」 最終話先行上映会に行ってきました。 こういった系のイベントには初めて参加することもあり、少しドキドキしながら行きましたが、「TVの11話 + 最終話」上映、声優さん中心としたトークショー共にとても楽しく時間を過ごすことができました。 簡単ですが、ブログにどういった感じだったかをまとめていきたいと思います。

NewImage

「荒野のコトブキ飛行隊」 最終話先行上映会

実はこういった系(舞台挨拶や先行上映系)のイベントには何回か申し込みをしていたのですが、今回始めて「厳正な抽選の結果......」をくぐり抜けることができました。 「荒野のコトブキ飛行隊」 最終話先行上映会|ローチケ[ローソンチケット] 映画チケット情報・販売・予約

場所はお台場アクアシティのユナイデットシネマです(スクリーン3) 東京ビックサイトにはコミケとかで結構行く機会多かったのですが、お台場自体に行くのは久しぶり(Unite2016とか)でした。 近くでユニコーンガンダムが展示されているのを知っていたので、これを機会に寄ってみたりしてみました。

私の一番好きなダンダムである「V2アサルトバスター」のプラモ

2019-3-31-003

ユニコーンガンダム(デストロイモード)

2019-3-31-003

荒野のコトブキ飛行隊とは

今回観にってきた「荒野のコトブキ飛行隊」は、ガルパン水島努監督作品です。 私自身、人に進められて劇場版のガルパン映画(4K)を映画館で見て面白かった経験があり、今作品にも注目をしていました。 ここまで1話から11話まで放送されているのですが、ガルパンと同じように空戦の戦闘シーンや音にはとてもこだわりをもって作られているのだなと感じでいたので、しっかりとした上映設備のある場所で一度観てみたいなと思い今回に至りました。 詳しい内容は次のHPで確認ください。 TVアニメ『荒野のコトブキ飛行隊』公式サイト

タイムスケジュール

今回のイベントのタイムスケジュールは次のような感じでした。

全体を見て2時間ちょっとでしたので、上映+それ以外で1時間ずつくらいでした。

感想

内容についてはまだ放送されていないこともあるので、実際のTV放送やWeb配信で観ていただければと思います。 それ以外の感想を書いていきたいと思います。

感想 - 音響システム

まずは5.1chの音響システムが素晴らしかったです。 これはガルパンでも感じたことなのですが、実際に空戦シーンをみたことがないけど、それぞれの音に個性があり、とてもリアルに映像をみることができました。 恥ずかしながら、私はTorne + iPadで録画されたTVを見ているので、全然迫力が違いました。 空戦がメインになるので、戦闘機と銃弾の音が一番の特徴なのですが、特に敵側が使っている「震電という戦闘機」が凄いなと思いました。 そもそも、現存する機体や当時の映像がないように思われる(少し調べても出てこない)のですが、アニメーションの映像を合わさると本物の音のように聞こえました。 この音を劇場で聞けたということだけで、元はとれたと思います。 できれば、5.1chではなく、音をさらにチューニングした爆音上映会のイベントがどこかであればよいなと感じました。 劇場案内 - ユナイテッドシネマ アクアシティお台場 | アクアシティ

感想 - 大画面

とりあえず大きいものは正義ということで、先程の音と合わせて大画面でアニメーションを見るのは楽しいです。 おそらくTV作品の映像をそのまま流しているのだと思うのですが、大きな画面でも全然見劣りがしなかったので、ちゃんと作り込まれているのだと感じました。

感想 - トークショー

席は抽選だったのですが、かなり前の位置に配置をされいたので近くで見ることができました。 内容

  • 11話までの振り返りと12話について
  • 12話を振り返って
  • 好きな空戦シーン
  • スペシャルゲストZAQさん登場 - 主題歌やキャラソン感想
  • 最後に

各声優のかたが「好きな空戦シーン」を上げていくコーナーでは、そのシーンの解説も聞くことができ個人的にも結構勉強になりました。 こういった解説があると、どうしてこの場面ではこういう動きをしたのかなど再認識ができます。 とりあえず動かしてみたではなく、こういう状況で、自分はこうなので、こういった動きになるとしっかり理由があります。 私もアニメーションとは違うのですが、ゲーム内でエフェクトやアニメーションを作るときにちゃんと理由をつけて動きを作らないといけないなと改めて感じました。

声優の方

こういったイベントが初めてなので、声優の方のトークショー自体も初めてでした。 感想として、どの方もしっかり話されているのが凄いなと思いました。 おそらく本業「キャラクターを演じる」ということ以外にも、こういったイベントでのトークや本作品でいうとキャラソングを歌ったり、結構マルチに才能を発揮しないといけないからです。 ゲーム作りでいうと、エンジニアができ、デザインができ、アニメーションを考えるなど、フルスタックな人材な感じでしょうか?

特に、鈴代紗弓さん(キリエ役)と幸村恵理さん(エンマ役)は、この作品が初めての主演?みたいだったようでしたので感想シーンなど他の方々よりも気持ちが入っているように感じられました。 私もゲームを作っていて、その作品で遊んでいる人を見ると嬉しいやら恥ずかしいやら変な感情が湧いてくるので、そのような感じなのかなと思いました。

最後に

2時間という短い時間でしたがとても楽しく観ることができました。 本日3/31から地域によって最終話のTV放送が始まると思いますので、興味をもたれたかたは見ていだければ幸いです。 Webでも配信をしているということですので、できれば1話から追っていただけるとこの作品の作り込みがわかるかもしれません。

荒野のコトブキ飛行隊 Blu-ray BOX 上巻
バンダイナムコアーツ (2019-05-24)
売り上げランキング: 563

【Unity】c#の例外処理、その使い所

個人的にあまり詳しくない「例外処理」について調べてみました。 「try{} catch{}」を使うのが例外処理なのだな、というぼやけた認識でいるのですが、具体的にどういった場面で利用するのかなど実践で使えるのか、処理は重くないのかなど考えてみました。

例外処理

「try{} catch{}」を使って簡単な例外処理を書いてみます。 次のコードはDictionaryのkeyが不正だった場合に例外処理を行うようにしました。 [c] void Start() { dict = new Dictionary<string, string>(); dict.Add("hoge", "ほげ"); dict.Add("start", "スタート"); dict.Add("end", "エンド");

    // 処理
    try
    {
        Debug.Log(_dict[&quot;hogo&quot;]);
    }
    catch()
    {
        Debug.LogWarning(&quot;例外が発生しました&quot;);
    }
}

[/c]

tryの中のスコープ内で例外処理が発生した場合、catchのスコープ内の処理が呼び出されます。 通常ですとKeyNotFoundExceptionが発生しますが、これを回避することができます。

なお今回の処理は普通なら通常は次のようなコードを書くため例外処理を必要ありません。 [c] // 普通の処理 string text = string.Empty; if(_dict.TryGetValue("hoge",out text)) { Debug.Log(text); } [/c]

例外ごとにcatchの処理を分ける

例外の種類ごとにcatchの処理を分けることができます。 [c] try { Debug.Log(_dict["hogo"]); } catch(KeyNotFoundException e) { Debug.LogWarning(e); } [/c]

catchは一つだけではなく、複数書くこともできます。

finally

「try{} catch{}」にfinallyをつければ、例外が出る・出ないにかかわらず実行される処理を書くことができます。 [c] finally { Debug.Log("最終的処理"); } [/c]

throw

throwを使うと該当箇所に例外を投げることができます。 [c] string hoge = string.Empty; if (_dict.TryGetValue("end", out hoge)) { Debug.Log(hoge); } else { throw new KeyNotFoundException(); } [/c]

いろいろ調べてのですが、throwをどの場面で使った良いのかはわかりませんでした。 別に例外を投げなくてもログを吐けばよいのではと思います。

例外の使い所

ざっと調べてみて、例外処理に関してはこちらが注意をすれば実装しなくても良い場合が多いと感じました。 よく見かけるエラーログはNullReferenceExceptionで、これはNullチェックを念入りに行えば回避することができますし、例で上げたKeyNotFoundExceptionなども人為的な実装ミスになるので、事前に何かしらの判定を入れて回避が可能だと感じました。

ではどこで使ったらよいかと考えると、実装以外の何かしらの不備が発生する箇所です。 具体的には、AssetBundleを含む外部からデータのダウンロードする際になります。 データそのものがない場合は論外ですが、例えば通信不備で本来あるはずのAssetがない場合などです。 いくら実装を正しく行ったとしても起きる可能性がある現象で、このような場合に例外処理を使うのではないかと思いました。(例外が出たら再度読み込む処理をする、もしくは通信エラーのダイアログを出すなど) 普段はそういった通信周りを関係ないことをしているので「例外処理」はあまり馴染みがないのだと同時に感じました。

【Unity】コードを共通化して負債を減らす

Unityだけではないと思うのですが、コードを書いているときに同じような処理を書く必要が出てくる場合があります。 何も考えずに、コードをコピーすればこの問題は解決するのですが、将来的には負債を残すことになります。 時間的な成約がなにもないのであれば速やかに共通化し同じコードを使い回すように設計すれば、今後のもし変更が入ったときに対応が簡単になります。

通化のメリット

通化することはメリットしかありません。 同じコードを書く必要がなくなりますし、修正をしようとしても一箇所だけです。

  • 修正が一箇所だけなので楽
  • 同じ処理を記述しなくても良い

メソッド化

クラス内に複数同じ処理があるのであれば、それをメソッド化して使いまわします。 個人的に2つ以上同じような処理を記載するとなった場合メソッド化したほうが良いです。 [c] private void CommonHoge() { // 何かしらの処理 }

private void Hoge() { // 各メソッドで使い回す CommonHoge(); } [/c]

Baseクラス作成

似たような機能を作るときにはBaseクラスを作り、共通化できる処理を記述すれば使いまわして利用できるようになります。 [c] public class BaseClass { protected void CommonHoge() { Debug.Log("共通化"); } }

public class AClass : BaseClass { private void Start() { CommonHoge(); } }

<h2>インターフェイス</h2> Interfaceを使ってクラスの処理を共通化することもできます。 Interfaceは特定に挙動を保証する仕組みで、interfaceで定義されたメソッドなどを継承元のクラスに記載をします。

[c] public interface IInterfaceClass { void GetNumber(); }

public class AInterfaceClass : MonoBehaviour, IInterfaceClass { private int number = 10; public void GetNumber() { Debug.Log(number); } }

public class BInterfaceClass : MonoBehaviour, IInterfaceClass { private int number = 5; public void GetNumber() { Debug.Log(number); } } [/c]

Interfaceで定義されているメソッドは継承先のクラスにかかわらず呼び出すことができます。 [c] private void Start() { AInterfaceClass aInterface = new AInterfaceClass(); BInterfaceClass bInterface = new BInterfaceClass(); var list = new List<IInterfaceClass>(); list.Add(aInterface); list.Add(bInterface);

  foreach(var obj in _list)
  {
      obj.GetNumber();
  }

} [/c]

ユーティリティクラスを作成

横断的に利用する場合、staticなクラスを一つ用意し、その中に共通な処理を記載します。 [c] public static class Utility { public static void SetDebugLog(int num) { Debug.Log(num); } } [/c]

色々なところから呼び出せます。 [c] void Start() { Utility.SetDebugLog(10); } [/c]

staticなクラスはオブジェクト指向と相反するなど利用に否定的な見方があるかもしれませんが、適切に利用すれば同じ記述を使い回さずにすみます。

キングダムハーツ3をクリアしました。

先週末にPS4ソフトの「キングダムハーツ3」をクリアしました。 クリアまでのプレイ時間は22時間ほどで、2週間くらいかけて遊ぶことができました。 簡単ですが、ブログに感想を書いていきたいと思います。

2019 03 10 1

キングダムハーツ

前作から10年以上空いての続編ということで、キャラクターの名前くらいしか覚えていませんでした。 ただ、1と2はとても面白かったという記憶はあったので、続編がいつ出るのかはとても気になっていました。

ゲーム内容

キングダムハーツシリーズは「スクウェアのキャラクター × ディズニーのキャラクター」が登場するアクションゲームと記憶しています。 主にディズニーシリーズの世界を、主人公が旅をするのですが、そこにファイナルファンタジーのキャラクターが絡んできているという内容です。 私は、この作品だけではなく別作品同士がコラボするということにとても興奮を覚える性格でしたので、このコラボレーションがキングダムハーツシリーズの最大の魅力だと思っていました。

本作品では、ディズニーのキャラクター以外にもピクサー社の世界も登場します。 このあたりは、前作までにはなかったことで、この長い空白期にディズニーとピクサーが一緒になったことも影響しているのではないかと思います。

感想

とりあえずやり込みの要素や今後登場するであろう追加コンテンツは別にしてEDまで見た感想をここから書いていきたいと思います。 もしかしたらネタバレになる可能性があるので、まだ未プレイの方は注意してください。

ボリューム

22時間でクリアできましたので、EDまでのボリュームはあまりないと思います。 レベル上げも特にしていないので、普通に進んで行けばそのまま最後までいけるレベルバランスです。 そもそも、このキングダムハーツシリーズはこれまでのボリュームにあるゲームではなかったので適切な内容量だと思います。

グラフィック

PS4作品ということもあるのですが、これまでの作品と比べてとてもキャラクターや世界背景は綺麗です。 PSProですと更に映像が良くなるみたいです。 そもそもリアルな世界観ではないため、そこまで作り込みは必要ないと思うのですが各ストーリーの正解感がそのまま表現されているようでした。 特に「トイ・ストーリー」の世界が好きで、キャラクターなどは本当にアニメの世界そのもので感動しました。

2019 3 10 3

システム

アクションゲームというこで、攻撃ボタンと移動がメイン。特殊なアクション時には該当のボタンを押せば発動されます。 基本攻撃ボタンを連打するゲームだと思います。魔法も使えるのですが、回復魔法しか使わなかったです。 主人公の武器に応じて特殊な攻撃ができるので、本来なら場面場面で切り替えて使うのだと思うのですが、最終で気に一番攻撃力が高い武器しか使わなくなりました。

今作品から壁を登ぼることができようになり、アクションがいくつか増えましたが、オープンワールドとはまではいえず行動できる範囲は決まっていますし、できることも限られています。 良く言えば操作が簡単、悪く言えばあまり技術を必要としません。 キングダムハーツシリーズはストーリーを楽しむゲームな気がするので、このシステムで良いと思いました。

登場人物

これまでの主人公(ソラ)と外伝シリーズのキャラクターが一同に登場します。 ただプレイアブルキャラクターは一部に限られています。 また、話の中でこれまでのストーリーについて触れられている部分はあるのですが、そのあたりは既に知っているものとして話が進んでいきます。 ですので、過去作品をやっていないと話についていけない恐れがあります。

ストーリー

8つの世界を回るのですが、各世界の話はとても面白かったと思います。 主人公とその世界のキャラクターがうまく絡み合っていた気がします。 特に、トイ・ストーリーパイレーツ・オブ・カリビアンの世界は楽しかったです。

2019 3 10 2

ただ残念な点が2点あります。

強制ストーリー

キングダムハーツシリーズがこういった作品なのであれば仕方がないのですが、強制ストーリーが多すぎる気がしました(特に最後の方) 本来ならプレイヤーが動かして戦うのであろうとおもった場所でも、強制ストーリーで終わらせてしまったりするのはガッカリしました。 また、このストーリーはスキップすることができないです。 日本のRPGの悪い点としてこの強制ストーリーがあると思うのですが、適度に登場するのであれば良いと思います。ただ、本作品は多すぎた感じです。 映画を見たいのではなく、遊びたいと思ってゲームをやっているので、プレイヤーの操作できない部分を多くしていただきたいと思いました。

コラボ

本作で私が一番不満に思ったのが「ファイナルファンタジースクウェア)」側のキャラクターや一人も登場しなかった点です。 1,2までは出ていたので、今回はFF13FF15のキャラが出てくると思ったのですが、これまで登場したキャラも含めて出てきませんでした。 このシリーズに興味を持ったきっかけが、FFのキャラがディズニーのキャラと登場するということだったこともあるので、私が遊びたいと思う動機がなくなってしまいました。

もう一つ、最後のバトルあたりで、これまで巡ってきた8つの世界がまったく絡んでこなかったのも不満です。 8つの世界と最終決戦は完全に別々に分かれていて、そもそも8つの世界を回る必要があったのかと思いました。

最後に

本作品について8つの世界とグラフィックはとても良かったです。 ただ、ストーリー面をもう少し改善してほしいと思いました。