The Old World is a top-down 2D Sandbox RPG (Custom-built Engine and Framework written in C++ interfacing with OpenGL via SDL) focused on a dynamic game-play as well as creating a rare interaction with the environment and AI inside the game.
The World is randomly generated, allowing for a fresh new start of an adventure every time you choose to create a new character. With an ever-changing World where history is made every second of game-time.
You're a part of creating that history, every choice you make will have an impact on the world, Whether it is a good or bad impact is your choice to make.
Villages may arise from only a handful of people and may in time either grow and bloom into a larger settlement or crumble and fall. Perhaps you will be one of the infamous few who have a thirst for destruction of a whole civilization, or you might be one of the few willing to overcome greed, theft and plundering in order to construct and build up your own Empire among the many roaming this world.
Whomever you may be. The thief, stealing for his or her own gain from all sorts of places, innocent people or large Empires. Maybe you'd prefer to wield the immense forces of Magic or a brutal Warrior. You have all of these choices and more, these are made during your history in the world, there is nothing pre-determined.
Everything is yours to change if you so wish.
The World is yours for the taking.
No Limits, Pure Sandbox.
I'm here to talk a bit more about the Conversation System which I've spent a little while designing and I hope you will enjoy it!
This system is a bit unique compared to other Conversation Systems you may have encountered so I'm going to explain a few systems before getting onto the goodies.
One of the core systems which the conversation system heavily relies on is the Familiarity system. This system in itself is composed of different smaller systems which have their own functions.
Two of these subsystems is the one that keeps track of the character's Personality and the other keeps track of Familiars.
The Personality subsystem simply keeps track of the unit's likings, reputation and other various personality traits, such as being sarcastic, evil, cruel, good etc.
The Familiar subsystem keeps track of when a unit is spotted, when such an event occurs a "snapshot" is taken where it saves the body properties, currently equipped gear and inserts that into a list of other snapshots. This data will allow for a very good way of exchanging information both between Player <-> NPC as well as NPC <-> NPC,
Yes, NPCs will be essentially using this data and conversation system to exchange information about the world.
Even if these snapshots save what you're currently wearing doesn't mean that the NPCs will immediately remember the information correctly, this depends on several factors.
A Familiarity score is calculated from variables such as, how many times the unit has been seen before, the time since last seen, the time in between seeing the unit, the time of encounter and the lighting during encounter. These are only a few factors which are needed in order to calculate such a score, obviously talking to an NPC will increase this score of being recognized.
This opens up game mechanics such as being able to commit a crime, change your outfit and possibly fool the people which saw you committing the crime. Or you could possibly stalk an NPC, understand what they were, get similar clothes and commit a crime and later pin it on that unit.
As you can see with such a system it opens up a lot of cool new game mechanics which I think will be quite interesting to explore.
Now this is the real meat of this post, the Conversation System.
As I mentioned previously and which I hope you've noticed by the Familiarity system explanation that this conversation system is a bit different from similar systems previously.
This system is a bit unique in the sense that it will be dealing with a lot of dynamic data. Anything from various generated area names, town names, towns, NPCs, familiarity data to quests and tasks.
So obviously due to dealing with such a massive amount of dynamic data the conversation system itself has to be fairly dynamic. This includes being able to select more than 2-3 different response messages which most other games uses.
I'd argue that you need to be able to select both the Topic of the conversation and even the Response Type, which is exactly what I started designing the system around. This will allow for having 2-3 different responses per Topic and per Response Type, which is a lot of different conversation responses and which is exactly what an RPG of this size deserves.
Topics will be selectable in the conversation GUI, these topics will be selected depending on relevance to the current NPC, so for example if the NPC is a good friend of yours in-game, you won't start getting suggested Topics about getting to know the NPC (Such as asking for his/her name etc.).
The relevance will be calculated depending on where you currently are, reputation/standing with an NPC and even time of day etc.
Topics will essentially be a guiding point for your conversation in order to properly interact with the AI in the world and retrieve relevant and necessary information.
Being able to choose Topics of the Conversation is good and all, but it'll only get you so far, in order to properly interact in a good way you need to be able to respond in a specific "tone of voice".
Which is why currently the design for Response types will include such types as "Hostile, Friendly, Neutral" but also thinking about types like Sarcastic, Vague in order to properly interact in the way you'd like to.
By combining these two concepts I believe it will create quite a unique and interesting way of interacting with the world. It also allows for a fairly cool way of exchanging information, not only between you and the AI but even in an AI <-> AI situation.
By forcing the AI to use this system in order to exchange information you inherently add a delay before everyone in a town knows something, or perhaps you are able to silence the information before it reaches another Unit.
An example of this would be if a unit sees you committing a crime, in regular games you'd be instantly guilty and guards would start chasing you, however by using this system a witness would have to see you and in some way exchange that information, either via screaming or running and telling people.
But due to this inherit latency of information exchange you will be able to silence that victim and stop the spread of information. Which I find adds quite a cool game-play mechanic.
I hope you all enjoyed my explanation of the conversation system or at the very least found it interesting.
Look, I made my Macbook useful T.co
Jul 31 2015, 12:26pm by joxno
@BeautylandUk sounds like a brilliant Friday afternoon :p
Jul 31 2015, 10:54am by joxno
I made some more sushi today :p T.co
Jul 29 2015, 6:38am by joxno
Mmm I made some sushi :p T.co
Jul 28 2015, 2:04pm by joxno
I would just like to declare that I fucking despise Egyptian brackets.
Jul 27 2015, 4:56pm by joxno
You know you're a programmer when you get excited about support for Binary Literals in VS2015
Jul 24 2015, 5:09am by joxno
Best C# exception message I've received to date: "Hostname", Thank you Microsoft for yet another futile fucking debug message.
Jul 21 2015, 5:01am by joxno
@falcogirgis Do you run scheduled builds or on a per-commit basis?
Jul 11 2015, 8:29pm by joxno
@falcogirgis Nothing better than cheap cloud based storage, I did some funky weird Nodejs script to get that shit working from Jenkins
Jul 11 2015, 5:38pm by joxno
@falcogirgis Hehe, that doth sound pretty good though. So far I mostly just run the build and upload a RAR to Dropbox on success
Jul 11 2015, 5:35pm by joxno