任天堂「今後C++は捨てJavaScriptで開発していく」
任天堂のゲームはこれまで,CやC++といったプログラミング言語で開発されており,
そのため高いパフォーマンスを発揮していたが,反面,開発に時間がかかっていたという。
このセッションではそれ以外の方法,つまりHTMLやJavaScriptを使ってWii Uの全機能にアクセスしつつ,
より手軽にゲーム開発を行う方法が説明されるようだ。
http://www.4gamer.net/games/999/G999905/20130316001/ >>200
ありがと。
>>196
それだと、maxLengthを隠蔽できてない。
newを使う場合はこう。
var Foo = function() {var maxLength;};
Foo.prototype.setMaxLength = function(val) {maxLength = val;}
Foo.prototype.getMaxLength = function() {return maxLength;};
var x = new Foo();
console.log(x.maxLength); // => undefined
x.setMaxLength(100);
console.log(x.getMaxLength()); // => 100
console.log(x.maxLength); // => undefined
x.maxLength = 200; // => can't change Foo's property
console.log(x.getMaxLength()); // => 100
try {
console.log(x.getMaxlength());
} catch (e) {
console.log(e.message);
} newを使わない場合はこう。
var x = {};
(function(obj) {
var maxLength;
function getMaxLength() { return maxLength; }
function setMaxLength(val) { maxLength = val; }
obj.getMaxLength = getMaxLength;
obj.setMaxLength = setMaxLength;
})(x);
console.log(x.maxLength); // => undefined
x.setMaxLength(100);
console.log(x.getMaxLength()); // => 100
console.log(x.maxLength); // => undefined
x.maxLength = 200; // => can't change Foo's property
console.log(x.getMaxLength()); // => 100
try {
console.log(x.getMaxlength());
} catch (e) {
console.log(e.message);
} それでは、
obj.setMaxLength(1) を
obj.MaxLength = 1 と
間違えてしまうことを防げない。 JavaScriptにグローバル変数は存在しない。 >>206
実際のプロダクトコードでは、複数階層の名前空間に入れるけどね。 >>208
ためしに
var y = new Foo();
y.setMaxLength(200);
x.getMaxLength();
ってやってみたら? >>210
あぁ、203に合わせると最後は
console.log(x.getMaxLength());
か
とりあえずやってみてよ? 基本的にJavaScriptでは「プライベート変数」はあきらめたほうがいいよ。
newも使わない方がいい。
男なら、publicなプロパティだね。
で、結局typoの問題は解決できないけど、それがJavaScriptってもんだ。
嫌ならTypeScriptがいいんじゃね(使ったことないから知らんけど)。 そもそもタイポと戦えないような奴はプログラマになっちゃいかん Javaをやってると奴隷とかドカタとか煽れるけど、スペルミスなんて、JavaやC#なら入力した
瞬間にエディタが教えてくれるに、それを人間が目で探すとか、動的型の言語のプログラマは
マシーンですか。 JSに限った話じゃないけどテストを書けば問題ないってのは机上の空論だな
>>203もテスト(らしきもの)を書いているけど、結局のところなんのチェックも出来てない訳だし
(203はそろそろ自分の間違いに気がついただろうか?) >>203
だからこれは何なんだよw
>var Foo = function() {var maxLength;};
>Foo.prototype.setMaxLength = function(val) {maxLength = val;}
>Foo.prototype.getMaxLength = function() {return maxLength;};
意味がわからんぞw
偉そうなこというまえに基礎からやりなおしてこいよw >>216
打ってる最中に画面見てないのか?
大文字小文字も規約決めてるだろうし… l-1とか0-Oとか他人が打ち間違ったのを尻拭いする任務を与えよう 真に恐ろしいのは目の前で裸で立ちすくむソイツではなく
どこに潜んでいるかわからない見えないアイツ
2年前に学ばなかったのか >>204とか
x.getMaxLength()をx.getMaxLengthってミスしてもとりあえず動いてしまうように見えるし最悪w JavaScriptが開発効率高いなんてド素人の妄想 >>221
やっぱりスペルミスは目を皿のようにして確認してるのか。 安い底辺プログラマが使えるから開発コスト下げられるとか妄想してるんだろうけど 上のほうが他人のタイポがどうこう言ってる人がいるけど、
自分ならスペルミスしないってのもそうとう凄いと思う。 >>228
「上のほうが」じゃなくて「上のほうで」だな。
頭悪いから日本語でも誤字しまくりだわ。 実行時までエラー発覚しないような言語でバイナリ配信とかサポセン死亡か >>217
間違いに気づいたよ。指摘ありがと。
普段はnew使わないんだけど(JSONでサーバからデータを受け取ることがほとんど)、
なんとなくnewの例も書いてみたくなって背伸びしちゃった。
ほとんどの場合がViewかViewModelらしきものを使うから、>>204みたいなコーディングしてる。
あと、try-catchはテストじゃなくて、例外が発生することの確認。
結局、JavaScriptってtypoには無力だと思うんだが、反論ある人居る? >>226
眼を皿って…typoしたときって自分で違和感ない?
「ん?俺今typoしたかな」って…その時だけ見ればいいじゃん >>231
ES5以降で導入された(る)機能を活用すればインタプリンタが検出してくれたり、
エディタで補間なんかもやりやすくなるよ
>>203だってstrict modeならエラーがちゃんとでるし
もうちょっと勉強しましょう >>232
ああそうなの。
おれ、タイポにぜんぜん気づかないときがあるわ。
IDEがスペルミスをチェックしてくれる環境とかすごい楽で好き。
スクリプトのstrictモードに需要があったり、JavaScriptにコンバートする
型付の言語が発表されたりするのをみたら、スペルチェックなんか
機械にやらせたいって人おおいんじゃないの。 >>233
それで>>49のtypoの問題は解決できる? >>232
俺はちゃんと resultってタイプしてるのに、resalutが正解だったりするからな。 >>239
ITドカタとか「お前の担当のこの画面、こっちのとだいたい同じだからコピペして作れ」みたいのが基本だからな。 つかJavaScriptもEclipseとかVSでエディットすればtypo減るだろ 良く分からんが、Javascriptの有名なライブラリがsealを中で自動的に
使ってくれるんじゃないの?
Javascriptにオブジェクト指向のclassやextendsのような構文を追加
するライブラリがわんさかあるって聞いたが、そのライブラリどもが
自動的に使ってくれるんじゃないのか Luaのような使い方するんじゃないのかなと思ってたんだが違うの? >>246
デフォルトでseal状態にされたら安全にはなるけど不自由になる
sealをサポートしてないブラウザの割合も多いし 普通、コア部分はC/C++で開発して簡易なゲームロジックは独自スクリプトとかLuaとか使うもんじゃないの
そこをJavaScriptにするってこと?だったらもう少しマシというか新しい言語選んだほうがよくね? コア部分なんて一回開発したら使いまわせるようにするだろ ここまで、どういう経緯でこういう事になったのかの説明無し
http://www.nintendo.co.jp/ir/library/events/130131/05.html
ゲーム機のソフトウェア開発が、どんどん大きな投資を必要とするようになった今、
ウェブサービスの転用、プロトタイプの作成、あるいは、インディーズゲーム制作など、いろいろなことを考えたとき、
ソフトウェアの作り手を広げる試みは非常に重要になってくると思っています。
3月のGDCでは、この『Wii Street U powered by Google』や、
いくつかのVoDサービスの開発に使用された、HTML5やJavaScriptなどのウェブ技術でWii Uソフトを開発できる環境や、
Unityという多くのユーザーに使われているクロスプラットフォームのゲームエンジンなど、
ソフトウェアの作り手を広げる試みについて、いくつかご紹介できる予定です。
はいはい解散解散。 でもやっぱり専用環境購入とロイヤリティはお高いんでしょ? 日本のゲーム会社は無能のカスしかいないのに
なぜか全部自分のとこで作ろうとする 固定長メモリの不安感のせいだと思う。
C時代のレベル、ヒープとかあまりメジャーじゃなかった頃はまだイケてた。
海外の文献見てもメモリ管理怪しいのに何で向こうは気にしないんだろうね。 Unity 風味前提で、って話でしょ。
この古臭いレスの輩たちは何なの? UnityのJavaScriptはJavaScriptと全く違うだろ あの文章みてUnity風味っていうんだからそういうことだろ そもそもお前ら
> UnityのJavaScriptはJavaScriptと全く違うだろ
↑これが理解できるのかw凄いな その程度をエスパーできない奴にプログラムを書かせちゃいかんな HTML5ベースのJavascriptの環境とUnity環境両方用意するって話だよね >>23
> ビックリするかもしれないけどいまやJavaScriptのコードは平均してJAVA並の速度なんだよね
こういう「平気でうそをつく人たち」がウェブ界隈には多すぎる。
JavaScriptは以前よりはずっと速くなったが、依然C++よりはずっと遅い。
単純な演算でも平均して5倍は遅いし、
実アプリケーションではメモリ効率の悪さによる速度低下やキャッシュミス、GCポーズ、
低レベルアクセスのオーバーヘッド、SIMD命令やマルチスレッドを活用できないこと等でさらに差が広がる。
各種ベンチマーク。2のTime、Memory、Codeの表をチェックしてね。これが現実の性能差。
C++ g++ speed ÷ JavaScript V8 speed | Computer Language Benchmarks Game
http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=gpp&lang2=v8
実際、C++/OpenGLで書かれたものとJavaScript/WebGLで書かれたもので
5倍スループットが違ったりするんですよ?
一番オーバーヘッドが小さい(それこそほとんどOpenGLにコールを渡すだけの)WebGLでだ。
しかもこの1年、JavaScriptの速度の伸びは停滞している。一通り最適化しつくしてしまった。
だから今まで頑なにJavaScriptで十分と言っていたMozillaがasm.jsを作ってきたりしている。
>>36
>これは極端な例だけどJSがダントツで早い状況もある
C++のコード見たがなめとんのか
https://github.com/kwatch/template-engine-benchmarks/blob/master/others/string-concat/cpp/bench_strcat.cpp > /*
> * Are you a C++ expert? PLEASE ADVICE ME!
> */
くそこいつまじでむかつく
素人がベンチマーク取んなや ttp://phoboslab.org/log/2012/08/letter-to-john-carmack
> Native code developers shouldn’t be defensive about true accusations of security and stability
> limitations, and JS developers shouldn’t be defensive about true accusations of inefficiency.
「ネイティブコード開発者はセキュリティと安定性の限界に対する正しい非難に抗弁するべきではないし、
JavaScript開発者は非効率性に対する正しい非難に抗弁するべきではない」
とかのJohn Carmackがおっしゃっております(´・ω・`)
心より同意するものです(´・ω・`) セキュリティて
CならともかくC++はあんま起きないだろ >>273
こういう、ベンチマークで10倍差だからとかいう奴って、ほんと頭悪いわ >>23はJavaと比べてるんだけどさ
>>273てアホなの? >>283
そういう事を言ってるんじゃないんだが
お前には理解できんか 人のせいにしないで、自分の説明能力をうたがいましょう。 Enchant.jsってやつ使ったけどhtmlとjsでここまでできることに感動した。 javaと比べたら平均して2倍遅い程度か
意外とすげえな
速いじゃん これがHTML+JavaScriptの世界は開発速度なんだよな。
【GDC 2013】HTML5+JavaScriptで容易にWii Uでのゲーム・アプリ開発が可能に・・・「任天堂ウェブフレームワーク」発表
http://www.inside-games.jp/article/2013/03/28/65097.html JavaScriptは言語であって、コンパイラが優秀であればC/C++に匹敵する速度は出る。
任天堂は、専用コンパイラを開発する、しているはず。
言語的にはC/C++と似通っていてるが、自由度が高く開発効率はいいんだろう。 読んだら違ってた。環境自体は独自開発じゃなく既存品を使うんだな。 別にほっといたってC++なんか捨てられるのはわかってるんだからわざわざ騒ぐ事でもないな
これからスクリプトでやっていく流れは皆わかってるだろうし、JavaやC#とスクリプト言語を使い分けていくでしょう webkitベースということだからfirefox系のものを使うことは無いな
JavascriptVM自体はどこから持ってきたのか説明はあったのかな?