If you've been following me at all you know I'm working on a classic dungeon crawl RPG called
The Rise of Dagon and as such I have need of a quest and dialogue system in my game.
Today I would like to not bore you with the details of how I typed so diligently on my game, but rather offer up a discussion about the QuestFlow system I'm writing and that I am looking to at releasing it for free.
As such I wanted to discuss what my needs were that bring me to this decision and then discuss with you (if you are interested) in having / using this system? And if you are interested what I might need to do to make it better for you in the short, mid and long term?
If you ever get a chance to work in professional software development that uses the Agile methodologies you'll come across this thing called a "user story". A user story describes what the end user expectations are about the software you are about to deliver.
When I sat down to write (or purchase) a quest system for The Rise of Dagon I realized I needed to create a user story of what my expectations were going to be otherwise I might spend some time doing the wrong things and my time is limited and valuable so .. yeah lets not waste it!
The user story I came up with was:
"I need to be able to implement a quest system that allows both myself and my game playing customer the ability to create a full quest campaign with NPCs, Quests, Dialogue's, Locations, and Rewards.
Ideally this system needs to be able to be integrated to the actual game.
Bonus points for the ability to re-use it in my next game!"
And so I went looking for a system that I could purchase that would do this for me on the Unity Asset store, and I also went Googling for solutions as well.
What I came up with was a lot of systems that
almost worked; but ultimately one big clinchers came up again and again:
my game playing customers would not be allowed to use it without them also paying!
And this is critical for me because
end user modification is huge ; if your game takes off and your gamers are
able to create their own content ; they will create far more content themselves than you will ever humanly be able to do!
No system that required my gamers to go buy a hundred dollar software like
Articy Draft for example was going to "add value" to my game.
Rather requiring a 3rd party purchase would just put the first 3 nails in the coffin of modding for my game as far as I'm concerned!
While I did find some assets on the Unity asset store that could have let me make my game - I could not have freely distributed them to my customers; or I would have had to do extensive work to integrate the 3rd party utility to interface through my games UI.
I came to a point where I was considering the approach of using a 3rd party dialogue system called
Dialogue System by Pixel Crushers but after prototyping a quest with it and then spending 2-3 days reading documentation I came away with a feeling that they were trying too hard to please too many people with endless 3rd party support options. Ultimately the system feels bloated and integrating it in to my game would probably require creating some sort of bridge between Unity and the LUA back end scripting that they use.
If I was willing to do all that (and I was) I should also be willing to spend a few days considering a homebrew system that was written purely in Unity and C# and that wouldn't require any dancing around with endless 3rd party systems.
So this week I wrote the initial implementation of Quest Flow and realized it was going so well that this really does seem like the way to go after all.
Additionally because I have the requirement that my gamers be able to use it freely; I may need to post it on the Unity Asset store as a package (or a git repo, or an importable package included with the game etc).
Given that .. we come to my post today .. if I'm going to be posting it for free then I should probably consider opening it up even further - to you!
So if I were to do such a thing, I realize that I myself would have questions like : what license, what features, does it do this thing I want it to do?
And given that I'm trying to develop games to SELL to MAKE MONEY .. it has to be a license that won't get in my way of doing that, nor should it do so if you want to use my quest system or distribute it to your customers!
So I wanted to open a discussion about the following topics:
- What license would be most attractive for this? Currently I'm leaning towards Apache 2.0
- What features would you like to see in such software - considering at least initially it is intended to be a complete solution within Unity in C#.
- Should I in fact make this a fully open source project and post up a git repo for it and invite people to collaborate?
Obviously I'm okay with any other discussion as well but these are the ones top of my mind at the moment.
Where it is at right now:
- I have written base classes for NPCs, Locations, Quests, and Conversations
- I have written Unity Editor windows for all of the above
What do I plan on doing next?
After writing the Unity Editor windows I realize that this system really needs to work together better and I'm tempted either take a more detailed combined editor window approach that integrates all of the items together OR alternatively utilize the new Unity GUI to create a full featured Quest editor.
The advantage of using the Unity GUI to doing it is that anyone adopting the system could simply use this for themselves and their gamers by implementing it in a scene.
This second approach feels most right to me because of the end goal of user modification; but maybe I'm not thinking everything through here?
Thoughts?