トーク:ゲームプログラミング

話題を追加
アクティブな議論

乱数に rand() を使ってはいけない編集

rand関数で生成された乱数を、割り算(÷6)で割って、あまりは0以上5以下なので、余りに +1 するのが、rand関数による割り算プログラムの定石である。

最初読んだときは目を疑いました。

  1. rand()関数は擬似乱数を生成します。これは真の乱数(真性乱数)とは違います。四則演算やシフト演算を駆使して「乱数っぽい値」を返しているだけです。再現性や周期性があります。
  2. rand()関数の下位ビットは周期が短いことがあります。場合によっては「偶数の次は必ず奇数、奇数の次は必ず偶数」といった法則性が生まれてしまいます。
  3. rand()関数は線形合同法を利用しており質が低いので、MTやXorShiftなど別の実装を使うことが推奨されています。

ですから、普通rand()は使いませんし、使うとしても下位ビットは切り捨てて使います。常識です。細かい話は[1][2]を読むといいでしょう。

ところで、すじにくシチューさんが書かれているのは「ゲームプログラミング」ではなく「ゲームを題材にしたCプログラミング」ではないでしょうか? C言語の使い方はここで書くことではないと思いますが……。--Siglite3 (トーク) 2018年7月8日 (日) 03:36 (UTC)


(すじにくシチューのコメント)「乱数でrand関数を使うのが定石」とは言ってません。もしrand関数でサイコロを作る場合には、割り算を使うのが定石であると言おうとしているのです。「rand関数による割り算プログラムの定石である。」と書いてあります。
せいぜい、私(すじにくシチュー)の「言い回しが不適切」くらいでしょう。
アマチュア向けのゲームの場合、あまり完全な乱数は不要でしょう。科学実験用やセキュリティ用の乱数ならともかく。


もし、あなたが世間のゲーム作家にも分かりやすく手短かに、乱数のプログラムを説明してくれるなら、どうぞ、お書きになってください。ただし、RPGツクールなどでゲームを作ってるような多くのアマチュアゲーム作家は、線形合同法やハードウェア乱数生成やメルセンヌツイスタの概念なんて知らないと思います。
情報科学の知識があっても、まったくゲームを作れない人もいます(大学にも多くいますよね?)。いっぽう、情報科学の知識が少なくても、なんとかゲームを作る人もいます。
ゲーム制作で必要なのは、とりあえず、なんとかゲームを作れるようになる能力です。


  • 「すじにくシチューさんが書かれているのは「ゲームプログラミング」ではなく「ゲームを題材にしたCプログラミング」ではないでしょうか?」について
それの何が悪いのか、さっぱり分かりません。ゲームプログラム初心者の多くのは、そもそもCプログラミング自体に不慣れだと思いますので(世間には学歴が情報系の専攻でない人も多くいます)、当『ゲームプログラミング』で、ゲーム用のCプログラム例を記載することで、おさらいする事の、何が悪いのですか?
また、いくつかの例外はありますが、私は実際にプログラミングでゲームを作りながら、コードを書いています(少なくとも、RPGのコードは、そうしている)。
なお、市販の書籍でも、C言語のゲームプログラミングの入門書を読むと、C言語の使い方をおさらいしつつ、説明する本が多くあります。たとえば、大槻有一郎 (著)『12歳からはじめる ゼロからのC言語 ゲームプログラミング教室』[3] など、その例でしょう。
あと、関数や構造体などの概念を知っていても、それをどう組み合わせればいいかは、初心者には分かりません。実際に私自身、C言語の関数の概念は大学2年の19歳くらいの時点では知ってましたが、しかし、それを実際にゲームプログラミングにどう応用すればゲームを作れるのかを知ったのかは、30歳過ぎになった、ごく最近です
何箇所かコードをコンソールアプリとして書いたのは、コード量を短くするためです(GUIアプリだとコードが長くなりかねないので)。多くのゲームプログラマーが知りたいのは、実際にどういうコードを書けば動作をするのかが知りたいわけですので、実際に動くコードを書くのは当然です。コードのない抽象的な考え方は、不要です。Linuxの創始者のリーナスさんも、(代案のコードを書かずに)「技術について話すだけの奴はクソ野郎(Bullshit)だ」とか言ってます。 --すじにくシチュー (トーク) 2018年8月24日 (金) 01:29 (UTC)
横から失礼しますが、「「乱数でrand関数を使うのが定石」とは言ってません。もしrand関数でサイコロを作る場合には、割り算を使うのが定石であると言おうとしているのです。」というのは全く反論になっていません。Siglite3さんは「もしrand関数でサイコロを作る場合」であってもその使い方は不適切である(下位ビットは切り捨てて使うべき)とおっしゃっているのです。「ゲームの場合、あまり完全な乱数は不要」というのはあまりにもゲームを馬鹿にした発言で、そのようなことをおっしゃる方がこのような記事を執筆されるのは不適切なのではないでしょうか。たとえばサイコロを2個同時に振る動作を含むテーブルゲームはありふれていますが、そのようなゲームを「偶数の次は必ず奇数、奇数の次は必ず偶数」となるサイコロを順に2回振ることで実装した場合、目の合計は必ず奇数で、特にぞろ目は絶対に出ない、ということになります。そんなサイコロでバックギャモンやモノポリーを再現しようとすれば、それは現実のゲームとはゲームバランスの全く異なる、違うゲームになってしまいます。--2402:6B00:464A:8200:DE8:5811:B9ED:BBF9 2018年8月24日 (金) 09:02 (UTC)
すじにくシチューさん。私は「知らなかったこと」や「間違えたこと」は問題にしていません。執筆者は全知全能ではありませんから知らないこともあれば間違えることもあります。私もよく間違えます。しかし、執筆する前に下調べを怠ること(知らないことを知ろうとしないこと)は大問題だと思っています。
正直なところ、乱数の項はきちんと下調べをして書いたとは思えません。なので議論ページで問題提起しています。私は調査不足を批判しているのであって、結果的に間違えてしまったことを批判しているのではありません。トーク:オブジェクト指向でも同じことを指摘しましたが、調べてから書いてください
上記の点だけ理解していただければ十分です。乱数の項については私が書き直しましょう。
また、「ゲーム用のCプログラム例を記載することで、おさらいする事の、何が悪いのですか?」についてですが、C言語について多少解説するのは構いません。しかし、同じプログラムを様々な方法(グローバル変数、ポインタ、構造体、etc...)で実現することに意味はあるんでしょうか? 読者はゲームプログラミングのテクニックやベストプラクティスを知りたいのであって、実装方法がN通りあることを知りたいわけではありません。私は最良の手法を一つ紹介すれば十分だと思います。それ以上は「C言語の使い方」講座ですし、内容が冗長になってしまうデメリットがあります。--Siglite3 (トーク) 2018年8月25日 (土) 02:46 (UTC)

すじ肉先輩へ編集

なんかいろいろ書いているようだけど,別のところで書いている理由で今は詳しく読めないので,もう少しして余裕ができたらじっくり読んで対応するよ。今書いても編集合戦になってしまうしね。まあ俺も改善できるところは改善するけど,貴方も自分自身の改善については少し考えてよね。まあ今はすこしその兆しが見えてるかも…というところですかねー…--Honooo (トーク) 2022年1月5日 (水) 15:37 (UTC)

すじにくさん,俺が例に出した二人の漫画描きのこと知りたいようだけど,まあそれについての言及、対応は後々考えるけど、少なくとも赤松のことじゃあないよ。悪いけど,俺は赤松ってそんな大した漫画家じゃあないと思っている^^;;;。これは雑談だけど,あなたが大好きな岡田斗司夫氏が主宰していたパソコン通信の掲示板で,「ラブひな」を高畑勲氏が演出したアニメーションがみたいと書いていた人がいたけど,俺も観たかったな^^--Honooo (トーク) 2022年1月5日 (水) 17:01 (UTC)

あのー,大先生。俺もいろいろ他にやらなきゃいけないこともあるので,ここと美術ページはもうちょっと後で時間かけて対応考えるけど,あんた多読が得意で,権威ある人の書籍以外全く価値ないと思ってるようだね。あんたの読んでる本いちいち読む義務ないと思うね。だって一般的,普遍的な意味でおかしい記述を俺は書き直してるわけだから…。しかも美術ページでも書いたとおり,あんたの食いつく本って,ほんと詰まんない本ばっか。--Honooo (トーク) 2022年1月7日 (金) 15:47 (UTC)

すじ肉うんこ野郎へ編集

俺はあんたほど暇じゃアないんでね。ここもしばらくは見ないよ。ただ自己アピールならお前のほうが100倍酷いよ。そのおかげでまともな人間はみな,お前が取り返しのつかない糞野郎だってこと,みんな知ってるよ。--Honooo (トーク) 2022年1月23日 (日) 10:33 (UTC)

すじ肉第一級主席プログラマー閣下に申し上げる^^;;;編集

このページに関してはー,まず更新数が多すぎるのでコメントはあまり読まないで,本文だけ読むよ。色々書いてるけど,感想としては,コメントね,読まないけど,五月蠅いなー,うる星やつ、という感想^^;;;。再編集は現時点では,第三項目から始める予定。いつものように上から少しずつ,じわじわと,ね^^。あんたの指摘通り、俺はプログラムについてはそんなに知らないね。一応フリーソフトはベクターで公開してるけどね。でもほんの遊びで趣味だよ。あんたも職業とかプロとか拘ってるようだけど,ほんとにそれについて語れるのは誰でも,ほんの限定された分野だけだと思うよ。--Honooo (トーク) 2022年1月23日 (日) 20:09 (UTC)

エディタのバグ?あるいは何らかの不適切な操作?編集

あのー今回アップに非常に手間取ったんだけど,なんかうまくアップできないのはなんでなんだろう?すじにく氏の元の文になんかおかしな制御コードが入ってるのかな?あるいは管理権限持ってる誰かがおかしな事してるのかなー?????なんか操作が非常にうまくいかないけど…。誰か何か知ってませんか?--Honooo (トーク) 2022年1月31日 (月) 14:32 (UTC)

うーん,どうも単に私がエディタの使い方わかってないだけなのかなー…。しかしこのエディタ恐ろしく使いづらいんだけど…。設定で前の状態に戻せるかもね…--Honooo (トーク) 2022年1月31日 (月) 14:54 (UTC)

(追伸)エディタは変更したので問題起きなくなりましたが,ひょっとしたら面倒なのでいつも机の上に置いている板タブレットが原因かもしれません。キーボードを打っているうちにどうしても触ってしまうので,知らないうちに知らない機能が動いているのかもしれない…。--Honooo (トーク) 2022年2月9日 (水) 20:21 (UTC)


文献を読んでないHonooo氏編集

(すじにくシチュー のコメント) 編集者 Honooo は、ひとつも出典にあたらず上書きしています。

証拠として、引用、

出典は岡田斗司夫氏の著作『東大オタク学講座』や『マジメな話』だそうだ。

まあ岡田氏ならかなり過激なことを書くのは事実だろうが,この前編集者S はその悪徳をさらに10倍に高めてこのWikibooks に記述する地獄のように厄介で無知で馬鹿な人間だ。

オタク学講座くらい近年に再販されてるんだから入手してください(たとえば[ https://honto.jp/netstore/pd-book_03004252.html Honto「東大オタク学講座 (講談社文庫)」] 、(「発行年月:2008.5」))。というか、そもそも90年代の当時はけっこう話題になったそういう基本的な文献も読んでいないレベルなのに、なぜ彼は自信満々に上書き編集をできるのか、とても疑問です。ほかの記事ページや当ページのほかの部分の編集でも、彼はろくに文献による出典を出せていません。--すじにくシチュー (トーク) 2022年3月2日 (水) 12:19 (UTC)

だから岡田のバカボン読むのなんて人生の無駄だろ?岡田氏はともかくあんたの記述が不適切なのは,幼稚園児でも分かるよ。--Honooo (トーク) 2022年3月2日 (水) 12:21 (UTC)
そろそろレベルって言葉使うのやめろよ馬鹿。--Honooo (トーク) 2022年3月2日 (水) 12:23 (UTC)
大体ある程度のじじいは岡田が大した人間でないの,みんな知ってるよ。--Honooo (トーク) 2022年3月2日 (水) 12:24 (UTC)
だから出典は出せるものは出せるから,礼儀正しく聞けよ。出せないものもあるけど,それは当然俺のオリジナルの意見だよ。まあ独自研究の問題は別に議論しようぜ。--Honooo (トーク) 2022年3月2日 (水) 12:28 (UTC)
あともうちょっと出典について補足するけど,貴方確か以前,無料のWikiの文章って何の価値もなくて,そこで出典を見て,出典を知ってそれを読むために使うものだって書いていたよね?そういう意味では俺は貴方の提示した出典はほとんどそのまま残してるはずだぜ。ただ俺は無料のWeb上の文章も,有料の出版物も等価,あるいは下手したら無料のWeb 資料のほうが質高いと思ってるぐらいで^^;;;,たとえば岡田の本はホントで859円?(しかし結構高すぎ,しかもこいつの顔気持ち悪っ^^;;;),そんなお金があるんなら,Webで興味のあること30分ぐらい調べて,お金の方は両親にプレゼント買ってあげたほうが,あらゆる意味で価値のある行動だと思うな^^;;;--Honooo (トーク) 2022年3月4日 (金) 14:40 (UTC)
ページ「ゲームプログラミング」に戻る。