HaxeFlixelでHelloWorld

# HaxeFlixel を推す　（ インストール手順 ）

![HaxeFlixel&Ninja.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957376/a62756ee-3135-21a6-3d98-29b5c07ce71d.png)

## HaxeFlixel とは
今この投稿を見られている方は恐らくHaxeFlixelをググった人なので、ご存知かとは思いますが、HaxeFlixel とは、2Dゲーム用のゲームエンジンです。Unityなど人気のゲームエンジンに比べると、（GUIが無いため）プログラムの全容が理解しやすく、初心者に向いている様に思います（もちろん筆者を含め...）。
ちなみに筆者はUnityを触った後でこちらを試したところ、「なるほどそーゆーことか！」と理解が深まったので初心者の方にはこれを推します。（　UnityではGUIでシーンを作成したり数値を入力したりを間に挟むので、あっちこっち移動して複雑でした。HaxeFlixelでは、コードの記述とアセットファイルの追加だけなので、シンプルに作成出来ます。ただ、2Dゲーム専門なのでそもそも比べるべきではないかも知れませんが。。　）
もちろん、windows、mac、linuxに対応しています。そして無料です、拍手。

このゲームエンジンが使用されている有名な作品は「FNF/Friday Night Funkin'」です。インディーゲーム好きならご存知な方も多いのではないでしょうか。

## Haxe について
Haxeflixel では Haxe というプログラミング言語を使用することになります。
あまり聞き慣れない言語で WEB に日本語での情報が少ない為、最初はある程度苦労しましたが、HaxeFlixel 公式にあるオープンソースのデモを魔改造しながら弄っていると徐々に分かってくるので、その方法をお勧めします。
言語自体は java や C# などに似ているので気構える必要は無いです。
 
## インストール
公式サイトでこの記事が要らないくらい丁寧に説明されています。が、推したいので書きます。（この投稿は単に HaxeFlixel 良かったよという事を広める趣旨であり、インストールに関する情報は公式で事足りますが、このページを開いた方はお付き合い下さい。）

### Haxe のインストール
ここから始まります。
[HaxeFlixel公式サイト](https://haxeflixel.com)

Getting Started をクリックし先へ。
まずは、Haxe をダウンロード、インストールします。（筆者は windows と Arch Linux でインストールしました）

#### <code>winの場合</code>

 Windows 64-bit Installer  または　 Windows 32-bit Installer を使用環境に合わせてダウンロード、管理者権限でインストール
 

#### <code>macの場合</code>

OS X Installer　をダウンロード、管理者権限でインストール

#### <code>arch-linuxの場合</code>
pacman でインストール
まず pacman を最新に！
```ruby:terminal
$ sudo pacman -Syu
```
からの、haxe インストール
```ruby:terminal
$ sudo pacman -S haxe
```
すると、インストールの確認。
```ruby:terminal
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (5) liburing-2.8-1  mariadb-libs-11.6.2-2  mbedtls2-2.28.9-1
               neko-2.3.0-9  haxe-4.3.6-1

合計インストール容量:  52.73 MiB

:: インストールを行いますか？ [Y/n] y
```
次でディレクトリを作成します。
```ruby:terminal
$ mkdir ~/haxelib && haxelib setup ~/haxelib
```
（　他のlinuxは管轄外です。　）

### HaxeFlixel のインストール
<code>windows、mac、linux 共通</code>

以下の3つをhaxelibを使用してshellでインストールを行います。
```ruby:terminal
$ haxelib install lime
$ haxelib install openfl
$ haxelib install flixel
```
limeをセットアップする。
```ruby:terminal
$ haxelib run lime setup flixel
```
limeコマンドをインストールする。
```ruby:terminal
$ haxelib run lime setup
```
上記を入力すると、
```ruby:terminal
$ Do you want to install the "lime" command? [y/n/a] ?
```
と出るので、<code>y</code> を選択。

続いてflixelコマンドをインストールします。
```ruby:terminal
$ haxelib install flixel-tools
$ haxelib run flixel-tools setup
```
コマンドエイリアスを追加して良いか聞かれるので、
```ruby:terminal
Do you want to set up the command alias 'flixel' to 'haxelib run flixel-tools'?
A simple flixel script will be added to your /usr/bin/ [y/n]?
```
<code>y</code>で許可します。

続いてデフォルトで使用するIDEを選択します。（ 筆者は、VSCode です。 ）
```ruby:terminal
Choose your default IDE:

  [0] Sublime Text
  [1] FlashDevelop
  [2] IntelliJ IDEA
  [3] Visual Studio Code
  [4] None
```

VSCodeを選択すると自動で起動する設定を加えるか聞かれます。（　筆者は <code>n</code> を選択しました）
```ruby:terminal
Do you want to automatically open the created templates and demos with Visual Studio Code? [y/n]?
```

現在の設定が表示されます。
```ruby:terminal
Your current settings:

Default Editor			: Visual Studio Code
Auto open with IDE		: false
```

以下を入力する事でアップデート出来ます（　現在は必要無いです　）。
```ruby:terminal
$ haxelib upgrade
```

## インストール後
```ruby:terminal
$ lime
```
と打つと
![2024-12-24-08:01:48-screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957376/b6f0d15d-5fde-90a1-d351-35b468cb731a.png)
です！
楽しい気分にさせてくれます！ neofetch みたい。

## Hello World
#### projectの作成

まず任意の場所に HaxeFlixel の Projects フォルダーを作成してカレントディレクトリにします。
```ruby:terminal
$ mkdir ~/HaxeProjects
$ cd ~/HaxeProjects
```

そして、新しいプロジェクトフォルダーの作成は次を実行するだけです。
```ruby:terminal
flixel tpl -n "HelloWorld"
```
これで必要なものが揃ったプロジェクトフォルダーが作成されました。

では、VSCode などの IDE からフォルダーを開いてお決まりの HelloWorld プログラムを作成しましょう。（ VScode でフォルダーを開いています。IDE はそれぞれです ）
```ruby:terminal
$ code ~/HaxeProjects/HelloWorld
```
HalloWorld ⇒ source ⇒　PlayState.hx を開いて <code>super.create();</code> の下に
次を加え、 Ctrl + s で上書き保存します。
```ruby:PlayState.hx
var text = new flixel.text.FlxText(0,0,0,"HelloWorld",64);
text.screenCenter();
add(text);
```
PlayState.hx の全体は下図の様になります。
![2024-12-25-07:46:35-screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957376/4edd1157-91a9-cbdd-151e-a85549cbf5a0.png)

ターミナルに以下を入力し、 neko でテストします。（ neko は Haxe の仮想マシンです ）
```ruby:terminal
$ cd ~/HaxeProjects/HelloWorld
$ lime test neko
```
「タタタタタンッ🎵」という軽快な音と共に neko が立ち上がり、画面へ HelloWorld が表示されれば成功です。
![2024-12-26-07:27:49-screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957376/46994559-581f-1b20-a18d-0fc4f9959986.png)

![2024-12-25-08:08:26-screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957376/ae226fba-8b6d-6765-5c47-7b71a2dc7da2.png)

これで一先ず開発出来る環境になりました。