任天堂「今後C++は捨てJavaScriptで開発していく」

2013/03/20(水) 13:07:40.60
任天堂のゲームはこれまで,CやC++といったプログラミング言語で開発されており,
そのため高いパフォーマンスを発揮していたが,反面,開発に時間がかかっていたという。
このセッションではそれ以外の方法,つまりHTMLやJavaScriptを使ってWii Uの全機能にアクセスしつつ,
より手軽にゲーム開発を行う方法が説明されるようだ。
http://www.4gamer.net/games/999/G999905/20130316001/
2013/03/20(水) 20:15:20.73
C++とJavascriptだったら
どっちが開発し易いか微妙なレベル
速度は確実にC++だけど
2013/03/20(水) 20:16:04.23
まだアセンブラだと思ってた
2013/03/20(水) 20:45:31.85
PHPde開発しようZE
2013/03/20(水) 22:00:44.49
>>16
そう思っててくれたほうが助かる。
2013/03/20(水) 23:03:18.02
JSエンジンが裸で載ってたらデバッグで死ねるな
2013/03/21(木) 02:27:50.15
Javascriptでインタープリタなテスト工程を経て、
C/C++に落としてくれる環境ならば賛同する。
(本番はCPUに近いNativeで。)
2013/03/21(木) 05:29:51.19
アセンブラでマリオ作ろう
23デフォルトの名無しさん
垢版 |
2013/03/21(木) 06:03:03.23
ビックリするかもしれないけどいまやJavaScriptのコードは平均してJAVA並の速度なんだよね
ループ内のコードを外に出したり、ハイコンテキストなのを逆に利用して効率のよいマシン語にすることができる
2013/03/21(木) 06:09:40.04
まぁ開発効率は高いわなぁ。スクリプトエンジンはどんどん高速になってるし
2013/03/21(木) 06:18:14.60
ブラウザ戦争のお蔭でとんでもない速度で最適化が進んだからなあ
2013/03/21(木) 07:10:15.23
>>23
またまたw
2013/03/21(木) 07:19:50.47
早いって言ってもスクリプトエンジン次第だぞ?
任天堂自前で作るのか?
2013/03/21(木) 07:43:25.78
>>23
全然びっくりしないかもしれないけど
速いJavascriptエンジンはC++で書かれてるんだぜ
2013/03/21(木) 08:24:57.07
C#のが生産性高い
30デフォルトの名無しさん
垢版 |
2013/03/21(木) 08:46:25.26
>>11
>HTML5のグラディウス完璧だったしな

コナミ社員の自作自演?w
31デフォルトの名無しさん
垢版 |
2013/03/21(木) 08:48:45.49
いつまでもグラディウスにすがるコナミみっともない
32デフォルトの名無しさん
垢版 |
2013/03/21(木) 08:50:15.82
MSX最大のネガキャンプロデューサー、コナミw
33デフォルトの名無しさん
垢版 |
2013/03/21(木) 08:50:55.03
小島はMSXユーザーw
2013/03/21(木) 09:07:48.49
ブラウザゲームに速度は必要ないし良い判断だろ
ブラウザゲームに特化するのは良い判断とは思えないけどな
2013/03/21(木) 09:50:52.62
>>1に釣られる間抜けな馬鹿に言っておくけど、
JavaScriptで開発をするとは書いてあるけど、
C++を捨てるなんて書いてないからねw

速度が必要なところだけC++を使えばいい。

それにJavaScriptのエンジンはオープンソースの速いやつを使うだろ。
JavaScript実行環境はオープンソースにしないといけないけれど、
それで動かすアプリはクローズドでいいわけだし。
36デフォルトの名無しさん
垢版 |
2013/03/21(木) 09:59:39.05
これは極端な例だけどJSがダントツで早い状況もある
http://nothingcosmos.blog52.fc2.com/blog-entry-155.html

最近のJSエンジンは本当に凄い
JSの数値は64bit浮動少数だけどint型で扱える範囲の時はそれで計算するとかはもう普通
配列も入っている型やばらつきによってそれぞれ最適化される
もう単純演算じゃあ差は出ない

正規表現とか高級言語の方が扱いやすいものもある
当然WEBとの相性はいい

反対に苦手なのがバッファを弄る処理
まあ苦手と言ってもCほどトリッキーなことはできないレベル
元々JSはIO全般と相性が悪かったけど最近はマシになってきた
37デフォルトの名無しさん
垢版 |
2013/03/21(木) 10:26:39.28
JSの速度のことを指摘している人は検討違い
JSの言語自体の問題は無い

あるのはアウトプットをどうするかということ
正直今のWeb技術はバリバリのゲームなんか想定してない

WEBにはオーバースペックだと度々言われるWebGLだって
コンシューマ機として考えたらOpenGL ES 2.0だからしょぼすぎる
WiiUのGPUとマッチしてないと思う

2DゲームだってCanvas2D+CSSだけじゃあ寂しすぎる
エフェクトとかがかけづらいからほとんどWebGL使うと思う

本気でやるんなら新しいCanvasのコンテキストを用意するのはもちろん
リアルタイムオーディオ系API、今ChromeとFirefoxで全然別なのが乗ってて合併中だけどそれをどうするのかも決めないと

細かいとこだけどHTML5のテンプレートとかCSSのシェーダーとか
今実験段階の機能も載せないとダメだと思う

WiiUがスタンダードを決めるくらいの勢いでいかないと成功しない
でもあくまでWeb技術だから無茶もダメ、
ブラウザはもちろん、今年から出てくるMobileWebOSのベンダー何かとも相談する必要あると思う

そういうことが任天堂にできるよう体制考えていくのかっていうのが大事
任天堂の一大プロジェクトとして頑張ってくれ
2013/03/21(木) 10:41:53.37
>>37
何いってんだお前?

ライブラリさえ用意すれば、JavaScriptから
ファイルアクセスだってDirectX(Windowsの場合)だって
使えるんだよ。

Nodeなんかそうじゃん。言語はJavaScript
ライブラリはウェブ標準ではない。

JavaScript使うからってウェブ標準にする必要はない。
2013/03/21(木) 10:43:35.83
>>30
え?お前何言ってんの?
2013/03/21(木) 10:51:52.51
うわっ、コナミ社員w
41デフォルトの名無しさん
垢版 |
2013/03/21(木) 10:58:08.26
>>38
だからそのライブラリを用意するのがものすごく大変だと言っている
せっかくWeb技術を使うんだからそれと全くかけ離れたものを作ってもしかたない

Node.jsはWeb技術(HTML)じゃない、JSだけ
それに完全独自じゃなくて他のサーバーサイドJS環境とともに標準仕様を決めている
それでもここまで来るのに何年もかかった
だけどまだNodeはバージョン0.10
フラッシュアップするのにもう1年はかかりそう
それほど大変

そんな中ゲームサイドを作ろうとしたらライブラリ作ればいいじゃすまない
任天堂だけの手におえないし、おってはいけない
それこそ仕様ができた頃にはWiiUの次がでてるようなことになる

それはさすがに無理だからWEB技術を中心に採用することにしたんだろう
でも採用するといっても使えそうな技術は実験段階だったり
標準化に手間取ってたりする
それを待ってるとやっぱりWiiUには間に合わない

でも既存のWEB技術だけじゃあ残念すぎる
なんとかそこら辺を上手くやらなくちゃいけない
じゃないともったいない
2013/03/21(木) 11:00:53.73
> だからそのライブラリを用意するのがものすごく大変だと言っている

今あるC++のライブラリのラッパーを作れば良い。
2013/03/21(木) 11:02:41.38
> それに完全独自じゃなくて他のサーバーサイドJS環境とともに標準仕様を決めている

CommonJSはオワコンで
参考にはするが、そんなのには従わないと
言ってるんだが知らないの?
44デフォルトの名無しさん
垢版 |
2013/03/21(木) 11:21:23.46
C++はもうお荷物になってきたか
2013/03/21(木) 11:22:04.14
HTML5のグラディウスがコナミだとか
スーパーマリオ知らんってどんだけ情弱なんだよw
46デフォルトの名無しさん
垢版 |
2013/03/21(木) 11:26:22.34
>>42,43
今はCommonJS関係ないよ
でもそれが種だった
じぶんはv0.1代の頃から知ってたからよく分かる

それに少し考えてご覧
ほぼストリームのIOだけ提供すればいいサーバーサイドとはスケールが違い過ぎる
絵も音も出さなくちゃいけない
それらはバッファやストリームのラッパーを作ればいい次元じゃない

既存のを使えばいいとか無茶ぶりすぎる
それならそもそもなんのためにJavaScriptを使うのか
仮に既存のCのラッパー大量に用意してはいどうぞ
はて、Cで開発していた頃と何が違うのか
既存のWeb技術を利用でき既存のWebアプリ開発者でも参入できるからいいんじゃないか

それに仕様ってのは作ったはい終わりじゃすまない
それで済むのならHTML5だってもめてない
長い時間をかけて改善を繰り返さないと完成しないもの

そこまでしてゲームサイドJS環境を作れたとしてどんな意味があるのだろうか
2013/03/21(木) 11:36:14.49
でもそれが種だった
でもそれが間違いだってわかった。
二度と同じ事を繰り返すことはないだろう。
2013/03/21(木) 11:36:52.80
> それらはバッファやストリームのラッパーを作ればいい次元じゃない

え? なんで?
根拠が無いなぁ(笑)
2013/03/21(木) 11:59:19.32
実行効率じゃなくて開発効率が悪いからかんべんしてほしいわ。

function hoge(x) {
x.maxLength = 100;
}
↑これをスペルミスで

function hoge(x) {
x.maxlength = 100;
}
↑と書いてもエラーにならないで、なんとなく動いちゃう言語。
2013/03/21(木) 12:00:12.97
時間がかかるのは標準技術だから
独自技術なら時間はかからない。
現にゲーム業界の速度は、標準技術を確立する速度を超えている。
2013/03/21(木) 14:05:14.51
JavaScriptつーかECMAScriptでstrictモード対応なら>>49みたいな心配はいらないんだけどなぁ
2013/03/21(木) 14:07:44.88
C++を捨てる、なんてどこにも書かれてないな。
こういう釣りは、ゲハとかそっちの方面でやってくれ。
2013/03/21(木) 14:39:13.62
>>51

>>49の例はstrictモードでも防げないだろ
2013/03/21(木) 14:42:39.98
そもそも>>49はhoge()がオブジェクトxの実装詳細を知っているのが前提という糞設計なのが問題
2013/03/21(木) 14:45:41.46
実装詳細ってなんだ?
公開プロパティだろ?

それともメソッドにすれば解決する問題だと思ってるのか?
2013/03/21(木) 14:49:40.74
>>55
> 公開プロパティだろ?
Javascript知らないのがバレバレ
2013/03/21(木) 14:54:09.76
メソッド(setter/getter)にすれば、少なくとも「なんとなく動いちゃう」は防げるだろ
ただし、それがJavaScript的なお作法に適合するのかどうかはわからんが
2013/03/21(木) 14:55:28.39
あ、typoが問題じゃ無くて、外部から新たなプロパティを設定できてしまうのが問題なのか
だったら、俺はその防ぎ型を知らんわ
2013/03/21(木) 15:09:05.85
>>55
他言語だって、変数を公開して、外で自由に触らせるのは良くない設計だよ?
2013/03/21(木) 15:24:26.71
>>56
恥かいたのはお前だったなw
6155
垢版 |
2013/03/21(木) 15:29:18.67
こういう時のために、Object.seal()があるんだよ
無知どもめ。
2013/03/21(木) 15:31:38.22
いまどきメモ帳でコード書くわけじゃあるまいし
最底辺プログラマが書くC++よりは安全だろう
2013/03/21(木) 15:42:03.20
IDEのサポートが弱いのもダメだな。

動的型.vs.静的型の議論で「動的は簡単に書けて生産性が高い、
静的は安全に書けます。適材適所で使いましょう」みたいな大人の
意見を言うやつがいるけど、ぜったい動的は生産性低いだろ。
2013/03/21(木) 15:48:04.44
>>61
seal()で、どうやって>>49の問題を防ぐつもりなの?
2013/03/21(木) 15:57:54.19
>>63
つ TypeScript
2013/03/21(木) 16:10:11.93
>>64

>>49の問題って何?
2013/03/21(木) 16:15:16.11
>>65
そういうのが出るってことは、やっぱ動的型の言語に問題感じてる人は多いんだろうな。
2013/03/21(木) 16:35:45.71
javascriptが速いのはx86とarmだけ
2013/03/21(木) 16:46:14.37
>>66
> >>49の問題って何?

まんまその通りだけど。
・スペルミスしたときに
・と書いてもエラーにならない
・なんとなく動いちゃう
2013/03/21(木) 16:46:24.66
それ以外はwebいらないってことで
2013/03/21(木) 16:47:21.92
>>69
今度は、Object.seal()の機能をここにコピペしてみてよ。
2013/03/21(木) 16:52:26.07
>>71
Object.seal()の機能は知ってるから、どうやって>>49の問題を防ぐつもりなのかだけ教えてくれればいいから。
2013/03/21(木) 16:52:42.06
正直ゲームなんて多少変な挙動あっても適当に動いてりゃ許されるだろ
バグまみれでも大して問題にならないのってゲームプログラムだけだよね
2013/03/21(木) 17:06:01.88
もうおしまいだ〜!!

C++はおしまいだ〜〜!!
2013/03/21(木) 17:06:28.17
>>73
ゲームの方が、(精神的な)子供が多いから大問題になる気がするが
2013/03/21(木) 17:15:30.02
>>72
Object.seal()の機能に、
>>69の問題を防ぐって書いてあるじゃん。

読んでないだろお前。
2013/03/21(木) 17:30:15.16
>>76
> Object.seal()の機能に、
> >>69の問題を防ぐって書いてあるじゃん。

そうは思えないから、どうやって防ぐのか質問してるんだけど。
コード書いてよ。
78デフォルトの名無しさん
垢版 |
2013/03/21(木) 17:34:38.59
>>45
>HTML5のグラディウスがコナミだとか
>スーパーマリオ知らんってどんだけ情弱なんだよw

もうみんなすごーいんだよーーー



ムダな努力w
79デフォルトの名無しさん
垢版 |
2013/03/21(木) 17:59:31.90
http://appsweets.net/gradius/index.html
とりあえずこのグラディウスを遊んでみてくれたまへ
80デフォルトの名無しさん
垢版 |
2013/03/21(木) 18:08:46.63
>>79
キーマトッリクスが不完全。
81デフォルトの名無しさん
垢版 |
2013/03/21(木) 18:09:46.35
コナミがここまでグラディウスに執着してるとは思わなかったなw
2013/03/21(木) 18:12:20.05
断続的にガクガクになるのは、俺のPCがしょぼいせいか?
83デフォルトの名無しさん
垢版 |
2013/03/21(木) 18:21:05.39
だからこれコナミじゃないってw
2013/03/21(木) 18:29:15.63
>>36
なぜ?という部分を解明してないと
学術論文的な所では確実に無視される

その程度の内容

そもそも、まともなソースコードすら示していないいw
85デフォルトの名無しさん
垢版 |
2013/03/21(木) 18:30:12.17
>>81
是非とも横スクロール・オプション・レーザー付シューティング製作を!
86デフォルトの名無しさん
垢版 |
2013/03/21(木) 18:30:58.70
ナムコナミ
87デフォルトの名無しさん
垢版 |
2013/03/21(木) 18:32:21.85
1面しか遊べないジャン
88デフォルトの名無しさん
垢版 |
2013/03/21(木) 18:58:42.16
パフォーマンス的にやば過ぎるなこれ
こんなの客に出したら社会問題になるな
89デフォルトの名無しさん
垢版 |
2013/03/21(木) 19:30:19.85
>>85
1985年から28年間独裁してるから倒さなきゃな。
2013/03/21(木) 19:52:23.59
>>28
こいつ最高に低能
2013/03/21(木) 19:55:48.26
俺の知ってるニンテンドーのOSはCOMライクな作りでJSインターフェース持ってたよ。
それでブラウザ独自実装してたぞ。
92デフォルトの名無しさん
垢版 |
2013/03/21(木) 19:56:18.14
馬鹿丸出しw
9391
垢版 |
2013/03/21(木) 20:03:43.02
俺?
94デフォルトの名無しさん
垢版 |
2013/03/21(木) 20:05:56.87
>>85
>是非とも横スクロール・オプション・レーザー付シューティング製作を!

コナミの真似をすれば馬鹿と思われるから誰もしないだけw
95デフォルトの名無しさん
垢版 |
2013/03/21(木) 20:08:36.96
本物グラディウスのソースリストいる?
C言語ソースと68000ライブラリ。
2013/03/21(木) 20:14:12.20
>>95
それって、今から読んでもちゃんと読める?っていうか、アホでもよめる??
あと、著作権大丈夫?
97デフォルトの名無しさん
垢版 |
2013/03/21(木) 20:14:45.84
>当時の革命的なシューティングゲームとして1980年の『ディフェンダー』と並び称される歴史的作品。

並ばねーよw

ディフェンダーに失礼。
98デフォルトの名無しさん
垢版 |
2013/03/21(木) 20:15:58.44
グラディウスのストーリー自体はスターウォーズだな。
陳腐だけどw
99デフォルトの名無しさん
垢版 |
2013/03/21(木) 20:19:05.77
>>96

2013/03/21(木) 20:20:04.96
>>98
テーマが暗い
2013/03/21(木) 20:24:19.18
>>99
おれ、釣られたの?
某社のOSはオプソだから知ってるんだよ。
2013/03/21(木) 20:29:18.50
知ってると書く奴の100%は何も知らないと言う法則
2013/03/21(木) 20:34:35.82
というか書ける奴は外部仕様を見れば書ける気がするし
書けない奴はソースコードなんか見ても書けない気がする
2013/03/21(木) 20:40:59.37
じゃー、しーらない。

まぁ、確かに、OSのソースよんだけど全然理解できなかったのはそうだな。
グラディウスのソースはあれだ文学として興味あるね。
どういう文体で書かれてるとか、どうやって動いてるだとか。
2013/03/21(木) 20:57:13.33
>>77
だからObject.seal()の機能書いてみ。
何をしてくれるのかわかってないだろw
2013/03/21(木) 21:06:09.58
ほらねw
2013/03/21(木) 21:20:47.00
始まったな宗教対立が
108デフォルトの名無しさん
垢版 |
2013/03/21(木) 21:24:55.62
C言語独裁体制の崩壊
2013/03/21(木) 21:28:50.03
まあコード書けない低能は
この板ではゴミ
存在する価値すら無い
2013/03/21(木) 21:39:06.21
いよいよ崩壊
2013/03/21(木) 22:06:37.77
>>105
var a = {maxLength:0};
var b = Object.seal({maxLength:0});
var hoge0 = function hoge(x) {"use strict"; x.maxLength = 100; return x.maxLength};
var hoge1 = function hoge(x) {"use strict"; x.maxlength = 100; return x.maxlength};
hoge0(a) // => 100
hoge1(a) // => 100
hoge0(b) // => 100
hoge1(b) // TypeError: Can't add property maxlength, object is not extensible
2013/03/21(木) 22:09:03.58
型宣言しないのがきもい
2013/03/21(木) 22:43:25.56
>>111
こりゃ面白い。

Lispじゃなくて、JSがキビキビ動くようになったらまたAI戦争になるんかね。
2013/03/21(木) 22:57:23.26
まず作らなきゃなw
2013/03/21(木) 23:09:46.21
>>114
そりゃ大変だ。


JSがキビキビ動くようになったらソース互換でかなりすごいことになるな。今更だけどな。
2013/03/21(木) 23:10:37.38
やっとObject.seal()の機能を理解したかw
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況