m1maker / ngt Goto Github PK
View Code? Open in Web Editor NEWNew open source game toolkit
Home Page: https://ngtcode.dev/
License: MIT License
New open source game toolkit
Home Page: https://ngtcode.dev/
License: MIT License
So, a few things need to be done, ASAP, before you go adding anything else:
All of this needs to be done. As it currently stands, this repository is an utter mess, and so is the code, and if you want this to get off the ground then it needs to be maintainable, easy to work with, reusable, and well-organized. Using CMake and the template above to get you going is going to go a long way towards that goal. Using platform abstractions will dramatically reduce the amount of code you need to write, and will make your project a lot easier to understand because your intent will be far more obvious. You should only use raw platform APIs if you have no other option. If you do use raw platform APIs, abstract them so that your code is reusable and people who want to use them don't need to worry about how it works under the hood.
hello. I've installed ngt, and then, when I pressed application on all my files which had .ngt extention, The open o option has been renamed to open with ngt, and when I uninstalled ngt, and then I pressed application on my files which had .ngt extention on them, the Open o option was gon from them, so now if i press application on any of my files with any extention such as .badBoy, .BadGirl, I have the open o option, but for .ngt files I don't have this option. What is wrong with ngt's registration of changing context menus up on uninstalation?
This currently lacks any sort of tests, which makes it difficult to know whether anything broke with latest changes. In addition, this also means we do not entirely know whether we have any memory leaks within the project. Since the engine is relatively modularized, it should not be hard to add both tests for correctness and checks for memory leaks.
This list contains things that must be done, which includes but is not limited to potential breakups and other problems. I will include with each thing in a heading using level 2 to navigate easyer. The list is sorted by top needed, which means the first thing you see would be very necessary to fix.
The sound system is consuming excessive memory. This indicates that the engine isn't loading sounds efficiently compared to other audio game engines like BGT, which utilizes memory caching. Memory caching allows sounds that are already loaded into the program to remain in memory for as long as the script is running, preventing the need to repeatedly load them.
The encryption functionality is not working properly, particularly the encryption functions such as string_encrypt
and string_decrypt
. This means that data cannot be encrypted, making it easier for individuals who wish to access the program's code behind the scenes.
The file class and filesystem needs improvements. Especially the filesystem class, the use of the functions in it is very complicated
For the class, I expected like this:
class filesystem
{
int rmdir(string dirs); //Remove one or more directories.
int mkdir(string dirs); //Makes one or more directories
int rmfile(string filename); //Removes the file, delete.
string get_current_path() const property //Stay as current
string[] ldirs(string search); //Searches the directories, like BGT's find_directories function, with supporting patterns.
string[] lfiles(string search); //Searches the files, like BGT's find_files function, with supporting patterns.
int copy(string source, string destination, bool overwrite=false); //Copies directories or files.
}
Using screen reader is not complicated but of course it is a little unclean.
I expected to have a class for screen reader.
The class would look like the following:
class screenreader
{
bool default_interrupt=false; //Default speech interruption parameter, false is the default. Users can set this to use as a class global interrupting parameter without having to specify each time in the speak class, see below.
string get_current_reader() const property //Returns the currently running reader.
bool speak(string text, bool interrupt=this.default_interrupt); //Speaks and return true or false.
bool speak_wait(string text, bool interrupt=this.default_interrupt); //Speaks and wait for it to finish, and return true or false.
bool stop_speech(); //Stops the speech.
}
Finally, as you may have expected, here the network comes. However, this must only be done after completing the soundsystem, and encryption system first before doing, otherwise the engine might have issues in the future, such as not being able to encrypt the data on the internet.
Well, I think that's it! If there are anything more to do list, I will provide again, but seriously the soundsystem needs repair first, then encryption.
My last word? Simple, do not make new features unless everything is fixed. If you found a bug, continue fixing it otherwise rather than trying to add new and new features. Even though it has much features, a game engine cannot last with bugs.
Best regards, Harry Min Khant, An indepentent developer.
There is currently no measurable way of comparing implementations or speeds of data structures used by the engine. In addition to tests, it would be nice to have quantified data showing performance / data sizes for the engine.
hi.
I would like to be able to compile and run games on macOS too.
Hello, I noticed that an integer is used for timer.elapsed(), but I have experience from bgt that we also use the timer to monitor the player playtimer and if int32 is used, overflow is possible after two months.
As of now, Tolk is the only backend possible for using speech and the architecture is not very flexible. For instance, it would be mildly painful to expand this implementation to support Linux. Have you considered using libraries like Universal Speech or looking for interfaces to Speech Dispatcher/VO for greater cross-platform compatability?
Hello everybody
It would be possible to implement a code signature or signature for games compiled using px, or .pem certificates to verify the authenticity of your game / project and improve the level of reliability and security so that an antivirus does not accuse the games or projects created like viruses?
Also, when compiling include metadata that demonstrates who the creator of the project was?
In addition, sign the code and all modules / sub-items that are included and then compile it so that the AVS detection rate is minimal.
These are just thoughts to improve security.
please add new methods:
string get_current_directory, bool file exists double get_file_size
Hi, I have questions gameobject.ngtb must be with the exe file? if so isn't it dangerous? in my opinion, it should be included directly in the release exe, and it should be encrypted using aes or something like that, and I would initialize the aes myself when starting the game or in some other safe way, because at the moment it looks like this, if I saw the game like this, people would they could read both my data and file location
Hi,
So far, there is no alternative ways of building the engine aside from using Visual Studio. This limits cross-platform potential of the project and restricts one's development options to this particular IDE. We need to reconsider the build process for the tool so that it is more flexible and portable. Please add the capability to build this using tools like cmake.
Hello, I would like to summarize a few more issues
1.
if you initialize the timer t; and then you don't use restart but you give an alert and it will show you -2147472384
2. compiling executable doesn't work only in release/game_object.ngtb folder
3. I think that when calling the init engine, the 3d bass sound parameters should not be set or the bass shouldn't be initialized, because in the event that later there will be dll support and I want to implement my own sound system, I will have a problem
4. it would be good if the sdl2 library was implemented directly into the static exe file when creating the executable
please make the random function to no limit on it.
for example, change below to double.
long random(long min, long max)
to
double random(double min, double max)
please make the screen reader class.
the class will hold the ability to speak, stop, and determine which screen reader is active.
for example, like bgt.
class screenreader
{
bool speak(int reader, string text);
bool is_active(int reader);
bool set_lib_path(string path);
}
please make the init_engine function to the ability to set the path of the dll files. for example
init_engine("libs");
this means the function will look dll files in libs/.
I tried jaws and keyhook but I found that it doesn't work very reliably yet and when the window opens it can't be minimized
please make like file::write_int, file::write_string, to be only one function (file::write), as bgt.
because now, the code may seem more harder than php now.
also.
file::read_string, to file::read.
the read and write functions must only their respective 1 function, and there should not be read_string, read_int.
also, make the string parameter to hold other datatypes, such as ints, floats. string must have hold all other types, including numbers, ints, floats, as of bgt.
for example, this fails. but this should not be failed.
void main()
{
double x=5;
alert("ok",x);
}
error. no such function alert(const string, const double)
The script fails to compile when a method is called inside a for loop without using parentheses ()
. Instead of using parentheses, a semicolon ;
is placed at the end of the method call. This causes the script to not compile, but surprisingly, it does not throw any error messages, leading to a silent failure.
()
but end the line with a semicolon ;
.The script should either compile successfully if the syntax is correct, or it should throw an error message indicating the syntax issue when parentheses are omitted in the method call.
The script does not compile, and no error messages are displayed, leading to a lack of feedback on the syntax error.
This issue can lead to significant debugging challenges, as the lack of error messages makes it difficult to pinpoint the syntax error in large codebases.
I recommend that you add timer:: elapsed_micros,_millis and nanos if possible because it would allow more accurate measurements during micro optimizations and at the same time if it was about compatibility in bgt then it is not a problem to overwrite elapsed to elapsed_millis in the projects. Also if you are not using folder x64 in the project you can add that to .gitignore and avoid people pushing compiled builds.
Good day, it would be good if in sdl2 you could disable closing the window using alt f4 and rather allow me to call quit when I want it, because this way if the player presses alt f4 the window will close forcibly and I have no control over it
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.