C/C++ゲーム製作総合スレッド Part3at GAMEDEV
C/C++ゲーム製作総合スレッド Part3 - 暇つぶし2ch50:名前は開発中のものです。
13/01/15 07:09:20.45 QGB3gtfA
そもそもMacで使われてるC言語はObjective-Cであって、C++とは別物なんだがな
WindowsからMacへ移行し、会社も移籍となるとなかなか難しいだろうな

51:名前は開発中のものです。
13/01/15 08:36:57.26 kOXRI1LA
XCodeでもC/C++のコンパイルは出来るよ。
ただし、ウィンドウのハンドルを取る手続きはObjective-Cじゃないと資料が見当たらなかった。
システムAPIはObjective-Cに特化している印象。

52:名前は開発中のものです。
13/01/15 08:47:21.82 5Gk8HxPx
>>50
たぶんCで作られてると思います
OS9の時代なので古いゲームです
画像を表示するのにもQuickDrawを使ってます

OSX10.7からRosettaがなくなってPPCのOberinは動かなくなりました
古くからMacを使いウルティマオンライン風の2Dオンラインゲーム開発を熟知してるゲームプログラマーの方お願いです
Oberinを救ってくださいDavid M. Bourg、Glenn Seemannに問い合わせて共同開発してリメイクしてくださいお願いです

53:名前は開発中のものです。
13/01/15 08:56:17.26 5Gk8HxPx
こんなUIです
URLリンク(oberin.s7.xrea.com)

OSX版もあります、どうかWindowsに移植してほしいです
移植してくれる人を集めるとしたらどこで協力を得ればいいでしょうか?
ゲームプログラマを尋ねるしかありませんか?

54:名前は開発中のものです。
13/01/15 09:10:55.46 IZNDRoVN
他人任せにしないでください。
あなたが権利者から許可を取り、プロデューサ/ディレクタ/プロジェクトマネージャになるべきです。
その上で、開発チームを立ち上げてください。

55:名前は開発中のものです。
13/01/15 09:18:13.17 wGE6oIEa
他人任せで成功したプロジェクトなんて聞いた事がない。
自分が中心になって製作するサークルでも9割以上が潰れると言うのに。
レスすらまともに読む気ないのに協力してもらえるなんて、どういう思考回路してるんだ?
いい加減しつこい。諦めてmac買えよ。中古なら安く買えるだろ。

56:名前は開発中のものです。
13/01/15 13:20:24.05 m8SuNQuJ
>>45興味深い

57:名前は開発中のものです。
13/01/15 17:12:30.95 EaLBtD+u
>>50-51
みたいに相手するから余計につけあがる。
責任取って他スレに誘導しろよ。

58:名前は開発中のものです。
13/01/15 18:09:01.38 QGB3gtfA
Macでゲームを作るスレ(2)
スレリンク(gamedev板)

59:名前は開発中のものです。
13/01/15 23:30:08.02 kzHVNOI7
>>55
おそらく中古MACを買う予算より少ない金額で「仕事の依頼です!」とか言いそうで、
プログラミングできる人間側にしたら好きになる要素がないよねw

60:名前は開発中のものです。
13/01/15 23:37:08.24 wUrDSvN+
2chでプログラマ探してる時点でろくなもんじゃない

61:名前は開発中のものです。
13/01/16 12:14:56.86 dZqwRO7Z
QuickDrawって廃止されてQuartz 2Dだよね。
たぶんMacのQuartz 2D使ってゲーム作れるレベルの高い人は日本にいないから移植も無理だろ。

62:名前は開発中のものです。
13/01/16 12:16:31.82 dZqwRO7Z
洋書有利だな。

63:名前は開発中のものです。
13/01/16 12:27:05.31 9GgZijAJ
どうして Windows に nanosleep が無いことを考えるとイラついてくるな

64:名前は開発中のものです。
13/01/16 14:19:38.79 9saeUya9
>>61
ゲーム作るんならグラフィクスはOpenGLじゃないの

65:名前は開発中のものです。
13/01/16 17:11:29.45 rfcXvvp9
2Dゲーならそこまで低レベルAPIに落ちなくてもいい。

ていうか面倒ごとが増えるから落ちずに済むならそれに越した事は無い。

66:名前は開発中のものです。
13/01/16 18:51:41.63 u7MUGbEN
つまりDXライブラリ最強ってことですね

67:名前は開発中のものです。
13/01/16 19:32:52.73 Yd8Vz7lO
#include <iostream>
#include <map>

class A{
public:
int val;
};

int main(){
std::map<int, A> Main_A;
std::map<int, A> Sub_A;

Sub_A.insert(std::make_pair(1, A()));
Sub_A.insert(std::make_pair(5, A()));
Sub_A[1].val = 100;
Sub_A[5].val = 50;

//Main_AにSub_Aの要素をinsertしたい

std::cout << Sub_A[1].val << std::endl;
std::cout << Sub_A[5].val << std::endl;

return 0;
}

mapから他のmapに要素をinsertするといったことは可能なのでしょうか?
イテレータとかいうやつを使うのでしょうか?

68:名前は開発中のものです。
13/01/16 19:43:47.57 vHhR3ta5
何をしたいかいまいち良く分からんが、
STLコンテナの類で全要素にアクセスするなら
イテレータ使うのがよろしい。
C++初心者にはキモイ構文かも知れんが、
まぁサンプル通りのコーディングすれば良し。

69:名前は開発中のものです。
13/01/16 23:25:51.98 uIyKClGc
イテレータ慣れると[]演算子でアクセスする方が気持ち悪くなってくるね

70:名前は開発中のものです。
13/01/17 22:34:40.20 yNq2XjTR
ムーブコンストラクタで無用なコピーを防ぐとか、そういう話かと

71:名前は開発中のものです。
13/01/17 22:47:58.36 SK+WC+I6
>>69
用途が違くね?
[]演算子ならどこでも一瞬でアクセスできるじゃん。

72:名前は開発中のものです。
13/01/17 23:59:25.21 QQuSP+8l
>>71
mapの場合は絶対にキーが格納済みであることが確実でもfind使うようにしてる
それとはまた違うがvectorもatがあるから[]は使ってないなあ

73:名前は開発中のものです。
13/01/18 00:50:51.69 0xoMQDl+
Vectorでatは毎回範囲チェックするから遅くなるだろ
ある程度連続してアクセスするなら無駄

74:名前は開発中のものです。
13/01/18 04:22:15.56 6OYOcstc
>>72
さすがにそれはどうかと思う

75:名前は開発中のものです。
13/01/18 21:17:01.14 h30YIVHQ
>>70
>>67の内容から察するにその辺の話だと俺も思うなぁ
C++11 std map pair move-semantics move-constructor move-assignment-operator
とかでググると>>67のやりたい事と一致する情報が色々拾える気がする

76:名前は開発中のものです。
13/01/18 22:19:03.33 6FSUVQjN
アルゴリズムでcopy一発じゃないの?

77:名前は開発中のものです。
13/01/19 12:36:02.05 q8h4iJfZ
DXライブラリでゲームのセーブ及びロード関係なんですが
fopenやfwriteではint型やchar型のデータは読み書きできると思うんですが
クラスなどのオブジェクトまるまる保存するにはどのような関数があるのでしょうか?
参考に出来るサイトなんかでもなんでもいいのでお願いします。

78:名前は開発中のものです。
13/01/19 13:49:54.50 BIw3jTiL
オブジェクトを保存できるような形式にすることを「シリアライズ」というが
DXライブラリとしてはシリアライズは提供してなかった、はず。
C++としても特にあるわけじゃない。
Boostではあるって聞いた。

データ形式が複雑じゃなければ自分で手でデータを並べてファイル出力。
structを一括とかすると若干見通しがいい。
余談だがこれには#pragma pack(1)とか非標準的な泥臭い話も若干出てくる。

79:名前は開発中のものです。
13/01/19 13:51:20.31 tuSK099a
boost::serializationで検索……と言いたいところだけど、
まずはstructか何かに必要なデータを纏めて、それを1つずつ順番にバイナリ出力するところから始めてみてはどうだろう

80:79
13/01/19 13:51:53.80 tuSK099a
あ、ごめん、リロってなかった

81:名前は開発中のものです。
13/01/19 15:03:13.68 CuXnatAE
>>77
クラスを読み書きするだけならこんな感じでどうでしょうか…

#include <iostream>
#include <fstream>
using namespace std;

struct Savedata{
int x, y, z;
};

int main(){
Savedata save; //オブジェクト
save.x = 1;save.y = 2;save.z = 3;
const char* filename = "sav.dat"; //ファイル名
ofstream out; //セーブ
out.open( filename );
out.write( ( const char* )&save, sizeof( Savedata ) );
out.close();
Savedata load; //ロード
ifstream in;
in.open( filename );
in.read( ( char* )&load, sizeof( Savedata ) );
in.close();
cout << load.x << load.y << load.z << endl; //確認
}

82:名前は開発中のものです。
13/01/19 15:15:11.83 hcRANC3J
ファミコンゲームのセーブロードがシリアライズとかしてたかよ
必要なデータを洗い出してセーブデータの構造を自分で考えろよ

83:名前は開発中のものです。
13/01/19 19:26:10.66 tuSK099a
ファミコンソフトってC++で開発されてたのか、知らなかったぜ

84:名前は開発中のものです。
13/01/19 22:10:37.28 +PjkUk0Q
なんとなく想像はつくと思うけど、
セーブロード機構の実装はめんどくさいよ。

85:名前は開発中のものです。
13/01/19 22:30:50.58 CgroCKX/
いつどんなタイミングでもゲーム画面をまるごと保存&復元可能にするのと
ゲームのプレイデータをセーブできてロード時に適切なシーンへ移行するのとでは
かなり実装方法が違ってくるから注意だなあ

前者はアプリ用のライブラリとして組み込めるレベルの機能だけど
後者はゲーム別に高度にカスタマイズしたレベルでの機能になる


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch