Others QSP Making a new game engine

thedude2866

Member
Apr 24, 2017
112
119
This is really my first post on this forum, and it might be quite a lengthy one, so I'll add a short overview at the beginning for those slightly interested.

So first off I want to say that I am in the process of making a new game engine (for now called betterQSP because I'm terrible at naming things) which will be similar to QSP in some ways (mainly the look of it I think, now that im writing this not even sure how similar it will be :unsure:), however it will be much better, it will be my first language that I made (technically 2nd one but first one was just practice) however I've been programming for over 5 years now and I think I make it work, I made this thread so that I can show what ideas I have for it, and so that community members can give me other ideas as to what implement in the engine. Once I am done with it I will post the code on GitHub and then I'll create a sample game to show off its capabilities.

These are the current ideas and features that I have made/will make:
You don't have permission to view the spoiler content. Log in or register now.

Now what I hope from this thread is for people to provide ideas for what else I can add to this engine or engine, for names better than "betterQSP" and any ideas for a logo. If you made it this far thank you for being interested.

[Edit] - I've just looked at some other threads about new game engines, and by no means is this thread meant to imply that I need/want help with actually programming the engine, so don't worry this engine will be made fully by me, I am not asking for people to work on it, I just want to know what experience you had as game developers and what features you would like to see in a game engine.

You don't have permission to view the spoiler content. Log in or register now.
 
Last edited:

Saki_Sliz

Well-Known Member
May 3, 2018
1,403
995
10) Goto's will be gotten rid of and burnt in hell where they belong.
XD good to hear.

Also working on my own game engine (C# monogame). I was wondering what experience you had with making these various systems you've listed out. such as handling http requests is its own mess and sounds like something you'll get to a year after you at least get the basic version of the engine working. I was part of a previous project that tried to add an interpreter, where the writers wanted something similar to screenwriting (they linked some website), and the artist wanted something that could allow them to control alot of what was going on with the visuals, it kinda turned into an ugly mess, both in terms of what each wanted, and what our eventual compromise could become. Mod support for example, probably one of the more complex things I've worked with (never finished a project with it though), trying to truly allow injection and safety, is this something your more familiar with? I would love to hear how other systems may have implemented mod support.
 

hiya02

Member
Oct 14, 2019
168
95
Always interesting to hear about building engines!
I am not familiar with the QSP engine, but I've seen many, many people asking here about how to make a day-night cycle and navigating between world map > location > sub-location for their VN-like games, so these might be something you could provide out of the box.
 

thedude2866

Member
Apr 24, 2017
112
119
XD good to hear.

Also working on my own game engine (C# monogame). I was wondering what experience you had with making these various systems you've listed out. such as handling http requests is its own mess and sounds like something you'll get to a year after you at least get the basic version of the engine working. I was part of a previous project that tried to add an interpreter, where the writers wanted something similar to screenwriting (they linked some website), and the artist wanted something that could allow them to control alot of what was going on with the visuals, it kinda turned into an ugly mess, both in terms of what each wanted, and what our eventual compromise could become. Mod support for example, probably one of the more complex things I've worked with (never finished a project with it though), trying to truly allow injection and safety, is this something your more familiar with? I would love to hear how other systems may have implemented mod support.
As I will be making the engine in .Net Core majority of handling HTTP webrequests is already taken care of, I just have to allow my langauge to be able to use them, for the modding system I already have some ideas to do with events, so for example the main game will load in all the mods, and in the language you will be able to attach a function to an event in the core engine which will fire whenever a new location is accessed, that way all the mods will have a function that will run whenever the player enters any locations so at that point the mod will be able to decide wherever to display any actions for that location.

I was thinking of allowing data binding for better control of the interface however I am still a bit unsure on how to allow the developer to edit the GUI since most games that are already made in QSP the UI is quite dynamic except for a few location.
 

thedude2866

Member
Apr 24, 2017
112
119
Always interesting to hear about building engines!
I am not familiar with the QSP engine, but I've seen many, many people asking here about how to make a day-night cycle and navigating between world map > location > sub-location for their VN-like games, so these might be something you could provide out of the box.
As I've mentioned before in point 7 I will be allowing access to C# DateTime class so with that checking for night time will be very easy. And I guess since you said you're not familar with the QSP engine, it is location based, so moving to different locations is a basic necessity which my engine will also support.
 
  • Like
Reactions: hiya02

Pararock

Member
Aug 17, 2016
316
373
Hey, good idea.

On the editor side of thing, why not use the power of vscode instead? Look at what people are doing with txt2gam to "decompile" the game location, edit it and then "recompile" it into a single .qsp.

One of my long time goal for QSP is to provide a language server implementation in VSCode so that the engine can provide all it know to vscode for the extracted location. So you could do something like jump to symbol and it would works. You could then hit build in vscode and it would bundle all the individual location into a single qsp.
 
  • Like
Reactions: Cul

thedude2866

Member
Apr 24, 2017
112
119
Hey, good idea.

On the editor side of thing, why not use the power of vscode instead? Look at what people are doing with txt2gam to "decompile" the game location, edit it and then "recompile" it into a single .qsp.

One of my long time goal for QSP is to provide a language server implementation in VSCode so that the engine can provide all it know to vscode for the extracted location. So you could do something like jump to symbol and it would works. You could then hit build in vscode and it would bundle all the individual location into a single qsp.
It seems like an interesting idea, which I may do at somepoint, however I also want to use this project as a learning experience for making editors, I'm a stickler for making things myself, but I'm sure people would appreciate VSCode support so I will probably add it.
 
Last edited:
  • Like
Reactions: Pararock

thedude2866

Member
Apr 24, 2017
112
119
For C#, seems like a waste not using Harmony, since Pardeike already spent "thousands of hours"( ) on it hah...
That seems like a cool project, however I feel like that would be more work and is more suited for when you don't have control of the execution, since it seems to replace the C# code, the game engine will run in C# however the code that it runs will be a completely new language that I will create.
 

monsterman09

Member
Jul 14, 2020
355
132
hello
Due to the pandemic I have also been thinking of making a game engine but I would like to use it as part of my portfolio to show off and for career opportunities. I do have some question perhaps people can answer here
1) Should I build a game engine or should I build a game instead. I was told to use Pygames to build a game as I can show off a game ? Also I was told pygames is simpler granted the game may be slow that is fine it does show and would be able to teach me the basics and theory of game programming ?
2) I am a bit confused what value building a game engine from scratch would offer over say using an existing engine say unity, pygames, etc... ?
3) Are there any books or references anybody recommends one can follow to make a simple crude game engine ?

This is my first post and thank you for your time and consideration
 

Pararock

Member
Aug 17, 2016
316
373
Game development on a 20 years old Russian game engine use exclusively for porn games. How did you fit that into a portfolio? :)
 

Saki_Sliz

Well-Known Member
May 3, 2018
1,403
995
For C#, seems like a waste not using Harmony, since Pardeike already spent "thousands of hours"( ) on it hah...
that looks pretty cool! It seems to be a type of dependency injection system considering it is used for unit testing. I was considering a similar system, it would basically work like ECS where the engine is the top level entity, game level systems are components, and one of the components is the scene manager and object, so game systems can carry data between scenes because game systems are above and dependant on the current scene, so there wouldn't be a need to use things like singletons in unity. The only thing different I want to try is making custom syntax to make the code look neat.

Other than that, that Bevy engine actually looks really good. I've been visiting arewegameyet every now and then and I see it is there now. As Cul mentioned, I've been wanting to use Rust, but I haven't seen a good simple render api system yet, and it looks like that this Bevy may be the monogame equivalent, I'll have to seriously check it out, so thanks for sharing.
 
  • Like
  • Red Heart
Reactions: Pararock and Cul

thedude2866

Member
Apr 24, 2017
112
119
Hello. For that, it does seem you'd rather have small things in different languages, so it reads like other programmers' bios, "app development in Python, C#, Go, and Swift." And then you'd learn more for that specific job hah...

Also if you can get other people to help you with art/writing, spending months alone on the engine would slow that a bit.

Oh, was showing Saki, maybe if it's Rust-like you can also have a cheeky ECS like hah. From a Microsoft ex-employee.
Weren't sure what ECS were so had to check it out but it seems like its just the way Unity handles the game scene, and honestly and I have no idea how that could fit into a game engine similar to qsp.
 

thedude2866

Member
Apr 24, 2017
112
119
hello
Due to the pandemic I have also been thinking of making a game engine but I would like to use it as part of my portfolio to show off and for career opportunities. I do have some question perhaps people can answer here
1) Should I build a game engine or should I build a game instead. I was told to use Pygames to build a game as I can show off a game ? Also I was told pygames is simpler granted the game may be slow that is fine it does show and would be able to teach me the basics and theory of game programming ?
2) I am a bit confused what value building a game engine from scratch would offer over say using an existing engine say unity, pygames, etc... ?
3) Are there any books or references anybody recommends one can follow to make a simple crude game engine ?

This is my first post and thank you for your time and consideration
I can't say much about the first point, however for the second one in my opinion the advantage is that those games engines usually lean into one side, they're either meant to be used artistically, or by programmers, meaning that it will either have advanced code features but it will not have good artistic support, or it will be easy to use however not very advanced, in a custom engine I can specify how things work exactly, which is why I'm also using a custom language, using a pre existing one limits you to have to work within the boundaries of those languages, for example, in Unity you can do lots of great things however from my experience making good UIs is a pain especially if you're not artistic or don't have an artist available, and as well as that, and because of how those engines work (and sometimes how the languages work) will limit how easy modding support is, which with a custom language and engine you can design it with that in mind.

and for the 3rd point, I would say check out a book/website "craftinginterpreters" its what I used to learn more about them, it has good stuff in it, but sometimes also bad, but its definitely a great start considering there isn't a lot out there on this topic.
 

toolkitxx

Well-Known Member
Modder
Donor
Game Developer
May 3, 2017
1,471
1,786
As I will be making the engine in .Net Core majority of handling HTTP webrequests is already taken care of, I just have to allow my langauge to be able to use them, for the modding system I already have some ideas to do with events, so for example the main game will load in all the mods, and in the language you will be able to attach a function to an event in the core engine which will fire whenever a new location is accessed, that way all the mods will have a function that will run whenever the player enters any locations so at that point the mod will be able to decide wherever to display any actions for that location.

I was thinking of allowing data binding for better control of the interface however I am still a bit unsure on how to allow the developer to edit the GUI since most games that are already made in QSP the UI is quite dynamic except for a few location.
Just to clarify this for regular QSP: This is already an existing functionality of QSP. There is a variable in QSP that controls which node to call when the code uses either gt/goto or gs/gosub. That node can then be filled with regular functions, expressions etc that will fire each and every time gt/gs is called. Girl Life and others simply never read the documentation properly and thus never implemented it in their projects. It's how i create all my locations with just a single template page in my project.
 

thedude2866

Member
Apr 24, 2017
112
119
Just to clarify this for regular QSP: This is already an existing functionality of QSP. There is a variable in QSP that controls which node to call when the code uses either gt/goto or gs/gosub. That node can then be filled with regular functions, expressions etc that will fire each and every time gt/gs is called. Girl Life and others simply never read the documentation properly and thus never implemented it in their projects. It's how i create all my locations with just a single template page in my project.
That is not something that I have heard of before, I have tried to read through the docs but as far I remember all of it was in russian (which I cannot read) and only some parts I could find in english.

As a side note, surprised to see a reply on this thread, it has been quite some time since the project had to be put onhold because of life reasons, but hopefully I should be able to resume the idea by the end of the year/early next year.
 

toolkitxx

Well-Known Member
Modder
Donor
Game Developer
May 3, 2017
1,471
1,786
That is not something that I have heard of before, I have tried to read through the docs but as far I remember all of it was in russian (which I cannot read) and only some parts I could find in english.

As a side note, surprised to see a reply on this thread, it has been quite some time since the project had to be put onhold because of life reasons, but hopefully I should be able to resume the idea by the end of the year/early next year.
I figured as much but thought i test if this was really a necro thread or you are still around and working on this.

This particular feature is actually a core feature that more or less makes all the 'missing features' obsolete people tend to ask for when it comes to QSP. I have been mentioning this for years now - actually since i came in contact with QSP due to playing Girl Life and then creating a mod as the core group wasnt willing to listen either. It is actually extremely simple:
There is a system variable that can be defined '$onnewloc'. This has to be defined by the coder (preferably right in the start-node) with the name of the node that will actually do something. If you dont define this then nothing special happens when you gt. Once you define this like this for example $onnewloc = 'autoexecute' everytime you jump to another node the autoexec node will be called first and exceute whatever you coded there.

The goto part is the important thing here. This is another reason why so many think gt is crap - it actually isnt. GT means you leave the current node for good and goto a completely new node. This is when QSP checks for $onnewloc. GS on the other hand means you keep your current node's info and values, step aside into a new node temporarily and do something and return to the node you came from.
 

thedude2866

Member
Apr 24, 2017
112
119
I figured as much but thought i test if this was really a necro thread or you are still around and working on this.

This particular feature is actually a core feature that more or less makes all the 'missing features' obsolete people tend to ask for when it comes to QSP. I have been mentioning this for years now - actually since i came in contact with QSP due to playing Girl Life and then creating a mod as the core group wasnt willing to listen either. It is actually extremely simple:
There is a system variable that can be defined '$onnewloc'. This has to be defined by the coder (preferably right in the start-node) with the name of the node that will actually do something. If you dont define this then nothing special happens when you gt. Once you define this like this for example $onnewloc = 'autoexecute' everytime you jump to another node the autoexec node will be called first and exceute whatever you coded there.

The goto part is the important thing here. This is another reason why so many think gt is crap - it actually isnt. GT means you leave the current node for good and goto a completely new node. This is when QSP checks for $onnewloc. GS on the other hand means you keep your current node's info and values, step aside into a new node temporarily and do something and return to the node you came from.
Actually I just checked the Girl Life qsp file and they do actually seem to be using that feature in order to make mods work.

Although this isn't the only issue I have with those game engines, none that I've found even remotely align with my programming preferences which is why for now I'm planning on making a browser engine and language just for myself to use to make games (at least at the start).
 

toolkitxx

Well-Known Member
Modder
Donor
Game Developer
May 3, 2017
1,471
1,786
Actually I just checked the Girl Life qsp file and they do actually seem to be using that feature in order to make mods work.

Although this isn't the only issue I have with those game engines, none that I've found even remotely align with my programming preferences which is why for now I'm planning on making a browser engine and language just for myself to use to make games (at least at the start).
It has been a while since i looked at Girl Life - they didnt use it in 7.3.3. which was the last version i actively looked at. Good for them if they finally got that solved then.
There is a lot of misunderstanding around what QSP can and can not do. Which was why i came across your thread by chance and thought I point this thing out as it is a pretty neat and important core feature. If one doesnt understand and use it it limits the rest of the code extensively.

Some other points of your original list are also caused by a lack of knowledge in this area thus the believe things seem impossible in QSP. The entire idea of QSP is to make things simple for the non-coder or at least to reduce unnecessary coding for every single element. Looking at how old it is it actually does a pretty decent job since the output was and is basically just html. Sonnix created a better player that actually uses standard html5 and allows for CSS and JavaScript (while being backwards compatible) like any standard browser thus eliminating the more annoying things from original QSP. MODS have never been a problem and neither have libraries been impossible. You can load extra qsp-files at any given time thus having mods is actually already an inbuild feature as long as your original framework is coded stable and with a proper architecture. Like i used in my example earlier - one single node page that creates every single location by simply reading the needed data from a data set for example. Can be expanded on the fly by a non-coder by simply adding a block to the data set without actually coding a single line.
 

thedude2866

Member
Apr 24, 2017
112
119
It has been a while since i looked at Girl Life - they didnt use it in 7.3.3. which was the last version i actively looked at. Good for them if they finally got that solved then.
There is a lot of misunderstanding around what QSP can and can not do. Which was why i came across your thread by chance and thought I point this thing out as it is a pretty neat and important core feature. If one doesnt understand and use it it limits the rest of the code extensively.

Some other points of your original list are also caused by a lack of knowledge in this area thus the believe things seem impossible in QSP. The entire idea of QSP is to make things simple for the non-coder or at least to reduce unnecessary coding for every single element. Looking at how old it is it actually does a pretty decent job since the output was and is basically just html. Sonnix created a better player that actually uses standard html5 and allows for CSS and JavaScript (while being backwards compatible) like any standard browser thus eliminating the more annoying things from original QSP. MODS have never been a problem and neither have libraries been impossible. You can load extra qsp-files at any given time thus having mods is actually already an inbuild feature as long as your original framework is coded stable and with a proper architecture. Like i used in my example earlier - one single node page that creates every single location by simply reading the needed data from a data set for example. Can be expanded on the fly by a non-coder by simply adding a block to the data set without actually coding a single line.
Yes I definitely do lack knowledge about what is possible in those engines that I have mentioned, however from what I've seen they are all mostly aimed at beginners or non-coders (thats not to say that you can't do more advanced things in them), and I have a lot of experience with programming so personally I would prefer an engine that is strongly typed, and I've also had quite a bit of experience (although still not enough) with writing custom languages, which is why I decided to make my own.