Best method to store data for a dynamic RPG quest system?

Hello! Our team is working on an RPG type of game. I am the current lead programmer until we can afford to hire more, and I wanted to get a start on at least the organization process of how to store all data for a dynamic quest system.

So my actual question is this; What would be the most efficient way to store data (such as quest names, targets, waypoint locations, functions for scripted events, etc) for quests that can be triggered throughout the game?

I googled this, not much info unless I just searched wrong. I thought maybe a base quest class would work, and then maybe each quest could be its own class deriving from the base quest class. Would that work well?

Thanks in advance!

Hey JTrocks55,
Generally a datatable or a database tends to be best for this. A datatable is built into ue4, and is basically just and excel spreadsheet in ue4 with all your data (you can even import an excel file, tho you need to export in the .csv format). I prefer the datatable method myself as it’s built in and generally tends to work. Some references on datatables are: Data Driven Gameplay Elements | Unreal Engine Documentation and https://wiki.unrealengine.com/Using_excel_to_store_gameplay_data_-_DataTables.
The other way to do it is using a database. This is not built in, and may be some extra work, but generally it tends to be seen as a pretty good way. I’d reccomend taking a look at SQLite for ue4 (https://github.com/VegaDesert/UE4-Sqlite3-Plugin) and using something like http://sqlitebrowser.org/ to create your database. Please note that arrays generally are not a thing in SQL, and you will have to use a blob or a dedicated table to store arrays, but that should be available nearly anywhere as it’s just good old SQL/SQLite. Another benefit of using a database like SQLite is that it’s easier (in my opinion) to make a 3rd party application, so you could for example have a QuestCreator winforms applica or something like that to let your game designers easily add quests etc :)!

I hope this awnsers you question, if not please quote me so that I can find you back :slight_smile: