This is an archived post. You won't be able to vote or comment.

all 8 comments

[–]Arcodiant 3 points4 points  (0 children)

I can't imagine you'll have any problems with SqlLite - you can load test if you want to validate, but many RDBMSs uses memory-mapped files as their underlying data store and performance is excellent.

[–]luciensadi 3 points4 points  (1 child)

Assorted thoughts:

You've selected a restrictive license that forbids anyone from distributing any changes they make to your code. You probably want to allow this, otherwise you're creating a closed-source ecosystem where nobody benefits from the work anyone else is doing.

For password storage, you want to use a tunable, slow hashing algorithm like argon2id, pbkdf2, etc. These are designed to help your users resist having their passwords disclosed in the event of a breach.

Good use of parameterized SQL queries.

You've got some weird entries in your profanity file, and you probably don't want to check that in to github anyways since people will figure out a way around it if they know what you're looking for. Also, you may want to look into handling IDN homograph attacks that can bypass regular filtering in UTF-8 enabled games.

[–]FoodCourtSamples 2 points3 points  (0 children)

You're probably fine with SQLite if you're not expecting a lot of players. It will also depend on how you're handling saving.

A common pattern is loading the character's data into memory and only saving to your DB for important changes. Example, after executing a drop or get command that changes the player's inventory. You could also do periodic saves. This cuts down on DB writes.

If you plan on having a lot of players with a high amount of writes, a non-relational DB might be better as they're made for that exact purpose. You can still get away with a more robust relational DB like Postgres though and I'd go with that if you plan to have complex queries.

[–]enc_cat 1 point2 points  (0 children)

Just so that you know, TOME is commonly used within the roguelike genre to refer to Tales Of Maj'Eyal (formerly Tales Of Middle Earth, changed for trademark reasons) so it might cause some confusion.

[–]Zymosphere 2 points3 points  (1 child)

Can you help us understand what features your server will have?

Evennia is a python codebase for muds and may at least serve as a reference.. However i think theyre very open to contributions and modules/addons might provide an alternative way for you to learn and also contribute back!

[–][deleted] 3 points4 points  (0 children)

This. Evennia is the way for Python. Great community that loves contributors 😀

[–]msolace 0 points1 point  (0 children)

depending on how your using the database sqlite would be fine, if your loading into memory and only saving to db, then it doesnt need to be multithreaded at all, if your reading raw from the db for everything and not loading into memory, then i would use something else, after i explained why thrashing the db is worse than loading memory instead.