トップページgamedev
1001コメント353KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2013/08/12(月) NY:AN:NY.ANID:RPqvnGkC
ゲーム製作における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/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
0148名前は開発中のものです。2013/09/10(火) 23:15:47.37ID:V2/hDCSO
>>147
A4のドキュメント一枚読み解くのに余裕で1〜2時間かかりますがなにか
辞書見てる時間の方が長くなる
0149名前は開発中のものです。2013/09/10(火) 23:40:07.87ID:eybXly7m
頻出単語は自然と覚えていくから、次第に短くなるだろ。
これからの人生のためにがんばれよ。
0150名前は開発中のものです。2013/09/11(水) 11:54:51.88ID:BysX3/47
それを意識しすぎるといつまで経ってもゲームが完成しない罠。
0151名前は開発中のものです。2013/09/11(水) 15:26:50.97ID:bZquC3JH
Google、Exciteなどの翻訳を使えば?
0152名前は開発中のものです。2013/09/11(水) 15:58:28.42ID:aRuN+GoD
プログラミング系は、簡単だと言われている技術系英語の中でも、さらに易しいからなあ。
それでも苦手だけどさ!
0153名前は開発中のものです。2013/09/11(水) 17:11:02.08ID:YgxYLD5F
中高生の時英語ちゃんと勉強しなかったのか?
0154名前は開発中のものです。2013/09/11(水) 17:11:28.66ID:FPOWazUR
ソースコードという共通言語があるし、よく使われる英単語は日本語ではカタカナ化してるだけだったり
するから比較的楽だよね。
0155名前は開発中のものです。2013/09/12(木) 01:37:54.02ID:OrRDW4M1
話変わるけど
OpenNIは、1から2になってI/Fがガラッと変わりやがりました。
1のサンプルを俺抽象化した時間は何だったんだー
イスラム圏ちょっとあんたらねえ

他人の俺仕様に無駄に振り回される自分の無能さが悔しい。
それはともかく情報共有の話が出たけど、
他人に振り回される側同士、手をクロスさせてお互い慰め合う・・・
・・・わけねーーーだろーー氏ねやー
0156名前は開発中のものです。2013/09/12(木) 09:03:46.94ID:YMhX5Xt0
そこは抽象化してて良かった、じゃ無いのか?
0157名前は開発中のものです。2013/09/12(木) 22:00:25.31ID:dx/Lp+eH
SDLってやつ触ってきたけど、あれ基本イベントドリブンでやらんといかんの?
DXライブラリみたいにやりたかったら、ウインドウ閉じたかどうかのイベント以外はポイポイ捨てて
キー入力は必要なときだけ呼び出せばいいんだよな
0158名前は開発中のものです。2013/09/13(金) 01:06:50.94ID:V6fOnFO4
JavaやC#やJavaScriptなんかで普通に目にするonKeyDownのようなイベントハンドラ、
OpenGLのGlutでもそう、win32の基本的なメッセージポンプ自体がそう。
そんな各種フレームワークやAPIで目にする極普通のイベントドリブン構造
0159名前は開発中のものです。2013/09/13(金) 10:11:52.47ID:1mn/tOWO
描画のループと処理のメインループを別のスレッドに分けるんだけど
描画と処理をわけるのなら描画のループだけ一秒間に60回回せばいいと思うんだけど
処理は何回回せば良いんだ?
100とかが無難なのかな、100カウントで一秒間ってすっきりするから
0160名前は開発中のものです。2013/09/13(金) 11:15:43.12ID:dnLRNGtp
>100カウントで一秒間ってすっきりするから

プログラマーの発想じゃねぇw
0161名前は開発中のものです。2013/09/13(金) 12:47:31.13ID:V6fOnFO4
普通は同期タイミングの設計によって結果的に決まるもんだよな
「何秒に一回にしたらいいんだ?」って発想じゃなくて
0162名前は開発中のものです。2013/09/13(金) 12:49:49.64ID:PBMoJzg4
>>159
それ一行目から既に「何のためにそれをやるのか」自分でよくわかってないだろ。
何だかよく分からないけど処理を分けるみたいだから真似すればきっとうまくいく
ということなら、まぁ、カーゴカルトかもな
0163名前は開発中のものです。2013/09/13(金) 15:36:03.37ID:1mn/tOWO
負荷軽量化のためじゃないの?
スレッド一つだとCPUのコア1つしか使わないから処理系ごとに分けて活用しようと思ったんだけど

他のスレッドで弄ってるリソースを参照しても大丈夫かなー?ぐらいの認識です
0164名前は開発中のものです。2013/09/13(金) 16:33:02.02ID:V6fOnFO4
基本的に大丈夫じゃないんだけど、そもそもマルチスレッド処理書いた事あるか?
同期とread/writeの保証についてちゃんと認識あるか?
その後、全体としてどういう処理の切り分けをして、どのタイミングで片方の結果をもう一方が拾うのか、とか
0165名前は開発中のものです。2013/09/13(金) 16:45:42.76ID:V6fOnFO4
ちなみに、JavaやC#だとsynchronizedやlock使ったマルチスレッド時の同期化タイミングを作れたり色々と簡素化する手段はあるけど、
基本的にC/C++はそれらをわかった上で自分で実装するので(と言っても意味わかってれば仕掛けだけなら屁でもないが)、
その辺の認識ちゃんと染み込んでるのかなと思った。

C/C++だとboost::thread使うとずいぶん簡素になるが、コードが簡素になっても動きわかってないとおかしな事になる
0166名前は開発中のものです。2013/09/13(金) 18:20:45.10ID:UxRsVe6Y
iphoneやandroidでは描画スレッドを分けるのが標準になってるんで
マルチスレッドの知識がなくても使わざるを得ないという事情もある
なので>>159は別に背伸びしてスレッド分けしようとしているというわけでもないと思うよ
0167名前は開発中のものです。2013/09/13(金) 21:01:10.73ID:NXjdNH8/
AndroidでUI用のスレッドで重い処理やってフリーズするような糞アプリは見た事ある
0168名前は開発中のものです。2013/09/14(土) 02:00:08.66ID:n+2NXmsR
>>159の話に合わせると、描画のループというのが、Androidゲーでは
所謂GLスレッドに相当。で、これの中でゲームのシミュレーション部の
計算もやるのって別に珍しくはないかと

使える計算資源を徹底的に使い倒す必要があるヘビー級のタイトルなら
(計算資源への)処理の充填率を高めるために比較的細かい粒度で処理の
スケジューリングをするような仕組みをわざわざ用意することもあるけど
(結果的にGLスレッドとシミュレーション部は別スレッドってことになるけど)
必要がなければやらない(複雑化を避ける)と言うのは普通にアリというか
むしろ推奨
0169名前は開発中のものです。2013/09/14(土) 12:28:27.62ID:jcJR5iuZ
Androidってメインループ中の処理に相当するupdateメソッドあったっけ?
つかGUIってメインループなくね?あったとしても同期取るハメになるはず
0170名前は開発中のものです。2013/09/14(土) 13:44:25.30ID:8QT9t2lk
AndroidでもNative Activityを使えばメインループは書けるみたい
普通のアプリではメインループ相当の事はOSがやるが
イベントハンドラで時間のかかる処理をすればフリーズする
0171名前は開発中のものです。2013/09/18(水) 20:14:35.06ID:H6vsU86s
C++11のusingエイリアス使ってる人いない?

template <class T>
using Value2 = std::array<T, 2>;

ってやりたいのにIDE(eclipse CDT + gcc4.8)が構文エラー扱いにしてきて困る
そのくせコンパイルは通るし実行もできるからややこしい

usingエイリアスならtypedefにテンプレート引数使えるって聞いたから
必死にgcc環境作ったのに悲しい悔しいtasukete
0172名前は開発中のものです。2013/09/19(木) 08:43:08.81ID:UurgX65x
コマンドのオプションもきちんと書こう
0173名前は開発中のものです。2013/09/24(火) 00:07:52.02ID:NDARxT+J
方向ベクトルの指す方向にモデルを向けたいんですけど、どうしたらいいですか?
条件があって、正面を+z方向とした時にx軸回転した後にz軸回転だけで表現したいです。
0174名前は開発中のものです。2013/09/24(火) 20:17:12.39ID:kERDBedE
z軸で回転させても向きは変わらんのでは?
0175名前は開発中のものです。2013/09/24(火) 20:42:59.75ID:kERDBedE
そんなことないか

方向{x,y,z}
x軸atan(y,z)
z軸atan(y,x)
で回転させれば向くのかな
頭が地面に向いたりしそうな気がするけど
0176名前は開発中のものです。2013/09/25(水) 22:20:53.44ID:SvES6jLU
今ネットワークゲームを独学で作ってるんだけど
一応ゲーム中に複数のクライアントをサーバーとのやり取りさせることはできたんだけど
ルームの入退室は良いとして、ゲーム開始させる場合にサーバーとクライアントでどうやってゲーム開始を同期させればいいのかわかんないんだけど
アドバイスしてくれ
0177名前は開発中のものです。2013/09/25(水) 22:51:08.11ID:IcW1ptMQ
ぱっと思い付くので言うと、例えばクライアントはサーバをポーリングしてるとして、
クライアント側全員から開始の合図が来た段階でサーバがタイムスタンプ発行し、
各クライアントはそのタイムスタンプから5秒経過したら開始とかすれば、
ポーリングがまちまちなクライアント同士で同期出来ると思う。
0178名前は開発中のものです。2013/09/25(水) 23:04:58.92ID:IcW1ptMQ
もうちょっと言っておくと、ポーリングの段階でサーバからはタイムスタンプをもらっておき、
それで各々クライアントは、まちまちな自分の時計とサーバタイムのオフセットを得て保持しておいて、

参加者全員がスタート伝達したタイミングで、ポーリング結果には開始時刻が返送(例えば5秒後)され、
あとは各クライアントが自分のタイムとオフセットから計算して、そのサーバタイムになったら実行、ってするだけって話。

簡単な仕掛けだが、一応それっぽい動作にはなると思う。
0179名前は開発中のものです。2013/09/27(金) 08:33:08.87ID:SP2W5RH2
ポーリングってなに
0180名前は開発中のものです。2013/09/27(金) 12:19:15.07ID:XzbTruZP
googleからアク禁食らってる人
久しぶりに見た
0181名前は開発中のものです。2013/09/27(金) 12:49:19.82ID:h9p/NQii
俺ボーリング下手なんだよな
重さ12でやってるけどよく爪が割れるわ
0182名前は開発中のものです。2013/09/27(金) 16:19:12.68ID:G+vvY9w/
ほらな、やっぱ基本情報ぐらい取っておいたほうが
基礎的な単語の意味がわかっていいんだよ
0183名前は開発中のものです。2013/09/27(金) 16:25:15.78ID:dN57jsSQ
ポーリング

while(1)
{
  if(...)
  {
    break;
  }
}
0184名前は開発中のものです。2013/09/27(金) 16:50:51.96ID:Ftl1F3xi
基本情報にポーリングなんてでないだろ
0185名前は開発中のものです。2013/09/27(金) 17:43:19.40ID:W5Ecfj6h
お前ら本当に普段ソフト作ってるの?
0186名前は開発中のものです。2013/09/27(金) 18:07:48.07ID:MDl2Sh2q
基本情報()
0187名前は開発中のものです。2013/09/27(金) 18:16:14.47ID:dN57jsSQ
ゆってぃコレクション
http://pics.dmm.co.jp/digital/video/11parm00001/11parm00001jp-8.jpg
http://pics.dmm.co.jp/digital/video/11parm00001/11parm00001jp-10.jpg
http://pics.dmm.co.jp/digital/video/11parm00001/11parm00001jp-11.jpg
http://pics.dmm.co.jp/digital/video/11parm00002/11parm00002jp-15.jpg
http://pics.dmm.co.jp/digital/video/11parm00002/11parm00002jp-16.jpg
http://pics.dmm.co.jp/digital/video/11parm00003/11parm00003jp-20.jpg
http://pics.dmm.co.jp/digital/video/11parm00006/11parm00006jp-7.jpg
http://pics.dmm.co.jp/digital/video/11parm00006/11parm00006jp-8.jpg
http://www.p-jinriki.com/pc/img/talentpic/l/pic_tohdohyouta_mypage.jpg
0188名前は開発中のものです。2013/09/27(金) 18:35:55.36ID:eEyIdjJu
情報処理技術者ってイマイチバランス良くないよな
無駄にハードの知識が必要だったりプログラムの知識は
関数ポインタやオブジェクト指向すら不要だったり
0189名前は開発中のものです。2013/09/27(金) 19:40:15.31ID:mYXhuyuG
そんな資格を取る暇があったら実際にゲームを作ったりネットで調べ物をした方がよほど有意義ではないか
0190名前は開発中のものです。2013/09/27(金) 19:48:23.09ID:JDEMfhWo
どうせならWindowsのドライバーを作れるような知識を出してくれないかと
もしくはusb3.0とか扱えるような知識を
0191名前は開発中のものです。2013/09/27(金) 19:55:23.31ID:XzbTruZP
まあ基本/応用情報etcは(一般的な会社を対象とした)就職活動用とか
入社後のポイント稼ぎ用、という印象はある
職人様方には無用なものだろうね
0192名前は開発中のものです。2013/09/27(金) 19:58:37.04ID:XzbTruZP
すまん俺のレス>>191はスルーしてくれ
0193名前は開発中のものです。2013/09/27(金) 20:28:52.37ID:NDPmfmjE
(´・ω・`)イヤダ!
0194名前は開発中のものです。2013/09/27(金) 20:42:18.24ID:OrreSYwI
(´・ω・`)イヤダ!
0195名前は開発中のものです。2013/09/27(金) 21:26:58.83ID:t+y3xWop
>>185
最近、ゲハ住人っぽいのがいるね。評論家気取りうぜぇ。
0196名前は開発中のものです。2013/09/27(金) 22:53:02.77ID:PF1r05ox
>>176-178
うおお、面白い。そういうやり方があるんだね
横からだけど、最近同期の方法とかに悩んでたから参考になります

2人対戦のゲームをUDPで完全に同期させる方法はネットにいろいろ参考になる資料があるんだけど
クライアントサーバで一定時間毎に同期させるような方法はあまり資料がない・・・
ゲームのジャンルやルールによってやり方が違いすぎるからかな
0197名前は開発中のものです。2013/09/28(土) 06:23:44.02ID:5v1wAOlF
>>177
>>178
できました
ありがとうございました
0198名前は開発中のものです。2013/09/28(土) 10:29:41.31ID:Y+bKGXfA
>>184
でるよ
>>188
総合的な知識が幅広く得られるのがメリット
プログラマは狭く深くになりがちだからそれを補える意味は大きい
関数ポインタもオブジェクト指向もでるよ
C言語の知識を補うならC言語検定もある
>>190
ベンダーべったりの知識はベンダー試験
マイクロソフトは充実してるよ
0199名前は開発中のものです。2013/09/28(土) 12:29:50.40ID:/fMP8d9m
資格試験って就職時の自分に対する泊付だろ
知識を得るならその手の本を読めばいいだけ
0200名前は開発中のものです。2013/09/28(土) 13:32:24.05ID:ihDNaDhE
まあ独占資格以外の資格なんて基本は箔付けるためのもんでしょ
0201名前は開発中のものです。2013/09/28(土) 15:50:16.20ID:nDU4ITku
一昔前の一般的なクリックゲーMMOってどういう風に同期取ってんのかな?
キャラクターの位置とかはけっこうズレるし、敵にダメージ入るタイミングはズレたりはするけど、
死んでるはずの敵からの攻撃からダメージ受けることってなかったよね?(PSO2は除く)

特に派手なアクション要素がなければ、各クライアント側で起きたイベントをサーバで集めて
タイムスタンプとかとあわせて整合性を取って、発生し得るイベントを全クライアントに送るって感じ?
0202名前は開発中のものです。2013/09/28(土) 18:14:48.97ID:RXTSyO+4
「MMORPG」は非同期/サーバー集中型だよ
ファンタシースターオンライン2は「MORPG」で非同期型/クライアント分散処理型ね
0203名前は開発中のものです。2013/09/28(土) 18:34:11.99ID:ZZQuEZ6j
イベントはサーバー側で一括でまとめなきゃダメっしょ
クライアントは移動とか攻撃とかリクエスト投げるだけじゃないと
俺のカスタムクライアントが9999ダメージを連発させるぜ
0204名前は開発中のものです。2013/09/28(土) 20:01:55.84ID:mp5f+xUz
>>198
へー、C言語検定なんてものがあったのか
それは知らなかった
腕試しに受けてみようかな
0205名前は開発中のものです。2013/09/28(土) 21:24:48.68ID:BqaH8pr+
はじめてのC検定
0206名前は開発中のものです。2013/09/28(土) 22:25:03.13ID:Y1ge1Ybt
>>204
専門学校1年の秋位に受けさせるレベルで超簡単だぞ
0207名前は開発中のものです。2013/09/29(日) 07:44:25.71ID:hanumcZp
クライアントが発生させた全てのイベントと、キャラクターの座標と角度だけ送信すればなんとかなりそう

全てのイベントの定義には移動や方向転換も含んでて情報が若干重複するから
座標と角度は一秒に一回とかでもいいかも

攻撃判定とかはサーバーで処理するのかな?
それともクライアントで判定して結果だけおくるのか
チートされると弱いけど。
0208名前は開発中のものです。2013/09/29(日) 17:06:00.34ID:vFW2ihcI
ドラクエみたいなRPGのランダムエンカウントだけど、それをC++で実現するにはどうしたらいいのかな?
戦闘に関する処理は全てBattleっていう関数が処理してるという前提。
モンスターのLv・HP・攻撃力とかの初期値は、全てデータベースとして別のbinファイルに存在する。

今考えてるのは、
戦闘開始→乱数で「敵の数」「出現する敵のID」取得
Monsterっていうクラスを用意する。
コンストラクタで「出現する敵のID」を入力引数にする。
IDでデータベースから敵情報をリードしてくる。
リードしてきた敵のパラメータをprivateの変数に格納する。

みたいな感じになるのだろうか
0209名前は開発中のものです。2013/09/29(日) 17:46:39.51ID:Vo2lxUIs
モンスターのテンプレートなデータのクラスと実体のクラスは分けてるよね?
それでいいんじゃね?
0210名前は開発中のものです。2013/09/29(日) 18:18:34.45ID:Ov6Kwx0j
ランダムエンカウントって遭遇した敵の数や種類がランダムなんじゃなくて
フィールド内でキャラクターが何歩あるいたら敵に遭遇するかがランダムなことなんじゃないの?
0211名前は開発中のものです。2013/09/29(日) 18:23:06.00ID:xezVSvWv
俺もそっちかと思ってたw
0212名前は開発中のものです。2013/09/29(日) 18:56:18.52ID:vFW2ihcI
>>209
うーん
戦闘が始まったら関数Battleを呼ぶ
Battle内でMonsterクラスの実体monster_nowを用意する
monster_nowは配列で数個(モンスターの数分)用意
monster_nowはモンスター種別IDを基にモンスターデータベースから敵データをリードする
HPを0にすると戦闘終了処理をした後にBattle関数がリターンする

・・・という作りを考えてるんだけど、それが>>209が言ってることに当たるのかな?

>>210-211
完全にそうですねwすいません
0213名前は開発中のものです。2013/09/29(日) 19:00:09.19ID:vFW2ihcI
補足すると
class Monster
{
private:
int HP;
int MP;
public:
Monster(int ID); // 種別IDを基にデータをリードするコンストラクタ
void Action(未定); // 敵と味方とのデータのやりとりの予定
~Monster(); // 経験値などの戦闘終了後の処理
};
こんな感じ
Battle関数が呼ばれるために
int Battle()
{
乱数で敵ID・数取得
  Monster mob[敵の数];
  〜〜
}

みたいな感じ
0214名前は開発中のものです。2013/09/29(日) 19:01:24.28ID:DKLo6UIS
「出現する敵のID」は乱数で直接呼び出すんじゃなくて
出現する敵の種類と確率を定めたテーブル作ってそっちから取得した方がいいとオモ

あとこれ出てくる敵は必ず1種類のみなのか?
0215名前は開発中のものです。2013/09/29(日) 19:08:23.21ID:DKLo6UIS
まず乱数で数を決めて、その後種類を割り振っていくって事か
0216名前は開発中のものです。2013/09/29(日) 19:08:35.81ID:UYO2pFri
パズドラなんかだと乱数で選ばれた敵モンスターと、あらかじめ決められたモンスター場合の2パターンあるよね
0217名前は開発中のものです。2013/09/29(日) 19:10:52.74ID:UYO2pFri
ダイレクトエックスで3dゲーム作るのって、1から学び始めたらどれぐらいかかる?

dxライブラリとかのフレームワークで3dゲームは一度だけ作った
0218名前は開発中のものです。2013/09/29(日) 19:39:10.59ID:g9GnKKpA
人生におけるいろんな可能性をゲームプログラミングのために捨てる覚悟が必要になるね
0219名前は開発中のものです。2013/09/29(日) 20:08:25.90ID:/sjQW5wJ
本人の能力と過去の蓄積と応用力次第だからそんな大変でも無いかもしれないし、完全に無理かもしれない
02202092013/09/29(日) 20:36:17.46ID:Vo2lxUIs
あー、違う違う。
class CMonsterData
{
int hpmax; //最大体力
}
class CMonster
{
CMonsterData *monsterdata;
int hp; //残り体力
}
こんな感じで作成する。
各個体で別々にインスタンスを作らないといけないのは分かると思う。
アクションするモンスターはデータと別に作る。
データクラスはアプリケーション実行中には絶対にデータを弄らない。
弄るとややこしくなるから。
戦闘が終わればCMonsterを綺麗さっぱりdeleteすれば分かりやすい。
自分はこんな感じで作ってる。

因みに戦闘クラスは
class CBattle
{
CMonster *monsters[敵の数];
};
という感じでポインタを持たせる。
0221名前は開発中のものです。2013/09/29(日) 21:07:58.43ID:vFW2ihcI
>>214-215
数に関してはそんな感じです
なるほど、テーブル使ったほうが確かにイイですね
そしてそのテーブルを扱うためだけの関数を作ろうと思います。

>>220
ふむ・・・少し難しいですね
その方法だとどこでモンスターを指定できるのかが良く分かりません
CBattleにコンストラクタでモンスター種別(ID)を引数にして、
IDによって持たせるポインタを変える…というのは出来ないですよね?
0222名前は開発中のものです。2013/09/29(日) 21:31:00.15ID:hanumcZp
>>220
モンスタークラスのコンストラクタにモンスターデータクラスのインスタンス渡して、
モンスターデータクラスのコンストラクタにはプライマリキー渡して外部ファイルの読み込みとか
02232092013/09/29(日) 22:34:23.36ID:Vo2lxUIs
>>221
モンスターの指定はCMonsterのコンストラクタか初期化関数で
CMonsterDataのポインタを渡せばよい。
イメージとしてはCMonsterDataの統轄クラスがCMonsterを吐き出す工場メソッドを作る感じ。
敵の種類のランダム指定もそのメソッドでやらせればよい。

CBattleについては設計思想にもよると思うが、個人的にはstateパターンを薦めたい。
例えばこんな感じ。
class CState
{
protected:
CMonsterData統轄クラス *monsterdatamanager; //参照するのみ
public:
virtual int OnClick(int x,int y){return 0;} //マウス操作はあまりしないと思うが
};
class CBattle : public CState
{
CMonster *monsters[敵の数];
};
class CFieldMap : public CState
{
};
0224名前は開発中のものです。2013/09/29(日) 23:46:36.57ID:2IWoMpj3
>>205
実家で技術評論社の「はじめてのC」読んでたらオカンと姉ちゃんがすげー剣幕で本をぶんどって行ったことがあったなー。
中身を確認した後顔真っ赤にして戻っていったが。
セックスの教本を居間で読むような度胸が俺にあるわけないでしょう?
0225名前は開発中のものです。2013/09/29(日) 23:55:55.73ID:CMDsZPaO
ワラタ
0226名前は開発中のものです。2013/09/30(月) 20:56:01.83ID:dFNgJ59l
>>203
ゲームによる。アーケードなんかはチート不能だから瞬着の当たり判定とか普通にあるよ
参考になるかどうか分からないけど、ボーダーブレイクの主武器は発砲時にレティクルが
敵に重なってれば「当たり」。クライアント側(プレイヤーの筐体側)で判定してる
わかりやすい例かと
0227名前は開発中のものです。2013/10/01(火) 18:12:36.03ID:IljiT9fF
アクションのネトゲってのも1つの夢ではあるけど
逆に非同期で実現できる面白い仕掛けのゲームも考えてみたいもんだね
0228名前は開発中のものです。2013/10/01(火) 21:39:39.78ID:dkNVaEwC
面白いフリーソフト レビュー&攻略質問スレPart220
ID:l+J8o0sa
http://engawa.2ch.net/test/read.cgi/gameama/1374691097/141
http://engawa.2ch.net/test/read.cgi/gameama/1374691097/144
http://engawa.2ch.net/test/read.cgi/gameama/1374691097/146
0229名前は開発中のものです。2013/10/02(水) 10:08:22.51ID:MEhezrLj
報告乙です
素直に巣に帰ったようで。ありがたい
0230名前は開発中のものです。2013/10/02(水) 18:28:05.54ID:uhqaKlgz
テンプレートメタプログラミングとかいう言葉を最近知ったんだけどさ
コンパイル時に外部リソースを実行ファイルに取り込むのって外部リソースのメリットを潰しちゃうかな?

具体的には、箱庭ゲーとかでのイベント発生時刻(タイムラインっていうの?)とか。

逆に、ユーザーにいじって欲しくないデータは隠せそうだけど、それはそれでプログラムに直書きした定数とどう違うのという疑問もある。

みんなconstexprとか使ってんの?
0231名前は開発中のものです。2013/10/02(水) 18:29:13.84ID:uhqaKlgz
我ながら意味深な文章になってしまった
0232名前は開発中のものです。2013/10/02(水) 19:25:27.70ID:dQghyWFh
真ん中らへんがメタプロの要素なくて文章が繋がってなくて意味がわからんのだが、
それはコピペミスか何かで本当は

>テンプレートメタプログラミングとかいう言葉を最近知ったんだけどさ
>みんなconstexprとか使ってんの?

っていうレスだったのかな?

それなら別に、C++11になるって制約以外には付け得なキーワードだから
付けられるとこには付けとくといいんでないかな
0233名前は開発中のものです。2013/10/02(水) 20:18:22.46ID:Xkv5bAG0
もっぱら面倒臭いかどうかだけで判断してる。
バランス調整でコンパイルがメンドかったら外部ファイル化。
バイナリファイル解析する奴なんてそうザラにいないし、
いざとなれば暗号化すればいいし。
0234名前は開発中のものです。2013/10/02(水) 22:39:00.42ID:LQEQgpgV
C++はネイティブコードを生成するからか
コンパイルが長杉
0235名前は開発中のものです。2013/10/03(木) 00:06:52.85ID:ZwyUWloh
ビルドじゃなくてコンパイルが?
includeが深いとか翻訳単位が多くてコンパイルとリンクが多いと長い事はあるけど
0236名前は開発中のものです。2013/10/03(木) 01:34:00.02ID:SAzGamr4
TMPをゲーム製作で使うことってほとんどなくね
0237名前は開発中のものです。2013/10/03(木) 02:02:11.52ID:S3Z1Fz0v
STLならよく使うが?
0238名前は開発中のものです。2013/10/03(木) 06:56:22.10ID:wIH7+l3L
ビルドとコンパイルってどう違うんだ

ビルド∋コンパイルってことか?
0239名前は開発中のものです。2013/10/03(木) 07:33:06.73ID:CsDHW8Wi
コンパイル=.objファイルの生成
リンク=出来た.objから実行ファイルの生成
ビルド=それらの総称
って事だろ?
今日日、一々使い分ける事もないだろ。メンドくせぇな(^p^)
0240名前は開発中のものです。2013/10/03(木) 07:44:02.31ID:kgKMfZTo
>>234
個人レベルの開発規模なら、昨今ではわりと珍しい言い分だと思うかな

普及価格帯のPCの性能、SSDの普及率、こうした背景の中でPCHを使ってれば
設計が多少ゴチャってても、コードを一部修正した後のビルドは大抵一瞬で終わる

それでも遅いなら、ファイル(ソースやヘッダ)間の依存関係がスパゲッティ状態で
一部の修正が「不必要に」多数のファイルに影響を及ぼしてるとか、ビルド設定が
腐ってるとか、その辺に原因がありそう
0241名前は開発中のものです。2013/10/03(木) 08:36:21.26ID:1JpHSTD+
複数プロセッサのコンパイルが有効になってないとか。
0242名前は開発中のものです。2013/10/03(木) 08:42:00.57ID:vXordIiz
ビルドが速い言語の場合、ビルドから実行まで1秒もかからん
C++はまだ数秒かかるでしょ(Hello, Worldであっても)
多少は高性能な環境だと仮定しても一瞬は盛りすぎ
(そもそも開発環境は一般的な最新PCより劣る場合が多い)
0243名前は開発中のものです。2013/10/03(木) 08:56:12.82ID:edQZBgYu
バランス調整関係の定数を一つのヘッダファイルに纏めると
加速度的にコンパイル時間は長くなる。
逆に、そうならないように各ヘッダで宣言すると
今度は一目で見通せなくなるから面倒臭い。
定数名で検索かければいいじゃねーかと思っても、
定数名なんて覚えてない。
そもそも、バランス調整ごときでIDE立ち上げるのも面倒臭い。
何十回もリトライするケースもあるしね。
0244名前は開発中のものです。2013/10/03(木) 09:22:37.44ID:7ILxSOK4
定数ならextern使えばいいんじゃね?
0245名前は開発中のものです。2013/10/03(木) 09:32:31.11ID:8Paj6jJk
変数考えるのも面倒だしコンパイル時間かかるしで
よく使う変数をまとめた初期化込みGet関数込みのクラスを継承させて
よほど特殊,重要な値じゃないかぎりそこでやりくりしてる

余分な変数大量に宣言&どこのクラスかで同じ変数でも意味が変わって
他人が見てもよくわからんから設計上よろしくないと思うが
普通はいちいちヘッダわけていろんな変数つけんの?

変数格納クラスに変数追加しないかぎりコンパイル時間は気にならない

副作用で変数の節約と機能ごとのカプセル化がうまくなった気がする
0246名前は開発中のものです。2013/10/03(木) 10:27:51.09ID:aQc+PiUU
>>239
"総称"じゃないよ。コンパイルとリンクのステップを順に実行して、最終アウトプットに組み上げるのが、言葉通りビルド。
総称って言っちゃうと語弊がある。

あと今日日分けないって意味だと、コンパイルじゃなくてビルドって言う。
当たり前の事なのでめんどくさい話じゃない。ちゃんと正確に理解しなさい。
0247名前は開発中のものです。2013/10/03(木) 20:24:47.60ID:cC3MwkNs
>>242
・ビルドが速い言語
・ハロワのビルドに数秒かかるC++

これらについての具体的な言語処理系(の製品名)を挙げてくれるとありがたいです。
ハロワ数秒を叩き出すPC環境についても差し支えない範囲でお願いします
あとmakefileかプロジェクトファイル、コンパイルオプションもあると助かります

一応、一般的な最新PCより劣る環境として
CPU:Core i7-860(Lynnfield世代)
MEM:PC3-12800 2GBx2
HDD:1TB 7200rpm
VGA:GTX260(216SP) GDDR3 896MB 2-way
SND:SB X-Fi XtremeGamer
OS:Win7 Pro 64bit (現在はSP1)

4年前にバイトして買ったパーツがこんな感じで、今は押入れの中で
眠ってるんですが、寄せ集めて検証用に一台組んで試してみようかと

SSDNow V100 SV100S2/64Gという3000円程度のローエンドなSSDも
たまたまあるので、これも使ってみようかなと
■ このスレッドは過去ログ倉庫に格納されています