TH-cam 'corrections' feature isnt working for me: at 4:00 I tell you to use 'Additional Non-Asset Directories to -package-'That was a mistake - I should have said 'Additional Non-Asset Directories to *copy*'It needs to be a copy so that SQLite can use regular file access on the database files.
Reading this would have saved me ~5 hours of successless debugging. I finally figured it out and came back here to comment it, only to find out You already corrected yourself *9 months ago* RIP - but thanks a lot for this video, it helped me a lot. For the next project I'll probably use your framework instead of the Plugin Epic provides.
hey man, great video, im a blueprinter, so how do i get to understand what to do in 4:20 ?, what should i learn to understand anything u said after that point?, got stuck there..
Ok, I kinda got 2 things for you: Firstly, join our discord... its free, we are not shilling anything (hey that's an idea!), and its far more suited to the kind of back and forth required to assist people. Second thing: this is obviously a C++ type affair here, because, well it has to be. However, in the next(?) video about this topic, I describe how i made a framework wrapping a bunch of SQLite stuff which is ALSO exposed to blueprints, giving you nodes and whatnot you need to do some sql stuff if you dont wanna have to get down and dirty with the C++ Disclaimer though: you still need the tools used for C++, because i didnt put the plugin on the marketplace yet, you you have to install it yourself, but thats not particularly difficult. And....did i mention its all free? No? Well its all free.
The single line at 22 is a short way of doing 3 things; 1) Create a new FSQLLitePreparedStatement object 2) Test to make sure that it was created successfully (do we have a valid reference) 3) If we have a valid reference to the new object, put that memory address into a locally scoped pointer. The 'new' keyword will run the constructor and return the new object, if it is successful, it will set the 'PreparedStatement' pointer to the address in memory of the newly created object. This is a local declaration, the pointer's scope is tied to the IF statement block, the pointer declaration cannot be used outside the IF block. It is showing our *intention* to only use it there, which is confirmed by the last line in the IF block, 32, which deletes it before leaving the block. These IF statements are nested inside each other, because we are basically saying; Connect to the database IF that worked, make a prepared statement, IF that worked, execute the prepared statement (and usually do something with return values) Then we destroy the prepared statement, and close the database connection, and destroy that too. (So that we get all the memory back)
Its not really about 'better' in terms of measurable metrics like speed of running queries, size of table data, etc. SQLite is a very different thing than a traditional database (which is generally client/server in implementation) SQLite is a library, which becomes part of your application. With things like MySQL, SQLServer, Oracle, etc. your application just has some way of communicating to a remote machine, usually referred to as a 'database driver'. But with SQLite, (in the case of unreal, or unity, or godot, etc..) its the game itself that is running the queries, sorting the data, etc. This has potentially both benefits and drawbacks depending what you want to use it for. BENEFIT: No database server machines required, which cost money not just for software (MySQL is free to use), but you need to be running machines hosted somewhere, and those need to be connected to the internet all the time, which all costs money - not to mention they should be correctly configured, hardened against hackers, and continually updated against any known exploits. These are all potentially expensive things, especially for indy game devs who often have little (or no) capital to throw around at such things DRAWBACK: If you want all the people who play your game to see the same data, then SQLite isnt for you (by itself) you need client/server for that. BENEFIT: SQLite can be used to do trivial things in your game, like sorting though ANY data you have, in any combination of ways. This also opens the gateway to letting your players choose how data is displayed and sorted to them, etc. Its like having extra language features available to you. There are many more points about this I could go into, but as you can see this 'comment' is already more like an essay 🙂 If you wanna know more and talk about it, join the discord @t
SQLite is SQL but instead of using a server. You are using a file. So for storing and manipulating local data you get the power of SQL but without the network overhead.
It absolutely can! Of course, you need someone with C++ to set something up to expose it all to Blueprints. And while that wasn't my first requirement (because I was initially coding for myself) I realised it wouldn't actually take much additional work to make something that was also BP friendly. Which is the next video in the series that I am currently working on; a plugin framework to make doing all this stuff from either BP or C++ much easier. The video is taking a little longer than the others though because I need to work through some examples to actually demonstrate using it, etc.
@@TheWillskiTheory This is just my opinion, FWIW; but I think one of the easiest ways to begin to move from Blueprints into C++, is to make a UBlueprintFunctionLibrary and add some static functions to it. This is a way you can use the blueprints you already know, and 'add' new nodes to use with them, but still keeping things simple to begin with - because honestly, there is a lot of new 'stuff' to learn, and its easy to feel a bit overwhelmed by it; the code solution, modules, classes, the way unreal works with C++, whatever code editor you choose to use, etc. And I feel that it is something which puts a lot of people off, because it just seems like too much all at once.
SSMS is used for connecting to & managing a Microsoft SQL Server instance, which is not SQLite. MS SQL Server is something that has to be installed on a remote server, which may be a good choice to use if you want to make a multiplayer game that has to connect to a remote database, but his tutorial is specifically for a local embedded database using SQLite.
Yes there is; as the SQLite library itself is written in C, we generally use a wrapper over it even to use it in C++ As long as that wrapper exposes things in a way that blueprints can use, then you can do so. There are many people offering various plugins which will enable you to use SQLite from Blueprints - some are paid for and others are free, and each may or may not offer you the exact features you want/need for a specific project or scenario. I didn't like any of the offerings, and prefer to have control over things myself, so I have been working on my own SQLite plugin (which is completely free ;-) ), and most of the features are exposed to blueprints. Part 3 of this video series introduces my SQLite framework plugin, and has examples using both Blueprints, and C++ code, so you can see how it works. link: th-cam.com/video/yYn7L6e99D8/w-d-xo.html The only problem you might have, is that I have not yet (even though I promised to in the video!) uploaded my plugin to the epic marketplace (because its a complicated and painful process which takes time, and I didn't want to bother unless there was really enough interest in it). This means, you would have to download the code from github, and include it manually in your project. Not the end of the world, but many people who use only blueprints may not be aware how to do it.
@@ggamedev Do you at least have your plugin on github because that would be fine too not every plugin is in the marketplace some are for github. luckily there is a plugin just made for github at the marketplace and it is Plugin Downloader.
@@wesleywinchester1890 Yes I do, link in the video description. If you have further questions (and you use discord), there is a link to my discord also. Its often easier to get help there; I monitor it more frequently than youtube comments.
The standard SQLite plugins provided by Epic will package for any of the targets unreal supports, (as far as i know). There are certainly no issues with SQLite on any of the mobile platforms, literally millions of apps on mobile use it as their database of choice.
@@ggamedev how to fix the error ERROR: Plugin 'SQLiteSupport' (referenced via MyProject.uproject) does not contain the 'SQLiteSupport' module, but lists it in
Everybody is entitled to their own opinions, and different people respond in their own ways to different teaching styles. For example, some people HATE videos with really awful computer generated text-to-speech VO on them, and click away as soon as they hear it... others perhaps don't mind. 😉 As someone producing content myself, what I CAN comment on, is the quality of comments left by other people. When someone has an issue, and they address it, describing perhaps a problem, a mistake, or an omission, the video producer can choose (if they are willing to learn from criticism) to maybe try to improve from the feedback and then make better videos in the future. When someone just leaves a negative comment and takes no time to actually qualify anything they are saying, ask a question, or seek clarification, honestly, it doesn't help anyone, including that commenter. It just makes them look like an angry troll that had difficulty understanding something. And... as one content creator to another; if you are going to do that, for your own sake, at least bother to log into a separate account to do it; it took you over 10 years to build up those 4k subscribers, you don't want to loose any to pointless negativity.
TH-cam 'corrections' feature isnt working for me: at 4:00 I tell you to use 'Additional Non-Asset Directories to -package-'That was a mistake - I should have said 'Additional Non-Asset Directories to *copy*'It needs to be a copy so that SQLite can use regular file access on the database files.
Reading this would have saved me ~5 hours of successless debugging.
I finally figured it out and came back here to comment it, only to find out You already corrected yourself *9 months ago*
RIP - but thanks a lot for this video, it helped me a lot. For the next project I'll probably use your framework instead of the Plugin Epic provides.
Oh, that really sucks. I pinned the comment... but i miss those on other peoples videos myself
hey man, great video, im a blueprinter, so how do i get to understand what to do in 4:20 ?, what should i learn to understand anything u said after that point?, got stuck there..
Ok, I kinda got 2 things for you:
Firstly, join our discord... its free, we are not shilling anything (hey that's an idea!), and its far more suited to the kind of back and forth required to assist people.
Second thing: this is obviously a C++ type affair here, because, well it has to be.
However, in the next(?) video about this topic, I describe how i made a framework wrapping a bunch of SQLite stuff which is ALSO exposed to blueprints, giving you nodes and whatnot you need to do some sql stuff if you dont wanna have to get down and dirty with the C++
Disclaimer though: you still need the tools used for C++, because i didnt put the plugin on the marketplace yet, you you have to install it yourself, but thats not particularly difficult.
And....did i mention its all free? No? Well its all free.
Hey database is created in my case but it is saying not opened after creating instance and I am opening it in ReadWriteCreate mode ?
Could not give meaning in line 22 inside of the if statement condition @5:27 ?
The single line at 22 is a short way of doing 3 things;
1) Create a new FSQLLitePreparedStatement object
2) Test to make sure that it was created successfully (do we have a valid reference)
3) If we have a valid reference to the new object, put that memory address into a locally scoped pointer.
The 'new' keyword will run the constructor and return the new object, if it is successful, it will set the 'PreparedStatement' pointer to the address in memory of the newly created object.
This is a local declaration, the pointer's scope is tied to the IF statement block, the pointer declaration cannot be used outside the IF block.
It is showing our *intention* to only use it there, which is confirmed by the last line in the IF block, 32, which deletes it before leaving the block.
These IF statements are nested inside each other, because we are basically saying;
Connect to the database IF that worked, make a prepared statement, IF that worked, execute the prepared statement (and usually do something with return values)
Then we destroy the prepared statement, and close the database connection, and destroy that too. (So that we get all the memory back)
Hi! Do you think SQLite is better than MySQL? For unity or unreal?
Its not really about 'better' in terms of measurable metrics like speed of running queries, size of table data, etc.
SQLite is a very different thing than a traditional database (which is generally client/server in implementation)
SQLite is a library, which becomes part of your application. With things like MySQL, SQLServer, Oracle, etc. your application just has some way of communicating to a remote machine, usually referred to as a 'database driver'.
But with SQLite, (in the case of unreal, or unity, or godot, etc..) its the game itself that is running the queries, sorting the data, etc.
This has potentially both benefits and drawbacks depending what you want to use it for.
BENEFIT: No database server machines required, which cost money not just for software (MySQL is free to use), but you need to be running machines hosted somewhere, and those need to be connected to the internet all the time, which all costs money - not to mention they should be correctly configured, hardened against hackers, and continually updated against any known exploits.
These are all potentially expensive things, especially for indy game devs who often have little (or no) capital to throw around at such things
DRAWBACK: If you want all the people who play your game to see the same data, then SQLite isnt for you (by itself) you need client/server for that.
BENEFIT: SQLite can be used to do trivial things in your game, like sorting though ANY data you have, in any combination of ways. This also opens the gateway to letting your players choose how data is displayed and sorted to them, etc. Its like having extra language features available to you.
There are many more points about this I could go into, but as you can see this 'comment' is already more like an essay 🙂
If you wanna know more and talk about it, join the discord @t
@@ggamedev What a detailed response!! Thank you so much!! I'll be using SQLite since that's what my current project really requires. :)
SQLite is SQL but instead of using a server. You are using a file. So for storing and manipulating local data you get the power of SQL but without the network overhead.
Hi Great Series! any chance this can all be done in blueprint for people like me who are afraid of code?
It absolutely can!
Of course, you need someone with C++ to set something up to expose it all to Blueprints. And while that wasn't my first requirement (because I was initially coding for myself) I realised it wouldn't actually take much additional work to make something that was also BP friendly.
Which is the next video in the series that I am currently working on; a plugin framework to make doing all this stuff from either BP or C++ much easier.
The video is taking a little longer than the others though because I need to work through some examples to actually demonstrate using it, etc.
@@ggamedev great! okay ill sub and wait for more video in meantime maybe i face my fears and boss up lol
@@TheWillskiTheory This is just my opinion, FWIW; but I think one of the easiest ways to begin to move from Blueprints into C++, is to make a UBlueprintFunctionLibrary and add some static functions to it. This is a way you can use the blueprints you already know, and 'add' new nodes to use with them, but still keeping things simple to begin with - because honestly, there is a lot of new 'stuff' to learn, and its easy to feel a bit overwhelmed by it; the code solution, modules, classes, the way unreal works with C++, whatever code editor you choose to use, etc. And I feel that it is something which puts a lot of people off, because it just seems like too much all at once.
@@ggamedev im happy to here that because im pretty comfortable with bp’s
What about SQL Server Management Studio ?
What about it?
SSMS is used for connecting to & managing a Microsoft SQL Server instance, which is not SQLite. MS SQL Server is something that has to be installed on a remote server, which may be a good choice to use if you want to make a multiplayer game that has to connect to a remote database, but his tutorial is specifically for a local embedded database using SQLite.
Is there a way to use SQLite for blueprints?
Yes there is; as the SQLite library itself is written in C, we generally use a wrapper over it even to use it in C++
As long as that wrapper exposes things in a way that blueprints can use, then you can do so.
There are many people offering various plugins which will enable you to use SQLite from Blueprints - some are paid for and others are free, and each may or may not offer you the exact features you want/need for a specific project or scenario.
I didn't like any of the offerings, and prefer to have control over things myself, so I have been working on my own SQLite plugin (which is completely free ;-) ), and most of the features are exposed to blueprints.
Part 3 of this video series introduces my SQLite framework plugin, and has examples using both Blueprints, and C++ code, so you can see how it works.
link: th-cam.com/video/yYn7L6e99D8/w-d-xo.html
The only problem you might have, is that I have not yet (even though I promised to in the video!) uploaded my plugin to the epic marketplace (because its a complicated and painful process which takes time, and I didn't want to bother unless there was really enough interest in it).
This means, you would have to download the code from github, and include it manually in your project.
Not the end of the world, but many people who use only blueprints may not be aware how to do it.
@@ggamedev Do you at least have your plugin on github because that would be fine too not every plugin is in the marketplace some are for github. luckily there is a plugin just made for github at the marketplace and it is Plugin Downloader.
@@wesleywinchester1890 Yes I do, link in the video description.
If you have further questions (and you use discord), there is a link to my discord also. Its often easier to get help there; I monitor it more frequently than youtube comments.
What are prepared Statements?
Sqlite has that term. It means some sql which has been 'prepared' (loaded and readied to execute) by the sqlite engine
unable to android pakage for unreal engine
The standard SQLite plugins provided by Epic will package for any of the targets unreal supports, (as far as i know).
There are certainly no issues with SQLite on any of the mobile platforms, literally millions of apps on mobile use it as their database of choice.
@@ggamedev how to fix the error ERROR: Plugin 'SQLiteSupport' (referenced via MyProject.uproject) does not contain the 'SQLiteSupport' module, but lists it in
@@mspcbs1657 If you have specific issues then someone might try to help you on my discord server, link in the video description.
Your way of explaining is terrible, you never show what should be done and it is not known where you get the code
Everybody is entitled to their own opinions, and different people respond in their own ways to different teaching styles.
For example, some people HATE videos with really awful computer generated text-to-speech VO on them, and click away as soon as they hear it... others perhaps don't mind. 😉
As someone producing content myself, what I CAN comment on, is the quality of comments left by other people.
When someone has an issue, and they address it, describing perhaps a problem, a mistake, or an omission, the video producer can choose (if they are willing to learn from criticism) to maybe try to improve from the feedback and then make better videos in the future.
When someone just leaves a negative comment and takes no time to actually qualify anything they are saying, ask a question, or seek clarification, honestly, it doesn't help anyone, including that commenter.
It just makes them look like an angry troll that had difficulty understanding something.
And... as one content creator to another; if you are going to do that, for your own sake, at least bother to log into a separate account to do it; it took you over 10 years to build up those 4k subscribers, you don't want to loose any to pointless negativity.