エンジニアもどきのよしなしごと

仕事や趣味の備忘録

アーケードゲーム開発におけるC++ - EDGE セッション個人的まとめ -

前回記事「Event for Diverse Game Engineersに参加してきたので個人的メモ。 - エンジニアもどきのよしなしごと

の中で、触れていた

3、「元コンシューマ系PGがアケゲ開発やってみた ~アケゲ開発でのC++~」

登壇者:shwさん。

について。個人的にまとめました。

※撮影OKのスライドに関連していることのみ抜粋しています。

 

続きを読む

Event for Diverse Game Engineersに参加してきたので個人的メモ。

略してEDGE。ということで、参加してきました。

 

ゲームプログラマかつ、ネイティブに寄っている勉強会に、これまで参加したことが無かったので、非常に勉強になりました。

 

おかげで、まだまだいろんな知識・技術が足りていないってことを思い知らされました。

特に、C++11、モダンなC++についての知識が、足りない足りない。

あと「ラムダ式とは?」ってなってしまっている状態でして。

後で知り合いに「PHPでも使われてるよ」と、本業で使っている言語なのに知らない。というかなり致命的なことをやらかしてしまっているので、ここを起点に、調べてみようと思わされました(笑)

 

やっぱりこういったイベントごとは、何かをしてみよう!なにかをやらなくちゃ!って感じにモチベーションがあがるのでいいですね。

 

正直、自分で何がしたいのかとか、出世するためにどの方向を攻めてみようとか、まだまだ模索中ではありますが、引き続きこんな感じでイベントに参加したり、書き留めてみたりしていこうと思います。

 

改めて、主催者様、ならびに登壇者様、参加された皆様、お疲れ様でした。

 

今回のイベントの概要は、下記サイトに記載されてます。

申し込みはできません(苦笑)

peatix.com

 

twitterタグは #TokyoEDGE2015

2015って付くあたり、次回以降の開催も期待大ですね!w

 

以下、セッションと、公開されているスライドへのリンク。

1、「shared_ptrとゲームプログラミングでのメモリ管理」

t.co

 

2、「Unreal Engine 4とUnreal C++でのプログラミング環境について」

www.slideshare.net

 

3、「元コンシューマ系PGがアケゲ開発やってみた ~アケゲ開発でのC++~」

スライドは公開されていないのですが、許可が出ていたページは写真をとらせていただいたので、後ほど自分なりにまとめさせていただこうかなと思っています。余裕があれば(笑)

 

UE4極本進め中。その2

UE4極本の進捗状況:第11章終了。

 

ということで、ここまでの過程でひっかかった箇所をメモとしてこちらにも記載します。

 

 

メモは、確か記載されていなかったはずなので、いきなりスタート地点にプレイヤーキャラクターのポーンが出てくるはず…的なテキストを見て驚いた記憶があります(苦笑)見逃していたらすみません。

特にテストとして新規レベルをバンバン作成していく方々は気をつけましょう。…逆に習慣になって忘れないかな?

 

メモ2については、プレイを押した後にプレイヤーが画面に表示されないので、「どうして正しく表示されていないのか。」を確認する場所としてはまずここになるかなと思います。

加えて、きちんとUE4極本にも記載されていますので、しっかり読みましょう。

斜め読みとかダメ、ゼッタイ。

(ツイートしてから気づきましたすみません)

 

ゲーム系からWebサービス系に転向して初めて知ったもの備忘録 2

キュレーション

kotobank.jp

これは本当に「こんな言葉、機能があるんだ!?」と驚きました。

上記引用記事にも記載されていますが、togetterやNEVERなどの、いわゆる「まとめサイト」のことを、キュレーションサイトと呼んだりしていることと、

こういったキュレーションサイトの運営や、サービスを展開することが最近はやっているようです。…もう最近じゃないのかな?(笑)

 

スクレイピング

ウェブスクレイピング - Wikipedia

端的に言えば、各種Webサイトから必要な情報を取得してくるソフトウェア技術のこと。

上記キュレーションのサービスを展開する上では、よく利用されている技術のようです。

 

バージョン管理ソフト

これは単語というよりもどういった機能や種類があるのか?といったところについていろいろ知る必要性に迫られました。

せいぜいVisualStudio SourceSafeを使ってチェックイン・アウトをGUIから行う。くらいしかやったことの無かった私にとって一番ハードルが高かったのはこれかもしれません。

特にGitのコマンドラインベースでの操作とか(苦笑)

Gitはもっと詳しく調べていきたいものごとの一つです。未だにあやふやな部分が多すぎるのでOTL

 

タスク管理サービス

バグや課題の共有・進行状況の把握に使用されるサービスのこと。

Redmineというものがあることは、名前だけ知ってました。でも、具体的に何をするのかというところは、転向してから知りましたねー。操作する機会無かったし。

RedmineTrac・Backlogと、様々なサービスがありますが、基本的には

クライアントが何を使用してるかによってで使用するものが変わってくるのかな?

なんとなくそんなイメージを持ってます。

 

個人的には、Trelloにお世話になっています。

 

UE4極本進め中。

地味に購入して、地味に進めているところ。

初歩っぽいところで詰まったのでメモ書き程度に記載。

解決したら追記する。

2015/09/04 10:12追記

 

 

ってことでこっちにも書いとく。

デフォルトの位置は、画像に記載されているピボット位置であってるっぽい。

f:id:usui3153m:20150904013308p:plain

 

でも、Import Transformation の Yに-50.0を入れた状態になると、

f:id:usui3153m:20150904013338p:plain

図7.26のように、Y軸の矢印がスタティックメッシュにめり込まず、メッシュの外を指してしまうと。

X,Z軸の向きについてはあってるはず。

ってか思いのほか画像にすると見づらかったな…反省。

そこがそもそも間違ってるとかだったら笑い話で終了していいんだけどなー。

 

正誤表を確認した限りでは、記載が見当たらなかったので、誤字ではないと信じてるけど、他の方々からも特に上がってきていないので、なんとも…OTL

 

もろもろ確認してみて、どうしてもわからなかったら飛ばそう(苦笑)

 

以下追記。

今朝方、著者様から直接リプライいただいたところによると、おそらく、掲載されている図が間違っているとのこと。

数値どおりに入力してくれれば、順当に8章へつながるとのことだったので、Import Transformation Y:-50.0で進めれば問題無いみたい。

少し見づらいかもしれないけど、ピボットの位置は上記の図が正しいということで、これはこれで残しておこう。

 

 

 

ゲーム系からWebサービス系に転向して初めて知ったもの備忘録

 

ゲーム系といいつつ、コンシューマでもネイティブアプリでもソーシャルでもなく、いわゆるメダルゲームの映像演出系の作成にほぼ3年従事して、現在はWeb系のバックエンド周りに携わるようになったのですが、

驚くほど知らない単語が多い

事実に打ちのめされつつ、ひぃひぃ言いながら検索して調べて、また知らない単語に出会って…ということを繰り返しながらなんとか業務を行っています。

 

ということで、出会った単語、調べたことをジャンル問わずざっくばらんに記載していきます。

解説ではありませんし、あくまで備忘録なので締めとかありません。あしからず。

 

ステージング環境

 作成したWebサービスを展開して、動作確認をする場所を○○環境。と言っていて、そのうちのひとつ。

 ・開発環境

 ・検証環境

 ・ステージング環境

 ・本番(プロダクション)環境

 この種類の中で、「ステージング環境以外」は、字面的に意味がわかりやすかったのですが、「ステージング」って何よ?となりました。

 クライアントへの最終確認をする場でもあり、開発側にとっても、より本番環境に近いところでの動作確認をする場でもある。

 …という認識でいます(笑)

 

レプリケーション

 SQLを多少組める程度の知識しかなかったので、そもそも各システムごとの違いとか、向き不向きについて把握できていない状態だった中で、これはだいぶこんがらがりました。

 本当に概要程度の知識しかないので、このあたりはもっと突き詰めて調べていきたいなと思ってます。先日CEDEC行って本当によかった…。

 同じデータを複数持たせることで、検索処理の向上や負荷の分散などに対応することが出来るということらしいです。

 MySQLの特色としてもよくあげられていて、基本的にはマスター・スレーブ形式で、データの作成・更新・削除はマスターで行い、スレーブはマスターの情報を非同期で受け取り同期を行うのみ。しかし、その構造については想像力を働かせて様々な組み方が可能とのこと。

 

モンキーテスト

 …そもそもテスト、というものの認識についてはだいぶ違いますよね。

 本当はよろしくないけど、きっちり単体テスト結合テストとしてみたいなことは行わなかったし、テストとしてエクセル等に記載することもなかったので…。

 この辺は別の機会にまとめられたらと思います。(未だにテスト周りについてあやふやな部分があるとか言えない)

 

決められた項目をきっちりテストするのではなく、その場の思いつきでテストを行うもの。仕様上はやってはいけないところで、ブラウザバックしてみるとか。

 

横並びチェック

 これもテスト…いや、動作確認時に行わなくてはいけないもののひとつとのことでした。

 今までのような、きっちり単語としての解説が無いものだったのですが、調べたところによれば、

 「あるバグに対し、同じ原因によって似たようなバグが発生している、あるいは発生する可能性があるとき、修正してその似たようなバグが出ているところも修正されているかどうかをチェックすること。」

 ということだそうです。

 当たり前といわれてしまえばそれまでですが(苦笑)

 でも、抜けてしまいがちな項目でもある気がします。

 

パンくずリスト

 これが一番「なんぞこれ!?」ってなりました(笑)

 しかも、いざ調べたらwikipediaにあるっていうことにも「!??」ってなりました。

パンくずリスト - Wikipedia

  Webサイトの中で、自分が今どの位置にいるのかをわかりやすくあらわしたもの。ということで、確かに、よくよく見ることのある表示なのですが、こんな名前だったとは…

 

 

オープンソース RDBMSイマドキの機能を使おう! メモ書き。

オープンソース RDBMS イマドキの機能を使おう!

 

にて、メモ書き。

ノートの記載をそのまままとめているだけなので、後ほど補足とか記載したいところ。

 

オープンソース RDBMS 御三家として提唱していきたい。
 Postgre SQL
 MySQL
 Firebird
  ヨーロッパ・ロシア・南米で有名
 
 「オープンソースDBの成熟度を計る」
 
 都市伝説
 MySQL
  ・バイナリカラムのバックアップがとれない。
  ・サブクエリ、トランザクションがとれない。
  ・MyISAMInnoDBよりはやい。機能が多い。
  
 Postgre
  ・Windowsが無い
  ・バキューム必要で、動作時世界がとまる。
  ・MySQLより遅い
 
 Firebird
  ・ブラウザじゃないの??

 →各都市伝説は、解消されている。
   

 以下の項目の対応について。
 ・VLDB(VeryLargetDatabase)
  →パーティショニング
   巨大な表をキーを元に、水平分割する。
   MySQL 5.1
   Postgre 8.1

  →マテリアライズドビュー
   ビューを実体化してパフォーマンスを向上させる。
   Postgre 9.3から
   
 ・NoSQL
  使用用途として、
  →JSON形式が扱えればいい。ということなら
   ・MySQLが5.7
   ・Postgre9.2
     以降部分更新されていく。
  
  →外部との連携なら
   ・Postgre9.xのFDW(ForeignDataWrapper)
    dblinkが他DBの外部表と違って柔軟。
   
  →Memcache d のプロトコルを使用したいなら
   ・MySQL5.6でInnoDB memcache dプラグインが実装
    同5.7で性能がUPした。
  
 ・GIS(Geographic Infomation System)
  →Postgre拡張のPostGISデファクトスタンダード
  →MySQL5.7 で、拡張ではなく本体組み込みとしてre-bornした。

 ・SQL標準に対してのサポート
  もともとMySQLは便利な独自SQLが多々ある。
   →他のRDBMSSQL標準にも影響と思われる機能もある。
  PostgreはSQL標準をサポート。
  FirebirdSQL標準を追随。
  
 ・SQL 2003
  
  日本語による全文検索
   MySQL 5.7から、InnoDB FTS(FullTextSearch)
   
   Groonga
   ・MySQL Mroonga
   ・Postgre PGroonga
  
  TABLE SAMPLE
   Postgre 9.5でサポート
   →指定テーブルから、サンプル情報を取得するための構文。
  
 ・SQL 2008
  Limited Fetch
   LIMIT句のようなもの。
   もともとページネーション制御で多々使用されていたが、SQL標準には存在していなかった。
   
   Postgre、MySQL互換モードによって、LIMIT句自体の使用はできる。
  
  MERGE句
   Firebirdでサポートされている。
   入力したSQLの句に対して、条件が一致するものがあったときはAの処理
   一致するものが無かったときはBの処理。といった形での記入ができる。
   
   MySQL、Postgreでは、INSERT 文にオプションとして構文を付け足したり、制約名を記載することによって同等の制御を作成することが可能。
   
  共通表式
   再帰クエリのために利用されることが多い。

   階層構造のクエリ
   WITH Recursive ~

   CTE(再帰クエリ)
   Postgre、Firebirdではサポート
   MySQLはサポートしていない。
  
 HA(High Availability)
  
  ・レプリケーション
    MySQLの代名詞
    5.6でGTID対応。
    レプリケーションにおける、マスター・スレーブの構成は、あらゆる想像力を働かせて、さまざまに作成することが可能。
   
   レプリケーションとスケールアウト

   Postgre
    ストリーミングレプリケーションを9.0からサポートしている。

 それぞれどのような開発向けなのか。
  ・大規模開発
    ・商用エンタープライズSQL
  ・中規模
    ・MySQL
    ・Postgre
  ・小規模(組み込み)
    ・MySQL
    ・Firebird
     →組み込み用のEmbdded Libraryが提供されている。

 セキュリティ

 監査(Audit)

 暗号化
  Postgre
   TDE(透過的暗号化)
 
 クラウド
  MySQL、Postgreには向いている。
  それぞれ、拡張版が作成されており、それを利用することが多い。
  RDS for Aurora

  Postgre SQL互換を??
   Amazone Redshift
   大容量データ対応
 
 RDBMSと、それ以外では、当然向き不向きがある。
  トランザクション対応など