This is exactly what I have been looking for. Why more people are not using SQL and API to run data driven multiplayer game is beyond me. So little information on this. Thanks for making this. I have also been looking for how to keep items (stats, naming, prefix, suffix, etc) on SQL and pull from the DB instead of a massive congested Unreal solution. Much like how World of Warcraft DB's are setup ... granted they use some crazy excel based nonsense databases as well lol
The more you use relational databases, the more and more things you discover you can do with them. And the point you make about pulling the data from the DB instead of a bloated unreal solution also applies generally to having neater code; I feel it kind of makes you program better, because the data isn't in your project and you cant 'cheat', like hardcoding enum values etc.
@@ggamedev exactly. There really needs to be more "how to" videos showing the relationships between SQL DB's and Unreal Engine for multiplayer. Keep up the good work man. So far, you are the one i will be following for UE to SQL for this stuff. I struggle with external UE stuff and having videos like this will help me learn.
Thank you! Coming from a web background & trying to make an RPG I was pretty puzzled about how best to deal with all the data. Thankfully I found this and didn't try data tables 😂
Thanks a lot! 🙂 It is still early days with it so far, but I use it in my own game projects, and I'm adding new features and refining things as I go along.
Watched the whole series, great stuff, good tutorial! Downloaded the plugin to use in my project and it's telling me it doesn't work with Unreal 5.1! Any plans to make it compatible anytime soon or should I go down an engine version?
I saw you on the Discord and we spoke there, but in case anyone else sees this comment: 5.0 and 5.1 are fine, there were no changes between those versions. You just need to load the project in an IDE (VS or Rider) and recompile. I realise this is not something people who only use blueprints are used to, so I will be making a video in the future about it. For now, if you use Discord, follow the link in the video's description and myself or one of the others can try to help you out. And once again, I'm sorry I didn't pull my finger out yet and bother to upload it to the marketplace, which would have spared you these issues.
Yes you can, but there are certain things to consider; SQLite is a local database framework - so you would be creating accounts on the computer where the user is playing the game. There are times you might want that (like if several people will be using the same computer and you want them to each have their own personal game account on it), but bear in mind that this is not stored on a server somewhere, its only on that specific computer. Secondly, regardless if you have local accounts with Sqlite, or use a client/server based system, please, please, please make sure that you research and follow some best practices regarding the collection and storage of passwords. Passwords should never be stored as plain text (they should be hashed, in most cases using a *salt*), and they should never be transmitted between computers in plain text either (meaning any hashing or encryption should be performed on the device where the password is entered.) Obviously, exactly what you need to do will vary depending on how your setup will be implemented, and you will need to research the appropriate best practices that relate to the specific hardware and software layers chosen (the stack). If you would like to discuss this more, jump onto the discord, link in this video's description.
Does this plugin support using the default SQLite database instead of your wrapped SQLiteX? Because in my project, there are still some other plugins (such as Movie Render Queue) using SQLite. Thank you!!!
No, you can't use the default sqlite. Unfortunately it's stuck on an older sqlite version lacking many useful features, and epic don't seem very interested in updating it. That is why I needed to stop using it.
Using 5.2 and a blank c++ project with your plugin, using your aliendb, a BP DataAcessLayer that loads all queries on startup, and a GetDatabase call in the level blueprint, I'm getting an error "Custom Property List Not Initialized for /Game/DataAcessLayer.DataAcessLayer_C" upon launching a packaged build (works fine in editor)
5.2 certainly changed up a few things, so problems are more than possible. I will do some tests myself and upload any revisions to Github in the next few days.
UPDATE: I can report that the plugin compiles and works fine on 5.2, using the latest code (on GitHub) It was probably OK before, but I have been doing some updates to it anyway, adding a couple of new features, and trying to namespace the sqlitecore from Epic so that it doesn't cause collisions with other plugins that require sqlitecore (it should now be using its own updated version 'SqliteCoreX' Anyway, everything compiles fine on 5.2. I built and tested a SHIPPING build of the tutorial project and all is working as expected. NOTE: Running 'Standalone Game' from the editor does NOT work. I'm not really sure why, and right now I don't really care to investigate, because running PIE works fine, and packaging for shipping also works fine, so it is more than likely a problem caused by it not being able to access the database assets (.db files)
Hello, I am very happy with your great plugin. I followed the tutorials and everything works fine in the editor, but I am facing a problem when my project is packaged. When I run the executable, the game says: Plugin 'SQLiteGameDB' failed to load because module 'SQLiteCore' could not be found. Is there something I could have missed?
That is, unfortunately, completely MY fault 😞 As this framework is a work in progress, and I was concentrating on testing the features themselves, and making it work in C++ and BP, plus a dozen other things, (excuses, excuses) I didn't actually bother to try packaging the test project... If I had done, I would have noticed the same error as you, and I would have been able to fix it before posting things to GitHub. Basically the error is caused by ME not properly referencing the modules in the places they need to be referenced. It works fine in the editor, but not in a packaged build. I have fixed this now, and also made a change to the naming of the module to differentiate it from the one Epic provides. New module is called 'SqliteCoreX' (I got tired with the IDE telling me 'SQLiteCoreX' violated the naming conventions for its use of consecutive capital letters!) Packaging has also allowed me to catch ANOTHER blunder that I made in the video which I posted. Namely, in part 2 I described how to include your database folder in the packaging process. This works fine, and the contents are indeed packaged. However, SQLite cant get at them inside the package - DOH! When I say to add your folder to 'additional non-asset directories to package', I should have said: add your folder to 'additional non-asset directories to COPY' I am REALLY sorry, seriously, I know how it feels to be 'chasing smoke' trying to find and fix these types of errors. All I can say is thank you for pointing it out which allowed me to fix it, and the other error, so that hopefully no one else will have the same problem. Right! I better get those changes onto GitHub, and then correct those videos!
@@ggamedev You really should not blame yourself, we all know how complex these things are and you know, tracking down problems is also a good way to learn (and I did! ;) ). You already did a great job so far and by the way even greater responding so fast. I'll get the github update asap. Thanks a lot for your dedication to your project and the community.
@@laurentmenten4644 That is very kind of you to say. Im still double checking the changes I made, but everything looks good so far so it'll go on github a little later, along with a note about any changes that might be needed in code due to the name change
You are totally right, you certainly do. Its the next video... sorry, I have been a little distracted with some other things since I posted this. The intention is to show how to set up a new SQLite DB using several of the available tools, and explain database relationships, etc.
It works fine; 5.0.3 is what I currently have installed, and I just tested the tutorial to make absolutely sure everything was ok. If you are having problems, there must be another reason. What error(s) are you getting?
@@ggamedev When I'm trying to open TutorialDemo project this message appears: The following modules are missing or built with a different engine version: TutorialDemo, SqliteGameDB, SQLiteCore, SqliteGameDbEditor. Almost same message when I'm trying to add the plugin to a blank project
Excellent, thanks for that feedback! And you are kinda right about the version - the one I uploaded was indeed built with the previous version of unreal engine. But I give you all the source code for every module (because I didn't put the plugin on the epic store yet), which means all you have to do is get it to rebuild everything. (I think it offers you that when you try to open it?) Now, I am not completely sure how that works for someone only using blueprints and not C++. I *assume* that it still builds the C++ code for you. I might find the time to upload the 5.0.3 version of the project that I have, but honestly all my code is still exactly the same between the different engine versions. If you (and anyone else) are interested, I have set up a discord server to make chatting about these things easier than leaving comments on videos. Its basically 'box-fresh empty' right now, you can find it here: discord.gg/YxjS8qXn
@@ggamedev Hiya! Is the Discord server still available? When I'm trying to join it says that either invitation is outdated or I don't have premission to join :/
@@domiiinikooo That would be because I didn't check what I was doing, and made a link that expired after 7 days 😀 Here is one that should last indefinitely, although there really isn't much going on with the server yet, maybe we can get some good discussions going to help people out. discord.gg/jjy2aJ3hj9
hi, what are the android permissions needed sdk 28 above for SQLite , The read value is working write also sqlite_ok but not updated in database. android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE
I have not tested it specifically on android, but IT SHOULD WORK. SQLite works on android, and the epic sqlite C++ libs that are the basis for my framework have been especially 'nerfed' to work on platforms like android. Basically; Epic do not support certain features of SQLite because it would not work on some of the targets you can compile unreal for, such as android. This is why the often requested feature of having multiple connections to the same database are not supported (on any platform) simply because there are one or two platforms that don't support that. (In most cases that turns out to actually be a good thing, because when most developers want to make multiple DB connections, its often for the wrong reasons and they should actually rethink their code/approach. However it is bloody annoying when you try to run your unreal project to test it, and you left an open DB connection in 'DBBrowser for SQLite', or Rider, and then it crashes your game when you run it...)
That could, rather embarrassingly, be me pronouncing 'RIDER' with a mouthful of marbles 😀 Which is an IDE by Jetbrains, you use instead of visual studio (links to it in some of the other video descriptions)
While I really am not trying to be rude (intentionally), its kinda hard not to be, when you ask such a useless question. My quick answer, using about as much effort as you made to ask, is 'No'. Does that answer help you though? Probably not. Put just a TEEEENY bit more effort into the question itself, and either I, or someone else who reads it, might have enough information to actually help you. _______________________________________________ What specificially was the problem? What did you do? Was there an error message? If so what did it say? What did you try and do in response? Without knowing any of that, its anyone's guess what might be going on for you, but the most likely assumption, is that you grabbed the repo (probably as a zip, maybe not), unpacked it somewhere on your file system, and went straight for the .uproject file and double clicked it. Upon which, you may have been shown a textbox giving you a message that modules had either been compiled with another version, or simply needed to be recompiled. If that was the case, you don't even get any options, you just click the only button, and it will indeed attempt to rebuild those modules for you, before then going on to open the project in the editor. If for some reason it CAN'T rebuild them, it will give you another message saying that you need to do it yourself. In that case, you would right click the uproject file and select 'Generate visual studio project files' after which you would open the .sln solution file in your IDE, and do what Unreal told you to do, rebuild from there. (Unless of course, you dont have an IDE, because... blueprint only user) If something was 'bugged', the IDE would fail to compile it, and more than likely give you some sort of error message indicating what the problem was, which you... or someone else, could use to help you fix it. And just so you understand what I meant by 'a TEEEENY bit more effort', that would be what I did, after reading your question, when I myself went and downloaded the project from github onto a test machine, and got it to run without problems. (It didn't even need to be opened in an IDE to rebuild) So no, not 'bugged', works fine in 5.2, and in fact, even from github, you can look at the TutorialDemo.uproject and see (line 3) that it is already associated with 5.2 of the engine. _______________________________________________ In all seriousness: If you still have problems after reading this, join the discord server (link in the video description) its a much quicker way to exchange details, and for me or someone else to insult you, erm, I mean ASSIST you, especially if there is some more complicated reason why your particular installation isn't working, we might be able to help.
this tutorial is god sent, i use RDB in my career and was not sure how to set up my game. thank you!!!
What the hell, how can your channel be so good?
Thanks for the content :)
...maybe because it comes from the same place as your comment? 👍
This is exactly what I have been looking for. Why more people are not using SQL and API to run data driven multiplayer game is beyond me. So little information on this. Thanks for making this. I have also been looking for how to keep items (stats, naming, prefix, suffix, etc) on SQL and pull from the DB instead of a massive congested Unreal solution. Much like how World of Warcraft DB's are setup ... granted they use some crazy excel based nonsense databases as well lol
The more you use relational databases, the more and more things you discover you can do with them. And the point you make about pulling the data from the DB instead of a bloated unreal solution also applies generally to having neater code; I feel it kind of makes you program better, because the data isn't in your project and you cant 'cheat', like hardcoding enum values etc.
@@ggamedev exactly. There really needs to be more "how to" videos showing the relationships between SQL DB's and Unreal Engine for multiplayer. Keep up the good work man. So far, you are the one i will be following for UE to SQL for this stuff. I struggle with external UE stuff and having videos like this will help me learn.
@@AngryPenguinStudio You are spot on!
@@ggamedev You are a great professor! Brilliant share. We appreciate you.
@@ZwaneMakki Thanks! 😄
Thank you! Coming from a web background & trying to make an RPG I was pretty puzzled about how best to deal with all the data. Thankfully I found this and didn't try data tables 😂
Fantastic plugin!
Thanks a lot! 🙂
It is still early days with it so far, but I use it in my own game projects, and I'm adding new features and refining things as I go along.
Watched the whole series, great stuff, good tutorial!
Downloaded the plugin to use in my project and it's telling me it doesn't work with Unreal 5.1! Any plans to make it compatible anytime soon or should I go down an engine version?
I saw you on the Discord and we spoke there, but in case anyone else sees this comment: 5.0 and 5.1 are fine, there were no changes between those versions. You just need to load the project in an IDE (VS or Rider) and recompile. I realise this is not something people who only use blueprints are used to, so I will be making a video in the future about it. For now, if you use Discord, follow the link in the video's description and myself or one of the others can try to help you out.
And once again, I'm sorry I didn't pull my finger out yet and bother to upload it to the marketplace, which would have spared you these issues.
15:45 oo could i use this setup for a simple account creation/login with password fields
Yes you can, but there are certain things to consider;
SQLite is a local database framework - so you would be creating accounts on the computer where the user is playing the game.
There are times you might want that (like if several people will be using the same computer and you want them to each have their own personal game account on it), but bear in mind that this is not stored on a server somewhere, its only on that specific computer.
Secondly, regardless if you have local accounts with Sqlite, or use a client/server based system, please, please, please make sure that you research and follow some best practices regarding the collection and storage of passwords. Passwords should never be stored as plain text (they should be hashed, in most cases using a *salt*), and they should never be transmitted between computers in plain text either (meaning any hashing or encryption should be performed on the device where the password is entered.)
Obviously, exactly what you need to do will vary depending on how your setup will be implemented, and you will need to research the appropriate best practices that relate to the specific hardware and software layers chosen (the stack).
If you would like to discuss this more, jump onto the discord, link in this video's description.
Does this plugin support using the default SQLite database instead of your wrapped SQLiteX? Because in my project, there are still some other plugins (such as Movie Render Queue) using SQLite. Thank you!!!
No, you can't use the default sqlite.
Unfortunately it's stuck on an older sqlite version lacking many useful features, and epic don't seem very interested in updating it.
That is why I needed to stop using it.
@@ggamedev 😊thanks a lot!
Where to find this framework? Can you share the github or UE market link? I can't find it in UE plugin manager.
Github link in the video description 👍
Using 5.2 and a blank c++ project with your plugin, using your aliendb, a BP DataAcessLayer that loads all queries on startup, and a GetDatabase call in the level blueprint, I'm getting an error "Custom Property List Not Initialized for /Game/DataAcessLayer.DataAcessLayer_C" upon launching a packaged build (works fine in editor)
5.2 certainly changed up a few things, so problems are more than possible. I will do some tests myself and upload any revisions to Github in the next few days.
UPDATE:
I can report that the plugin compiles and works fine on 5.2, using the latest code (on GitHub)
It was probably OK before, but I have been doing some updates to it anyway, adding a couple of new features, and trying to namespace the sqlitecore from Epic so that it doesn't cause collisions with other plugins that require sqlitecore (it should now be using its own updated version 'SqliteCoreX'
Anyway, everything compiles fine on 5.2. I built and tested a SHIPPING build of the tutorial project and all is working as expected.
NOTE: Running 'Standalone Game' from the editor does NOT work.
I'm not really sure why, and right now I don't really care to investigate, because running PIE works fine, and packaging for shipping also works fine, so it is more than likely a problem caused by it not being able to access the database assets (.db files)
Hello, I am very happy with your great plugin. I followed the tutorials and everything works fine in the editor, but I am facing a problem when my project is packaged. When I run the executable, the game says: Plugin 'SQLiteGameDB' failed to load because module 'SQLiteCore' could not be found. Is there something I could have missed?
That is, unfortunately, completely MY fault 😞
As this framework is a work in progress, and I was concentrating on testing the features themselves, and making it work in C++ and BP, plus a dozen other things, (excuses, excuses) I didn't actually bother to try packaging the test project...
If I had done, I would have noticed the same error as you, and I would have been able to fix it before posting things to GitHub.
Basically the error is caused by ME not properly referencing the modules in the places they need to be referenced.
It works fine in the editor, but not in a packaged build.
I have fixed this now, and also made a change to the naming of the module to differentiate it from the one Epic provides.
New module is called 'SqliteCoreX'
(I got tired with the IDE telling me 'SQLiteCoreX' violated the naming conventions for its use of consecutive capital letters!)
Packaging has also allowed me to catch ANOTHER blunder that I made in the video which I posted.
Namely, in part 2 I described how to include your database folder in the packaging process.
This works fine, and the contents are indeed packaged. However, SQLite cant get at them inside the package - DOH!
When I say to add your folder to 'additional non-asset directories to package', I should have said:
add your folder to 'additional non-asset directories to COPY'
I am REALLY sorry, seriously, I know how it feels to be 'chasing smoke' trying to find and fix these types of errors.
All I can say is thank you for pointing it out which allowed me to fix it, and the other error, so that hopefully no one else will have the same problem.
Right! I better get those changes onto GitHub, and then correct those videos!
@@ggamedev You really should not blame yourself, we all know how complex these things are and you know, tracking down problems is also a good way to learn (and I did! ;) ).
You already did a great job so far and by the way even greater responding so fast. I'll get the github update asap.
Thanks a lot for your dedication to your project and the community.
@@laurentmenten4644 That is very kind of you to say. Im still double checking the changes I made, but everything looks good so far so it'll go on github a little later, along with a note about any changes that might be needed in code due to the name change
we need to see how you setup sqllite, not only ue4
You are totally right, you certainly do. Its the next video... sorry, I have been a little distracted with some other things since I posted this. The intention is to show how to set up a new SQLite DB using several of the available tools, and explain database relationships, etc.
This plugin doesn't work with Unreal 5.0.3 :(
It works fine; 5.0.3 is what I currently have installed, and I just tested the tutorial to make absolutely sure everything was ok.
If you are having problems, there must be another reason. What error(s) are you getting?
@@ggamedev When I'm trying to open TutorialDemo project this message appears: The following modules are missing or built with a different engine version: TutorialDemo, SqliteGameDB, SQLiteCore, SqliteGameDbEditor. Almost same message when I'm trying to add the plugin to a blank project
Excellent, thanks for that feedback!
And you are kinda right about the version - the one I uploaded was indeed built with the previous version of unreal engine. But I give you all the source code for every module (because I didn't put the plugin on the epic store yet), which means all you have to do is get it to rebuild everything.
(I think it offers you that when you try to open it?)
Now, I am not completely sure how that works for someone only using blueprints and not C++. I *assume* that it still builds the C++ code for you.
I might find the time to upload the 5.0.3 version of the project that I have, but honestly all my code is still exactly the same between the different engine versions.
If you (and anyone else) are interested, I have set up a discord server to make chatting about these things easier than leaving comments on videos. Its basically 'box-fresh empty' right now, you can find it here:
discord.gg/YxjS8qXn
@@ggamedev Hiya! Is the Discord server still available? When I'm trying to join it says that either invitation is outdated or I don't have premission to join :/
@@domiiinikooo That would be because I didn't check what I was doing, and made a link that expired after 7 days 😀 Here is one that should last indefinitely, although there really isn't much going on with the server yet, maybe we can get some good discussions going to help people out. discord.gg/jjy2aJ3hj9
hi, what are the android permissions needed sdk 28 above for SQLite , The read value is working write also sqlite_ok but not updated in database. android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
Does it work on android?
I have not tested it specifically on android, but IT SHOULD WORK.
SQLite works on android, and the epic sqlite C++ libs that are the basis for my framework have been especially 'nerfed' to work on platforms like android.
Basically; Epic do not support certain features of SQLite because it would not work on some of the targets you can compile unreal for, such as android.
This is why the often requested feature of having multiple connections to the same database are not supported (on any platform) simply because there are one or two platforms that don't support that.
(In most cases that turns out to actually be a good thing, because when most developers want to make multiple DB connections, its often for the wrong reasons and they should actually rethink their code/approach. However it is bloody annoying when you try to run your unreal project to test it, and you left an open DB connection in 'DBBrowser for SQLite', or Rider, and then it crashes your game when you run it...)
You keep saying you use 'Writer' what is that?
That could, rather embarrassingly, be me pronouncing 'RIDER' with a mouthful of marbles 😀
Which is an IDE by Jetbrains, you use instead of visual studio (links to it in some of the other video descriptions)
Is the Project from Github bugged ?? can't open it in 5.2.
While I really am not trying to be rude (intentionally), its kinda hard not to be, when you ask such a useless question.
My quick answer, using about as much effort as you made to ask, is 'No'.
Does that answer help you though?
Probably not.
Put just a TEEEENY bit more effort into the question itself, and either I,
or someone else who reads it, might have enough information to actually help you.
_______________________________________________
What specificially was the problem?
What did you do?
Was there an error message?
If so what did it say?
What did you try and do in response?
Without knowing any of that, its anyone's guess what might be going on for you, but the most likely assumption,
is that you grabbed the repo (probably as a zip, maybe not), unpacked it somewhere on your file system, and went straight for the .uproject file and double clicked it.
Upon which, you may have been shown a textbox giving you a message that modules had either been compiled with another version, or simply needed to be recompiled.
If that was the case, you don't even get any options, you just click the only button, and it will indeed attempt to rebuild those modules for you,
before then going on to open the project in the editor.
If for some reason it CAN'T rebuild them, it will give you another message saying that you need to do it yourself.
In that case, you would right click the uproject file and select 'Generate visual studio project files'
after which you would open the .sln solution file in your IDE, and do what Unreal told you to do, rebuild from there.
(Unless of course, you dont have an IDE, because... blueprint only user)
If something was 'bugged', the IDE would fail to compile it, and more than likely give you some sort of error message indicating what the problem was,
which you... or someone else, could use to help you fix it.
And just so you understand what I meant by 'a TEEEENY bit more effort', that would be what I did, after reading your question,
when I myself went and downloaded the project from github onto a test machine, and got it to run without problems.
(It didn't even need to be opened in an IDE to rebuild)
So no, not 'bugged', works fine in 5.2, and in fact, even from github, you can look at the TutorialDemo.uproject and see (line 3) that it is already associated with 5.2 of the engine.
_______________________________________________
In all seriousness:
If you still have problems after reading this, join the discord server (link in the video description)
its a much quicker way to exchange details, and for me or someone else to insult you, erm, I mean ASSIST you, especially if there is some more complicated reason why your particular installation isn't working, we might be able to help.