2019年07月31日

Kubernetesについて

こんにちは。
サーバプログラマのオカダです。
現在関わっているプロジェクトでKubernetesを使う事になりそうなので、その辺のところをお話します。

https://www.redhat.com/ja/topics/containers/what-is-kubernetes
「Kubernetesとは、Linuxコンテナの操作を自動化するオープンソース・プラットフォームのことです。」

そして、Linuxコンテナとは、システムの他の部分とは分離された一連のプロセスです。
https://www.redhat.com/ja/topics/containers/whats-a-linux-container
と、あります。訳が分からないですね。

さて、プログラムというのが何か、というと要するにデータを加工するものです。
その考えでいくとプログラムの簡単なモデルというのはこんな感じですね。
図1.png
しかし、これだけだと中でだけ完結してしまって何の役にも立たないから入出力を付ける訳です。
キーボードなりマウスなり、更にはディスクなりから入力されたデータを、
プログラムを通してディスプレイなりに出力する。
しかし、キーボードやマウスなどは付け替えることができますね?
別の機器に付け替えても問題なく使える、という部分は、簡単に言うと
WindowsなどのOSが受け持っているのです。
そして、複雑なプログラムなんかだと複数のプログラムが組み合わさって動作しているので、こんな感じですね。
図2.png
では、このプログラムの言うなれば「塊」をまとめて扱えるようにしたらどうなるか?
ここで、Linuxコンテナの話が出てきます。
イメージとしてはこんな感じでしょうか?
図3.png
この例に出てくる「入出力を管理するプログラム」はつまり、プログラムとOSの間に挟まって管理する事で、自身の上で動いているプログラム全体を管理する訳です。
入出力を握られると、中のプログラムにとっては一つのサーバマシン環境のように見えるので、ホスト側からはこの全体(1つのサーバ環境)自体を一つのプログラムのように扱えます。
つまり、「プログラムを一つ立ち上げるように」サーバを立ち上げる事が出来るようになるのです。

Kubernetesは、以上の技術を応用して、主にサーバプログラムを管理するものとなります。

Kubernetesのカバー範囲が広いので全てを1つの記事で説明する事は困難ですが
例えば、オンラインゲームを運用していると
期間限定イベントの開催などでアクセスが集中するような事があります。
アクセスが集中しても問題ないようにイベント期間中はサーバを増やしたい、
そのような時にKubernetesを使用していれば以下のようなマニフェストを発行します。

--------------------------------------------------------

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 30
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80

--------------------------------------------------------

replica: 30という行がありますが、
この行は「同様のサーバを30個建てる」というような意味合いになります。
その上、それぞれのサーバを監視して落ちた場合には
マニフェスト通りに30のサーバが再度立ち上がるように管理してくれるのです。
イベントが終了したら、replica: 3とでも修正して適用すれば
アクセスが無くなったサーバから落としていって3つだけサーバが立ち上がった状態、
つまりイベント期間外である通常の状態に戻してくれます。

このように数字を設定するだけで管理はKubernetesが自動で行ってくるので
容易にサービスを拡縮することができます。
この管理というのは、前述のようなサーバ監視部分であったり、
サーバを複数立ち上げようとした際のポートの管理であったりと実に様々なことが考えられます。
本来であればそういった点は自力でケアする必要がありますが
Kubernetesを導入していればある程度カバーしてくれるので
柔軟で堅牢なサーバ環境を構築できるのです。



以上Kubernetesについて一部紹介しました。
弊社ではまだ検証中のところはありますが既に様々な企業や分野で導入されています。
サーバプログラマを目指している方は知っておいて損することは無いのではないでしょうか。
それでは。

posted by byking at 17:05| 開発

2019年07月10日

UE4のデリゲートについて

こんにちは、プログラマのカコです。

今回はUE4のデリゲートについて紹介したいと思います。
と言っても初歩的な事ばかりなので
デリゲートをあんまり使ったことが無いという方に向けた内容となっております。
また、詳しい使い方はUE4の公式ドキュメントを見れば済むので
ここでは簡単な使い方や個人的な使用感を適当にかいつまんでお話します。
https://api.unrealengine.com/JPN/Programming/UnrealArchitecture/Delegates/index.html


・どんな場面で使うか。

実に多岐に渡り利用することができます。

例えば、プレイヤーの攻撃が当たった時を考えます。
まず攻撃が当たったとき用のデリゲートを用意します。

攻撃が当たったときに画面上にヒット表示を出したいとなれば、
ヒットくんをこのデリゲートに登録します。

190710@.jpg

これで攻撃が当たった時にプレイヤーは何も知らなくても
当たった!と発信するだけで勝手に画面上にヒット表示がでます。

190710A.jpg

与えたダメージを集計したい場合があるかもしれません。
その時もスコアくんをプレイヤーの同じデリゲートに登録します。

190710B.jpg

こうすることでプレイヤーは当たった!と発信するだけで
ヒットくんが画面上にヒット表示を出し、スコアくんが集計をしてくれます。

190710C.jpg

このように必要になった時に都度登録することで、
その時に誘発して発生する処理を簡単に呼び出すことが可能になります。
またこの時プレイヤーは発信しているだけなので勝手にデリゲートに登録したヒットくんやスコアくんの存在を知らずともそれぞれの処理を呼び出しています。

他にも攻撃を当てられたとき用デリゲートや倒されたとき用デリゲートなどが考えられます。
この時にこうしたいああしたいといった対応が必要になりそうな物はデリゲートにしておくと開発が楽になるでしょう。




・UE4のデリゲート
C#のデリゲートに似ている気がします。
宣言できる物が複数ありますがざっくりと以下のような感じです。

@ デリゲート
登録できる関数:1個
A マルチキャストデリゲート
登録できる関数:複数
B イベント
Aの発信できるクラス制限版
C 動的(マルチキャスト)デリゲート
@とAのブループリント公開版

大概はAのマルチキャストデリゲートを利用します。

ブループリント上に公開されるときは「イベントディスパッチャー」と表示されるので、
それに乗っ取り弊社では「On~EventDispatcher」という命名規則で宣言しています。
-----------------------------
AMyCharacter
// 攻撃が当たった時のイベントディスパッチャー宣言用マクロ
DECLARE_MULTICAST_DELEGATE(FOnHitAttackEventDispatcher);

// 攻撃が当たった時のイベントディスパッチャー
FOnHitAttackEventDispatcher OnHitEventDispatcher;
-----------------------------


この作成したキャラクターのイベントディスパッチャーにヒット表示用widgetの関数を登録します。
-----------------------------
UHitWidget
// 攻撃が当たったらヒット表示
void OnHitAttack();

// 登録
MyCharacter->OnHitAttackEventDispatcher.
AddUObject(this,&UHitWidget::OnHitAttack);
-----------------------------

あとはキャラクターが攻撃を当てたタイミングで、

OnHitEventDispatcher.Broadcast();

を呼ぶことでAMyCharacterはUHitWidgetの存在を知らずとも
UHitWidgetのヒット表示関数を呼び出せるようになります。

この作成したキャラクターのイベントディスパッチャーにヒット表示用widgetの関数を登録します。
-----------------------------
UHitWidget
// 攻撃が当たったらヒット表示
void OnHitAttack();

// 登録
MyCharacter->OnHitAttackEventDispatcher.
AddUObject(this,&UHitWidget::OnHitAttack);
-----------------------------

あとはキャラクターが攻撃を当てたタイミングで、

OnHitEventDispatcher.Broadcast();

を呼ぶことでAMyCharacterはUHitWidgetの存在を知らずとも
UHitWidgetのヒット表示関数を呼び出せるようになります。




・引数の追加
実行するときに引数を渡すことができます。

宣言用マクロの末尾に「_OneParam」や「_TwoParams」と追加することで任意の引数を渡すことが可能です。
先程の攻撃が当たった時のイベントディスパッチャーにどれくらいのダメージ量だったかを追加してみます。
-----------------------------
AMyCharacter
// 攻撃が当たった時のイベントディスパッチャー宣言用マクロ
DECLARE_MULTICAST_DELEGATE_OneParam(FOnHitAttackEventDispatcher, float);
// 実行
OnHitEventDispatcher.Broadcast(DamageValue);
-----------------------------
UHitWidget
// 攻撃が当たったらヒット表示
void OnHitAttack(float DamageValue);
-----------------------------

これでダメージの値を渡すことができるようになりました。
「_NineParams」まであるようなので他にも何か伝えたい情報が増えてもあと8個追加することができます。

当然このイベントディスパッチャーに登録した関数の引数も増やす必要があります。
もし数十種類のオブジェクトが関数を登録している場合、その数だけ引数を修正することになるでしょう。

こうなる前に引数が増えそうで登録数の多くなりそうだと予想されるイベントディスパッチャーの引数はクラスや構造体にしてまとめておくのがオススメです。
そうすればメンバ変数を増やすだけで済みます。
「_FourParams」辺りになってきたら実装を見直すべきかもしれません。




・その他小技
当然エンジン側の実装でもデリゲートが出てきます。
例えば以下は、アセットの非同期読み込みに利用されるデリゲートです。

DECLARE_DELEGATE(FStreamableDelegate);
FStreamableManager::RequestAsyncLoad(…,FStreamableDelegate DelegateToCall, …);

読み込みリクエストの関数の引数として登場し、読み込みが完了した時に任意の関数を呼んでもらうことができるようになります。
ただし引数無しデリゲートなので特に情報を渡すことができません。

例えば、読み込んだアセットを固有の整数型で管理していた場合、読み込み完了したことが分かっても何番のアセットが終わったかまでは分かりません。

エンジンのソースを変更して引数を追加してもいいですがそれも手間です。
そんなときは、登録時にCreateUObjectを呼ぶことで任意の引数を渡すことができるようになります。

-----------------------------
RequestAsyncLoad(…,FStreamableDelegate::CreateUObject(this, &FMyClass::OnComplete, AssetId),…);

// 読み込み完了
FMyClass::OnComplete(int32 AssetId);
-----------------------------

こうすればエンジンのコードに手を加えることなく独自の実装をすることが可能です。
覚えておけば役に立つ日が来るかもしれません。



・終わりに
以上かなり説明を省きましたがUE4のデリゲート紹介でした。
呼び出す側がオブジェクトの型を知らずとも任意の関数を呼び出せるということは、余計な参照を増やさずに済むのでデリゲートを使いこなすのはかなりオススメです。

UE4はデリゲート以外にもまだまだ便利な機能はあります。
公式ドキュメントや個人ブログなどUE4は情報が充実していますので
読み漁ってみては如何でしょうか。

それでは、また。
posted by byking at 17:30| 開発

2019年05月08日

プログラマ社内勉強会を行いました!

お初にお目にかかります、
プラネタリウムが好きなのに星座を全く知らない新人プログラマの とな です。

今回は、癒し系プログラマ&ディレクターの奥井さんに開催していただいた
社内勉強会「やりたいことがそのままコードになったように書いてみる」の様子をご紹介致します。

本勉強会は弊社が開発・販売しております絵本パズルゲーム、
でんしゃとれまる 〜れんけつでかいけつ!〜」の開発により得られた知見から
役に立った知識や技術を共有する勉強会となっております。

主な内容はUniRx、コルーチン、LINQ、DoTweenの技術紹介です。
新人で分からないことも多く、勉強会への参加経験もなく不安でしたが
興味のある内容だったので、当たって砕けろ!と思って参加してみました。

1905081.jpg

結果としては参加して本当に良かったです!!!

説明はとてつもなく分かり易く、例として挙げられたソースコードも読みやすいもので
終始「これすごい!」「わかる!!」「ここは昨日先輩に教えてもらったところだ!」
といった感想も持つことができました。
UniRxを使い日本語的な並びで処理が書かれているサンプルコードを見たときは処理の流れが一目で理解しやすくなっており特に感動を覚えた瞬間でした。


1905082.jpg

===============================================

さて、新人の自分でも分かり易い説明の秘密が気になったので奥井さんに突撃インタビューしたところ、
今回のプレゼンで気にかけたのは「技術紹介」ということを考慮して、

・たくさんある機能の中からゲーム開発に役立つものをピックアップした
・深すぎる説明は省き「この機能を使うとこれができる!!」を意識した
・ゲーム開発に応用したときのメリット/デメリットを洗い出し説得力を増した

といった点が秘訣だそうです。

この秘訣は勉強会だけではなく日常生活でも応用できそうで、
普段から意識していきたい!と思えるインタビュー結果になりました。

===============================================

入社してまだ日が浅い私ですが今回教えていただいた秘訣しかり、他にも様々な秘訣を持っている方々がいらっしゃるはずと思うとこれからとてもワクワクしますね。
私事、仕事関わらず秘訣をお持ちの方がいましたらいつでも伝授をお待ちしています。

それではまた!



お知らせ!

5月10日(金)発売のCGWORLD vol. 250(2019年6月号)
弊社が開発に携わりました「星と翼のパラドクス」の記事が掲載されます!
UE4を駆使した迫力のあるグラフィックについて紹介されておりますので
ぜひともお見逃しなく!

1905083.jpg
posted by byking at 18:19| 開発

2018年06月28日

企画マンの仕事

こんにちは。

バイキングは10周年、自分は入社5周年、すっかり中堅企画マンのノグチです。
まだまだ若いです。若い。
同期には容赦なくいじられるようになり、昔のよそよそしさ、新鮮さが懐かしいです。
どうしてそうなっちゃったの、、、。

さて今回は、企画マンってどんなことしてるの?という部分を書いていこうと思います。
とはいうものの、会社、人などによってやり方は千差万別、
あくまでもノグチは大体こんな感じ、という内容です。

・企画書の作成
 新しいゲームの企画書を作成します。
 バイキングでは職種問わずに行っています。
 実際に動き始めたプロジェクトにアサインされた場合は、記載された企画書を
 確認し、ゲーム&プロジェクトのコンセプトをつかみます。


・ゲームの概要作成
 企画書をもとにゲームシステムなどの概要をイメージ、作成していきます。
 例えば「超絶速いゲーム!」というコンセプトのゲームなら

 ・超絶速い!部分の達成方法    :ダッシュが速い、ワープするなど
 ・その仕組みの中でのゲームルール :対戦ゲームなら駆け引き、対戦のルールなど

 大まかなゲームでの立ち位置を決めていく感じです。
 企画マンとして、

 ・このロジックなら面白いはず!
 ・このアクションなら絶対かっこいい!

 という方針を決めていくようなイメージでやっています。


・仕様への細分化
 概要をもとに、こういう仕様が必要だな、と抽出していきます。
 上記内容を踏襲すると
 
 ・ダッシュシステムの詳細を考える必要がある
 ・ゲームルールの詳細を考える必要がある


・仕様書作成
 抽出したものを仕様書として作成していきます。
 書類はプログラマーさん、デザイナーさんに確認してもらうものとして
 書いていきます。
 
 ダッシュはゲージ制なのか?距離は?挙動はどんな感じなのか?
 といった部分です。
 
 破綻しないように何度も読み返してやっていきます。
 とは言ったものの試してみないと実際わからない、という部分もあります。
 実装する人の方針となるようなものとして作成していっています。


・ディレクターチェック
 仕様書を交えてディレクターにプレゼンし、企画意図に仕様が即しているか
 を確認します。
 GOが出れば実装、リテイクが入れば手直しします。


・各担当者とミーティング
 プログラマーさん、デザイナーさんと仕様書の読み合せを行います。
 実際にこの仕様は実現できるのか?どうやって実現していくのか、
 といった部分を詰めていきます。


・実装時の相談
 実装していく上で出てきた問題点などを実装担当者と相談しながら
 対応していきます。
 想定が甘かったりするとここで苦労します。
 出てくる問題点をどうするか、決断しながら進んでいきます。


・実装完了、確認
 実装完了したものを確認していきます。
 ディティールの修正依頼や数値調整などを行い、完成品へと近づけていきます。
 ディレクターも交えてこんな感じにやってきますかねーと話したりもします。


・完成
 できた!!ディレクターに完成品を見せに行きます。
 OKが出れば実装完了、リテイクが入れば手直しをやっていきます。
 

そのほかにもKPI分析、リスト作成、マスター入力などなどなどなど
まだまだ色々ありますが、大まかにこのような仕事のやり方をしています。

仕事の進め方、方法論はこれで決定版!というわけではないです。
日々改善、さらに新しい仕事をやっていくとやり方は変わっていきます。


いかがでしたでしょうか?
なんとなくでも、企画マンの仕事内容がイメージしやすくなっていただければ、幸いです。

ではでは。
posted by byking at 16:36| 開発

2018年06月22日

プレイヤープログラム

はじめまして、プログラマーの”おうじ”といいます。
バイキングの中では、結構な古参ですがこの度ブログデビューすることになりました!
よろしくお願いしますm(_ _)m


今までのお仕事としては主に
・ガンスリンガーストラトス
・Rise of Incarnates
・マジシャンズデッド
・星と翼のパラドクス
などのプレイヤー部分を作ってきました

今回は、僕なりのプレイヤープログラムに対する考えを書いていこうかと思います



では早速
皆さんは「キャラクターが10m移動する」と言われたときどんなものを想像しますか?

・棒立ちしているキャラクターが、モーションもなくスーッと移動する
・等速で歩いている
・等速で走っている
・立った状態から走り始め、加速していく
・海外アニメのように、一度体の重心を後ろに持っていき、勢いよく走り出す
・○ャンプ漫画のように、かっこいいポーズから「ドンッ!」と勢いよく飛び出し、最後はズザーーっと踏ん張って止まる

ズラズラ書きましたが、ぶっちゃけ言うと、特に正解はありません。

ですが、これだと話が進まないので
これまで感じてきたこと、やってきたことを元に、「僕なり」の正解を書いていこうかと思います


---------------------------------------------------------------------------------

はじめ プランナーの方から“こういうゲームを作りたい”と話を聞く際
・キャラが動く
・攻撃する
・ダメージを受ける
といった大まかなイメージが伝えられます

で、実際に これを作る となったとき
「動けばいいんでしょ?」「攻撃をすればいいんでしょ?」「ダメージを受ければいいんでしょ?」
といった考えで作り始めると、後々えらい目に会います
なぜなら、絶対に面白くならないからです



そこで役立つのが、今まで自分が培ってきたイメージや想像力ですね
あのアニメの戦闘シーン、あのゲームのシステム、あの映画の感動
それまでに自分が「かっこいい!」「気持ちいい!」「なんかよくわからないけど、いい感じ!」と感じたもの

それをこれから作るゲームで役立てたい!再現したい! みんなにこのかっこよさをわかってほしい!
だからこういうふうに作っていこう! という気持ちが重要になってきます


プレイヤープログラムに関しては、年齢や技術はそこまで関係なく
いいと思ったものを作り「ドヤる!」、みんなが「喜ぶ」、そして「嬉しい」それが一番大事

とは言うものの、初めはどんなにいいものを思いついても、どうやって作るか悩むと思うので
そこは経験の積み重ね、失敗することも必要ですね
失敗することもあるけど一度ゲームを「完成」させると、全体が見えて今度作るときは、こう作ったらいいかも
と反省が見えてくるはずです


---------------------------------------------------------------------------------


ということで、少し長くなりましたが 最初の質問に対する「僕なり」の答えは
・○ャンプ漫画のように、かっこいいポーズから「ドンッ!」と勢いよく飛び出し、最後はズザーーっと踏ん張って止まる
です
何故かと言うと、僕がこういう動きを「かっこいい」と思っているからです




他の人は、もちろん 僕とは違うものを見て触って生きてきたので
・棒立ちしているキャラクターが、モーションもなくスーッと移動する
が 「かっこいい」と思っていても正解ですし
実際に それをみんなに触ってもらって 「かっこいい」と感じてもらえたなら 大勝利です。

はじめに書いたように「僕なり」「自分なり」の感じ方が大切です
そういった「僕なり」が、バイキングで必要とされていて喜ばれるので
僕は今バイキングにいます


ということで、バイキングでプレイヤープログラムを作ってきた人間として
思ったこと感じたことを書いてきました。
もしこのブログを見て、僕の「かっこいい」をゲームで表現したい!
と思った方は一度バイキングを訪ねていただければ嬉しいです

そんな気持ちをぶちまけていただければ、バイキング的には大喜びです!
posted by byking at 16:20| 開発

2018年05月17日

開発の一コマ

みなさんこんにちは。

気づけば5月で、「5月病というものがあったな」というぐらいに
楽しくやっています企画のクリヤマです。


今回は、8月23日(木)に発売が決定しました
「僕のヒーローアカデミア One's Justice」開発の一コマをお見せしたいと思います。

今の時期はリリース2ヶ月前ということもあり、マスター版提出直前の追い込みの時期です。

そこで、今回は他プロジェクトの社員も招集して
「初心者でも分かりやすくなっているか?」や
「楽しく遊べるようになっているか?」を確認するチェックを行いました。

その模様についてお伝えしたいと思います。


チェックの方法はいたってシンプルで
実際にプレイして対戦をしつつ、思い思いのことを言っていきます。

ギリギリの熱い戦いになると、自然と仕事ということも忘れて
「おぉぉー」といった驚きの声や、「わぁー」といった歓声が上がります。
そこには、友達みんなとゲームを買って遊んだときのような姿がありました。

ブログ記事_画像.jpg


バイキングではゲームを作る上で
重要視している点として「プレイした瞬間の声」があります。


プレイ中に思わず言ってしまう、
「あー」といった落胆の声や
「火力出過ぎやろー」や「なんでここでコンボミスる?」といった声にこそ、
本当の意見が現れていると考えています。


これが、プレイ後になるとちょっと冷静になって
「よくよく考えてみると自分が下手なだけかもしれない…」となってしまい、
問題点である「コンボが繋がりにくい」といった意見がでてこなくなってしまいます。

また、「コンボが繋がりにくい」といった部分は、
開発が終盤になるにつれて開発側も慣れてしまい、なかなか気づけない点だったりします。

そういった初心者だからこそ気づける点を発見できる、有意義なチェックとなりました。

リリースまでの残りわずかな期間ですが、
一人でも多くの方に「おもしろい」と思っていただけるように
頑張っていきたいと思います。


最後になりますが
絶賛開発中の「僕のヒーローアカデミア One's Justice」は
バンダイナムコエンターテインメント様より、8月23日(木)発売予定です。

よろしくお願いします。
posted by byking at 16:00| 開発

2017年02月08日

勉強会で登壇!

こんにちは!
デザイナーの成相です。


今回は先日行われた
Unreal Engine4 DeepDive
(アンリアルエンジン4 ディープダイブ)
という勉強会で登壇したお話をします。

皆さんは勉強してますか?
僕達プロのゲーム開発者も毎日勉強してます。

ゲームを作る技術は日々新しくなっていて、
それを取り入れて面白いゲームにする為に、
常に勉強しながらゲームを作っています。


昨年バイキングがリリースした『マジシャンズデッド』は、
アンリアルエンジン4(以下UE4)という
ゲームエンジン(ゲームを作るソフト)で制作しました。

blog_ue4dd_1.jpg

バイキングも初めて使うものだったので全員初心者でしたが、
皆で勉強してゲームを作ることができました。
(今後もアップデートはガンガン行う予定です!)

そこで経験した内容を他の会社のゲーム開発者と共有して、
UE4使用者全員で技術を向上させようというのが
DeepDiveという勉強会です。


会場には日本中のゲーム会社から
100以上のデザイナーやプログラマーが集まる中、
バイキングから私とプログラマー鈴木が登壇しました。

blog_ue4dd_2.jpg

内容は専門的なものでしたが、
他の会社よりも先進的な内容も含まれており、
他社の開発者に共感や興味を持ってもらえました。


※勉強会で使用したスライドは公開されていますので、
 興味がある方はご覧ください。
http://www.slideshare.net/EpicGamesJapan/byking-ue4dd


このようにバイキングは
常に新しい技術を皆で勉強し、
時には他の開発者と協力しながら
面白いゲームへと昇華させていこうと思います!

今後もバイキングにご期待ください!
一緒に開発してくれる方も募集してます!

posted by byking at 17:15| 開発

2016年11月16日

プログラマー勉強会 ベクトルについて

こんにちは
約3年ぶりにブログを書くことになったBOSSこと石橋です。
久しぶりの出没ですが元気にやってます。


9月から不定期に行っている新人向けのプログラマー勉強会ですが
今回は私が解説役を行うターンが回ってきまして
周囲からチョイチョイと要望のあった「ベクトルについて」の勉強会を開くことになりました。
ベクトルは至る所で使用するので今回は基礎的な部分の解説を重点的に行いました。


その内容を簡単にまとめますと
・ベクトルの説明
そもそもベクトルとは何か
どんな時に使うのかを解説

・ベクトルの計算
ベクトルの長さや正規化の方法、2点間の距離の求め方など
よく使うことになる計算式を解説

・内積、外積の使い方
内積、外積とは何か
公式や実際にプログラミングする際にどのようなコードになるか解説
また、説明の合間に実際のゲーム内での使用実例を紹介しながら解説していました。
例として適切な箇所のソースコードが選べているか少し心配でしたが、結果的に新人にはうまく伝わったようで安心しました。


普段からよく使用するベクトルですが、
いざ解説となると、まとめるのが難しい…
そもそもの自分の知識が間違っていないか資料を調べたり、
解説文章と実際に作成したソースコードを1つのスライドにまとめたり、
内積や外積に関しては文章だけで説明するのが難しかったので簡単な図を用意してみたりと
出来る限り工夫してみましたが、勉強会の解説役をするのが初めてだったこともあり、資料作りでかなり時間が掛かりました。
↓実際に使用したスライドです。
スライド.png


勉強会は一応は新人向けとなっていますが、毎回ちょいちょい先輩方も顔を出してくれます。
が、今回は何故か普段の倍近く先輩方がいらっしゃって会議室が満員状態に…
そのおかげでなかなかの緊張感のある中での勉強会になりました。(緊張しすぎてところどころ噛みましたが…


勉強会中は一部スライドにうまく図が表示されない等のトラブルがあったものの無事終了しました。
これで後輩たちもベクトルをうまく使ってくれるだろう…


入社して3年が経ち、後輩も結構増えてきましたが
追い越されないようにまだまだ頑張らないとな!
と感じた勉強会でした。


それでは、またの機会に
posted by byking at 16:37| 開発

2016年09月06日

プログラマ勉強会『constを使おう!』

こんにちは!

4年目(新人と中堅の狭間)プログラマーの「まう」こと山内です。
今回は、自分と同期の河村とで新人プログラマ向け勉強会を開くことになったので
そのことについて紹介したいと思います!

勉強会のテーマは新人に向けて伝えたい事ということだったので「Constを使おう!」に決定!

constって基本的には使わなくても動いちゃうので新人の頃はなかなか使わないんですよね・・・。

自分自身がそうだったんですが、学生の頃から全然constを使用していませんでした。
(そもそもconst関数とかmutableは会社に入ってから知りました。 勉強不足ですみません・・・。)
では「Constを使おう!」の勉強会でどんな事を話したか簡単に紹介します!

まず機能の説明。
・変数にconstを付けた場合
ポインタ変数にconstをつけた時を重点的に説明。

・関数にconstを付けた場合
const関数の使い方。
const関数とは?

・mutableなどの機能について
 使う場合の注意点など。

実際にどういう場面でconstを使っているか(重要)
基本的に関数内でメンバ変数に対して書き込みしない場合。

引数や戻り値で参照やポインタを使う場合、参照先への書き込みを「させたくない」or「しない」場合。

書き込みする場合でも、書き込みしない(参照のみ)場合もあるなら書き込み禁止の関数も用意して使い分けをしてもらう。
const Value* getValue()const{ return m_pValue; }
  Value* getValueWrite()const{ return m_pValue; }

などなど。
constの使い方、良いところや注意点などをまとめて伝えました。
(ついでに参照やポインタに関しても)

constって一口に言ってもいろいろあるんですよね・・・。
勉強会なんで、説明することが多くてみんな最初は真面目に黙って聞いていましたが
最後には、みんなであーだこーだ議論してました(笑)

今回、初めて勉強会で説明する側になって資料を作るために調べると今まで知ってるつもりだった部分が間違いだったりと、
人に教えるつもりが自分の勉強みたいになっちゃいましたが
新人たちもconstを使うきっかけになってくれたかなと思うとやって良かったなと思います!

自分にとってもいい機会になった勉強会でした。

(勉強会の風景)
IMG_1206.JPG


それではー。

posted by byking at 12:24| 開発

2015年10月21日

UNREAL FEST 2015

どうもはじめまして、
バイキングのプログラマ『ナッシュ』です!
こんなコードネーム使ってますがふつーの日本人です:-)

自分は絶賛稼働中のオンラインゲーム
「ガンスリンガーストラトスリローデッド」の開発に携わってますので
皆さんよろしくお願いします!
●ガンスリンガーストラトスリローデッド
http://gsreloaded.jp/

さてさて今回は先日横浜で行われた「UNREAL FEST 2015」に
参加した事について語っていきます!
20151018_064821877_iOS_s.jpg

20151018_065123701_iOS_s.jpg

今ゲーム業界で話題沸騰中のUnrealEngine4(以下UE4)ですが
バイキングでも目下研究・開発を進めております。

自分もつい最近UE4をさわり始めたばかりですが
この度先輩からこのイベントの事を教えてもらい行ってみる事にしました。


イベント当日、日曜朝9時半にもかかわらず
会場には多くの人が並んでおり
このイベントの注目度の高さが伺えました。

株式会社ヒストリア代表 佐々木様の講演によると
UE4を採用している会社は日々増しており
大規模ゲーム、中規模ゲームをはじめ
モバイルゲームにもUE4を使ったタイトルは増え続けいくとの事です。
また今年3月にUE4が無料で使えるようになった事で
個人製作のゲームも急増中!

大企業でも使われている開発エンジンを
個人でも入手できるようになるとはすごい時代になったものです!

フリーランス 中村様の講演では
マルチプレイネットワークゲームの開発を実演を見せていただきました。
ブループリントを使用し簡単にネットワークゲームを作っていく様はまさに驚愕!
こんな簡単に作れてしまっていいのかと思えるほどのお手軽さでした…!

UE4を使う事で誰でもゲーム作りが簡単にできるようになり
それによりゲームの洗練に費やせる時間が増える事で
今まで以上にユニークでユーモアあふれるゲームが生み出されるのが期待できます。

そんな中で自分たちバイキングもそれらに負けない
面白いゲームを作って皆さんを楽しませられるよう
日々精進していく所存です!

ではまた!
posted by byking at 15:28| 開発

2015年08月26日

社内でモーションキャプチャを撮ろう!(撮影編)

第1回:気軽にモーションキャプチャしたい!
第2回:社内でモーションキャプチャーを撮ろう!(準備編)

前回に続きまして、モーションキャプチャの撮影編です。
今回は新しいもの大好き!プログラマの奥井が説明致します。

●検証初日、Wii3つカメラ8台で検証を行いました。結果、
Wii.jpg
て、手が変な方向をむいてる!!何事も初めからうまくはいなかいものですね。
ドキュメント(英語)をひたすらGoogle翻訳に突っ込んで読んでみると
どうやらWiiは録画開始方向からの相対座標で記録されており、PsMoveは
北方向を0度とする絶対座標で記録されるらしい。ということで、PsMoveの方が
精度がいいらしい!はじめに読んでおけばよかった。

●検証2日目、奇跡的にPsMoveが見つかったのでPsMoveとカメラ6台で検証しました。
なぜ6台かというと、試用版では6台までしか対応してないことが発覚したからです。
Pro製品は16台まで対応しているそうです。
そして完成した前田氏Mk-IIがこちら。右手に光るPsMove!かっこいい!!
IMG_7200.JPG
この日は順調に撮影をすすめていたのですがダウンモーションの撮影時に前田氏が負傷、
床が思ったより固く膝をついた時に青あざができてしまいました。
気がつかなくて申し訳ないです。

●検証3日目、前日の反省を踏まえてマット(布団)を借りてきました。
なぜ社内に布団があるのかは深く突っ込まないことにします。
トレース処理中がこちら


完成してゲーム内のキャラクターで再生したものがこちらです


●検証結果
・光学式に比べて精度が低いためゲーム用に編集する時間がかかる。
編集作業のコストのことを考えるとキャプチャースタジオを借りたほうが良さそう。
・場所の確保が難しい。
 広いスペースが必要で常設することができないので毎回セッティングに時間がかかってしまう。
・機材がとても安いのでコストパフォーマンスがとても良い。

●まとめ
やはり新しいことにチャレンジするのはとっても楽しいです。
良いゲーム作りは良い環境からと思うので今後もいろんなことに手を出していこうと思います。

モーションキャプチャの検証はこれからも続けていこうと思います。
それではまた〜。
posted by byking at 12:17| 開発

2015年08月19日

社内でモーションキャプチャーを撮ろう!(準備編)

コンニチハ。
バイキングでモーションを担当している前田というものです。

先月、ブログでも紹介しました「気軽にモーションキャプチャーがしたい!」とのことで社内会議室を使用して撮影を試みました。
この時はカメラの数も少なく準備も不十分だったためデータの精度は今ひとつでとりあえず撮れることを確認…というところで終わりました。

前回の結果から、もっとちゃんと環境を整えて撮ったらどこまで精度が上がるのか?
という検証がしたいので再び「新しいもの好きプログラマの奥井」とともに社内でモーションキャプチャー撮影に挑みます。
(ソフトも引き続きDesktop MOCAP iPi 3を使用します)

今回からその様子をお伝えしたいと思います。

まずは撮影場所。
会議室では撮影範囲がかなり狭かったのでより広い場所を確保、そこに前回より5台増やして合計8台のPS Eyeカメラを設置しました。BB0819_01.jpg

服装もデータの精度アップのため体の部位によって色を変え、
タイトなものを着用しました。
BB0819_02.jpg

更にwiiリモコン(wiiモーションプラス)のジャイロセンサを使用することで頭と手首の動きをより正確に撮ることができるとの情報を聞いていたのでこれも試してみます。
BB0819_03.jpg

頭にどうやって装着するか試行錯誤中…
(通りすがりのデザイナーに協力してもらい固定方法を考えています)
BB0819_04_02.jpg

wiiリモコン3つを装備した状態。
見た目がちょっとおもしろい感じになってますが気にしません!BB0819_05.jpg

とりあえずこれで準備が完了しました。BB0819_06.jpg

次はいよいよ撮影なのですがその内容は次回に…
それではまた〜

posted by byking at 16:08| 開発

2015年07月15日

気軽にモーションキャプチャしたい!

お久しぶりです。新しいもの大好き!プログラマの奥井です。
今回はバイキングで行っている新しい試みを紹介したいと思います。

それは簡易モーションキャプチャシステムの導入です!
ゲームで使用されるモーションキャプチャといえば専用の大きな施設でプロのアクターさんに演技してもらうものなのですが、ちょっとこういうアクションを試してみたいな、なんて時に気軽に撮影できるものではありません。

そこで、社内に簡易モーションキャプチャシステムを構築することになりました。
自分の動きでキャラを動かせるようになるなんてワクワクしますよね!!
昔居合をやっていたので刀を使った格闘アクションとかやってみたいな!


ソフト:Desktop MOCAP iPi 3
カメラ:Playstation Eye 3台

capture00.JPG
会議室の机をどけてカメラを設置!

capture01.JPG
カメラはなんとPlaystationEye!安い!

capture02.jpg
実際に動いてもらいました。

精度がそこまでよくないので細かいアクションには向かないですが
環境をちゃんと整えれば使えそうです。
今度はカメラを8台に増やしてやってみようと思います。
posted by byking at 23:31| 開発

2015年06月17日

エフェクトって美味しいの?


どうも初めまして。
バイキングでゲームのエフェクトを担当している武です。
blog_00_みく2.jpg

さて、一口にエフェクトと言いましたが、
皆さんエフェクトって何かご存知でしょうか?

ゲームの中で爆発が起きたり、光が出たり、
ガンスリンガーストラトスでは銃で弾丸を発射したり・・
ゲームでは外せない効果がいっぱいありますよね。

そんな攻撃や演出に関わる効果や、時には中二な心を湧き立たせる必殺技などを作成する、それがエフェクトです。
今回はそんな裏方的なポジションであるエフェクトの解説をしていきます。

@ BISHAMON
「ガンスリンガーストラトス」、「Rise of Incarnates」ではBISHAMONというツールを使ってエフェクトを作っています。画面1.jpg

画面2.jpg


何かややこしい感じの作業画面ですが、
横のごちゃっとしたとこで真ん中の爆発の制御をしている感じです。
ノリと勢いとロマンで、最終的にこんな絵になったらいいな〜と妄想しながら形にしていきます。


A Unreal Engine4

Unreal Engine4についてはエフェクトマイスター岩崎が説明していきたいと思います。

現在バイキングで絶賛開発中の新規タイトルではUnreal Engine4を使用していて
その中のカスケードと呼ばれるシステムを使用してエフェクトを作成しています。
blog_02_カスケード画面.jpg
■スッキリした画面構成でけっこう使い易いです。(上図)

blog_03_シェーダー画面.jpg
■マテリアルを自由にカスタマイズできるのが最大の特徴。(下図)

これらのツールを駆使して、
日々独創的かつ見た目にも楽しいエフェクト作りに励んでます☆
ちなみに、Unreal Engine4は無料でダウンロードできますので、
ゲーム制作に興味のある方は是非チェレンジしてみてください!


おまけ・・・

バイキングデザイナーの最近のプチブームはお菓子。
机の引き出しがすごいことに(汗)

blog_04_お菓子.jpg
posted by byking at 18:02| 開発

2015年05月19日

背景屋のお仕事

はじめまして。
背景屋ことゲームの背景制作を担当している
(自称)敏腕アーティストの成相です。
(※名刺にも「敏腕アーティスト」と書いちゃってる痛い男です。)

皆さんに質問です。
ゲーム画面に必ず映っているものは何でしょうか?

・エフェクトですか?
>弾や魔法を使わない時ありますよね。

・UI(弾数や体力ゲージ等)ですか?
>攻撃をしない時はUIを出さないゲームありますよね。

・キャラクターですか?
>FPSの探索シーンでは自分も敵も映りませんよね。


どんな時でも画面に映っているもの、それは背景ですっ!…たぶん。
(勿論ゲームには全て必要ですよ。)

そんなゲームの背景を作るのが僕のお仕事ですが、
今回はどんな風に作っているのか簡単にご紹介しますね。


【@取材】
作るゲームの背景が
実際の世界にある場所が参考になる場合、
カメラ片手に現地取材に行きます。

バイキングが開発している「ガンスリンガーストラトス」シリーズなどは
実際の都市をバトルステージにしているので勿論取材に行きます。

「渋谷」「大阪」「北海道」などなど、良い背景を作るためなら何処までも!
blog_stage_01.jpg


【A参考資料】
実際ある街を作る場合は余り必要ありませんが、
架空の世界を作ることも多々あります。
そんな時は勿論ゲームに合わせて設定や構造を考えますが、
足りない部分はさまざまな資料を参考にします。

なので僕の周りには参考資料は大量にあります!

参考資料はデスクの上にもっ!
blog_stage_02.jpg


引き出しの中にもっ!
blog_stage_03.jpg


会社の棚にもっ!
blog_stage_04.jpg

さすがに多すぎる感もありますね…。
でも資料集めは殆どライフワークになってます。


【B制作】
そしていざステージ制作です。
取材写真や資料を元にMAYA、Photoshop、Zbrushなどなど
各種ツールを使って頑張って作ります!

blog_stage_05.jpg

(一番大事な制作手順の説明がテキトー過ぎる…)

そんなこんなで苦労して制作しているのがゲームの背景なんですっ!

とは言え、実際のゲームではやっぱりキャラクターに目が行きますよね?
いいんです…背景は所詮背景ですから…フフフ。(遠い目)

でも皆さん、ゲームをプレイする時は
キャラクターの裏に映る背景も苦労して作っている背景屋がいることを
心の片隅に置いてくれると嬉しいです。

そんな背景屋の心の叫びでした。
ではでは。
posted by byking at 15:58| 開発

2015年03月18日

〜とあるモーション班の一日〜

コンニチハ。
バイキングでモーションを担当している下田です。

今日はバイキングのモーション担当が、どんなことをしているのか
さらっとご紹介。



・備品の引っ越し
モーションを作る時に、動きの確認などで使用する鏡。
大事な大事な、ミラクルアイテム!
チョット手狭になってきたので、今日はそんな鏡のお引越し。
鏡をみんなで協力して外します。
motion_00.JPG

取り外したので、みんなで運びましょう。
他の備品(武器)もしっかり運びます。
motion_01.JPG

鏡の引っ越し完了!
ちゃんと映るか確認、確認。
motion_02.JPG
おぅ、ちゃんと映るねぇ。


・Rigの話し合い
モーションを作業するのに必要な、Rigについての話し合い。
みんなそれぞれ、好みやら考え方やら違うので、どうするのが一番いいか
意見交換です。
motion_03.JPG

「俺はこっちの方がやりやすい」
「それだとやりにくいから変えてほしい!」
「まぁ〜いいんじゃね?」
各々のこだわりがあって、
なかなか、意見がなかなかまとまりません。
motion_04.JPG
しょうがないので、強硬手段で決めました。


・ポーズについて話し合い
ゲーム中で使うモーションで、どんなふうに見せるのが一番いいのか、
みんなで意見交換です。
カッコイイ、パンチって何?
こうやって
motion_05.JPG

こうなって
motion_06.JPG

こうなる
motion_07.JPG
喧嘩してるわけじゃ〜ないよ。
一連の動きでも、どこを見せるかによって見栄えが変わってくるのです。
いろいろみんなで、実際に動いてみて研究!



こんなくだらない一日を毎日過ごしている、モーション班でした。
って内容のこんな物(ブログ)でも、ちゃんみんなで協力して作るモーション班なのです。

posted by byking at 11:08| 開発

2015年01月15日

たまにはゲーム会社らしい日記で!

超、超、ご無沙汰しておりました、バイキングのおっさんプログラマー稲田です。
もうすぐ東京にやってきて6年になります。早いものですね。
すっかり標準語で日記を書けるようになってしまいました。

今年からはもっと社内の開発の様子なんかも紹介していきたいなぁと思っています。

前回の日記でも開発中のタイトルをいくつか紹介しましたが、
社内では他にも新規大型タイトルの開発をスタートさせております!

そのタイトルの現在の開発画面を大公開しちゃいます!

gamen01.jpg
アクションゲームっぽいモーションですねぇ。

gamen02.jpg
ブループリントというビジュアルスクリプトを使います!

gamen03.jpg
キャラクターは人型で複数人出るのかな?

さて、わかる人にはわかってしまったと思いますが、
今回のタイトルはEpic Games社の「Unreal Engine 4」を使用しております!

現在はバイキングの開発ノウハウをUnreal Engine上で再現するための試行錯誤をしつつ、
新しいゲーム開発スタイルを模索しているところです。

まだまだ開発はスタートしたところですが、また面白い画面が出せそうになったら
ご紹介していきますね。

それでは今回はここまで。
では〜。
posted by byking at 16:40| 開発