ゲーム製作に最適な言語

このエントリーをはてなブックマークに追加
470デフォルトの名無しさん:2008/08/02(土) 17:39:45
昔だと単純にプログラミング能力の問題だったわけだけれど
今はデザインとかインタフェースとか音楽とかストーリーだとか、
プログラマ一人で取り組むには難しい課題が増えた
プロでさえ分業してやっているような事を一人でやるのは相当な能力と根気がいるよ
471デフォルトの名無しさん:2008/08/02(土) 18:11:24
>>468
インベーダー程度ならBASICで十分だったぞ。
472デフォルトの名無しさん:2008/08/02(土) 18:45:59
GCがネックになってる「実例」を見せてくれ
473デフォルトの名無しさん:2008/08/03(日) 03:31:52
こんなのどう?
ttp://watch.impress.co.jp/game%2Fdocs/20080219/xna.htm

 「XNA」はPC版とXbox 360版で共通して「.NET Framework」をベースにしているが、
ゲーム開発において問題になるのが「.NET」の“GC (ガベージコレクション)”の
パフォーマンス問題である。PC版に比べてXbox 360版の実装はシンプルで、「.Net」
のGCはメモリアロケーション1MB毎に駆動する。このため、無秩序にオブジェクトを
生成・開放するプログラムを書いてしまえば、フレーム内でGCが何度も駆動してしまい、
大きなパフォーマンスロスとなってしまう。

 Frank氏が語った結論から先に触れてしまうと、Xbox 360向けのXNA開発における鉄則
は「メモリは最初に確保して長期間利用し」、「短命なオブジェクトは再利用し」、
「GCが駆動する機会を最小限にせよ」ということだ。どちらかというとアルゴリズムの
最適化に属する話題である。

474デフォルトの名無しさん:2008/08/03(日) 04:22:56
>>473は、「GCがネックになって、まともに動作していないゲームを挙げろ」って
言ってるんだと思うよ。

もちろん、「GCがネックになっている」という状態はつまり「完成していない状態」ってことだから、
そんなものは世に出ない=誰も名を挙げられないわけで、
>>473はそれを狙って「ほら、誰も出せないんだろ? つまりGCがネックになるというのは嘘っぱちだ」
っていう風に話を持っていきたいんだと思うよ。
475デフォルトの名無しさん:2008/08/03(日) 18:38:56
>>471
数十の敵の移動やら当たり判定やらはどうするの?
純粋に興味がある
476デフォルトの名無しさん:2008/08/03(日) 23:45:28
>>472
下記動画の16:00〜19:00に実例があります。

RubyGCをどけんかせんといかん
http://www.nicovideo.jp/watch/sm3740599
http://d.hatena.ne.jp/video/niconico/sm3740599
477デフォルトの名無しさん:2008/08/03(日) 23:59:23
わざとGCに負担掛けてるんでしょそれ
ナンセンス
478デフォルトの名無しさん:2008/08/04(月) 01:44:31
愚問には愚答
479デフォルトの名無しさん:2008/08/04(月) 03:08:04
>>475
総当たりでやってもMSX程度の性能があれば間に合うよ。
まあ、インベーダークローンではなく、あくまでもインベーダーもどきしか作れないけど。
480デフォルトの名無しさん:2008/08/08(金) 21:50:29
>>472
> GCがネックになってる「実例」を見せてくれ

携帯Javaゲームやれば?
不意のGCでガクガクになるやつなんていくらでもあるよ。

本格的なプログラミングする場合のGCのメリットって
フラグメンテーションが起こらないだけじゃない?
実質的なリークは起こるわけだし。
481デフォルトの名無しさん:2008/08/09(土) 09:03:34
Copyingじゃなければフラグメンテーションは起こるぞ
「実質的なリーク」って何?
482デフォルトの名無しさん:2008/08/09(土) 09:40:32
disposeの類でしょ
483デフォルトの名無しさん:2008/08/09(土) 10:19:50
>>481
> Copyingじゃなければフラグメンテーションは起こるぞ

それは確かにそうでした。

> 「実質的なリーク」って何?

もう不要なオブジェクトなのに、生きてるオブジェクトから一箇所でも参照されている
限りGCされないわけでしょ?
組み込みとかメモリが限られている環境だと、それが問題でメモリ不足に陥ることがよく起こる。
特にGUIまわりのオブジェクトとかね。
メモリの見積もりたてて設計したはずなのに画面遷移を繰り返していると、そのうちメモリ不足
の例外が発生したり。

まぁメモリプロファイラとかでおかしいところを調べてバグを修正するんだけど、
日頃の対策としては、不要になったオブジェクトへの参照はすぐにnullを代入しておきましょう、
というルールが作られる。
でもこれってC++でnewしたらfreeしましょうと実質変わらない作業になる。

あんまりGC意味ねーなーと思うわけ。
C/C++でもリーク発見ツール充実してるからあんまりそういうところでハマルことが少ないし、
じゃあC/C++でいいんでない?と。
484デフォルトの名無しさん:2008/08/09(土) 10:58:39
>>479
>>総当たりでやってもMSX程度の性能があれば間に合うよ。 


BASICで総当り???
お前8ビット機のBASIC使ったこと無いだろ
485デフォルトの名無しさん:2008/08/09(土) 14:20:17
>でもこれってC++でnewしたらfreeしましょうと実質変わらない
GCの有用性はdangling referenceを無くすことにあると思ってたが
Seg faultが絶対起こらない,と
メモリリークとはレベルが違うでしょ
それに
>不要なオブジェクトなのに、生きてるオブジェクトから参照されている
これおかしくないか? 不要の定義が不明
486デフォルトの名無しさん:2008/08/10(日) 02:06:59
>>485
> でもこれってC++でnewしたらfreeしましょうと実質変わらない
> GCの有用性はdangling referenceを無くすことにあると思ってたが
> Seg faultが絶対起こらない,と
> メモリリークとはレベルが違うでしょ

組み込み系の場合は、セグフォルになる代わりにメモリ不足の例外が投げられる
ことになると書いたでしょ?
回復不可能な状態になるという点では同じレベルじゃん。
PCのようにリッチでぬるい環境だと、まぁいつかはメモリが解放されるだろうから
問題が表面化しないのだろうけどね。

> それに
> >不要なオブジェクトなのに、生きてるオブジェクトから参照されている
> これおかしくないか? 不要の定義が不明

難しく考えなくていいよ。
プログラムを動作させる上であるオブジェクがもはや不要になったが
GCではそれが検出できない場合がありえるということ。
Javaのプロファイラってたいていメモリリーク検出機能が付いている。
GCがあるからメモリリークしないというのは幻想。
iアプリとかで本格的なアプリ書いてみるといやでも経験するよ。
487デフォルトの名無しさん:2008/08/10(日) 03:25:55
>GCがあるからメモリリークしない
そもそもこの発想が間違ってる
GCに何を期待してるの?
メモリがきつい環境で開発してるという事情は分かるけど
間違った期待をして,それができないからって文句言われても
>プログラムを動作させる上であるオブジェクがもはや不要になったが
>GCではそれが検出できない場合がありえるということ。
これは(広義の)バグでしょ?
こんなヌルイ/甘い考え方でプログラム作ってればメモリリークが起きて当然
GC以前の問題だよ
コンピュータに人間の都合を理解させるのは不可能なんだから
間を取り持つのは全部プログラマの仕事/責任
488デフォルトの名無しさん:2008/08/10(日) 09:56:29
>>487
> GCがあるからメモリリークしない
> そもそもこの発想が間違ってる
> GCに何を期待してるの?
え?
GCに期待されるのはメモリ管理しなくていいことで、具体的には
−解放処理しなくてよい
 −メモリリークがなくなる
 −不正アクセス(セグフォル)が起こらない 
−フラグメンテーションしない
あたりだと一般的に思われていると思ってるけど。

> メモリがきつい環境で開発してるという事情は分かるけど
> 間違った期待をして,それができないからって文句言われても
ではお前さんの正しい期待を教えてくれ。
これはかなり興味がある。

> >プログラムを動作させる上であるオブジェクがもはや不要になったが
> >GCではそれが検出できない場合がありえるということ。
> これは(広義の)バグでしょ?
そうだよ。

> こんなヌルイ/甘い考え方でプログラム作ってればメモリリークが起きて当然
> GC以前の問題だよ
> コンピュータに人間の都合を理解させるのは不可能なんだから
> 間を取り持つのは全部プログラマの仕事/責任
だからGCでは解決できないから、人がツール使ったり作法を決めたりして
対応する、と書いたでしょ(注意2度目め、よく読め)
だとするとGCのメリット小さいなー、GCなし言語の自由度の方がうれしいよ
というのがおれの意見なわけ。
お前さんのはなんら反論になってない。
489デフォルトの名無しさん:2008/08/10(日) 10:38:57
>だからGCでは解決できないから
これが分かってて
>だとするとGCのメリット小さいなー
なぜこういう言い方になる?
そもそもコンピュータにはできないと分かってることを勝手に期待して
それができないからと文句を言う
オカシイだろ?
490デフォルトの名無しさん:2008/08/10(日) 11:36:55
>>489
まずお前さんがGCに期待することを答えてくれ。
それが不明だから話が噛み合ってない気がする。

> > メモリがきつい環境で開発してるという事情は分かるけど
> > 間違った期待をして,それができないからって文句言われても
> ではお前さんの正しい期待を教えてくれ。
> これはかなり興味がある。
491デフォルトの名無しさん:2008/08/10(日) 20:40:38
俺の期待を書くと(何も期待してないが)今の議論から逸れるから後で
俺が書いた事が理解できないならそう書いてくれ
492デフォルトの名無しさん:2008/08/10(日) 20:47:20
理解できないからこその >490 だろ。何言ってんだ?
493デフォルトの名無しさん:2008/08/10(日) 20:49:17
「何も期待してない」のに後で書くとかも意味分からんな。
494デフォルトの名無しさん:2008/08/11(月) 01:18:07
ふむ,そもそもGCの機能をちゃんと理解してるかが怪しいな

俺が「何も期待してない」と書いたのは
「期待」というのは対象のことを良く知らない時に使う言葉だからだ

GCは単に,もはやアクセスされる可能性がないオブジェクトが占めている
メモリエリアを(回収して)再利用する仕掛け
だから「不要な」と「アクセスされる可能性がない」の違いを理解できない
あるいは理解してない人間が無い物ねだりをしている様にしか見えないのだが
違うか?
495490:2008/08/11(月) 01:57:54
>>494
まず一つ。
おれが説明したことと同じことを後から書いて、おれが理解しているか怪しいって
それは一体どういう理屈だ?

もうひとつ。
論点が違う。
GCにないものねだりしてるのでなく、GCはいらないとおれは言っている。
カジュアルな用途ならあって便利だし、スクリプト言語には必須だろう。
しかし売り物レベルのアプリケーションを作る場合は不要だと思っている。

GCがメモリ管理の問題を完全に解決できないというのは共通の認識なんだよな?
それで結構。
496デフォルトの名無しさん:2008/08/11(月) 17:54:26
>GCがメモリ管理の問題を完全に解決できない
「メモリ管理の問題」の中味が違うから噛みあってないようだ
前に書いた(広義の)バグまで「メモリ管理の問題」に含めるのは
オカシイというのが俺の主張(と言うか,分けて扱わないとダメ)
そしてそれをあたかもGCが悪いかの様に言うのは理不尽だと言っている
どう考えてもこれはコンピュータやソフト側の問題ではないだろ
これをきちんと区別しないと,何時まで経ってもこの問題は解決しないと思うが如何?

あと,GCが要らないとあなたが主張するのは勝手だが
ちゃんと限界を理解して利用している人が大勢いるのもまた事実
497デフォルトの名無しさん:2008/09/02(火) 10:22:00
なんだかスレの流れが止まってしまいましたな
何にしてもゲーム制作に最適な言語には、GCの有無・実装が結構絡んでくるのはたしかなようですね
とても勉強になります

その点を考えると、元々話にあがってたLispはもちろんのこと、
今現在勢いがついてるPythonだのRubyだのもゲーム制作用にはちょっとどうなのよ、ということになるのかな

でも、「記述の容易さ・ソースの可読性などを求める」場面もありそうだから
そういう視点で見るとLLもゲーム制作用言語として候補に挙がってくるのでしょうか
…HSPなんかはその点どうなんだろう
触ったことないんですけど人気が高いということは、初心者でもソースの記述が容易なのかな?
498デフォルトの名無しさん:2008/09/02(火) 10:44:38
HSPは勉強が容易なだけで使うのが容易なわけじゃない
499デフォルトの名無しさん:2008/09/02(火) 12:50:11
>>484
実はタネがある。MSXべーしっ君を使うんだ。実行は_RUN。
ま、なくてもわりと動くんだが。
500デフォルトの名無しさん:2008/10/12(日) 07:11:36
そもそもどんなゲームなのかその目的に対して言語の選択がある
501デフォルトの名無しさん:2008/10/13(月) 13:01:16
>>499
>>ま、なくてもわりと動くんだが。

総当りでつくったわりと動くゲームの例をあげてくれ
ベーマガでもポシェットでもなんでもいい
なんなら自作うぷしてくれてもいいよ

502デフォルトの名無しさん:2008/10/13(月) 19:14:24
実際、今のDSやPS3のゲームの開発環境は何を使っているの?
ttp://q.hatena.ne.jp/1197018646
こんなん見つけたりしたけど……

俺も、趣味でゲーム作ってみたいんだけど、何から始めるのが一番近道か良く分からん
503デフォルトの名無しさん:2008/10/13(月) 21:39:02
0から始めるならゲーム機をターゲットにするのは遠回りだぞ
近道は知らん
504デフォルトの名無しさん:2008/10/19(日) 01:36:47
PS3ってエクリプスじゃなかったっけ?
多分コードウォーリアも出てると思うけど。
近道というか、正式ルートがあるのはXboxじゃないかな。
PCとXbox両方で動くバイナリが作れるのでPCで開発、公開。
ただし人が公開したゲームをXboxにダウンロードするには有料登録が必要。
後Wiiでも開発環境を提供してるらしいけど、詳しいことは知らない。
505デフォルトの名無しさん:2008/10/19(日) 04:40:17
なるほど、「公開」か…
「ゲーム制作に最適な言語」というお題で考えたとき、我々プログラマーはつい言語の性能で良し悪しを考えてしまう傾向があるが
作ったゲームを気軽に公開して、しかもユーザが気軽に遊んでくれる環境を提供してくれる言語もまた、ゲーム制作に最適な言語と言えるのではないだろうか?

例えばの話
A. 公開サイトからzipもしくはlzhをローカルHDDに落として解凍してexeをダブルクリックすることが必須、のゲーム
B. ブラウザで開いたらすぐに遊べるゲーム
AとBでは、どちらが、プレイしてくれるユーザが多いだろうか?

プレイしてくれるユーザ数の多さがゲーム制作と一体何の関係があるのだと訝しむかもしれないが
開発モチベーションの維持という点では無視できないように思うのだがどうか
「面倒だから」の一言で誰も遊んでくれないゲームを作ることがモチベーション維持に繋がるだろうか

そのように考えたとき、ブラウザ上で動作するゲームを制作できる言語というものが、実はゲーム制作に向いている言語であると言えなくもないのではないかと思えたが
「ブラウザ上で動作するゲームを制作可能な言語」の中でも、より望ましいと思われる言語となると、はたして何があるだろう?
思いつくものとしては、FLASH(ActionScript)、Java、JavaScript あたりだが…他にもあるだろうか?
506デフォルトの名無しさん:2008/10/19(日) 04:59:52
公開が容易かどうかが実は大事 ―― そのようなことを思ったのは、>>504の内容からの連想もあるが
数週間前に Scratch を少し触ったからでもある…
http://scratch.mit.edu/
実に簡単に「プログラミング」が体験できる仕様の秀逸さに感心もしたのだが
何より驚いたのは、公式サイト上の、子供達が作ったアプリの数だった
子供が作るものだから質はともかくとして(実に酷いものばかり)、しかし数に関しては、何故ここまでというぐらいに集まっている

また、ライター小寺氏が、子供達とネットの関係を書いた記事中にあった、
「出すものが自分しかない年齢」という一文を目にして、考え込んでしまったのである
http://plusd.itmedia.co.jp/lifestyle/articles/0810/15/news013_2.html

子供達は、自分から情報を発信したがっている
だが今までは、そのための環境が整ってなかったし、子供達のその身にも、発信できる情報がなかった
だから、数々のトラブルをネット上で起こしてしまうのである
(ネットで犯罪予告をする人種も、どこかそういうところがあったりしないだろうか
彼等は他者から注目を浴びたくてたまらないが、注目を浴びるに相応しい発信可能な情報を持っていないからそういうことをするのである) つづく
507デフォルトの名無しさん:2008/10/19(日) 05:13:19
しかし、Scratch公式サイト上のアプリの数を眺めているうちに
子供達に、「適切なプログラミング環境」を与えることさえできたなら
子供達全員がゲームプログラマーとして、自身も楽しく、周囲からも評価される、そんな情報発信を積極的に行えるようになるのではないか
おそらくは、子供達はほんのひと時、ゲーム制作の真似事をして、大半の子供達は卒業していくだろうが
だが、そのうちの何割かは、プログラミングにハマって、成長後、業界に身を置く逸材になるのではないか…そんな夢想もするのだった

だが、そのためには「適切なプログラミング環境」が ―― 以下の条件を満たした言語・環境が必要になるのではないかと思える
・ 公開が容易であること。そのことでモチベーションが維持されやすいこと
・ 学習が圧倒的に簡単であること
・ ゲームが作れること <子供達がいつでも目を輝かせるプログラムは「ゲーム」である
さて、はたして、このような要求を満たすプログラミング言語(あるいは環境)は、今現在実在するだろうか。もっとも近いと思われるのはどの言語だろうか?

ついでながら、こういった条件を満たす言語が存在しているならば
それは、より高度なゲーム制作現場においても、非プログラマーがゲーム制作に対して、プログラマーの負担を減らしつつ製品の質的向上に貢献できる・そういう状況を作ることに繋がっていく萌芽を秘めている可能性があるようにも思える
小学生や中学生でもできる作業を、大人ができないはずはないだろう…
508デフォルトの名無しさん:2008/10/19(日) 05:25:13
でもScratchってSmalltalk系みたいだしなあ…
言語の素性は関係なくて、あくまで環境が「子供達」「初心者」には大事ってことなんだろうか
(そういやRubyを導入した○○ツクール、なんてものもあったような…)

とりあえず画像やサウンドがすぐに出せない言語はまったく話にならないと思うけど
(それで言うとC系やJava系は「ゲーム制作入門」として論外な言語?)
それも、ライブラリの出来に左右される話かもしれないし…

まあ、「プロ」にとって最適な言語、という視点の他にも
「初心者」「入門者」「子供」にとって最適な言語という視点でも語れそうですねと思いました
509デフォルトの名無しさん:2008/10/19(日) 07:24:07
>>506
ところでこの偉そうなやつはどんなの出したの?
510デフォルトの名無しさん:2008/10/19(日) 09:40:10
>>505
ブラウザ上ならSilverlightも出たよ
.NET言語(C#,VB,JScript,Python,Ruby,…)で作れるFlashみたいなもの
ランタイムはすごく小さいし無料のVisualStudioExpressで開発できるからお手軽
511デフォルトの名無しさん:2008/10/19(日) 13:42:48
>>509
偉そうに見えるのは、君の中にある何かしらの劣等感のせいだと思うよ。
512デフォルトの名無しさん:2008/10/19(日) 16:03:54
これが偉そうに見えないなら頭イカレてるだろ
513デフォルトの名無しさん:2008/10/19(日) 16:58:45
「ボクと同じように考えない人は頭のイカレた人」
という発想は、典型的な幼児性の表れだね。
514デフォルトの名無しさん:2008/10/19(日) 18:15:41
何?記者降臨しちゃってんのww
515デフォルトの名無しさん:2008/10/26(日) 02:03:56
490 名前:名無し検定1級さん 投稿日:2008/10/26(日) 01:59:26
高度な3Dゲームといえば
グランツーリスモのプログラマは(最低年収800だか1000だか)
C/C++/ASMでの募集だったな。


491 名前:名無し検定1級さん 投稿日:2008/10/26(日) 02:00:51
グランツー
http://www.polyphony.co.jp/
516うゆ ◆vvvK3Fcqdg :2008/11/04(火) 01:44:07
自作スクリプト
それを読み込ませる仕組み作るのは何の言語でも良い
517デフォルトの名無しさん:2008/11/04(火) 22:32:23
子供の教育にXbox 360!?――MSの最新研究を見た
http://ascii.jp/elem/000/000/184/184589/

将来的には「ゲーム製作に最適な言語」の始祖になるかもしれないニュースなので貼り付けてみる
>>516の言うとおり、MSの発表したソレも「自作スクリプト」の範疇なんだろうけど
キーボードでガンガン打てや、の姿勢ではなくて
マウスやジョイパッドでメソッド並べろや、でソースを書くあたり
敷居を低くするのに有効なのかねえ
518デフォルトの名無しさん:2008/11/05(水) 00:11:13
>>517
Klik&Playを超絶進化させて簡易化した感じかと思ったけど
X68kのロボットコンストラクションR.C.の方が近いのかもしれない
519デフォルトの名無しさん
元祖はapple2だな
今でいうとカルネージハートか
子供につくれるんいかいな?