<commit_before># Alensia

Programmer friendly framework to build RPG style games on _Unity_ engine.

## Motivation

I've been writing business applications in _Scala_ and _Java_ for quite a long time, but I always wanted to create my 
own game someday.

I had thought I'll never be able to do that until I discovered _Unity_ is freely available on _Linux_ (which has been my 
main OS since 2001), and supports C# as its main language. So I was like "Why not?" and decided to give it a try.

But even though I could grasp basics of _Unity_ and _C#_ without too much trouble, I soon realized that it requires 
certain changes in my attitude, or mentality to follow the way that is recommended by tutorials or any other material I 
could find on the internet.

As a programmer, I cannot but think that the most important parts of any system I build to be the code itself. I believe 
that class hierarchies are the conceptual models which represent the system as a coherent whole, for example, and 
reading API documentation is the best way to figure out any project, and the likes.

However, with _Unity_, you are supposed to purchase a bunch of items from Asset Store and throw them into your game 
objects and configure them via GUI. Then you can fill in the gaps with 'scripts' which are often monolithic, heavyweight 
classes that cannot be instantiated outside the Unity runtime, or be easily reused without copy pasting the source.

As such, you are actually _discouraged_ from designing a coherent structure with class hierarchies, and it's not easy to 
follow commonly regarded best practices in programming, like 'programming to interfaces, rather than implementations', 
or preferring POCOs to improve testability, and etc.

I'm not saying the _Unity_'s way is inherently bad. But at least for those people who have strong programming background 
and intend to create a game on their own, I thought there coud be a better way for them to utilize their knowledge.

## Requirements

 * _Unity_ `2017.1` with _.NET_ `4.6` API compatibility (Change in _Player Settings_).
 * [_Zenject_](https://github.com/modesttree/Zenject) `5.3.0` or later.
 * [_UniRx_](https://www.assetstore.unity3d.com/en/#!/content/17276) (Requires 
 `ENABLE_MONO_BLEEDING_EDGE_EDITOR`, and `ENABLE_MONO_BLEEDING_EDGE_STANDALONE` scripting symbol).
 * [_UMA_](https://www.assetstore.unity3d.com/kr/#!/content/35611) (Optional) Used for _UMA_ integration API and demo.
 * [_Reorderable List_](https://github.com/cfoulston/Unity-Reorderable-List)

The demo requires [_Standard Assets_](https://www.assetstore.unity3d.com/en/#!/content/32351) 
package to run, but strafing moves(`A` and `D` key) won't work as intended, because it does not provide any suitable animations.

## Status

It's in a very very very early stage of development. So don't even think about actually using it for anything.

To track current development, you can subscribe to the official 
[forum thread](https://forum.unity3d.com/threads/alensia-an-open-source-programmer-friendly-rpg-framework-in-a-very-very-early-stage.465618/) 
or the project's [_YouTube_ channel](https://www.youtube.com/playlist?list=PLN4J41q17fIKgwcwiwERReerLBgC9GFDf).
<commit_msg>Add notice about ceasing development<commit_after># Alensia

Programmer friendly framework to build RPG style games on _Unity_ engine.

**Development is on hold indefinitely since Jan., 2018. Please read the _Status_ section below.**

## Motivation

I've been writing business applications in _Scala_ and _Java_ for quite a long time, but I always wanted to create my 
own game someday.

I had thought I'll never be able to do that until I discovered _Unity_ is freely available on _Linux_ (which has been my 
main OS since 2001), and supports C# as its main language. So I was like "Why not?" and decided to give it a try.

But even though I could grasp basics of _Unity_ and _C#_ without too much trouble, I soon realized that it requires 
certain changes in my attitude, or mentality to follow the way that is recommended by tutorials or any other material I 
could find on the internet.

As a programmer, I cannot but think that the most important parts of any system I build to be the code itself. I believe 
that class hierarchies are the conceptual models which represent the system as a coherent whole, for example, and 
reading API documentation is the best way to figure out any project, and the likes.

However, with _Unity_, you are supposed to purchase a bunch of items from Asset Store and throw them into your game 
objects and configure them via GUI. Then you can fill in the gaps with 'scripts' which are often monolithic, heavyweight 
classes that cannot be instantiated outside the Unity runtime, or be easily reused without copy pasting the source.

As such, you are actually _discouraged_ from designing a coherent structure with class hierarchies, and it's not easy to 
follow commonly regarded best practices in programming, like 'programming to interfaces, rather than implementations', 
or preferring POCOs to improve testability, and etc.

I'm not saying the _Unity_'s way is inherently bad. But at least for those people who have strong programming background 
and intend to create a game on their own, I thought there coud be a better way for them to utilize their knowledge.

## Requirements

 * _Unity_ `2017.1` with _.NET_ `4.6` API compatibility (Change in _Player Settings_).
 * [_Zenject_](https://github.com/modesttree/Zenject) `5.3.0` or later.
 * [_UniRx_](https://www.assetstore.unity3d.com/en/#!/content/17276) (Requires 
 `ENABLE_MONO_BLEEDING_EDGE_EDITOR`, and `ENABLE_MONO_BLEEDING_EDGE_STANDALONE` scripting symbol).
 * [_UMA_](https://www.assetstore.unity3d.com/kr/#!/content/35611) (Optional) Used for _UMA_ integration API and demo.
 * [_Reorderable List_](https://github.com/cfoulston/Unity-Reorderable-List)

The demo requires [_Standard Assets_](https://www.assetstore.unity3d.com/en/#!/content/32351) 
package to run, but strafing moves(`A` and `D` key) won't work as intended, because it does not provide any suitable animations.

## Status

Development is on hold indefinitely, since I decided to move to [Godot](https://github.com/godotengine) 
engine and start over. I already started a new project named _[Alley Cat](https://github.com/mysticfall/AlleyCat)_ to 
continue pursuing my goal.

You can read about my motivation of the decision [here](https://forum.unity.com/threads/thinking-about-moving-to-godot.510826/), if you like.

For historic purposes, you can see how the development had been going from the official 
[forum thread](https://forum.unity3d.com/threads/alensia-an-open-source-programmer-friendly-rpg-framework-in-a-very-very-early-stage.465618/) 
or the project's [_YouTube_ channel](https://www.youtube.com/playlist?list=PLN4J41q17fIKgwcwiwERReerLBgC9GFDf).

{'fraction_non_alphanumeric': 0.06891002194586686, 'fraction_numerical': 0.014630577907827359, 'mean_word_length': 4.677740863787376, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 17, 'lorem ipsum': 0, 'www.': 8, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1283654', 'n_tokens_mistral': 2078, 'n_tokens_neox': 1886, 'n_words': 910}