m1maker / NGT

New open source game toolkit
https://ngtcode.dev/
20 stars 10 forks source link

Engine To Do List #40

Open harrymkt opened 2 months ago

harrymkt commented 2 months ago

To Do list.

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.

Soundsystem

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.

Encryption

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.

File and filesystem

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.
}

Screen reader

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.
}

Network

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.

Conclusion

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.

brightening-eyes commented 3 weeks ago

hello, for sound, maybe resonance audio can be used? it has a C++ api as well. but the thing is, cmake needs to be used because it has some dependencies to some hrtf stuff. for encryption, bottan, libtomcrypt are some good options. crypto++ is another option as well (it seems pritty cool either).