読者です 読者をやめる 読者になる 読者になる

VNCTST games 開発日誌

ゲーム開発日誌

筆者について

誰?

VNCTST gamesのゲームを作っている人です。

最近の動向

cljspixi.jsを使い、html5ベースのブラゲ(ブラウザゲーム)を作成します。

筆者の目的

面白いゲームを作る事です。

なんでかと言うと色々とややっこしいのですが非常に大雑把にまとめると大体、以下の理由になります。

  • 筆者にとって嫌いでない人たちに楽しく遊んでもらう為に、面白いゲームを作ります。

    • 筆者にとって嫌いな人たちの為にゲームを作っている訳ではありません。
  • 「有用なAIを作成する」という別の目的があります。そして「AIは内部に『環境』を持つ必要があり、その『環境』が『人間が入って楽しめるようなものである』ほど、より良いAIとなる」という考えに基き、『人間が入って楽しめるような環境』≒よくできたシミュレーション(非現実)世界、を作成します。

    • あんまり適切な説明になってないですが、大雑把にはそういう事です。

各技術に対する感想

あくまで筆者の個人的な感想のメモです。

技術に興味のない人は別に読まなくてもよいものです。

  • RDBMSはshit

    • RDBMSは実際有用である。だが筆者にとって以下の点がshitである
      • SQLという、bullshit構文を持つbullshit言語が標準のインターフェースになっている
      • lispにとって重要な、「シンボル」「キーワード」等のatomおよび、(汎用オブジェクトを入れられる)「リスト」「シーケンス」「タプル」「ハッシュテーブル」等のデータ構造のストレージを綺麗な形でサポートしているRDBMSが見当たらない
        • もちろん、lispの重要な特性の一つであるwrite/read invarianceによって、データを文字列としてシリアライズすれば保存する事はできるが、その場合はRDBMSから適切にインデクスを扱うのが困難になり「それならNOSQLの方が良いのでは?」という事になってしまう
    • じゃあどうするか
      • 普通にnosqlを使ったり、mariadbをnosql風に使う等
      • 現在はmapdbを試している
  • JVMはshit

    • JVMは実際有用である。だが同時に「使いやすいものではない」「分かりやすいものではない」「最善のものとは言えない」でもある
    • JVMが、どうしてこういう(駄目な)仕様になってしまったのかもよく分かるのだが、駄目な事には変わりはない…
    • じゃあどうするか
      • cljsの品質が向上してきたので、クライアントサイドについてはcljsでよいと考えている
        • つまりJVMの代わりにEcmaScript(js)エンジンを採用するという事。これはこれで色々と使いにくかったり不便だったりする部分も多いのだが、個人的には「JVMよりはマシ」という結論となった
      • サーバサイドをどうするかはかなり悩むところ
        • サーバサイドもcljs+node.jsを採用する事を考慮したいが、cljs+node.jsが使い物になるのかを確認するのに結構な時間が必要そう。この時間を掛けてもよいのか?
        • cljs+node.js以外の選択肢としては、scheme等、他のlisp処理系を選択する等。しかし通信時の相性を考えるなら、やはりJVM上のcljしかないのではないか?
        • 現在のところ、まだJVMから逃れられていない…
  • domはshit

    • domは実際有用である。だがGC回りが地獄。仮想dom回りの技術がもうちょっと進化するまでは、なるべくさわりたくない
      • 現状の仮想domは結局バッドノウハウが必要となっている感が非常に強い。素直に(バッドノウハウを意識せずに)扱えるようになるには、あと数年はかかるのでは?
    • じゃあどうするか
      • 基本的にはcanvasにひきこもる。どうしてもcanvasの外に出ざるをえない時もあるが、その時もなるべくdomいじりが最小限になるようにする

TODO: 思い付き次第、今後に追加していきます。

その他の情報