Voxel Quest
  • Home
  • News
  • Videos
  • Gallery
  • Contact or Subscribe
  • downloads and source

Update 03 / 11 / 2015

3/12/2015

18 Comments

 
Hello! It has been over a month since the last update.  I apologize for the delay, but as I have mentioned elsewhere there really was not much to look at as the majority of my work was doing IO in a text-based console.  I have been hard at work on the AI, and now have the logical portion of it mostly complete.  It is capable of making deductions as I have described prior in the forums and elsewhere.  This is a full "scripting" language with compiler, although for the time being it is parsed using rules from JSON which makes it somewhat unwieldy but I just wanted to get a parser working as fast as possible.  It contains many features, and is both a subset and extension of the language Prolog, albeit with different syntax and grammar.
Picture
I use quotes on "scripting" language because it is not writing AI scripts like you might see in other games.  Rather it is just specifying a knowledge base with various rules and relations.  You can then pose queries to this knowledge base in order to make deductions and determine whether or not things are true or false.  Additionally you can do more advanced proofs and solve statements for a given set of variables, finding the variables which result in a true set of facts.  If you are interested in learning more about this, I recommend learning Prolog - there is a good free book I used here for reference.

So why not just use an existing solution like Prolog? Well, first of all Prolog is relatively bloated.  My language fits within under 1000 lines of code if you ignore the JSON parsing (less minus comments/whitespace).  It is compiled to integer symbols so it avoids string manipulation and comparison.  I only need a subset of Prolog's functionality, so it would be wasteful to include the entire thing.  Moreover, Prolog is not sufficient on its own.  I must carefully modify the deduction algorithms to support things like score maximization, and thus I must have a full understanding of the code involved.  This would be much harder if I went in and tried to modify an existing Prolog implementation, and more error-prone due to the larger breadth Prolog has over my subset language.

The ultimate goal of this is to build an AI that can make logical deductions and perform surprising, emergent behavior based on things that are not explicitly scripted.  The term I have been throwing around, as have some other games, is a "Game of Thrones" simulator - something capable of weaving together a complex plot in which every NPC has their own set of motivations.

I also added in some billboarding to show sprites in the placeholder boxes, which makes it much easier to figure out what a given object is.  Also reorganized all the items and added in placeholder NPCs and monsters.  Art is by 7soul and available for purchase in most game dev asset stores.
Picture
Picture
Also, as a quick (dumb) experiment, I messed with voxel warping.  Just 2 lines of code, could have some interesting uses for spell effects and such.
18 Comments
Vincenzo
3/11/2015 08:13:19 pm

Your project is very innovative and the warping effect in the video is just a pinch of what could be done with magical and unnatural effects.
I cannot just think of your game as one of a kind, but as a potential historical masterpiece.
I wish you every success!

Reply
Gavan Woolery
3/11/2015 09:14:56 pm

Thanks so much, I'm flattered! :)

Reply
Alex Krokos
3/12/2015 09:49:39 am

Absolutely what I expected out of you and a hell of a lot quicker. This game is going to break new ground with emergent AI. However, I worry that even if npcs were more intelligent than real people it would be so hard to tell what is going on in their heads that it wouldn't make a difference to the gameplay. It needs to be clear and fun finding out what AIs are thinking and why they are doing what they are doing. Figuring out their motives by talking to them needs to be a big part of the game, and manipulating them too. You need to give them a "voice" so they're fun to talk to (Not a real voice, a way of typing and expressing their personality.)

It's gonna be difficult to bring the intelligence into the gameplay, but I trust your competent hands to do it.

Reply
Gavan Woolery
3/12/2015 11:33:42 am

Alex - thanks! I forgot to point out how this is handled here. I hinted at it else where like on in the forums and on the TIGForums I think. Basically I allow the player to drill down into the motives of any NPC, and figure out what deductions led to what actions and motives, and why. At first, every piece of knowledge will be "public" and every NPC will be omniscient, and if this works I will do more complex AI where each NPC can have unique knowledge, in addition to a "common sense" knowledge base. Initially it will be handled with just inspecting a given npc by double clicking on them, but in the future gathering knowledge will involve you talking to NPCs (and NPCs talking to eachother!). :)

Reply
Gavan Woolery
3/12/2015 11:35:17 am

Also, you will be able to present new "facts" or "pacts" into the system, for NPCs to evaluate, which is the basis of creating quests, giving commands, and so forth.

Reply
Chris Rasmus
3/13/2015 12:36:02 pm

Not that this might be an issue for you, but I would caution against feature creep with your innovative AI. I would set myself a few simple goals for basic interactivity and save complex interactions for Your Game 2.0, or even Your Engine 2.0.

I'd hate to see you bogged down with AI problems down the road and lose heart on development.

Gavan Woolery
3/13/2015 03:43:41 pm

@Chris Rasmus -
Feature creep is an issue for me everywhere, not just the AI. I have to constantly prioritize features because I am the type of person that will get sucked into working on one area. That said I am trying to keep things in control and have others watching my back in that respect. :)

My first pass at the AI will be for some basic functionality, nothing perfect, but enough to get an idea.

Daniel Ferreira link
3/13/2015 09:54:18 pm

Looks interesting!

Any chance you may remember the name of the game(s) that you mentioned in the video, that uses a similar approach to AI using PROLOG?

Reply
Gavan Woolery
3/14/2015 06:20:33 am

@Daniel - I tried searching for it but cannot find it! It involves some characters talking and asking some basic questions ("how much money do you have?" etc)

Reply
Daniel Ferreira link
3/15/2015 02:46:10 am

Hm, your description reminded me of this video I saw years ago (though I think it's not Prolog)

https://www.youtube.com/watch?v=fk0I4VcsUh4

Gavan Woolery
3/15/2015 03:44:47 am

@Daniel - yep, that's the one!

Christian Hultberg
3/14/2015 01:29:11 pm

This game gets better every update and I can't wait for release. Keep up the great work :)

Reply
Gavan Woolery
3/14/2015 02:26:08 pm

Thanks! :)

Reply
paul
3/18/2015 05:18:05 am

How do you plan on implementing NPC dialog? Will it be hard coded into the quest system? Will NPC s have unique speech/personalities or will they just have a canned strong response?

Reply
Gavan Woolery
3/18/2015 06:24:21 am

Great question! To be honest, I have a few approaches but have not yet decided firmly on one. I think in the first pass, dialogue will consist of passing the most basic commands and queries. "If you do X, I will give you Y", "Tell me about X", "Where is Y", "Why is X angry at Y" etc. Also there will be a large variety of physical actions you can perform, beyond the basic stuff like give, take, etc - you can hug someone, kiss them, slap them, tickle them, detain them, and many more actions you don't often see in RPGs - perhaps a bit closer to something like the Sims.

Reply
Gavan Woolery
3/18/2015 06:25:45 am

Also, a few dialogue options can be used to convey emotions or other things: insult, seduce, tell a joke, etc.

Reply
paul
3/27/2015 07:37:58 am

when is your next post, and what is it you are working on for it?

Reply
Gavan Woolery
3/27/2015 07:57:47 am

Probably this coming week, I'm adding in some basic things right now light character selection, combat, other interaction option, and additionally working on something with the AI to react to state changes.

Reply



Leave a Reply.

    RSS Feed

Legal Information