工大祭が近づいてきました

お久しぶりで恐縮です。hetareです。

今年も工大祭が行われます。

C3は今年は模擬店にお好み焼きとゲソカラを出品します。

C3の模擬店の場所は↓の場所になっています。

当日は1年生がomotenashiをしてくれる筈のなので皆さん是非お金を落として立ち寄って行ってください。

また、サークル展示ではC3部員が1年間で作ったゲームを展示しています。

今年はCGJがあまり行われなかったので数は例年より少なめですが、その分楽しいゲームが勢揃いしています。

サークル展示会場は講義棟1階の1104講義室となっておりますのでお気軽にお越しください。来て下さった方を対象に展示しているゲームを収録したディスクを配布しているので欲しい方は是非どうぞ。

工大祭で皆さんとお会いできることをC3一同心から楽しみに待っています。

追伸:
全C3部員各員に伝達

進捗どうですか?

【初心者向け?】ゲームプログラムの実装手順

性懲りもなくまた書きます。hetareです。

夏休みも佳境に入って部員たちもゲーム制作などに精が出ていると思われます今日この頃ですが、いかがお過ごしでしょうか?

今年入部した新入部員の方々の中にはもしかしたら「前期にプログラムの基礎を勉強したけど、実際にどうゲームを作るのかが分からない・・・」と言う方がいらっしゃるかもしれません。

そこで今回は実際にプログラミングでゲームを作っていく際の実装手順について簡単に書いていきたいと思います。別にこの手順に従わなくてもゲームは作れますが、どうしても分からないと思った時はこちらを参考にしてみて下さい。

ざっと書いていくとゲーム制作の手順はこんな感じです。
全部書くとキリが無いので取りあえずメインとなるゲームのシーンを作るまでです。

①ウィンドウ生成

②画像を表示(確認)

③フレームレート制御

④ダブルバッファ

⑤キー入力取得

⑥ゲームシーン

⑦メインのゲームシーン

どうでしょうか?メインを作るまでに結構手順が多くてめんどくさく感じるかもしれません。実際めんどくさいです。ですが、一度これを書いてしまうと次にゲームを作るときにコードを使いまわすことが出来、二度と書く必要が無いので頑張りましょう。
ではそれぞれ簡単な説明をしていきます。

①ウィンドウ生成
ウィンドウを生成します。GUIベースのゲームには必須ですね。
この部分は開発環境によって方法が異なります。自分の使用している言語に合わせて実装しましょう。環境によっては最初からウィンドウが生成されたりします。素晴らしいですね。

②画像を表示
そのまんまです。用意した画像を生成したウィンドウに表示させちゃいましょう。ただの確認用なので変数は割と適当でもいいかもしれません。この際覚えておいてほしいのはウィンドウ上の座標は左上が原点となっていることです。後々メインを作る際にかなり使います。覚えましょう。

③フレームレート制御
フレームレートを制御します。俗に言うfpsとか言うあれです。
fpsってなんぞ?って方はこちらあたりを参考にしてください。
個人的にはここが一番めんどくさいです。頑張りましょう。

④ダブルバッファ
キャラクタの移動アニメーションなどを滑らかにするためにダブルバッファを実装しましょう。こちらも用語が分からない方はここなどを参考に。

⑤キー入力取得
キーの入力を取得します。大抵の言語にはライブラリに関数が用意されているので実装は比較的簡単に実装できます。

⑥ゲームシーン
タイトル画面やメイン画面、ゲームオーバー画面などをそれぞれゲームシーンと呼びます。先ほど実装したキー入力取得を使ってボタンひとつで各シーンに切り替わるようにしておくとテストが捗ります。

⑦メインのゲームシーン
いよいよメインとなるゲームシーンの実装です!・・・と言いたいところですが、ここから先は作るゲームのジャンルによって大きく変わってしまうという点と私自身が明確な手順を見いだせていないと言う点から説明を省かせて貰います。知りたい方は本を読むなりググるなりして自分なりの実装法を模索してみて下さい。

以上がゲーム制作開始~メインまでの実装手順となってます。
いろいろ実装するものが多くて挫折しそうになることもあるかもしてませんが、いざって時にはネット上にあるサンプルコードを参考にしてみたりするのもありだと思います。

皆さんも楽しくゲーム制作に励んで言ってください。

尚、以上の内容はMVVMをあまり意識していないhetareが考案しているものであり、内容に関して「ここは違うんじゃない?」「こんな手順じゃジャムコードになっちゃうよ!」と言う意見があればどんどんコメントして下さい。何なら新しく記事を書き直してくれても結構です。

ゲームアイデアを思いつくコツ?

始めて書きますhetareと申します。
何かブログに記事を書かないと!と言う謎の脅迫概念に襲われたので書くことにしましたが,何もネタが無いので今回は何となくゲームアイデアを思いつくかもしれないコツを書こうと思います。
何となくなので後から「思いつかねーよ」と言われても責任は持てないです。

1.風呂に入るorトイレに籠る
一番オーソドックスな方法です。人間、水場に長時間いるとよく分からないことを思いつくものです。その思いついたものを取りあえず実体化してみればゲームが出来ます。嘘じゃないです。本当です。僕の作ったゲームは大体こんなもんです。

2.散歩してみる
1日中部屋に籠っていては新しいアイデアも思い浮かばない物です。天気のいい日は思い切って外に出てみましょう。案外新しい発見があるかもしれません。でも熱中症にはお気をつけて!

3.人と会話する
こちらもアイデアを考えるのにはいい方法です。他の人と会話して意見を交換し合うことで新しい発想が生まれることがあります。皆さんもパソコンのモニターばかり見てないで先輩や友達とどんどんコミュニケーションをとっていきましょう!

大体上記のようなことをやってみるとゲームのアイデアはどんどん浮かんでいきます。他にも映画を見たり,ゲームをしたりして見るのもいいかもしれません。

皆さんもどんどんアイデアを考えてどんどんゲームを作っていきましょう。

2013年7月スタート!

C3 という名称、当サークルにとっての脅威。

C3(シースリー)という名称(何の略だか忘れてしまいましたが)、当サークルの略称でもあります。このあたりのことは記憶が古いので思い出せません。

2011年、私たちの存在をおびやかす存在としてテレビアニメ「C3 -シーキューブ-」が放送されたことは、皆様の記憶に新しいことだと思います。
私たちは、この年の10月〜12月まで(俗にいう「秋アニメ」「1クール」)、肩身の狭い思いをしたのも記憶に新しいことだと思います。

深夜アニメにもいろいろありますが、多くは放映期間中に盛り上がり、その後新たなアニメーション作品の登場により忘れ去られていくものが多いです。そのため、テレビアニメ「C3 -シーキューブ-」もまた、年月がたつにつれ、他のアニメーション(にゃる子さんやアザゼルさんなど)に話題を持っていかれ、いつしか耳にしなくなりました。

そうして、平穏な日常がまた戻ってきたのも記憶に新しいと思います。
そう、やつらが現れるまでは・・・。

ステラ女学院高等科C3部

2013年7月スタート!

WordPress を使ってウェブサイトを作るなら、もう少し気軽にモダンな作り方で。

WordPress は日々進化しています。そしてどんどん新しいプラグインが出ています。そんな中、「これから新しく WordPress でウェブサイトを構築するならどんな手順で作るのが今っぽい?」と考えてみました。

「WordPress を使ってモダンなウェブサイトを構築しよう」と言うと、ウェブデザインやスタイルシート、WordPress のテーマについての話になります。今回はそうではなく、(ウェブサイトを訪れる人にとってではなく)運用していく人にとって「モダンな WordPress 環境とは?」についてのお話です。少しでも参考になれば幸いです。

wordpress.com のアカウントを作っておこう

WordPress を利用する方法はいくつもあります。ローカルの環境にインストールしたり、VPS にインストールしたり、あるいはレンタルサーバーを借りてインストールしたり、挙げればきりがありません。そんな中、WordPress を今すぐ無料で始めたい人にオススメなのが wordpress.com です。

wordpress.com について

無料で使えてとても気軽に利用できますが、その分制限も多いです。プラグインを入れることはできませんし、作成したテーマをインストールしたり、編集したりすることもできません。広告も表示されます。
もちろん、心配することはありません。広告は小さいですし、Akismet や統計情報などに関してはデフォルトで使用できます。プラグインを入れずとも、ショートコード(shortcode) がサポートされているので、動画を埋め込んだり、シンタックスハイライティングもそのまま利用できます。有料オプションとして、独自ドメインやスタイルシートのカスタマイズ、広告の非表示などもサポートされています。特にこだわりがなければ、wordpress.com を使うのがいいでしょう。
プラグインを入れたり、テーマを自由自在に編集したい人にとっては制限も多いですから、レンタルサーバーを借りて別途 WordPress をインストールするのがいいでしょう。

どのみち wordpress.com のアカウントが必要

もちろんレンタルサーバーや VPS 上で WordPress をインストールして利用する際、wordpress.com のアカウントは必要ありません。ただ、WordPress のプラグインの中には wordpress.com のアカウントが必要なものもあります。例えば、有名なプラグイン Akismet を有効化するには wordpress.com のアカウントが必要です。そのため、wordpress.com のアカウントを作っておくと便利です。

有効化しておきたい WordPress のプラグイン

WordPress の運用を大きく左右するのは「プラグイン」です。

テーマを編集する用途以外で、WordPress の php ファイルをいじることはほとんどありません。(config ファイルを書くことはまれにあります。)そうするまでもなく、ほとんどやりたいことはプラグインのインストールによって達成することができます。

何をもって「モダンな作り方」とするのか、あるいは「今だったらどんな環境構築が気軽な手順?」と悩みました。考えてみれば、これらを解決するのは WordPress において「プラグイン」が当てはまります。

C3 のウェブサイトは 2008 年に WordPress へ移行しました。C3 のウェブサイトを編集しながら不便に思った箇所はいくつもありました。また、つい最近 VPS, レンタルサーバーといろんなところに WordPress を入れて遊んだり、wordpress.com の有料オプションを使ってみたり、色々試す中、便利なプラグインも見つけました。

(難しいことに C3 では特殊な WordPress の使い方をしているため、プラグインのインストールが簡単に行えません。少し面倒なのです。そこが最も不便なところでもあります。何とかしないと…。)

WordPress にインストールしておきたいプラグインを紹介します。

MP6

Jetpack

Akismet

WP Multibyte Patch

プラグイン>インストール済みのプラグインから WP Multibyte Patch を有効化

Markdown on Save Improved

git diff でテキストファイルの差分を確認できなくなる原因。

Git でソースコードを管理している人にとって、git diff は力強い味方だと思います。ある日のこと、C++ のソースコードをコミットしたところ、変更箇所の差分が git diff で上手く表示できないトラブルに巻き込まれました。

[bash highlight=”4”]
$ git diff
diff –git a/valvrave.hpp b/valvrave.hpp
index beaf100..dead666 100644
Binary files a/valvrave.hpp and b/valvrave.hpp differ
admin@VALVRAVE4 /dev/valvrave (feature/bin)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!--more-->
### 原因を探すまで
Source Tree で該当のソースコードを確認しても "Modified binary files" と表示され、差分が見れない状態でした。また、Bitbucket のようなホスティングサービスを使って Web 上で確認しても "Modified binary files" とのことで差分が見れませんでした。
どうも今回コミットしたソースコードが、バイナリファイルとして Git には認識されているようでした。
Git のデフォルトの設定では、バイナリファイルの差分を表示することはできません(たぶん)。
もちろん、Git では変更箇所の表示方法を個別に設定することができます。それが `.gitattribute` です。ファイルごとに diff をどういうふうに表示するか細かく設定できます。しかし、設定した覚えはありませんでした。
### 原因
原因はソースコード中に、`NULL` 文字が入っていたことでした。
例えファイルの拡張子が .cpp .cs .txt .md であろうと、例え `.gitattribute` を設定していなくとも、`NULL` 文字がテキスト中に入っていると、Git は "Modified binary files" ということでバイナリファイルとみなすようでした。バイナリファイルですから、git diff で表示しようとしてもデフォルトでは表示されません。
### 解決策
対象のソースコードに対して、`NULL` 文字を取り除いてから git commit すれば元通り、変更箇所を差分として確認することができます。お使いのバイナリエディタで `00` をあぶり出すのもいいですし、Windows でしたら notepad++ を使うと `NUL` として表示してくれます。vim でもバイナリエディタとして表示できるようです。
しかし、Visual Studio 2012 ではデフォルトの状態で `NULL` を表示してくれないので、紛れ込んだときは厄介です。そこで、Visual Studio 2012 向けの `NULL` 文字の取り除き方を紹介します。
### Visual Studio 2012 でテキストファイル中の NULL 文字を取り除く
対象となるファイルを開き、Visual Studio 2012 上で「検索と置換」を開きます。
**検索語句**

\u0000
```
置換後の語句 については記入せず、検索のオプションとして [正規表現を使用します。]を選択し、置換を実行します。これで忌々しい NULL を削除できます。

\u は Visual Studio 2012 における Unicode 文字と一致する正規表現です。\u0000NULL 文字と一致します。

最後に

最初なぜ差分が見れなくなったのかわからず途方にくれました。なかなか原因が見つからず苦労しました。おそらく同じようなことでハマる人がいると思いますので、今回の記事が手助けになれば幸いです。みなさま、NULL にお気をつけて。

全テキストファイルを置換した際に、うっかり全てのテキストファイルに NULL が紛れ込んでしまって本当に大変でした。

参考文献

Git の属性
Using Regular Expressions in Visual Studio.aspx “Using Regular Expressions in Visual Studio”)

C#、F#、VBでキーワードを識別子として使用する。

明日使えない無駄知識。タイトル通りの内容です。

C# など .NET 言語にはキーワードを識別子(変数名、メソッド名など)として使う機能があります。
C# では「逐語的識別子」、VBでは「エスケープ識別子」というらしいです。
F# では何というのか分かりません。誰か教えてください。

それでは、実際に見てみましょう。

C

1
2
int @int = 10;
Console.WriteLine(@int);

識別子の前に @ を付けることで逐語的識別子になります。

F

1
2
let ``let`` = 10
printfn &quot;%d&quot; ``let``

前後にバッククォート2つを付けることでキーワードを識別子に使うことができます。

ちなみに、スペースも含めることができます。

1
2
3
4
let main argv =
    let ``let main argv`` = 10
    printfn &quot;%d&quot; ``let main argv``
    0

VB

1
2
Dim [Integer] As Integer = 10
Console.WriteLine([Integer])

識別子を [] で囲むことでエスケープ識別子になります。

何に使うの?

さて、なんでこんな機能があるのかといいますと、他の言語と整合させるためです。
例えば int は VB ではキーワードではないので普通に識別子として使うことできます。
しかしこの int を VB でクラス名や変数名に使ってアセンブリを作成し、それを C# で参照して使おうとすると、キーワードなので逐語的識別子なしにはアクセスできなくなってしまいます。

F# に関しては、スペースも含められる辺りそれだけではない意味がありそうです。
というか、自分は F# 使ったことないので詳しいことは分からないです。

参考
C#やVB.NETでキーワードを識別子として使用するには?

Visual Studio 2012 で正規表現を使った置換。(regular expressions with find/replace)

プログラマを手助けする便利な道具として「正規表現/regular expressions(regex, regexp)」はとても身近で強力なツールです。プログラミングをしていると、いろんなところでお世話になります。
もちろん人気の Visual Studio でも検索・置換を行う際に、検索条件として正規表現を使用することができます。

正規表現はプログラミング言語や使用する環境によって記述に差異があります。しかし根本にある考え方はどれも同じなので使用する環境ごとのリファレンスを読むとすぐにでも使用することができます。
Visual Studio 2012 の正規表現が以前の Visual Studio に比べいろいろと変わっていたので、今日は Visual Studio 2012 での正規表現の使い方を 1 つだけ紹介します。

C++ のヘッダーのインクルードガードのどうでもいいコメントをどうでもいい感じに置換する

例として、C++ のヘッダーファイルのインクルードガードのどうでもいいコメントをいい感じに置換します。また C++ では アンダースコアが 2 つ以上続く識別子を使うのはよろしくないですので、インクルードガードのアンダースコアについても変更しましょう。

Visual Studio 2012 上で「検索と置換」を開きます。

検索語句

1
#endif //MYTRIVIALAPPLICATION_(?&lt;x&gt;.*)_HPP__

置換後の語句

1
#endif // !defined(MYTRIVIALAPPLICATION_${x}_HPP_)

検索のオプションとして “正規表現を使用します。“を選択し、置換を行います。

実行結果

置換を実行すると次のようになります。

置換前のコード

1
2
3
#endif //MYTRIVIALAPPLICATION_AUDIO_HPP__
#endif //MYTRIVIALAPPLICATION_BUFFER_HPP__
#endif //MYTRIVIALAPPLICATION_CONTEXT_HPP__

置換後のコード

1
2
3
#endif // !defined(MYTRIVIALAPPLICATION_AUDIO_HPP_)
#endif // !defined(MYTRIVIALAPPLICATION_BUFFER_HPP_)
#endif // !defined(MYTRIVIALAPPLICATION_CONTEXT_HPP_)

便利ですね。正規表現を使わずに、単語の置換のみで置き換えようとすると大変なことになります。正規表現を使うと、ちょっと複雑なコードでも思った通りに置換できます。

正規表現をサポートしているエディタやプログラミング言語は数多くあります。最近では、C++11 で <regex> ライブラリが標準でサポートされました。これは Boost.Regex 由来のライブラリです。いろんなところで正規表現を使用することができます。例を挙げればきりがありません。
1, 2箇所ほどだったら手作業で置換してもいいかもしれません。ただ 3, 4 箇所以上になると、正規表現を使って一発で置換するのが腕にやさしいですね。腱鞘炎に気を付けて。

参考文献

日本と海外の Microsoft Office に対する認識の違い

こんにちは、 jag です。
他称 Microsoft の回し者です。
自分ではそんなつもりはないですが、今回は Microsoft Office のお話をしたいと思います。

先日、日本でも Surface Pro が発売されることが発表されました。
日本で発売される Surface Pro には海外版とは違い、 Office Home and Business 2013 が標準搭載されます。
このような仕様になっているのは、日本と海外の Office に対する認識の違いがあるためだと思われます。

日本人にとっての Office

日本では、家電量販店などで販売されているPCのほとんどに Office がプリインストールされています。
なので、PCに詳しくない人はPCには Office が入っていて当然みたいな認識があります。
海外ではそんなことは無いのです。

また、日本で存在する Office は全て商用利用可となっているため、どこからが商用利用なのかが分からない人が多いという問題もあります。
Office の商用利用というのは、記者の人が Word で記事を書くといったようなことだけでなく、会社の書類を家で Office を使ってまとめる、みたいなことも含まれます。
海外では、 Office 2010 から商用利用不可なライセンスも存在しましたが、日本には相変わらず商用利用可の Office しか存在しません。

Surface RT に関しても、海外版に搭載されている Office 2013 RT は商用利用不可ですが、日本だけ例外的に商用利用可となっています。

こういった背景から、日本版には Office が搭載されるのは必然ともいえます。
海外の Surface Pro では Office は搭載されず、クラウド型で商用利用不可の Office 365 Home Premium の使用を推奨されていました。
日本の Surface Pro に搭載される Office はもちろん商用利用可です。

Office 2013 のライセンス

Office 2013 の海外版では Home and Business などのライセンスが1台のデバイスにしかインストールしかできず、ほかのデバイスに移管することもできなくなったため、日本ではどうなるのかと話題になりました。
結局日本では Office 2010 までと同様に、2台までインストール可能で移管も可能と発表されました。
むしろ今までのデスクトップ1台とノート1台という制限もなくなって緩やかになりました。
このように日本と海外では Office のライセンス体系も異なっています。
詳しくは下記のページを参照してください。
なぜ日本のOffice 2013のライセンス形態が特別なのか - PC Watch

個人的見解

このような Office に対する一般的な日本人の認識は、別に悪いことではないと思いますが、変えていくべきなのは確かだと思います。
Office 365 のようなクラウド型のアプリケーションが普及すれば、なにかと便利になると思いますし。
海外にあるような1台にしかインストールできなくて商用利用不可だけど安いタイプのやつとかは日本でも販売してほしいです。

2次元配列とジャグ配列

こんにちは、 jag です。このブログには初めての投稿となります。
とりあえずまずは簡単な事を書こうと思ったので、配列のお話です。

皆さんは、2次元配列とジャグ配列 (jagged Array) の違いが分かりますか?
2次元配列は各行の列の数が揃っている配列です。
ジャグ配列は配列の配列などとも呼ばれ、各行の列の数は揃っているとは限りません。

といっても、 C++ や Java などでは、2次元配列を作ろうと思ったら配列の配列を作ることになるので、あまり違いを意識することがないと思います。
(boost::multi_array とかも一応ありますが、その話は置いておいてください)

C# には、ジャグ配列とは別に2次元配列(多次元配列)用の構文があるので、使い分けることができます。

1
2
3
4
5
6
7
8
9
10
// 2次元配列
int[,] array2D = new int[5,6];
// 3次元配列
int[,,] array3D = new int[2,4,3];
// ジャグ配列
int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[8];
jaggedArray[1] = new int[3];

このように、多次元配列は角括弧の中にカンマを書くことで表現します。
多次元配列とジャグ配列で構文以外での違いが表れるのは、 foreach で走査するときです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 初期化
int[,] array2D = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
int[][] jaggedArray = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };
// foreach で中身を出力
Console.WriteLine(&quot;2次元配列&quot;);
foreach (var x in array2D)
{
Console.WriteLine(x);
}
Console.WriteLine(&quot;ジャグ配列&quot;);
foreach (var x in jaggedArray)
{
Console.WriteLine(x);
}

2次元配列とジャグ配列を同じ内容で初期化して出力しています。
このプログラムの実行結果は以下のようになります。

[text]
2次元配列
1
2
3
4
5
6
ジャグ配列
System.Int32[]
System.Int32[]
[/text]

2次元配列は中身をすべて列挙していますが、ジャグ配列は System.Int32[] という型名が表示されています。
配列の配列なので、 foreach を1回やるだけだと中身の配列が列挙されたため、型名が表示されてしまいました。

このような違いのある2種類の配列。
C# を使う際はきちんと違いを理解してうまく使い分けていきましょう。

ちなみに、僕の HN と jagged Array は別に関係ありません。

参考
多次元配列 (C# プログラミング ガイド)
ジャグ配列 (C# プログラミング ガイド)