Saturday, September 26, 2015

QuestFlow 1 now available, free, open source

As discussed last week on my blog here and reddit  I have written QuestFlow 1 is a Quest and Dialogue system for Unity 3D 5.x line written in C#.

QuestFlow 1 is Apache 2.0 licensed

If licenses are TLDR for you: yes you can make a game with this and sell the game if you wish!

QuestFlow 1 includes


  • scriptable object's for Campaign, Quests, NPC's, Conversations, Locations, and Achievements
  • Unity Editor Scripts for creating the scriptable objects
  • Unity Editor Windows for editing the scriptable objects
  • an Observer pattern based Quest Event Manager script to use in your implementation of the system in game.
  • some generic NPC icons to get you started prototyping
  • a sample scene demoing the QuestEventManager


Quest Flow 1 does not include:


  • A gameplay implementation.


----------------------

The bitbucket git repo:
https://erebusman@bitbucket.org/erebusman/questflow-1.git

----------------------
If you just want a Unity package to import grab this package:

https://bitbucket.org/erebusman/questflow-1/raw/ad44510d6b39326047bc543034ed424f59e11ee2/QuestFlow1.unitypackage

----------------------

The git overview page contains a readme that has a little bit of usage instructions to get you started.

There is still lots of room for this to improve including external file serialization and loading but right now this is a "handle everything inside the unity editor" type of solution.


There could be a game play implementation that went along with this however I just see that as something so personal to the game your writing I'm not sure if that's is really the target audience for this or not?


I expect a total of 3 people will download it and I'll be the only person to ever use it ; but hey its free so surprise me?!


Comments/discussion welcome.

Saturday, September 19, 2015

QuestFlow : A Unity 3D Quest & Dialogue Editor, free?

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?

Saturday, September 12, 2015

How I used the Observer pattern to implement doors, pressure Plates, pit traps, and levers

If you are like me at all when it comes to "design patterns" you might sort of shake your head and get a little lost in the architecture jargon that most of the texts, books, and websites often take when they are talking about them. As such the first two years of my programming experience I really didn't "get" patterns!

Well not too long ago I stumbled across the excellent book Game Programming Patterns by Robert Nystrom (which is available in all sorts of formats including on the web for free so check it out!) and finally someone was writing things in a way which made sense to me!

What I think really made the difference was that Robert was speaking about the patterns as they relate to game design - which is something I think about constantly - so I could totally relate to the concepts.

What struck me as interesting upon finishing the book is  that I had been creating/using recognized patterns on my own and I didn't even know it!   For instance I had implemented both a Singleton and Observer-like pattern for my Enemy Manager.

Thursday, September 10, 2015

In the middle of a long slump Indie Insights reinvigorated me with a simple lets play session for my game..


I've been working on the Rise of Dagon since April of 2014 and to be honest with you I had hit that really long deep trench  in the middle of a long project where daylight disappears and you completely lose sight  a project and have no hope of seeing the end either.

I still believed in my project - this is still the kind of game I've always wanted to make - but lately it literally felt like every step forward was becoming exponentially more difficult.

Then something totally unexpected happened to me:  a gentleman by the handle of Highsight who runs a Lets Play channel on Twitch for Indie Games in progress called Indie Insights reached out to me to offer to play my game, The Rise of Dagon, live on his channel.

To be totally fair Indie Insights has a fairly small audience (which he was upfront about) so realistically this was not 'my big chance' to show my game to the world or anything .

Rather it was just what it sounded like ; a chance for a tiny bit of exposure and maybe some helpful feedback.

Much to my surprise though the mere fact that anyone had reached out and showed interest in my game reignited my creative drive and spark! All of a sudden instead of feeling like I was carrying a ten ton heavy-thing with me; I was able to crank out what would easily have looked like a month's worth of work in the next two weeks getting my game polished up and presentable with several new features!

I had of course planned to do these things anyways - but all of a sudden I had really strong short term goals and a very demanding reason to make them happen!

I've linked the youtube video for his playthrough here in the post - and let me tell you I was actually really impressed with Highsight's feedback during the play through.   Particularly helpful was his style of 'stream of consciousness' feedback of just saying out loud exactly what he was thinking as he played through.

Sure : many things he talked about I either planned to do or had thought about doing but all of a sudden many things became painfully obvious I needed to do right away.

One great example is his feedback about right-click equipping items .. I had this on a list of  things to do "one day" but I realized that both because I had not implemented a 'paper doll' system yet and the confusion about inventory management in general that really I simply had to make my inventory much easier to use.

And that's a funny thing for me to admit because one of my goals had always been to make my user interface better than the old classic games like Eye of the Beholder and Dungeon Master - yet here I was neglecting it to the point that it really distracted/detracted from a lot of the game play how inventory management was difficult for him to figure out.

Otherwise though something that really inspired me was his ability to pick up on my core design for the look and feel of the dungeon.  It's super easy to get so locked into tunnel vision when you are making a game that you completely lose sight if your game looks and feels like you want it to - or you are just telling yourself that it does ..

Highsight's feedback about my dungeon's look and feel and the movement controls really inspired confidence that I was doing it right and that confirmation is HUUUGE for me! If the dungeon and movement don't feel right - this game is not going to be worth playing!

Another cool thing came out of him playing my game - and that is I've attended the live cast of the show a few times now and participated in giving feedback to the other developers whose games are being played.

Even when it's not your personal game being played - you learn things from watching Highsight play and comment on what' hes experiencing; and then comparing your observations and feelings about the game being played vs his.  Then at the end of a game play through he takes feedback from the audience  - which further helps spur discussion that may differ or match your perceptions about the game.

It actually reminds me of when I took art classes in college; and we would go around at the end of class and provide critical feedback to each other in a really constructive and thoughtful way.  This is something that's really intensely difficult to get as an indie and I enjoy it immensely when I can!

In summary I have to send out a heart-felt thank-you to Highsight for taking the time to show interest and play through my game - he made a big difference in my motivation that I'm still seeing the benefits of  - and that I'm very grateful for!