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

このエントリーをはてなブックマークに追加
1名前は開発中のものです。
ゲーム製作における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名前は開発中のものです。:2013/01/11(金) 19:24:51.25 ID:pM3KIWAz
>>1

あのまま落ちるかと思った
3名前は開発中のものです。:2013/01/11(金) 19:29:15.65 ID:cnhrGhOQ
スマホの専ブラの次スレ立て機能マジ便利
テンプレ単純だとさくっと作れる
4名前は開発中のものです。:2013/01/11(金) 20:15:01.89 ID:TAS2BFVS
>>1乙Zz
5名前は開発中のものです。:2013/01/11(金) 20:22:57.85 ID:I89vcUUk
>>1
6名前は開発中のものです。:2013/01/11(金) 21:43:32.49 ID:iPyCv7X+
前スレの1000>1000ならC++が廃れてもう少し普通の人間に扱い易い言語に置き換わる

お前が作れ
いやまぁ、俺も作ってはいるんだけどな……
7名前は開発中のものです。:2013/01/12(土) 06:59:24.35 ID:AyCyeYVC
C++11はだいぶん使いやすいぞ
8名前は開発中のものです。:2013/01/12(土) 09:42:32.90 ID:/dzovcJU
>>Dがあるやん
9名前は開発中のものです。:2013/01/12(土) 15:28:31.51 ID:HV5IkUgy
>>989
GUI周りは業務システムも含めて先人の知恵が積み上がって体系化されてる
部分なので既存のライブラリとか参考にするといいと思うよ。ゲーム系なら
CEGUIとか使ってみるだけでも何か参考になるかも

あと、我流で組み上げた後で構わないので
http://itpro.nikkeibp.co.jp/article/COLUMN/20061106/252691/
こういう類の記事にざーっと目を通してみるのもあり。関連キーワードを
ゴーグル先生で手繰ってけば我流で組み上げた経験知からすんなり読めるかも
10名前は開発中のものです。:2013/01/12(土) 17:18:13.47 ID:iyE/PUWV
>>3
そんな機能あるのか!!
アプリ名教えて
11名前は開発中のものです。:2013/01/12(土) 17:29:41.34 ID:EJEGVmKN
>>3じゃないけどBB2Cはついてるよ
12名前は開発中のものです。:2013/01/12(土) 17:48:03.29 ID:Q2O9dlnY
最新版への自動更新とかって、どうやってる?

なんとなくのやり方は想像できる(固定URLにメタデータファイルを置いて自身のバージョンと比較する等)んだけど
俺が知らないだけで、世の中そういうライブラリやツール、サービスがあるのかなって。
13名前は開発中のものです。:2013/01/12(土) 17:54:25.74 ID:TThjQnMm
公式サイトでお知らせしてるよ
14名前は開発中のものです。:2013/01/12(土) 18:58:00.43 ID:iyE/PUWV
>>12
そういう処理を自動的にやってくれるフリーソフトあるよ
起動するときにそのフリーソフトを起動して、あとは設定通りにバージョンチェックして目的のアプリを起動
作者側が自分のアプリにそれを組み込んで配布していいのかどうかはわからないけど
15名前は開発中のものです。:2013/01/12(土) 19:39:40.92 ID:EJEGVmKN
>>12
こういうやつ?
http://code.google.com/p/wyupdate/

でも通信要素がないゲームの場合は“自動”更新機能とかあんま入れないよね

通信対戦機能もインターネットスコアランキング機能も無い、スタンドアロン
だと思ってたソフトが不意に通信始めてセキュリティソフトが警告ダイアログ
出したら「何これキモイ」って思われたりするし、神経質なユーザーから
クレーム来たり、対応が面倒くさいよ?痛くもない腹を探られるのはあんま
気分のいいもんじゃないから余計なことしないという結論になりやすいと思う

一方、最初から通信要素ありのゲームなら前述の懸念もなく、自動更新機能を
組み込むくらいそのプログラマにとっては造作もないことなので、そもそも
>>12みたいな質問には至らなかったり
16名前は開発中のものです。:2013/01/12(土) 20:32:03.97 ID:EJEGVmKN
自動更新機能だけ組み込むならこっちかな
http://wyday.com/wybuild/help/automatic-updates/
17名前は開発中のものです。:2013/01/12(土) 21:18:07.58 ID:hNe4SR0S
>>10
Androidなら2chMate
1812:2013/01/12(土) 22:39:46.59 ID:Q2O9dlnY
>>13
ぶっちゃけそれでも問題ないんだけどね。
タイトル画面、あるいはゲーム起動時に出るダイアログに、
「ブラウザで公式サイトを開く」というボタンを付けるだけでも違いそうだし。

>>14
そうそうそんな感じの。
自分の場合は同人/インディーズゲーム想定だが、この界隈でメジャーなものがあるのだろうかと。

>>15
ソフトウェア名でぐぐってみたけど、結構メジャーっぽいね。検討してみる。

別にゲーム起動時に自動じゃなくても、「最新版をチェック」ボタン→「更新」ボタン押下で自動的にDL&置換でもいいんだけどさ。
ユーザ自身に、ウェブサイトからダウンロードして上書きしてもらうという部分を省略出来ればいいので。

小規模なものでよければ、通信前提のものは作ったことあるよ。
ロビーもマッチングも無い、ただサーバ側のIPアドレスを直打ちするような代物で、
バージョン管理も、ホストとクライアントのバージョン情報が違ったら弾く、くらいしかやってなかったけど。
19名前は開発中のものです。:2013/01/12(土) 22:58:33.88 ID:TAdoT1my
実行ファイルの更新したい場合ってどうすんの?
20名前は開発中のものです。:2013/01/12(土) 23:12:20.43 ID:Q2O9dlnY
>>19
幾つかパターンはあるようだが、その一例を挙げると

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

こんな感じ。
21名前は開発中のものです。:2013/01/13(日) 00:05:45.40 ID:dL2ucEoK
一つ一つ考えていけば難しいことがないように思えるね。
アップデートするデータはSkydriveとかにおいてできるのかな。
アップデート失敗したら手動上書きでやってもらうことも出来れば助かるな。
22名前は開発中のものです。:2013/01/13(日) 00:16:49.11 ID:QYqOR8Li
そういうストレージサービスをシステムに勝手に組み込むのってアリなのかな?
サーバ機能を提供してるわけじゃないから怒られそうw
23名前は開発中のものです。:2013/01/13(日) 04:58:47.24 ID:xiYKJRHb
>>20
googleが1秒以内に検索結果を出してくるネット上で「そんなの知ってた」の後出しか…
ここまでの馬鹿は初めて見た
24名前は開発中のものです。:2013/01/13(日) 09:23:40.55 ID:q2QWbCyo
「『ググれ』で追い返せよ」で済むことを
ここまで汚い言い回しにすることができるのか
ある意味感動ものだわ
ここまでのバカは初めて見た
25名前は開発中のものです。:2013/01/13(日) 13:47:08.32 ID:4cUok40X
とりあえず嫌味言おうとするのは何とかならんのかおまえら
26名前は開発中のものです。:2013/01/13(日) 13:52:41.73 ID:ELVO7BEX
せやな
人間関係悪くするだけでっしゃろ
いづれ己にも返ってくっとばい
27名前は開発中のものです。:2013/01/13(日) 16:38:18.62 ID:DnogiF6f
そもそも20のどこに後出し要素があったのか…
28名前は開発中のものです。:2013/01/13(日) 16:56:35.80 ID:i9DRXkqW
12からの流れはそう見える
29名前は開発中のものです。:2013/01/13(日) 17:08:50.06 ID:DnogiF6f
そうか、それは失礼した。
30名前は開発中のものです。:2013/01/13(日) 20:38:41.30 ID:r7Z90TkB
>>18
同人か。通信対応の作品がたまーにパッチの自動取得(適用)機能搭載してるね
実際にやるサークルが少ない(or搭載したい機能としてあまり話題にならない)のは
ゲームにとってはやっぱり枝葉の部分だからってのが一番大きいかもねぇ
(>>15で書いたような懸念も絡んでくると組み込む意欲下がるしね)

個人的には、p2p(BitTorrent)で自分のゲームが同人ソフト詰め合わせzipの中に
あるのがたまにムカついてて、不正使用防止(主に中華対策)のためにゲーム内容に
何らかの通信要素を盛り込んでユーザー認証ありの常時接続必須の仕組みにして
パッチもログイン状態でないと入手不可みたいにしたいなーとかたまに考えるけど
運用コスト考えるとどうしても二の足を踏むんだよね

>>21,22
利用規約よく読んでから使えばいいと思うよ。API公開されてるんだしさ
31名前は開発中のものです。:2013/01/13(日) 21:01:23.96 ID:Av2ygObS
中華対策なら、禁止ワード入れとけば良いんじゃね?
32名前は開発中のものです。:2013/01/13(日) 21:16:14.11 ID:H+lKOq2B
邪悪江沢民とか?んー、狙い撃ちしてると露骨に分かると逆恨みされそうだしなぁw
33名前は開発中のものです。:2013/01/13(日) 21:46:43.32 ID:dL2ucEoK
p2pネットワークに更新データ放流してサーバー無しで自動更新サービス運営ってできるのかな?
p2pよくわかってないけど
34名前は開発中のものです。:2013/01/13(日) 22:00:01.75 ID:DnogiF6f
>>33
かつてWinnyだったかが、クライアントのバージョン情報も一緒に流すようにしていて、
P2Pネットワーク上で新バージョンを見つけたら、ユーザに更新を促すという仕組みをとっていたと聞いたことがある。

実際の更新データは、流石にウェブからDLだったと思うけれど。
35名前は開発中のものです。:2013/01/13(日) 22:15:46.84 ID:r7Z90TkB
>>33
そろそろ学習しような
36名前は開発中のものです。:2013/01/13(日) 22:19:18.47 ID:CeZSCTsQ
怒っていいぞ
37名前は開発中のものです。:2013/01/13(日) 22:51:06.66 ID:b51sZUkj
p2pで共有してもファイルが正当なものかチェックする機能は最低限必要だし
サーバなしってわけにはいかんのじゃないかな
38名前は開発中のものです。:2013/01/13(日) 23:57:31.03 ID:r7Z90TkB
・配信の制御ができるのか。何らかのミスで配信停止したくてもできないとしたら?
・人気のない(マイナーな)ファイルとP2Pネットワークの組み合わせは適切なのか?
・ゲームプログラムに名の知れたP2Pネットワーク(仮にBitTorrentとしようか)の
クライアント機能を組み込むとして、それはユーザーが望む結果になるのか?
39名前は開発中のものです。:2013/01/13(日) 23:59:08.50 ID:r7Z90TkB
例えばBitTorrentクライアント機能を搭載するとして、それが活性状態になる事で
生じる副作用、色々あるよね。昨今のISPが実施してるDPIによる帯域制御に
ひっかかったりしたらユーザーは普通にブチギレると思うんだよね。だいたい
知らん間に勝手にP2PネットワークのピアPCにされてるんだから、そらもう
「何これキモ杉」って思われて2ちゃんに晒されちゃうと思うよ
40名前は開発中のものです。:2013/01/14(月) 19:19:19.41 ID:/Klf/M/O
MacOSのゲームをWindows用に移植できる技術を持った人いますか?
頼みたいことがあります
41名前は開発中のものです。:2013/01/14(月) 20:18:52.59 ID:eegFuPl4
予算は何百万から?
42名前は開発中のものです。:2013/01/14(月) 20:21:20.33 ID:49R1DSKh
>>40
スレ違い

依頼はここでよろしく

総合発表&雑談スレッド その3
http://toro.2ch.net/test/read.cgi/gamedev/1216633635/


一緒に作る人の募集ならここでよろしく

ゲーム製作メンバー募集スレ 13人目
http://toro.2ch.net/test/read.cgi/gamedev/1308155404/
43名前は開発中のものです。:2013/01/14(月) 20:27:15.17 ID:/Klf/M/O
>>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名前は開発中のものです。:2013/01/14(月) 20:28:01.03 ID:qmV0FD8r
>>42が読めないのかよ。
45名前は開発中のものです。:2013/01/14(月) 20:33:30.62 ID:/Klf/M/O
フォーラムはここです
http://www.oberin.com/index.php?name=PNphpBB2&file=viewtopic&p=70004&newlang=eng

ゲームはObeirnというゲームです
UO風のゲームです
Macでしか動きませんWindowsでも動くようにしてほしいです

古くからMacプログラミングに知識ある人、ゲームプログラマーの方
移植してくださいお願いです
46名前は開発中のものです。:2013/01/14(月) 21:06:48.45 ID:yDWTFFjN
話が通じない(話を聞かない)人間なんだなぁ、という事はよく伝わってくる
47名前は開発中のものです。:2013/01/14(月) 21:43:05.60 ID:laeS6h7o
人の言葉らしき文字列を自動投稿するスクリプトでしょ
48名前は開発中のものです。:2013/01/14(月) 22:16:19.17 ID:tFGS7qey
多分C++で書かれたWindowsプログラムに違いない。
49名前は開発中のものです。:2013/01/15(火) 00:01:09.21 ID:LJeU0WyS
移植してください
頼みますよ
リメイクでもいいです
50名前は開発中のものです。:2013/01/15(火) 07:09:20.45 ID:QGB3gtfA
そもそもMacで使われてるC言語はObjective-Cであって、C++とは別物なんだがな
WindowsからMacへ移行し、会社も移籍となるとなかなか難しいだろうな
51名前は開発中のものです。:2013/01/15(火) 08:36:57.26 ID:kOXRI1LA
XCodeでもC/C++のコンパイルは出来るよ。
ただし、ウィンドウのハンドルを取る手続きはObjective-Cじゃないと資料が見当たらなかった。
システムAPIはObjective-Cに特化している印象。
52名前は開発中のものです。:2013/01/15(火) 08:47:21.82 ID:5Gk8HxPx
>>50
たぶんCで作られてると思います
OS9の時代なので古いゲームです
画像を表示するのにもQuickDrawを使ってます

OSX10.7からRosettaがなくなってPPCのOberinは動かなくなりました
古くからMacを使いウルティマオンライン風の2Dオンラインゲーム開発を熟知してるゲームプログラマーの方お願いです
Oberinを救ってくださいDavid M. Bourg、Glenn Seemannに問い合わせて共同開発してリメイクしてくださいお願いです
53名前は開発中のものです。:2013/01/15(火) 08:56:17.26 ID:5Gk8HxPx
こんなUIです
http://oberin.s7.xrea.com/kiso/guide017/gfx/screenshotfull.jpg

OSX版もあります、どうかWindowsに移植してほしいです
移植してくれる人を集めるとしたらどこで協力を得ればいいでしょうか?
ゲームプログラマを尋ねるしかありませんか?
54名前は開発中のものです。:2013/01/15(火) 09:10:55.46 ID:IZNDRoVN
他人任せにしないでください。
あなたが権利者から許可を取り、プロデューサ/ディレクタ/プロジェクトマネージャになるべきです。
その上で、開発チームを立ち上げてください。
55名前は開発中のものです。:2013/01/15(火) 09:18:13.17 ID:wGE6oIEa
他人任せで成功したプロジェクトなんて聞いた事がない。
自分が中心になって製作するサークルでも9割以上が潰れると言うのに。
レスすらまともに読む気ないのに協力してもらえるなんて、どういう思考回路してるんだ?
いい加減しつこい。諦めてmac買えよ。中古なら安く買えるだろ。
56名前は開発中のものです。:2013/01/15(火) 13:20:24.05 ID:m8SuNQuJ
>>45興味深い
57名前は開発中のものです。:2013/01/15(火) 17:12:30.95 ID:EaLBtD+u
>>50-51
みたいに相手するから余計につけあがる。
責任取って他スレに誘導しろよ。
58名前は開発中のものです。:2013/01/15(火) 18:09:01.38 ID:QGB3gtfA
Macでゲームを作るスレ(2)
http://toro.2ch.net/test/read.cgi/gamedev/1103361042/
59名前は開発中のものです。:2013/01/15(火) 23:30:08.02 ID:kzHVNOI7
>>55
おそらく中古MACを買う予算より少ない金額で「仕事の依頼です!」とか言いそうで、
プログラミングできる人間側にしたら好きになる要素がないよねw
60名前は開発中のものです。:2013/01/15(火) 23:37:08.24 ID:wUrDSvN+
2chでプログラマ探してる時点でろくなもんじゃない
61名前は開発中のものです。:2013/01/16(水) 12:14:56.86 ID:dZqwRO7Z
QuickDrawって廃止されてQuartz 2Dだよね。
たぶんMacのQuartz 2D使ってゲーム作れるレベルの高い人は日本にいないから移植も無理だろ。
62名前は開発中のものです。:2013/01/16(水) 12:16:31.82 ID:dZqwRO7Z
洋書有利だな。
63名前は開発中のものです。:2013/01/16(水) 12:27:05.31 ID:9GgZijAJ
どうして Windows に nanosleep が無いことを考えるとイラついてくるな
64名前は開発中のものです。:2013/01/16(水) 14:19:38.79 ID:9saeUya9
>>61
ゲーム作るんならグラフィクスはOpenGLじゃないの
65名前は開発中のものです。:2013/01/16(水) 17:11:29.45 ID:rfcXvvp9
2Dゲーならそこまで低レベルAPIに落ちなくてもいい。

ていうか面倒ごとが増えるから落ちずに済むならそれに越した事は無い。
66名前は開発中のものです。:2013/01/16(水) 18:51:41.63 ID:u7MUGbEN
つまりDXライブラリ最強ってことですね
67名前は開発中のものです。:2013/01/16(水) 19:32:52.73 ID: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名前は開発中のものです。:2013/01/16(水) 19:43:47.57 ID:vHhR3ta5
何をしたいかいまいち良く分からんが、
STLコンテナの類で全要素にアクセスするなら
イテレータ使うのがよろしい。
C++初心者にはキモイ構文かも知れんが、
まぁサンプル通りのコーディングすれば良し。
69名前は開発中のものです。:2013/01/16(水) 23:25:51.98 ID:uIyKClGc
イテレータ慣れると[]演算子でアクセスする方が気持ち悪くなってくるね
70名前は開発中のものです。:2013/01/17(木) 22:34:40.20 ID:yNq2XjTR
ムーブコンストラクタで無用なコピーを防ぐとか、そういう話かと
71名前は開発中のものです。:2013/01/17(木) 22:47:58.36 ID:SK+WC+I6
>>69
用途が違くね?
[]演算子ならどこでも一瞬でアクセスできるじゃん。
72名前は開発中のものです。:2013/01/17(木) 23:59:25.21 ID:QQuSP+8l
>>71
mapの場合は絶対にキーが格納済みであることが確実でもfind使うようにしてる
それとはまた違うがvectorもatがあるから[]は使ってないなあ
73名前は開発中のものです。:2013/01/18(金) 00:50:51.69 ID:0xoMQDl+
Vectorでatは毎回範囲チェックするから遅くなるだろ
ある程度連続してアクセスするなら無駄
74名前は開発中のものです。:2013/01/18(金) 04:22:15.56 ID:6OYOcstc
>>72
さすがにそれはどうかと思う
75名前は開発中のものです。:2013/01/18(金) 21:17:01.14 ID:h30YIVHQ
>>70
>>67の内容から察するにその辺の話だと俺も思うなぁ
C++11 std map pair move-semantics move-constructor move-assignment-operator
とかでググると>>67のやりたい事と一致する情報が色々拾える気がする
76名前は開発中のものです。:2013/01/18(金) 22:19:03.33 ID:6FSUVQjN
アルゴリズムでcopy一発じゃないの?
77名前は開発中のものです。:2013/01/19(土) 12:36:02.05 ID:q8h4iJfZ
DXライブラリでゲームのセーブ及びロード関係なんですが
fopenやfwriteではint型やchar型のデータは読み書きできると思うんですが
クラスなどのオブジェクトまるまる保存するにはどのような関数があるのでしょうか?
参考に出来るサイトなんかでもなんでもいいのでお願いします。
78名前は開発中のものです。:2013/01/19(土) 13:49:54.50 ID:BIw3jTiL
オブジェクトを保存できるような形式にすることを「シリアライズ」というが
DXライブラリとしてはシリアライズは提供してなかった、はず。
C++としても特にあるわけじゃない。
Boostではあるって聞いた。

データ形式が複雑じゃなければ自分で手でデータを並べてファイル出力。
structを一括とかすると若干見通しがいい。
余談だがこれには#pragma pack(1)とか非標準的な泥臭い話も若干出てくる。
79名前は開発中のものです。:2013/01/19(土) 13:51:20.31 ID:tuSK099a
boost::serializationで検索……と言いたいところだけど、
まずはstructか何かに必要なデータを纏めて、それを1つずつ順番にバイナリ出力するところから始めてみてはどうだろう
8079:2013/01/19(土) 13:51:53.80 ID:tuSK099a
あ、ごめん、リロってなかった
81名前は開発中のものです。:2013/01/19(土) 15:03:13.68 ID: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名前は開発中のものです。:2013/01/19(土) 15:15:11.83 ID:hcRANC3J
ファミコンゲームのセーブロードがシリアライズとかしてたかよ
必要なデータを洗い出してセーブデータの構造を自分で考えろよ
83名前は開発中のものです。:2013/01/19(土) 19:26:10.66 ID:tuSK099a
ファミコンソフトってC++で開発されてたのか、知らなかったぜ
84名前は開発中のものです。:2013/01/19(土) 22:10:37.28 ID:+PjkUk0Q
なんとなく想像はつくと思うけど、
セーブロード機構の実装はめんどくさいよ。
85名前は開発中のものです。:2013/01/19(土) 22:30:50.58 ID:CgroCKX/
いつどんなタイミングでもゲーム画面をまるごと保存&復元可能にするのと
ゲームのプレイデータをセーブできてロード時に適切なシーンへ移行するのとでは
かなり実装方法が違ってくるから注意だなあ

前者はアプリ用のライブラリとして組み込めるレベルの機能だけど
後者はゲーム別に高度にカスタマイズしたレベルでの機能になる
86名前は開発中のものです。:2013/01/21(月) 00:02:44.06 ID:2O9DiDY5
一人で思い付きでガーって作っちゃうような小さなゲームに簡易にセーブ/ロード機能を
組み込むにはboost::serializationは楽チンだなぁ。ソースコードが仕様書だから
ORMのための仕掛けをわざわざ中間に挟み込む手間はかけたくなかったりするし
87名前は開発中のものです。:2013/01/21(月) 01:13:13.00 ID:4+MUO9O3
保存する必要があるデータが最初から単純で種類も少なければ
手動でテーブル化するコードをチマチマ書いたり、あるいは>>81
みたいな形でももちろんできるわな

ただ、種類が増えてくると前者は保守性の悪さがすぐ表面化するし
構造(関係)が複雑になると後者もシリアライズ可能にするための
仕組みとかお作法をちゃんと用意してあげないといけなくなるしな

勉強目的(苦労するのが目的)ならともかく、既知の問題が
見えてるんであれば最初から出来合いのライブラリやツールを
どんどん使ったほうがいいと思うぞ
88名前は開発中のものです。:2013/01/23(水) 22:12:47.73 ID:v9z+R2xo
シリアライズはバージョンの違いに対応しようとすると面倒くさいからなー
DBからスケルトンを作成する便利プログラムでも探すか作った方が楽
89名前は開発中のものです。:2013/01/24(木) 22:25:25.06 ID:05CYRZ4q
blancoDBみたいな入出力のソースコードを自動生成する方法論かな?
あれはあれで前提としてる仕事を選ぶような気がするなぁ

ゲームの場合、業務システムと違って「面白さを追求・調整するため」と
称して行き当たりばったりの試行錯誤の繰り返しを開発の中盤過ぎても
平気でやってたりするし、オブシェクトの相互作用の部分に修正を加えまくるから
データベース指向なR/Oマッピングの自動化に労力を割いても徒労感の
ほうが大きくなるんじゃないかなぁ。ボトルネックはそこじゃないというか
90名前は開発中のものです。:2013/01/24(木) 22:57:54.17 ID:aaWqkNlD
まあアホの子が好き勝手作っても大丈夫なやり方なんてないよ
それならツクールとか使えば?ってなる
91名前は開発中のものです。:2013/01/26(土) 11:20:47.49 ID:H569f4tX
>>88
シリアライズしたデータのバージョン間の互換性問題は
ゲームのセーブ/ロード用としては気にする必要なさそうだけどな

ゲームをリリースしてからゲームプログラム側でシリアライザブルな
クラスの定義を修正することがあるかというと、ほとんどないだろ?
ゲームをリリースしてからシリアライザのバージョンを変えることが
あるかというと、これもまぁ基本的にはないだろ?

セーブデータはDBを使って、アクセサー(のインターフェース)を
自動生成するフレームワークを作れば楽、というのは、別の見方をすれば
オブジェクト指向とは異なる(例えばRDB)をバックエンドで使うから
だから変換機構を介在させる必要が出てきて、しかもそれを組み込む作業が
機械的で退屈でケアレスミスを起こしやすいから、だから楽になる
とも言えるわけで
92名前は開発中のものです。:2013/01/26(土) 11:35:31.20 ID:H569f4tX
>>91訂正
△だから楽になるとも言えるわけで
○だから変換機構の自動生成やらフレームワークを用意することで
楽になるとも言えるわけで

例えばオブジェクトグラフを保存したいとして、これをその辺のフリーの
組み込みDBのテーブルに格納するとしたら、直接に保存出来ないわけだから
何らかの変換機構を介在させてマッピングすることになるよね。
組み込みDBのインターフェースがオブジェクト指向的でないから
何らかの仕掛けを使ってこのギャップを埋めなきゃいけないんだよね
93名前は開発中のものです。:2013/01/26(土) 16:57:12.00 ID:fKY1HRNO
無駄な長文だなw
94名前は開発中のものです。:2013/01/26(土) 22:51:20.27 ID:XTk3BVaj
あんま詳しくないんだけどセーブ機能にデータベースっていうのはSQLiteとか使うの?
最初から表として表現しやすいデータなら便利そうだけど、セーブ機能のクエリのしかたなんて
どうせ単純なんだからそれなら別にCSVで保存してもよくねって気もする
階層状のFSMを保存するとかになると表にするのかったるいからmsgpackとか使っちゃうな
95名前は開発中のものです。:2013/01/27(日) 00:26:25.10 ID:+189Dk6g
お好みでおk
96名前は開発中のものです。:2013/01/27(日) 12:16:38.07 ID:MUJs2ZVO
シリアライズはヘッダ情報どうしてるか聞きたいわ
ファイル全体のはもちろん必要だがクラス自信も自らのヘッダ情報を勝手に書き出すようにしといた方がいいよな
97名前は開発中のものです。:2013/01/27(日) 21:11:12.29 ID:u7U1Z88R
boost::serializationの場合はサンプル通りのおまじないコードを入れとくと
何のクラスの何のメンバが保存されてるのか、って情報はXMLファイルに
書き出されるけど、そういう話ではなく?
98名前は開発中のものです。:2013/01/27(日) 21:24:37.52 ID:MUJs2ZVO
>>97
ああ、自作の場合ね
今のところサイズとクラスの名前程度しか書き出してないんだよな

セーブしたいクラスを、SaveとLoadを持つインタフェースを継承させて作る場合
バージョンを保持させる方法とそれに対応するLoad方法をどういう風にすべきか悩む

そもそもバージョンって、クラスに変更があるたびにversionIDを変化させて対応する方法と
変更したいクラスを継承して、そのクラスを使うようにするのとではどちらがスマートなのかな?
99名前は開発中のものです。:2013/01/27(日) 21:35:08.55 ID:LxfCssDl
>>98
バージョンアップのために継承はちょっとないな
ソース管理が煩雑になりすぎる
100名前は開発中のものです。:2013/01/27(日) 21:43:02.89 ID:mO7UueU5
versionidでif文だな。
バージョンアップで増えるメンバなんかせいぜい1、2個にしかならんし、
ソースもその方がスッキリさわやか。
101名前は開発中のものです。:2013/01/27(日) 23:18:59.76 ID:u7U1Z88R
>>98
自作の場合かー

俺はシリアライズするクラスは基本的に変更しない派だったな。シリアライザを
自作する場合、手の込んだ事をし始めるときりがなくて脇道にハマるので避けた。
クラスの変更許すとしてもメンバ追加のみ。メンバ削除するなら一旦仕切り直しで
既存データはバッサリ廃棄。どうしても捨てられないデータを新クラス用に
流用したい場合は仕方ないのでトランスレータ(コンバータ)作って新クラスの構造に
適合させてた
102名前は開発中のものです。:2013/01/27(日) 23:32:40.07 ID:u7U1Z88R
ちなみにメモリプールをガバーっと丸ごと保存する富豪的なやり方だったので
シリアライズ/デシリアライズの仕組みを保存対象のクラスが(ほぼ)意識せずに
済んだ。参照についてのちょっとしたお約束を守るだけで、シリアライザ絡みの
仕組みを保存対象の定義・構造に侵入させなくて済む。ソースが汚れない
103名前は開発中のものです。:2013/01/27(日) 23:49:06.90 ID:MUJs2ZVO
>>99-101
ありがとう。

>>102
俺も一括でガバっとやってみたいんだけど、ポインタを正しいのに変換する前に
一時的に古いアドレスがshared_ptrとかweak_ptrに入っちゃわない?
104名前は開発中のものです。:2013/01/27(日) 23:52:22.53 ID:BPELEp2t
茶はNINE
105名前は開発中のものです。:2013/01/28(月) 00:02:30.85 ID:T1g94e3P
>>103
pool_ptr(poorじゃないよ)という胡散臭い自前のスマポを使うので無問題だた。
中身は基本的に配列添字かプール先頭からのオフセットアドレス。あとは必要に
応じてインクリメンタルIDが入ってたり
106名前は開発中のものです。:2013/01/28(月) 23:42:56.47 ID:qZ5dqjBh
ベクトルの長さというか大きさというか、ノルムの絶対値を表したいときの英単語って何使ってる?
Scalarってなんかベクトル関係ない気がしてしっくりこない気がするんだ
107名前は開発中のものです。:2013/01/28(月) 23:50:52.36 ID:TlDJjYAK
速度ならspeed、距離ならdistanceみたいにパラメータの意味で名前つけてるな
名前つけにくいやつならlengthとかかな?
108名前は開発中のものです。:2013/01/28(月) 23:57:48.27 ID:zdMD0ejy
何のひねりも無しにlengthでいいと思う。magnitudeともいうのかな。
でもscalarは明らかにおかしい
109名前は開発中のものです。:2013/01/28(月) 23:58:36.70 ID:zdMD0ejy
>>107
かぶっちゃった、ごめん。そして同意
110名前は開発中のものです。:2013/01/29(火) 00:37:00.22 ID:wwwY9zfj
両方サンクスサンクス、length良いね
111名前は開発中のものです。:2013/01/30(水) 00:37:39.01 ID:Lbz+e24A
はしごとかブロックのクラスの親クラスをつくろうと思うけど、オブジェクトクラスって名前じゃあれだし、なんかいい名前ないかな。
112名前は開発中のものです。:2013/01/30(水) 00:52:35.27 ID:WuY+ZnCo
lengthって何?
113名前は開発中のものです。:2013/01/30(水) 04:08:25.56 ID:56S0iVMb
>>111
障害物とかマップチップとか

>>112
普通に英語ではなく?
114名前は開発中のものです。:2013/01/30(水) 08:00:37.89 ID:Lbz+e24A
113>
マップチップは別にあるんです。障害物にしようかな。
115名前は開発中のものです。:2013/01/30(水) 08:42:06.73 ID:1wJkHPtE
変数やクラスの命名は専用スレあるだろ
116名前は開発中のものです。:2013/01/30(水) 08:44:20.32 ID:Lbz+e24A
>>115
そうなの?すいません。ありがとう。
117名前は開発中のものです。:2013/01/30(水) 14:46:47.35 ID:WuY+ZnCo
おで 英語 だめ 意味 教える おで 喜ぶ
118名前は開発中のものです。:2013/01/31(木) 02:25:16.24 ID:j0Y98WTe
IDE というか、エディターのことなんだけど
Visual Studio C++ Express 使ってコーディングして思ったことで
クラスの private なメンバとかメソッドとかをインテリセンスに表示しない方法ってありますか?

呼び出せもしないメンバとかが候補に出てくるのが非常にうっとうしいので・・・
119名前は開発中のものです。:2013/01/31(木) 02:43:40.00 ID:ozRG1SyW
名前の頭にアンスコ付けて下の方に表示させる
120名前は開発中のものです。:2013/01/31(木) 03:02:40.70 ID:mWYhVJLs
なるほど最初に_がついてるのってそういう理由だったのか
121名前は開発中のものです。:2013/01/31(木) 04:44:59.25 ID:LOWFSByE
アクセス制限の出来ない言語なんかだと、常套手段っぽい
122名前は開発中のものです。:2013/01/31(木) 05:50:24.08 ID:AE1MkZZC
アンスコ付けると一番上に表示されると思ってた。
普通にアスキー順かと。
123名前は開発中のものです。:2013/01/31(木) 09:52:25.51 ID:3UUmcU+c
何らかのシステムやエンジンでのコードでアンダースコア付いてるイメージがある
そのシステムやエンジン上で走るインスタンス用のクラス、スクリプトではアンスコ付けない
124名前は開発中のものです。:2013/01/31(木) 10:19:38.14 ID:tjYrH7kV
ユーザーが頭にアンダースコア使うなよ予約済み識別子だから未定義動作になるぞ
125名前は開発中のものです。:2013/01/31(木) 21:30:41.93 ID:LOWFSByE
それは知っててやってるんじゃないかな。
実際便利だろうし、どっちを取るかっていう。
126名前は開発中のものです。:2013/01/31(木) 21:35:33.03 ID:mWYhVJLs
じゃあz_ってつけるか
127名前は開発中のものです。:2013/01/31(木) 22:46:30.30 ID:ozRG1SyW
ダメになったら書き換えればいいだけだし問題ない
みんなやってる
128名前は開発中のものです。:2013/02/01(金) 05:48:33.63 ID:+PXtdV3s
駐車違反みたいなもんか
129名前は開発中のものです。:2013/02/01(金) 06:15:23.00 ID:Ej96iM2F
未定義は文字通り「決まってない」ってだけで、理解した上で個々に使う分にゃ何も問題ないよ。
130名前は開発中のものです。:2013/02/06(水) 22:17:21.91 ID:+yctl/z4
ファミコンのスーパーマリオブラザーズって、
なんで後ろに戻れない仕様だったの?
敵の管理面倒になるとかあるかなあ
131名前は開発中のものです。:2013/02/06(水) 22:23:33.97 ID:hFWnW6Et
>>130
今なら疑問だけど、当時なら考えも及ばなかったからでしょ
ロードランナーが掘りっぱなしの仕様だったら、それはそれで受け入れてるんじゃね?
132名前は開発中のものです。:2013/02/06(水) 22:27:41.29 ID:43aHKVzV
色々と制限が厳しかったからな
133名前は開発中のものです。:2013/02/06(水) 22:30:55.09 ID:KmxZnU5v
出来ることを絞ることで、とにかく前へ進め!という開発者からのメッセージという可能性も。
134名前は開発中のものです。:2013/02/06(水) 23:10:40.17 ID:Cu5ZpeM4
後ろに戻れない理由があるとすれば、
?ブロックの状態やコインの有無を記録してないからじゃね。
例えば、一回叩いた?ブロックを一旦画面外に出して再度戻ったら
また復活するのを防ぐ、って言うのが筋の通る説だと思う。
?ブロックだけならまだしも、コイン一枚一枚の取得を記録してれば
当時のゲーム機(カセット)の性能じゃ厳しいものがあったかもしれない。
135名前は開発中のものです。:2013/02/06(水) 23:35:20.72 ID:ySnerieW
マリオ3はカセット側のRAMでも使ってたのかな?
136名前は開発中のものです。:2013/02/06(水) 23:38:31.67 ID:uKmzQq52
540 自分:NAME OVER[sage] 投稿日:2013/02/06(水) 22:56:08.62 ID:???
ファミコンのスーパーマリオブラザーズって、
なんで後ろに戻れない仕様だったの?

541 返信:NAME OVER[sage] 投稿日:2013/02/06(水) 23:30:52.59 ID:???
>>540
アレはおなかを下していて便所へ必死に向かってる最中です
急いで向かってる最中なのに戻る必要がありますか?
137名前は開発中のものです。:2013/02/07(木) 10:41:00.18 ID:BsJG9Iyu
542 返信:NAME OVER[sage] 投稿日:2013/02/07(木) 00:33:21.55 ID:???
>>540
マジレスすると、後ろに進めるようにしてしまうと(勝手の分からないプレイヤーが)
行ったり来たりしまくって制限時間内にゴールにつかない可能性があるので、
一度行ったら戻れないように強制的に前進させる措置です。

「あの一本道のゲームで迷うアホな奴なんざいるのかよww」と思いたくなりますが、
ドラクエでも「城外から出発させると、王様に会うことすらできずに死ぬアホがいる。」と、
開発中に判明したため、鍵のかかった王の間からスタートに変更されたそうです。
138名前は開発中のものです。:2013/02/07(木) 13:12:58.43 ID:dk7DZgPn
吹いたw
139名前は開発中のものです。:2013/02/07(木) 17:28:36.89 ID:dk7DZgPn
素朴な疑問
俯瞰の2Dゲーム等で
プレイヤーキャラの方向の角度0は右方向が一般的なのかな?(上方向が-90度 下方向が90度)
それとも上が0度なんだろか
140名前は開発中のものです。:2013/02/07(木) 19:18:40.43 ID:4qSYOGJ1
2Dで角度使うこと自体が稀だが、スプライトを回転させるようなときは上を0度にしてるな
まあ0度がどこ向くかってこと自体にあんまり意味はないし作るヤツ次第じゃないの
141名前は開発中のものです。:2013/02/07(木) 20:15:38.61 ID:y8l1gXL9
俺は右が0度でそこから下向きに角度が+ってのが好きだけど>>140の言うとおり
作る奴が創造神なわけだし好きにすればいいと思う
142名前は開発中のものです。:2013/02/07(木) 20:20:53.50 ID:ov8wNEcr
そそ、想像主の思うまま

座標の関係上、デフぉの計算結果をまんまぶちこんだらおまいさんの書いた通りにはなるが
143名前は開発中のものです。:2013/02/08(金) 04:11:48.88 ID:p2VWRWVx
俺も上がゼロかな、何となくだけど。
144名前は開発中のものです。:2013/02/08(金) 04:58:11.66 ID:5aSJJVbG
自分は計算結果そのままブチ込みたいんで右かなー。
145名前は開発中のものです。:2013/02/08(金) 08:38:16.96 ID:dKdp9OxJ
俺も悩んだけど、結局上を0にした。
そのほうが直感的にわかりやすいし、そもそも角度計算専用の関数をいくつか作るだけだったしな。
146名前は開発中のものです。:2013/02/09(土) 19:05:28.50 ID:vqbpHEnw
基準をどこに置くかというだけだから好きにしろ
147名前は開発中のものです。:2013/02/11(月) 00:24:27.49 ID:tsPiKXlV
滑らかに動くカメラってどういう処理だろう
滑らかというか、動かしてもカクカクしない動きというかモンハンみたいな感じ
動かし始めを加速、押している間は一定、離したら減速であってるかな
148名前は開発中のものです。:2013/02/11(月) 02:18:02.99 ID:PiTdn23M
>>147
スクリーンの基点の座標を2つ持っていて、現在座標と最終到達目標地点の座標。
二次元で、現在値を(px, py)、目標を(tx, ty)とした場合、
次のフレームのスクリーンの基点座標(nx, ny)について、
あるパーセンテージqをひとつ定め、
(nx, ny) = (px + (tx - px) * q, py + (ty - py) * q)
で計算する。

わかりやすく言うと、表示領域の移動を加速度で制御しているだけ。
149名前は開発中のものです。:2013/02/11(月) 05:12:22.33 ID:Un3LzVap
>>148
その式だとフレームレート固定用だな。
150名前は開発中のものです。:2013/02/11(月) 08:37:17.24 ID:Fj3C78KO
リフレッシュレート可変だと微分方程式解かない駄目じゃね?
151名前は開発中のものです。:2013/02/11(月) 09:32:37.27 ID:NQeCACsu
そのカメラの動きって、精密な操作を要求するゲームだったらトッププレイヤークラスになるとイラつきそうだな
モンハンみたいなアクションゲームだと確実にいらない演出
152名前は開発中のものです。:2013/02/11(月) 18:56:08.19 ID:WxQ8UMT8
>>148
これ補完の式だよね?
ボタン押してる間動かす、みたいなのには向いてない気がするんだけど
153名前は開発中のものです。:2013/02/11(月) 19:24:23.03 ID:WxQ8UMT8
目標値をボタンで変化させてカメラの移動量を>>148で計算すればいいのか
現在値と目標値の間が離れてるほど移動量が大きくなって
目標値の移動量と計算結果が釣り合うと等速になるわけか

なるほど
154名前は開発中のものです。:2013/02/11(月) 19:49:16.92 ID:YWhTNhiY
パッドゲーで3Dアクションしようと思ったら視点操作悩むよね
一応ユーザビリティのためにみんなの鉄板策を聞いておきたいんだけど

TPS方式(カメラの向きがキャラの向きと同一)は操作に対する旋回速度の調整が課題
@L-R → 旋回速度や上下の視点移動をどうしようかと悩む
A右スティック → 右側4つのボタンと同時操作を要求するか捨てるかどうかを悩む

モンハン方式(カメラの向きがキャラの向きに遅れて自動で追従していくタイプ)は
キャラをターゲットとしてカメラが回転するため、カメラとキャラの距離(視野の広さ)が大事
@任意ボタン1つ → 押した瞬間にカメラが強制的にキャラの向きへ旋回。(クイックターン?)
AL-R → 自動追尾に負けず回転できる。同時押しで@の効果など
B右スティック → 左右でA、押し込みで@、上下でキャラとカメラの位置調整、など多彩
155名前は開発中のものです。:2013/02/11(月) 20:13:34.27 ID:N8QVSRDa
MHP3の討伐動画を色々眺めてたんだが
このカメラアームのプレイヤー中心垂直軸回転ってアナログコントローラで
操作してるんだよね?もしそうなら入力データに弱い平滑化フィルタを挟むと
コリッ、ヌルッとした動きにはなるよ

あと、このカメラの平行移動成分はプレイヤーにきつく拘束された動きだよね。
自キャラに対してカメラがグニャグニャとフォローすると吐き気が起きるから
平行移動成分は基本的にキビキビした動きが好まれるし、キャラとの相対距離は
極端な話、固定でも大丈夫だよ
156名前は開発中のものです。:2013/02/11(月) 22:13:57.45 ID:J8V1tEnw
パンチラ スタイリッシュ☆オンラインとか観てると、魅せるためのカメラワークと
プレイするためのカメラワークというのは違うのだなぁと再確認するなぁ
http://www.youtube.com/watch?v=AaWIAHNmx4E
これプレイヤーによる切り替え操作を織り交ぜて成り立ってる動画なわけだけど
仮に全自動でここまで凝ったことされたらゲロ吐きながらコントローラーぶん投げるかもな
157名前は開発中のものです。:2013/02/11(月) 22:44:28.43 ID:N8QVSRDa
>>156
これ面白いね
頑張って敵の動きを目で追ってたら頭クラクラしてきたけど
画面中心でちょこまか動くキャラとパンツだけ注視して
敵と背景無視してたら結構楽しめたよ
158名前は開発中のものです。:2013/02/12(火) 20:53:52.55 ID:lRNj7EL2
というかこんな飛びまわれる3Dアクションでネトゲとかすごい時代なんだね
FPSじゃなくてゲーセンのガンダムみたいにロックオンして戦うタイプなのかな
159名前は開発中のものです。:2013/02/17(日) 09:14:44.67 ID:96MGmnWJ
〜は既に**.objで定義されています。が滅茶苦茶でてくるようになったけど、
これってincludeの仕方の問題?
エラーが出ている変数は1箇所しか宣言していないし。
160名前は開発中のものです。:2013/02/17(日) 10:12:15.78 ID:OmRr96Tc
ヘッダでexternでない変数を宣言しちゃ駄目だよ
161名前は開発中のものです。:2013/02/17(日) 10:14:25.89 ID:96MGmnWJ
>>160
それでした。ありがとうー。
162名前は開発中のものです。:2013/02/18(月) 02:10:51.26 ID:wHFjCpWw
c++でゲーム作るのに分かりやすい書籍orサイト教えて下さい
163名前は開発中のものです。:2013/02/18(月) 03:27:58.11 ID:BD0tG9CR
ニコニこで1時間でテトリス作ってみた見ると良いよ☆
164名前は開発中のものです。:2013/02/18(月) 12:29:59.56 ID:2D9Y1GPh
>>163
あれC++じゃなくね?
165名前は開発中のものです。:2013/02/18(月) 16:23:52.42 ID:GpBx7XuA
>>162
「ゲームプログラマになる前に覚えておきたい技術」
166名前は開発中のものです。:2013/02/18(月) 17:42:09.35 ID:yNKbX/WC
しかしセガ本ももうだいぶ古いんだよな
C++をオブジェクト指向ベースで教えてくれる新しい本が欲しい
167名前は開発中のものです。:2013/02/18(月) 18:29:08.09 ID:WxACv72Z
それはいくらでもあるような、、、ゲームに特化してってこと?
168名前は開発中のものです。:2013/02/18(月) 18:33:54.37 ID:HOLSZkeZ
もうC++は時代遅れってことだよ
はやくC#かJavaに乗り換えないと
間に合わなくなってもしらんぞ!!
169名前は開発中のものです。:2013/02/18(月) 19:18:34.65 ID:EQfku3SJ
D 「やあ、呼んだ?」
170名前は開発中のものです。:2013/02/18(月) 19:44:31.02 ID:yNKbX/WC
スマポでシコシコやり始めてからC#で良いじゃんって思ってきた
企業とかが自前のCライブラリとか抱えてないかぎりC++でやる理由なんてない
今から始めるっていう素人は断然C#とJavaがいいと思うよ
171名前は開発中のものです。:2013/02/18(月) 19:51:30.41 ID:5Vy56t5w
スレ違いうざい
172名前は開発中のものです。:2013/02/18(月) 19:55:49.20 ID:ww5I+ml6
ネイティブで組まないならもうRPGツクールでいいじゃんって気がするけど
173名前は開発中のものです。:2013/02/19(火) 23:01:45.47 ID:o/WKJjst
アクションゲームでステージセレクト(スーファミのマリオみたいな)と
アクションステージに分かれる場合で、キー入力時のプレイヤーの動きが違うんだけど
こういう場合はstatusFlgみたいなのを持っておいてそれの分岐で
キー入力の制御をしたほうがいいのかな?
174名前は開発中のものです。:2013/02/19(火) 23:08:07.16 ID:fJSxXe9U
小規模ならそれでも良いけどこの際にゲームシーンについて勉強してはいかがだろうか
175名前は開発中のものです。:2013/02/19(火) 23:16:14.30 ID:o/WKJjst
stateパターンみたいな方法ですか?1回みたけどいまいちメリットが分かってなくて
使ってませんでした。もう1回解説ページみてみます。
176名前は開発中のものです。:2013/02/19(火) 23:42:03.15 ID:Xdx+MGgE
>>173>>175
>Stateパターン

それもいいけど、まずは各シーンを関数化してみると良いんじゃないかな。
177名前は開発中のものです。:2013/02/19(火) 23:55:23.68 ID:o/WKJjst
>>176
今、親クラスを作ってそれを各ステージクラスに継承させてます。
それでステージ管理クラスにlistを宣言してその中に各ステージクラスを管理させてます。
1個ステージ作ったからフィールド画面を作ったんですけど、プレイヤー移動とかが
アクションステージと勝手が違うからどうしよーと今悩んでて手が止まってました。

アクションステージなら右押したらx+1とかしてましたけどフィールドはその時選べる
ステージが変わったりするからどう制御すればいいかとか。
178名前は開発中のものです。:2013/02/19(火) 23:55:58.44 ID:6mzIB+hP
>>175
キー入力を管理するマネージャー1個作って、
if文でも何でもいいから条件次第で操作対象が変わるように作る。
これをコード的にすっきりさせるとstateなりのパターンに進化する。

2行目が分からないで3行目やろうとしてもメリット分からないかもしれない。
179名前は開発中のものです。:2013/02/20(水) 04:06:27.03 ID:VI6wBISP
とりあえずこれでやれ

while(1)
{
  update_key();

  switch(state)
  {
    case STAGE: stage(); break;
    case FIELD: field(); break;
    default: break;
  }

  flip();
}
180名前は開発中のものです。:2013/02/20(水) 05:08:41.13 ID:qNul5HBl
うーん、>173が何に悩んでるのかサッパリ分からん。

キー入力を検知して、プレイヤーキャラクターを動かす方法が分からないわけでもない。
シーン管理が全く出来てないわけでもない。

アクションシーンと同じように、キー入力を検知すれば良いよとしか言えない気がする。
181名前は開発中のものです。:2013/02/20(水) 07:24:30.29 ID:in/RvrgR
すみません。多分自分でもなにに悩んでるのかよく分からなくなってたのかも。
よく考えたらプレイヤーが移動する座標をどう決めようか悩んでました。
上下左右を押すとフィールド中の各ステージに移動するようにしようとおもってて、まだ行けない所とか行ける場所とかをどう制御してるのかを他の人に聞いてみたいです。フィールドクラスは毎回deleteするつもりだから保持できないんですよね。
182名前は開発中のものです。:2013/02/20(水) 11:45:26.99 ID:/YqFS7sa
stateパターンやね。
各々の状態で必要なパラメータを管理しやすい。
フィールドで必要なパラメータも担当stateに保持させておけばいい。
アクション画面でもマントマリオとファイヤマリオの
挙動・変数管理は異なるからstateパターンはオヌヌメ
183名前は開発中のものです。:2013/02/20(水) 11:52:14.08 ID:/YqFS7sa
ついでに言うと、キャラの位置情報程度ならとにかく、
ステージクリアフラグや道の開通フラグはフィールドクラスが持つべきだね。
どんなプログラムか知らんが、頻繁にフィールドクラスを
deleteするのはおすすめしない。
184名前は開発中のものです。:2013/02/20(水) 13:47:01.27 ID:VI6wBISP
全部シングルトンでおk
185名前は開発中のものです。:2013/02/20(水) 14:13:15.38 ID:F6Pm06YC
シングルトンて生成時にエラーだしたときどう処理するのがいい?
186名前は開発中のものです。:2013/02/20(水) 14:56:10.68 ID:Yi5uMioL
プログラム終了
187名前は開発中のものです。:2013/02/20(水) 20:33:24.44 ID:WsNdTifi
return null

through

assert
188名前は開発中のものです。:2013/02/20(水) 20:34:18.82 ID:WsNdTifi
assertは違うか
189名前は開発中のものです。:2013/02/20(水) 22:39:06.86 ID:in/RvrgR
>>183
分かりましたー。
とりあえずdeleteしないような作りに修正してみまーす。
敵とかはステージ終わったらdeleteするけどゲーム続ける間ずっと使うようなものは
メモリに保持しつづけてたほうが良さそうですね。
190名前は開発中のものです。:2013/02/21(木) 23:07:50.28 ID:o9WxskA/
ポインタにNULLを入れて何回でもdeleteしてやる
191名前は開発中のものです。:2013/02/24(日) 09:04:28.59 ID:em2rwjST
シーシーシー シーシーシー シーシーシー シーシーシー
シーシーシー シーシーシー シーシーシー

ろくなもんじゃね〜〜〜ぇ〜〜〜〜〜




ごめん。
深い意味はない
192名前は開発中のものです。:2013/02/24(日) 12:45:15.07 ID:4HiW+z7b
プログラム板のWin32のスレが全く機能してないんだが
既存の人がメシのタネ守ろうと必死なのかな、なんか悲しくなってくる
フリゲスレみたいなのが荒れる理由はわかるんだけどねぇ
193名前は開発中のものです。:2013/02/24(日) 15:46:47.73 ID:1PKEBlGp
そういうのここで喋られても…
194名前は開発中のものです。:2013/02/24(日) 17:55:06.47 ID:R8egJHnP
あそこはただの墓標だから
思い出した時にお参りに行く程度の場所だと思うべし
195名前は開発中のものです。:2013/02/24(日) 18:11:18.70 ID:3ZBes5Rw
Win32APIを使って何をするかと言われてもな。
大概のことは.netでもどうにでもなるし、ゲームで必要なことは
Windowの作成絡みとスレッド絡みであとはDirectXだし、
よっぽど無茶な事を考えない限りはWin32APIは使わないからなぁ……

ネット絡みとか、VirtualAllocやHeapAlloc関連でメモリーを自前で管理するとか、
UIを自前で作るとか、せいぜいそのくらい?新しいAPIとか増えてるには違いない
けれども日本にはあんまし情報が入ってこないし……
196名前は開発中のものです。:2013/02/24(日) 18:22:41.41 ID:3ZBes5Rw
行って納得した。荒廃しまくってるな。
197名前は開発中のものです。:2013/02/24(日) 19:32:17.82 ID:QPNKzyet
WebProgのPerlスレも同じように変なのに占拠されてる
名前は知られてるけどちょっと落ち目なスレと理解すると
そのうちC/C++も……かな
198名前は開発中のものです。:2013/02/24(日) 19:42:15.98 ID:1bhL/V6n
C#はお気楽に使えるけど、C++の代わりにはならない部分が多いなぁ
199名前は開発中のものです。:2013/02/25(月) 22:00:25.74 ID:L+1ikNOD
よしぼくにお題をください!
完全なるnoobで何も作ったことないけどそれを目標に取りあえず頑張ってみるんだ!
200名前は開発中のものです。:2013/02/25(月) 22:31:32.41 ID:g5KYtKu3
>>33
>そんな便利な方法がスクリプトを使う以外にあるなら教えて欲しいな

便利な方法というか、機能分割やら結合度ならは構造化設計の基本だし
これは別にスクリプトでなければ出来ないというような話ではないかと

>例えばマルチスレッドは、同期の問題やらメモリーの問題やらがあるから扱いに手間がかかりすぎる

どういう使い方をしてるのか知らないけど、ターゲットハードウェアが
そこらのPCであればSMPの素直なスカラー機だから並列プログラミングに
ついての先人の知見は豊富だし各種ライブラリもあるわけで

で、スレ趣旨に従って無難に2DSTG前提とすれば計算リソースについては
別に厳しい要求にはならないわけで、並列処理の粒度が粗い、オーソドックスな
マルチスレッドプログラミングで問題ないわけで。例えば
・ファイルI/O
・サウンド
・グラフィックス
・OSとのメッセージ処理
・ゲームのシミュレーション部

のような分割単位で。シミュレーション部なんかシングルスレッド処理でも
別に問題はないと思うよ?

>後、スクリプトの保守性の容易さもスクリプトを用いる要因として挙げておく
>バイナリーデータで作業するよりテキストデータで作業する方が楽なんだよ

>他には、プログラムは上から下に読める方が楽というのもあるな

C/C++のソースコードはテキストだけど
201名前は開発中のものです。:2013/02/25(月) 22:36:06.86 ID:g5KYtKu3
ごめん。誤爆した(泣)
202名前は開発中のものです。:2013/02/27(水) 11:58:49.56 ID:NSZ2/XO3
ゲームならとにかく他のアプリならWin32API使いそうなもんだけどなぁ。
ここかWindowsスレで質問すればレスはあると思うよ。俺もUIで結構使うし。
203名前は開発中のものです。:2013/02/27(水) 16:29:21.07 ID:1czvNrRM
とにかくとともかく、一字違うだけでだいぶ変わるな
204名前は開発中のものです。:2013/02/27(水) 21:32:48.52 ID:Qw1XcLPU
お前らRTTIって使ったら負けだと思う?
205名前は開発中のものです。:2013/02/27(水) 21:46:01.17 ID:LN7lnCb6
場合によるとしか
206名前は開発中のものです。:2013/02/27(水) 21:51:59.26 ID:Qw1XcLPU
じゃあ型名をハードコードするかtypeid使うか
207名前は開発中のものです。:2013/02/27(水) 22:45:03.02 ID:LN7lnCb6
何か適当なコードをでっち上げて欲しい
208名前は開発中のものです。:2013/02/28(木) 01:21:14.18 ID:O5fVu7Yn
dynamic_cast大好きです…
209名前は開発中のものです。:2013/02/28(木) 10:27:45.89 ID:ri//dSZC
>>208
cons_castしまくりです…よりマシ
210名前は開発中のものです。:2013/02/28(木) 10:32:45.95 ID:U3EoKtMw
セーブ&ロードのためにポインタの値(アドレス)をシリアライズしたいとき
reinterpret_castしてintptr_tで保存しておくのと
static_castでvoid*で保存しておくのどっちが良いん?
211名前は開発中のものです。:2013/02/28(木) 10:54:07.04 ID:W0z5rh0G
そもそもポインタの値は保存しないんじゃ
212名前は開発中のものです。:2013/02/28(木) 14:01:58.61 ID:O5fVu7Yn
>>209
おいやめろw
213名前は開発中のものです。:2013/03/01(金) 01:07:25.48 ID:L5FLY5wp
実行時型情報で思い出した。

シーン遷移周りをStateパターンで組んでるとして、
特定のシーンクラス(派生クラス)にのみ必要なメンバ変数&関数にアクセスしたい場合、どうやるのがスマートかな。

自分はdynamic_castを使うことが多いんだけど、
他にも派生クラスではなく基本クラス側に持たせる(関数ならオーバーライドしておく)とか、
あるいは汎用変数やmapクラスを用意するとか、色々と考えられると思う。
214名前は開発中のものです。:2013/03/01(金) 02:10:29.64 ID:Mn6zK5A7
基本クラスに持たせるのは、コード数は減るけど可読性は落ちるから辞めた方が良いとおもう

全シーンで利用出来るものを用意して、
使わないシーンからはアクセスしないだけで良いんじゃないかな。

同一レベルのstate複数個で使い、かつstateレベルで共有しているなら、
他のstateで使えても問題ないんじゃない?
215名前は開発中のものです。:2013/03/01(金) 02:23:57.38 ID:cDLlrtUX
インタフェース(基底クラスでもいいけど)に無いメンバ呼び出しは筋が悪い気がする
できるなら外に追い出したい
216名前は開発中のものです。:2013/03/01(金) 02:42:12.93 ID:EBTrS79u
普通の関数と仮想関数はそれだけで5〜8倍程度の速度差があるわけだがどの程度気にするべきか
シーケンスはどこまで分割するべきか
常に悩みながらやってます
217名前は開発中のものです。:2013/03/01(金) 09:29:54.66 ID:f0QAnE26
>>213
俺も同じようなことで悩んだけど、調べても考えても
dynamic_castかシリアライズ→復元でお茶濁してるのしかなかったんだよね

自分の解決では結局のところ『特殊な機能』を使うんだから、
修正が入ったらそれを使用してるクラスはどうせ丸ごと変更になるだろうってことで
必要な部分をシングルトンっぽく露出させて使うにしたよ
218名前は開発中のものです。:2013/03/01(金) 09:53:11.13 ID:DFLewofn
COMみたいなインターフェースは大げさだし記述も両方で大変
Cで書くような構造体にサイズとか種別IDいれて後ろに付け足しは汚いから
dynamic_castが結局シンプル
個数が固定で決まってるなら外に出しちゃう
219名前は開発中のものです。:2013/03/01(金) 16:11:18.46 ID:L5FLY5wp
偉い人に聞いてみたら、生成した派生クラスを親クラスのポインタに渡すときに、
別途に派生クラス型の変数を用意しておいて、そっちでも保持しとけばいいんじゃね?ってゆわれた。
220名前は開発中のものです。:2013/03/01(金) 16:38:21.76 ID:f0QAnE26
そもそもどういう使い方しようとしてるからわからんからなんとも言えんね
Scene(インタフェース)のListに対して順番にUpdate()かけるだけなら他の関数なんて使う余地ないし
シーンAの中で、シーンBに対して何か特別な処理がしたい場合において
↑のSceneListからアクセスしようなんざ愚かだよ。
シーンAに対してシーンBを本来の型でSetする機会が必要
221名前は開発中のものです。:2013/03/01(金) 16:56:43.56 ID:L5FLY5wp
自分がよくやるのは、ステージセレクトシーン←→ゲームプレイシーン でステージIDを渡すとかかなー。
222221:2013/03/01(金) 16:59:58.23 ID:L5FLY5wp
途中送信しちまったい。
まあこれくらいならdynamic_castは必要ないけど、特別な処理をさせる例として。
223名前は開発中のものです。:2013/03/01(金) 17:10:39.47 ID:avTV/sid
シーンAの中でシーンBにアクセスするというところが間違ってると思う
アクセスしたくなるということは同一のシーンでやるべきものだ
224名前は開発中のものです。:2013/03/01(金) 22:27:05.49 ID:a+stk7Wa
汎用的につかえるデータを親クラスに持たせとく
225名前は開発中のものです。:2013/03/02(土) 00:50:39.75 ID:uVvxCWMt
一つインタフェースを作るとそれですべての要件を満たそうとすることあるよねw
226名前は開発中のものです。:2013/03/02(土) 13:29:34.31 ID:5pq6bErJ
シーンという抽象モデルでは説明出来ない属性(ステージID)
シーンという抽象モデルでは説明出来ない通信(ステージIDのやり取り)

シーンという抽象モデルでは説明出来ない関係図がそこにあるんだから
シーンとは別の(独立の)抽象モデルを用意して、シーンなんか介さずに
そいつ等同士でステージIDをやり取りさせたほうがいいんじゃないかな
227名前は開発中のものです。:2013/03/02(土) 13:49:26.41 ID:gqNgnq6M
むしろそれ普通だと思うが
228名前は開発中のものです。:2013/03/02(土) 14:13:58.73 ID:5pq6bErJ
あ、ごめん。>>226アンカー忘れ。>>221宛てだった

>>227
うん。このスレの他の人もそんな感じの事を言ってるのかなーと感じてたんだよね。

あと、>>219の中の偉い人?の言ってる事は「シーンがステージのスーパークラス
ってのが何かおかしくないか」という示唆を含んでるように読めるなぁ、と

意地悪な話、例えばステージの途中でカットインでムービーシーンが入って
またゲームに戻るというようなゲームにとっては、ステージの中に幾つもの
シーンがあることになるわけで、シーンとステージの関係はis-aじゃないよね、と

シーンっていう言葉の捉え方が色々あるのかな。ゲーム界隈でのその辺の慣習は
よく知らん
229名前は開発中のものです。:2013/03/02(土) 14:30:09.18 ID:gqNgnq6M
>シーンっていう言葉の捉え方が色々あるのかな。ゲーム界隈でのその辺の慣習は
>よく知らん

それあると思うわ。単純に 「シーン」 とだけ言うと 場面 でしかなくて、
それが例えばゲームロジックとしての論理を含むのか、あるいは描画物だけの物理を含むのか、
みたいな切り分けは、千差万別かなと思う。 人によるってのもあるし、その時の製造物の都合ってのもあるし。
複数人で作業するような場合、その案件の頭でキメとして置く(設計範疇)かなと思う。
230名前は開発中のものです。:2013/03/02(土) 21:35:44.12 ID:3V+oaLbi
参考になるもの無いかなと探してみたんだけど、
セガ本だと「シーケンス遷移」という名前で、その中にゲームロジックと描画が突っ込まれてるな。
あくまでも学習用なので、本職がどういうやり方をしてるかまでは分からんけれども。

>>225-226
それもそうかー。
あんまりそういうモデルを増やすのも、混乱のもとだと聞いたことがあって避けてたんだけど、
それでシンプルになるなら採用するべきってことかな。
231名前は開発中のものです。:2013/03/02(土) 22:05:44.66 ID:gqNgnq6M
>>230
いま実装している内容は、って言う「意味」を考えればわかる事だけど、
別に本職だからとかアマチュアだからでわかれる訳じゃないし、決まった教科書がある訳でもなくて、
案件次第やその時の状況次第や、内容次第。
232名前は開発中のものです。:2013/03/08(金) 02:57:36.03 ID:oANaMNbR
弾や敵にlistを使う場合を学びたいのだが
なんかどこも配列を宣言した講座ばかり、、
書き手が受け売り素人だから配列でやってんのかな

listやvectorを利用して弾や敵を回す
エレガントなプログラム記述方法を教えてくれるサイトはないかな?
233名前は開発中のものです。:2013/03/08(金) 03:00:49.90 ID:BCgAtiww
やることそんなに変わんなくね?
234名前は開発中のものです。:2013/03/08(金) 03:13:37.99 ID:M91j0sF7
自分でlistやvector版に置き換えればいいだけじゃね?
235名前は開発中のものです。:2013/03/08(金) 04:07:55.66 ID:DWXKFICM
listは追加と削除が多いのに使うんじゃないかね。
弾や敵というのは座標を変更または確認するのが多いし、向いていないんじゃないかと思う。
classについて知っていなかったらclassについて学んだほうがおすすめ。
236名前は開発中のものです。:2013/03/08(金) 08:58:24.96 ID:meITMFhX
オブジェクトごとの描画順を気にする場合はlist使うね。
使うといっても、イテレータ回したり
insert,eraseの基本的な使い方しかしないから
わざわざゲーム用のサンプルコードとか要らんでしょ。
処理速度以外は、listで出来る事はvectorでも殆どの事が出来るし。
237名前は開発中のものです。:2013/03/08(金) 10:42:25.84 ID:Xoys7CBS
そんなことも自分で書けないのか
向いてないから死ね
238名前は開発中のものです。:2013/03/08(金) 10:58:18.58 ID:uaaRZICX
こういうやつの所為でtesとかfoとかwowとか
面白いゲームが作れないんだろうなぁ日本は
239名前は開発中のものです。:2013/03/08(金) 11:08:12.27 ID:TqCZmIee
そんな面倒な事しないで萌え絵のおっぱい揺らした方が日本の場合売れるし
240名前は開発中のものです。:2013/03/08(金) 11:54:23.50 ID:uaaRZICX
つまらん、ここ二三年日本のゲーム買ったことない
241名前は開発中のものです。:2013/03/08(金) 12:07:58.42 ID:DG9DTccf
誰もお前が買ったゲームなんて聞いてないんだが
242名前は開発中のものです。:2013/03/08(金) 13:09:48.36 ID:cl4yrUyB
まあ日本のゲーム業界はまじで下火だわな
ゲームじゃやっていけないから駅前のチョンギャンブルの台作ってる会社多いし
243名前は開発中のものです。:2013/03/08(金) 14:30:51.91 ID:pzXYouXL
>>242
これは職場で感じてることなのか、
それともネットで見た感じの良くある話なのかどっち
244名前は開発中のものです。:2013/03/08(金) 14:33:06.27 ID:cl4yrUyB
>>243
職場に決まってんだろ・・・・。
名前は出せないが。
245名前は開発中のものです。:2013/03/08(金) 16:01:42.70 ID:pzXYouXL
>>244
その場合って、やっぱアレか
新規事業開拓で新しい業務ジャンル受注開発とかやっぱする感じか
どこだかの会社がインフラ案件請け負いとかに手出してたな
246名前は開発中のものです。:2013/03/08(金) 16:08:32.89 ID:cl4yrUyB
>>245
正直初めた時点ではパチンコスロットのノウハウまったくないから別のそういう会社にアウトソーシングしたりとか
そういう会社でも潰れてるところあるから、そっからノウハウ知ってる人材拾ってきたり・・・・

今までほとんどハード触らなかったけど、いきなりばりばりに機械触らないといけないから苦労してるよ
プログラム組めても、パチやスロのハード面まったく知らんからな
247名前は開発中のものです。:2013/03/08(金) 16:28:12.67 ID:Xoys7CBS
そんなの一回組んだら後は使い回しでグラと音を差し替え作業するだけだろ
248名前は開発中のものです。:2013/03/08(金) 16:54:23.94 ID:cl4yrUyB
>>247
わかってないのに何いってんだ?
パチスロの中の映像チップにも○○製ってあって、会社によって仕様が違ったり、しかも下手すりゃ添付のサンプルプログラムがバグだらけでゴミすぎたりすんだが?
249名前は開発中のものです。:2013/03/08(金) 18:33:13.95 ID:meITMFhX
C++スレで何故ゲハの話題になってるんですかねぇ。
250名前は開発中のものです。:2013/03/08(金) 21:09:08.20 ID:BF94RQSS
パチンコ台がゲームハードと言えるかどうかは微妙だな
251名前は開発中のものです。:2013/03/08(金) 22:14:11.29 ID:AdIWLmpg
業界の話は板違い。ローカルルールみて確認してくれ。
252名前は開発中のものです。:2013/03/08(金) 22:17:29.23 ID:cl4yrUyB
>>251
すまん
253名前は開発中のものです。:2013/03/09(土) 15:13:42.20 ID:Hne88GD/
自治厨死ね
254名前は開発中のものです。:2013/03/10(日) 05:22:56.19 ID:pXjjQn2k
>>235
はあ?
お前ゲッターやセッターを作る事を知らんのか?
ネットで講座とか書いてる奴は>>235みたいな奴ばっかりなんかなあ
255名前は開発中のものです。:2013/03/10(日) 08:52:45.91 ID:36d8wdUU
3Dの攻撃判定とかってどうやって作ってる?
やっぱり4箇所の変数(XYZ*4=12)でその中に相手がいるか判定するのかな
256名前は開発中のものです。:2013/03/10(日) 09:39:24.92 ID:vW9JqGca
>>254
classでゲッターやセッター作ってやったことあるよ。
listで作ったことはないが。
257名前は開発中のものです。:2013/03/10(日) 09:41:43.70 ID:wtehHkDx
254が何に反論してるのかが分からない…
258名前は開発中のものです。:2013/03/10(日) 09:51:13.68 ID:0zXJiaJ/
>>255
当たり判定だよね?
基本は2Dと変わらんはずが、それよりもその数式の意味が気になる
259名前は開発中のものです。:2013/03/10(日) 10:02:33.11 ID:36d8wdUU
>>258
2DはX〜X、Y〜Yの間の座標に敵座標があるかどうかで判定出来たんだけど
3Dはどういうのが一般的かなと思って
ちなみに上のは矩形の四方の点の座標(一箇所XYZセット)のつもりだけど
良く考えたら4つじゃなくてX〜X、Y〜Y、Z〜Zで3つでいいなw
260名前は開発中のものです。:2013/03/10(日) 10:17:26.09 ID:0zXJiaJ/
>>259
2Dは矩形内に座標かあるかどうかで判定できたけど、
3Dは直方体で同様の判定するのがポピュラーなのか、って話か?
もうちょっと日本語を推敲しなされw

まぁ(1)矩形(直方体)で判定するか、
或いは(2)オブジェクト一つにつき座標一点を定めて、
座標同士の距離の近さで当たり判定する、のどちらかが一般的。
座標距離の算出は三平方の定理を使う。アルゴリズムは2Dも3Dも変わらん。
ピンボールのボールような衝突角度によって移動方向が変わるケースは
もっと複雑になると思うが普通は上述のどちらかで充分。
「当たり判定 c++」でググってみなされ。
261名前は開発中のものです。:2013/03/10(日) 10:24:33.40 ID:rhtDLgUD
2Dでも回転する矩形同士の判定は途端に難易度上がって泣きそう
262名前は開発中のものです。:2013/03/10(日) 15:36:42.61 ID:a1Mp36DI
あたり判定全部球にしてるわ
263名前は開発中のものです。:2013/03/10(日) 15:50:08.74 ID:4172Jfr3
>>262
縦長だったらどうするの?
264名前は開発中のものです。:2013/03/10(日) 15:51:07.46 ID:ty4WwaS7
比率によるなw
265名前は開発中のものです。:2013/03/10(日) 15:57:34.73 ID:rhtDLgUD
縦長横長はなんとかなるけど、斜めが鬼門
266名前は開発中のものです。:2013/03/10(日) 16:17:20.77 ID:4172Jfr3
□と◇でいいじゃん
267名前は開発中のものです。:2013/03/10(日) 16:59:44.94 ID:IOHdCSjU
細かい球をいっぱい作ればいいじゃない
268名前は開発中のものです。:2013/03/10(日) 21:09:24.82 ID:pXjjQn2k
だからー、ゲッターやセッターの存在を知ってる奴なら
「座標を変更したり確認したりすることが多いからlistは向いてない」
なんてすっとんきょうな台詞吐くかよ?
ってこと。
基礎中の基礎の配列でしか弾や敵を設定出来ないとか
バカじゃないのかね。
まあネットの講座じゃ配列で設定した
基礎しか拝む機会がないから
listで作ったこと無いとかいってるんだろうけど
恥ずかしいから言わない方がいいよ?w
本来、配列で最初から定義するのはナンセンスなんだからねw
269名前は開発中のものです。:2013/03/10(日) 21:12:53.23 ID:pXjjQn2k
>>235は、listのコンテナに
classを使えることを知らんのだろw
勉強するべきなのはお前だよww
270名前は開発中のものです。:2013/03/10(日) 21:19:24.81 ID:FJ9WZui7
listは線形探索しかできないから頻繁に参照するような処理には向いてないと思うんだけど
なんか間違ってるの?
271名前は開発中のものです。:2013/03/10(日) 21:22:15.77 ID:hSLluDZd
弾は毎回全部参照して処理するだろうし線形探索でもいいんじゃね
272名前は開発中のものです。:2013/03/10(日) 21:25:16.82 ID:jY3JLJ4P
普通は当たり判定とか順次走査で処理するわけだし
特定のオブジェクトの参照はインデックスの代わりにイテレータを持っていれば良いし
ランダムアクセスで得する場面がソート後の要素の検索ぐらいしか無さそうだけど
273名前は開発中のものです。:2013/03/10(日) 21:28:32.34 ID:nHCM+efj
別にリストでもいいけどあんまりメリット無くねって感じ
274名前は開発中のものです。:2013/03/10(日) 21:37:46.57 ID:0zXJiaJ/
>>268
listの要素にランダムアクセスするときはアクセッサ関係ないだろ。
275名前は開発中のものです。:2013/03/10(日) 21:41:34.41 ID:nHCM+efj
アクセッサ知ったばかりで使いたいお年頃なんだろ
276名前は開発中のものです。:2013/03/10(日) 21:45:40.73 ID:IOHdCSjU
multiIndex使えよ
あとイテレータをどこかに保持させておくのは危険だぞ
277名前は開発中のものです。:2013/03/10(日) 21:55:42.98 ID:3wcbfpn9
単純に線形探索だけ見ても、vectorの方が速度的に有利だぜ。
うちの環境で最適化かけた場合、所要時間が10倍くらい違う(もっともコンマ何秒の世界だがw)

あとvectorの方がメモリ空間を汚さずに済むとか、リソース管理が楽だとかってのは、そろそろロートルの意見か。

データの持ちようによっては、VRAM側にデータを渡すとき、まとめてコピー出来て良いなんてのもあるかな。
278名前は開発中のものです。:2013/03/10(日) 22:07:19.73 ID:3wcbfpn9
おっと、vectorと書いたが、配列のつもりだった。まぁ、同じ様なもんだけど。

探索の所要時間も、イテレーターによるアクセスじゃなくて、直接の場合ね。
vectorが、連続するメモリ空間(配列)で実装されるってのは、確か保証されているはず。
279名前は開発中のものです。:2013/03/10(日) 23:10:09.31 ID:3TyrdDl0
保証されてるね
280名前は開発中のものです。:2013/03/11(月) 01:50:50.60 ID:aOvUtiS/
vectorと変数の配列が一緒と思ってるバカw
あと、listを使うメリットが見当たらないとか
ほざいてるバカは
そもそも配列を宣言することと、vectorやlistを利用することの違いを
わかってないだろw
281名前は開発中のものです。:2013/03/11(月) 01:55:51.29 ID:aOvUtiS/
まあ確かにlistは乱数で呼び出すことには向いてない
イテレータで回すことしか出来んから。
ただ、だからそういう場合はvector使うんだよ、と。

とにもかくにも、変数の配列宣言なんて
なんかの予備用ととして作っとくくらいで
敵や弾に使うなんてメモリの無駄使いでド素人丸出し。
頭の良い講座で配列教えてんのは初心者の為にそっからやってるだけ。
ただ、俺としてはその次、listやvectorで敵や弾を作る講座を書いてやってほしいよな。

バカじゃなけりゃ、削除や追加を頻繁に行うもの(弾や敵)ならlist、
読み込むだけの配列(アニメパターン)ならvector、
これが一番合理的なんだよ。
その理由がわからんならlistやvectorへの理解が足りてないだけ。
理解してりゃこんなこと当然のことなのに、噛みつき返すとは
このスレにはに初心者しかいないのか、、
そりゃそうか、知識どころかてめえでゲームひとつも完成させる根性もない奴ばっかだもんな
ココは。
282名前は開発中のものです。:2013/03/11(月) 07:47:48.03 ID:EjKWN6YM
俺はvectorを組合せて自前で作ったlist構造使ってる
主にメモリー対策なんだがな
283名前は開発中のものです。:2013/03/11(月) 09:38:01.17 ID:ZB3pudYA
オブジェクト単体のサイズなんて限られてるし、
newやメモリアロークの処理速度ロスの方がよっぽど怖いのだが。
そもそも、STLコンテナの使い道が明らかにおかしいレスが見当たらない。
ID:pXjjQn2kやID:aOvUtiS/は勝手に興奮して何に突っ込んでるんだw
284名前は開発中のものです。:2013/03/11(月) 09:43:38.65 ID:ZBN99OMF
その辺の議論と検証は記憶に新しいんだけど、前スレでやってなかったっけ
285名前は開発中のものです。:2013/03/11(月) 10:27:08.19 ID:iyR0zhAY
listって断片化したりしないの?
286名前は開発中のものです。:2013/03/11(月) 11:09:13.18 ID:wh32gdbk
そりゃ実装次第だろ
287名前は開発中のものです。:2013/03/11(月) 11:09:58.24 ID:zRqTsqeV
ここまでmapの話題なし
288名前は開発中のものです。:2013/03/11(月) 15:28:11.56 ID:Ah2SfxGa
setの話題が出ることは永遠にないな
289名前は開発中のものです。:2013/03/11(月) 17:12:11.21 ID:lazCMY3O
追加や削除を頻繁に行うものはdeleteしないでプールして使いまわすんだよ。
290名前は開発中のものです。:2013/03/11(月) 20:02:24.98 ID:JMIXd8TK
ちょっと聞きたいんだけれどもSTGで自機と弾のクラスを作るじゃん
class Myship{
public:
void Updata();
void Draw();
};
class Bullet{
public:
virtual void Updata()=0;
virtual void Draw()=0;
};
でこれらをlistなりなんなりに入れて毎フレームうじゃうじゃするじゃん

ここでもし自機誘導弾を作りたくなったら誘導弾は自機の座標を知らなきゃいけないわけだけれどもどうやって教えるのがスマートかな
291名前は開発中のものです。:2013/03/11(月) 20:45:58.48 ID:zRqTsqeV
だからmap使うんだよ
自機オブジェクトのIDは0とか決めといてmapに登録しとけば、
O(1)の速度でアクセスできるだろうが馬鹿が
292名前は開発中のものです。:2013/03/11(月) 20:46:11.99 ID:1DFldTXz
自機だけでいいなら自機の座標持ってるインスタンスのポインタどっかに保持しとけばいいんじゃない
293名前は開発中のものです。:2013/03/11(月) 20:50:09.17 ID:ZBN99OMF
MyShipにGet座標()が無いから、それを実装するかどうかも含めてどうすればいいって意味かと思った

そのままでいくなら誘導弾のメンバにstaticで座標のポインタもたせておいて
Myshipの作成時に登録したらどう?
294名前は開発中のものです。:2013/03/11(月) 20:52:30.49 ID:zRqTsqeV
O(logN)でしたごめんなさいでした
295名前は開発中のものです。:2013/03/11(月) 20:55:56.27 ID:ZBN99OMF
ん、ハッシュ使うしそれでいいんじゃ?
296名前は開発中のものです。:2013/03/11(月) 21:03:01.75 ID:1DFldTXz
チキンだからハッシュ使うと衝突やメモリ効率が気になる
297名前は開発中のものです。:2013/03/11(月) 21:43:39.22 ID:ZB3pudYA
攻撃目標が一つだけなら、俺だったら自機をシングルトンにするかな?
298名前は開発中のものです。:2013/03/11(月) 21:44:52.91 ID:I27FhV4D
stlのmapは木構造だろ、確か赤黒木
だからO(logN)であってる
299名前は開発中のものです。:2013/03/12(火) 01:12:45.11 ID:5BDAl5IY
ミサイルを撃つときにターゲットを渡せばいいじゃん
それなら自機に対するミサイルだけじゃなくて、敵に対しても使える
300名前は開発中のものです。:2013/03/12(火) 01:19:04.97 ID:r7H9poF1
誘導弾は弾じゃなくて敵にすりゃいいだろw
なんでこんなことも思いつかないの
301名前は開発中のものです。:2013/03/12(火) 01:26:07.00 ID:/5TyWkMz
>>300の発想が天才的過ぎてよく理解できないんだけど
誰か説明してくれ
302名前は開発中のものです。:2013/03/12(火) 01:39:03.32 ID:pXgky6vT
桜花的な
303名前は開発中のものです。:2013/03/12(火) 01:43:11.41 ID:uDm+fHJG
you do done
304名前は開発中のものです。:2013/03/12(火) 07:11:33.01 ID:vqko6kYd
やりたいことはわかるが、それによってどういうメリットが生まれるのかが見えてこない
305名前は開発中のものです。:2013/03/12(火) 10:07:03.33 ID:8MYIPw+h
最近、宇宙と交信してる奴がいるなぁw
306名前は開発中のものです。:2013/03/12(火) 10:59:37.98 ID:pXgky6vT
草の人は、他人をディスらないと死んじゃう病だから
307名前は開発中のものです。:2013/03/13(水) 08:41:13.49 ID:Pe5hBUdl
グローバル変数でやり取りすれば良いじゃん
308名前は開発中のものです。:2013/03/13(水) 10:47:06.88 ID:/V2ZDoZM
規模の小さいうちはグローバルでもいいんだけどな
徐々にまとまり悪くなるよ

シューティングとして形になるサイズまで大きくなったらかなり厳しい
309名前は開発中のものです。:2013/03/13(水) 12:27:01.80 ID:nFEk6r8A
やりたいこと
1. for で auto を使った iterator で回したい
2. for で何ループ目なのか知りたい

やったこと
1. for(auto itr= vec.begin(), int count= 0; ...
はコンパイルエラー
2. 仕方なく int count を for の前で用意した
でも、for 内で使う変数だしスコープ的に for の中に入れたい

という問題を抱えてるんですが、何かいい解決策ないかな?
以下に現状のソースコード上げておきます
http://codepad.org/j9OOrEj7
310名前は開発中のものです。:2013/03/13(水) 12:56:04.74 ID:/V2ZDoZM
気になるなら
{
int i;
for(){
}
}
こんな感じでブロック構造にすれば?
あとiteratorで回してるのにカウントアップが必要なケースは少ないはず。
ロジックを分離できる可能性があるのでそっち先に検討かもしれない
311名前は開発中のものです。:2013/03/13(水) 14:48:11.31 ID:3nQC0RFy
auto count = std::distance(vec.begin(), itr);
312名前は開発中のものです。:2013/03/13(水) 17:05:07.86 ID:/V2ZDoZM
>>311
実装見たら(vs2012)、結果のカウント値に対して線形で重くなりそうだった
ループ内で使うには厳しいかも?
313名前は開発中のものです。:2013/03/13(水) 17:17:41.29 ID:a22J8qdf
イテレーターからbeginを減算してみたら?
314名前は開発中のものです。:2013/03/13(水) 17:51:16.51 ID:Qz0JiCre
つまんないことにこだわるのをやめるのが一番w
315名前は開発中のものです。:2013/03/13(水) 18:14:11.63 ID:lV226hc9
>>312
他の実装は知らないけどVCのvectorならO(1)だと思うよ
vecって名前だけど別のコンテナ使ってるの?

どうでもいいけどvectorのつもりでdequeを使ったらえらい遅かった
よっぽどのことがなければもうつかわねぇレベルw
316名前は開発中のものです。:2013/03/13(水) 18:58:57.02 ID:/V2ZDoZM
>>315
off += _Lsst - _First; ってのあるけどvec用かな。

他は、forで回して見つかるまで++iして見つかったら返してそうなコードが
とても気になったw
317名前は開発中のものです。:2013/03/13(水) 23:40:09.15 ID:NdWAfqh4
たいして変わらないだろ。
プリミティブかポインタを入れているわけだろ?
318名前は開発中のものです。:2013/03/14(木) 00:35:03.50 ID:r0oLHFNz
>>316
vector使うんじゃだめなの?
319名前は開発中のものです。:2013/03/14(木) 02:34:02.77 ID:UaDkJHXx
おいおいiterator_tagとか理解してんのか?
320名前は開発中のものです。:2013/03/14(木) 09:05:36.74 ID:bTwMqbPc
いろいろな方法があるもんですね

iterator 使ってるのにカウントが必要な理由として、
メニューにアイテムとかの項目を表示させるとき、
ループ回数を利用してずらして表示させているからです

今回は >>310 の方法でやってみようと思います
ありがとうございました
321名前は開発中のものです。:2013/03/14(木) 15:21:47.95 ID:1VygKVf9
>>320
なるほど。

今回はやらんで良いとおもうけど
for_each()とファンクタを理解しておくと設計の幅が広がるとおもう
322名前は開発中のものです。:2013/03/14(木) 15:22:45.71 ID:ZpjdSXG/
>>313が言ってるのはこれ?
d.hatena.ne.jp/kogecoo/touch/20090731/1248994749
323名前は開発中のものです。:2013/03/14(木) 15:26:33.20 ID:ZpjdSXG/
url切れた

http://d.hatena.ne.jp/kogecoo/touch/20090731/1248994749

これ型ってどうなるんだ
ポインタのオフセット取り出す感じになんのかね
324名前は開発中のものです。:2013/03/14(木) 19:59:54.41 ID:lrCNTplX
こまけぇこたぁいいんだよ
325名前は開発中のものです。:2013/03/14(木) 20:48:06.80 ID:r2mfW/gJ
>>323
9割方大丈夫だろうけど、怖いなぁ。
326名前は開発中のものです。:2013/03/14(木) 20:52:30.97 ID:wRePyZRT
directx11で3Dモデルのアニメーションやろうとしてるんだけど何か良い方法ありませんか?
Xファイルからsdkemeshとsdkmesh_animへの変換がお粗末すぎて何も出来ない状態なんです。
327名前は開発中のものです。:2013/03/14(木) 22:05:40.99 ID:OjPKQO0/
http://www.cplusplus.com/reference/iterator/distance/

これ見た感じだとdistanceもvectorのときは減算してるぽいね
らんだむあくせすいてれーただと-使う、と固定時間て書いてある…気がする(曖昧)
328名前は開発中のものです。:2013/03/14(木) 23:15:06.02 ID:OjPKQO0/
>>326
Xファイルをやめればいいんじゃないでしょうか
329名前は開発中のものです。:2013/03/14(木) 23:59:04.96 ID:JuXDqLuE
モルダー。あなた、疲れてるのよ
330名前は開発中のものです。:2013/03/15(金) 11:22:23.09 ID:W7kc2g+D
>>326
なんで xファイル使ってるの
自前でいいじゃない
331名前は開発中のものです。:2013/03/15(金) 12:56:16.35 ID:GVP2qOvY
>>330
DXUT使ってるからなんですけど、、load関数手書きしないといけないのか…?
9+Xファイルなら難なく動くのに11+sdkmeshファイルだとややこし過ぎる。。

>>328
アニメーション無しのモデルはsdkmeshで表示できています。
アニメーション有りのモデルはpmdとか別のファイル形式でってことでしょうか。なんか変なような。


おとなしくUnityちかっときゃよかった
332名前は開発中のものです。:2013/03/15(金) 13:07:23.31 ID:iKmSp7Ab
チクショウ!
C言語のポインターが解んねーよ!!
難しいお!!
333名前は開発中のものです。:2013/03/15(金) 13:21:49.42 ID:iKmSp7Ab
カーネル、シェル、モノリシック、マイクロカーネル…
サッパリ解らん…
334名前は開発中のものです。:2013/03/15(金) 13:35:58.35 ID:zoKsNl/X
>>332
向いてないんじゃね
335名前は開発中のものです。:2013/03/15(金) 21:41:00.69 ID:GVP2qOvY
はあ…、
FBX→sdkmeshを試みるもツールが3年前のもので、更新が多いAutodiskの最新版FBXSDKと仕様が合わない。
まあ当然か。
336名前は開発中のものです。:2013/03/15(金) 21:44:07.83 ID:GVP2qOvY
どうでも良いことだがA列車9とA列車8は3Dモデルのアニメーション使ってないことを発見した。
恐らく処理量が多い故にアニメーションを用いて無駄に重たくしないためか、ARTDINKの技術力の限界だったか。
いずれにしろ工夫でなんとかなるもんかな。
337名前は開発中のものです。:2013/03/16(土) 17:10:16.43 ID:cLbYuacT
PS4みたいな次世代マシンだと、もうLODとか使わずに
程々のポリゴン数のモデルに制御点?を焼きこんでデータ作成する流れになるんだろうか
多ポリゴン化はハードにお任せするかんじで
338名前は開発中のものです。:2013/03/16(土) 20:15:12.52 ID:5nZcYTZ0
ボーンの事だな
339名前は開発中のものです。:2013/03/16(土) 20:56:15.17 ID:y9eaLWFz
なんでも掲示板見て思ったんだけど、最近シングルトン流行ってんの?w
340名前は開発中のものです。:2013/03/16(土) 21:25:37.33 ID:cLbYuacT
>>338
いやテッセレーションの話です
341名前は開発中のものです。:2013/03/16(土) 22:34:25.53 ID:s7bnOZ0Q
>>326
http://directxtk.codeplex.com/
使うというは駄目なの?
342名前は開発中のものです。:2013/03/16(土) 22:41:43.74 ID:CL+61DZg
テッセレーションとポリゴン数増加は方向違うんじゃないかな
343名前は開発中のものです。:2013/03/17(日) 11:26:03.17 ID:9586QbU6
>>337
>>340
テッセレーションとLODをどういう意味で使ってるのか知らないけど
例えばDistance Adaptive TessellationはLevel of Detailのためにテッセレータを
使うわけで、だからLODとテッセレーションが排他的みたいな話にはならないと
思うけど?
344名前は開発中のものです。:2013/03/17(日) 12:46:08.83 ID:Hr9QTyLC
言葉足らずでした。
これからはLODのためにローポリのモデルを何個も用意する必要がなくなっていくんすかね先輩?
という意味です
345名前は開発中のものです。:2013/03/17(日) 22:21:08.97 ID:9586QbU6
基本的にはMIPMAPのようにLODを楽にやりたい、自動化したいという要求が
ずっとあるから、だからテッセレーションを気軽に使えるようにGPUを強化したり
APIを改良したりツールを使いやすくしたり、関連アルゴリズムについての
パテント縛りを緩くしたりといった流れがあるんじゃないの?

自分は趣味ではローポリ大好き人間だから常にあらゆる計算リソースを余らせてるし
だからLODとか(ある意味で)貧乏くさいことやらずに力任せ法で(ある意味)富豪的に
描画しちゃってるけどね
346名前は開発中のものです。:2013/03/17(日) 22:30:21.44 ID:9586QbU6
PCは楽でいい。仮に処理が重くなったとしてもハードウェア面で「パワー付けろよ」
で済ましてもなんとなく許してもらえる空気がある(ような気がする)から
347名前は開発中のものです。:2013/03/18(月) 07:36:10.41 ID:0ErLuuEM
3Dモデルを緻密にすると失敗した時が見れたもんじゃねぇ・・・('A`)
348名前は開発中のものです。:2013/03/18(月) 08:06:09.78 ID:XhOnFT2h
はぁやっとジャンプの挙動直った
空に連れてかれてたから謎だったわ

みんなモデリングソフトとモーションソフト何使ってる?
349名前は開発中のものです。:2013/03/18(月) 09:59:27.33 ID:0ErLuuEM
俺はメタセコイアとBlender
350名前は開発中のものです。:2013/03/19(火) 00:36:27.79 ID:PSBE6Zkf
メタセコイアとmikoto
351名前は開発中のものです。:2013/03/19(火) 08:50:33.24 ID:ojbJrz6Z
メタセコは感覚的に作れるので重宝するよね
メタセコ作業の終わりはモデリングと手書きテクスチャまでかな ボーンまで入れるのが一般的? 
352名前は開発中のものです。:2013/03/19(火) 19:42:24.81 ID:WuCsma+S
俺はblenderだけ
感覚的に素早く作れるってのがデカい
353名前は開発中のものです。:2013/03/19(火) 20:02:06.31 ID:V3rSQPHg
Blenderで感覚的に早く作れるってお前は天才か。
354名前は開発中のものです。:2013/03/19(火) 20:16:39.98 ID:WuCsma+S
自分もモデリング入門者だった頃はメタセコ便利って思ってたが
blenderのショートカットと機能量に慣れてしまうと、当たり前だけどこっちの方がかなり楽で早い、ってだけ
経験者としてのマジ話
355名前は開発中のものです。:2013/03/19(火) 20:32:12.28 ID:wJgZXGV7
そもそもBlender使いのいる前で「一般的(なワークフロー)」を聞くこと自体に
何やら挑戦的なものを感じざるをえない(被害妄想)

というのは置いておくとして、こういうのは一般的かどうかと聞かれても
「場合による」「好みによる」としか言えん気がするんだよねぇ・・・
だって後段のツールの特性、受け渡しやすいデータ形式、それにメタセコが
フリー版かシェアウェア版か(プラグイン使えるかどうか)とか、事情は色々だし

今はツールの選択肢が色々ありすぎて悩むのかね。好きなの選んで好きなように
やればいいだけなのに、変なのー
356名前は開発中のものです。:2013/03/19(火) 20:37:37.13 ID:WuCsma+S
何言ってるのかわからないが、好きなの使えばいいじゃない
『天才か』とか変なレスついたからマジ話しただけで、別に他人の道具に興味は無いよ
357名前は開発中のものです。:2013/03/19(火) 20:38:37.79 ID:wJgZXGV7
>>353
昔に比べたらだいぶ日和ってきてる気もするけどね > Blender
358名前は開発中のものです。:2013/03/19(火) 20:42:12.90 ID:wJgZXGV7
>>356
あー、ごめん。>>355は番号コテとアンカー忘れの組み合わせでわけわかんないよね。
俺は>>349で、>>355>>351宛て。すまんこ
359名前は開発中のものです。:2013/03/19(火) 21:31:24.20 ID:YrLK9rTY
すまんこってなんだよちゃんと反省しろよ
360名前は開発中のものです。:2013/03/19(火) 21:55:17.93 ID:V3rSQPHg
なんだよ俺のせいかよw
すちんこ
361名前は開発中のものです。:2013/03/19(火) 22:04:05.14 ID:Y1zA1klo
というか、モデリングソフトはいくらなんでもスレチ。
362名前は開発中のものです。:2013/03/20(水) 00:12:29.19 ID:pPdLYRu2
ではここでコンシューマゲーム業界から滅ぼされたドッターの恨み言をwww
363名前は開発中のものです。:2013/03/20(水) 00:25:39.56 ID:Rj3vDBN8
やはり、MSペイントこそ至高
364名前は開発中のものです。:2013/03/20(水) 00:41:37.25 ID:Li8mSsmQ
Edge使おうよ。どうせ256色も使いこなせ無いんだから。
365名前は開発中のものです。:2013/03/21(木) 21:22:35.42 ID:VcfJVQkt
ドッターのレス、ほとんど無かったのな。ちょっと残念。
気分転換にCG板行ってくる。
366名前は開発中のものです。:2013/03/23(土) 17:14:20.71 ID:9LWgBbJZ
数当てゲームできたよ
367名前は開発中のものです。:2013/03/24(日) 17:57:48.80 ID:deto7Ww9
C言語でRPGを作るとして、
20ターン以内に倒したらご褒美とか
ああいうプログラムをC言語で組むんならこんな感じでいい?


 int t; /*戦闘ターン
 int bhp; /*敵のHP

 for (bhp = 0xa0000; bhp <= 0x00; t++)
{
  /*バトル内容の処理
}
/*int tが20以内だったらご褒美
368名前は開発中のものです。:2013/03/24(日) 18:17:23.12 ID:IjyF0ajP
for文の中で描画も入力もすべてやってるとか
for文の中でコルーチンとか使ってるならいいんじゃね
tが初期化されてないけど
369名前は開発中のものです。:2013/03/24(日) 18:18:08.38 ID:UyQlV2lE
戦闘結果をまとめた構造体を渡して好きな処理するってところかな?
どのみちC++の方が良いと思うけど
370名前は開発中のものです。:2013/03/24(日) 18:18:51.31 ID:tQ3SKcXR
>>367
これforん中、実行される?
あと、tの初期化は?

まあイメージは判るので細かいツッコミはいいとして、あとから読む場合わかりにくい気がするな
while(bhp>0x00 && t>0)
{
  //バトル処理
  t--;
}
可読性の方として、こっちのほうがマシな気がする

サンデープログラマの戯言だがな
371名前は開発中のものです。:2013/03/24(日) 20:28:41.01 ID:RqAOrkru
動けばなんでもいいやだったらそれでいいんじゃね?(適当)
372名前は開発中のものです。:2013/03/25(月) 00:41:55.64 ID:FU1gbfOY
>>367
敵を倒す側もいるからwhile( 1 )で無限ループ状態にしてそん中にt++もいれて、
敵のHPまたは味方のHPが0以下のときはbreakさせるって方法のほうがいいと思う。
それで戦闘が終わったらif( t <= 20 )で処理させればいいしな。
373名前は開発中のものです。:2013/03/25(月) 06:58:31.95 ID:eNqXrqcJ
>>372
なるほど!
あんた天才だな!
それでやってみます
374名前は開発中のものです。:2013/03/25(月) 17:26:29.74 ID:vwJAMjA3
原始的に見えて高度な話題だなw
375名前は開発中のものです。:2013/03/25(月) 22:58:12.49 ID:X+5gEBFD
残念ながら今どきループとか、かなり原始的w
高度ではなく中度だね。
上位層には優越感と懐かしさを感じさせるトピック。
376名前は開発中のものです。:2013/03/25(月) 23:01:29.35 ID:/FKvTN5J
いやたぶん別スレッドで描画処理が動いてるに違いない
377名前は開発中のものです。:2013/03/25(月) 23:04:53.48 ID:hm/78h9s
ループに懐かしさってどんなゲームでもループ処理はしてるだろ
378名前は開発中のものです。:2013/03/25(月) 23:21:17.57 ID:DTCcy5qJ
ループが原始的って、今はどうしてるんだ?
379名前は開発中のものです。:2013/03/25(月) 23:32:00.77 ID:KLF5RBlm
イベントドンブリとか(適当)
380名前は開発中のものです。:2013/03/25(月) 23:59:56.00 ID:dqjlSmOW
時代はgoto
381名前は開発中のものです。:2013/03/26(火) 00:01:54.50 ID:Zfbfal4D
デザインパターン使ったりオーバーロード使ったり
メタプログラミングしたり手続き指向になってくると
ループの感覚が徐々に薄れるかもな
382名前は開発中のものです。:2013/03/26(火) 00:17:08.51 ID:EVGBLDWa
どうするんだろう・・・
383名前は開発中のものです。:2013/03/26(火) 01:09:58.78 ID:iORSs9FM
>>372は天才だな
384名前は開発中のものです。:2013/03/26(火) 10:33:19.26 ID:dpTKDm4r
objective-cとかだと○秒後に処理起動みたいな繰り返しでループ風にできるな
385名前は開発中のものです。:2013/03/26(火) 10:48:53.08 ID:l88I25E9
その繰り返しをどうやってするんだ?
386名前は開発中のものです。:2013/03/26(火) 11:33:07.92 ID:m8wb8KkH
そいつあゲームループのほうかと
387名前は開発中のものです。:2013/03/26(火) 12:26:09.71 ID:zGVt6qth
誰だって最初はそういうところから始めるだろうに、なんで引きずる必要があるの。
388名前は開発中のものです。:2013/03/26(火) 12:58:42.08 ID:hnNw7Q9F
>>385
処理を再帰的に遅延実行して同じ処理を繰り返す
javascriptなんかもそんな書き方するな
389名前は開発中のものです。:2013/03/26(火) 13:28:19.63 ID:kYtFtQ7Q
Unityも、イベント丼で定期的に呼ばれるだけだな
処理の上流は>>381っぽくなってると思うが
390名前は開発中のものです。:2013/03/26(火) 15:33:45.32 ID:hnNw7Q9F
フレームワークなんか使って開発してるとプログラマがメインループ書く機会はないかもな
ループ自体がないゲームっていうと…コマンドラインで動くテキストだけのゲームとか?
391名前は開発中のものです。:2013/03/26(火) 20:38:52.89 ID:2eGqslnO
ループ処理がないゲームなんて存在するわけなじゃんw
>>375がプログラムとか何んにも知らない素人で
昔のゲームはループ処理を使ってたが
今のゲームはループ処理は使ってないとかw
とんでもないことを思ってるだけでしょう

俺はプログラマではないが、それぐらいはわかるよ
392名前は開発中のものです。:2013/03/26(火) 20:42:32.20 ID:FyJYuhUe
まぁタイマにコールバック仕込むとかfiber使うとかやりようはあるけど
処理の繰り返しって意味では普通ループだよな
393名前は開発中のものです。:2013/03/26(火) 21:37:31.40 ID:s2SSFfnh
それ以前にメッセージループ自体がループでしょうにって話が出てこないのが謎
394名前は開発中のものです。:2013/03/26(火) 22:16:01.43 ID:vwFEHZwe
そもそも、プログラマ同士の話はループするしな。
395名前は開発中のものです。:2013/03/26(火) 22:26:25.23 ID:Td3tQFA3
ゲーム起動一発で結果が出るゲームかもしれないじゃん
396名前は開発中のものです。:2013/03/26(火) 22:55:35.52 ID:egX0fb34
>>393
別に謎じゃないと思うよ。みんな優しいから>>375に合わせてるんだよ

375 : 「私の視点から隠蔽されてる制御フローは“存在しない制御フロー”」

これはぺーぺーの兵隊さんの中の上位、つまり上等兵さんだよ。一等兵に優越する

「下手の考え休むに似たり、余計な事は考えず与えられた道具で仕事こなせ」
という上官命令に忠実。そして使ってる道具も優秀だよ。道具の利用者である
>>375は道具の実装の詳細を知らずに済んでる。>>375が使ってる道具は
OODの設計原則に忠実であることが伺えるよね
397名前は開発中のものです。:2013/03/27(水) 15:28:54.52 ID:AHjntoao
RPGのアルゴリズムが知りたい
398名前は開発中のものです。:2013/03/27(水) 15:32:53.54 ID:bp21S+iP
RPGなんて見た目通りじゃん
わからないならプログラマーやめろ
399名前は開発中のものです。:2013/03/27(水) 15:33:04.69 ID:d9Q6/aQM
int main(void)
{
  init();

  while(1)
  {
    check_key();
    update_obj();
    draw();
    flip();
  }
}
400名前は開発中のものです。:2013/03/27(水) 15:52:46.17 ID:l97Z24v1
RPGは作るの面倒だよ
401名前は開発中のものです。:2013/03/27(水) 16:47:50.56 ID:AhrFT5lF
ツクールでおk
402名前は開発中のものです。:2013/03/27(水) 17:02:22.61 ID:94YzokdY
すごく大雑把な質問投げて、
自分で考えられないから正解下さいってのは良くない
403名前は開発中のものです。:2013/03/27(水) 19:14:25.19 ID:UxcXmKFN
メジャーなジャンルはやり込み・攻略(≒動作を観察≒リバースエンジニアリング)
して参考にできる過去の名作沢山あるし、過去の積み重ねのおかげで様式美が色々
あるからオーサリングツールの類も発達してるし、RPGだってツクールとかウディタ
使って素直に作れば取り立てて手間隙かかるジャンルではないよね。楽しいよ

まぁ、何でもかんでもホームメイドで通す趣味嗜好なら手間隙かかるのは最初から
織り込み済みだろうし、ややもすれば手間隙かける事が目的化してるような危篤な
人だろうから、面倒とか言い出すことはないんじゃないかな。自己否定になるから
404名前は開発中のものです。:2013/03/27(水) 19:33:36.13 ID:0G1HbvWI
日本語でおk
405名前は開発中のものです。:2013/03/27(水) 20:21:13.18 ID:L9OCh3Zd
RPGに限ったことじゃないが
「○○のアルゴリズムわかりません教えてください」系の人間は
ヌルゲーマーというか、ゲームあんま好きじゃないよな
対象の事をよく知らんからロジックが想像できるわけねーっつー

我流のシーケンス図とか判定表とか一生懸命時間かけて自作してる
その辺の小中高生なんかにはものすごく親近感を覚えるんだが
わかりません教えてください系の人間にはどうにも理解困難
406名前は開発中のものです。:2013/03/27(水) 20:45:12.31 ID:zNRKNg0J
結局シナリオを作りたいだけなんだよ
根底のライブラリとか技術にはブラックボックスのままで理解しようとしない
表層のたいしたこと無い画面エフェクトとかの演出には興味持つ
407名前は開発中のものです。:2013/03/27(水) 21:05:36.29 ID:4JD3F58u
ハード側の技術者から見たらプログラマも同じようなもん
408名前は開発中のものです。:2013/03/27(水) 21:14:27.11 ID:L9OCh3Zd
>>406
> 根底のライブラリとか技術にはブラックボックスのままで理解しようとしない

これは別にいいと思うけどな
特にハードウェアに近い、低レベルな部分とか、必要なければ高レベルの
俺もライブラリに全部投げるよ。現にそうしてるしDX11とかよく知らん

元々ボードゲーム好きでN-88BASICあがりの人間なので
ハードがしょぼ過ぎて遅くてイライラして仕方なく一部をマシン語で書いて
計算速度をあげたりGDI(グラフィックス関係のチップ)を制御したりしてたけど
必要に迫られてなければ別に使い方を覚えることもなかったクチだな

>>403が言うようにテンプレ化してる部分はツールにお任せするのが好き
409名前は開発中のものです。:2013/03/27(水) 21:16:04.23 ID:L9OCh3Zd
>>408訂正
×必要なければ高レベルの俺もライブラリに
○俺も必要なければ高レベルのライブラリに
410名前は開発中のものです。:2013/03/27(水) 21:24:20.65 ID:94YzokdY
N88とか懐いな
俺の原体験はmz700だ
411名前は開発中のものです。:2013/03/27(水) 21:26:15.11 ID:+SQBUhDK
趣味でゲーム作る奴の一番の障害はリソース作り
412名前は開発中のものです。:2013/03/27(水) 21:34:15.53 ID:L9OCh3Zd
個人的な好みとお断りすれば
ゲームの核心部分、ボードゲームで言えばルールブックとそれに基づいて
ステートの計算とか交換とか状態を遷移させる部分とか
この辺さえ思い通りに作らせてくれるんであれば、それ以外の部分については
ツール・ライブラリ・フレームワークは使いやすきゃ何でもありかなぁ

なんでC/C++使ってるのかって?慣れ、惰性。もうオツムコチコチやねん

>>410
あ、先輩。ちっす
413名前は開発中のものです。:2013/03/27(水) 22:25:13.27 ID:L9OCh3Zd
>>408訂正
GDIじゃなくてGDCだた。記憶が覚束なくなってるな
414名前は開発中のものです。:2013/03/27(水) 22:39:09.53 ID:/GqBG5j1
今ちょうどドラクエもどき作ってるけど結構大変だな
きちんと処理考えないと未来の結果まで表示しちゃったりするし
スキル関係で色々なギミックを入れてくとさらに混沌としそう
415名前は開発中のものです。:2013/03/27(水) 23:29:28.46 ID:vI42kcP4
漫画家でも絵が下手にもかかわらず面白いマンガ描く人もいるしな。
とはいえ、やはり絵がうまい人が圧倒的多数だし、
その方が表現したい事を表現しやすい。
ただ技術ばかり磨いてもどんなゲームを作りたいか見失えば本末転倒な訳で。
プログラマは策士策に溺れやすいって言うか。
気をつけなきゃいかん。初心者は特に。

俺は、最初はVB6で、それからC++だったなぁ。
C++に移行したのはVB6がオワコン化したのと遅いのと。
ゲームの規模が大きくなって
オブジェクト指向なコーディングをはじめたのは良いが
やたらめんどくさかった。それもあったかな。
DirectXは昔から何回もチャレンジしてるが結局身につかん。
結局DXライブラリ頼りだよ。それで充分だからってのもでかいな。
416名前は開発中のものです。:2013/03/28(木) 00:00:08.81 ID:105lsrMR
>>414
どの時代のどのタイトルのドラクエを作ろうとしているのかにもよる
FC版のDQ1だったら楽でしょ
BGMと画像を含めても容量は512KBitしかない
417名前は開発中のものです。:2013/03/28(木) 00:08:24.35 ID:COrT+p9F
容量だけで全てが解れば誰も苦労しないな
容量は、目安の一つに過ぎないから
418名前は開発中のものです。:2013/03/28(木) 00:22:17.86 ID:105lsrMR
512KBitぐらいだったら一人でも軽く打てる文字数だと思う
BGMや画像を除けば、もっと少ないので
それぐらいの文字数だったら楽勝でしょう
419名前は開発中のものです。:2013/03/28(木) 00:27:40.58 ID:ZdiOtKUI
実行バイナリと比較して何を言いたいのか。
420名前は開発中のものです。:2013/03/28(木) 00:37:58.71 ID:1OMrL7Co
ID:105lsrMRに、出回っていたドラクエ(もどき?)のマシン語を見せて、分かるまで閉じ込めてやりたいw
421名前は開発中のものです。:2013/03/28(木) 00:41:24.26 ID:RS0jrY3Z
STG系でもたまに「○○(レトロゲー)なら簡単に作れるだろ」とか
臆面もなく放言する知ったか坊が出現するしな。よくわからんのう

あと、すぐに「容量」という意味不明な基準を持ち出すところとか
癖なんだろうね。で、他の板でも既視感があるなぁと思ってググッたら思い出したよ
bizplusで目撃した割れ坊の発想と同じだわ

http://dat.2aa.jp/bizplus/1343181212.html
> 80:名刺は切らしておりまして[]:2012/08/05(日) 13:50:33.38 ID:A13mDAot
>  30MBくらいの糞ゲーが主流だしな・・・・・・・
>  せめて1GBくらいのゲームだせよ
> 84:名刺は切らしておりまして[]:2012/08/05(日) 18:28:31.93 ID:qDUDuH7l
>  >>83
>  何も知らないんだな、最近の携帯ゲーム機用のゲームを買ったことないんだろ?
>  1GB〜3GBが主流なんだけどな。じゃなくても100MB以下なんて間違いなくクソゲー。
>  まぁ100メガショックどころか8ギガショック以上が普通なんだよ。

この動物の話し相手をしてたんだけど、やっぱ似てるよね。作る人の視点とは違うよ
422名前は開発中のものです。:2013/03/28(木) 00:47:11.92 ID:xy5XCTwC
限られた容量と性能で表現するのがどのくらい大変なことかわかってないんだな
423名前は開発中のものです。:2013/03/28(木) 01:11:30.81 ID:pLd7zwBK
スーパーマリオ見せたら憤死するんじゃね
424名前は開発中のものです。:2013/03/28(木) 01:13:08.62 ID:105lsrMR
>>420
??
マシン語?
何言ってるの??
425名前は開発中のものです。:2013/03/28(木) 01:15:15.96 ID:105lsrMR
アセンブリなら読めるがマシン語はさすがに読めないな
マシン語なんて読める人間なんているの?
426名前は開発中のものです。:2013/03/28(木) 01:19:20.24 ID:COrT+p9F
いにしえのプログラマーは、バンチ穴でプログラムを読んだという
427名前は開発中のものです。:2013/03/28(木) 01:49:55.35 ID:431IlpfV
>>425
ハンドアセンブルしてたから多分読めるわ
さすがにもう大分忘れてると思うけど
428名前は開発中のものです。:2013/03/28(木) 02:38:30.75 ID:+MGederX
ファミコン時代のプログラムとかサイズ小さくするためにとんでもないスパゲティコード書いてたようなしろもんでしょ
最近のプログラミングスタイルで作ったらそれなりの規模になるんじゃないの
ていうか実行ファイルのサイズとプログラミングの難易度にどんな因果関係があるのかわからん
429名前は開発中のものです。:2013/03/28(木) 03:26:12.73 ID:105lsrMR
サイズ=難易度ではなく
ファイルサイズが大きくなると
それだけたくさんの文字を打たないといけないので大変
430名前は開発中のものです。:2013/03/28(木) 04:03:31.82 ID:O2mQhpx7
>>429
ダメだこいつ
キーパンチャー=プログラマと思ってら
431名前は開発中のものです。:2013/03/28(木) 04:36:15.04 ID:105lsrMR
>>430
じゃあ1週間で1GBのコードを打ってみてください
432名前は開発中のものです。:2013/03/28(木) 04:56:56.20 ID:dYYN09F4
>>431
3dmodelとwavのサイズはいったいどこへ消えてしまったんだ・・・・。
433名前は開発中のものです。:2013/03/28(木) 05:10:30.11 ID:+MGederX
どこでキー打つのが大変って話になったんだ?
434名前は開発中のものです。:2013/03/28(木) 06:04:30.70 ID:O2mQhpx7
>>431
あーわかったわかった
あんたの勝ちだよ 快勝だよ

頭 の 悪 さ で あ ん た の 完 全 勝 利
435名前は開発中のものです。:2013/03/28(木) 09:02:58.40 ID:ZdiOtKUI
>>431
ソースコードもコピペできるんだけど知らないの?w
436名前は開発中のものです。:2013/03/28(木) 09:10:41.24 ID:uHKQK5KI
なんだよ

ゲームPG志望の学生が多いとおもって
C++プログラマがこれ以上減らないように無責任にアドバイスしてたのに
おっさんばっかかよw
437名前は開発中のものです。:2013/03/28(木) 09:13:40.23 ID:D9LrUKKm
どのタイプのドラクエって言っても今プログラムするなら
DQ1だろうが8だろうがアルゴリズム変わらん気がする
438名前は開発中のものです。:2013/03/28(木) 09:21:35.12 ID:ZdiOtKUI
N88-BASICとかハンドアセンブルとか普通に話題に出てきて焦る
439名前は開発中のものです。:2013/03/28(木) 10:43:24.77 ID:105lsrMR
>>434
例えばWindowsの電卓の容量が90KBぐらい
一か月掛けて100KBのプログラムを組むだけでも大変な作業だと考えよう

100KBとは、すなわち1MB
一か月で100KBのプログラムが打てる人であれば、
1年かければ単純計算で12MBぐらいのプログラムを組むことが出来る。
つまり、この人が120MBのプログラムを組むには、10年掛かるという計算。

これがゲームの容量が増えれば制作が困難になる理由の正体。
なので、ゲーム会社はたくさんのプログラマを雇って
1つのソフトウェア(ゲーム)を開発している
440名前は開発中のものです。:2013/03/28(木) 10:46:47.69 ID:105lsrMR
>>437
>DQ1だろうが8だろうがアルゴリズム変わらん気がする
いや…あの?何言ってるの?
DQ1とDQ8がアルゴリズムが同じ?w
あまりに意味不明なのだが、どういう意味なのか詳しく聞かせてくれないかな?
441名前は開発中のものです。:2013/03/28(木) 11:13:01.88 ID:uHKQK5KI
メインPGがしっかりしてれば、いくら量が増えても複雑にならんよ
442名前は開発中のものです。:2013/03/28(木) 11:20:13.94 ID:ZdiOtKUI
>100KBとは、すなわち1MB
やばい、この時点で理解できないw
443名前は開発中のものです。:2013/03/28(木) 12:28:35.08 ID:D9LrUKKm
>>440
今の環境で作るならね。もっと言えばwiz#1も同じか?
RPGの基幹部分なんてどれも同じフレームワークでいける
wiz#1を作ればだいたいのRPGカバーできるはず
…まぁカバーというか流用というか使い回しというか
444名前は開発中のものです。:2013/03/28(木) 13:40:48.50 ID:MwY3sPR+
>>414
推測だけど、それはRPGに限らずADVでもSLGでも同じだと思うなぁ・・・
例えば複数の女の子(男の子)を同時並行で攻略してくタイプの、恋愛シミュ?
修羅場回避ADV?一言でなんて呼ぶのかよく知らんけど、まぁ要するに
あの手のゲームを何本か遊び倒しながら状態遷移図でもシーケンス図でも
何か描いてみれば、あれのボリュームも相当なものだと分かると思うよ
445名前は開発中のものです。:2013/03/28(木) 13:42:42.64 ID:105lsrMR
>>442
間違えた
1000KBが1MBか

ということは、1か月かけて100KBのプログラムが打てる人なら
1年で1200KBのプログラムを打つことが出来る
MBに直すと1.2MB
10年掛ければ12MBのプログラムが打てるという計算
これで理解できますか?
ゲームの容量が増えれば制作が大変になるという意味が。
446名前は開発中のものです。:2013/03/28(木) 14:04:13.49 ID:b0d/cvCi
>ゲームの容量が増えれば制作が大変になる
この部分は身をもって分かるが、それを理解するのに要した理屈はそれじゃない
447名前は開発中のものです。:2013/03/28(木) 14:04:45.41 ID:uHKQK5KI
お前おもしろいw
448名前は開発中のものです。:2013/03/28(木) 14:09:35.78 ID:ZdiOtKUI
>>445
マジレスすると、コードの量の多さ、増してやコーディングの困難さは
exe等実行ファイルのサイズなんぞなんの当てにもならん。
実行ファイルには何らかのデータやライブラリを内包しているが、
そのデータやライブラリでサイズが大きく左右される。
砂糖水(exe)の量が多いから含有糖分(コード)も多い、と言ってるのと同じ。
濃度を考えていない。

いい加減、地球尺度でモノ語ってくれませんかねぇ。
449名前は開発中のものです。:2013/03/28(木) 14:20:22.46 ID:ah5sDDsq
多分ID:105lsrMRはシナリオライターみたいな話してる
450名前は開発中のものです。:2013/03/28(木) 14:26:02.75 ID:uHKQK5KI
私の戦闘力は53万バイトです
451名前は開発中のものです。:2013/03/28(木) 14:57:43.90 ID:9wv4H7Oo
プログラマの労働の半分はデバッグと無茶な仕様変更による修正だろ
452名前は開発中のものです。:2013/03/28(木) 16:05:23.75 ID:91tGOqZv
労働の半分はいかなる仕様変更にも耐えうる鉄壁の設計だろ
453名前は開発中のものです。:2013/03/28(木) 16:07:32.41 ID:91tGOqZv
ソフト開発は建設と似ているとよく言われる
土台の太さを変えずに高さだけ積み上げて行ったら…わかるな
454名前は開発中のものです。:2013/03/28(木) 20:42:17.18 ID:pLd7zwBK
>>449
それはシナリオライターに失礼だろう
455名前は開発中のものです。:2013/03/28(木) 20:45:06.07 ID:Cx6P3BmI
容量小さければ簡単ならコードゴルフは誰だって出来ますね
456名前は開発中のものです。:2013/03/28(木) 20:49:34.22 ID:6Bpe26Jg
久々に真の勘違い野郎を見たwww
457名前は開発中のものです。:2013/03/28(木) 21:00:10.90 ID:ZdiOtKUI
100KBとは、すなわち1MB (キリッ
458名前は開発中のものです。:2013/03/28(木) 21:08:43.88 ID:fWerM8Ls
>1000KBが1MBか
違います
459名前は開発中のものです。:2013/03/28(木) 22:02:47.72 ID:DSO/ssKK
ヘッダファイルの拡張子ってC++だったらhppの方が良いの?
460名前は開発中のものです。:2013/03/28(木) 22:09:24.33 ID:uHKQK5KI
会社を渡り歩いたが cpp,h が殆どだった
テンプレート色が強いときはhppにしてる
461名前は開発中のものです。:2013/03/28(木) 22:14:23.37 ID:Ej2XRXIF
>>458
女の子に嫌われるww

>>445
コンパイラ使う前提での話になるが、
コンパイル・オプションで、速度を優先したりすればバイナリ・サイズが増える気がするんだが。
サイズはそこそこ変動しないか?
462名前は開発中のものです。:2013/03/28(木) 22:24:26.19 ID:4zWCaouN
>>452-453
え、そうなの?
ぼっち趣味のゲーム作りなら何も専門業者の真似事して大仰に構えなくたって
作り捨てる感じで勢いでやっちまったほうが楽しいと思うけどな。個人的には

「僕のエターナルフォースブリザードシルバーブレットシステム」とか
目指す趣味もあるんだろうけど、ライブラリ作りが目的化しそうじゃん?
463名前は開発中のものです。:2013/03/28(木) 22:42:56.53 ID:XZx3JeM3
マシン語はC9くらいしか読めません。
464名前は開発中のものです。:2013/03/28(木) 23:07:25.55 ID:gC//cuux
R3000ならなんとか
465名前は開発中のものです。:2013/03/29(金) 00:14:01.17 ID:baqkdVXc
>>444
ノベルパートも並行して作ってますがなかなか大変ですね
簡易スクリプトでもちゃんと作らないと対応できないし
使いやすいスクリプト仕様を考えるだけでも発見は多いです
既読スキップはやっぱり1ビット(もしくはバイト)ずつ記録していくしかないのかな?
466名前は開発中のものです。:2013/03/29(金) 07:18:43.08 ID:tLT5xEO2
お知らせ

市原警察署の生活安全課の帰化人創価警官の指導の元、
入学式から2週間ほど、在日の創価学会員を主体とした自称防犯パトロールが、
2週間ほど行われることになりました

生活安全課の指導であることと、パトロールであることは、
絶対に公言してはいけないとの指導も、帰化人創価警官より出ています

期間中は2人組の在日の創価学会員が、頻繁に創価批判者の自宅周辺を、
うろつき回ると思われます
日本人の方は、充分に注意してください
467名前は開発中のものです。:2013/03/29(金) 22:27:41.30 ID:XT9VpJBU
>>465
>既読スキップはやっぱり1ビット(もしくはバイト)ずつ記録していくしかないのかな?

ごめんちょっとわからん。それって記録容量が気になるという話?

もしそうなら杞憂じゃん?
ドラクエって小学生でも楽しめる典型的な
日本式RPGだし、初期のものなら
物語のフローはわりと平易で文章量も控えめだよね。実行環境がPC前提なら
既読/未読情報の記録容量なんて、ねぇ?

それより、見せちゃいけない未来の結果が出る
(敷かれた物語のレールを踏み外してるとか
到達できないはずの状態に遷移してるとか)
そっちの根幹部分の不具合のほうが気になるな。中で何が起きてたの?
468名前は開発中のものです。:2013/03/29(金) 23:18:27.22 ID:ee1Le8SX
>>465
改行をするところまでが一つの文章として考えてその文章が100あったときのことを考える。
やっている人が1〜50まで読み終えてまた1から読み直そうとした場合
読み終えた時に50という数字を記録しておいて、1の状態から既読スキップのボタンを押すと
早送りで文章が50のところまで動くようにしておけば文字単位で記録する必要はない気がする。
469名前は開発中のものです。:2013/03/29(金) 23:43:16.29 ID:rXXS8rGH
>>468
それだけだと分岐あるときにこまるんでない
470名前は開発中のものです。:2013/03/29(金) 23:47:53.39 ID:ee1Le8SX
>>469
分岐あるときはまた別々のところに記録しておけば問題ないと思う。
471名前は開発中のものです。:2013/03/29(金) 23:51:52.21 ID:XT9VpJBU
>>468
>文字単位で記録する必要はない気がする。

あ、たぶんそのESPレスは外れてると思うよ
さっき「既読スキップ ビット」ググってみたらこんなのが出てきたんだけどさ
http://dixq.net/forum/viewtopic.php?f=3&t=5045
おそらく>>465はこれの受け売りの話をしてたんじゃねーかなぁ、と予想。

なんつーか、ひどく説明不足な質問を投げるんだよねぇ
読む側に強力なESPを要求する悪癖は治したほうがいいのにね
472名前は開発中のものです。:2013/03/30(土) 00:42:56.49 ID:th1lMrRl
468方式はいいな。容量食わない上に、簡単なプログラムで自動化できそうだ。
ノベルゲー作る予定は無いけど。

質問というか雑談よりだからどうでもいんでない
ただRPGにノベルパートという辺りで俺のESP値は尽きた。
473名前は開発中のものです。:2013/03/30(土) 04:14:39.32 ID:ZGdFkUzD
>>467 >>468 >>472

例えばドラクエでは味方が全体攻撃を受けた時は
一人目のダメージエフェクト→表示HPの更新→二人目の〜のような感じで一人ずつHPが減っていくと思うんですけど
全体攻撃が確定した時点で味方全員分のHPの内部値を減らしてしまうと一人目のHPの更新をした時点で2、3人目のHPの表示も減ってしまう
という基本的な所でつまずいてました(これは自分の描画の仕方にも問題がありますが)
現在はタスクを作って前の演出が終わるまで内部値の処理を遅らせることで対応してます

既読スキップに関しては
ぐぐってもあんまり情報がなかったので
一般的にはどうやるものなのかなと軽い気持ちで書きました

>>468さんのやり方も聞いたことがあったのですが
とりあえずスクリプト1文に対して1バイトずつ記録するやり方でやってみます
よく考えたら仮に1万文あっても10kbで済むのであまり問題にならないですね
474名前は開発中のものです。:2013/03/30(土) 04:18:10.22 ID:ZGdFkUzD
自分が作りたいのはSLGでノベルパートとはその会話部分でした(ノベルゲーにも転用できる感じで)
ドラクエみたいなものとはSLGの戦闘パートに流用するための雛型として作ってました(こちらもRPGにry)

どうやら長文を書くのが嫌で言葉足らずになってしまう癖があるようなので
これからは気をつけます
これ以上スレ汚しするのもあれなんで一人で頑張ってみます
ありがとうございました
475名前は開発中のものです。:2013/03/30(土) 13:18:36.19 ID:3SJbbi4m
この手の機能の分かりやすい例は吉里吉里/KAGの既読スキップかな
文章(シナリオ、スクリプト)をラベルで区切って、これを分割単位に
既読/未読情報保持。ラベルはジャンプ先に使うものだから、ゲームの
フローグラフのノードとかブロックに相当する粒度で巡回(到達)回数を
記録していく感じかな
http://devdoc.kikyou.info/tvp/docs/kag3doc/contents/ReadUnread.html
476名前は開発中のものです。:2013/03/30(土) 21:33:13.45 ID:xYzFdnls
>>474
転用流用を考慮して組み始める→取らぬ狸の皮算用→失敗フラグがピンコ勃ち
477名前は開発中のものです。:2013/03/31(日) 07:21:43.98 ID:m0kkzt2K
http://www.meetingcpp.com/index.php/br/items/a-look-at-cpp14-papers-part-1.html

C++は文字とか文字列操作系ってもう拡張される事はあり得ないのかな?
478名前は開発中のものです。:2013/03/31(日) 08:47:40.22 ID:5MQ1yrPW
ゲーム作ってる人で、Stateの扱いってどうしてる?
移動してる時は走るStateを1にすればいいんだけど、
何も押していない時に0になる処理ができない…
走っていない時に0ってすると、ジャンプや攻撃でも0のままだし
479名前は開発中のものです。:2013/03/31(日) 10:10:07.08 ID:2T8ign3F
分割して処理してるなぁ
待機中か行動中か、その上で歩きや走り
移動してない状態が一定時間経過すると待機状態に移行させてる
480名前は開発中のものです。:2013/03/31(日) 10:23:56.82 ID:hG5k5feE
ちょっと何言ってるかわからないですね
481名前は開発中のものです。:2013/03/31(日) 10:29:19.66 ID:zUwkpZ7L
まず状態遷移図を書いて整理しないとどうにもならないけど、とりあえずは
キャラのステートとキー入力のステートは分けて考える(キー入力は対応する仮想コマンドに変換しておくといい)
キャラステートが変わる行動はメソッド化しておく。

待機中は全てのコマンドを受け付ける。入力コマンドに応じてメソッドを呼び出す。
ジャンプ中はジャンプできない。ジャンプ以外のコマンドだけ受け付けてメソッドを呼び出す。

キャラのステートはswitchでもStateパターンでもいいけど
コマンド別にメソッドを呼び出すのはswitchが良いと思う

キャラのステートとキー入力を引数にとって行動を決定するタイプよりも
書いた状態遷移図に忠実に実装できるはず
482名前は開発中のものです。:2013/03/31(日) 10:32:03.21 ID:E6mL5Iuj
ソニックみたいに一定時間待機でアニメーションとかもあるけどね
483名前は開発中のものです。:2013/03/31(日) 10:57:58.72 ID:wHCg/llM
質問です。

Game → Field → Enemy, Player
(→は、〜をもつ。包含)
のようなクラス関係で、
GameがもつscoreをFieldから触りたいときどうしますか?

1. 予めFieldにscoreの参照を伝える
2. scoreをstaticなメンバに変更。どこからでも触れるようにする(または、シングルトン)
3. その他

同様に、EnemyからFieldのメンバを触りたくなることもあります。(EnemyからPlayerの情報を見たり)
484名前は開発中のものです。:2013/03/31(日) 11:51:43.15 ID:kvnkIbFe
Game → Field → Enemy, Player
↓    ↓   ↓   ↓
DataDataDataDataDataDataData
485名前は開発中のものです。:2013/03/31(日) 11:55:12.37 ID:E6mL5Iuj
オブジェクト指向なんかいらんかったんや
ファミコンもスーファミもアセンブラで神ゲーが作られたんや
オブジェクト指向を使うと糞ゲー化するんや
486名前は開発中のものです。:2013/03/31(日) 12:35:02.18 ID:0uN52eok
>>478
場合に依るとしか。何ゲーの話なんだよ。市販ゲーで相当するものを例示するとかさ

>>483
Fieldが要求してる権利(だけ)与えときゃいいんだから、基本的に1.でいいのでは

でもフィールド風情がスコアを操作したいなんて「ゲームの支配権は握らせろ」と
言ってるようなもんだから、フィールドさんマジジャイアンだな。というわけで
FieldはGameそのものだから一体化させとけよ

あるいは

1.b. (Gameが)予めFieldにスコアラーを操作(orにアクセス)する権利を渡す。
具体的には、Fieldにスコアラーの(インターフェイスの)参照を渡す。
操作(アクセス)する権利を限定するなら、アクセス制限付きインターフェイスを
用意し、その参照を渡す

FieldはGame(ゲームマスター)を買収しています
487483:2013/03/31(日) 13:02:38.32 ID:wHCg/llM
>>484
近いのは2ですかね

>>485
完成させることこそ正義ですよね

>>486
確かにFieldがスコアを操作するのはおかしいですね
(Fieldに当たり判定をさせてたら、スコアを弄りたくなってしまって)
機能をなるべく小分けにしたいので、
1.b. 案で行こうかと思います

ありがとうございます。
488名前は開発中のものです。:2013/03/31(日) 18:41:28.90 ID:dpNbCbcs
>>485
オブジェクト指向はゲームデザインを制約する理由にはならん。
489名前は開発中のものです。:2013/03/31(日) 18:47:14.01 ID:WFT1ziBO
オブジェクト指向の弊害は完成を遅らせるぐらいしかないな
使いこなせばメリットは沢山あるけどな
490名前は開発中のものです。:2013/03/31(日) 18:49:46.04 ID:1k9bCedE
ゲームロジックを極力使いまわそうとか考えすぎて気が付くとツクールを作っていたでござるの巻
491名前は開発中のものです。:2013/03/31(日) 19:01:46.37 ID:wZuh7yIh
>>490
それで満足してやめるんだよなw
492名前は開発中のものです。:2013/03/31(日) 19:03:55.28 ID:zUwkpZ7L
結局イベントコードでプログラミングするハメになるな
なんにしろツクール2kやウディタですら「できないことはない」って言われるし(3D以外)
セーブ&ロードやキー入力、マップエディタあたりのフレームワークは作りたいね
493名前は開発中のものです。:2013/03/31(日) 19:04:12.82 ID:dpNbCbcs
ツクールとまではいかんが、ライブラリならありすぎて困る。
未使用のライブラリがHDDに腐るほど転がってるよw
494名前は開発中のものです。:2013/03/31(日) 19:36:21.79 ID:5MQ1yrPW
プログラミングは大型ならまずRPGツクールを作る作業から始めるよな
495名前は開発中のものです。:2013/03/31(日) 19:43:02.17 ID:ihR4Ab9s
始めないけど?
496名前は開発中のものです。:2013/03/31(日) 20:01:29.33 ID:zUwkpZ7L
それ言う人よく居るよね。なんでかよくわからんけど
スクリプトに通す機構は作ったりするけどあんな完璧なGUIは
マップエディタとかビジュアルが大事なものにしかしか作らんよね、しかもC#使うわ
497名前は開発中のものです。:2013/03/31(日) 20:03:26.50 ID:7OOt+HHy
まずオープンソースのサイト覗いて似たようなの探す
498名前は開発中のものです。:2013/03/31(日) 20:13:04.03 ID:WFT1ziBO
エフェクトCGってどうやって作ってる?
わざわざ絵を描くと手間がかかりそうだし、
ツールを作るにしても、どこから手を着ければよいのやら・・・・・・
499名前は開発中のものです。:2013/03/31(日) 20:24:05.58 ID:WFT1ziBO
とりあえず、パーティクルを弾幕風に撃ち出してみたりしてるけど、
何かちがうんだよな。
500名前は開発中のものです。:2013/03/31(日) 20:33:33.92 ID:WFT1ziBO
マップエディッタは、Tiled使って、csvデータを変換して使ってるな、俺は。
501名前は開発中のものです。:2013/03/31(日) 20:58:49.28 ID:wWtpKF7B
Tiledってタイル番号が1から始まるというのは変えれんのか?
最初全然違うマップが表示されて何だと思ったら
タイル番号の始まりが1からだったという
502名前は開発中のものです。:2013/03/31(日) 21:03:02.91 ID:WFT1ziBO
Tiledは、テクスチャを後からでも増やせることを前提にしているから、
あ〜ゆ〜仕様なんだと思う
503名前は開発中のものです。:2013/03/31(日) 21:04:58.32 ID:ihR4Ab9s
504名前は開発中のものです。:2013/03/31(日) 21:08:33.14 ID:wWtpKF7B
>>502
0から始まるとテクスチャ増やせんの?
少し考えてみたがちょっと分からん
505名前は開発中のものです。:2013/03/31(日) 21:16:56.51 ID:WFT1ziBO
>>504
0番を透過にしてあるから
506名前は開発中のものです。:2013/03/31(日) 21:23:51.94 ID:wWtpKF7B
>>505
いや、もちろんそれは理解してるんだけど
それだとテクスチャを追加できない理由が分からない
507名前は開発中のものです。:2013/03/31(日) 21:28:09.77 ID:dpNbCbcs
255を透過にして256からまた非透過ってのが作者の生理的に嫌なんだろ。
tiledが2byte出力できるか知らんが。
四の五の言わずにcsv出力してからexcelでどうにかした方が早くないか?
508名前は開発中のものです。:2013/03/31(日) 21:46:29.49 ID:wWtpKF7B
>>507
既存の配布されてるタイルパーツとかほとんど0番が透過だと思うけど
それを普通に使ったんじゃダメなのん?
Tailedを使うとそういったタイルパーツが使えないのよね上記のように
最初のパーツが1番になってしまうので

タイルパーツの番号が0番から始まると追加できなくなるって言う
仕様が理解出来なのよ
509名前は開発中のものです。:2013/03/31(日) 22:12:46.83 ID:l3mZt1VF
他のエディタを使ったことないからわからないけど、tiledは何もおかしくないと思う・・・
510名前は開発中のものです。:2013/03/31(日) 22:20:41.46 ID:ntoxEirl
483とは別人だけど
素直に1b案を解釈したら、Fieldさんがファクトリクラスになった。
こんなかんじでいいのかな・・・(´・ω・`)
ttp://codepad.org/klKDGisb
511名前は開発中のものです。:2013/03/31(日) 23:12:23.17 ID:kvnkIbFe
インテリセンスが死にそう
512名前は開発中のものです。:2013/04/01(月) 19:15:23.43 ID:VcD7kLeu
>>489
弊害も何も、オブジェクト指向とプログラミングは厳密には関係ないからな。
単純に問題の切り分け方、設定の把握の仕方にすぎない。
だから、Javaだろうと、昔ながらの構造プログラミングべた書きも普通に出来るし、
Cで、いろんな制約を悪用してオブジェクト指向プログラミングも可能だし。

完成がおくれるなら、それはオブジェクト指向の慣れのなさか、
問題の粒度が適してないだけの事。
513名前は開発中のものです。:2013/04/01(月) 19:19:13.65 ID:mluqxLQg
オブジェクト指向がゲームをつまらなくした
514名前は開発中のものです。:2013/04/01(月) 19:40:07.86 ID:BfVCJNsq
3DCGがゲームを詰まらなくしたなら理解できるけどな
515名前は開発中のものです。:2013/04/01(月) 19:47:47.45 ID:VcD7kLeu
どっちもつまらなくはしてないと思うけどな。
ただ単に、目が肥えて、大人になって昔ほど無邪気に楽しめなくなったんだと思うわ。
516名前は開発中のものです。:2013/04/01(月) 20:04:09.66 ID:PIRz2Rf9
CGとかがどんどん綺麗になって開発費が高騰して冒険できなくなった
517名前は開発中のものです。:2013/04/01(月) 20:25:33.71 ID:VcD7kLeu
>>516 それはそれで嘘。
アプリなんかは、あきらかにスーファミ時代の一本よりも安く出来るぞ。
それにWindowsとかなら、フリーソフト等ですごい良いのたくさんあるし。
そして、現に今一番売れてる(?)パズドラなんて、開発費糞安いし。

ただ単に、旧来のゲーム会社様のソフトしか遊ばなかった層が、
そういうゲームしか見てこなかっただけだろ。
518名前は開発中のものです。:2013/04/01(月) 20:49:38.10 ID:VQhuiY7m
>>512
>完成がおくれるなら、それはオブジェクト指向の慣れのなさか、
>問題の粒度が適してないだけの事。

その前者と後者(細かい粒度のOOP)の組み合わせは凶悪かつ最頻出かな。
更にこれにデザパタが組み合わさる頭でっかちオナニーコードは最凶

486を書いといて自分で言うのもなんだけど、1.b.は腐敗臭がきつい

OOPするならせめてOODの原則に従ってトップタウン設計で粗い粒度で
取り入れ、一方で構造化プログラミング主体の素朴な組み方で細かな粒度で
部品を整備して、そして全体としてそれらをうまく擦り合わせてくれれば
まだ無難な形に落ち着くと思うんだけどね
519名前は開発中のものです。:2013/04/01(月) 21:00:31.39 ID:VQhuiY7m
>>517
>>516みたいなのは「森(ゲハ)へお帰り」と諭しとかないと勘違いして棲み着くぞ
520名前は開発中のものです。:2013/04/01(月) 21:05:46.83 ID:fFVRTwyB
オブジェクト指向を何の根拠もなく否定してるやつは
コーディングの経験がほとんどない批評家気取りの連中だろ。
もしくはオブジェクト指向を理解できなくて
それに振り回されてコーディングできない阿呆。
個人のゲーム製作ならオブジェクト指向だろうがなんだろうが
自由にすればいいと思うけどなぁ。
開発費高騰だとか市販品の出来だとかどうでも良いわ。C++スレなんだし。
521名前は開発中のものです。:2013/04/01(月) 21:46:17.54 ID:mluqxLQg
高級言語がゲームをつまらなくした
522名前は開発中のものです。:2013/04/01(月) 22:41:09.69 ID:cBAstc/5
C++と同じでバカが使うと却って生産性落ちるんだよ
523名前は開発中のものです。:2013/04/01(月) 23:04:54.75 ID:VCc1N2Nc
道具のせいにしたら終わり
524名前は開発中のものです。:2013/04/01(月) 23:46:01.34 ID:VQhuiY7m
>>523
同感

数年前にこの板の何とかシステムスレで「HSPいいっすよねぇ」って
話を振ったら袋叩きにされたよ。全く。

ゲーム作れない人に限ってHSPに物凄いコンプレックス持つんだよね。
サクサクっとゲームを作れるのが許せないからって色々難癖付けてくるんだよ。
ひどいよね
525名前は開発中のものです。:2013/04/01(月) 23:52:45.96 ID:cBAstc/5
すいませんさすがにHSPにコンプレックスは抱かないです
526名前は開発中のものです。:2013/04/01(月) 23:53:11.93 ID:VcD7kLeu
まったくだ。自分も昔は、HSPでゲーム作ってたから、HSPを馬鹿にする奴は、たんなる無能モノだとおもうわ。
同じように、Rubyとか、RPGツクールとか、Unityとかをなぜか見下す奴も同様。

C++に最終的に流れ着いたけど、結局は今まで触ったものから得た経験を自分流に使いこなすためだし、
その時に、一番使える言語ってだけで、C++でつくってるから偉いみたいなのは馬鹿を通り越して、間抜け西か見えない。
( そして、そういう奴に限って、無駄に移植性が・・・・とか言い出すしなww)
527名前は開発中のものです。:2013/04/02(火) 00:20:23.90 ID:C+P68sAa
>>525
あ、ごめんなさい。あなたの意見にも同意です。
528名前は開発中のものです。:2013/04/02(火) 00:36:51.49 ID:GtDoxNUs
好きにすればいいけど、HSPだけは生理的に無理。
ゲームは何本か完成させてるし、コンプレックスなんてないよ。
ただOOPなしでゲーム作り上げる奴はマジですげぇと思うわw
C++スレなら尚更。
529名前は開発中のものです。:2013/04/02(火) 00:56:32.22 ID:C+P68sAa
>>528
スレ違いになるので「HSP オブジェクト指向」とかでググれ下さいカス
530名前は開発中のものです。:2013/04/02(火) 01:11:48.61 ID:ZX+u/JFx
>>529
いくら出来るたって言語仕様に無いんじゃ厳しいんじゃないか?

頼まれてHSPでエクスポーター作ったことあるけど、HSPに限らず仕様にポインタがない言語は面倒だなぁと思ったし
似たようなことは出来たとしてもな
531名前は開発中のものです。:2013/04/02(火) 11:39:47.74 ID:APLuRNwS
データ構造を参照渡し出来ればポインタ別にいらなくない?
HSPでできるかは知らんけど
532名前は開発中のものです。:2013/04/02(火) 12:05:16.74 ID:EQBkfILB
>>531
ポインタ無しの参照だけだと、例えばvectorとかにオブジェクト突っ込む時大分しんどくないか
特にリストのソートとかになった時とか、ディープコピーの嵐とか真っ先に想像してしまう
それ考えるとポインタ無しはつらい
533名前は開発中のものです。:2013/04/02(火) 12:39:52.43 ID:cj+FuhiZ
ツクールが同人ゲームのレベルを下げた
534名前は開発中のものです。:2013/04/02(火) 12:50:14.03 ID:p0EBiTzT
下がっていいだろ。その分俺らは独自色を出せるw
535名前は開発中のものです。:2013/04/02(火) 17:25:21.81 ID:pXXUbXPn
ちょっと、教えて頂きたいんだけど
FC、SFC性能レベルのゲームを作っているところなんだけど、
普通に動かす分には問題がないんだけど、
ちょっと画面にエフェクトかけようとしたら
めちゃくちゃ重くなってしまう。

今のマシンパワーのPCでもこんな感じになるってことは
なにか根本的なプログラムの方法が間違っていると思うので
何か参考になるソースかHPでも紹介していただけるとありがたいです
536名前は開発中のものです。:2013/04/02(火) 17:32:06.81 ID:cj+FuhiZ
DirectXとかOpenGL使ってれば2Dゲームなら問題なく動作するはず
プログラムが悪くて非効率的なことをしてるんじゃないか
537名前は開発中のものです。:2013/04/02(火) 17:34:46.99 ID:/HUQ7HFa
プロファイルを取ろうぜ
538名前は開発中のものです。:2013/04/02(火) 19:28:04.22 ID:GtDoxNUs
逆にどんなコード書いたんだw
今日日、bitbltでも重過ぎるなんてことにはならんと思うが。
539名前は開発中のものです。:2013/04/02(火) 19:32:19.24 ID:X5Xdqu+O
その頃はスプライトってのがあって
重ねても重さコストゼロだったんだよ

いわせんな恥ずかしい(年齢的な意味で
540名前は開発中のものです。:2013/04/02(火) 21:18:24.09 ID:Eav0kMfw
エフェクトって言ったって色々あるからな
エスパーできんわ

せめて、ポストエフェクトなのか
パーティクル系なのかくらい書いてくれ。
541名前は開発中のものです。:2013/04/02(火) 21:32:56.36 ID:5foY8+mV
ツクール使えばおk
542名前は開発中のものです。:2013/04/02(火) 21:57:43.39 ID:xj/rU2kx
>>540
スクリーン全体にかけるのでポストエフェクトですね。
流れとしては
1.メモリーにマップチップをロード
2.キー入力
3.裏画面にマップチップを並べる。
4.時間・天候・光源などのエフェクトをかける。
5.画面入れ替え

です。4を飛ばせば十分実用速度なんですが、エフェクトが・・・
543名前は開発中のものです。:2013/04/02(火) 22:09:43.80 ID:ma/yfpQ2
実は解像度が4Kレベルとか
544名前は開発中のものです。:2013/04/02(火) 22:11:28.90 ID:xj/rU2kx
>>543
いえいえ640*480で32*32のチップを床・設置物・屋根の3層並べてるだけです
545名前は開発中のものです。:2013/04/02(火) 22:25:54.05 ID:cj+FuhiZ
アルファブレンドが重いんだろうな
546名前は開発中のものです。:2013/04/02(火) 22:36:02.16 ID:Eav0kMfw
>>542
シェーダ?
それとも
プログラムでフレームバッファに何かしてるの?
547名前は開発中のものです。:2013/04/02(火) 22:43:34.31 ID:Eav0kMfw
シェーダならポストエフェクトは基本重いから
ポストエフェクト何重にもかけるとどんどん重くなる。
これはグラボの性能にもよるけど。

プログラムで書いてるなら>>537で言われてる通りプロファイルとるのが早いかな。
フレームバッファ又はテクスチャに直接何かしてるなら重くなるかもとしか言えない。
548名前は開発中のものです。:2013/04/02(火) 22:55:34.23 ID:xj/rU2kx
>>546
プログラム上でフレームにフィルターをかけています。
現在は試験的に一枚だけ。それでも劇重

ライブラリーの説明にはもともとフィルタリング処理は重いとは書いてあったのですが
重すぎなので・・・
というのも、今まで、リファレンスやネットのサンプルなどを見て、自分のやりたい事に
合わせてソースを書いてきて、一応求める動作をするように組んできたのですが、
我流で覚えてきたので・・・一度、ちゃんとしたソースややり方を見て、再構築したほうがよいなと思いまして・・・
よろしくお願いします。
549名前は開発中のものです。:2013/04/02(火) 23:14:41.93 ID:Eav0kMfw
ライブラリ?何を使ってるの?
DirectXなのかOpenGLなのかGDIなのか
それともまったく別の何かなのかによると思う。

DirectX9なら
http://msdn.microsoft.com/ja-jp/library/bb172231(v=vs.85).aspx
この辺?

DirectX6らしい古すぎる
http://hp.vector.co.jp/authors/VA012320/directx6.html

ていうかこの辺を説明しているサイトって無くなったなのね。
昔はもう少し色々あったとおもったけど。

エフェクトは最近はHLSLばかりだからな。
550名前は開発中のものです。:2013/04/02(火) 23:18:02.49 ID:tdtx++Ul
>>548
ライブラリってなんだよ。
フィルタってのもCPUでやってんのか
GPUでやってんのかも分からんし。
ちゃんと現状を説明しろよ。
VRAMのデータをRAMにコピーして操作とかしてんじゃねーの。
551名前は開発中のものです。:2013/04/02(火) 23:21:22.90 ID:Eav0kMfw
>>548

http://takabosoft.com/category/directx-effect
ここも古いコードだねぇ。
まあ、読みかえて使えなくもないけど。
552名前は開発中のものです。:2013/04/02(火) 23:25:49.07 ID:xj/rU2kx
>>549
向こうで聞けと怒られてしまうかも知れませんが
DXライブラリです。
DXライブラリの扱いどうこうの問題ではなく、
プログラム自体の組み方だと思い、こちらで尋ねました。
どうも、お手数かけてすみません
553名前は開発中のものです。:2013/04/02(火) 23:57:26.07 ID:Eav0kMfw
DXライブラリですか。

最近のDXライブラリは知らんからなぁ

よくわかりませんが。
ドット単位で画像にアクセスしたい関係

LoadSoftImage  CPUで扱うイメージの読み込み
LoadSoftImageToMem  CPUで扱うイメージのメモリからの読み込み
MakeARGB8ColorSoftImage  CPUで扱うイメージの作成( RGBA8 カラー )


DrawSoftImage  CPUで扱うイメージを画面に描画する
CreateGraphFromSoftImage  CPUで扱うイメージからグラフィックハンドルを作成する
CreateDivGraphFromSoftImage  CPUで扱うイメージから分割グラフィックハンドルを作成する

この辺りを使ってる感じですか?
どちらにしてもDXライブラリとなるとサンプルは厳しいかもですね。
ネット上にありそうもないし。

確かDXライブラリはHLSLかけたような。
ポストエフェクトならシェーダ書いた方が早い気が。

もしくはテクスチャを重ねるなどをしてポストエフェクトっぽくするとか。
何をやるかにもよりますけど。
雨を降らせるとか雪を降らせるくらいならこれで行けませんか?

また、DrawSoftImage()この辺の関数はDXライブラリのソースを見たわけではないので予想ですけど。
先ほど貼ったURLと同じようなことをしてると思うので基本重いと思います。
554名前は開発中のものです。:2013/04/03(水) 00:10:00.41 ID:vhDdWEh3
>>553
ご丁寧にありがとうございます。
命令文に関してはDXライブラリーも同じような感じです。
命令文表記はDXライブラリーとは違いますが、やっていることは
似たり寄ったりなので、とても参考になります。

これから試行錯誤しながら、がんばっていきます。
ありがとうございました。
555名前は開発中のものです。:2013/04/03(水) 00:11:54.05 ID:hlLquGns
>>554

長文になってしまったので短くまとめると
ソフトウェアというよりハードウェアの問題なのでロジックでどうにかできる問題でもないと思います。
同じ効果が得られる他の方法を考えた方がよろしいかと思います。

がんばってください。
556名前は開発中のものです。:2013/04/03(水) 00:12:50.98 ID:hlLquGns
あれ?ID変わった。
0時過ぎたのか寝よう。
557名前は開発中のものです。:2013/04/03(水) 02:25:01.03 ID:z/KIeoeW
なんかピクセルひとつひとつに対してCPUで処理とかしてそうだな
558名前は開発中のものです。:2013/04/03(水) 07:40:09.15 ID:RK/lymyi
32x32のチップ毎に何回もエフェクト描画処理呼び出してるとか
559名前は開発中のものです。:2013/04/03(水) 09:54:47.66 ID:VXifjGPt
書いてる言葉と使ってるラッパライブラリから推測して、
多分自分で意味がわかってないような気がする
560名前は開発中のものです。:2013/04/03(水) 16:31:29.56 ID:RK/lymyi
SoftImage系の命令は激遅だから毎フレーム呼び出すのはNGだと思うぞ
561名前は開発中のものです。:2013/04/03(水) 19:49:48.47 ID:yNI9eYky
昨日、相談したものです。ちょっと経過報告を

あの後、家のPC(VGA:RADEON7650)でこちょこちょ手直ししたら
エフェクト処理かけてもサクサク動くようになりました。

で、今朝、別のPC(オンボードのVGA;RADEON4250ぐらい)で
試したら、やはり劇重状態でしたw
SFC程度の処理でこれはないわwと思い、
そのPCでも手直しをしてなんとか実用レベルの速度まで
出るようになりましたが、まだまだ、手直しの余地はあると思います。

余裕のある時に本屋にでも行ってちゃんとした参考資料を買ってこようかと思います。
おすすめがあれば教えて頂けるとありがたいです。
562名前は開発中のものです。:2013/04/03(水) 22:32:04.55 ID:BqCS8JCf
>>561

できればどの辺いじって改善されたのか
DXライブラリスレに書いておいてくれると嬉しい
(前スレで相談してた人だよね?)
563名前は開発中のものです。:2013/04/04(木) 00:18:07.34 ID:xbjflqmn
ナレッジシェアリングってやつだな

回答する人間は基本ギブ側だけど、質問者だってギブ側になれるんだよな。
同じところでつまづくかもしれない後進の役に立てるんだから
564名前は開発中のものです。:2013/04/04(木) 02:10:07.35 ID:8MGfOWDy
仮にCPU処理のソフトウェアレンダリングでゲーム画面を作り上げる場合
DXライブラリなら基本的にはMakeGraphでオフスクリーンサーフェス作って
その中に毎フレーム好きなように描きこんではDrawGraph一発で描画
みたいな超シンプルな形になると思うんだが、違うのか?

DXライブラリの内部的にはD3DなのかDDなのか等、色々と処理は分かれるが
そこはとりあえず脇に置いとく
565名前は開発中のものです。:2013/04/04(木) 07:56:33.10 ID:T6ylSkRR
こちらでレスが伸びたのでこちらで返しますね。
質問前はかなり変なやり方をしていたのを(バックスクリーンに描いたのに処理かけようとしていた)
>>564さんのような普通のやり方に直して、
マシンパワーでゴリ押しでいけるだろって思って適当に書いていた所を
直していったぐらいですね。
566名前は開発中のものです。:2013/04/04(木) 09:37:28.77 ID:4012IMAo
つまり、元々構造的な自分の実装バグを修正した、って事か
567名前は開発中のものです。:2013/04/04(木) 11:42:59.40 ID:T6ylSkRR
>>566
簡潔にいうとそうですねw
ただ、どちらにしろフィルターかける処理は重いですね。
夜っぽくしたい、夕焼けっぽくしただけなら
半透明の色を重ねた方が速いかも

速さの順なら
フィルター<半透明<夜・夕焼け色のマップチップを用意する
って感じでしょうか
568名前は開発中のものです。:2013/04/04(木) 12:15:47.37 ID:nDgxlZg6
シェーダー使えよ
569名前は開発中のものです。:2013/04/04(木) 12:59:39.82 ID:x3eFHCei
リアルタイムで変更とかしないならマップチップ読み込む時に処理すれば
画像用意する必要ないし描画時に処理も要らない
570名前は開発中のものです。:2013/04/04(木) 14:40:39.30 ID:4012IMAo
>>567
俺DirectX9.0c環境でシェーダバージョン2.0固定でレンダ周りの処理(ポストエフェクト:全体フィルタ含む)良く書いてるけど、
別にその用件なら遅いもへったくれも無いぞ
571名前は開発中のものです。:2013/04/04(木) 14:43:46.83 ID:4012IMAo
あ、誤解があるとあれなので言っておくと、DxLibは全然触ってないので知らない。
ラッパ的な物は自前か、または既存のゲームエンジン。その時作ってるもの次第
572名前は開発中のものです。:2013/04/04(木) 17:10:58.26 ID:pJKr/LeY
質問いいですか?
ゲームを起動すると
まず最初にメモリに画像やら音楽やらが読み込まれることになると思いますが、
もしプレイヤーのパソコンに搭載しているメモリが500MBだとして
仮に音楽ファイルが1つ300MBだとして
2つ読み込むようにプログラムされていたとします。
つまりトータルで600MBになります。

要するに100MB足りないことになるのですが、
この場合、そのプレイヤーのパソコンはどうなるのでしょうか?
フリーズしてゲームが強制停止してしまうのですか?
573名前は開発中のものです。:2013/04/04(木) 17:28:26.26 ID:Aza47WRl
ハードディスクの一部にデータを退避してそこから必要な時にメモリに読み出したりハードディスクに退避させたりする
従って処理速度が遅くなるだろうね
574名前は開発中のものです。:2013/04/04(木) 17:37:19.75 ID:pJKr/LeY
>>573
なるほど、では少々無茶しても大丈夫ということですか。
まあボクは説明書の動作環境にメモリ1GBと書いて
1GBのメモリを想定してプログラムを組むことにしよう
575名前は開発中のものです。:2013/04/04(木) 18:12:25.93 ID:kfapcRey
newの例外処理やmallocのぬるぽ処理なんて
糞真面目に書かずに天に任せて落としてしまえ(^p^)

とは言え、1GBものメモリを何に使うんだw
576名前は開発中のものです。:2013/04/04(木) 18:32:25.54 ID:pJKr/LeY
東方ゲームは最初に起動した時に
1回だけロードしているんですよね
ということは全ステージ分の音楽と画像を
1回メモリに読み込むだけで十分ということですか

昔のプレステのRPGなんかは戦闘に入る度に読み込んでいたのに
577名前は開発中のものです。:2013/04/04(木) 18:48:31.19 ID:kfapcRey
東方はやったことないから知らんけど、
多分そんな糞コーディングしてないと思うw
リアルタイム処理で必要な画像やSEをVRAMなりメモリなりに読み込んでるだけだろ。
BGMもステージ毎に読み込みでしょ。ライブラリ何使ってるか知らんが。
HDDの読み込み速度なんてCDとは桁違いなほど速いんだし。
578名前は開発中のものです。:2013/04/04(木) 18:49:48.73 ID:OJSZuHfE
東方はミュージックルーム(サウンドテスト)があるから最初に全部読み込んでるんじゃねーかな
画像はしらんが
579名前は開発中のものです。:2013/04/04(木) 20:12:25.18 ID:GxyBWEfb
>>576
ステージ毎にロードしてる
BGMはストリーム再生だからそこまでメモリ食わん
580名前は開発中のものです。:2013/04/04(木) 21:15:00.63 ID:pJKr/LeY
>>577
なるほど、そういうこともできるんですね

東方ゲーム(東方神霊廟)ではステージ1のボスを倒したら
すぐに(数秒で)ステージ2が表示されます
それが最終ステージまで続きます
ステージごとにBGMや画像を読み込んでいるなら
どこで読み込んでいるのか不思議でならないね
581名前は開発中のものです。:2013/04/04(木) 21:17:45.40 ID:Aza47WRl
いやストリーム再生してみたら分かるけどロード時間ほぼない
部分的に読み込みながら再生するから。
向いてないから死ね
582名前は開発中のものです。:2013/04/04(木) 21:26:57.88 ID:pJKr/LeY
>>581
参考になったありがとうね

でも、考えてみたら
昔は100メガショック!などと騒がれてた時代があって
当然ゲーム全体の容量が100MBぐらいだから
1GBもメモリ容量があれば、
ゲームデータをすべてメモリに読み込むぐらいわけないですね
そもそも1GBものゲームなんて作れそうもないね
583名前は開発中のものです。:2013/04/04(木) 21:30:09.77 ID:fr+z5fog
あれって100Mbitじゃなかったか
584名前は開発中のものです。:2013/04/04(木) 21:31:37.28 ID:NKLC2VT0
つうか数秒あれば読み込みに充分な速度じゃね
585名前は開発中のものです。:2013/04/04(木) 21:33:18.72 ID:gI5T6WMq
あー、これよく間違えてる人見かけるけど
100メガショック!≠100MByte
100メガショック!=100Mbitな 12.5Mbyteくらい。
586名前は開発中のものです。:2013/04/04(木) 21:41:23.28 ID:pJKr/LeY
これまでプログラム言語の解説書を何冊も読んで
プログラムが実行される原理までは何とか理解できました
だがプログラム言語の入門書って初歩の初歩ぐらいまでしか解説してくれてないんですよね
初歩の初歩はもう解ったから、
今度は、その初歩の技術をどう組み合わせればゲームになるのかが知りたい

とりあえずゲームを起動してまず最初に表示させる
NowLoeding...の画面を表示するところから作ってみよう
HDDから画像をメモリに読み込んで表示するだけなので簡単だと思う

ボクが今悩んでいるのは、そのNowLoeding...画面で
どこまでメモリに読み込めばいいのか?ということに疑問を感じて質問させて頂きました
では、頑張ってきます
587名前は開発中のものです。:2013/04/04(木) 21:44:25.50 ID:hgSpwb+a
Now Loadingだよ
英語の勉強も頑張ってね
588名前は開発中のものです。:2013/04/04(木) 21:47:43.70 ID:NKLC2VT0
さぁ早くサルがお手玉で遊ぶアニメーションをわざわざ別スレッド起動して実行させる作業に戻るんだ
589名前は開発中のものです。:2013/04/04(木) 21:47:54.62 ID:gI5T6WMq
>>586
今度もし書籍を買うなら
プログラム言語の書籍じゃなくて
ゲームを作る本を購入した方がいいと思うよ。
590名前は開発中のものです。:2013/04/04(木) 21:53:11.95 ID:pJKr/LeY
>>589
ボクは最初にC言語についての解説本を何冊か読んでみて
C言語の仕組みが何となく理解できたのですが、
細かいところが気になり、アセンブリ言語の解説書を読んで
理解が深まりました

アセンブリを学んだことで、ついでにオブジェクト言語の意味も理解できました
C言語のプログラムをコンパイラすると実行ファイルになるのですが、
その過程でオブジェクトファイルをいくつか生成して
さらにその複数のオブジェクトをくっつけて、さらに加工して機械語に翻訳していて
それをリンク(リンカ)と呼ぶ
591名前は開発中のものです。:2013/04/04(木) 21:55:24.28 ID:pJKr/LeY
オブジェクト言語と呼ばれるものは、
つまり、C言語からコンパイルした時に生成されるオブジェクトファイルの
そのオブジェクトを細かくしたものなのですよね?
つまり、オブジェクトファイルはコンパイルした後に作られるわけですから
オブジェクト言語はコンパイルする必要はないと
つまり、そういうことなのですね
592名前は開発中のものです。:2013/04/04(木) 21:57:28.08 ID:Aza47WRl
よく分かってるな
593名前は開発中のものです。:2013/04/04(木) 21:57:51.83 ID:gI5T6WMq
>>591
えーと、どこから突っ込めばいい?
オブジェクト言語がオブジェクト指向言語を指しているなら
ものすごい勘違いしている。
594名前は開発中のものです。:2013/04/04(木) 22:01:22.91 ID:kfapcRey
うーん、C++でゲーム製作しててなんの意識もしてないw
オブジェクトファイル?あぁ、半生のやつね。くらいの認識しかしてない(^p^)
実際、今日日アセンブリ意識する必要なんてほとんどないわな。
興味を否定する気はないが。
595名前は開発中のものです。:2013/04/04(木) 22:04:26.22 ID:pJKr/LeY
あと、C言語はヘッドファイルをインクルードすることで
様々な関数を使うことが出来る
だが、C言語は元々ゲーム以外のビジネス向けのアプリ開発のために
作られた言語なのでC言語だけでゲームを開発することはできない
画像を読み込んで瞬時に表示したり、音楽やXファイル(3Dのデータ)を読み込むことはできない

そこでマイクロソフトは、Windowsで高度なゲームをプレイさせるために
DirectXというものを開発したが、DirectXはかなり難しい技術なので直接扱うのは困難
そこで、ある日本人がDXライブラリというものを開発してくれて
DXライブラリをインクルードすることで、画像を表示させる、音楽を再生させる
3Dを表示させて動かす、といった関数をC言語で呼び出すだけでできるようになったと
596名前は開発中のものです。:2013/04/04(木) 22:05:55.76 ID:NKLC2VT0
なんかいろいろ誤解してたり用語の使い方がおかしかったりするな
大丈夫か?
597名前は開発中のものです。:2013/04/04(木) 22:06:42.44 ID:kfapcRey
ってか、ここは>>595のブログじゃない。
チラシの裏にでも書いてろ。
598名前は開発中のものです。:2013/04/04(木) 22:09:07.29 ID:gI5T6WMq
>>595
突っ込みどころ満載すぎる。
そもそもCはビジネスアプリ向けにできた訳じゃない。

OS作るために作った言語。
低レベルなので何でもできるだけ。
599名前は開発中のものです。:2013/04/04(木) 22:14:42.60 ID:pJKr/LeY
ボクは最初C言語を学んでみて
よし!じゃあゲームを作ってみよう!とか思って
どの関数を使えば、音楽を鳴らしたりゲームパッドを使うようにするのかな?
とか思ってC言語の関数を結構調べたのだけど
どこにもそんな関数はなくて「おかしいな…」と思っていたんだ

そこでDirectXというものが気になって
DirectXを調べていくうちに、DirectXに音楽を鳴らすとか画像を表示するとか
ゲームパッドを扱うとか、そういう関数?が用意されていた
だが、DirectXは難しい過ぎてボクには困難でした
理解できないこともないが、音楽を鳴らすという命令をするためには
色んなことをやらないといけないくて、かなり面倒…
600名前は開発中のものです。:2013/04/04(木) 22:20:51.87 ID:pJKr/LeY
で、色々調べていくうちに
DXライブラリというものを発見!
少しDXライブラリの仕様を読んでみたら
C言語でインクルードして関数を呼び出して使うというのと
全く同じなので、これならC言語を学んだボクでもできるわ!
とか思って、DXライブラリでゲーム開発をやってみようと

そのような経緯があって現在に至ります。
DXライブラリには色んな関数が用意されているので、
色んな関数を使って面白いゲーム作ってみようかな?と思ってる次第です
おわり
601名前は開発中のものです。:2013/04/04(木) 22:27:09.34 ID:qy5/g+BR
ゲーム作りに興味があるならセガ本でも読んでみたら?
ちょっと高いけど初心者向けに色々書いてあって面白いよ
602名前は開発中のものです。:2013/04/04(木) 22:35:20.53 ID:pJKr/LeY
>>601
ありがとう
早速、明日秋葉原にその本を探しに行くことにします
面白かったら買ってこよう

ただセガという響きがかなり昔っぽいけど大丈夫なのかな?
8bitとか16bitのゲーム開発についての解説本なら
現在の32bitプログラム開発にどこまで生かせるのかが心配です
603名前は開発中のものです。:2013/04/04(木) 22:38:02.42 ID:pJKr/LeY
>>598
ええ、確かC言語はUNIXを開発するために作られた
32bit言語でしたね
604名前は開発中のものです。:2013/04/04(木) 22:40:37.95 ID:gI5T6WMq
>>602

http://www.amazon.co.jp/dp/4798021180/
これだよ。

CPUのBit数とか関係ないから
605名前は開発中のものです。:2013/04/04(木) 22:43:32.24 ID:pJKr/LeY
>>598
>低レベルなので何でもできるだけ。
え?C言語が低レベル言語?
高級言語じゃなかったかな?

アセンブリ言語プログラムに翻訳するために作られた言語がC言語で
アセンブリ言語でたくさんの命令を組まないといけないことが
C言語では1つの関数だけで可能にしてしまうという

ただCコンパイラがアセンブラ言語に対応していないとダメなので
どのアセンブラ言語に翻訳させるCコンパイラを使うのかで
C言語のソースは全く違うものになってしまう
606名前は開発中のものです。:2013/04/04(木) 22:45:53.89 ID:gI5T6WMq
>>605
正確には低水準
昔は高級アセンブラあって言われてた。

むしろ高級言語はCOBOLとかでしょ。
607名前は開発中のものです。:2013/04/04(木) 22:47:38.69 ID:1ZqCYby8
セガ本は流石にもう古い気がする
いや、もちろん古いとか関係なく考え方として必要なことも多いんだけどさ
スクリプトでも勉強した方が良さそう
608名前は開発中のものです。:2013/04/04(木) 22:52:10.88 ID:gI5T6WMq
>>605
誤解のないように補足しておくと
人間に近い方が高級、高水準。
機械に近いのが低級、低水準。

時代とともに線引きは変わるから
どこからが高水準でどこからが低水準は時代とともに変わるし

人の解釈によってもかわる。
609名前は開発中のものです。:2013/04/04(木) 22:54:44.97 ID:gI5T6WMq
>>607
確かに古いな。
まあ、倉庫番?あたりからやってるから基礎は学べるとは思う。

今なら、それこそUnity本でも買った方がよい気はするけどな。
610名前は開発中のものです。:2013/04/04(木) 23:00:41.27 ID:pJKr/LeY
>>608
なるほど、そういうことですか。

ボクはこれまで、アセンブリ言語とC言語を同時にプログラミングして
機能を拡張させるC言語の関数を作るために
アセンブリでC言語の関数を作ったりして遊んでいました
C言語の関数でも色々できるけど万能ではなくて出来ないこともありますから

アセンブリ言語の方が何でもできるので高級言語だとボクは解釈しています
611名前は開発中のものです。:2013/04/04(木) 23:01:49.93 ID:qy5/g+BR
言われてみれば確かに古いかも
とりあえずゲーム作りたいだけなら
ツクールやらunity勉強したほうが楽なのは間違いない
612名前は開発中のものです。:2013/04/04(木) 23:02:22.39 ID:pJKr/LeY
失礼
アセンブリが高級言語ではなくて
C言語が高級言語の間違いです
613名前は開発中のものです。:2013/04/04(木) 23:08:28.43 ID:gI5T6WMq
定番すぎるけど
C+DXライブラリなら

http://dixq.net/g/
ここでも見ておけば?もう知ってるかもだけど。
614名前は開発中のものです。:2013/04/04(木) 23:09:04.26 ID:Aza47WRl
アセンブラ得意ならファミコンのプログラム作って
615名前は開発中のものです。:2013/04/04(木) 23:12:10.12 ID:pJKr/LeY
あ、そう言えば今日ゲーム開発ブログを
丁度作ったところですので紹介していきます

ttp://blog.livedoor.jp/winpg/

今は、どんなゲームを作ってやろうかと
DXライブラリの公式サイトでDXライブラリの関数を眺めているところです
どれも使ってみたいので、ちょっと本気で悩んでいます
では、また
616名前は開発中のものです。:2013/04/04(木) 23:19:34.35 ID:pJKr/LeY
>>614
いや…それはちょっと遠慮したい
ファミコンのプログラムは、8bitのCPUを想定したプログラム開発になるし
苦労して作ったわりには、しょぼいゲームしか作れないので遠慮したいです

C言語(32bit言語)でゲーム開発をしていて
細かいところを拡張するために
アセンブリ言語でC言語の関数をちょこっと作るぐらいにしたい
あとボクはアセンブリ言語が得意なわけではありませんし
マイクロソフトが作ったアセンブラのアセンブリ言語プログラムは組めません
617名前は開発中のものです。:2013/04/04(木) 23:20:39.18 ID:hgSpwb+a
32bit言語って何さ
618名前は開発中のものです。:2013/04/04(木) 23:22:28.83 ID:Aza47WRl
ブログの宣伝かよ
619名前は開発中のものです。:2013/04/04(木) 23:28:28.81 ID:pJKr/LeY
>>617
あ、済みません
正しく書くと「32bitのCPUで動く言語」という意味です

CPUの中にはレジスタというのがあって
8bitレジスタ、16ビットレジスタ、32ビットレジスタ
の3種類のレジスタがあって
C言語は32ビットレジスタを使う言語なので
32bit言語とボクが勝手に呼んでいるだけです

HDDからメモリに読み込む時も32bit単位で
データを読み書きしているのがC言語です
間違っているかな?間違っていたら済みません
620名前は開発中のものです。:2013/04/04(木) 23:30:05.88 ID:hgSpwb+a
64bitのCPUで動くC言語は何て呼ぶのさ
621名前は開発中のものです。:2013/04/04(木) 23:41:16.67 ID:pJKr/LeY
>>620
済みません
64bitについては無知です
わかりません

でも、多分ですが
64bitのCPUで動くC言語は、32bitのレジスタを使っているのだと思います。
CPUのレジスタには、8bitレジスタ、16bitレジスタ、32ビットレジスタがあるのですが、
32ビットレジスタの中に16bitレジスタが、
さらに16bitレジスタの中に8bitレジスタが入っています。

あと、C言語は32bitレジスタを使っているのですが、
32bit全部を使えるわけではなく、半分の下位の16bitまでしか使えません
なので、64bitでC言語を使っても
64bitレジスタの中の下位の16bitレジスタだけ使っていると思われます
その辺の知識については、ボクよりもここにいるプロの現場で活躍している
プログラマさんたちの方が詳しいと思います
622名前は開発中のものです。:2013/04/05(金) 00:00:53.15 ID:hvMTo3B6
なんていうか。
色んな意味で面白いな。

>>621
webには32bitのアセンブラの解説サイトが少なくて
アセンブラっていうと16bit風に記述してINT 21hで文字を出す見たいなサイトが多いから
もしかして勘違いしているのかもしれないけど

32bitのCPUで16bitレジスタのaxだのbxだのってのは相当古いから
むしろ16bit CPUの書き方。今から20年くらい前の古い記述

32bitならeax ebxとかのレジスタで32bitフルで使える。
623名前は開発中のものです。:2013/04/05(金) 00:01:19.65 ID:Ya07875e
レジスタのサイズとC言語に相関があるとは思えないけど
何のための高級言語なのさ
624613:2013/04/05(金) 00:02:43.02 ID:hvMTo3B6
おっと、またID変わった
0:00か寝るか
625名前は開発中のものです。:2013/04/05(金) 00:04:29.86 ID:hvMTo3B6
>>623
int が32bitとでも書いてある書籍を読んで勘違いしているものと
エスパー予想。
626名前は開発中のものです。:2013/04/05(金) 00:14:44.69 ID:Ya07875e
>>625
そんなわけないだろ

・・・ないよな?
627名前は開発中のものです。:2013/04/05(金) 00:27:50.51 ID:vf3DftM6
ところで上の方でファミコンやスーファミの
ゲーム開発をするみたいなことを言ってる人がいるけど
どうやって作るつもりなのかが気になる

ファミコンは8bitプログラムで
スーファミは16bitプログラムなわけでしょ?
で、今、動かしているWindowsパソコンは32bitか64bitなわけです
当然、プログラミングはWindowsで組むわけですよね?
で、ゲームをプレイする時もWindowsでプレイするわけでしょ?

つまり、先に8bitか16bitのゲーム本体を作って
そのゲーム本体で動くゲームを開発するということですか?
すっごく大変な作業になると思う
628名前は開発中のものです。:2013/04/05(金) 00:32:50.58 ID:L2yUZHt6
なんだろ、凄い知識が偏ってるね。偏食はいかんなぁ。
629名前は開発中のものです。:2013/04/05(金) 00:38:14.99 ID:vf3DftM6
>>622
>32bitならeax ebxとかのレジスタで32bitフルで使える。
まじですか?
それは初耳です
いつから32bitレジスタをフルで使える仕様になったのですか?

32bitの上位の16bitの領域は、
ビット番号もなければ名称もないので
そこを使うことは出来なかったはずです
ただ、上位の16bitを下に降ろしてくれば使えますが
630名前は開発中のものです。:2013/04/05(金) 00:47:03.06 ID:vf3DftM6
>>628
そうですか?
だって、Windowsの上で動く16bitプログラムを実行するわけでしょ?
32bitOSの上で16bitプログラムを実行するなんて可能なのですか?

ボクが考えるに16bitのOSを先に作って、
パソコンの電源を入れた時に
Windowsを起動せずに16bitOS(ゲーム本体)を起動させて
その16bitOSの環境下でスーファミ(16bitプログラム)を起動させるなら話が分かります
631名前は開発中のものです。:2013/04/05(金) 00:48:12.16 ID:0qH8mSGB
ねぇ、最近の質問者ってみんな釣りなんだろ・・・?ねぇ(怯え声
632名前は開発中のものです。:2013/04/05(金) 01:35:56.45 ID:LQIPt3Sk
intがひと昔前は-32768〜+32767だったのを知らんのだろなあ
633名前は開発中のものです。:2013/04/05(金) 05:49:32.43 ID:NZUMh9/v
>>630
64bitのwindowsに32bitのソフトをインストールしても動くけどあれはなんなの
634名前は開発中のものです。:2013/04/05(金) 06:40:46.69 ID:ju25xlYg
>>630
ちなみにC言語ができた当初は16bitはおろか8bitのCPUしかなかったと思うんだが?
635名前は開発中のものです。:2013/04/05(金) 06:54:30.91 ID:OKwHaqcm
ID:gc/L8yIj = ID:pJKr/LeY ですから
636名前は開発中のものです。:2013/04/05(金) 07:56:00.86 ID:5FJXZz6E
>>629
なんで16bitで計算する前提なの
637名前は開発中のものです。:2013/04/05(金) 09:08:52.56 ID:0qH8mSGB
学校の課題レポートを手伝うのはやめたほうがいいよ
638名前は開発中のものです。:2013/04/05(金) 09:38:09.15 ID:L2yUZHt6
>>630
マジレスすると、CPUには仮想モードってのもあるしエミュレータと言うソフトもある。
携帯アプリ開発なんかはエミュレータを使うだろ。
そもそも普段のゲーム開発でCPUの細かいアーキテクチャを意識する必要はない。
ボードゲーム作るのにサイコロの化学的組成を意識する必要がないのと同じ。
化学的組成は知ってるけどサイコロがどこで買えるか分からない、そんな風に見えるよ。
習いたての単語を並べて悦に入りたいようだが。
639名前は開発中のものです。:2013/04/05(金) 11:32:17.00 ID:XVR7WDIq
それは言いすぎだろう。
単純に「形から入るタイプ」「頭でっかち」なだけでしょ。
640名前は開発中のものです。:2013/04/05(金) 12:24:23.72 ID:SvAGZ1SA
>>627
FCやSFCのソフトを作るって意味ではなく
FC、SFCレベルのクオリティーの事
641名前は開発中のものです。:2013/04/05(金) 12:54:14.23 ID:A+ukN4KC
>>640
その意味で使われるFCレベルって、どっちかっていうとゲームウォッチレベルだったりするよなw
642名前は開発中のものです。:2013/04/05(金) 20:22:40.37 ID:ju25xlYg
俺もマジレス。

>いつから32bitレジスタをフルで使える仕様になったのですか?
元からだし。じゃあなんのための32bitなのかと

>ボクが考えるに16bitのOSを先に作って、
スーファミにOSはいりません。なんのためのOSなのかと

>その16bitOSの環境下でスーファミ(16bitプログラム)を起動させるなら話が分かります
16bitってのは命令長のことで、同じ16bitでもCPUの命令セットが違えば動かない
つい10年ぐらい前にMacがIntelのCPUで動くようになったって大ニュースになったんだが
まあ高校生とか大学生なら知らなくても無理ないかな

>え?C言語が低レベル言語?高級言語じゃなかったかな?
最近のメジャーな言語20個の中では低級言語の方から数えて3番目ぐらいまでに入るわけで。

なんだろ、形から入るってか自分の知識が正しいと思い込みすぎてる感じだな。
あと内容がかなり古かったり基本的なことを知らなかったりと偏ってる。
結構勘違いが多いから、もうちょっと自分の知識を疑ってかかった方がいい。
643名前は開発中のものです。:2013/04/05(金) 21:07:38.77 ID:e/HeHn5j
まあ何事も興味を持つことから始まるんだから間違いは後々からでも気が付けばいい
644名前は開発中のものです。:2013/04/05(金) 22:59:20.47 ID:O7t7opWL
そんな事よりどうでもいい感想を長々と垂れ流すな
blogに書け
645名前は開発中のものです。:2013/04/05(金) 23:13:04.02 ID:hvMTo3B6
この板は過疎で数年たってもスレを消費できないんだし
別にいんじゃね?
646名前は開発中のものです。:2013/04/05(金) 23:36:42.06 ID:L2yUZHt6
いくら過疎っててもうぜぇもんはうぜぇ。
あと単発IDで擁護すると却って目立つぞw
647名前は開発中のものです。:2013/04/05(金) 23:38:21.76 ID:Ya07875e
そういうのはカラスに任せておけばいい
648名前は開発中のものです。:2013/04/05(金) 23:38:42.47 ID:L2yUZHt6
単発じゃなかったorz
649名前は開発中のものです。:2013/04/05(金) 23:58:39.86 ID:hvMTo3B6
そういやジュウシマツ和尚とか最近みないな
650名前は開発中のものです。:2013/04/06(土) 01:33:39.03 ID:Ey3DTb9Z
LuaJITってなんなん?
Luaの亜種?
651名前は開発中のものです。:2013/04/06(土) 09:14:26.55 ID:RwUiFm49
JustInTimeコンパイラ のLuaでしょ
亜種じゃないよ。
652名前は開発中のものです。:2013/04/12(金) 22:44:42.57 ID:75KZfTxn
constメンバ関数かそうじゃないかだけでもオーバーロードできるけど
シングルトンのstaticメソッドでも同じようなことってできないのかなぁ
メソッド名にConstって付けるのかっこ悪いお
653名前は開発中のものです。:2013/04/12(金) 23:33:26.18 ID:bhea4C45
シングルトンのstaticメソッドの時点で「カッコとか気にしない人なんだな」
ってことくらい分かってもらえてると思うけどね
654名前は開発中のものです。:2013/04/12(金) 23:56:06.23 ID:yRPvK23W
そりゃどっちかというとMonostateだよね。
愚者はその名も知らなかろうが。
655名前は開発中のものです。:2013/04/13(土) 10:20:42.20 ID:frUO4c5i
スレ民くらいになるとstaticメソッドがなくてもインスタンスを取得できるらしい。めでたし
656名前は開発中のものです。:2013/04/13(土) 12:31:12.67 ID:cdw5DZqg
staticメソッドならインスタンスいらなくね
657名前は開発中のものです。:2013/04/13(土) 13:38:19.72 ID:frUO4c5i
それだとMonostateだろw
658名前は開発中のものです。:2013/04/13(土) 17:28:50.25 ID:o/ekglDT
スレ民様に質問なんだけど、インスタンスが単一なのがしんぐるとんで
すたてっくなめんばしかねえのがものすてーとでいいの?
659名前は開発中のものです。:2013/04/13(土) 18:18:02.99 ID:5KucQA1A
monostateはnamespaceで作るのと同じだね

シングルトンの場合はインスタンスを複数にふやせるから状態管理の変数をもったりできる
monostateだと全体で1個になるだろう
660名前は開発中のものです。:2013/04/13(土) 18:19:39.71 ID:5KucQA1A
インスタンスを複数に増やしても状態管理の変数もインスタンスの分だけ増やせる・・だな
661名前は開発中のものです。:2013/04/15(月) 19:11:08.91 ID:cydvrjRW
てかお前ら何言ってんだ?
662名前は開発中のものです。:2013/04/15(月) 20:52:08.19 ID:Y/7J9BLD
デザパタの事で語り合ってるんでしょ
663名前は開発中のものです。:2013/04/15(月) 22:14:46.27 ID:CjWfsHzR
C++でシングルトン使ってると聞いただけで、十中八九設計が腐ってると予想してる
664名前は開発中のものです。:2013/04/15(月) 22:41:25.59 ID:uqYxB1WR
シングルトンってわかりやすい概念だから、覚えたての子が
強引に適用するイメージがある。ラムダとかファンクタもそんなイメージがある
665名前は開発中のものです。:2013/04/15(月) 23:22:39.88 ID:nCuB20wM
シングルトン使いまくってゲーム完成 > シングルトン使わずにゲーム未完成
666名前は開発中のものです。:2013/04/15(月) 23:58:10.02 ID:gdzvcdwP
今作ってるゲームだと、1つだけシングルトン使ってるなあ。
Applicationって名前のクラスで、起動時の引数とか起動してからの時間だとか、そういうのを格納してる。
667名前は開発中のものです。:2013/04/16(火) 00:16:36.73 ID:qjkxOX7R
>>666
あ、なんか作り方おんなじだ。シングルトンの概念はわからんがオブジェクト1つ作って格納してる
668名前は開発中のものです。:2013/04/16(火) 08:37:49.26 ID:NhtDs4wv
dxの初期化にシングルトン使ってるわ
ひとつの関数で初期化&取得ができて便利
669名前は開発中のものです。:2013/04/16(火) 12:46:09.34 ID:rjWCEVat
俺なんか、d3ddevice取る関数がシングルトンだぜ。どこでもdevice取れちゃう。

まずいんだろうなとは思うんだけど、当時一人ですげぇゲーム作っちゃう人が、
こういうやり方だったのを真似して未だに・・・。
670名前は開発中のものです。:2013/04/16(火) 13:15:14.37 ID:+EhB1hj1
俺はDeviceは常にメインフローから引き渡す形にしてるな
メッシュに関するものとその複合的なものと、シェーダに関するものと、あと外部リソースに関するものを
なるだけお互いに疎遠な関係にしたかったって思想があるから
671名前は開発中のものです。:2013/04/16(火) 13:22:36.79 ID:+EhB1hj1
ああ、あとリストア処理の単純化とかも。
個人的に、モジュール間の依存性について明示的でない暗黙の強い関係が生まれるのがなんかイヤだったのでそんな感じ
672名前は開発中のものです。:2013/04/16(火) 13:49:08.48 ID:7ORw32MI
>>669
似たような処理をするクラス作ったけど、自分はmonostateだったなー
673名前は開発中のものです。:2013/04/16(火) 14:51:58.35 ID:kYWnrLY4
d3ddeviceって複数いるのか?
メインウィンドウとチャイルドウィンドウは同じd3ddevice使うんじゃなかったけ
674名前は開発中のものです。:2013/04/16(火) 17:00:24.51 ID:+EhB1hj1
複数必要みたいな話、誰かしてたか?
675名前は開発中のものです。:2013/04/16(火) 17:32:46.55 ID:TD/I54gp
グラフィックスデバイスにアクセスするモジュールって
ゲームプログラム全体から見ればかなり限定されると思う
676名前は開発中のものです。:2013/04/16(火) 19:25:08.35 ID:A67C6ZVu
複数要らないからシングルトンでおkってことでおk?
677名前は開発中のものです。:2013/04/16(火) 19:51:15.56 ID:7ORw32MI
>>676
それはダメな使い方の典型例じゃないのかw
678名前は開発中のものです。:2013/04/16(火) 23:03:01.53 ID:aNnZ9ZGw
身も蓋もない発言になるかもだけど
他人に使わせる予定のないモジュールなら、シングルトンみたいな仕組みを
わざわざ組み込む必要性って乏しいんだよね

必要になったら後付けでそういう仕組みを組み込めばいいのではないかと
679名前は開発中のものです。:2013/04/16(火) 23:14:11.07 ID:HKw7nWPo
えっFactoryとか普通シングルトンじゃね?非メンバ関数で実装?
680名前は開発中のものです。:2013/04/17(水) 01:14:17.23 ID:uPzy/LM4
>>679
何のFactoryか知らんけど、他人に使わせる予定がないという前提があるならば
意味も使い方も熟知してる自分一人がユーザーなんだから、そのインスタンスの
生成は自身のコントロール下にあるだろうし、シングルトンの仕組みをわざわざ
組み込まなくても実質的に不都合なしという判断にも十分妥当性はあるかなと
681名前は開発中のものです。:2013/04/17(水) 01:44:33.85 ID:yN3YT8xL
ケチつける気はないが、次のプロジェクトでも使いまわすなら、その考えはやめたほうがいいと思う。
数カ月後の次の自分は他人だぜ。

他人に使わせる気で作っておくと、非常に使い回しがいいい。
中で何やっているかコード追わなくても良い程度、或いは使用上の注意など気にせず使える程度でも。
682名前は開発中のものです。:2013/04/17(水) 02:04:17.47 ID:uPzy/LM4
>>681
いや、きっとそう言われると思ってたよ。その意見も同意

シングルトンの構造って基本的にはポカヨケのためにあると思ってるんだよね。
普通にnewしてインスタンスを作ろうとしたり、意図せずに一時オブジェクトを
作ってたりするとそこでビルドエラー。なんでーってなって、そこで自分のミスに
気付かされる的な
683名前は開発中のものです。:2013/04/17(水) 02:06:53.23 ID:cfhkErkf
>>680
C++だったらテンプレート使って普通に汎用ファクトリ書けるよ。
684名前は開発中のものです。:2013/04/17(水) 02:24:51.75 ID:uPzy/LM4
>>683
なんかESPで誤読されてる気配を感じ取ったんだけど
Factoryが要らないっていう趣旨じゃないからね。一応
685名前は開発中のものです。:2013/04/17(水) 07:23:24.72 ID:azFk9NoM
グローバル変数の代わりにみたいにシングルトン使うとコード書くのが楽になる
インクルードすればどこからでも参照できるし、使うときに初期化されてるかいちいちチェックしなくていい

どうせ自分しか見ないからって楽になるように書くとむしろシングルトンだらけになる
686名前は開発中のものです。:2013/04/17(水) 10:09:58.29 ID:zmgfIm4a
どんだけ唯一の技法みたいに信奉してるのかと不安になった。 みんなシングルトンシングルトン言い過ぎ。
C++での開発って大前提で言えば、取れるアプローチはJavaやC#でのOO表現の形に縛られたりしないから、他の考え方あってもいいんだけどな。
そこに本末転倒が無いならば。

あと楽って話だと、C++で書いてる前提で言えば例えば公開ヘッダをすっきりさせる目的でPImplイディオムとかたまに使う俺。
687名前は開発中のものです。:2013/04/17(水) 11:48:42.70 ID:B3AHmbKo
シングルトンってそんなに使うかなぁ。
observer的なクラス設計するときはシングルトンにするのは分かるけど。
あとは外部ファイルから読み込んだパラメータの定数代わり?

>>679
mementoなんかはfactoryパターンになるケースもあると思うけど
それがシングルトンじゃまずいでしょw
688名前は開発中のものです。:2013/04/17(水) 12:56:44.50 ID:zmgfIm4a
全く全然使いませんってこたぁ無いが、
例えばゲームプログラムなんてマルチスレッド処理随所に考えていく余地ある代物で、
それを書いてる前提で言えば基本的に相性良いものじゃないしな。むしろ慎重にならざるを得ないもの。
実装方法として良いとかダメってより、なんでもそれでおkみたいな物じゃないよな。動作の実際を考えて実装しろって感じ
689名前は開発中のものです。:2013/04/17(水) 13:58:25.03 ID:qMNb0YH5
スレの流れを見る限り、何でもかんでもシングルトンにしてるって人は
ほとんど居ないみたいだし、心配しなくていいんじゃない?

具体的にどこで使うか?は、結構バラバラっぽいけどw
690名前は開発中のものです。:2013/04/17(水) 15:35:39.63 ID:slx5jErT
むしろどこで使うのが正解なの
典型的な例ってなんかある?
691名前は開発中のものです。:2013/04/17(水) 18:18:34.75 ID:uPzy/LM4
>>685
そういう目的なら、適切なnamespaceの中に変数や関数を配置して
構造化プログラミングをしているほうがよほど素直だし、生成に関する
パターンであるシングルトンなんて言葉が出てくる余地はあまりなさそう
692名前は開発中のものです。:2013/04/17(水) 19:36:31.40 ID:i/xUNr0d
自己流と言えばみんなエラー処理ってどうしてる?
tryとか例外処理を使うかどうかっていう話じゃなくて、
プログラムがエラーに直面した場合どういう風な流し方をしてる?
メッセージだして問答無用で落すとか、復帰可能そうな場合はなるべく頑張ってみるとか
693名前は開発中のものです。:2013/04/17(水) 19:38:12.56 ID:i/xUNr0d
あ、ちなみに俺はリリースしたことがないので、
想定外の部分はassertで落すことしかしたことないです。でもassertだけじゃダメらしいので・・・
694名前は開発中のものです。:2013/04/17(水) 19:46:07.19 ID:xW+a93qF
サウンドクラスとかキー入力クラスとかシングルトンにするだろ?
上位クラスにもたせるにしてもどうせスコープは広いんだからシングルトンでいいじゃん
695名前は開発中のものです。:2013/04/17(水) 20:16:11.44 ID:/EF2jIdn
>>692
俺が見たゲームだと
「これをコピペしてエラー報告に貼り付けてください」ってのがあった
696名前は開発中のものです。:2013/04/17(水) 20:29:12.55 ID:zmgfIm4a
>>693
ダメな理由は解放順序が保証されないから

>>694
動作パスの観点でスレッドセーフにしてエントリは絞るが、
必ずしもシングルトンクラスにラップするとは限らないかな
翻訳単位中に閉じ込めるとか、static修飾でextern禁止にして、コンパイル時に想定外アクセス防ぐ事は普通にある
697名前は開発中のものです。:2013/04/18(木) 06:21:04.97 ID:sRDshiL8
>>694
それってデバイスアクセス用の簡易なラッパー(Adapter?)だと思うんだけど
内部でやってる事は、例えばDirectXなら、グローバルなサービスロケーターから
デバイスアクセス用の低レベルのインターフェースを取得して雑多なセットアップ
処理をして、要するにその辺のゴチャゴチャを中に全部封じ込めて、抽象化した
俺流の簡素なインターフェースでサービス提供し直すぜって役割だよね?

ここまではいいと思う

で、アプリケーションコード上のどこでそれを使うか全く決めてないから、かったりー
OODの原則とか脇に置いといて、とりあえず構造化プログラミングに便利な
グローバルなサービスとして提供しちゃおうと。世界の歯車が狂い出すの早過ぎ

単一責任の原則とか根本的な部分を放り投げます宣言として、シングルトンという
単語は出さない方がいいと思う
698名前は開発中のものです。:2013/04/18(木) 08:30:05.07 ID:Km0n0Bb7
具体的にどこで使うか決めずにコーディングすることは結構あるけどな
自分用のライブラリ的なの作るときはだいたいそんな感じ
単一責任の原則守ったからって必ずしもメンテ楽になるとは限らんし
作るときは思い付きでガリガリ書くわ
699名前は開発中のものです。:2013/04/18(木) 10:58:47.26 ID:n8Gc4FYy
そうそう。
私なんか、まさに
>>697の「単一責任の原則とか根本的な部分を放り投げます宣言として」シングルトン使いまくり。
この使い方としてはシングルトンが一番便利だと思う。
適度に名前空間が限定されるし、何度もアクセスするときは省略表記のためにポインタもらえるし、コンストラクタとデストラクタが使えるし。
ある用途に限定すればシングルトンじゃなくてもいいんだけど、シングルトンじゃない方がいい理由が見つからないことには、やっぱり一番便利だからこれ使っちゃうよね、という。
シングルトンに問題があるんじゃなくて、放り投げることに問題があると言うならその通りなんだろうけど。
700名前は開発中のものです。:2013/04/18(木) 13:38:57.35 ID:RB2/fa99
>>698,>>699
作り捨てるつもりで勢いでガーって作るのは俺もやるよ。しょっちゅうやってるよ

鼻くそほじったり屁をこきながらの弛緩プログラミングは実に楽しいよね

そういう条件下で、例えば依存性をくどくど明示する必要はないという判断に
妥当性が生まれるのは、全容が自分の制御下(認識下)にある程度の小さな(単純な)
プログラムで、自分以外使わせる予定ないし誰の迷惑にもならないからだよね
701名前は開発中のものです。:2013/04/18(木) 13:53:06.08 ID:5VVkPYZj
巨大なグローバル変数フォルダを作ってそれ1つだけをシングルトーンにしておく。
よくわからない場合はとりあえずそこに押し込んでおいて、あとでまた考える。
702名前は開発中のものです。:2013/04/18(木) 14:22:23.23 ID:AZ0JODOY
結局のところ、結合度の重要性って開発規模によると思うんだよね
市販タイトルみたいに大規模なものは複数人で平行して開発するからコード修正の影響範囲を最小限にした方が全体的なコストを押さえる結果になるけど
2、3人のチームなら多少結合度の高いコードでも共通認識として確立されてればフレームワークとして働くし
一人なら自分の尺度で好きにすればいい

一人で開発するときはシングルトンは非常に便利です
703名前は開発中のものです。:2013/04/18(木) 16:27:25.60 ID:RB2/fa99
なんかID変わっちゃったけど、俺(>>700)=>>697ね。

結合度もそうなんだけど、ここでは結合の方法、そして結合(依存性)を
どこで明示してるか。で、ここからが個人的に謎なところなんだけど

>>698,>>699
モジュール間の依存性(依存関係)をくどくど明示する手間を惜しむような条件下なら
クラスインスタンス生成の自由がない事をくどくどクラス定義内で明示する手間も
惜しむんじゃないのかな?だって、そのクラスの意味も使い方も、関わってる
人間には重々に周知されてる事のはずだよね?モジュール間の依存性について
暗黙の了解が成立してるくらいだからね
704名前は開発中のものです。:2013/04/18(木) 16:31:42.74 ID:RB2/fa99
クラス宣言の中でわざわざシングルトンクラス特有のイディオムを直接に記述したり
あるいはシングルトンホルダーのテンプレートを使ったり、要するにそうまでして
「このクラスのインスタンスはひとつですよー。勝手に作らせませんからねー」
って事をくどくど明示するのって、結構野暮ったいというか、なんか知らんけど
誰かに対して物凄い大警戒してるよね。それは3日以上前のカニチャーハン?
705名前は開発中のものです。:2013/04/18(木) 16:36:43.35 ID:RB2/fa99
「やっぱこういう時は構造化プログラミングに限るよな。」
「OODの原則とか堅苦しい事はこの際は脇に置いておこう。」

こういう状態でやってるからグローバルなサービス提供が重宝されるわけで
現在のC/C++でグローバルなサービス提供をするなら>>691に行き着くのが
より素直なように思うんだよね。基本的に構造化プログラミングを指向してるから
OOPにおける生成に関するパターンの一つであるシングルトンなる単語を事更に
引っ張ってくる動機がよく分からないというか。コードが似てるというだけでは?
706名前は開発中のものです。:2013/04/18(木) 17:31:32.88 ID:0480Njzj
>>692
どこでエラーが起きたのかが表示されるので
そこを見に行く
エラー文をダブルクリックすれば、
エラー行まで飛んでくれる
707名前は開発中のものです。:2013/04/18(木) 19:26:44.92 ID:O3bqj4rs
そもそもオブジェクト指向とかグラフィックライブラリを作るために作られたんだろ
ボタンとかウィンドウとかクラスにして継承とか分かりやすいよな
問題はグラフィックライブラリ以外のあらゆるシステムがオブジェクト指向でやると作りやすくなると誤解したことだよな
つまりオブジェクト指向でゲームを作ると糞ゲー化するということだ
708名前は開発中のものです。:2013/04/18(木) 21:29:05.20 ID:o3yKfFD9
管理クラスから管理対象へthisポインタ渡したり、相互参照になるようなことを
極力回避できるように頑張ったけど難しすぎて挫けそうになったときに
シングルトンさんは優しく手を差し伸べてくれたんだ・・・
709名前は開発中のものです。:2013/04/18(木) 21:55:07.33 ID:e1ujC0c7
そういう状況ならひとまずはOOPなんて捨ててみたほうがいいと思うなぁ
一度、平凡な構造化プログラミングでいいから.ちゃんと機能分割してみるの
その結果として見えてくるものとしてわりとありがちなのが

管理者とかマネージャと名付けてた存在が実は単なる邪魔者でしかなかった(・ω≦) テヘペロ
710名前は開発中のものです。:2013/04/18(木) 23:01:32.80 ID:RB2/fa99
何とか管理クラスってよく見かけるけど、一体何をしてくれるのかよくわかんないよね。
例えば弾管理クラスとか。あーいうのってもう少し具体的な機能名を付けてもいいと思た
711名前は開発中のものです。:2013/04/18(木) 23:08:13.77 ID:o3yKfFD9
○○Managerって名前付けたくなったときは一度そのメンバ変数やメソッドを全て分離してみると
意外とそれら同士で関連が必要なものって少ないんだよね。そこで必要なものだけを関連付けて、
所有者もハッキリさせた上でそれらを利用するためのファサードを用意すれば、外部からは最初に
用意したかったManagerなクラスのような機能を持ってるだろうし、中身はスッキリする。
スッキリというよりはハッキリか、クラスの数は増えてゴチャゴチャだけど役割はハッキリ。

先にインターフェースから考えようとするとこの辺の分解作業でハマることが多いからほんとバランスが難しいと思う。
712名前は開発中のものです。:2013/04/18(木) 23:58:22.80 ID:CndW5V/1
自分の場合、Fooクラスのインスタンスを管理するFooManagerクラスがあったら、
FooEntityを管理するFooクラスに書き換えちゃう
713名前は開発中のものです。:2013/04/19(金) 00:50:08.92 ID:6nexl9fM
>弾管理クラス

蓋を開けてみりゃ、単なる弾専用のオブジェクトプールだったり
ディスパッチャを兼ねてたりしてな。それ分割しろよって話になるわな
714699:2013/04/19(金) 04:34:32.36 ID:xzk7h6Nq
>>705

よく分からないけど、私がシングルトンを愛用する理由はすでに述べた。
そして、>>691で名前空間がお勧めされている理由は「素直だから」だけど、私はゲームが作りたくてプログラムしてるのであって、素直な人間になりたくてプログラムしてるわけじゃない。
シングルトンより使いやすいものがあれば、もちろんそっちを使う。

どうも、「シングルトンというものが考案されたそもそもの目的からはずれてる」から、他のを使えと言ってるように思えるんだけど。
そうとは違うの? 「シングルトンはそうやって使うために創案されたんじゃない」みたいな。
でも別に、「突撃砲は戦車の代わりとして使うために作られたわけじゃないけど、戦車の代わりとしても活躍した」よね。
あぁ、ごめん。お腹の調子悪くて変な時間帯に目が覚めちゃったから、半分寝てるんだ。
715名前は開発中のものです。:2013/04/19(金) 09:20:22.98 ID:Gm5WQj/g
>>703
暗黙の了解があるったって間違えることも忘れることもあるから、生成方法がわかってればそこそこ安全に使えるシングルトンは落とし所として丁度いいんだよね
「全部把握してるからかんけえねえ!」ってなら確かにnamespaceのがいいかもね
716名前は開発中のものです。:2013/04/19(金) 09:36:03.12 ID:6H88temB
>>714
横だけど、シングルトンクラスをグローバル変数として使うなら、最初からグローバル変数を使えばいいじゃん!
っていう単純な理由じゃないかな。
所詮、シングルトンがグローバル変数として使えるというのは、シングルトンの副次的な特徴でしか無いわけだし。

ま、自分も結構、グローバル変数代わりに使っちゃうことはあるんだけどもw
717名前は開発中のものです。:2013/04/19(金) 12:20:53.87 ID:Gm5WQj/g
プラグラム上でひとつしかないってのが使い方とクラス定義からわかるってのも把握しやすくて楽なんだよね
718名前は開発中のものです。:2013/04/19(金) 18:29:00.46 ID:z+avPKnF
まだシングルトン話してるのか
どんだけ実装技法の語彙少ないんだ
719名前は開発中のものです。:2013/04/19(金) 19:10:51.61 ID:YcJLg+IB
1匹の豚だからさ!
720名前は開発中のものです。:2013/04/19(金) 22:01:57.15 ID:N7CemB7F
>>715
自分でも把握しきれずに使い方をうっかり間違えてインスタンスを生成しようと
してしまうほど多様なサービスがグローバルに提供されてるのか。>>699なんかも
「使いまくり」とか言ってたし、世界は広大だなぁ
721名前は開発中のものです。:2013/04/19(金) 22:09:33.27 ID:N7CemB7F
気のせいかもしれないけど
「OOの定石とかカンケーねーし、俺は俺っすから、俺流ってやつっすよ」
って感じのアクの強い組み方をする我流戦士に限ってGoFのデザパタ用語を
無理やりに自分のやってる事に当てはめようとする傾向があるよね

山籠り修行で独自の理論を編み出して里に降りてきました的な組み方
してんだから、GoFのデザパタ用語なんかに日和ってないで、何かこう
新しいパターンを提唱すればいいと思うんだよね。クローバルパターンとか
722名前は開発中のものです。:2013/04/19(金) 22:14:41.87 ID:6nexl9fM
タスクシステムパターンとかな
723名前は開発中のものです。:2013/04/20(土) 00:13:38.54 ID:gW2Q3IRp
>>721
パターンなんて実装方法を一般化したもんでしょ
そんな細かい概念的な意味にこだわることはないと思うんだが
パターンはこうあるべきっていう信念でもあるの?
724名前は開発中のものです。:2013/04/20(土) 00:54:36.14 ID:SxBad149
横だが、例えばGoF本は
「オブジェクト指向における再利用のためのデザインパターン」
だからねぇ。GoFのパターンが会話中に登場する時は、お互いに
ある程度の共通認識がないとコミュニケーションの助けにならんよ
725名前は開発中のものです。:2013/04/20(土) 01:07:22.39 ID:gW2Q3IRp
ちなみに俺は常に同一のオブジェクトが得られるような記述を全部シングルトンって言ってるけど、これってなんか間違ってる?
726名前は開発中のものです。:2013/04/20(土) 01:28:56.99 ID:gW2Q3IRp
↑だとちょっと語弊があるな
同じオブジェクトが得られるクラスの記述って感じか
727名前は開発中のものです。:2013/04/20(土) 01:44:22.44 ID:SxBad149
シングルトンは構造や振る舞いについてのパターンじゃないからねぇ

間違ってるというか、それだけだと相手と会話がうまく成立するのかが
少し心配になるかな。コード中の文脈が伴わないと何とも言えん。

文脈的には、それが何故唯一のオブジェクトとして生成される
ものとして記述されるのか、という点で共通認識がないと
そうだねぇー、うんうん、って話はスムーズに進まんでしょ

例えば、ソースコード上に酷似する部分があるからといって
これすなわちGoFの○○パターンなりって話にゃならんという
話は分かるだろ?
728名前は開発中のものです。:2013/04/20(土) 06:51:56.74 ID:TbLEMs7v
シングルトンに関しては、使用目的までは定義に含まれてないのが共通認識じゃないかと思ってる。
今まで、いくつかの解説サイトで「しかしシングルトンは、グローバル変数のかわりとして使われることも多い」という記述をみてきた。
これはつまり、「インスタンスがひとつしかないことを保証する以外の目的で、シングルトンが使われることがある」事を認めている表現だ。
さもなければ「グローバル変数のかわりとしてこういったテクニックが用いられることもあるが、それはインスタンスをひとつに制限するために用いられているわけではないので、シングルトンとは呼べない」という主張が多いはずだろう。
だが、そういうのはみたことがない。今のところは。
729名前は開発中のものです。:2013/04/20(土) 09:29:55.37 ID:O6CqvZz8
デザパタ用語の乱用だろ
730名前は開発中のものです。:2013/04/20(土) 09:50:12.53 ID:5Eq2KYy6
>>728
>シングルトンに関しては、使用目的までは定義に含まれてないのが共通認識じゃないかと思ってる。

言いたしっぺの人達の言い分もたまには読んであげてもいいんじゃないかと

>Intent
>
>Ensure a class only has one instance,
>and provide a global point of access to it.
731名前は開発中のものです。:2013/04/20(土) 09:57:43.44 ID:5Eq2KYy6
>Motivation
>
>It's important for some classes to have exactly one instance.
>Although there can be many printers in a system, there should be
>only one printer spooler. There should be only one file system and
>one window manager. A digital filter will have one A/D converter.
>An accounting system will be dedicated to serving one company.
>
>How do we ensure that a class has only one instance and that
>the instance is easily accessible? A global variable makes an
>object accessible, but it doesn't keep
you from instantiating
>multiple objects.
>
>A better solution is to make the class itself responsible for keeping
>track of its sole instance. The class can ensure that no other instance
>can be created (by intercepting requests to create new objects),
>and it can provide a way to access the instance.
>
>This is the Singleton pattern.
732名前は開発中のものです。:2013/04/20(土) 10:10:09.30 ID:O6CqvZz8
読めば読むほどにアンチパターンだよなw
733名前は開発中のものです。:2013/04/20(土) 11:31:05.42 ID:5Eq2KYy6
まぁ言い出しっぺの人達の言い分は

これも“Elements of Reusable Object-Oriented Software”だよな?だよな?

だからな。改訂しても消えないんだから奴らは本気なんだぜ

再利用可能なオブジェクト指向プログラミングをするとしたら
こういうのもあるよな?これをシングルトンって名付けたぜ!
もし良かったらお前らもこのワードを活用してくれよな!HAHAHA!

実に気前のいい奴らだ
734名前は開発中のものです。:2013/04/20(土) 11:32:14.24 ID:TbLEMs7v
>>731

? 私は英語はあまり得意ではないけども、そこには「そういう目的で使わないときはシングルトンとは呼ばない」って書いてある?
せいぜい「インスタンスがひとつしかないことを保証するためには、こうすればいい」じゃないの?
それだと、「インスタンスがひとつしかないことが保証されているクラスは、全部シングルトンだ」という解釈は否定できないと思うけど。
735名前は開発中のものです。:2013/04/20(土) 12:06:40.06 ID:5ePeaqK4
シングルトンね。
phpのデータベース接続オブジェクトに、似たようなパターンを使ってるな。
あちこちで生成されると重くなるんで。

>>728
>「しかしシングルトンは、グローバル変数のかわりとして使われることも多い」
変数のスコープの話と、インスタンス生成制限の話は、区別した方が良くないか。
736名前は開発中のものです。:2013/04/20(土) 12:32:11.43 ID:TeRm8kwh
どうでもいいけど一般に言うシングルトンはインスタンスが1つしかないことを保証できてないけどな
737名前は開発中のものです。:2013/04/20(土) 15:41:09.36 ID:hsww62Yh
まぁおまえら
インスタンスコーヒーを飲んで落ち着けよ。
738名前は開発中のものです。:2013/04/20(土) 15:43:46.35 ID:Az/yMseG
>>737
不味そうだな
739名前は開発中のものです。:2013/04/21(日) 13:59:13.02 ID:zqzxdIIm
インスタンス生成制限に対するこだわりがそこまであるなら
使う機能をコンストラクタなりセッターなりで注入しろよな
740名前は開発中のものです。:2013/04/22(月) 21:18:19.11 ID:uxNo24/L
シーンを生成するたびにキー入力のクラスとかをいちいちSetするのが
めんどくさかったからstaticメンバにした、シングルトンでも良いんだろうけど
741名前は開発中のものです。:2013/04/22(月) 22:38:01.13 ID:Tj/YGpFJ
>>740
逆に、何故クラスにしたのか。そしてなんでその理由でめんどくさいって話になるのか不思議
自分でそうなるように設計して書いたんじゃないのか
742名前は開発中のものです。:2013/04/22(月) 23:11:25.65 ID:enooDW0f
>>741
Staticにする前提で設計したんじゃないの?
743名前は開発中のものです。:2013/04/23(火) 22:58:28.21 ID:q/9qjBla
ひとりでやってると数行書く手間省くためにstaticにしてしまうことはよくあるな
コード量やインタフェースの複雑さが作業効率に直結するから

まあ規模でかくなると破綻するんだけど
744名前は開発中のものです。:2013/04/24(水) 01:02:11.72 ID:W2HRLLbV
お前らがシーンクラスって言うと、なんだかいつも胡散臭い存在になるよな
そのシーンさんがいなくなるほうが見通し良くなったでござるの巻に100ペリカ
745名前は開発中のものです。:2013/04/24(水) 16:06:32.80 ID:ik1sTI2n
そもそもどういうものをシーンと呼ぶんだろ
シーン自体が切り替わるものなのか、シーン内の状態が切り替わるものなのか、
最初から生成してMapに登録していたものを呼び出すのか
呼び出す都度にNewするものなのかとか
考えるほどに混乱する
746名前は開発中のものです。:2013/04/24(水) 17:01:16.04 ID:zu2S3h9u
「タスクシステム」と同じくらい曖昧だな
747名前は開発中のものです。:2013/04/24(水) 17:23:18.91 ID:pxtkQgOU
どこぞのサイトからコピペした知識とコードだけで書いてる人だと
妙に固定的な考え方と固定的な名前を使いたがるよな。シーンにしろタスクシステムにしろ
そんなものそもそも固定的な、教科書のある決まった方法でもなんでも無いのに
凄くその辺の認識が曖昧だと俺も思うわ
748名前は開発中のものです。:2013/04/24(水) 19:40:38.93 ID:n6ppRLN5
タイトルシーンとかあるでしょ
オブジェクト指向で設計されたシーンの方がわかりやすいんだけど、
そうでないものでもシーンと呼べるものは出来るし、
どういうところがわかりにくいんだろう
シーンをつないでゲームを作るフレームワーク作っておけば、
よりシーン単位でゲーム作る感じになってシーンの差し替えも用意だから複数人でどのシーンを担当とか分業もできるし楽だよね
Unityでもシーンと呼ばれるものがあって、C++で作る時のシーンの概念と同じ使われ方(シーンにオブジェクト置いて〜みたいな)だし
そろそろシーンについての統一的な概念は理解しておいた方がいいね
749名前は開発中のものです。:2013/04/24(水) 19:52:08.87 ID:0CsSJzYZ
タイトル以外がシームレスなゲームってどっからどこまでをシーンってよべばいいんだろ
シームレスなところは全部1シーンってことでいいのかね
750名前は開発中のものです。:2013/04/24(水) 19:57:28.16 ID:zUCwrFTF
シーン1からシーン2に画面がフェードしながら切り替わるシーンとか作ったりしてた
751名前は開発中のものです。:2013/04/24(水) 20:22:15.08 ID:eRSVCn+f
日本語だと「画面」が近い、なんてのも聞くよね
752名前は開発中のものです。:2013/04/24(水) 21:00:33.59 ID:n6ppRLN5
どこからどこまでを1つのシーンに収めるかはそれぞれの判断
無理にシーンの粒度を細かくしようとする必要もなくて
基本的に使用するリソースががらりと変わる部分で分けるのが普通だと思う
タイトル→ステージ選択(タイトル画面でやるならこれは要らなくなる)→ゲーム→リザルト(ゲームシーン内でリザルト表示するなら要らない)
ステージ選択で選択された項目をこのゲーム用のデータクラスに保存、
ゲームシーン開始時に読み込んで選択されたステージを開始
シーンの扱い方はこんな感じ
753名前は開発中のものです。:2013/04/24(水) 22:19:46.26 ID:zu2S3h9u
「それぞれの判断」なら議論はまず成り立たないし
かなり厳密な質問でも無い限りアドバイスは空振りするし
全く会話に使えない言葉だな
754名前は開発中のものです。:2013/04/24(水) 22:50:18.52 ID:m96HF/S0
おまえら日本語処理しなきゃいけないときとかどうしてる?
たとえば英字交じりの日本語を一文字づつ表示しなきゃいけないとするじゃん
そういうときどうする?wcharつかう?
755名前は開発中のものです。:2013/04/24(水) 22:57:40.17 ID:pxtkQgOU
win環境なら。wchar_t と言うか TCHAR。
勿論、その時の都合にもよるから、必ずな訳じゃないが
756名前は開発中のものです。:2013/04/24(水) 23:05:11.53 ID:c1K218zj
常にマルチバイトだな。
自作ライブラリを直さないといけないとなると面倒くさい。
757名前は開発中のものです。:2013/04/24(水) 23:14:01.07 ID:AGhl7MCy
>>753
同感だなぁ

脚本レベルのかなり上位の概念なので、例えば実装レベルの話で唐突に
「シーンクラスが〜」と言われてもそんなの知らんがなって話になる

ゲームのジャンルも何も分からなければ、実装にどう関わってくるのかも
見えてこないけど、そこは空気を読んで無難なところを推測、暗黙の了解を
想像で補え的な?

基本、実装レベルのお悩み相談でシーンという単語が何の前提条件も無しに
ポーンと出てくる時は、この人は猛烈なESPを要求する人だなぁとは思う
758名前は開発中のものです。:2013/04/24(水) 23:25:04.24 ID:AGhl7MCy
>>748
なので実装レベルのお話で何の前提条件も無しにシーンなるものに
“統一的な概念”というのを主張するのはなかなか難しいと思うよ?

例えばUnityにおけるシーンとか、LiveMakerにおけるシーンとか
あらかじめ言おうよって思うなぁ。ちなみにこの二つの例ではかなりの
食い違いがあるというのは調べれば分かると思うよ
759名前は開発中のものです。:2013/04/24(水) 23:33:37.67 ID:AGhl7MCy
>>755
同じく
760名前は開発中のものです。:2013/04/25(木) 00:05:28.06 ID:vqetE3a2
男ならユニコード一択だろ
Winならなおさら
761名前は開発中のものです。:2013/04/25(木) 00:35:18.79 ID:jPzbqKAA
統一されれば絶対ワイド文字が便利なんだろうけどなあ
正直ワイド文字の動きがよくわかってないってのが本音だけど
S_JISの文字列を先頭文字から順に半角全角判定する原始的なやり方が現役
762名前は開発中のものです。:2013/04/25(木) 00:41:13.68 ID:UkqiPEYC
>>761
単純に Unicode16として16bit単位で収まってるだけだよ wchar_t
VC++の場合、UNICODEマクロが定義されてる場合、TCHAR は wchar_t (WCHAR) の typedef で
定義されてない時 char のtypedef
763名前は開発中のものです。:2013/04/25(木) 09:00:48.99 ID:7gnrCjpc
マルチバイトばかり使っててvisualstudioから警告が出てもビビる事はまずなかったが
unicode前提のコーディングが思ったより普及していて生まれて初めてほんの少しビビった
764名前は開発中のものです。:2013/04/25(木) 10:44:05.42 ID:qkynqe12
unicodeに統一したいけど使うライブラリの引数がchar*とかになっててちょっとめんどくさい
765名前は開発中のものです。:2013/04/25(木) 11:32:55.14 ID:UH5Te455
確かにそういった影響は受けるね

俺の場合はDirectXSDK付属サンプルのプロジェクトファイルが
デフォルト設定で_UNICODEでビルドするようになった辺りかな。
たぶん2007年とかその辺じゃないかな

いい機会だったのでテキスト関係はMS独自仕様の汎用テキストマッピングを
利用するように書き換えたよ
766名前は開発中のものです。:2013/04/25(木) 14:15:22.75 ID:+pyqbd0c
文字セットを設定なしでプログラムし続けてたけど
このスレに影響されてUnicodeに設定してみた
charをTCHARに置き換えたり、
stringをbasic_string<TCHAR>のtypedefしたものと置き換えたり、
sprintf_sなどを_stprintf_sなどに置き換えたり、
色々面倒だったが全て置き換え終わった
767名前は開発中のものです。:2013/04/27(土) 03:17:33.62 ID:NXwwmMtR
最初はそうやってたが、バカらしくなってきたから必要な時に適宜マルチにエンコードする方向で統一した
処理速度?今時どうってことないさw
768名前は開発中のものです。:2013/04/27(土) 09:25:44.24 ID:pxcYwwt1
バカらしくなるというのは、テキスト関連の処理が広範囲に散乱してるとか?
769名前は開発中のものです。:2013/04/27(土) 12:31:09.04 ID:izRIquqU
サロゲートペア考慮したらマルチバイトと手間変わんないしな
ただ常用外の漢字ばかりだし読めそうなのって叱るの異字体を使うかぐらいだろうけど
他のOSでのデータの受け渡しやマルチプラットフォーム環境も考慮するとUTF-8で処理だろうし
770名前は開発中のものです。:2013/04/27(土) 16:31:05.77 ID:NXwwmMtR
>>768
Stringクラスは自作してるでしょ?
わざわざワイドの時とマルチの時で処理の整合性が取れてるか確認するのが面倒だったからね
内部的にはワイドだけど外部APIとかがマルチでしか受け取れないときの為に
std::stringに変換するキャスト演算子を用意してんのよ

バカじゃあるまいし広範囲に煩雑にテキスト処理が散乱するような作りにしないでしょ。
771名前は開発中のものです。:2013/04/27(土) 17:14:31.11 ID:y/+GD3gS
>>770
目の前の目的が特に無いまま想像だけで設計してる予感がする
具体的にどんな物作る予定があって自作してるの?
それ次第では手段と目的が逆転してる話ぶりに見える

どういう事かと説明するなら、例えば自分の処理中で必要な内部表現文字列と、
外部とのI/Fに位置する処理を分けて考えてない予感がするって事
どの形式の文字は、どこで必要だから、どこが責任持つかっていう設計力の話
772名前は開発中のものです。:2013/04/27(土) 17:43:39.52 ID:NXwwmMtR
こういう口うるさい先輩いるけど社内でも嫌われてるわ
そんなの分かってるし偉そうに当たり前のこと言ってるのかなり恥ずかしいから自重した方がいいよ

あと俺の目的は「ライブラリを作る練習」だったから手段と目的は逆転してないよ
773名前は開発中のものです。:2013/04/27(土) 17:48:26.88 ID:AuNv0U4t
涙ふけよwwwww
774名前は開発中のものです。:2013/04/27(土) 19:11:53.36 ID:2xnoSIj5
wchar使うのが悔しいから何とかchar std::stringベースの補助関数作ってるんだけど
英語圏以外のアジアの国々や右から書く文字の国とかの文字もlocale弄れば2byteで収まりきるのかね
775名前は開発中のものです。:2013/04/27(土) 20:07:35.03 ID:F67nJgkB
漢字は2byteでよゆーで入るだろ、とか思ったアホな毛唐が作ったんで無理
776名前は開発中のものです。:2013/04/27(土) 20:53:08.85 ID:2xnoSIj5
あいつらもたいへんなんだなぁ
777768:2013/04/28(日) 07:23:43.90 ID:bNl9N3oW
>>770
自作ではないけど、俺はPocoを使ってるので基本的にはUTF-8だよ。Pocoは
POCO_WIN32_UTF8で使ってるから_UNICODEも定義されてる状態かな。
内部でUTF-16に変換してMSのAPIを呼び出してるから>>770とやってることは
そんなに変わらないのかな?

MS謹製の「これからはUTF-16で統一じゃー」のやり方はマルチプラットフォーム前提の
海外のライブラリのやり方とは違うんだよね。MSとの判断の違いは歴史的な経緯の
違いなんだろかね
778768:2013/04/28(日) 07:48:18.69 ID:bNl9N3oW
>>777
訂正

うちの場合、CRT用の設定で_UNICODEを定義してるからWin32用の
UNICODEも定義される。

で、PocoではUNICODEが定義されてるとPOCO_WIN32_UTF8が定義される
779名前は開発中のものです。:2013/05/02(木) 21:00:29.17 ID:N4rcp1wd
あるクラスのインスタンスをやり取りする時に
クラスの機能の一部を隠して相手に渡したい場合ってどうするのがいいのかな?

@対象のクラスを包含して、公開したいメソッドと同名のメソッドを定義して、
 内部のインスタンスに引数などをそのまま委譲するような実装にする

Aあらかじめ、対象になるクラスを、受け渡し用のクラス(公開機能のみ持ってる)から継承させて作っておく

B公開したいメソッドを対象のクラスから切り離して新しいクラスを作る
 分割元のクラスも、新しく作ったクラスを包含するようなつくりに修正し
 受け渡し時にはその内部のクラス(新しいクラス)を渡す


説明が下手で申し訳ない。
@はブツを全く別の箱に入れて渡す感じ
Aはエロい用途を知らない女の子に電気アンマを渡す感じ
Bはアンパンマンが顔の一部だけ相手に渡す感じ
780名前は開発中のものです。:2013/05/02(木) 21:08:15.45 ID:Q3I7QKsl
そのメソッドを使う人には見えて、使わない人には見えないようにしたいってこと?
そうでないなら普通にprivateにするけど
781名前は開発中のものです。:2013/05/02(木) 21:09:24.10 ID:USqCCKLi
性質や目的に応じて使い分けるのが良さそうだけど、じゃあどう使い分けかって基準はパッと浮かばないなあ。
例を出してくれれば個別に答えられるかもしれんけど。
782名前は開発中のものです。:2013/05/02(木) 21:11:24.65 ID:USqCCKLi
>>780
その場合はfriend前提?
783名前は開発中のものです。:2013/05/02(木) 21:23:56.65 ID:Q3I7QKsl
>>782
そのクラス内で自分自身のインスタンス作ってそのメソッド使うならfriendになるのかな?これは賛否あるか
特定のメソッドだけ使えるようにしたいなら、俺なら2かな?
仮想関数だけ定義したクラスを継承させて受けとり側はそのクラスのポインタ使わせる
ようするにjavaのinterfaceなんだけど

ぶっちゃけ好みでいいんじゃね?と思う
784名前は開発中のものです。:2013/05/02(木) 21:53:55.81 ID:fGs3SFxc
PImplの話じゃないの?
C++の基本的なイディオムだけど
785名前は開発中のものです。:2013/05/02(木) 21:57:05.18 ID:USqCCKLi
>>784
実装そのものはPimplに限らず、って感じじゃない?
786名前は開発中のものです。:2013/05/02(木) 21:59:06.41 ID:N4rcp1wd
>>780-781
DXライブラリを使ってマウスの操作情報(InputState)を扱ってるんだけど
依存度を弱めるために使用側とDxLib関数の間にインターフェースクラス(MouseState)を介してます。

MouseStateは、メインループを管理しているクラスによって1フレームに一回だけ更新(Update)された後、
ゲームのシーンクラスに渡されてシーンの更新処理が行われる。という流れにしたいんだけど、
そのまま渡すとシーン内でMouseStateを何度もUpdateできてしまう。
これはDxLibだとマウスホイールの回転数を取得した場合にかなり問題です。
(回転数取得関数は冪等ではないため、そのフレーム中での正しい入力情報が得られなくなる)

そこで、MouseStateのUpdateメソッドを隠してシーンに渡したい、ということだぜぇ。

ちなみにMouseStateのメソッドの例としては次のような感じです。
bool Update();
bool IsDown(ID id) const; // enum ID { LEFT_CLICK, RIGHT_CLICK, etc.. };
Point GetPoint() const; // struct Point { int x, y; };
int GetWheelRotation() const;

ちなみにMouseStateをconstで渡すという方法も考えたけど、constキャストで突破されてしまうというのと
将来的にキーコンフィグなど実装したい場合にconstでないメソッドも公開したいなぁと思ったので候補から外しました。
787名前は開発中のものです。:2013/05/02(木) 22:13:13.21 ID:USqCCKLi
楽なのは
・Update()は呼ぶなとコメントに書くだけで、あとは気にしない
・Update()をprivateにしてメインループをfriendに指定
…あたりだけど、真面目に答えろよ!って怒られそうな気がする(´・ω・`)

冗談はさておき、この場合は継承(>779の2番)ってイメージではないかなー?
788名前は開発中のものです。:2013/05/02(木) 22:22:51.10 ID:Q3I7QKsl
>>786
Update持ったinterfaceとgetも持ったinterfaceを多重継承させればそんな感じにみえなくもないと思うけど
キャストも考慮するなら継承で制限は意味ないな
正直そこまで細かく考えることないからどれがいいかわからんw
789名前は開発中のものです。:2013/05/02(木) 22:25:45.98 ID:Q3I7QKsl
逆だわ
get持ったinterfaceとUpdateも持ったinterface
自分で言ってて思ったけど多重継承でシグネチャ被ってもいいんだっけ?
790名前は開発中のものです。:2013/05/02(木) 22:42:19.59 ID:N4rcp1wd
ついでに、前述のパターンと照らし合わせます。

@
MouseStateをコンストラクタ引数とするMouseStatePeeperを作り、
MouseStateを包含してUpdate以外のメソッドを実装する(処理としては委譲するだけ)
シーンへの引数の型はMouseStatePeeperにする(コンストラクタにより暗黙の型変換が行われる)

A
予め、Updateメソッドを持たないMouseStateDataクラスを作っておき
MouseStateはそれを継承し、Updateメソッドを新たに定義する。
シーンへの引数の型はMouseStateDataにする(アップキャストで暗黙変換される)

B・・・を書いてる途中にレス!

>>787
ぶっちゃけ趣味だし自分かごく近しい身内しか使わないしコメントで良いよねw
まぁオブジェクト指向とかカプセル化の練習がしたいんですよねー

>>788
クラス図っぽく書いてみますと
[ IMouseStateData | | +Get() ] <|-(継承)-[ IMouseState | | +Update() ] <|-(実装)-[ DxLibMouseState | 省略 | 省略 ]
これならOKだと思います。

[ IMouseStateData | | +Get() ] <|-(実装)------+--[ DxLibMouseState | 省略 | 省略 ]
[ IMouseState | | +Update() +Get() ] <|-(実装)-+
こっちの場合はGet()の被りがアウトだと思います。
791名前は開発中のものです。:2013/05/02(木) 22:48:15.27 ID:N4rcp1wd
あ、すみません! 名前被ってもアップキャストされて使われる分には大丈夫そうですね。

実装するクラスで
親A::Get() { 省略 }
親B::Get() { return 親A::Get(); }
って実装すれば良いのかな。
792名前は開発中のものです。:2013/05/02(木) 23:21:14.81 ID:Q3I7QKsl
オーバーライドするだけだから
C::Get()
でいいんじゃないの?
793名前は開発中のものです。:2013/05/02(木) 23:41:56.29 ID:m/O2Uu/w
クラシカルオブジェクト指向が初学者に与えた悪影響は計り知れないなwww
794名前は開発中のものです。:2013/05/03(金) 11:32:51.51 ID:S7XN9iSc
ID:N4rcp1wd の固有の実装について、本人がどうしたらいいかわからないから質問するスレになってる
795名前は開発中のものです。:2013/05/03(金) 11:44:43.04 ID:Vr7/iSSW
前提のよくわからない仮定の話を延々言い合うスレよりはよほど建設的で有意義だな
796名前は開発中のものです。:2013/05/03(金) 13:53:02.91 ID:Eai12eC7
既に完成されてるシステムを修正する場合は@のように包含で隠すけど
設計段階で 好きにしていいよ って言われたらBでやる。Aが一番ラクだけどな
797名前は開発中のものです。:2013/05/03(金) 21:31:23.06 ID:xI79VRgr
よく3Dゲームで、キャラクターがまばたきするけど
あれってどういう処理なんです?
テクスチャーをずらすとかポリゴンを縮尺するとかあると思うんですがどうやるのが正しいんでしょう
798名前は開発中のものです。:2013/05/03(金) 21:38:38.28 ID:nz8UYqbj
好きにやれ
799768:2013/05/03(金) 22:20:53.44 ID:0L0/uXNl
>>797
>正しい

状況(前提条件)は君しか知らないんだし、君が判断するしかないんじゃね
800名前は開発中のものです。:2013/05/04(土) 10:23:20.88 ID:NBfwBR3y
それじゃ聞いた意味ないな
801名前は開発中のものです。:2013/05/04(土) 10:49:54.43 ID:mvu+7SKD
質問する意味が無いからな

唯一の正解正しい答えなんて無いもの
802名前は開発中のものです。:2013/05/04(土) 10:57:21.86 ID:33/CKeau
テクスチャーをずらしたりポリゴンの縮尺を変えたりするのが一般的だね
803名前は開発中のものです。:2013/05/04(土) 22:22:06.72 ID:NBfwBR3y
ひでぇスレw
804名前は開発中のものです。:2013/05/05(日) 17:53:04.90 ID:77XqOaLt
なんでも聞けば答えてもらえると思うなよ!ゆとりがっ!!

っていうかもうちょっと条件しぼらないと答えようないだろ
ポリゴン数や場面、許容されるリソースで最適な方法は変わるんだから
考えられる全パターン並べ立てろとでもいうのか
805名前は開発中のものです。:2013/05/05(日) 19:12:49.86 ID:i7FxFQ+C
条件絞るとお前の固有の仕様を実装するんだから好きにしろってなる
806799:2013/05/05(日) 22:53:24.91 ID:D33QVkss
具体的にこのゲームのこの場面のこのキャラのこの表情ってどうやってんのかな
って感じで、例えばつべに動画でもうpって話を振ってくれりゃあ
「見た目からしてこれUV(モーフだけでできそう)じゃねーの?」とか
それくらいは答えられるけど・・・

見た目で判別付きやすい部類の話だからね
807799:2013/05/05(日) 22:59:32.01 ID:D33QVkss
でも正しいかどうかは知らんよね。学校のテストじゃあるまいし
唯一無二の厳密解が必ず用意されてる的な固定観念いくない
808名前は開発中のものです。:2013/05/05(日) 23:16:01.42 ID:+/wID+xy
いや、偏差値65以下の猿は、「厳密な正解以外はアウト」でいい。
教えたことを守らなかったら鞭で打てば良い。
分からなかったらウッキーって相談に来るから適当に正解の一つを与えておく。
どうせ猿にそれ以上を生み出す想像力はない。

固定観念イクナイは、偏差値65を越えてから。
809799:2013/05/05(日) 23:41:36.91 ID:D33QVkss
あ、はい
810799:2013/05/05(日) 23:47:20.21 ID:wDdaj/7o
触らないほうがいい
811名前は開発中のものです。:2013/05/05(日) 23:50:29.07 ID:Zb4BA4Xr
(話題ふれよ誰か)
812799:2013/05/05(日) 23:52:17.32 ID:D33QVkss
>>810
何で番号コテを俺と同じにするの?
813812:2013/05/05(日) 23:54:16.01 ID:wDdaj/7o
触らないほうがいい
814名前は開発中のものです。:2013/05/06(月) 00:18:53.69 ID:xsjS4AdW
おまえらC++11の機能ってどの程度使ってる?
スマートポインターとラムダ式とfor eachは使ってるんだけど
資料が少なくてどの機能が合ってどこまで使えるかわからないんだ
815名前は開発中のものです。:2013/05/06(月) 00:36:21.19 ID:Csm+dDAG
VS2012の話? とりあえず自分で1個ずつ使って試せばいいけど、
実際に試して結果をまとめてくれてる人の記事がいくつかあるから参考にさせてもらうと良いと思うよ
後置きテンプレートをやってみたかったけど対応してなさそう
816名前は開発中のものです。:2013/05/06(月) 07:03:49.65 ID:IJnwWT3i
一番使ってるのはautoかもしれん
817名前は開発中のものです。:2013/05/24(金) 04:01:58.82 ID:Z+dxyWG0
お知恵をお借りしたく質問させていただきます

 1
4 2
 3

ジョイパッドのボタン配置変更についてなのですが、
例えば、1のボタンを2に変更したとします
その時、同じボタンが存在しているのは不自然なので
2のボタンを1のボタンに変更させるわけですが、
これを考えれば考えるほどややこしくなります

1と2だけで考えるなら簡単ですが、
例えば1を3にして、3を1に変更、
さらに1に変更した3を2に変更する、
すると2は1に変更される
818名前は開発中のものです。:2013/05/24(金) 04:11:44.35 ID:Z+dxyWG0
プレイヤーが制作者の意図する順にボタンを変更してくれるなら
組むのは簡単ですが、どの順番でどのボタンをどのボタンに変更するのかは
その時のプレイヤーの気分次第です

 1
4 2
 3

もしかすると、4を3に変更して
3が4になり、
2を1にして、1が2になり、
「やっぱやーめた」と言って
2になった1を1に戻し、1になった2は2に戻り、
4になった3を2に変更することにして、2が4になることもある

このように片方のボタンを別のボタンにした時に、
その変更前のボタンを自動的にそのボタンに変更する
というプログラムに頭を悩まされています
お知恵をお借りできればと思い質問させていただきました
819名前は開発中のものです。:2013/05/24(金) 04:31:56.16 ID:Z+dxyWG0
 1
4 2
 3

1.1を2にすると2を1に変更する
2.1を3にすると3を1に変更する
3.1を4にすると4を1に変更する
4.2を1にすると1を2に変更する
5.2を3にすると3を2に変更する
6.2を4にすると4を2に変更する
7.3を1にすると1を3に変更する
8.3を2にすると2を3に変更する
9.3を4にすると4を3に変更する
10.4を1にすると1を4に変更する
11.4を2にすると2を4に変更する
12.4を3にすると3を4に変更する
820名前は開発中のものです。:2013/05/24(金) 04:37:39.35 ID:Z+dxyWG0
ノーマルで考えるならこういうことになるのだが、
これは、それぞれのボタンがそれぞれのボタンの時のものです
1が2や3や4になっていたり、
2が1や3や4になっていたり、
3が1や2や4になっていたり、
4が1や2や3になっている場合もある
それらのパタンもすべて考えると、かなりたくさんの条件式になってしまうので、
もっと短く簡潔にできないかなと考えています。

ボタンは4つしかないのです
片方を別のボタンに変更したら、変更前のボタンを変更後ボタンが
元あった場所のボタンに自動的に変更させる
という仕組みを考えれば考えるほどややこしくなるぜ
821名前は開発中のものです。:2013/05/24(金) 07:22:21.97 ID:W28pQXpz
もしかしたら全ボタン2にしたいかもしれないのでそのままにする!
やった!かっちょよく決まった!
822名前は開発中のものです。:2013/05/24(金) 08:21:18.83 ID:yphWCsM0
変更前のボタンを一時的に記憶する。

ボタンを変更する。

変更後のボタンと重複してるのをループで探す。
(さっき変更したところはスキップ)

見つけたらそこを一時的に記憶したので上書きする。
823名前は開発中のものです。:2013/05/24(金) 09:15:11.43 ID:nzV7r7Pm
単純にボタン番号をスワップしてるだけにしか見えないんだが
複雑になるのか?
824名前は開発中のものです。:2013/05/24(金) 10:23:10.91 ID:cwmzJ29T
何を悩んでるのかがわからないw

初期状態が、
ButtonMap[0]=1
ButtonMap[1]=2
ButtonMap[2]=3
ButtonMap[3]=4
で、これを入れ替えるとすると、
たとえばswap(&ButtonMap[1],&ButtonMap[3])で、2と4を入れ替えて
ButtonMap[0]=1
ButtonMap[1]=4
ButtonMap[2]=3
ButtonMap[3]=2
になるとかいう話じゃなかったりするのか?
825名前は開発中のものです。:2013/05/24(金) 10:56:49.19 ID:Z+dxyWG0
>>821
同じ機能のボタンが2つ以上ある案は俺も考えた
それならもう完成している
だが、それだと不親切なゲームだと思うので却下したい

タイトル画面
ttp://livedoor.blogimg.jp/winpg/imgs/7/0/707953a4.png
コンフィグ画面
ttp://livedoor.blogimg.jp/winpg/imgs/d/f/df6687f0.png
ボタン設定変更画面

コンフィグ画面のすべての機能は完成していて
ボタン設定変更画面も一応は完成しているのだが
片方のボタンを変更したら、別のボタンが変わるという仕組みに苦戦
826名前は開発中のものです。:2013/05/24(金) 11:02:17.17 ID:u2VY/BUA
プッ
827名前は開発中のものです。:2013/05/24(金) 11:07:34.44 ID:Z+dxyWG0
ボタン設定変更画面
ttp://livedoor.blogimg.jp/winpg/imgs/7/e/7ea8fac8.png

肝心な画像がぬけていた

>>822
その案をプロミング言語に置き換えた時に
どのように組めばいいのかをよく考えてみるよ

>>824
まあそういうことなんだけど
それをプログラミング言語で組む場合は簡単には行かないんだ
上の画面で完成しているのは、画面の表示内容を変更させるまでのもので
最後に「決定」を選択することで、そのボタン配置に変更される
828名前は開発中のものです。:2013/05/24(金) 13:03:52.46 ID:L89/A9B7
そんなに悩むような事かな?

キーコンフィグ処理で、一時変数でも用意してそこで設定させて
決定したらそれを実際の設定に反映させればいいだけじゃ。
829名前は開発中のものです。:2013/05/24(金) 13:08:37.74 ID:Pcs4wx8F
グラフィックが格好いいな。見習おう。


それはさておき、キーコンフィグを楽に作成するコツは、
>822の言うように、キーコンフィグ中に実際にボタン変更をしないことに尽きると思う。

リアルタイムに更新するのは、デメリットが結構大きい。
例えば、決定やキャンセルのボタンなどが消えてしまってコンフィグ画面から抜け出せなくなったり、
「押した瞬間」「離した瞬間」「押しっぱなし」などの処理がごっちゃになって、不具合が出る可能性があったり、
そもそもプレイヤーが混乱してしまう場合とかね。

コンシューマゲームなんかでも、ゲームによっては
・方向キーはキーコン不可
・キーコンフィグ画面での決定/キャンセルは、スタート/セレクトボタン。かつこの2つはキーコン不可。
……みたいな対策を取ってたりする。


その上で、どのボタンにも割り当てられない機能があったり、
あるいは1つのボタンが複数の機能に割り当てられているのを回避したければ、
ボタンを設定する時に既に登録されていれば入れ替えるなり、エラーメッセージを出すなりすればいいと思う。
830名前は開発中のものです。:2013/05/24(金) 19:22:24.33 ID:1nXUoyZb
アルゴリズムはともかくとして>>827のUIちょっと分かりにくくないか
ボタンを選択してボタンを押すってちょっと混乱するし
機能を選択してボタン割り当てた方がよくね?
831名前は開発中のものです。:2013/05/24(金) 19:25:29.94 ID:RO+UFTSG
     ∧_∧
ガラガラ(  ^^  ) <これからも僕を応援して下さいね(^^
  =〔~∪ ̄ ̄〕
  = □――◇                       Kazuki
832名前は開発中のものです。:2013/05/24(金) 20:21:24.67 ID:Uw/IAj+Z
エミュレータとかのキー設定機能を参考にしてそのまままねればええやん
833817:2013/05/25(土) 06:23:36.57 ID:/8i6z5tG
>>830
なるほど、そのコメントで
何となく見えてきました

ボタン設定変更画面
ttp://livedoor.blogimg.jp/winpg/imgs/7/e/7ea8fac8.png

この設定案自体を白紙にして
右の機能一覧を上から順番に
ボタン位置を割り当てれるようにしてみよう

途中で訂正したい場合はキャンセルボタンで1つ前に戻すようにして
重複するボタンはエラー音を鳴らして設定できないようにする
OK!とりあえず、それでプログラムを組んでみよう。
834817:2013/05/25(土) 06:37:47.44 ID:/8i6z5tG
ゲーム機と違ってパソコン用のジョイパッドは、
パッド番号が統一していないのでややこしい

 1
4 2
 3
こういうボタン配置のジョイパッドもあれば、
ttp://item.shopping.c.yimg.jp/i/j/dragonjapan_225

 4
2 3
 1
こういうボタン配置のジョイパッドもある
ttp://g-ecx.images-amazon.com/images/G/09/detail/review/b0026163qq.01.jpg

なのでボタン配置を変更させるものを作るなら
直接、そのボタンを押してもらって変更してもらうしかない
SFCとかプレステとかなら、ボタン配置(ABXY)は決まってるから
変更させるのはまだ楽なのだがね
835817:2013/05/25(土) 06:52:19.37 ID:/8i6z5tG
>>833訂正
>途中で訂正したい場合はキャンセルボタンで1つ前に戻すようにして

考えてみたらボタン配置を決めてる時にキャンセルボタンで戻すことは無理ですね
そのキャンセルボタンの位置すらも設定しているのですから
なので、1〜4までの機能をすべて設定し終わってから
最後に確認するようにして、そこでキャンセルしたら設定をオールリセットして
最初っから設定し直すことにする

ところで俺のRPGではボタンが1つ余ってるんだが
なんか適当な機能のボタンってないかな?
1.メニュー表示
2.決定/話しかける
3.キャンセル
今んとこ、3つまでなのだが、
あと1つあればシマるんだがね・・・
836名前は開発中のものです。:2013/05/25(土) 07:51:53.08 ID:4lGEAICt
余計なボタンは入れないほうがいいと思う。
837名前は開発中のものです。:2013/05/25(土) 07:52:07.88 ID:eSSYDiVf
特に新しい要素を追加したくないなら、高速会話スキップとか
838名前は開発中のものです。:2013/05/25(土) 11:02:50.90 ID:4SA4pJ/0
>>834
プリセットを入れるなら、プレステ風とXBox風の2つは欲しいな
839817:2013/05/25(土) 12:09:33.98 ID:/8i6z5tG
>>837
ありがとう
とりあえず4つ目のボタンはスペシャルボタンにしておきます

街中で押すと特別なことが出来たり
戦闘中に押すと、また特別なことが出来たり
フィールドで押すと、また特別なことが出来たりなど、
押す場面によって内容を変えるようなボタンにしてみようと思います
840名前は開発中のものです。:2013/05/25(土) 12:32:00.81 ID:4SA4pJ/0
ドラクエ等で採用されてる、
メニュー深層からの全キャンセルが地味に便利よな。
841817:2013/05/25(土) 13:45:03.08 ID:/8i6z5tG
ttp://livedoor.blogimg.jp/winpg/imgs/3/b/3ba8897c.png

とりあえず、助言のおかげで
こんな感じに作り替えることにしました
ありがとうございます
842817:2013/05/25(土) 14:03:26.80 ID:/8i6z5tG
>>840
全キャンセルボタンは確かに便利でいいね。

だけど、メニュー画面を表示させた後は、
メニュー表示ボタンを使うことはないので、
「@メニュー表示ボタン」をオールキャンセルボタンに割り当てようと思います
他のRPGとの差別化を図るため、
スペシャルボタンは、他のRPGにはないユニークな機能を割り当てようと思います。

例えば、戦闘中に連打するとダメージが少し上がったり
敵の攻撃を避け易くなったりする。
子供の頃、RPGの戦闘で無意味にボタン連打をした覚えとかないかな?
そういうのに付加価値を付けたりして
説明書には、その説明はあえて書かないでプレイヤーに探してもらう
843名前は開発中のものです。:2013/05/31(金) 20:17:30.40 ID:HxEj/zpW
世の中、隠し機能はだいたい隠されたまんまだぜ
844名前は開発中のものです。:2013/05/31(金) 22:27:49.60 ID:79cWnjhE
そういう理不尽な隠し仕様で喜ぶのは作者だけ
845名前は開発中のものです。:2013/06/01(土) 01:22:50.48 ID:sGTBGdm0
>>843
kwskお願いします
是非是非
846名前は開発中のものです。:2013/06/01(土) 01:26:54.27 ID:tSSL+mFa
隠し機能を見つけ出すって事は、かなーり根性入れてプレイしなくてはいけないわけで、
それだけプレイするって事は、それだけ面白いゲームでなくてはいけないわけで、
並のゲームじゃ、そこまでやりこまれる事は絶対にないわけで。
847名前は開発中のものです。:2013/06/01(土) 01:30:37.40 ID:yiiSKa8s
昔のFC時代の「裏ワザ」なんかは、開発が仕込んだものは、
誰も見つけないとわざと攻略雑誌に流していたりしたからなぁw

雑誌の編集側もわきまえてて、
編集部に遊びに来るような常連さんの名前で出して
採用のプレゼントを回すようにしていたりして。

まぁ、そのあたりはズブズブでやってたよなぁw
848817:2013/06/01(土) 02:05:02.41 ID:5fZGqmSU
>>846
説明書には、スペシャルボタンは「何かいいことが起こるかもよ?」
とだけ書いておくことにしよう
何が起こるのかはプレイヤーが試してみてのお楽しみです
別にそのボタンを使用しなくてもゲームはクリアできるのだから
ゲームプレイには何ら支障は出ない

ただ、それを見つけた人は
「自分だけが知ってる特別感」だったり
見つけた時の「お!?」という喜びを得ることが出来る

例えば、RPGの戦闘で敵が攻撃してくるとするじゃない?
そのタイミングでスペシャルボタンを押せば
100%回避することが出来るなど。
知っててもタイミングが合わないと回避できないという二段構えの遊び心

いや、その裏技を極めれば低レベルクリアも可能なので
三段構えの遊び心かもね
849817:2013/06/01(土) 02:17:43.79 ID:5fZGqmSU
RPGツクールとかウディタとかを使うと
例えば、こういう細かいアイディアを実装することができない
出来たとしても大変な作業です。
戦闘中に敵の攻撃時のあるタイミングでスペシャルボタンを押すと回避なんてね

そやけど、プログラミング言語を使用したオリジナルゲーム開発なら
そんなに難しくはないよね?くしゅん
だってゲーム開発者は1フレーム(1/60秒)間隔で
コード書いちゃってるわけですから
自分が「ここだ」と思うタイミングのところに
「スペシャルボタンが押されていたら100%回避する」という条件式を書くだけのことです
850名前は開発中のものです。:2013/06/01(土) 08:46:39.60 ID:Fq+xMgfr
デバッグ用機能をリリース版にも残してるだけだな。
なんかない?って言われたら教えるけど。
851名前は開発中のものです。:2013/06/01(土) 10:25:50.34 ID:Mmz33kIm
ツクールやウディタでさえ完成させられなかった人間は
隠し要素なんか考えるより完成させるためにそういう無駄を極力省いて
作業工程をどれだけコンパクトにまとめられるか考えたほうが良いと思うよ
852817:2013/06/01(土) 11:08:05.24 ID:5fZGqmSU
>>851
わしは完成させることよりも
開発している過程そのものを楽しんでいるところがある
ぶっちゃけ完成させること自体はどうでも良かったりするわけだ
それがビジネスと趣味とのゲーム開発の違いなんだろうねだろうね
ビジネスだと、どうしても完成させる必要があるが、
趣味であれば別に完成させる必要もない
開発する過程させ楽しめればいいのだからね

あと、こんな風に複雑な処理で凄いことをするのではなく
ちょっとしたアイディアで面白いことをすることが凄い好きだし楽しい
昔のゲームって、そういうアイディア勝負みたいなところあったよね
そういうは考えることも思いつくことも好きですわ
853817:2013/06/01(土) 11:16:43.71 ID:5fZGqmSU
俺らの世代はRPGの戦闘中に
隠しコマンド(→←→←ABなど)を入力すると
特殊な効果音が鳴るだけで興奮するよな
自分が開発するゲームには
昔のゲームにはよくあったそういう隠し技的なものは入れたいね

最近のゲームは複雑で高度な処理ができるようになったからなのか
そういう小手先の裏技的な遊びをしなくなったのが不満です
854名前は開発中のものです。:2013/06/01(土) 12:02:42.18 ID:Mmz33kIm
完成させないで妄想してるだけとか中二の黒歴史ノートレベルだったのか
ならば他所でやったほうが良いんじゃね

ゲームって言うのはプレイヤーがいるからゲーム足りうるわけで
その状態に持っていくため、もって行った時によりプレイヤーの気を引くための技術が
ゲーム制作の技術なんだから
855名前は開発中のものです。:2013/06/01(土) 12:06:34.98 ID:AtXY2e0n
別に好きにやればいい
他人のやり方に色々言えるほどお偉い方ならそれこそ
こんなところにいなくてもいいよ
856名前は開発中のものです。:2013/06/01(土) 17:26:41.04 ID:KHmI67kn
まあここは仕様じゃなくて実装を語る所だしな
端からみて?な仕様でも作るのは本人の勝手だし
857名前は開発中のものです。:2013/06/01(土) 18:03:03.21 ID:o49Tkqsu
なんでこの人質問してるのにずっとえらそうなの?
自分のゲームが面白いって勘違いしてるの?
自分の技術が無いのに実装は難しいんだよな〜とか難しいこと言ってるの?
858名前は開発中のものです。:2013/06/01(土) 18:12:49.01 ID:X3V0A+SJ
>>857
Kazukiを知らない御新規さんへ

Kazukiの同人3DRPG制作【第三話】
http://toro.2ch.net/test/read.cgi/gamedev/1285169737/l50

746 名前: 名前は開発中のものです。 [sage] 投稿日: 2013/05/24(金) 18:40:16.82 ID:Ka2layLo
ブログ潰してもまだデジタルなんちゃらとかいうゴミ作品に未練ありのようだ。

C/C++ゲーム製作総合スレッド Part3
ttp://toro.2ch.net/test/read.cgi/gamedev/1357899040/817-827

ゆめにっきっぽいゲームを作るスレ 12部屋目
ttp://toro.2ch.net/test/read.cgi/gamedev/1351597862/430

今日も元気に2chで書き込み三昧

     ∧_∧
ガラガラ(  ^^  ) <これからも僕を応援して下さいね(^^
  =〔~∪ ̄ ̄〕
  = □――◇                       Kazuki
859名前は開発中のものです。:2013/06/01(土) 21:40:29.47 ID:sGTBGdm0
>>846,>>847
へー、そうなんですか。
昔よく遊んだファミコンのゲームで、まだ世に知られていないコマンドがあるのかとwktkしました。
確かに雑誌の裏技コーナーを見ていて「こんな複雑なコマンド入力、どうやって見つけたんだ?」ってのはよくありました。
バイナリでも解析してるのかと思ってた。

昔、ファミコンのドルアーガの党で256面までステージセレクトできる入力コマンドがあって、
「公式回答はバグだ」って話を聞いて、
どう考えても意図して練りこまれたものに違いないと思ったことがある。
860名前は開発中のものです。:2013/06/01(土) 22:15:49.83 ID:MD94+b1q
>>ドルアーガの塔
懐かしい裏技だな。画面がフリーズしたり真っ暗なステージや変な色の敵キャラが出たりで
情報の乏しかった当時全フロアひとつひとつ調べた記憶があるわ。
今は検索ひとつでそれらの情報が見られるサイトがみつかるから便利だな。
861名前は開発中のものです。:2013/06/02(日) 01:18:40.95 ID:nA7E3cc7
>>848
何か良いことあるかもよ?くらいだと多分見つけてくんないと思うw
凄く分かりにくいところにいるNPCに語らせるくらいで良いかもしれんよ。
862名前は開発中のものです。:2013/06/22(土) 21:06:40.37 ID:7gYvfHgX
どこかに各種コンパイラのC++11対応表なかったっけ?
863名前は開発中のものです。:2013/06/23(日) 14:32:20.35 ID:tgeCZCYR
英語圏の記事だけど
C++11 compiler support shootout: Visual Studio, GCC, Clang, Intel [March 14, 2013]
http://cpprocks.com/c11-compiler-support-shootout-visual-studio-gcc-clang-intel/
864名前は開発中のものです。:2013/07/12(金) 18:21:41.58 ID:XMkE/WwO
アベノミクス財政支援で
景気回復!
識者の意見は?
865名前は開発中のものです。:2013/07/13(土) 17:47:42.14 ID:55NSXF2Q
C++でデータ通信のライブラリのようなものをつくってます。
よかったらお試しください。
http://ichishino.nobody.jp/
866名前は開発中のものです。:2013/07/13(土) 18:58:30.70 ID:yD2puQqu
boostをラップしただけのライブラリに見えた
867名前は開発中のものです。:2013/07/13(土) 20:22:27.89 ID:55NSXF2Q
boostは使ってないですw
まあやってることは似たようなことですけどね
868名前は開発中のものです。:2013/07/13(土) 22:05:13.88 ID:ip0SkFwB
むしろ使ってくれた方が信頼性が・・・

GPLじゃないライブラリはどんどんラップされればいいのになぁ
869名前は開発中のものです。:2013/07/13(土) 23:58:16.67 ID:fINaVzD9
通信系は、他人の書いたライブラリ使うとか、ないわw
抽象化の哲学が違うから使いにくい上に、なにしてるかわからんから怖すぎる。
870名前は開発中のものです。:2013/07/14(日) 12:55:58.11 ID:tVYsyyXa
自分で書くとだるいから良いと思うけど
871名前は開発中のものです。:2013/07/14(日) 18:44:46.80 ID:KZLrwf/e
座標Aを頂点とする円錐(方向ベクトルav,底面の半径ar)に、座標B(x,y,z)が含まれているか判断したいのですが、
数学素人なもので、STLか素で動くコードください!!!!!!

円錐は円錐(方向ベクトルav,底面の半径ar)と表しましたが、
頂点座標Aからベクトルav方向の要素と、角度の指定と距離指定があればなんでもいいです!!!!

お願いします!!!!
872名前は開発中のものです。:2013/07/14(日) 18:50:41.24 ID:KZLrwf/e
あ、AとBの距離を調べればいいので、円錐じゃなくてもよかったみたいです。
まとめると、座標Aからベクトルav方向の誤差角度θ内に座標Bが含まれているかどうか、です。
873名前は開発中のものです。:2013/07/15(月) 03:08:33.89 ID:oNghIXjR
こんな感じ

D3DXVec3Sub( &AB, &B, &A );
D3DXVec3Normalize( &nav, &av );
fa = D3DXVec3Dot( &nav, &AB );
fc = D3DXVec3Length( &AB );
if (fa <= 0.0f) return false;
return (fa / fc) >= sqrtf(1.0f - ar * ar);
もしくは
return (fa / fc) >= cosf(θ)
874名前は開発中のものです。:2013/07/15(月) 13:16:31.38 ID:lizNauaM
>>869
俺は逆にオレオレ規格使うほうが怖いわ
875名前は開発中のものです。:2013/07/15(月) 18:05:42.05 ID:boL0llXa
ユーザーが画面上のオブジェクトをクリックしたとき、
クリックしたことがはっきりわかる画面上のエフェクトを表示したいのですが、
どんな種類のエフェクトが考えられますか?2Dのゲームです。

今は、小さな☆をいくつか放射状に飛ばそうかと思っているのですが、
何かいいアイディアがあったら教えてください。よろしくお願いします。
876名前は開発中のものです。:2013/07/15(月) 18:18:57.19 ID:EkfWHliN
描画リストを作っているのですが、どっちのほうが一般的でしょうか?
・オブジェクトが、毎フレーム描画リストに登録を行う
・オブジェクトの初期化時にポインタを登録して、フラグで管理する
877名前は開発中のものです。:2013/07/15(月) 18:29:27.32 ID:boL0llXa
>>876
僕は両方使ってます

エフェクトのような大量に発生して短期間で消えるようなものをリストにいれていても無駄なので、毎フレームごとに削除フラグのついたオブジェクトを取り除いています

また、描画リストの操作を行うと却って煩雑になるような、オブジェクトが一時的消える場合などは描画フラグで管理してます
878名前は開発中のものです。:2013/07/15(月) 19:22:32.07 ID:L+AaFvNN
>>875
> 小さな☆をいくつか放射状に
それで問題ないと思う
押した/叩いたってのが感覚的に分かればいいので

星が散れば叩いたって事が分かるだろうし
879名前は開発中のものです。:2013/07/16(火) 23:54:54.06 ID:nroTpBI+
取りかかっといて完成させられない奴は、
一生なにも完成させられない。
例え、趣味でもだ。

そんな奴は、最後まで
中途半端で終わるよ。
880名前は開発中のものです。:2013/07/17(水) 00:17:11.28 ID:kpZcJ0Sq
そうなんだすごい
881名前は開発中のものです。:2013/07/18(木) 18:07:38.60 ID:wozyRJXP
>>876
そのオブジェクトのdraw()に任せるんだからどっちも自在じゃない?
強いていうなら前者で、内部にフラグを持たせておく。
描画リスト自体を描画オブジェクトとして扱えるようにしておけば
階層構造でソートもスッキリできるし
882名前は開発中のものです。:2013/07/19(金) 02:00:38.04 ID:yB679Wt6
毎フレームオブジェクトの数だけVECTORに登録するのってどれぐらいコストかかるんでしょうか
任意のオブジェクトを任意の数eraseするより軽い?

テストケース思いつかないのでそこも教えていただけると助かります。

また、描画フラグを持つということは、描画リストに登録する時に判定を行うということですよね
そうすれば>>877さんの方法も利点を踏まえてできそうです
883名前は開発中のものです。:2013/07/19(金) 22:11:56.37 ID:Ogy8w19Q
C++で、以下のような目的に有用なコンテナがあれば教えてください。
STLかboostが望ましいです。また、要素数は10〜1000くらいを想定しています。

・先入れ先出し(queue)
・先頭から昇順で舐める(取り出さない)
・末尾から降順で舐める(取り出さない)
884名前は開発中のものです。:2013/07/19(金) 23:17:28.77 ID:4qXagX0z
LinkedListかな?
885名前は開発中のものです。:2013/07/20(土) 00:09:42.92 ID:kiaWJMSU
双方向の連結リストをqueue代わりに使う感じです?
886名前は開発中のものです。:2013/07/20(土) 00:22:18.30 ID:XqstlZ3g
てか、それそのまま std::queue じゃダメなの?
887名前は開発中のものです。:2013/07/20(土) 01:02:53.33 ID:kiaWJMSU
>>886
std::queueだと、2番目と3番目が一手間かかるかな?と思ったんですが、
実装によっては行ける場合があるみたいですね
888名前は開発中のものです。:2013/07/20(土) 01:17:57.13 ID:wGiLsy+y
stdすら触ったことないけど
std::listとか
889名前は開発中のものです。:2013/07/20(土) 01:18:13.73 ID:kiaWJMSU
自己解決です。
std::listについて調べてたときに見つかった、両端キュー(std::deque)を使うことにしました。)
listでも良かったのですが、あくまでqueueであることを強調しておきたかったので。

全く知らなかったんですが、std::queueの中身(?)としてdequeがデフォルトで使われるんですね。
ありがとうございました。
890名前は開発中のものです。:2013/07/23(火) 03:37:16.74 ID:XMvxJVKG
dequeはvectorのつもりで使うと遅いらしい(言いがかり)


queueを強調したいなら
typedef std::vector<XXX> myqueue;
のが幸せになれるかもね
891名前は開発中のものです。:2013/07/23(火) 18:17:41.75 ID:4iNIBU8a
便乗だけど便乗だけど既存のものでスレッドセーフなキューってないかな?
ロックを意識することなく同時操作が可能なだけじゃなく、
ある時点のスナップショットがとれたりするといいんだけど
892名前は開発中のものです。:2013/07/23(火) 19:43:41.10 ID:AtVyX7Sp
vectorってstackじゃなかったっけ?
893名前は開発中のものです。:2013/07/23(火) 20:42:50.99 ID:XMvxJVKG
あぁごめん

・先頭から昇順で舐める(取り出さない)
・末尾から降順で舐める(取り出さない)

の部分に気を取られて基本出し入れせずに舐めるのかとおもたわ

出し入れが多いならvectorはダメね
894名前は開発中のものです。:2013/07/23(火) 20:52:06.80 ID:nftUeAXw
なんか卑猥
895名前は開発中のものです。:2013/07/23(火) 21:09:25.36 ID:YeB+8+Tf
いいなぁ、なんでも卑猥に見える、そういう童貞力。
それこそイマジネーションの礎なんだよなぁ、今にして思うと。
896名前は開発中のものです。:2013/07/24(水) 18:36:04.12 ID:HZacDJIx
>>873
返答遅れて申し訳ないです

速度的に、できたらsqrt()平方根使いたくないのですが、平方根を使わないで
座標判定できませんか?
897名前は開発中のものです。:2013/07/24(水) 18:46:18.93 ID:j22wysYn
逆に2乗
898名前は開発中のものです。:2013/07/24(水) 19:18:26.70 ID:HZacDJIx
あ、ありがとうございます。
それと最後に、
arというのは円錐の底面の半径でしょうか?
899名前は開発中のものです。:2013/07/25(木) 10:31:48.08 ID:WqSSPETL
1-ar*arがどうやって導出されたのかわからん
ar<=1じゃないとsqrtfがエラーになりそうだけどいいの
900名前は開発中のものです。:2013/07/27(土) 17:58:49.15 ID:ogdXCcj+
プログラマーの求人を見ると
C言語やC++で開発している会社を全く見かけません
考えられるとすれば、以下の理由からだろうか

 1.C++は、古すぎるので今はどこも使っていない
 2.C++は難し過ぎるから、もっと優しい言語で開発している
901名前は開発中のものです。:2013/07/27(土) 19:27:27.42 ID:plIY/iXW
>>900
ちょっと違う。案件はあるけど、新規に社外から人を募集する事が少ないってだけ。
そしてイントラ開発やWeb開発の求人が並ぶようなリストには基本的にあまり登場しないので、
もしもそっち系を見ていたら当然、ますます出てこない。
902名前は開発中のものです。:2013/07/27(土) 19:32:39.66 ID:plIY/iXW
もうちょっと言っておくと、難しいとか易しいとか、古いとか新しいみたいな話じゃないって事。
一般の初心者みたいな人だとそういう観点しか持ってないだろうから、わからないかもしれないが、
これらはあくまで道具なので、そして道具の性質と案件内容による訳で、必要なノウハウ規模と事後の事もあるので、って事。
903名前は開発中のものです。:2013/07/27(土) 20:40:25.43 ID:PnaaA9Kk
普通にC,C++の技術者はあぶれてる状態
組み込みでは使われてるけど新規募集するほどの案件はない
今はJava, C#, PHPなどがよさげ
これからはビッグデータ特需でデータベースエンジニアの時代がくるでしょう
904名前は開発中のものです。:2013/07/27(土) 20:56:50.76 ID:KCTmsx3/
以降はマ板で
905名前は開発中のものです。:2013/08/08(木) 20:37:13.84 ID:Fm3aADhX
セーブデータ管理するクラスを作りたいんですけど、インベントリに入っているアイテムなどの情報ってどのようにセーブしたらいいですか?

アイテムクラスを継承してはいるんですが、アイテムの種類によって派生クラスのインスタンスを持っています。

アイテム名だけセーブして、ロード時にまたインスタンスを作れば、とか考えたのですが
文字列からクラスを指定するにはどうしたらいいのでしょうか?

if文でも片っ端から比較することは出来ると思いますが、アイテムの種類が多いのであまりしたくないです。
906名前は開発中のものです。:2013/08/08(木) 20:45:58.04 ID:DOcOYu2R
アイテムのID番号みたいなのはないの?
907名前は開発中のものです。:2013/08/08(木) 20:48:45.82 ID:/wmWfYu4
アイテム毎にクラス作ってんの?
クラスをひとつにして属性で種類とか効果持たせたら
908名前は開発中のものです。:2013/08/08(木) 21:06:28.58 ID:Fm3aADhX
>>906
ID番号を作ってもいいのですが、やっぱりif分の連発になってしまうような・・・

>>907
説明不足でした、インベントリなので武器や防具なども入ります。
イメージ的には初代ポケモンの、わざマシンとモンスターボールが同じインベントリにあるような感じです。
909名前は開発中のものです。:2013/08/08(木) 21:11:16.38 ID:YXo9+mvM
>>905

原始的だけど、私はアイテムのクラスごとにID割り当てて、

switch(id){
case 0:
Item* = new ItemA;
break;
case 1:
.
.
.
}

って感じだったよ。
100種類くらいあったけど、KIAIで入力したよ。
910名前は開発中のものです。:2013/08/08(木) 21:13:39.05 ID:18HwUr7D
ワンライナーにすればたかだか100行や
911名前は開発中のものです。:2013/08/08(木) 21:19:12.98 ID:Y7lHZi6y
もう根本的にデータ設計に失敗してるよな。
912名前は開発中のものです。:2013/08/08(木) 21:26:37.95 ID:CPDL+zNt
動いてるコードなんてそんなもんだろ。
913名前は開発中のものです。:2013/08/08(木) 21:28:58.95 ID:Fm3aADhX
>>909
なるほど、では気合でやってみたいと思います。

>>911
どんな設計がいいのでしょうか?後学のために・・・
914名前は開発中のものです。:2013/08/08(木) 21:32:23.89 ID:zxVj/kx+
どういうコード書いてるかわからんからなんともいえんけど
アイテムの種類でクラス分けてるなら名前と種類のマトリクスありゃいんじゃないの
アイテムの名前の数だけクラス作ってるならしらん
915名前は開発中のものです。:2013/08/08(木) 21:36:37.14 ID:Y7lHZi6y
>>913
とりあえずRDBを一通り学んだあと、本当にデータ設計がそれでいいのか考え直せ。
それからIDに対応したデータを探すなら配列にするかハッシュにするかだ。
片っ端からというのが既におかしい。
916名前は開発中のものです。:2013/08/08(木) 21:38:21.72 ID:DOcOYu2R
俺のやり方だと
種類ID(0=装備 1=わざマシン 2=ボール みたいな)
種類の中の個別ID(ボールなら 0=モンスターボール 1=スーパーボール みたいな)
って作って

ロード時にアイテムクラスコンテナ[種類ID]に種類IDごとにデータ(かポインタ)を全部ぶち込む
で、セーブに種類IDと個別IDをとっておけば1行でアクセスできる

って感じかなぁ
917名前は開発中のものです。:2013/08/08(木) 21:47:25.53 ID:zxVj/kx+
種類が多いのか、よく読んでなかったわ
918名前は開発中のものです。:2013/08/08(木) 22:01:46.03 ID:Fm3aADhX
>>915
種類ごとに分けたクラスを使うということだと思うのですが
(モンスターボール・スーパーボール・ハイパーボールは同一のクラスということ?)

セーブデータから取得したデータから、クラスの種類を判断する良い方法がないかなと質問しました。

セーブデータから取得できるデータというと、数値か文字列だけになると思うのですが(バイナリは知りません)
となると、>>909とちょっと似てますが
switch(TypeId){
case BALL:
Item = new CBall((int)ItemID);
break;
}
のような・・・
919名前は開発中のものです。:2013/08/08(木) 22:05:02.43 ID:zxVj/kx+
アイテムをクラスで分けるんじゃなくて効果をクラスわけしてアイテムのインスタンスに持たせた方がいいんじゃないの
アイテムの種類で大量にクラスが出来るってのがよくわからん
例えば武器と防具なら装備箇所、上昇するパラメータ、特殊効果等を属性で持っとけばクラス分ける必要なさそうなもんだけど
920名前は開発中のものです。:2013/08/08(木) 22:24:49.52 ID:Fm3aADhX
>>919

>>907にもちょっと指摘されたのですが、
ゲーム全体の武器種類総数が少ない代わりにそれぞれ異なるアクションを持ってたり判定があったりするんです。
ガンダムEXVSの格闘アニメーションみたいな・・・

例を挙げると、ソウルサクリファイスというPSVitaの魔法で戦うゲームがあるのですが、
モンハンの武器みたいにカテゴリ分けできなくて、魔法一種類一種類のモーションや攻撃判定方法自体が違うんです。

そうするとポリモーフィズムを使う前提でクラスを分けて動作を一つ一つ指定して・・・という感じです
921名前は開発中のものです。:2013/08/08(木) 22:53:08.22 ID:zxVj/kx+
>>920
動作を別クラスにして参照持たせたら?
動作毎にIDふっとけば取得は簡単だと思うけど
922名前は開発中のものです。:2013/08/08(木) 22:57:43.26 ID:zxVj/kx+
もしかして動作のパラメータをひとつひとつハードコーディングしてる?
923名前は開発中のものです。:2013/08/08(木) 23:21:58.93 ID:Fm3aADhX
>>921-922
そうですね、銃剣で切りつけた後流れるように打つモーションみたいなのも想定してたので
武器ごとにまとめたほうがいいかなと

武器のクラス分けはどちらにしろ、インベントリで管理する以上
少なからずクラス選別の問題があるので質問したんですけど・・・
924名前は開発中のものです。:2013/08/08(木) 23:32:09.09 ID:zxVj/kx+
いずれにしろ文字列からインスタンス生成しようと思ったら分岐でわけるしかないんじゃないかな
ただクラス数は減らせるんじゃないかと思ったので
925名前は開発中のものです。:2013/08/08(木) 23:42:10.86 ID:Pwk+3XO+
超お勧めしないけどシリアライズって手段もあるな
超オススメしないけど
926名前は開発中のものです。:2013/08/08(木) 23:54:28.56 ID:zxVj/kx+
書くのが面倒なんじゃなくて分岐しまくりでパフォーマンスが気になるってことなら
配列にインスタンス生成する関数ポインタつめて、アイテムIDをその位置のintにしとけばO(1)で生成は出来ると思う

俺なら分岐でやるけど
927名前は開発中のものです。:2013/08/08(木) 23:58:47.47 ID:Fm3aADhX
>>926
行き着くところはその2択ですか、うーん・・・
考えてみます。ありがとうございました。
928名前は開発中のものです。:2013/08/09(金) 11:20:25.40 ID:F76cZhdp
根本的なところに手を付けるとしたら、各アイテムの効能は
本体でなく外部スクリプトに出しちゃうのが一番スッキリするとは思う

でないと速度だけならファクトリ配列とかで何とかなっても
結局その配列生成部分がメンテ必須になっちゃうし
929名前は開発中のものです。:2013/08/09(金) 15:05:58.93 ID:pWI/J6mO
>>925
開発中にその部分の処理が変わってしまい、ロード出来ないとかなw
もちろんシリアライズのやり方にはよるんだろうけど
930名前は開発中のものです。:2013/08/09(金) 16:54:31.97 ID:+z+1iaCH
スクリプト化は時と場所を選ばないと
地獄を見ることになると思う
931名前は開発中のものです。:2013/08/09(金) 17:38:12.95 ID:pWI/J6mO
速度云々は抜きにしても、>926の方法で、
IDと生成関数(ファクトリだっけ?)のセットを登録できる仕組みも用意しておけば
基本クラス弄らずに、アイテムを追加できたりしないかな?

もちろん、どうやって登録するかという問題は残りそうだが…
932名前は開発中のものです。:2013/08/09(金) 23:01:39.25 ID:KNpgLtcN
ゲームの大半をスクリプトで作ってみたい
933名前は開発中のものです。:2013/08/09(金) 23:54:10.74 ID:ZV6T0CEP
SKYRIMとか拡張性超重視して
建物・敵・クエスト・各種テーブル・AI・パラメータいろいろ
全部スクリプトなのかな
934名前は開発中のものです。:2013/08/10(土) 01:27:47.82 ID:iuGss2xM
https://lh3.googleusercontent.com/-wn7exLjQ2C8/TmTIxfxlZfI/AAAAAAAAEqQ/T4pB3TSEbUY/AC6_0905%252520%2525283%252529.jpg
こういうなめらかな煙ってどのようにして表現したらいいですか?

ビルボードの煙オブジェクトを並べてみたのですが
ちょっとミサイルの量が多くなるとめちゃんこ重くなります。

ミサイル一本につき煙オブジェクトを60個に絞って、自分の移動座標に置いていくというのを繰り返してます。
今の段階でミサイルが大体200本ぐらいは飛んでも大丈夫なようにしたいです。(恐らく他にも色々エフェクトを追加していくので)

ミサイルは結構高速で飛ぶので、煙オブジェクトを少々多めにおかないとライン状に見えないので、少なくとも60から300ぐらいに増やしたいです。
935名前は開発中のものです。:2013/08/10(土) 01:28:38.16 ID:iuGss2xM
ビルボード以外で一番軽い処理となるとどのようなものでしょうか?
936名前は開発中のものです。:2013/08/10(土) 03:16:31.18 ID:gRBGSYch
>>935
とりあえずGPU側で処理とか?
CPU側からは計算用の係数だけ渡すとかして。
937名前は開発中のものです。:2013/08/10(土) 03:22:25.33 ID:gRBGSYch
もうちょっと言うと、予めVertexBufferに3*2*自分で決めた最大表示数の煙のセル個数分の座標値とUVは固定、
あとセルの単位で自分で決めた配列番号並べてシェーダに渡しておいて、
通常は毎度必要なだけの係数をUniform変数だけセットして、シェーダで描画させるみたいな方法
アクションゲームのエフェクト処理書くときよくやる俺
938名前は開発中のものです。:2013/08/10(土) 11:12:09.58 ID:iuGss2xM
>>937
プログラマブルシェーダとかいう奴ですか・・・
939名前は開発中のものです。:2013/08/10(土) 11:43:21.21 ID:tX8Va9Is
そもそもビルボードは頂点数が少ないので、処理をGPUにやらせても負荷軽減にはならない。
遅くなっている奴は大概、ビルボードの数だけ描画を行っているのが原因。
頂点バッファを一つにまとめて、描画回数を一回にするだけで解決する。
940名前は開発中のものです。:2013/08/10(土) 11:56:12.17 ID:xk24vJJw
そうとは限らない。
941名前は開発中のものです。:2013/08/10(土) 11:58:39.14 ID:iuGss2xM
描画オブジェクトを1つにまとめるということ??
DXライブラリで入出力持ってるんだけど詰みですか?

↓この関数群しかない
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html
942名前は開発中のものです。:2013/08/10(土) 12:09:15.37 ID:0iZ4TOzQ
とある頂点のインデックス
943名前は開発中のものです。:2013/08/10(土) 12:15:43.76 ID:iuGss2xM
DrawPolygonIndexed3D
こ、これかぁ・・
944名前は開発中のものです。:2013/08/10(土) 12:37:18.70 ID:iuGss2xM
プログラムの中で頂点座標指定したりUV操作したり結構難しくないですか
945名前は開発中のものです。:2013/08/10(土) 20:21:42.86 ID:c/b5aprU
2Dにすればいいじゃない
946名前は開発中のものです。:2013/08/10(土) 21:11:26.45 ID:OMvvrtKg
ジオメトリーインスタンシングが最強
947名前は開発中のものです。:2013/08/11(日) 12:53:42.97 ID:SdAAA50H
>>946
こんなんどこで覚えてくるの
プロ?
948名前は開発中のものです。:2013/08/11(日) 14:06:20.08 ID:WHJvkq3N
DirectXとかOpenGLとか追いかけてれば
自然と入ってくる知識だと思う
949名前は開発中のものです。:2013/08/11(日) 16:11:11.29 ID:9rLdDf+W
ネットでも稀によく取り上げられているし
Direct X SDKのサンプルにもあるしおすし
950名前は開発中のものです。:2013/08/11(日) 16:31:42.87 ID:f9Bx1ZL3
お前らはgemsとか愛読してんの?
アレ高すぎて手が出ないんだけど
951名前は開発中のものです。:2013/08/11(日) 18:32:50.24 ID:bd9d1tW1
今更な感じがしないでもないですが、
ゲーム開発にはC言語とC++は、どちらが適してるプログラミング言語と言えるでしょうか?

俺はこれまでC言語とC++は同じものという考え方をしていたのですが、
よくよく考えると、C言語とC++は別もののプログラミング言語であるように思えました
C++は、C言語にプロジェクト指向を取り入れた言語であることは言うまでもないですが、
オブジェクト(クラス)を使う利点は、ワープロやアプリケーション開発に向いているように思えます
つまり、同じ処理を繰り返す比率が多いからです

そしてC言語は、組み込みシステムと呼ばれるものですので
C++よりもC言語の方がゲーム開発に向いていると思える
組み込みシステムとは、ゲーム機器に組み込まれているハードウェア+ソフトのシステムのことです
952名前は開発中のものです。:2013/08/11(日) 18:37:17.23 ID:9rLdDf+W
何処から突っ込んだらいいの?
953名前は開発中のものです。:2013/08/11(日) 18:46:48.46 ID:bd9d1tW1
全く同じ実行内容のゲーム開発をするとして、
C言語だけで組まれたプログラムと
C++のオブジェクトを使って組まれたプログラムを見比べると
C++の方が遥かにややこしいプログラムのような気がします

クラスを使うためにクラス内でメンバ関数やメンバ変数を使って
publicやらprivateやらを使って定義を構築
メインプログラムからはクラスを使うために
new演算子でインスタンス作成をしてオブジェクトを作成
そして、そのクラスのメンバ変数を呼び出してプログラムを構築する
クラスを使うには、これだけたくさんの工程が必要なのです
C言語だけで組むなら、直接命令を打ち込むだけで済むじゃないですか?

ゲームというのは、コントローラーに付いている僅かなボタンしか使いません
キーボードを使って文字を入力したりもしませんし、
与えられた項目を十字キーで選択して、決定ボタンを押すだけです
そのようなシステムになぜ、C++でなきゃいけないのだろうか?

書店で見かけるゲームプログラミングの本はC言語を使ったのはよく見かけますが
C++で解説しているゲームプログラミングの本が全くないのは、そのためのような気がします。
954名前は開発中のものです。:2013/08/11(日) 18:52:43.55 ID:bd9d1tW1
>>952
すみません
オブジェクト指向の間違いですw

あと、C言語だけを使ったプログラムとは
C++を使うがオブジェクト指向の機能だけ使わないという意味です
つまり、変数の宣言や初期化をプログラムの冒頭でやらなくても済むという
C++の特徴などは使うという意味です
C言語の場合、プログラムの途中で変数を宣言して使うことは出来ませんが、
そういうのは抜きで、あくまでもオブジェクト指向の機能だけ使わないという意味です
955名前は開発中のものです。:2013/08/11(日) 18:56:56.17 ID:zmE+2PHb
ゲームが項目を選んで選択肢を押すだけのゲームだったらいいね
956名前は開発中のものです。:2013/08/11(日) 18:59:10.63 ID:Vkv1rucG
ゲームは一秒間に60回同じ処理繰り返すわけだけど、アプリケーションやワープロの方が同じ処理を繰り返す比率高いの?
957名前は開発中のものです。:2013/08/11(日) 19:00:32.20 ID:Vkv1rucG
ていうかそれ以前に同じ処理繰り返す比率とオブジェクト指向になんの関係があるの?
958名前は開発中のものです。:2013/08/11(日) 19:01:00.91 ID:bd9d1tW1
C言語にも構造体という技術もありますし、
メンバ関数を使わなくても、普通の関数を使って呼び出すことも出来ます
グローバル変数を使えばスコープ外に変数を使うことだってできますし、
グローバル変数でも解放は出来るじゃないですか

そう考えるとC++でゲーム開発をやっていた自分が無駄なように思えてしまいました
なぜ、俺はここまでオブジェクトを使うことに拘ってるのだろう?と・・・
959名前は開発中のものです。:2013/08/11(日) 19:07:09.41 ID:SdAAA50H
オブジェクト指向のほうが個人的にはゲームに向いてると思うよ

ゲームは、ゲーム内のオブジェクトを動かしたりアニメーションさせたりするわけで
それには座標やら向きやら速度がオブジェクトそれぞれに必要なわけで
これらの情報をまとめて持つということに関してオブジェクト指向がプログラマにとって一番わかりやすいはず。

別にプログラマの技術力を無視した視点から見ても
助けてくれるサポートコミュニティが無数にあるフレームワークというか言語のほうがいいんじゃないか
960名前は開発中のものです。:2013/08/11(日) 19:08:03.45 ID:bd9d1tW1
>>956
俺が言ってるのは、クラスを1つ定義しておいて
それをたくさんのオブジェクトでクラスを複製して使うという意味です
オブジェクトの特徴ってそういうことじゃないですか

1本のゲームを作り上げるのに
クラス化にすることがそれほど必要なことなのでしょうか?
シューティングなら主人公の構造体と敵の構造体を別々に個々に用意してもいいような気がします
961名前は開発中のものです。:2013/08/11(日) 19:09:15.30 ID:SdAAA50H
一度処理を書き込んでしまえば外部のループから頭スッカラカンにして呼び出すだけでいい
っていうのが楽で素晴らしいと思う
962名前は開発中のものです。:2013/08/11(日) 19:09:51.35 ID:Vkv1rucG
>>958
その気づきは大切なことだからいいと思うけど
まずオブジェクト指向の利点について勉強した方がいいんじゃないの?

ちなみにC++のコードはCのコードに完全に置き換えることも出来るよ
ついでにObjective-Cも
963名前は開発中のものです。:2013/08/11(日) 19:13:06.03 ID:zmE+2PHb
グローバル変数を使えばできる

C++なら使わなくてもできる。素晴らしいじゃないか
964名前は開発中のものです。:2013/08/11(日) 19:14:45.62 ID:bd9d1tW1
>>959
まあ、俺が単にオブジェクトが苦手ということもありますが、
助言ありがとうございます
965名前は開発中のものです。:2013/08/11(日) 19:18:00.04 ID:SdAAA50H
DirectX学ぶにはどうしたらいいですか?
猿でもわかるようなのがいいです。

デバイスの宣言とか頂点バッファ?とか、
C++初級者でもシェーダプログラミングとかまでこれ一冊!
って感じの本無いですか?
贅沢を言えばGPUに処理投げられたり?するとか、そこら辺の基礎知識も一緒に学べるようなもので、
ゲーム開発を意識した本が良いです。

ベクトルや行列の基礎知識はあります。
予算は5000円付近で

やっぱりDirectXの前提知識が無いのでわかりやすいのがいいです。
966名前は開発中のものです。:2013/08/11(日) 19:20:27.55 ID:MBCHmrub
なんか、アホな会話がされているようだが、俺もアホだから興味深い話だw

俺はオブジェクト指向がどうも理解できなくて、グローバル変数や構造体でゲーム作ってる
ヘボプログラマだから、クラスだのなんだのがゲーム製作に有用なんだったら
どこがどう有用なのか知りたいと常々思ってる。

けど、解説とか「だからそれがゲームにどう関係あるんだよ」みたいなのしかなくて
どうにも身につかないんだ。
967名前は開発中のものです。:2013/08/11(日) 19:24:53.77 ID:VypAcln1
ヒント:フレームワーク
968名前は開発中のものです。:2013/08/11(日) 19:27:10.04 ID:bd9d1tW1
あ、俺は職業ゲームプログラマーというわけではありません
ただの趣味でゲーム開発を楽しんでいるだけです
最初はC言語だけでゲーム開発をやっていたのだけど、
途中でC++というのを知って
オブジェクトに手を出してみたのですが、それが意外と難しくてつまずいて
そこで、なぜ、俺はこんなややこしいオブジェクトを使ってるんだ?ウガー!
となってるだけですw

オブジェクトにつまづいたことへの愚痴のようなものです
969名前は開発中のものです。:2013/08/11(日) 19:27:41.25 ID:SdAAA50H
>>964
ちょっとわかりづらくなるかもしれない例えになるんだけど

C言語の構造体だと、例えば敵とキャラクターの接触が起きた時に
それぞれの構造体データに対して、
「おいお前、敵とぶつかったから一旦座標戻すからな、あとHPからダメージ分引いとくから、あとダメージ受けた時のリアクションにしとく」
という処理を施すんだけど
クラスというオブジェクト指向を持って、クラスに対して「振る舞い」を予め処理しておくと
「おいお前、この敵とぶつかったから」
という処理で終わる。

他にも色々あるけど、つまりその処理が何をしているのかわかりやすくなって、今どんな処理がされているのかわかりやすくなる
→デバッグしやすいし、多人数で作業分担しやすい、予期しないデータ改変が行われない

というメリットがある
でもオブジェクト指向が苦手なら苦手で、別にC言語で作ってもいいんじゃないかね
作れないわけではないから
970名前は開発中のものです。:2013/08/11(日) 19:30:34.65 ID:SdAAA50H
日本語が変でした

これお願いします>>965
971名前は開発中のものです。:2013/08/11(日) 19:33:41.23 ID:bd9d1tW1
誰かC言語ではなくC++を使ったゲームプログラミングの本を執筆してくれる人いないかな?
俺が手にしているゲームプログラミングの本は、全てC言語ばかりです
それをC++のオブジェクトの置き換えるために、
C++の本を買いあさってオブジェクト指向に構築し直しているのだが、
それがうまくいかない・・・

俺が持ってるゲームプログラミングの本は、全てC言語ばかりですので
本当にお手上げ状態です
今は、オブジェクトを理解するために、ゲーム開発を一時中断して
仕方がなくJavaを学んでいるところです
972名前は開発中のものです。:2013/08/11(日) 19:40:03.43 ID:bd9d1tW1
>>969
ありがとうございます
言ってる意味が、分かりそうで解からないという
モヤモヤした状態ですが、
なんとなく「オブジェクトが便利」ということだけは伝わりました

もう少し大人しくオブジェクトを学んでみることにします
973名前は開発中のものです。:2013/08/11(日) 19:45:26.61 ID:zmE+2PHb
明確にコードがこう変わる!っていういい例があった

ttp://dixq.net/g/
ここの「メニュー画面の作り方」を読むんだ
1,2,3とC++編の違いがわかると大きい
974名前は開発中のものです。:2013/08/11(日) 19:58:55.55 ID:bd9d1tW1
>>973
ありがとうございます。
そのサイトでしたら、C++以外の
C言語でDXライブラリを扱う解説は一通り読みました
サンプルコードを打ち込んで実行結果を確認して
すべて上手く行ったのでC言語でのゲーム開発については自信がつきました

あとは、それを自分が開発するゲームに置き換えてプログラミングをすれば
C言語によるゲーム開発のゴールも見えていたのですが、
俺の場合、途中でC++のオブジェクトに手を出してしまったのでドツボにはまってしまった
つまり、完成するはずのゲームは完成しない

>>969
>でもオブジェクト指向が苦手なら苦手で、別にC言語で作ってもいいんじゃないかね
でも、いいです。
せっかくオブジェクトに触れたので、オブジェクトを身に着けてみせます
ありがとうございました
975名前は開発中のものです。:2013/08/11(日) 20:14:20.06 ID:zmE+2PHb
Cを読んでうまく行って自信がついてC++に手を出してわからなくなった
じゃあそのサイトのC++を読めばいいじゃない
976名前は開発中のものです。:2013/08/11(日) 20:49:11.24 ID:Vkv1rucG
>>960を見た感じだとクラスとただのデータ構造の違いがわかってないみたいだし、ポリモーフィズムに関する理解が薄いんだと思う
確かゲームつくろーにデザインパターンのゲームへの応用みたいなのあった気がするから
それ見たら少しは理解が深まるんじゃないかな

あと純粋にC++覚えたいってんじゃなかったらCでやっちまえばいいと俺も思います
977名前は開発中のものです。:2013/08/11(日) 21:26:19.14 ID:bd9d1tW1
>>975
メニュー画面だけ解説されてもね
どうせなら、全部C++で解説してほしい
というか、そのサイトのC++以外のC言語を使った解説は丁寧でわかりやすかったけど
C++だけ、いきなり過ぎて最初は意味がわかりませんでした

>>976
C++のオブジェクトの扱い方については、なんとなく理解しています
メインプログラムでクラスを呼び出してオブジェクトを作成する
new演算子を使うとクラスのコンストラクタを読みに行って
まずは初期化が行われる

クラス内で扱う変数は、同じクラス内のメンバ変数から扱うことになり、
メインプログラムからは、
「オブジェクト、クラス、メンバ変数(引数)」という形式で組み
ここに書いた引数は、クラス内のメンバ変数に移されて
メンバ関数内で処理で実行結果を映す

という、一連のオブジェクトの流れまでは理解できたが、
かなりややこしい
978名前は開発中のものです。:2013/08/11(日) 21:39:28.95 ID:bd9d1tW1
俺はC++のオブジェクトを独学で学んだ後に、
Javaのオブジェクトを独学で学んでみたのですが
Javaのオブジェクトの方が遥かに楽ですね

C++のようにhファイルでクラス宣言とかしなくていいでしょ?
メインプログラムもJavaファイルですし
クラスも同じJavaファイル
そして公開クラスはJavaファイルに1つしか組めないというルールも分かり易い

今はJavaのオブジェクトをC++のオブジェクトに置き換えて考えてみようとしたのですが、
やっぱC++のオブジェクトは面倒で、すっごくややこしいですね・・・
Javaのオブジェクトが分かりやすいのは、
Javaはすべてクラスだからです。クラスだけでプログラムを組むからです
979名前は開発中のものです。:2013/08/11(日) 21:41:48.62 ID:Vkv1rucG
>>977
でもオブジェクトがただの構造体と比べてどう便利なのかわかんないんでしょ?
文法や仕組みだけわかっても概念や考え方わからないと役に立たないよ
GoFのデザインパターンはオブジェクト指向のかなりメジャーなベストプラクティスだから
それが理解できればオブジェクト指向のメリットも理解できると思うよ

念のために言っておくけどベストプラクティスは「成功例」であって「正解」ではないからそこは忘れずに
980名前は開発中のものです。:2013/08/11(日) 21:46:22.72 ID:Vkv1rucG
>>978
JAVAはオブジェクト指向言語だけどC++はオブジェクト指向「も出来る」言語だから
いろんなプログラミングパラダイムを持つのがC++の特徴

ぶっちゃけ人によってスタイルちがうからメンドイ
981名前は開発中のものです。:2013/08/11(日) 21:55:41.72 ID:IbgpLycy
>>978
??C++でもこーゆー書き方は出来るよ?
class CMutex
{
HANDLE m_hMutex;
public:
CMutex(void){m_hMutex=CreateMutex(NULL,FALSE,NULL);}
virtual ~CMutex(void){CloseHandle(m_hMutex);}
DWORD Wait(DWORD dwMsec=INFINITE){return WaitForSingleObject(m_hMutex,dwMsec);}
void Release(void){ReleaseMutex(m_hMutex);}
};

class CEvent
{
HANDLE m_hEvent;
public:
CEvent(void){m_hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);}
virtual ~CEvent(void){CloseHandle(m_hEvent);}
DWORD Wait(DWORD dwMsec=INFINITE){return WaitForSingleObject(m_hEvent,dwMsec);}
HANDLE GetHandle(){return m_hEvent;}
void Set(void){SetEvent(m_hEvent);};
void Reset(void){ResetEvent(m_hEvent);};
};
982名前は開発中のものです。:2013/08/11(日) 22:20:42.72 ID:JtNwXkxd
ポリモーフィズムが便利だよなあ
敵のオブジェクトをリストに突っ込んでおいて
イテレータで回しながら順に敵の処理を実行するとか
C言語だとどうやるんだろ
983名前は開発中のものです。:2013/08/11(日) 22:29:07.69 ID:dZz1JD3L
よし。じゃあ、新たにJava版のゲームプログラミングの解説サイトでも作ることにしよう。
開く
JET++ &#8207;@JET_JAPAN 8月3日

とにかく約2週間も暇になってしまうので、先にJava学習を始めてみることにしよう。
どうせ職業訓練で学ぶJavaはシステム系のプログラミングになると思うので、
こっちはJavaを使ったゲームプログラミングを学んでいくことにしよう。
開く
JET++ &#8207;@JET_JAPAN 8月3日

今日が8月3日ですから、約2週間も暇になる。あ、明日は日曜日で
ハローワークはやってないんだった。なので、ハローワークは来週の月曜日の
8月5日に行くことにしよう。
開く
JET++ &#8207;@JET_JAPAN 8月3日
984名前は開発中のものです。:2013/08/11(日) 22:31:48.83 ID:bd9d1tW1
>>979
いや、さすがにそれぐらいは解かる
構造体は変数しか扱えない
クラスは変数と関数が使える
Javaの場合は、フィールドと変数とメソッドだけど

メインプログラムでクラスを呼び出してオブジェクトを作り、
そのオブジェクトでメンバ関数に引数を渡せば
クラスの中で、別のメンバ変数なども動かして、様々な部品を作ることができる
あとは、そのオブジェクトのメンバ変数を呼び出せば答えを返すことが出来るし
メンバ関数を呼び出せば、その関数のreturnの値を呼び出すことも可能
985名前は開発中のものです。:2013/08/11(日) 22:42:10.39 ID:JtNwXkxd
構造体に関数を追加したのがクラスっていう認識なんだろうなあ
継承とか、ポリモーフィズム、デザインパターンあたりを
キーワードに勉強するといいと思うよ
986名前は開発中のものです。:2013/08/11(日) 22:47:03.14 ID:bd9d1tW1
>>981
うん。
C++のクラスでも、そうやって宣言も定義に含めることもできますが、
そういうことじゃないんですよね
C++のオブジェクトがJavaのオブジェクトよりややこしいというのは・・・

俺は最初にC++を使ったオブジェクトをプログラムを組んで学んでから
Javaに触れてみると、
いきなり「え?」と思ったよ
だって、いきなりクラスの中にプログラムを組んでいくのだし

だが、Javaを使ってみると、意外と分かり易かったです
コードの組み方がC言語と同じだったので
先にC言語を学んでおいてよかったと思いましたね
987名前は開発中のものです。:2013/08/11(日) 22:47:27.83 ID:Vkv1rucG
>>985
まあ最初はみんなそんなもんでしょ、実装上は間違いってわけでもないし
その理解だと設計が手続き型の延長にしかならんからメリットが見えないけど
988名前は開発中のものです。:2013/08/11(日) 22:53:11.68 ID:bd9d1tW1
>>985
継承あたりまでは学びました
継承は確かに便利ですね
いくらでもスーパークラスを受け継がせたサブクラスが作れますからね

俺はこの継承という技術は好きです
前にRuby1.9のプログラムを学んだことがあったのですが、
あれは継承の連続でしたね
無数にあるクラスを一つ一つ辿っていくと
全てのクラスが1つのスーパークラスの上(下?)で、動いているのを知った時は
面白い技術だなと思いましたね

ポリモーフィズム、デザインパターンは、まだ知りません
989名前は開発中のものです。:2013/08/11(日) 23:07:30.73 ID:bd9d1tW1
あ、俺が見たRuby1.9のプログラムは、
RPGツクールVX Aceに入ってた
Rubyスクリプトプログラムのことです
990名前は開発中のものです。:2013/08/11(日) 23:40:08.00 ID:Vkv1rucG
>>988
ならポリモーフィズム学んでからまた考えればいいんじゃない
それでもCでいいと思うならそれはそれでいいと思うけど

ぶっちゃけオブジェクト指向の大きな利点は再利用性とかメンテナンス性だから
一人でやっててメリット見えないってのはありえるし
991名前は開発中のものです。:2013/08/11(日) 23:44:37.53 ID:0QKgFJUt
個人的にはソースを見るのが一番解りやすいな
クラスの扱いは別にC++に限らないから他言語でもいい

市販ゲームではDOOM3とかソース公開しているから見てみるといいかもね
992名前は開発中のものです。:2013/08/12(月) 05:49:59.47 ID:3AMeZIoC
>>965
DirectX は初心者スレがどっかにあったと思うから探してみるといいと思う
そこで質問したほうがいい答えを得れると思うよ

あと, 本だけじゃなくてネットで初心者サイトを探してみるとか
実際に DirectX で簡単なプログラム組んでみるとか
読みにくいけど, MSDN の DirectX のページを読んでみるのもおすすめ
993名前は開発中のものです。:2013/08/12(月) 07:51:54.41 ID:LeEBEVqd
誰か次スレ頼む
994名前は開発中のものです。:2013/08/12(月) 08:08:10.18 ID:RPqvnGkC
995名前は開発中のものです。:2013/08/12(月) 15:29:01.59 ID:KCZ2Ym+/
ポリモーフィズムで自機と敵機を一緒にして管理してるんですけど
プレイヤーが見るUIを描画する際にどこに処理を置いたほうがいいですか?

自機をインスタンス化する時に、UIクラスなどを作っておいてそこに登録させるのか
もしくは予め自機敵機のスーパークラスにUIを描画する機能を作っておいて、
描画するときには、線形探索じゃないですけどループ回して、自機だったら描画、敵機だったら描画しない、という判断をするのか

どっちのほうがわかりやすいですか?
996名前は開発中のものです。:2013/08/12(月) 15:50:02.49 ID:zkFlUNMe
プレイヤーが見るUIってなんじゃらほい
997名前は開発中のものです。:2013/08/12(月) 15:50:51.79 ID:9jLpDglR
前者でいいんじゃない
特定のサブクラスしか使わないメソッドを親に持たせるとクラスのスコープが曖昧になるし

ちなみにUIってのはHUDの事でいいんかな
998名前は開発中のものです。:2013/08/13(火) 06:47:48.07 ID:Or7GDV3w
Win8だとUSBがドライバまともにインストールできんの、直ったんかね
999名前は開発中のものです。:2013/08/13(火) 12:19:45.55 ID:H6Z86S80
もう少し人に伝わる文章を書く努力をしろ
1000名前は開発中のものです。:2013/08/13(火) 17:35:18.87 ID:VOEExxCW
埋め
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。