graphics.hatenablog.com

テクニカルアーティストの技術を書き殴るためのメモ帳

エンジニアTA向けGUIチュートリアルとしてのファイルエクスプローラ実装。

そろそろPySideをちゃんと覚えようと思ってファイルエクスプローラをつくってみた。
これ個人的に GUI ネタとしてはわりといいかんじだと思ってるのでざっくり紹介してみる。エクスプローラっていろんなGUIネタが詰まってるから、チュートリアルとしてはたぶんすごくちょうどいい。

f:id:hal1932:20170221211355j:plain
github.com

というわけで以下、ファイルエクスプローラをつくるのに扱う主な GUI 要素を羅列してみる。リンク先はすべて PySide 関連。

さて、まぁこれだけ使えれば基本的な GUI 構築で困ることはあまりないと思う。とはいえ TA 界隈、いわゆるアーティスト(デザイナ)でも人によってはこのくらいふつうに扱えてしまうので、エンジニアが存在する意義は微妙なところ。というわけで、「経験上アート出身の人たちがここまでやることは少ないのかな」という部分をいくつか拾ってみる。今回はそこまでやってないけど、このあたりのテスト実装をするのにも、ファイルエクスプローラはほどよく機能する良いネタだと思う。

続きを読む

2回目のP2P、っぽいなにか。

前回の続き。

  • サーバからピアへの返信をメッセージングからHTTPに変更した。
  • サーバからピアへの返信をJSON形式に統一した。
  • 再利用できるように全体的にコードを整理した。

github.com

graphics.hatenablog.com

はじめてのP2P、っぽいなにか。

NSQとHTTPをベースにしてトポロジっぽいものを組んでみた。

とはいえネットワーク周りはまったくの専門外なので、とりあえずは

  • 個数が動的に増減する複数のクライアントノード間でいいかんじに分散処理できること
  • ネットワーク上にサーバがいないときにクライアントだけが起動してても問題ないこと
  • 動作パフォーマンスよりの高さよりも実装コストの低さを優先すること

あたりを考えながらやってみた。

想定する用途は、中~大規模のゲーム制作チームで利用できるようなアセット関連のビルドキャッシュあたり。

今回のやり方がどれくらい一般的な構成なのかはよく知らない。ていうかたぶん違う。

f:id:hal1932:20170212123049j:plain
github.com

続きを読む

「C#のコードルールについて」に反応してみる。

【技術サロン】C#のコードルールについて(2016/12/7) – 株式会社ロジカルビート

あくまで非ゲームプログラマないち C#er として、ということでひとつ。

続きを読む

Slackとかにおもうこと。

upgrade.all-in.xyz
thebridge.jp

もちろん、全員がマルチタスクでさくさく処理できるようになることは望ましいのですが、
組織が大きくなればなるほどコミュニケーションの設計を最適化すべきですね。

これはまったくその通りだと思っていて、もうちょっと気軽に無視[できる|される]空気が欲しいなぁと思う。

例えばHulickさんが書いてるような「返事がもらえないと支障が出るようなことがらをチャットで伝えようとする」こと自体が問題で、そういうのはメールとかJIRAとかRedmineに逃がしてやるのが正解だと思うんですね。Slackがメールを置き換えるという発想自体が間違いなのではと。というか、世の中の一般的なチャットツールに「通知OFF」の機能がついてるのは、まさにそのためなわけで。この人も書いてるとおり、コミュニケーションがとれるってことが常にすばらしいわけじゃないんですよね。

チャットツールが2個も3個も起動してるような状況はそりゃよくないと思うけど、チャットとメーラーとプロジェクト管理ツールが起動しているような状況は、それ自体は別に悪くないと思うんですよ。ただそれが常に良い状況だとは限らないので、それらが如何に共存すべきかを考えるのが、生産性に貢献せんとする僕らのタスクではないかと思うのです。コミュニケーションチャネルを減らすってのはその結果採用されうる戦略のひとつであって、コミュニケーションの棲み分けができない状況でSlackをやめても、Slackを始める前の状態に戻るだけであんまいいことなさそうなんだよなー……。

ただコミュニケーション最適化ってとても時間がかかるものだと思っていて、なので現場スタッフの自分としては、二度手間になってしまうとしてもまずは、「それJIRAに積んどいてください」「じゃあそっち行くんで口頭で相談させてください」「電話で話してもいいですか?」って言うところから始めるようにしてる。もうちょい責任(というか権力)のある立場だったらまた違うやりかたがあるんだろうなぁとは思いつつ。

UnityScriptとDLL周りのあれこれ。

DLLにするとUnity上でリビルドがかからないから速くていいとか、実際どうなん?みたいなところ。

github.com

  • Mono.CSharp.Evaluator
    • 初期化
    • 式の評価
    • Unityへの組み込み案
  • smcs
続きを読む

TrueTypeFontで遊んでみた。

最近はどうだかよく知らないけど、一昔前にウェブ界隈でフォントのサブセット化なるものが流行ってたらしい。ウェブフォント、つまりHTMLと一緒にフォントを提供して、コンテンツ制作者が意図する通りの文字列描画を行うというものがあるんだけど、特に日本語フォントは、配信するにはデータサイズが大きすぎる。だから、コンテンツ内で使われる文字だけを取り出して配信すればいいんじゃないか、というもの。

ただとても残念なことに、海外系のウェブフォントサービスで日本語を本気でサポートしてるものは稀で、自前でサブセット化するにしても、某有名ツールではカーニング情報が剥がれてしまう*1とか、ちょっと頑張ってぐぐった程度ではいいかんじの解説付きサンプルも見つからない。

なんでそんな状況になるのかをちょっとだけ調べてみた。

以下、TTFの仕様が大きすぎてまともな実装にはなってないけど、テスト用に書いたスクリプト
https://github.com/hal1932/test/blob/master/testSubset.py

  • 目的
  • 準備
  • データ定義
    • TTFに含まれる情報
    • TTFフォーマット
    • 文字コードとグリフの対応付け
  • 実演
    • グリフ検索に使うコード体系を扱う 'cmap' サブテーブルを特定する
    • 「フォントに含まれるグリフ→文字コード」の辞書をつくる
    • 不要な文字に相当するグリフ情報を潰す
    • 結果の確認
  • 結論

*1:だからといって使えないというわけではなく、あくまで求めるデザインの精度次第。

続きを読む