最終形態を考えて設計をする

年末年始でcocos2d-xの勉強の一環でポーカーを作り、一通りの流れは把握しました。 本格的なゲームを1本作ることが目的なので、そのゲームの設計を現在考えております。 ■DLCの対応 StoreへのアップはiPhoneは50MB、Andoroidは100MBまでしか許可されていない…

windowサイズを変更しよう

ウインドウサイズを変更するためにはGLViewImplのcreateWithRectメソッドを使用する。 ただ、他の環境ではウインドウサイズはデバイスのサイズになるため、書き換えは以下のようになる。 const int width = 640; const int height = 1136; auto glview = dir…

cocos2d-xをはじめよう

スマホでゲーム開発を始めるにあたり、cocos2d-xの勉強を始めました。 まだ開発環境しか整えていない状態ですが、今後開発を進めるにつれて 必要になることが多数出てくると思うので、細かくメモを取っていこうと思います。 環境は Windows7 Professional Vi…

C++でメモリストリームを扱う方法

C++はファイルストリームやストリングストリームはあるのに、何故かメモリストリームが存在しない!!! 今回はストリングストリームをメモリストリームとして扱う方法を紹介する。 まずは出力ストリームの使い方だ。 #include <iostream> #include <sstream> #include <vector> int mai</vector></sstream></iostream>…

会社設立

長くブログを更新していませんでしたが、その間に会社を設立いたしました。 正確には設立自体は2012年の末に終わっていたのだが、勤め先の会社を辞める時が2013年の9月であったため 実質1年目は何もしていません。 新しい会社に移動して1ヶ月は仕事が無く、…

ダイアログ生成時にウインドウハンドルがNULLになるが、GetLastErrorは0を返す問題の対応

WINAPIのDialogBoxやCreateDialogでウインドウを作成した場合 WM_INITDIALOGのメッセージが飛んでくるわけだが、なぜか0x0090が飛んできた後に WM_DESTROYが来て終了してしまうというパターンが存在する。 なお海外の掲示板ではこのようなパターンも存在する…

労働基準法っておかしくね?

例えばネット回線をNTTと契約していて、速度おっせーとか、値段たっけーってことでKDDIに切り替えようと思ったら NTTと契約を切って、KDDIと契約すればいいよね。 でもさ、会社が労働者を雇って、こいつつかえねーと思っても契約切れないんですよ、労働基準…

社会のあり方の一例

飲み会に来ない新人を毎日無視してたら退職しやがったwwwwwww上記の記事について、会社の規模や新人の詳細はわからないが俺はありだと思っている。このことは順を追って説明しなくてはならない。 まず、メーカーが下請けに対して仕事を発注する場合、…

VisualStudio2008 SP1 vectorのバグ?

以下のプログラムはstd::allocatorを継承して自作アロケータを作成し、実際よりも32byte多めに確保してその前後に 固定値を入れ、解放時に固定地を書き込んだ領域に不正書き込みがないか確認するものである。 #include <stdio.h> #include <map> #include <vector> #include <string> struc</string></vector></map></stdio.h>…

プライオリティ描画管理

以前まではスプライト描画用の構造体を作って、その構造体を保存しておき ソートをかけて描画するという手法をとっていたわけだが、結構メモリを消費するのと 数を増やしづらいというのがあったので、新しい手法として関数単位のソートを書くようにしてみた…

再開

しばらく放置していたけど(主にネトゲやってて)ぼちぼち再開します。 メモ程度にだけどね。

明日ファイーストマスター・・・らしい

PS3

本気でヤバくなったので、ネトゲーを今月から休止 うん、遅すぎるねしかし、ネトゲやらなくなって仕事のはかどり具合がぱねぇ 今までの5〜10倍の速度で仕事してるわ! ネトゲ休止が遅かったから間に合わなそうだけど・・・(ファーストは)でだ、PS3はUSBステ…

マスターもうすぐだけど容量アップアップ

PS3

もうすぐマスターで、データがいろいろそろってきたわけですが ここで大問題発生!!!!なんと、ファイルの容量が4Gを超えてしまって、自前のアーカイブツールが対応できなくなってしまった。 今からちょっと作り直してくる!

PS3開発始めました

PS3

こっちの日記長いこと書いていませんね なぜならやる気がないから(キリィ PS3の仕事を請け負い、現在勉強中なのですがどうもやる気がでません。 たぶん一人だからですね。 正直なところ職場でプログラマ一人という環境に限界を感じています。 周りとプログラム…

趣味と仕事

趣味のプログラムはひたすら楽しい部分の作成を行う 仕事のプログラムはひたすらエラーチェックを行う

データ整合性チェックについてうんたらかんたら

まったく更新していないのでたまには、何か書くかなってことでデータ整合性チェックについて 以前(2か月前)に書いたCRCチェックのプログラムは、PSPのデータインストール時の整合性チェック用に つかったもの。本来であれば、より安全性の高いMD5を使うべき…

CRC32を求めるCのコード

Javaしか書いていなかったのでC版も書いておく #include <limits.h> typedef unsigned char uint8; typedef unsigned long uint32; static const uint32 CRC32Table[] = { 0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9, 0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E4</limits.h>…

開発機が安くなった

PSP

http://www.itmedia.co.jp/news/articles/0906/03/news057.html 50万円から15万円に下がった。 でも個人じゃ手を出す気になれないよね。 IDEはCodeWarriorしか対応していないし、個人で購入できるかどうかは不明だし。 他の開発環境はgccを直接使うしかない…

PSPの浮動小数点の処理遅すぎ

最近お仕事ないの・・・お金は入ってくるけどね そんなわけで、PSPで3D周りをちょくちょくいじって遊んでいます。 ソフトはMetasequoiaを使い、保存したファイルがテキスト形式なので そいつを読み込んで、PSPで表示している。 それにしても読み込みが遅い!…

プログラム容量のお話

Windowsでゲームを製作するときは、プログラムの容量を考えることなどないが 携帯電話、携帯ゲーム機などでは、メモリが少ないためプログラム容量を考える必要が出てくる。 PSP開発をしているときは、STLは普通に使用しているがBoostは使おうとは思わない。 …

とらドラP!

4/30発売のとらドラP!のメインプログラムを担当しました。 PSP初&コンシューマ初のゲーム製作となります。 この日記は4/30に書こうと思ったのですが、すでにフライングでプレイで来ている人がいるため 今日書いてしまいます。 とらドラP!には様々な要素を入…

定数の記述場所

外部に公開する必要があるものはヘッダーに 公開する必要がないものは、cppファイルに書きましょう。

アロケータの使い方

作成したアロケータの使い方 #include <vector> // 64バイトアラインメントでメモリ確保を行うvector std::vector<char, CAllocator<char, 64> > buffer;</char,></vector>

アロケータの作り方

STL標準のstd::allocatorには、アラインメントを操作する機能がないので 確保したいメモリのアイランメントを設定したい場合、自前でアロケータを作る必要がある #include <malloc.h> typedef unsigned long uint32; // デフォで4バイトアラインメント template <class T, uint32 N = 4> class</class></malloc.h>…

セーブとロードでの型違いは×

固定長のものはセーブとロードが同一環境であるならば、構造体にして その構造体をそのままセーブ、ロードすることで問題ない。 しかし、可変長のものはそうはいかないので、可変した際の数やらなんやらを保存しなくてはいけない。 今回、std::mapを使ってい…

戻り値ありの関数で

値を返さない(return;)は未定義動作だ。 大抵のコンパイラは警告を出してくれるから、気付こうね。

ひどいプログラムを見た

こんなのがあった。一瞬何をやっているかわからなかった。 if (IsHoge()) { // いろいろ } else if (IsHogeHoge()); else { // いろいろ } 普通こうだろ if (IsHoge()) { // いろいろ } else if (!IsHogeHoge()) { // いろいろ }

メモリプールを活用しよう

メモリが非常に厳しい環境でゲームを作る場合、最低でも1つメモリプールを作成しよう。 グローバルnewやmallocは通常のメモリからメモリを確保し、画像やサウンドなど メモリ消費が多いものはメモリプールを使うようにする。 そうしないと、メモリの断片が発…

メモリが少ないときは、std::mapよりstd::vectorを使用しよう

現在サウンドノベルを作成しているのだが、すでに一度通過したことがある場所は スキップを行うことができるようにするという処理を導入する場合、スクリプト命令一つにつき 変数一つを用意して0を代入しておき、通過したら1を代入する。 スキップ処理の開始…

std::vectorのメモリ解放

vecotrで確保したメモリは、clearメソッドを呼んでも解放されず デストラクタが来るまではずっとメモリを確保している。 そこで、以下の方法で解放することができる。 std::vector<int> hoge; // hogeのresizeとclearを繰り返す。 // 解放 std::vector<int>().swap(hog</int></int>…