Macでmonoのexeをダブルクリック起動。

Automatorという、様々な操作をapp化出来るソフトがMacには入っている。
これの新規作成 -> アプリケーション/シェルスクリプトから、

  • /bin/bash
  • 入力を引数として渡す

を指定した上で、

TARGETFILE=$1
cd ${TARGETFILE%/*}
/Library/Frameworks/Mono.framework/Versions/Current/Commands/mono $1

という内容で保存(ここではExample.appとする)しておく。
適当なmonoで起動できるexeファイルを用意した上で、⌘ + iから、「このアプリケーションで開く」を先ほどの「Example.app」を指定して、「全てを変更」すると、完了。

F#とAltseedで関数型ライクなゲーム制作

初めに

(* おまじない *)

これはAmusementCreators AdventCalendar(ACAC) 2018の22日目の記事です。
adventar.org

最初に謝りますが、この記事は約4万2千字あります。
ソースコードが殆どですが、実質講座みたいになってますね。
興味があればゆっくり読んでみてください。

さて、「F#関数型プログラミングをしてゲームを作ろう!」という記事です。
ただしViewに使用しているゲームエンジンの仕様上、そちらはがっつりオブジェクト指向になってます。
お許しください。

今回の記事の対象者:

  • 張り巡らされた再代入や参照や継承関係に頭を痛めたことがある。
  • 汎用性の高い道具を組み合わせて見通しの良いプログラムを書くことに興味がある。
  • 関数型プログラミングに興味がある / 初心者だ。
  • 関数型プログラミングでゲームを作ることに興味がある。

また、最低限プログラミングとオブジェクト指向に触れたことがあることを前提としています。

今回作成するのはこんな感じのものです。


使用した画像は 白黒ヤギさん 様からお借りしました。 ありがとうございます。
45mix.net


また、GitHubリポジトリはこちらになります。
github.com




なかなか書き終わらず遅刻しました!
冬コミやばい!!
何もかもやばい!!!!!

目次です!

  • 初めに
    • (* おまじない *)
    • 概要
    • どんなゲームに向いているか
  • 事前知識
    • F#
    • TEA
    • Altseed
  • ゲームを作る
    • プロジェクトを作成する
  • Coreの実装
    • 基本的な型を用意する
      • Helperに処理を追加
    • Modelの実装
    • 更新処理
      • Messageで入力を受け取る
  • Viewの実装
    • Altseedでウィンドウを表示する
    • 必要な型を追加する
    • UI要素
      • IHasMsg
      • Button
      • Mouse
    • GameConfig
    • GameUI
      • GameUILayer
      • CoreにUIModeを追加
    • Actorの描画に関するクラス
      • ActorView
      • ActorManagerComponent
    • GameScene
  • 終わりに。


概要

以前、こんな記事を書きました。
wraikny.hatenablog.com

タイトルの通り、F#からゲームエンジンAltseedを使うチュートリアルのような記事です。
しかし、これはC#のコードをそのままF#で書き直しただけのオブジェクト指向プログラミングであり、F#の関数型言語の良さを活かせていません。

そこで今回は、描画と更新処理を分けるModel-View構造を採用します。描画部分でのみゲームエンジンを利用して、更新部分ではそれらに縛られない関数型の良さを活かしつつゲームを作る入門記事となります。今回はAltsedを利用しますが、UnityのようなC#やF#が扱える(.NET/Monoに対応した)ゲームエンジンであれば簡単に応用できます。また、TEAと呼ばれるModel-View構造の、モデルと更新部分を参考にしたものを使用しています。


どんなゲームに向いているか

Model-View構造自体は、パズルゲームやRPGなどゲームの本質的な処理と描画が紐付いていないものを書くのは楽になります。ただ、それに限らずどんなゲームでも使用できますし、好みの問題だと思います。また、せっかくF#を使用するなら関数型言語の強みを活かしたコードを書きたいですし、F#でオブジェクト志向はやりづらいので、個人的には気に入っています。ゲームエンジンに依存しない処理を書くことができるので、移植性も高まります。


続きを読む

.NET(Mono)上のexeをMac向けにする備忘録

実行時のMonoのインストールを不要にする



この記事

qiita.com

を教えてもらったので,やってみました.
少しハマった部分があったのでその辺を参考にしてもらえると。

続きを読む

Kotlin on GradleからAltseedを使う

Altseedとは



言わずと知れたゲームエンジン
.Net Framework/JVMで動くすごいやつ.
ゲームエンジン - Altseed -

環境(ざっくりと)



IntelliJ IDEA
Gradle
JDK 1.8.0_162

続きを読む

AltseedとF#ゲーム製作入門

AltseedでF#を使う入門をした,という記事です.

初めに



Altseedというゲームエンジンがあります.
複数のプログラミング言語に対応しており,C++や.NET (Mono)やJVMから使うことができます.
詳しくはこちらの公式ページをご覧ください.
ゲームエンジン - Altseed -

F#Microsoftの開発している関数型言語です.C#と同様に.Net Frameworkプログラミング言語です.

この記事は秋津早苗さんのこちらの記事を受けて,もう少し発展した内容を扱います.
akitsu-sanae.hatenablog.com

続きを読む