どこかのだれかへ

ボク、プログラマ。

ゲームデザインバイブルが読み終わらない

ゲームデザインバイブル、というゲームデザインのポイントをまとめた本があります。 この本、とにかく読むの時間がかかっています。 ページぎっちりに文字があってそれが700ページ、休日にがっつり読んでもせいぜい、100~150ページくらいしか読めません。 …

3x3行列を3x2行列にするこによって逆行列の計算がすっきりした

二次元ベクトルにアフィン変換行列を適用するには、3x3行列使うのが通常です。 しかし古来よりゲーム開発ではメモリ節約のために単純に3x3行列を持たず、固定値である最右列を省略した3x2行列(float a[3][2])を使う場面があります。 僕はずっとメモリの節約…

数学Cがもうない、でも復活するらしい

最近、逆行列のために暇なときに行列を復習しています。 ベクトル、行列は僕が高校の時は数学Cで習う項目でした。選択授業で物理を選んで数学Cは受けなかったのはちょっと後悔しました。 そんなことを思ってなんとなく数学Cをググったらなんと2012年に数学C…

在宅業務の昼飯にマッスルデリを試してみた

4月中旬から在宅業務に移行しリモートワーク生活を満喫していますが、これによって平日の昼飯事情も変わりました。 出社時は社食で食べていたんですが、在宅業務では外食が基本になります(昼に自炊する気は一切ない) お財布や時間のことも考えると家の周…

新型コロナによりリモートワーク開始!

緊急事態宣言が都に出てから自宅待機(市場調査という名目でSEKIROとFF7Rやってました)していましたが、今週から自宅に会社の開発環境が整ったので今日初めてリモートワークを行ってみました。 とにかく、やる気スイッチを押すのにとても苦労しました。会社…

意見は言える時に言っとかねばならぬ。

プログラムでAとBに意見が分かれて、僕はA派で話の流れからもしてもAに行きそうだったので何も言わなかったんだけど、なぜか最後はBになってて???となってしまいました。 Bになってしまったことはもうしょうがないんですが、自分がつ持つBのデメリットポ…

新型コロナでGDCは延期、E3はキャンセル

今日(11日)の昼間くらいからE3のキャンセルの噂がTwitterで流れていましたが、ついに公式アナウンスで新型コロナの影響でE3キャンセルになったことを公表されました。 www.e3expo.com 新型コロナやばいですね。弊社でも時差出勤が推奨されており、人が集…

UE4の学習コストが辛い

最近は自宅でUE4を使ってゲームを作ろうとしていますが、学習コストが高くて辛いです。 簡単なこと(モデルを描画)や移動等は簡単に出来るしチュートリアルもしっかりしているんですが、結局そこから外れてゲーム独自に機能を作り始めて少々とがったことを…

Google Chromeが真っ黒になった時の対処方法

普段、Google Chromeを使っているのですがGPUを新しくしてからGPUドライバーを更新した時に時折画面が真っ黒になってしまう場合があります。というか今さっきなりました。 ウィンドウ内すべて(タブや閉じるボタンまで)が真っ黒になってググれなくなってし…

PythonのGUIライブラリはどれがいいか、Googleトレンドで確認してみた

ちょっとしたことやるときにPythonをよく使いますが、GUIツールは今まで作ってきませんでした。 デザイナーとかアーティストはCUIを嫌うのでGUIほしい場合があるんですが、ではPythonではどのGUIライブラリを使うのがいいんでしょうか? 今回は、Tkinter、Py…

郷には入れば郷に従え、暗黙のコーディング規約。

仕事の愚痴なんですけどね。 会社単位・プロジェクト単位でコーディング規約が決まってるところがあるかもしれませんが、僕の現在のプロジェクトには明示的なコーディング規約はありません。 でもコード見ていると微妙な違いはあれど一応コーディング規約に…

Slack上での話し合いが疲れたので原因を考える

Aさんととある機能の必要の有無に関してSlack上で話し合いをしたんですが、終わった後すごい疲れた事に気づいたので、なんで疲れたのか振り返ってみます。 今回の場合、チーム全体のチャンネル上のスレッド内で話し合っており、基本は1on1でしたがたまに周り…

MR. ROBOT見た。プログラマにお薦めできる海外ドラマ。

MR.ROBOTはアメリカのドラマで全4シーズンのクラッキングを題材にしたドラマです。 昼はセキュリティエンジニア、夜はクラッキングで自警団まがいなことをしているエリオットが、巨大企業Eコープへのサイバー攻撃計画に誘われるところから物語は始まります。…

今年のスローガンはアウトプットとスプリント

2019年のブログの最終更新は7月でした。Twitterのほうはちょくちょくつぶやいてはいますが・・・・・・ブログの存在意義ってなんでしょうね。今書いてて思います。なんで作ったんだろうか。 たしかこのブログを作ったのは数年前で転職を機会にもっとアウトプットし…

海外フォーラムって改行少ないよね

最近とあるゲームの英語フォーラムを見るとき、英語の勉強だと思って英和辞典ツールを開きつつ頑張って自分で読んでいるんですが、正直辛いです。 英語フォーラムを開くと、長々とした英文がずらーっって表示されて圧倒されるんですが、それにしても精神への…

ヘッダーファイルではnamespace内でもusing指令は書いちゃダメ

C++

仕事のプログラムを見ていたら、ヘッダーのnamespace内にusing namespace XXXを書いている人がいました。ヘッダーファイルにusing指令を書くのは御法度です。しかしusing指令はブロックスコープなので、もしやこれは大丈夫なのかな?と思い、以下のような実…

visual_studio.vimをpython3.xで動くようにした

Vim

普段、Visual StudioとVimを交互に使っているのですが、この行き来を簡単にするvisual_studio.vimというものがあったですが、これがずいぶん前からメンテされていないようでした。 とりあえず自分の環境はPython 3.7なんですが、このプラグインが2.xでしか動…

バイナリデータを拡張性高くするためにXmlみたいな構造を作ってみた感想

バイナリデータって拡張にすごく弱くて、以前苦労しました。バージョンごとに構造体を書いていて管理が面倒でコードも汚くなっていきました。 そこで考えました。key-valueみたく、識別子・サイズ・値を1セットとして、すべてのメンバーやブロックを構成す…

MVVMのViewModelの必要性を感じた

WPF

WPFではMVVM(Model/View/ViewModel)パターンを利用しますが、簡単なツールの場合はViewModelの存在意義があんまり無く、恩恵を受けにくく、その存在意義を忘れがちです。 ViewModelがある理由はView(WPFでいえばxaml関係)に関する都合を吸収するためですが…

Google XML Document Format Style Guide

UIエディタの保存にXMLを使用としたときに、要素と属性の使い分けをどうすればいいんだろうかと考えてたときに出会ったのが、Google XML Document Format Style Guideでした。 https://google.github.io/styleguide/xmlstyle.html C++のスタイルガイドはよく…

BitmapImageをbyte[]に変換する

各フォーマット毎にBitmapEncorderがあるので、コレを使います。 BitmapImage image = /*pngイメージ*/; var encorder = new PngBitmapEncoder(); encorder.Frames.Add( BitmapFrame.Create( image ) ); using( var stream = new MemoryStream() ) { encorde…

1行インライン関数は止めて欲しい

C++

C++の話です。メンバ関数をインラインで書くときに1行で書く場合はありますが、これは避けて欲しいです。なぜならここにブレークポイントを置いたときに引数の値とかを確認することが出来ないからです。 class Hoge{ public: // これはヤダ void Set( int v…

Null条件演算子というのを初めて知った

C#

WPFとMVVMについて色々調べていたら、C# 6.0からの可能でNull条件演算子があることを知りました。これめっちゃ便利ですね、だいぶコードがすっきりします。 C#はどんどん新しくなっていきますが、全然追ってないのでこんな浦島太郎状態なことに鳴ってしまい…

Elastic tabstops、というコードの整列を勝手にやってくれるヤツ。

Vimのプラグインでコードを整列してくれる良いプラグインないかと探しているときに見つけたのがElastic tabstopsです。 ※Elastic tabstopsのWebサイトより引用。 Elastic tabstops - a better way to indent and align code 公式サイトではVisual Studioのプ…

コロプラ特許訴訟って今どうなっている?

ということでググってみたら、つい先日、第5回審理やったみたいです。 毎回よくまとめてくれている方がいるので、そこから引用。 任天堂 VS コロプラ特許訴訟・第5回戦。ユーザに内緒で『ぷにコン』の仕様が変わっていた! | パテントマスター・宮寺達也の…

名前の末尾の数字をカウントアップして返すメソッド

C#

ツールとかで要素をコピーした時の新しい名前は、賢く末尾の数字がカウントアップしていくのが嬉しいと思うのです。 static string CountUpName( string name ) { Match match = Regex.Match( name, "(^.*)([0-9]+$)", RegexOptions.RightToLeft ); if( matc…

子が別のクラスのツリービュー

WPF

WPFにおける、親と子が同じ、再帰的なツリービューの表示は GitHub - tepp91/WPFSampleCollection: Function sample of WPF の中でサンプルとして提示していますが、親と子が別々のクラスの場合は、 <UserControl.Resources> <HierarchicalDataTemplate DataType="{x:Type mdl:Texture}" ItemsSource="{Binding PartList}"> <TextBlock Text="{Binding}" /> </HierarchicalDataTemplate> …</usercontrol.resources>

UIエディタを作る上で決めていること:その2

続きです。 のちのちスクリプトを書けるようにする これは将来的に、ですがMayaのmelが目標です。つまりあらゆる処理をスクリプトを介して行う事が出来るようにすることで大量のファイルを一括で処理できるようにしたいです。これをすぐにやるつもりはないの…

pathlib.globを複数の拡張子でフィルタリングする

pathlib.globをさらにジェネレータ式で書くことでフィルタリングが可能です。 C++ファイルの再帰リストアップの例です。 import itertools as it from pathlib import Path exts = ['.cpp', '.h', '.inl'] for filepath in (x for x in Path('.').glob('**/*…

UIエディタを作る上で決めていること

CEGUIを使おうと思ったけど、自分でビルドする必要があってその用意が大変でやってられないので、自分で作る事にしました。そして自分で作るならと、幾つか決めていることがあります。 ワークスペースはインゲームランタイムを使用する UIエディタでありがち…