トップページgamedev
994コメント383KB

【初心者】スレを立てる前にココで質問を【Part21】

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2010/04/02(金) 00:21:35ID:zsqivwcw
疑問に思うことがあれば、スレを立てずに、まずはココで質問。
スレッドを立てる前にはローカルルールを読みましょう。
http://pc11.2ch.net/gamedev/

>>980 を踏んだ人は次スレ立てをお願いします。
【アップローダ・避難所・Wiki】
ゲーム製作技術板公式Wiki
http://wiki.game-develop.com/

ゲーム製作技術板公式アップローダ
http://gmdev.xrea.jp/

ゲーム製作技術板予備(機能停止中?)
http://yy13.kakiko.com/gamdev/

アップローダー予備
http://gamdev.hp.infoseek.co.jp/

gamdev.orgが落ちるたびにあげてみるスレ
http://pc11.2ch.net/test/read.cgi/gamedev/1107022166/
0074名前は開発中のものです。2010/04/23(金) 17:44:36ID:mKYVAr1j
とりあえず困らないのは640x480か800x600
0075名前は開発中のものです。2010/04/23(金) 18:05:51ID:3PqSuJIq
>>73
ゲームの内容次第、内容が不明なゲームでは答えようも無い
すごく横に長細いウインドウのゲームをやったことがあったが
内容に合っていたのでまったく困らなかった
640x480でも縦STGとかだと何で最初から縦長の画面で作らんのだろう?
と思うこともある


だから自分のゲームデザインに適してると自分が思う仕様で作りなさい
0076名前は開発中のものです。2010/04/23(金) 21:30:55ID:GvbKseDL
メニュー画面やタイトル画面を作るときの要素(タイトル画像や選択項目など)の
アニメーションや配置座標情報を設定するのにみなさんはどんなツールを使っていますか?
もしくはハードコーディングだったり、自作ツールを作っていたりするんでしょうか?
0077名前は開発中のものです。2010/04/24(土) 01:44:45ID:HU8kE9y3
縦STGで縦長の画面にしないのはフルスクリーン用では
縦長の画面でなくとも画面の使い方で縦長に出来るし
0078名前は開発中のものです。2010/04/24(土) 07:55:27ID:drnPL57D
必ずそういう事言う奴が居るがワイド画面にきちっと対応していないのとかも意外に多く
Windowで合わせて貰える方が無難だ、そうなると4:3画面で作られる縦STGは本当に邪魔くさい
0079名前は開発中のものです。2010/04/24(土) 11:10:37ID:tcsda+Vh
ワイド画面云々は、モニタの設定じゃねーの?
0080名前は開発中のものです。2010/04/24(土) 13:21:24ID:p+ZvCADD
4:3の画面モードを正しいアスペクト比で表示してくれない
ワイドディスプレイのPC環境が少なくないんで、仕方なく
アプリ側で何かしら対処することはあるのね

16:10や16:9のLCDの表示容量(ネイティブ解像度)を取得して
それに合わせて画面モード設定して左右に枠(黒or絵柄)を
描いたり。dot-by-dotにも対応するときは上下左右に描くのね

で、ウィンドウモードで遊んでください、で済むならそれが一番ラクね
0081名前は開発中のものです。2010/04/24(土) 13:47:23ID:d/r4hXs0
自分は常に固定のアスペクト比のテクスチャにシーンをレンダリングして、
それを最後に画面全体サイズのバックバッファにアス比固定でStretchRect転送してるよ。
これで画面サイズがどうあれ、正しいアス比で固定される。
0082名前は開発中のものです。2010/04/24(土) 14:34:30ID:drnPL57D
>>79
そういう問題じゃないから

>>80-81
今のPCはながらゲームでもそこらのフリゲなら重くならんくらいの性能があるものが大部分だし
モニタも昔より大きくワイド使ってる奴も多い
だからウィンドウモードで遊んでくださいって言わなくてもだいたいがウィンドウモードだよ

ちゃんと対応してくれるに越したことはないけど、ウィンドウモードで遊びやすく設計されてれば
大きな問題はない、立ち上がるとき勝手にフルスクリーンになるのさえ迷惑だったりする
0083812010/04/24(土) 14:53:33ID:d/r4hXs0
>>82
もちろん、ユーザーがフルスクリーンと設定したときの挙動の話ね。
ウィンドウモードのときは楽チンだよねw
0084名前は開発中のものです。2010/04/24(土) 17:13:13ID:drnPL57D
あとフルスクリーンでやらざるを得ないくらい小さいのは嫌だな
640*480の横長画面の両脇に残機やスコアなどのデータ表示スペース設けて
中心に立てSTG
組み込んだような奴はサイズ的に微妙800*600くらいならウインドウでも十分だけど
ちゃんと対応してないとワイド画面でアス比が狂うし、そのままだとちょっと見づらい構成だと
まともに楽しめないからな
0085名前は開発中のものです。2010/04/24(土) 17:19:02ID:U7wZT1tX
320×240の場合はフルスクリーンでも仕方が無いかな?とか思う。
ウィンドゥモードでは小さすぎるから。
0086名前は開発中のものです。2010/04/24(土) 17:24:34ID:drnPL57D
320×240なら2倍拡大で640*480でウインドウ表示できるようにして欲しいな
今時320×240でわざわざ作るなんて、逆に小さいことで何かを狙ってるゲームじゃないか?
それにそんな粗い画像のゲームをフルスクリーンにしても嬉しくないし
さらにフルスクリーン時にワイドモニタでアス比が狂うようなら目も当てられん
0087名前は開発中のものです。2010/04/24(土) 20:45:57ID:9G78iIee
>>86
320*240はツクールではよくある気がする。
0088名前は開発中のものです。2010/04/25(日) 08:45:08ID:R/l487cB
ツクールは544x416だろあれでもやや小さいけどさ
0089名前は開発中のものです。2010/04/25(日) 17:20:38ID:UDXAoPVs
640x480などのゲーム画面をフルスクリーンにしたときにアス比がおかしくなるってのは
モニタの設定で切り替えるのって普通じゃないの?

もしかして 俺がおかしい?
安物にゃ付いてないよ、って意見なら分かるが。

0090名前は開発中のものです。2010/04/25(日) 19:20:20ID:R/l487cB
ゲームのたびにモニタの設定変えるのか?

4:3モニタでフルスクリーン時にアス比が狂うのは自分のせいだが
ゲームの仕様でフルスクリーンにすると4:3のゲームが16:9に歪むのがあるんだよ

あとできるだけフルスクリーンではやりたくないし
今時フルスクリーンでやる奴少ないだろ
0091名前は開発中のものです。2010/04/25(日) 19:27:19ID:1OfKigkp
当たり判定の関数を作るに当たって、Collision(CharaData *a CharaData *b){}という風なものにし、この引数に、他のクラスからの構造体の
配列のアドレスを返す関数を作りたいんですがどうすればいいでしょうか。
Collision(&JikiShot,&Enemy){}だと、一発、一匹のときは出来たのですが、これを、複数行うにはどうすればいいのかわかりません。
CharaData JikiShot[256];
CharaData Enemy[512];
Collision(&JikiShot[i],&Enemy[j]){}//このような感じで行いたいのですが。
&JikiShot[i]などを、返値で返す関数の作り方もわかりません。
よろしくお願いします。

0092名前は開発中のものです。2010/04/25(日) 23:05:21ID:77HGVGIT
最近ノート型 PC の解像度が上がってきていて、ロースペックでも 1366x768 くらいが標準になってきている。
これに収まる 4:3 または 16:9 で大きいものにしないと、フル HD 対応モニタだとフルスクリーンにするしかなくなるほど小さくなってしまうだろうな。
0093名前は開発中のものです。2010/04/25(日) 23:21:43ID:9JIqTsJC
>>91
ポインタについてもうちょっと勉強しようぜ
0094名前は開発中のものです。2010/04/26(月) 00:04:05ID:VSz0FUYx
さっぱりわかんないけどさ、
質問の最後に「よろしくお願いします」って付けるのはYahoo知恵袋だけだから
2chで使うと嫌われるから次から注意してね。
0095名前は開発中のものです。2010/04/26(月) 00:51:26ID:re+thrRA
知恵もないのにそういう事だけいうなんてどうしようもない奴だな
お前何様だよ。
答えられるようになってからそういう事いえよ カス
0096名前は開発中のものです。2010/04/26(月) 01:05:13ID:LdHY1oAb
>>90
4:3の解像度で出力すると、自動的に左右にレターボックス表示して
アスペクト比が狂わないようにしてくれるモニタも多いよ。

あと、最近の高解像度モニタだと、インチ数によっては640x480は小さいと感じるかもしれないなあ。
最初から解像度を落とせばいいんだろうけど。


>>94
どこの常識だよw

2chだと、多少くだけた口調で質問してもそんなに問題ないとか、
別所だとネットスラングでの質問はマナー違反だとかはあるかもしれんけど、
2chで丁寧口調がダメということは無いっしょ。
0097名前は開発中のものです。2010/04/26(月) 06:23:18ID:PBgQ/EBC
>>91
http://www.geocities.jp/KY_webid/c/030.html
ポインタの扱いについてはこの辺を見れば分かるかと。

>一発、一匹のときは出来たのですが、これを、複数行うにはどうすればいいのかわかりません。
forループで処理させるのではダメ?

for(int i = 0; i < 256; i++)
{
 for(int j = 0; j < 512; j++)
 {
  Collision(&JikiShot[i], &Enemy[j]);
 }
}
0098名前は開発中のものです。2010/04/26(月) 12:06:54ID:gcCDVLcC
DSのhomebrew開発スレが見当たらないのですが、落ちたんでしょうか。
それとも任天d
0099名前は開発中のものです。2010/04/27(火) 00:48:47ID:y5cH/Uon
久々に3Dったら頭が混乱してきました。

球を y>=a(定数)でカットした半球的なものと平面の埋まりの検出ですが

if 半球と平面の距離d <= r(球の半径)

  if d.y(dのy成分) >= a
  {
    埋まり確定!
  }
  else
  {
    平面上の y=a となる直線 L を考えて
    if 半球とLの距離 <= r
    {
      埋まり確定!
    }
    else
    {
      埋まってない!
    }
  }

else
{ 埋まってない! }

で問題ないですかね?もしくはもっといい方法教えて
0100名前は開発中のものです。2010/04/27(火) 11:11:08ID:YQQlekKQ
ttp://javagame.skr.jp/index.php?%A5%D6%A5%ED%A5%C3%A5%AF%A4%C8%A4%CE%BE%D7%C6%CD

ここのブロックと自機の衝突部分をC++でやるとしたらどんな感じになるんでしょう?
0101名前は開発中のものです。2010/04/27(火) 11:25:52ID:KjDVWDVP
>>99
そのまま日本語で説明されてるじゃない。
0102名前は開発中のものです。2010/04/27(火) 11:29:05ID:DSxZYWnI
>>100
ロジックそのままで良いんですけど…
もしかしてソースコードをきいてんの?


0103名前は開発中のものです。2010/04/27(火) 11:41:37ID:rLh640PO
>>100
ソースコード見てみたけどほとんどそのまま移植できるよ。
0104名前は開発中のものです。2010/04/27(火) 11:48:15ID:YQQlekKQ
>Point tile = map.getTileCollision(this, newX, y);

この部分はどうなるんでしょうか?
0105名前は開発中のものです。2010/04/27(火) 12:32:58ID:7SlZhUcN
それくらい自分で考えろ
0106名前は開発中のものです。2010/04/27(火) 12:33:10ID:tY0CYfCK
>>104
えっ?
Pointクラスを作ってないとか?
getTileCollisionの方?実装はそのページの下で説明してるやん?
なんかの本のコードまんまコピペしたって。
0107名前は開発中のものです。2010/04/27(火) 12:39:32ID:rLh640PO
>>104
Point *tile = map->getTileCollision(this, newX, y);
0108名前は開発中のものです。2010/04/27(火) 12:47:14ID:YQQlekKQ
ありがとうございます
0109名前は開発中のものです。2010/04/27(火) 14:24:37ID:tY0CYfCK
何が分かって、何が分からなかったんだろう…

スルーされてる >>76 が俺も気になるんだが。
俺の場合座標とかハードコーディングなんだけど、みんなどうしてんだろね。
0110名前は開発中のものです。2010/04/27(火) 14:59:43ID:+9zKjY27
ゲーム会社勤務のPGさんの話だけど
その当時、FLASHか何かで作ったメニューを読み込めるようなシステムを開発してたらしい
0111名前は開発中のものです。2010/04/27(火) 15:44:05ID:rLh640PO
今はUIをFlashで作成できるScaleformGfxっていうミドルウェアがあるよ。
ゲーム会社だと何かしらのUI作成ツールを使ってるところが多いと思う。
でも個人制作だとそこまで手間もお金も掛けられないし、ほとんどがハードコーティングじゃないかな。
そういうフリーのツールがあればいいんだけど・・・
0112名前は開発中のものです。2010/04/27(火) 16:26:10ID:DSxZYWnI
Flex使えば基本的なUI作るの難しくないと思うんだけど・・・・
画像をカスタマイズし始めると面倒だけど。
0113652010/04/30(金) 07:12:03ID:6IWWdbeh
>>68
操作キャラが当たっている地面を求めたいのですがうまくいきません・・・

for(i=0;i<MAP_H;i++){
for(j=0;j<MAP_W;j++){
if(MapData[(int)(playerY)/MAP_SIZE][(int)(playerX)/MAP_SIZE]==1){
   ・・・
この判定でプレイヤーの足元が地面なら
playerY=(mapi*MAP_S);
と、当たっている地面上部分の座標をplayerYに入れてやりたいのですが
どこの地面に当たっているか調べるのにいい方法はないでしょうか
0114名前は開発中のものです。2010/04/30(金) 07:43:35ID:6IWWdbeh
playerY=(i*MAP_SIZE);
でした。
0115名前は開発中のものです。2010/04/30(金) 07:50:45ID:SoO+SnLu
>>113
>if(MapData[(int)(playerY)/MAP_SIZE][(int)(playerX)/MAP_SIZE]==1){
この条件文がどこの地面に当たっているかを調べてるんじゃないの?
0116名前は開発中のものです。2010/04/30(金) 08:13:35ID:6IWWdbeh
>>115
足元が1かどうか(地面かどうか)だけ調べてると思うので
どこの地面なのかは分からない、気がします
0117名前は開発中のものです。2010/04/30(金) 08:25:20ID:SoO+SnLu
>>116
>足元が1かどうか(地面かどうか)だけ調べてる
ということは足元がどこの地面か分かっているということでしょ?
つまり「MapData[(int)(playerY)/MAP_SIZE][(int)(playerX)/MAP_SIZE]=当たっている地面」だと思われるけど。
0118名前は開発中のものです。2010/05/02(日) 13:03:36ID:qwH1pwxC
Windowsでやってて,
assertにかかったときにエラーウィンドウで
例外参照知らされると思うんだけど,
単にVCデバッガでブレークするだけにできない?

いちいち再試行おすのがめんどい&
間違って中止おしてバグ再現しなきゃいけなくなるのが辛い.
0119名前は開発中のものです。2010/05/02(日) 14:39:29ID:e37jMZuS
__asm { int 3 }
0120名前は開発中のものです。2010/05/02(日) 15:31:30ID:GNNinoD1
カプセル化で質問です
ステータス画面などを表示したいときも
HPやMPを見るためだけのメソッドを用意した方がいいんですか?
0121名前は開発中のものです。2010/05/02(日) 15:34:13ID:qwH1pwxC
場合による
0122名前は開発中のものです。2010/05/02(日) 15:38:11ID:GNNinoD1
その場合がわかりません><
参考になるサイトとかありますか?
なさそうならとりあえず勉強と思って全部作ってみますが
0123名前は開発中のものです。2010/05/02(日) 15:44:47ID:bkckDMgJ
HPやMPならステータス画面のレイアウトで何桁まで表示するか決めてるはず。
そういう場合ならメソッド作って、何桁以上ならカンストするとか、表示するときだけその桁数に合わせたらいいんじゃね?
わからなかったらとりあえず作っておけ。後で変えるときに楽だ。
0124名前は開発中のものです。2010/05/02(日) 15:59:03ID:xnYPH8Bt
例えば宇宙空間にいるときはHP/MPを一律3分の一にしたいなんてときに
ゲッタの中で3分の一にしておけばそれで十分なわけだ。
0125名前は開発中のものです。2010/05/02(日) 16:23:06ID:Z7PNMhjm
ゲッタwww

やれやれ、文明の地にJava原人が紛れ込んだようだ。
0126名前は開発中のものです。2010/05/02(日) 16:37:37ID:xnYPH8Bt
setter/getterってjava限定の用語だったんだ知らなかった
0127名前は開発中のものです。2010/05/02(日) 16:50:10ID:J6RVu3x/
こんな未開の地で言語民族が争うんじゃない
0128名前は開発中のものです。2010/05/02(日) 21:08:36ID:Fty9ttWn
>>126
日記だが、

昔クラスタの講習を受けたときにアクセサメソッドが出てきてJava特有のもんだと思ってたよ
結局その件はぽしゃったんだが、何故か時代遅れのActiveXをVCで作ることになったとき
JavaScript側からのアクセス方法として出てきて懐かしくなった
0129名前は開発中のものです。2010/05/03(月) 05:52:16ID:0wSce+Dq
>>122
とりあえず>>120のパターンだとアクセサは用意しておいた方が良さそう。
あとは「カプセル化」でググって下さい。
0130名前は開発中のものです。2010/05/05(水) 17:38:37ID:ct+h51hJ
>>125が一番恥ずかしいということでよろしいか
0131名前は開発中のものです。2010/05/10(月) 19:00:51ID:gdJFfJNK
俺の知ってるHSPスレが悉く落ちているんだが、新スレとか立てたら来てくれる人いるんだろうか。
それとも派生スレを再利用した方がいいんだろうか。
0132 [―{}@{}@{}-] 名前は開発中のものです。2010/05/10(月) 21:30:38ID:fxUBI2Ko
立て逃げ宣言か。HSP厨はいくつになっても厨房だな
どうせ止めても立てるんだろうから好きにしなよ禿げ

ゲ製板の本スレ
★ゲーム製作期待の星! HSP Part 9 ★
http://pc11.2ch.net/test/read.cgi/gamedev/1005313791/
3Dスレ
【HSP】HSPで3Dゲーム 4 【3D】
http://pc11.2ch.net/test/read.cgi/gamedev/1229142015/

あとム板に質問スレと駄目です犯罪ですスレがあったな
0133名前は開発中のものです。2010/05/10(月) 23:18:05ID:gdJFfJNK
>132
トン。そこが本スレになっているのか。
パート16までは確認してたが、そんなスレがあったのぜんぜん知らんかった。
そっちで聞くようにしてみるよ。
0134名前は開発中のものです。2010/05/11(火) 17:11:43ID:QbQcF3AV
2Dスクロールアクション作っててジョイパッドにも対応することにしたんだけど
検証用にどの製品が良いのか分からないのでアドバイス下さい。
今までPCゲームほとんどやってなくて、
自分で調べた限りで検討してるのは、BSGP801GY(SFC風)です。
安くて(今作ってるゲーム以外では使わない)そこそこ評判が良さげで、
イベント展示用に持っていく時もかさばらなさそうだという理由。

ちなみに十字キー+通常4ボタン+スタート+セレクトを使用、約60FPS。
スーマリくらいの操作性でそんなシビアではないけど、キーの取りこぼしは避けたいです。

心配してるのは、一般プレイヤーはPS2風のコントローラーの方が好きなのか?
もしPS2風の方が多い場合、自分がBSGP801GYで動作検証しても
他のプレイヤーのコントローラーで使えなかったりするのか?といったことです。
ただし今のとこ、プログラム上ではjoyGetPosEx関数でキー番号1〜12を取得して
自由にコンフィグ入れ替え可能なまでにはしてあって、実機がないからテストはしてない状態です。
0135名前は開発中のものです。2010/05/11(火) 17:58:42ID:1jprUcQI
>>134
基本的にそのアクションゲームが
十字キーと十字キーと同じ面に付いているトリガー1〜4のみを使うゲームなら
ほとんどのパッドで問題はないと思う

スタート&セレクトに関してはパッドのよって割り当てが違うので要注意
自分が持っているものでもその部分にハットスイッチがあったり
連射切り替えボタンがあるようなモノもいくつもある
PS形状のLR含め8ボタンのものはスタート&セレクトは9と10に割り当てられている
場合が多くSFC形状のパッドでは7&8に割り当てられている場合が多い
7と8はPS形状だとL2&R2ボタンに割り当てられている場合が一般的
これは間違えてプレイ中に押してしまう人も居るので使用によっては注意が必要

一応PSに似た配置のパッドでも一応の標準的なキーは位置はあっても
モノによってキーは位置が違っていたりする、バッファローみたいな大手でも
同じメーカーで見た目のボタン配置が同じなのにキー割り当てが違う製品があるくらい
キーコンフィグがあればあまり問題はないけれど一応1000円程度で買えるので
ほぼPSと同じ配置のUSBゲームパッドを検証用に1つ買っておくと良いとは思う
実際問題今後もアクションゲームを作っていくなら奮発して2000円前後の
使い勝手のよさそうなPS配置のものを1つ買っておくと良い
0136名前は開発中のものです。2010/05/11(火) 18:35:12ID:N2QL8OL8
USBは遅いからプリンタケーブルに接続するものを自作したほうがいいよ。プロはみなそうしている。
0137名前は開発中のものです。2010/05/11(火) 18:45:02ID:1jprUcQI
>>136
いつの時代の話だか
パラレルポート16M、USB1.1は12M
パラレルに接続が流行ったのはゲームパッドをシリアルポートに接続していた時代のことだろ

それにゲームを操作する信号自体
そこまでの転送容量はいらないぞ

0138名前は開発中のものです。2010/05/11(火) 18:48:21ID:tiOS8rUG
それよりプロって何のプロだ?
日本じゃプロのPCゲーマーなんていないだろ韓国じゃアメリカじゃあるまいし
0139名前は開発中のものです。2010/05/11(火) 19:21:32ID:ZMWUPVjp
PCじゃないが ウメハラがプロゲーマーって日本初でなのっていたな
0140名前は開発中のものです。2010/05/11(火) 19:24:07ID:ibwkSFdU
え!?
ウメ、プロに昇格したの!?
0141名前は開発中のものです。2010/05/11(火) 19:34:01ID:1jprUcQI
ウメハラって言うのがなんだか知らんけど
そいつはバカみたいにゲームパッドをパラレル接続にしてるのか?
0142名前は開発中のものです。2010/05/11(火) 20:06:24ID:YWGBRWug
>>134
気にしすぎ。
キーコンフィグあるなら、気にする必要無かろう。
文句出てから対応で十分。フリーのゲームなんでしょ?
0143名前は開発中のものです。2010/05/11(火) 21:04:26ID:ZMWUPVjp
>>140
自分でいっているだけみたいだが
詳しくは分からないからググってくれ
0144名前は開発中のものです。2010/05/11(火) 21:33:18ID:QbQcF3AV
スタートとセレクトは、ポーズとメニュー用なので、
間違えて押すとうざいだろうけど、致命的ではないかと。
ゲームはフリーの二次創作ですがここまで数年かかったので
完成しても次のゲームを作る気力は無さそうですw
いろいろ参考になりました、皆さんthx!
0145名前は開発中のものです。2010/05/11(火) 21:52:33ID:TKDOFbWs
きめーーー。ゲイ同士二人だけのスレW
http://yomi.bbspink.com/test/read.cgi/pinkcafe/1271942152/
0146名前は開発中のものです。2010/05/11(火) 21:58:44ID:YWGBRWug
>>144
キーの配置が物によっておかしいのはあり得るけど、
ゲームはじまればすぐ気づくし、キーコンフィグでOKでしょ。

>間違えて押すとうざいだろうけど、致命的ではないかと。
ウザイ程度なのか、致命的なのかどっちなんだwwおちけつw
0147名前は開発中のものです。2010/05/11(火) 22:50:46ID:Pq30OCBN
PCゲームならまず最初にキーコンフィグするだろ、普通
0148名前は開発中のものです。2010/05/11(火) 22:55:42ID:6+Fyb6b4
SQLをゲームのデータ管理に使うのってそんなに便利なの?
誰か使っている人いる?
http://marupeke296.com/SQLITE_main.html
0149名前は開発中のものです。2010/05/12(水) 00:44:39ID:/96M4YqH
>>148
普通に使うが、それはSQLを知ってるから。

ある程度規模が無いとメリットは感じないかもな。
0150名前は開発中のものです。2010/05/12(水) 00:55:40ID:Ctshm01T
データベースというものが一体何をするものなのかも良く分かっていない・・・
単なるデータ表みたいなのではないの?
CSVファイルをC言語で読み込むのとは分けが違うのかなぁ?
0151名前は開発中のものです。2010/05/12(水) 01:02:14ID:TW+wbp9/
SQLで特に便利な機能って、"group by"とかか
SQL文1つで他の表と簡単に結合できる
0152名前は開発中のものです。2010/05/12(水) 02:13:50ID:RGXBbcnU
集計やソートがSQLの強みだから普通のRPG程度ではあまり意味ない。
一番差が出るのは、たとえば交易やトレード、MMORG
どのアイテムを誰がいくつ持っているかやユーザのログイン管理みたいに、
ランダムで適当に数字作るわけにいかないようなものだと、
逆にSQL使わないととても管理しきれない
0153名前は開発中のものです。2010/05/12(水) 02:26:17ID:lFdb3vUJ
>>152
君は馬鹿だろ。
共用のデータにアクセスする仕組みで一番枯れてるから利用されてるだけ。


>ランダムで適当に数字作るわけにいかないようなものだと、
>逆にSQL使わないととても管理しきれない
↑ コード書いてないだろ。
0154名前は開発中のものです。2010/05/12(水) 22:55:41ID:vZNCFf+m
>>150
語弊がかなりあるけどこんなイメージかな

CSVファイルにデータ表(1ファイル1テーブル)を書いてC言語で読み書きする
     ↓
何度もファイル開いて1行ずつ読んで…ってコード書くのがうざくなったので、
その部分を独立したプログラムにする。
このプログラムに対してデータを追加・検索するなどのコマンドを送れば
結果が返ってくる(もう使う方からはCSVファイルの存在を意識しなくてよくなった)
     ↓
このプログラム(DBMS データベースマネジメントシステム)は、
専用言語(SQL)で検索・追加・削除などの操作ができる
しかも速くて大量のデータを扱える(1000万件とか)
※さらに整合性を保つための仕掛けとかもできる

このDBMSが、OracleとかSQL ServerとかMySQLとかPostgreSQLとかのことで
独立したアプリケーションとしてサーバー上で動作する。
SQLiteはちょっと特殊で、アプリ組み込み型(モジュール扱い)で軽量なので取り回しやすい
01551502010/05/12(水) 23:08:29ID:Ctshm01T
>>154
ありがとう!
なるほど。
大量のデータに検索ってだけでも十分に使う価値ありだね。
幸い(?)にも、まだそういうが必要になるプログラムを書くことがなかったけど、
今後、新しい問題に取り組むときには意識してみるよ。
0156名前は開発中のものです。2010/05/13(木) 11:01:42ID:RQqzrl9H
ま、ゲームでは使い道が少ないってだけで、
世の中ではばんばん使われてるからねぇ。
MMOでも作らん限り、積極的に利用できる場面は限られるけど、
それでも、仕事の知識が生かせて簡単に使えるから、使っちゃうなぁ。

今後はKVSが流行るんだろうけどね。
流行るというか、Web系だと必修になるかんじか。
0157名前は開発中のものです。2010/05/13(木) 11:15:50ID:gxo3tiAt
DBもさ、ひとつの表からリレーショナルでマスターとかテーブルに分割しちゃったあとの更新作業が面倒
いちいち各マスター更新してからID探して各テーブル更新とかじゃなく
元の一つの表ベースで1行更新掛けたら、あとはDBが各テーブルに振り分けて更新するくらいしてほしい
0158名前は開発中のものです。2010/05/13(木) 11:44:01ID:vUM1T9VZ
それは正規化まちがってんじゃないか?
ビュー使う方法もあるし
0159名前は開発中のものです。2010/05/13(木) 12:11:36ID:gxo3tiAt
ビュー?
それでマスターIDとか意識しなくても
ビューの1行追加で済む?

りんご  スーパー成田 ¥50  青森
りんご  田沢商店    ¥60  長野
みかん  スーパー成田 ¥20  愛媛
みかん  田沢商店    ¥40  和歌山

これに
りんご  ジャスコ  ¥70  中国   とか追加で済む?

実際のテーブルのデータは
1 1 50 1
1 2 60 2
2 1 20 3
2 2 40 4 こうなってるのはわかってるよな?

追加するなら
1 3 70 5  で、その前に店舗マスターと産地マスターを更新してID値を確保せねばならん
これが
addlist={りんご  ジャスコ  ¥70  中国}とかで更新出来るんならすごい
0160名前は開発中のものです。2010/05/13(木) 12:31:58ID:vUM1T9VZ
ああ読み間違ってた
それなら無理
ただ、その手のコードは一回簡単なコードを書くだけだから、それほど手間とも思わないが
0161名前は開発中のものです。2010/05/13(木) 12:45:57ID:vUM1T9VZ
と思ったが、ちょっと調べてみたら、更新ビューで追加もできるのがあるみたいね
外部キーはどうすんだろ
0162名前は開発中のものです。2010/05/13(木) 12:55:03ID:RQqzrl9H
>>157
おまえ、本気でそれのほうが効率がいいっておもってる?
>>159の例から考えると
りんご  スーパー成田 ¥40  青森
を追加した場合の処理はどうなるんだよ

入力を指示した人からすると、「スーパー」と「スーパー」は同じつもりでも、
PCだと別データとして認識するだろ。スーパー成田は別IDになるんか?
そこまでDBの判断に任せるとかありえん。

それに、都度、登録済みかどうかの判断が入るとか致命的。
1000件程度ならいいが、10万件とかざらだろ。

俺が扱ってる奴ではマスタは1万件ぐらいでも、実データの方は7億ある奴があるぞ。

マスタの更新はデータテーブルに比べるとほとんど無いと言う普遍的な経験があるから、
正規化して、マスタを切り出すわけなのに、それは無かろう。
0163名前は開発中のものです。2010/05/13(木) 13:08:37ID:gxo3tiAt
>>162
お前・・・・プログラム上の処理のことと
ユーザー誤入力の不具合とごっちゃにすんなよ

ユーザーが「スーパー」を見逃して「スーパー」で新規登録しちゃう場合
どのみちDBはそれに従って新規追加するしかない
それは自動と同じ不具合だ
0164名前は開発中のものです。2010/05/13(木) 13:20:34ID:O3Jg0he7
なんでユーザーがマスタを手入力してるの?
逆にそれでいいなら表分割しない設計が正解じゃん
0165名前は開発中のものです。2010/05/13(木) 13:22:59ID:RQqzrl9H
>>163
ふむ、例が悪かったかもしれん。
確かにごっちゃにしてるな。

根本的な話をすべきだな。
>>160が言うとおり、そんなの対した処理じゃないし、
そもそもそれの処理を素のSQLの処理だけでやるのか?って話になるよな。

DBの上には普通アプリケーション層があるよな。
あなたが言ってる部分とか、そこで吸収できちゃう。
というか、出来なきゃいけないでしょ。
画面から、さっきのデータだけがわたってくるわけでもないだろうし、

実際のアプリ画面とか考えたら、データ入力画面では、マスタ部分は選択にするでしょ。
選択肢にないなら、新規マスタ登録画面にでも遷移してマスタ登録するだろうし。

あなたがやりたいその処理が行われる場面ってのが想像できない。
0166名前は開発中のものです。2010/05/13(木) 13:33:55ID:vUM1T9VZ
そういう状況があるかどうかなんて、それぞれの個々の条件によるんだから、議論してもしょうがないよ

問:「これこれこういう場合に何かいい方法ある?」
答:「そんな場合あり得ないから考えなくていい」

不毛だろw
0167名前は開発中のものです。2010/05/13(木) 13:36:36ID:gxo3tiAt
>>164
表分割せず全部プログラマがconst掛けてリストを作り
データ量削減と更新をやるのは従来どおりの手法

今はDBを利用してやる場合(>>150)の話だ
マスター更新がない場合でも、いちいち毎回ID値引っ張ってこなきゃならない処理が増える

DB使わなきゃそんなの意識せず
単に りんご 田沢商店 だけでconst値で処理が終わる
0168名前は開発中のものです。2010/05/13(木) 13:42:21ID:vUM1T9VZ
だから、更新ビューでINSERTできるRDBもあるって言ってんじゃん
俺は使ったことないから、後は自分で調べてくれ
0169名前は開発中のものです。2010/05/13(木) 13:43:15ID:RQqzrl9H
>>166
確かに不毛だがw

しかし、>>157がの希望に対しては答えでてるでしょ。
>>160でいうとおり「それほど手間ではない」
1回メソッド作れば終わり。しかも対した手間ではない。
0170名前は開発中のものです。2010/05/13(木) 13:59:31ID:O3Jg0he7
>>166
元の問いに対しては「無い」が正解だな
代替案としては表の非正規化という回答を提示した
※他の方が回答している通りOracle等のほかのDBなら方法があるが
  俺はSQLite前提の話な
  SQLiteのViewはReadOnly

>>167
りんご、田沢商店がconst値になっている?
それでいいなら商品名マスタや店舗マスタを分割する理由がない
一つの表にすべてのデータが入るべき

DBを使う場合と使わない場合で実現している機能が違うから
手順が増えるのは当たり前
0171名前は開発中のものです。2010/05/13(木) 14:11:15ID:O3Jg0he7
あ、わかった
配列に代入する手間をDBなしの場合はコストゼロで計算してるのか
それDBを使うかどうかじゃなくて、データを外部に持つかの問題じゃね?
ファイルから読み込む場合も同じ事がいえる
0172名前は開発中のものです。2010/05/13(木) 14:19:51ID:uQyfT4Hj
>>167
文字列からIDを取り出す処理を混ぜるのなら、
insertでサブクエリーの結果を挿入すればいいだろ。
そもそもDBも分かってなければSQLも理解していないから、
あり得ない例が出てくるんだよ。
0173名前は開発中のものです。2010/05/13(木) 14:36:20ID:vUM1T9VZ
>>171
確かにそうだがw

ファイルに書くと削除処理の面倒くささがDBの比じゃないしね
■ このスレッドは過去ログ倉庫に格納されています