1read 100read
2013年03月ゲ製作技術16: C/C++ゲーム製作総合スレッド Part3 (306) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【多忙】働きながらのゲーム製作【疲労】 (230)
チンギスハーンのゲームのアイデア募集 (433)
OGRE3D (378)
新ジャンル『R980円(税)』ゲーム化製作スレ (751)
HSPで出来る範囲について (386)
OGRE3D (378)

C/C++ゲーム製作総合スレッド Part3


1 :2013/01/11 〜 最終レス :2013/03/12
ゲーム製作におけるC/C++全般に関するスレです。
元スレ
DXライブラリ 総合スレッド その12
http://toro.2ch.net/test/read.cgi/gamedev/1330000532/
前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/

2 :
>>1
あのまま落ちるかと思った

3 :
スマホの専ブラの次スレ立て機能マジ便利
テンプレ単純だとさくっと作れる

4 :
>>1乙Zz

5 :
>>1


6 :
前スレの1000>1000ならC++が廃れてもう少し普通の人間に扱い易い言語に置き換わる
お前が作れ
いやまぁ、俺も作ってはいるんだけどな……

7 :
C++11はだいぶん使いやすいぞ

8 :
>>Dがあるやん

9 :
>>989
GUI周りは業務システムも含めて先人の知恵が積み上がって体系化されてる
部分なので既存のライブラリとか参考にするといいと思うよ。ゲーム系なら
CEGUIとか使ってみるだけでも何か参考になるかも
あと、我流で組み上げた後で構わないので
http://itpro.nikkeibp.co.jp/article/COLUMN/20061106/252691/
こういう類の記事にざーっと目を通してみるのもあり。関連キーワードを
ゴーグル先生で手繰ってけば我流で組み上げた経験知からすんなり読めるかも

10 :
>>3
そんな機能あるのか!!
アプリ名教えて

11 :
>>3じゃないけどBB2Cはついてるよ

12 :
最新版への自動更新とかって、どうやってる?
なんとなくのやり方は想像できる(固定URLにメタデータファイルを置いて自身のバージョンと比較する等)んだけど
俺が知らないだけで、世の中そういうライブラリやツール、サービスがあるのかなって。

13 :
公式サイトでお知らせしてるよ

14 :
>>12
そういう処理を自動的にやってくれるフリーソフトあるよ
起動するときにそのフリーソフトを起動して、あとは設定通りにバージョンチェックして目的のアプリを起動
作者側が自分のアプリにそれを組み込んで配布していいのかどうかはわからないけど

15 :
>>12
こういうやつ?
http://code.google.com/p/wyupdate/
でも通信要素がないゲームの場合は“自動”更新機能とかあんま入れないよね
通信対戦機能もインターネットスコアランキング機能も無い、スタンドアロン
だと思ってたソフトが不意に通信始めてセキュリティソフトが警告ダイアログ
出したら「何これキモイ」って思われたりするし、神経質なユーザーから
クレーム来たり、対応が面倒くさいよ?痛くもない腹を探られるのはあんま
気分のいいもんじゃないから余計なことしないという結論になりやすいと思う
一方、最初から通信要素ありのゲームなら前述の懸念もなく、自動更新機能を
組み込むくらいそのプログラマにとっては造作もないことなので、そもそも
>>12みたいな質問には至らなかったり

16 :
自動更新機能だけ組み込むならこっちかな
http://wyday.com/wybuild/help/automatic-updates/

17 :
>>10
Androidなら2chMate

18 :
>>13
ぶっちゃけそれでも問題ないんだけどね。
タイトル画面、あるいはゲーム起動時に出るダイアログに、
「ブラウザで公式サイトを開く」というボタンを付けるだけでも違いそうだし。
>>14
そうそうそんな感じの。
自分の場合は同人/インディーズゲーム想定だが、この界隈でメジャーなものがあるのだろうかと。
>>15
ソフトウェア名でぐぐってみたけど、結構メジャーっぽいね。検討してみる。
別にゲーム起動時に自動じゃなくても、「最新版をチェック」ボタン→「更新」ボタン押下で自動的にDL&置換でもいいんだけどさ。
ユーザ自身に、ウェブサイトからダウンロードして上書きしてもらうという部分を省略出来ればいいので。
小規模なものでよければ、通信前提のものは作ったことあるよ。
ロビーもマッチングも無い、ただサーバ側のIPアドレスを直打ちするような代物で、
バージョン管理も、ホストとクライアントのバージョン情報が違ったら弾く、くらいしかやってなかったけど。

19 :
実行ファイルの更新したい場合ってどうすんの?

20 :
>>19
幾つかパターンはあるようだが、その一例を挙げると
(1)アプリケーション本体の実行ファイル(本体.exe)とは別に、本体.exeを起動して終了するだけの 実行.exe を用意する。
(2)ユーザが 実行.exe を起動する。
(3)実行.exeは最新版をチェックしてダウンロード。一時ディレクトリ update/ に置く。
(4)update/にある差分のうち、自分自身(実行.exe)以外のデータを更新する。単純な上書きでもいい。
(5)本体.exeを起動し、自身を終了させる。
(6)update/に 実行.exe の差分があれば更新。
(7)ゲーム画面へ。
こんな感じ。

21 :
一つ一つ考えていけば難しいことがないように思えるね。
アップデートするデータはSkydriveとかにおいてできるのかな。
アップデート失敗したら手動上書きでやってもらうことも出来れば助かるな。

22 :
そういうストレージサービスをシステムに勝手に組み込むのってアリなのかな?
サーバ機能を提供してるわけじゃないから怒られそうw

23 :
>>20
googleが1秒以内に検索結果を出してくるネット上で「そんなの知ってた」の後出しか…
ここまでの馬鹿は初めて見た

24 :
「『ググれ』で追い返せよ」で済むことを
ここまで汚い言い回しにすることができるのか
ある意味感動ものだわ
ここまでのバカは初めて見た

25 :
とりあえず嫌味言おうとするのは何とかならんのかおまえら

26 :
せやな
人間関係悪くするだけでっしゃろ
いづれ己にも返ってくっとばい

27 :
そもそも20のどこに後出し要素があったのか…

28 :
12からの流れはそう見える

29 :
そうか、それは失礼した。

30 :
>>18
同人か。通信対応の作品がたまーにパッチの自動取得(適用)機能搭載してるね
実際にやるサークルが少ない(or搭載したい機能としてあまり話題にならない)のは
ゲームにとってはやっぱり枝葉の部分だからってのが一番大きいかもねぇ
(>>15で書いたような懸念も絡んでくると組み込む意欲下がるしね)
個人的には、p2p(BitTorrent)で自分のゲームが同人ソフト詰め合わせzipの中に
あるのがたまにムカついてて、不正使用防止(主に中華対策)のためにゲーム内容に
何らかの通信要素を盛り込んでユーザー認証ありの常時接続必須の仕組みにして
パッチもログイン状態でないと入手不可みたいにしたいなーとかたまに考えるけど
運用コスト考えるとどうしても二の足を踏むんだよね
>>21,22
利用規約よく読んでから使えばいいと思うよ。API公開されてるんだしさ

31 :
中華対策なら、禁止ワード入れとけば良いんじゃね?

32 :
邪悪江沢民とか?んー、狙い撃ちしてると露骨に分かると逆恨みされそうだしなぁw

33 :
p2pネットワークに更新データ放流してサーバー無しで自動更新サービス運営ってできるのかな?
p2pよくわかってないけど

34 :
>>33
かつてWinnyだったかが、クライアントのバージョン情報も一緒に流すようにしていて、
P2Pネットワーク上で新バージョンを見つけたら、ユーザに更新を促すという仕組みをとっていたと聞いたことがある。
実際の更新データは、流石にウェブからDLだったと思うけれど。

35 :
>>33
そろそろ学習しような

36 :
怒っていいぞ

37 :
p2pで共有してもファイルが正当なものかチェックする機能は最低限必要だし
サーバなしってわけにはいかんのじゃないかな

38 :
・配信の制御ができるのか。何らかのミスで配信停止したくてもできないとしたら?
・人気のない(マイナーな)ファイルとP2Pネットワークの組み合わせは適切なのか?
・ゲームプログラムに名の知れたP2Pネットワーク(仮にBitTorrentとしようか)の
クライアント機能を組み込むとして、それはユーザーが望む結果になるのか?

39 :
例えばBitTorrentクライアント機能を搭載するとして、それが活性状態になる事で
生じる副作用、色々あるよね。昨今のISPが実施してるDPIによる帯域制御に
ひっかかったりしたらユーザーは普通にブチギレると思うんだよね。だいたい
知らん間に勝手にP2PネットワークのピアPCにされてるんだから、そらもう
「何これキモ杉」って思われて2ちゃんに晒されちゃうと思うよ

40 :
MacOSのゲームをWindows用に移植できる技術を持った人いますか?
頼みたいことがあります

41 :
予算は何百万から?

42 :
>>40
スレ違い
依頼はここでよろしく
総合発表&雑談スレッド その3
http://toro.2ch.net/test/read.cgi/gamedev/1216633635/

一緒に作る人の募集ならここでよろしく
ゲーム製作メンバー募集スレ 13人目
http://toro.2ch.net/test/read.cgi/gamedev/1308155404/

43 :
>>41
予算考えます
http://www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEAI%E5%85%A5%E9%96%80-David-M-Bourg/dp/4873112168/ref=sr_1_1?s=books&ie=UTF8&qid=1358162642&sr=1-1
ゲーム開発者のためのAI入門 [大型本]
の著者 David M. Bourg、Glenn Seemannが作ったゲームです
どうにかしてWindowsに移植してほしいです
フォーラム等ではWindows版を望む書き込みが多数あります
私がGMとGlenn Seemannに問い合わせるので移植を手伝える人はいませんか?
お願いです

44 :
>>42が読めないのかよ。

45 :
フォーラムはここです
http://www.oberin.com/index.php?name=PNphpBB2&file=viewtopic&p=70004&newlang=eng
ゲームはObeirnというゲームです
UO風のゲームです
Macでしか動きませんWindowsでも動くようにしてほしいです
古くからMacプログラミングに知識ある人、ゲームプログラマーの方
移植してくださいお願いです

46 :
話が通じない(話を聞かない)人間なんだなぁ、という事はよく伝わってくる

47 :
人の言葉らしき文字列を自動投稿するスクリプトでしょ

48 :
多分C++で書かれたWindowsプログラムに違いない。

49 :
移植してください
頼みますよ
リメイクでもいいです

50 :
そもそもMacで使われてるC言語はObjective-Cであって、C++とは別物なんだがな
WindowsからMacへ移行し、会社も移籍となるとなかなか難しいだろうな

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

52 :
>>50
たぶんCで作られてると思います
OS9の時代なので古いゲームです
画像を表示するのにもQuickDrawを使ってます
OSX10.7からRosettaがなくなってPPCのOberinは動かなくなりました
古くからMacを使いウルティマオンライン風の2Dオンラインゲーム開発を熟知してるゲームプログラマーの方お願いです
Oberinを救ってくださいDavid M. Bourg、Glenn Seemannに問い合わせて共同開発してリメイクしてくださいお願いです

53 :
こんなUIです
http://oberin.s7.xrea.com/kiso/guide017/gfx/screenshotfull.jpg
OSX版もあります、どうかWindowsに移植してほしいです
移植してくれる人を集めるとしたらどこで協力を得ればいいでしょうか?
ゲームプログラマを尋ねるしかありませんか?

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

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

56 :
>>45興味深い

57 :
>>50-51
みたいに相手するから余計につけあがる。
責任取って他スレに誘導しろよ。

58 :
Macでゲームを作るスレ(2)
http://toro.2ch.net/test/read.cgi/gamedev/1103361042/

59 :
>>55
おそらく中古MACを買う予算より少ない金額で「仕事の依頼です!」とか言いそうで、
プログラミングできる人間側にしたら好きになる要素がないよねw

60 :
2chでプログラマ探してる時点でろくなもんじゃない

61 :
QuickDrawって廃止されてQuartz 2Dだよね。
たぶんMacのQuartz 2D使ってゲーム作れるレベルの高い人は日本にいないから移植も無理だろ。

62 :
洋書有利だな。

63 :
どうして Windows に nanosleep が無いことを考えるとイラついてくるな

64 :
>>61
ゲーム作るんならグラフィクスはOpenGLじゃないの

65 :
2Dゲーならそこまで低レベルAPIに落ちなくてもいい。
ていうか面倒ごとが増えるから落ちずに済むならそれに越した事は無い。

66 :
つまりDXライブラリ最強ってことですね

67 :
#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 :
何をしたいかいまいち良く分からんが、
STLコンテナの類で全要素にアクセスするなら
イテレータ使うのがよろしい。
C++初心者にはキモイ構文かも知れんが、
まぁサンプル通りのコーディングすれば良し。

69 :
イテレータ慣れると[]演算子でアクセスする方が気持ち悪くなってくるね

70 :
ムーブコンストラクタで無用なコピーを防ぐとか、そういう話かと

71 :
>>69
用途が違くね?
[]演算子ならどこでも一瞬でアクセスできるじゃん。

72 :
>>71
mapの場合は絶対にキーが格納済みであることが確実でもfind使うようにしてる
それとはまた違うがvectorもatがあるから[]は使ってないなあ

73 :
Vectorでatは毎回範囲チェックするから遅くなるだろ
ある程度連続してアクセスするなら無駄

74 :
>>72
さすがにそれはどうかと思う

75 :
>>70
>>67の内容から察するにその辺の話だと俺も思うなぁ
C++11 std map pair move-semantics move-constructor move-assignment-operator
とかでググると>>67のやりたい事と一致する情報が色々拾える気がする

76 :
アルゴリズムでcopy一発じゃないの?

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

78 :
オブジェクトを保存できるような形式にすることを「シリアライズ」というが
DXライブラリとしてはシリアライズは提供してなかった、はず。
C++としても特にあるわけじゃない。
Boostではあるって聞いた。
データ形式が複雑じゃなければ自分で手でデータを並べてファイル出力。
structを一括とかすると若干見通しがいい。
余談だがこれには#pragma pack(1)とか非標準的な泥臭い話も若干出てくる。

79 :
boost::serializationで検索……と言いたいところだけど、
まずはstructか何かに必要なデータを纏めて、それを1つずつ順番にバイナリ出力するところから始めてみてはどうだろう

80 :
あ、ごめん、リロってなかった

81 :
>>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 :
ファミコンゲームのセーブロードがシリアライズとかしてたかよ
必要なデータを洗い出してセーブデータの構造を自分で考えろよ

83 :
ファミコンソフトってC++で開発されてたのか、知らなかったぜ

84 :
なんとなく想像はつくと思うけど、
セーブロード機構の実装はめんどくさいよ。

85 :
いつどんなタイミングでもゲーム画面をまるごと保存&復元可能にするのと
ゲームのプレイデータをセーブできてロード時に適切なシーンへ移行するのとでは
かなり実装方法が違ってくるから注意だなあ
前者はアプリ用のライブラリとして組み込めるレベルの機能だけど
後者はゲーム別に高度にカスタマイズしたレベルでの機能になる

86 :
一人で思い付きでガーって作っちゃうような小さなゲームに簡易にセーブ/ロード機能を
組み込むにはboost::serializationは楽チンだなぁ。ソースコードが仕様書だから
ORMのための仕掛けをわざわざ中間に挟み込む手間はかけたくなかったりするし

87 :
保存する必要があるデータが最初から単純で種類も少なければ
手動でテーブル化するコードをチマチマ書いたり、あるいは>>81
みたいな形でももちろんできるわな
ただ、種類が増えてくると前者は保守性の悪さがすぐ表面化するし
構造(関係)が複雑になると後者もシリアライズ可能にするための
仕組みとかお作法をちゃんと用意してあげないといけなくなるしな
勉強目的(苦労するのが目的)ならともかく、既知の問題が
見えてるんであれば最初から出来合いのライブラリやツールを
どんどん使ったほうがいいと思うぞ

88 :
シリアライズはバージョンの違いに対応しようとすると面倒くさいからなー
DBからスケルトンを作成する便利プログラムでも探すか作った方が楽

89 :
blancoDBみたいな入出力のソースコードを自動生成する方法論かな?
あれはあれで前提としてる仕事を選ぶような気がするなぁ
ゲームの場合、業務システムと違って「面白さを追求・調整するため」と
称して行き当たりばったりの試行錯誤の繰り返しを開発の中盤過ぎても
平気でやってたりするし、オブシェクトの相互作用の部分に修正を加えまくるから
データベース指向なR/Oマッピングの自動化に労力を割いても徒労感の
ほうが大きくなるんじゃないかなぁ。ボトルネックはそこじゃないというか

90 :
まあアホの子が好き勝手作っても大丈夫なやり方なんてないよ
それならツクールとか使えば?ってなる

91 :
>>88
シリアライズしたデータのバージョン間の互換性問題は
ゲームのセーブ/ロード用としては気にする必要なさそうだけどな
ゲームをリリースしてからゲームプログラム側でシリアライザブルな
クラスの定義を修正することがあるかというと、ほとんどないだろ?
ゲームをリリースしてからシリアライザのバージョンを変えることが
あるかというと、これもまぁ基本的にはないだろ?
セーブデータはDBを使って、アクセサー(のインターフェース)を
自動生成するフレームワークを作れば楽、というのは、別の見方をすれば
オブジェクト指向とは異なる(例えばRDB)をバックエンドで使うから
だから変換機構を介在させる必要が出てきて、しかもそれを組み込む作業が
機械的で退屈でケアレスミスを起こしやすいから、だから楽になる
とも言えるわけで

92 :
>>91訂正
△だから楽になるとも言えるわけで
○だから変換機構の自動生成やらフレームワークを用意することで
楽になるとも言えるわけで
例えばオブジェクトグラフを保存したいとして、これをその辺のフリーの
組み込みDBのテーブルに格納するとしたら、直接に保存出来ないわけだから
何らかの変換機構を介在させてマッピングすることになるよね。
組み込みDBのインターフェースがオブジェクト指向的でないから
何らかの仕掛けを使ってこのギャップを埋めなきゃいけないんだよね

93 :
無駄な長文だなw

94 :
あんま詳しくないんだけどセーブ機能にデータベースっていうのはSQLiteとか使うの?
最初から表として表現しやすいデータなら便利そうだけど、セーブ機能のクエリのしかたなんて
どうせ単純なんだからそれなら別にCSVで保存してもよくねって気もする
階層状のFSMを保存するとかになると表にするのかったるいからmsgpackとか使っちゃうな

95 :
お好みでおk

96 :
シリアライズはヘッダ情報どうしてるか聞きたいわ
ファイル全体のはもちろん必要だがクラス自信も自らのヘッダ情報を勝手に書き出すようにしといた方がいいよな

97 :
boost::serializationの場合はサンプル通りのおまじないコードを入れとくと
何のクラスの何のメンバが保存されてるのか、って情報はXMLファイルに
書き出されるけど、そういう話ではなく?

98 :
>>97
ああ、自作の場合ね
今のところサイズとクラスの名前程度しか書き出してないんだよな
セーブしたいクラスを、SaveとLoadを持つインタフェースを継承させて作る場合
バージョンを保持させる方法とそれに対応するLoad方法をどういう風にすべきか悩む
そもそもバージョンって、クラスに変更があるたびにversionIDを変化させて対応する方法と
変更したいクラスを継承して、そのクラスを使うようにするのとではどちらがスマートなのかな?

99 :
>>98
バージョンアップのために継承はちょっとないな
ソース管理が煩雑になりすぎる

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
ところでみんな絵はどうしてるの? (263)
ゲームを作るのに必要な事 (440)
ゲームの思考ルーチンを語ろう (220)
「企画クラッシャー」について考えるスレ (766)
3Dゲーム用キャラクターモデルを作るスレ (359)
FLASHでゲームをツクール (372)
--log9.info------------------
Cat Shit One -THE ANIMATED SERIES- (218)
【安彦良和】クラッシャージョウ・アリオン・ヴィナス戦記… (264)
サマーウォーズがヱヴァ破を蹴散らす 2勝目 (340)
BRAVE STORY ブレイブ ストーリー part5 (384)
「太陽の王子 ホルスの大冒険」を語れ (492)
鉄コン筋クリート (784)
サマーウォーズが駄作だったから寝るわpart11 (520)
映画 けいおん!が微妙だった人のためのスレ (511)
.hack//Quantum (943)
旧劇場版北斗の拳 (385)
劇場版 どうぶつの森 (662)
ジブリ・宮崎映画にありがちな事 (286)
【赤根】天空のエスカフローネ【名作】 (389)
ジャングル大帝(2009版) (441)
グイン・サーガ (203)
劇場版「空の境界」は月厨ご用達の糞アニメ (517)
--log55.com------------------
【ニコ生】解説者・聞き手について語る【Abema】
30歳過ぎてから将棋はじめた人の集うスレ 13手目
【西の】斎藤慎太郎 七段★6【新王子】
糸谷哲郎 応援スレ9
社会人になっても通用しそうな棋士
【ギザギサハートの】古森悠太★1【俺が悪いのか】
●ID砲丸投げin将棋・チェス板(ノ・∀・)ノ⌒● 45投目
藤井聡太応援スレ Part329