Frameworks

Alensia

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 5.3.0 or later.
  • UniRx (Requires ENABLE_MONO_BLEEDING_EDGE_EDITOR, and ENABLE_MONO_BLEEDING_EDGE_STANDALONE scripting symbol).
  • UMA (Optional) Used for UMA integration API and demo.
  • Reorderable List

The demo requires Standard Assets 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 engine and start over. I already started a new project named Alley Cat to continue pursuing my goal.

You can read about my motivation of the decision here, if you like.

For historic purposes, you can see how the development had been going from the official forum thread or the project’s YouTube channel.

FAQ

What is ‘Alensia’ anyway?

Sorry, I have no idea. The name just came up to my mind.

Isn’t there everything you need on Asset Store already? Are you really that poor so you can’t affford to buy anything?

As I’ve written my motivation above, I wanted to make a foundation on which I can build my game in a way that I feel the most comfortable and intuitive.

In a word, it’s a ‘programmer’s framework’, for those who prefer writing codes to tweaking GUIs like me.

Besides that, there are not many options if you want to make an open source game, as only a few items on Asset Store supports such an usage.

So, as a supporter of open source movement, I want to help people creating open source games, and also hope that my project would benefit from contributions by similar minded people in future.

So, it’s just a framework then? Where’s the real game?

I’m planning to create one based on this framework, but haven’t decided what exactly would it be yet. So I just decided to create a generic framework first, so I can build upon it later.

When can I expect to see it finished, or at least become remotely usable?

Maybe in next 10 years? (I hope Unity will still be there then.)

Feedback

Other than using the issue tracker at the project page, You can visit the official forum thread here and leave your comments.

License

This project is provided under the terms of Apache License, Version 2.0.