開発備忘録【外伝 輪講編】第一弾


                 ≪ 目次 ≫          ≪ 次のPart ≫


おはこんばんちわ。大原です。
外伝ということで輪講で使った資料の投稿になります。
今回は、『UE4でCSVデータを扱う方法』について書いていきます。
続きを読む

cocos2d-xで見つけた新機能 Part2

おはこんばんちは!

GT2の組長こと鈴木翔也です!!

今日は前回の続きでcocos2d-xの新機能を紹介していきたいと思います。

今回紹介するのはこちら!!

SpriteBachNode!!

これはみんなが知らず知らずにやっているやってはあまり良くないことは解消することができます!!

なに? 良くないことって? と思うかもしれませんがそちらを紹介していきましょう!!

では今回はUnityちゃんを5人表示してみましょう!

まずfor文で5回回してSpriteを生成すると

こんな感じかな?

スクリーンショット 2016-08-02 14.04.14

結果

スクリーンショット 2016-08-02 14.04.35

こらーーーーーーーーーーーーーーーー よくない処理をやってるぞ!!

何かわかるか? そうSpriteでテクスチャを読み込むとファイルの中身までしっかり読み込みに行くんやぞ!! 重くなるやろうが!!

ということでした! んじゃどうすればいいのって思うかもしれませんがこれを解消してくれるのがSpriteBachNodeです!!

SpriteBachNodeとはファイルの中身の絵の情報をテクスチャにし、記憶しておくためのクラスです。

使い方は簡単!!

絵の情報を読み込んでSprite生成次に教えてやるだけ!! な! 簡単だろ!

使い方はこんな感じ

スクリーンショット 2016-08-02 14.28.59

見た目は変わらないがシューティングなど同じ敵をたくさん作るときはこれを使って描画スピードを上げたほうがいいと思う!!

cocos2d-xで見つけた新機能 Part1

おはこんばんちは!

GT2の組長こと鈴木翔也です!!

最近見つけたcocosd2d-xの機能を紹介していきたいと思います。

私が最近見つけた機能はこちら

globalZoder SpriteBatchNode

です!!

2回にわたってこの機能を紹介していきたいと思います。

まずはglobaZoderです。

ゲームプログラミングをしたことある人はZoderというものを聞いたことがあるかもしれませんがこれはそれの拡張版だと思ってください。

cocos2d-xの親ノードに依存するものでこのZoderは親ノードに依存しないものとなっております。

例えですが親ノードが二つあり、それぞれにZoderに0と1の値を入れておきます。

スクリーンショット 2016-08-02 13.23.21

ここにSpriteの子供を二つ追加します

そしてZoder 0の親にもう一つのSpriteより前に描画されるようにZoderに大きな値を入れます
スクリーンショット 2016-08-02 13.34.29

結果

スクリーンショット 2016-08-02 13.34.42

Unityちゃんが前に出るようにするためにZoderを大きくしたにもかかわらずHelloWoeldが前に描画されました。

このことから親のZoderに依存し、Unityちゃんの親のZoderよりHelloWorldの親のZoderが大きいため先に描画されたのがわかります。

さてここからが本題でglobalZoderとはこのいぞんとは関係なく描画してくれるというものとなります。

このglobalZoderは負、0、正の3つで構成されています。

これはあまりZoderとかわりありません。

このglobalZoderは何も設定していなければ0になります。

描画順は 負⇨0⇨正となっております。 これもあまりZoderと変わりません。

ではこのglobalZoderを使ってUnityちゃんを前に描画してみたいと思います。

UnityちゃんのglobalZoderを1にして

スクリーンショット 2016-08-02 13.48.25

いざ実行!!

スクリーンショット 2016-08-02 13.48.56

Unityちゃんが前に描画されました!! やった!!

このようにglobalZoderは親に依存せずZoderを決められるというものでした!

まとめ
親に依存しないため親のせいで前に描画、もしくは後ろにびょうがされているものを前に持ってくることができます。

しかししっかり管理しないと前で描画したいものも一緒に後ろにやってしまうことがあるので注意が必要です。

C++でJsonを使うための物の紹介

今日はC++でJsonを使ってみたいと思います。
実はcocos2d-xには標準でJsonを読み込むものがあるのですが今日はDirectXでも使えるpicojsonというものを紹介していきたいと思います。

まずJsonがなんなのかわからない人は先輩の過去の投稿をご覧ください。

http://www.trident-game.com/blog/2015/10/14/【輪講】jsonの書き方/#comment-3

まずpicojsonとはKazuhoという人がJsonを読み込むために書いたクラスです。
C++でJsonを使うならこれを使う人が多いらしい。

githubリンク:https://github.com/kazuho/picojson

使い方として解凍したフォルダーの中にあるpicojson.hを追加するだけ!

使い方はいたって簡単でjsonファイルをfstreamで読み込んでpicojsonに入れるだけです。

C++でがりがり書く人はこれを使っている人が多いので一度使ってみるといいと思います。

【輪講】SourceTreeの使い方

こんにちは。SourceTreeをインストールの仕方と簡単に操作の仕方を書いとこうと思います。

まずSourceTreeって?

バージョン管理ツールのひとつ。

Gitだとコマンド(黒い画面)で操作しないといけないけど「コマンド操作嫌い!見たくないよ!」という人、いいのありますよ。SourceTreeならGitがコマンドじゃなくてGUIで直感的に操作できるよ。

SourceTreeを使うメリット

  • グラフィカルでわかりやすい操作画面(コマンド使わなくてもできる)
  • Windows/Macで使えるのでプロジェクト内でツールが統一できる
  • 日本語対応している
  • Gitに対応している

ということでダウンロード・インストールをしよう。

↓このサイトに行けばダウンロードできるよ。

https://ja.atlassian.com/software/sourcetree

あとは、指示に従って進めていけばインストール完了だよ。途中でAtlassianのアカウント登録する ある人はログインしてね。Githubやbitbucketのアカウントの登録は一応スキップもできるよ。

操作の説明をする前にバージョン管理で使われる基本的な用語について。

バージョン管理で使われる基本的な用語

  • リポジトリ ... バージョン管理対象のファイル群を保管するサーバー上の枠のこと

続きを読む

VPSを契約してサーバを構築する環境を整えよう

・契約するVPSサーバを決めよう

サーバ仮想化の種類を確認

KVM
今現在のVPSで主流のLinuxカーネル仮想化基盤
とりあえずKVMのVPSを選んでおけばいいと思う
OpenVZ
一時期格安VPSで人気だったサーバ仮想化ソフト
ディストリビューションの最新版への対応が遅い。
Hyper-V
Microsoftが提供するWindowsサーバ向け仮想化システム

代表的なKVMのVPSサーバ

さくらのVPS
さくらVPS
サポートが手厚い

お名前.com VPS
お名前VPS
有名なVPS中では比較的安い料金
初期費用無料キャンペーンを常にやっている印象

代表的なOpenVZのVPSサーバ

ServerMans@VPS
ServerMans@VPS
初期費用が無料で、料金が安い
 
 

・利用するOSを決めよう

日本語での検索人気度の推移(2016/07/29日現在)

日本語圏トレンド

日本語ではcentOSのほうが検索されています。

英語での検索人気度の推移(2016/07/29日現在)

英語圏トレンド

英語圏ではUbuntuの圧勝です。

このデータを見れば、日本ではcentOS,英語圏ではUbuntuをサーバに利用する人が多い事がわかります。

利用者の多さ=公開されている情報の多さ
と考えると、centOSは日本語の情報、Ubuntuは英語の情報が多い事になります。

なので、日本語しか読めない人は、まずはCentOSから。
英語も読めるという方は、Ubuntuで初めてみる事をオススメします!
 
 

・SSHのセキュリティ設定(CentOS)

Rootアカウントでのリモートログインを禁止する

後からrootログインを禁止させるので、まず最初にsudoコマンドを利用できるユーザを作成しましょう

# useradd [ユーザ名]
# passwd [ユーザ名]

でユーザを作成します。

# usermod -G wheel [ユーザ名]

でsudoグループに作成ユーザを追加します。

~/usr/local/sbin/visudoのファイルの以下の部分を編集し、wheelユーザのみをsudo可能にします

#%wheel ALL=(ALL)   ALL
 ↓ 変更
%wheel ALL=(ALL)   ALL

~/etc/ssh/sshd_configのファイルの以下の部分を編集し、Rootでのリモートログインを禁止します

PermitRootLogin yes
 ↓ 変更
PermitRootLogin no

以下のコマンドを実行し、sshdを再起動します

# service sshd restart ← CentOS 5,6
# systemctl restart sshd ← CentOS 7

これでRootアカウントでのリモートログインが出来なくなりました。
今後は最初に作成したアカウントでログインして下さい。

リモート接続のポートをデフォルトの22番から変更する

sshのポートをデフォルトの22番のままにしておくとアタックされるので、
~/etc/ssh/sshd_configのファイルの以下の部分を編集し、接続ポートを変更します

Port 22
 ↓ 変更
Port ○○ ← ○○は1024以上の数字を入れる

Well-Knownポートを避ける為に1024番以降のポートを利用します。

sshdを再起動します

# service sshd restart ← CentOS 5,6
# systemctl restart sshd ← CentOS 7

これでssh接続ポートが変更されたので、アタックの数が減ると思います。

設定したポートでリモートアクセス出来るように、ファイアウォールでssh接続用ポートを解放します

[CentOS 7]
以下のコマンドでポートを解放します

# firewall-cmd –add-port=○○/tcp –zone=public –permanent ← ○○は先程変更した接続ポートの番号です

今まで利用していた22番ポートを塞ぐには以下のコマンドを実行します

# firewall-cmd –remove-service=ssh –zone=public –permanent

設定の再読み込みをして変更を反映させます

# firewall-cmd –reload

以下のコマンドで設定を確認し、servicesの行からsshが削除されていて、portsの行に変更した接続ポートの番号が表示されていれば、設定が成功しています

# firewall-cmd –list-all

[CentOS 5,6]
以下のコマンドでポートを解放します

# iptables -A INPUT -p tcp -m tcp –dport ○○ -j ACCEPT ← ○○は先程変更した接続ポートの番号

今まで利用していた22番ポートを塞ぐには以下のコマンドを実行します

# iptables -A INPUT -p tcp -m tcp –dport 22 -j DROP

変更を設定ファイルに保存します

# service iptables save

以下のコマンドで設定ファイルに変更が保存されているか確認します

# cat /etc/sysconfig/iptables

先程の2つのコマンドからiptablesを抜いた文字列が見つかれば、無事に変更が保存されています。

ファイアウォールを再起動します

# service iptables restart

以上でファイアウォールでのsshポート変更の設定は終了です!

 
その他にもログイン方式をパスワードから公開鍵認証に変更することなどで、より安全性を高めることができます。

手軽な料金のVPSを利用して、色々触って遊んでみましょう!

 
参考にさせていただいたサイト
UbuntuとCentOSどっちがいいの?正しいサーバOSの選び方 – lamichの日記 – 海外でイラスト制作を行う社長のブログ
VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定 | dogmap.jp

【輪講】Hansoftについて

プロジェクトのリーダーをする際、
必ずプロジェクトの管理や仕事の割り振り、スケジュールの管理が必要になってきます。

それらを可視化させるのが『Hansoft』です。

今回はこの『Hansoft』の導入から使い方を説明したいと思います。

まず、この『Hansoft』の優れている点について説明します。

『Hansoft』はゲーム開発者が自分達の開発を管理するために生み出されたツールです。
そのため、データベースの構造及びデータベースへのアクセス、
サーバーとクライアント間の通信について、速度とセキュリティを特に重視されています。

1.操作が軽い→ストレスフリー
『Hansoft』の操作は軽快で、かつCPUへの負荷も軽く、常時起動しても開発マシンへの目立った影響がない。

2.導入が速い→学習コストを考慮しなくてもよい
Windowsでも、OSXでも、Linuxでも、サーバーやクライアントのインストールはワンクリックで済みます。
直観的なインターフェースで、自分のやりたいことをすぐ開始出来ます。

3.複数の開発方法を併用する開発をサポート→1つのツールでプロジェクト全体を管理出来る
例えば、以下のような1つのプロジェクトに複数の開発手法が混在する場合であっても、
『Hansoft』だけでプロジェクト管理が出来ます。

・組み込み開発:ソフトウェア開発チームはアジャイル的に開発する一方、ハードウェア開発チームはガントチャートを利用している。
・ゲーム開発:ソフトウェア開発チームが反復で開発しつつ、デザインチームはカンバン方式で開発する。

『Hansoft』はアジャイル開発プロジェクト管理をサポートすることはもちろん、従来のガントチャートを用いたプロジェクト管理にも対応出来ます。

4.多言語対応→多国間の共同開発をサポートする
ユーザーは自分の好みによって、インターフェースを英語、日本語、中国語の中から選ぶ事が出来る。

以上がHansoftの基本的な機能と特長です。

実際に私が調べた使い方をご紹介します!

まずはHansoftのインストールと設定です。

今回の説明はWindowsOSにおいての説明となります。

まずは、

Downloads


でソフトをダウンロードします。

rinkou1

Hansoftは9名まで無料で使用出来ます。
作業をするパソコンをサーバーにする場合、サーバーとクライアントを一緒にダウンロードできる
「All-in-One Small Team Edition」の「Installer for Windows」をクリックしてダウンロードして下さい。

但し、この場合ホストの人のパソコンの電源を落としてしまうと他の人も使えなくなってしまうので微妙です。

常時起動出来るサーバー用パソコンをサーバーとして使用しましょう。
その場合、「Server」の「Installer for Windows」をクリックしてダウンロードして下さい。

その他ホストにならない方は、「Client」の「Installer for Windows」をクリックしてダウンロードして下さい。

今回は「All-in-One Small Team Edition」についての説明を行います。
ダウンロードした「Hansoft Trial 9.1047.exe」ファイルを起動します。

ドロップダウンを「日本語」→OK→次へ→同意する
→ホストとなるPCを使ってる方はドロップダウンを「すべて」
他の方は「クライアントのみ」にし次へ→次へ→インストール→インストール完了後自動的にHansoftが起動されます。

この自動的に起動されるソフトはクライアント側ですので、
まずはそっと閉じましょう。

スタートからすべてのプログラム→Hansoft→Hansoftサーバー管理を起動します。

無題2

サーバー管理のほうはサーバー管理者と書いてあります。

Hansoftサーバーにホストとなるコンピューター名を入れます。
(学校で使うならPCに貼ってあるシールの名前を入力して下さい。)

ポートに関しては最初から入力されている「50256」のままで大丈夫です。

接続→このサーバーを信頼しますをクリックします。
管理者パスワードを聞かれるので「hpmadm」を入力しサインインします。

無題

無事サインイン出来ると上の写真の画面が出てきます。
画面を見てもらうと分かりますが、新しいデータベースを作成出来たり、
データベースの削除を行えたりとサーバー関連の処理はここで行います。

次にクライアントを起動します。
スタートからすべてのプログラム→Hansoft→Hansoftクライアント

サーバーと同様にHansoftサーバーを入力し、ポートはそのままで接続します。

ユーザー名とパスワードを聞かれますが、
まだユーザーを作成していないので管理者としてサインインします。

ユーザー名「administrator」パスワード「hpmadm」と入力しサインインします。

無題1

サインイン出来ると上の写真の画面が出てきます。
まずは他の人がサインイン出来るようにユーザーを作成していきましょう。

ちなみにですが、先程説明した通り「All-in-One Small Team Edition」を使用すると、
9名までしかユーザーを作成出来ません。

さらに最初から3名作られていますので、必ず削除して下さい。

無題3

削除したら「新規ユーザーを作成」をクリックし、新しくユーザーを登録していきます。

無題4

「名前」は本人の名前を入力すると他の人が分かりやすくなります。
これがそのままサインインする際のユーザー名となります。

パスワードは全員まずは簡単なもので一緒にしておきます。
セキュリティ部分で「ユーザーは次回ログインの際にパスワードを変える必要があります」にチェックを入れましょう。

あとは各チームごとにルール決めをしてチェックを入れて下さい。

無題5

ユーザーグループは私達のチームではProjectSEEKER、プランナー、プログラマー、デザイナーで分けて各ユーザーに設定しています。

ユーザー登録が終わったらクライアントをダウンロードしたプロジェクトメンバーもサインイン出来るようになります。

ここからプロジェクトの管理の仕方になりますが、まだ使い方を全て把握出来ているわけではないので分かっている部分だけ説明します。

まずはプロジェクトの作成を行います。

無題ww

まずは上の写真の1番、先程はユーザータブでしたが今度はプロジェクトタブに変更します。
変更したら2番、新規プロジェクトの作成をクリックします。

無題aaa

まずはプロジェクト名を入れます。
Projectゲームタイトル みたいな名前にするといいと思います。

新規ユーザー向け標準モードを今回はアジャイルを使用にチェックします。

メソッドテンプレートをスクラム、スケジューリングメソッドを「固定期間」メソッドを使用(推奨)を選びます。

タスク完了メソッドは予定タスクの完了表示にステータスカラムのみを使用にチェックをします。

全て設定し終わったらOKをクリックします。

ユーザーを追加するか聞かれるのでプロジェクトメンバー全員を入れましょう。

ユーザーグループを追加すると手っ取り早いです。

無題222

プロジェクトが作成されるとメインマネージャー部分で「メインマネージャーが選択されていません」と出ていますので、
ウィンドウ下部分でメインマネージャーを設定しましょう。

他にもメンバーの閲覧制限やプロジェクト履歴へアクセス可能かどうかの設定も出来ます。

無題3333

上の写真のプロジェクト:プロジェクト名を選ぶと、プロダクトバックログ、品質保証(QA)、プランニングタブが出てきます。

無題22222

無題444444

最終的にはこんな感じになってくると思います。
まだ使い方の勉強中ですので勉強しながら分かった部分をブログにあげていきたいと思います!

[輪講]cocos-2d-xで制作したゲームにGoogle Analyticsを導入して利用統計情報を取得する

アプリのシーン滞在時間やアクションなどの統計情報を取るためのGoogle AnalyticsをSDKBOXを使ってcocosのプロジェクトに追加する手順を紹介します。

GoogleAnalyticsのアカウント登録の説明は省略します。

・SDKBOXのインストール

以下のコマンドを実行する。

python -c “import urllib; s = urllib.urlopen(‘https://raw.githubusercontent.com/sdkbox-doc/en/master/install/install.py’).read(); exec s”

・自分のcocosプロジェクトにGoogle Analytics Pluginを追加する

Google Analyticsを導入するプロジェクトのディレクトリに移動します

図14

以下のコマンドを実行して、プロジェクトにGoogle Analyticsを追加します
sdkbox import googleanalytics

図15

導入に成功した場合以下の表示になっています
最後の行が “Installation Successful :)” となっています

図16

・GoogleAnalyticsにアプリを登録する

[アナリティクス設定]-[プロパティ]-[新しいプロパティを作成]をクリック

図10

モバイルアプリ・Googleアナリティクス開発者サービス SDKを選択し、アプリ名を入力

図6

業種とタイムゾーンを選択し、[トラッキングIDを取得]をクリック

図7

アナリティクス設定のプロパティ項目、[トラッキングコード]をクリック

図2

トラッキングIDをコピー

図13

コピーしたIDをトラッキングするcocosプロジェクトのResources内にあるsdkbox_config.jsonにペーストします

図17

・Google Developer Console と Google Analyticsのリンク

アナリティクス設定のプロパティ項目[すべてのサービス]をクリック

図1

Google Playの[リンク設定の変更]をクリック

図4

[新しいPLAYリンク]をクリック

図9

リンクするアプリを選択し、[続行]をクリック

図8

[リンクを有効化]をクリック

図5

[完了]をクリック

図3

これでGoogle Developer Console と Google Analyticsの紐付けが完了します

・ソースコードにGoogle Analyticsのセッションを開始する記述とログを送信する記述を埋め込む

AppDelegate.cppで”PluginGoogleAnalytics.h”をインクルードする
(SDKBOX対象ターゲットでのみ読み込む為に#ifdef SDKBOX_ENABLEDしておくことをお勧めします)

図18

アプリ起動時に実行される関数applicationDidFinishLaunching()でGoogle Analyticsの初期化をします

図19

ログを送信したい箇所があるcppでも”PluginGoogleAnalytics.h”をインクルードする

図20

シーンの初期化関数でシーンのログを送信することで、どのシーンでユーザが離脱しているかなどの統計が取れます

図21

ゲームクリアや項目の達成でイベントのログを送信することで、どのような項目をクリアや達成しているかの統計を取ることができます

図22

シーンやイベントのログの統計を取ることで、ユーザがアプリをどのような使い方をしているか知ることができます。

[輪講]GUIでプロジェクトの作成が可能なcocosの紹介

GUIでプロジェクトを作成でき、Cocos Storeからアセットのダウンロードが可能なcocos(正式名称)を紹介します。

・インストール方法
Visual Studio 2015を起動して、新しいプロジェクトからcocosをインストールを選択

図1

このような表示が出たらインストールをクリックします。

図2

次へをクリックします。

図3

しばらくするとインストールが終了します。
インストールが終了したら、デスクトップからcocosを起動し、Cocos StoreからCocos Frameworkをダウンロードします。

図7

Cocos Frameworkのダウンロードが終了したら、DownloadsのDownloadedタブからCocos Frameworkのinstallをクリックしインストールします。

図8

Cocos Frameworkのインストールが終わったら、プロジェクトのnew Projectをクリックしてプロジェクトを作ります。

図5

デフォルトのプロジェクトとさまざまなデモのプロジェクトを作成することが出来ます。

図6

画面の向きや開発言語を選択し、Finishをクリックします。

図9

プロジェクトが作成されるとCocos Studioが起動します。(スクリーンショット撮り忘れました。。。)

画面構成がCocos Studio、その他のコーディングは従来通りIDEを使用することで、効率良く開発ができると思います。

Cocos Studioから実行したプロジェクトファイルは画面のキャプチャやスクリーンショットが撮れるので、PV制作の際には役に立つと思います。

図12

※この手順でインストールされるcocosはver2.3.3で最新β版のver3.10ではありません(2016年6月2日現在)
アップデート通知が表示されることがありますが、ver3.10βはCocos Storeなどがありませんので、アップデートしないことをお勧めします。

C++コードをUE4で書いてみる。

お久しぶりです!!

最近うっかり更新するのを忘れていました。

今回はUnreal Engine4でC++のコードが書けると聞いたので、そのことについて、
書いていきます。

Unreal EngineではC++を」書く場合、手順があります。

まずはプロジェクトを作成します。(今回はSide Scrollerを使用)

プロジェクトを作ったら、UnrealEditorのメニューから「New C++ Class…」
を選択します。

無題

すると親クラスの選択が来ます。 続きを読む