13の抹茶です @mokha_trogy
これはrogy Advent Calendar 2015の13日目の記事です。
Javaもいいやつだよ。
Goはcgoというものがあって、Cのコードを利用できます。OpenGLとOpenALバインディングが有志によって作られています。
JSならWebGLとWebAudioAPIが扱えるのでゲームを作れます。
わーい。
おしまい。
現在Go でゲームを作ろうとしている途中なので、バリバリ書けるわけじゃないんですが、ゲーム制作という視点で良さそうだと思ったことを書いていきます。
長くなるので、グローバル理工人なので、最初にまとめを書くと、
特徴
Goroutineは普通のスレッドより軽いので、気にせずもりもり書いていいっぽい
AIなどの時間のかかる処理で使えそう
クラスはないけど、インターフェースで何とかなると思う
ジェネリクスもないけどリフレクションで何とかなるっぽい
ゲーム制作視点少なくない?新しい言語なので、ライブラリがまだ充実してない印象.
未使用変数があるとコンパイルエラーになるなど、厳しいところがある.
$GOPATH/src以下にプロジェクトを作ってコードを書くのが流儀っぽい.
- 動的型付け
- プロトタイプベース
- 非同期
- GC
型欲しいにゃん...
js特有の気持ち悪い書き方はしたくないにゃ
そんな問題を解決すべく、変換するとJavaScriptになる言語というのがあって、AltJSと呼ばれている. js界隈ではこの変換をトランスパイルって言ってるのをよく見かける.
有名なのは以下
- CoffeeScript: ruby, pythonっぽい糖衣構文, クラス
- TypeScript: 型注釈, 型推論, ジェネリクス, クラス
JavaScriptをあまり良く知らないままAltJSを使って詰まる部分もあると思うので、ある程度慣れたら移行するのがいいかなぁと思います。
小さいプログラムなら生jsで、大きめになるならAltJS使ったほうがいい気がする
エディタはなんでもいい.
ゲームエンジンだと、最近出たphina.jsとか、有名なenchant.jsなど.
ブラウザ間の互換性とかが面倒だったりする.
スクリプト言語なので、パフォーマンスが...というのもある
おしまい
これはrogy Advent Calendar 2015の13日目の記事です。
ゲームを作るならC++一択だと思っていませんか?
まぁでもC++はいいやつだよ。
他の選択肢もあるよ、ってことでGoとJavaScriptの2つを紹介します。という感じの記事です。まぁでもC++はいいやつだよ。
Javaもいいやつだよ。
Goはcgoというものがあって、Cのコードを利用できます。OpenGLとOpenALバインディングが有志によって作られています。
JSならWebGLとWebAudioAPIが扱えるのでゲームを作れます。
わーい。
現在Go でゲームを作ろうとしている途中なので、バリバリ書けるわけじゃないんですが、ゲーム制作という視点で良さそうだと思ったことを書いていきます。
TL;DR
↑この見出し文使ってみたかったC++嫌ーでもパフォーマンスは欲しい → Go
並行処理したい → Go
Webでサッと公開したい → JS
ライブラリでサクッと書きたい → JS
どちらの言語も実はサーバーを書くのにも強いので、
ネット経由でマルチ対戦できるゲームを作りたければクライアント側と言語が統一できて良いです. Go
ライブドアブログの見出しがh3以外ゴミなのでなんとかしろ👊どんな言語
- コンパイラ言語(C/C++みたいに実行可能形式にコンパイルできる)
- 強い静的型付け
- オーバーロード,クラス,継承,ジェネリクス,ポインタ演算がないシンプルな言語
- 型推論
- ガベージコレクション
- Goroutineによる並行処理
- パッケージ
- クロスコンパイル
公式日本語訳ページにこんなのが有ります → C++プログラマ向けGo講座
標準でパッケージマネージャーが付いてくるので、gitのインストールも必要. あとgccも (cygwinのやつはダメらしい)
Windowsでも特につまる所はないと思う.
標準でパッケージマネージャーが付いてくるので、gitのインストールも必要. あとgccも (cygwinのやつはダメらしい)
Windowsでも特につまる所はないと思う.
開発環境
多くのIDEがプラグインで対応. IntelliJ IDEA, LiteIDE, Eclipse, NetBeansなど. VisualStudioCodeやAtom, SublimeTextなどのエディターもプラグインあり.
基本的に補完が利いて、保存時にgofmtやgolintが走ってくれれば何でもいい感じがある.
(Goをインストールすると自動整形ツールとかLintが標準で入ってくる)
(Goをインストールすると自動整形ツールとかLintが標準で入ってくる)
特徴
Goroutineは普通のスレッドより軽いので、気にせずもりもり書いていいっぽい
AIなどの時間のかかる処理で使えそう
クラスはないけど、インターフェースで何とかなると思う
ジェネリクスもないけどリフレクションで何とかなるっぽい
ゲーム制作視点少なくない?
ライブラリ
新しい言語なので、ライブラリがまだ充実してない印象.
パッと見Azul3Dが結構進んでそう.
2D描画も調べるとちょいちょいある.
rogyではOpenGL直書きが流行りなので、Let's低レイヤーしよう
最新の4.xまで対応 : go-gl/gl
GLESとかWebGLへの対応もしてるので2.xまでのやつ : goxjs/gl
(glfw3バインディングもあるので、合わせて使う)
go-gl/glでクロスコンパイルできないので誰か助けて.
ポ
未使用変数があるとコンパイルエラーになるなど、厳しいところがある.
$GOPATH/src以下にプロジェクトを作ってコードを書くのが流儀っぽい.
コーディングルールがかっちりしてるのはいいこと. (特に複数人での開発では)
Goのドキュメント
JavaScript
どんな言語
- スクリプト言語- 動的型付け
- プロトタイプベース
- 非同期
- GC
そもそもjsってHTMLをもにょもにょするやつじゃん!どうやってゲーム作るの!
HTML5のCanvas要素で描画することが出来ます.
Canvas APIでもいいですが、WebGLのほうが基本的にパフォーマンスはいいです.
ゲームプログラミング自体ではDOM操作のようなWebフロントエンドの知識はそれほどいらないけど、必要な場面はやっぱりある.
ちなみにRPGツクールMVはjs製らしいですよ!
ブラウザで動くので、Web上に公開すればすぐ遊んでもらえる
スマートフォン対応もやればできる
electronを使えばデスクトップアプリとして動かすことも可能
ブラウザでWebページ操作のために動くという特徴上、ファイル読み書きとかモジュールがまだ整っていない
ファイル読み書きはセキュリティ上ダメだったりする
ゲーム制作では結構つらいところ
セーブデータとかはLocalStorageかサーバー立てて送信ぐらいかなぁという感じ
Web界隈の資産は膨大にあるので、モジュール読み込みなどはRequireJSやBrowserifyで解決できたりします.
特徴
文法的に特に紹介したいことがなかったブラウザで動くので、Web上に公開すればすぐ遊んでもらえる
スマートフォン対応もやればできる
electronを使えばデスクトップアプリとして動かすことも可能
ブラウザでWebページ操作のために動くという特徴上、ファイル読み書きとかモジュールがまだ整っていない
ファイル読み書きはセキュリティ上ダメだったりする
ゲーム制作では結構つらいところ
セーブデータとかはLocalStorageかサーバー立てて送信ぐらいかなぁという感じ
Web界隈の資産は膨大にあるので、モジュール読み込みなどはRequireJSやBrowserifyで解決できたりします.
AltJS
クラスがない型欲しいにゃん...
js特有の気持ち悪い書き方はしたくないにゃ
そんな問題を解決すべく、変換するとJavaScriptになる言語というのがあって、AltJSと呼ばれている. js界隈ではこの変換をトランスパイルって言ってるのをよく見かける.
有名なのは以下
- CoffeeScript: ruby, pythonっぽい糖衣構文, クラス
- TypeScript: 型注釈, 型推論, ジェネリクス, クラス
JavaScriptをあまり良く知らないままAltJSを使って詰まる部分もあると思うので、ある程度慣れたら移行するのがいいかなぁと思います。
小さいプログラムなら生jsで、大きめになるならAltJS使ったほうがいい気がする