Current Development

  • Vatiken
  • Vatiken's Avatar Topic Author
  • Offline
  • Administrator
  • Administrator
  • tbaMUD Programmer
More
4 weeks 1 day ago - 4 weeks 1 day ago #10221 by Vatiken
Current Development was created by Vatiken
I'm working away on some new stuff for tbaMUD and I'd like to use this thread as my todo list so that I can have input and suggestions on the direction moving forward.

My current thought process is that while the userbase of tbaMUD and MUDs in general is nowhere near it once was, there is still some life in this code and a good "dusting off" is probably in order. I believe with some general clean up and modernization, the difficulty barrier to get into tbaMUD can be lowered and this could drum up some more users. OR at the very least, provide a better experience to new developers who are learning and honing their skills.

On the board:

1. More detailed error messages

Many of the error messages are something like "SYSERR: function_xxx isn't working". I'm going to go through and try to add more detailed error messages and add additional context to the existing ones.
Nov 07 12:20:58 2022 :: SCRIPT ERROR: Room 11101 :: wdoor: invalid direction: (arg == eest) not found in:
  [ north east south west up down northwest northeast southeast southwest ]
Nov 07 12:20:58 2022 :: SCRIPT ERROR: Room 11101 :: wdoor: invalid target: (arg = 11102)
Nov 07 12:20:58 2022 :: SCRIPT ERROR: Room 11101 :: wdoor: invalid door target: (arg == 11102)
Nov 07 12:20:58 2022 :: SCRIPT ERROR: Room 11101 :: wdoor: invalid field (arg == poorge)


2. Formatting, Cleaning and Documentation

This isn't a huge issue but there have been so many hands over the years touching the code base using everything from VS Code, VIM, Geany, Notepad or whatever their "IDE" of choice was at the time. The result is a lot of code that looks like it was just thrown at the screen. I'm going to go through and reformat much of the code to have a consistent visual look. While I'm at it I'll try and improve upon the documentation and readability of the code in general.

3. Testing

While having automated testing capabilities in tbaMUD would be fantastic, the work required on that at this stage would be significant and out of the scope of my available time. However, I do think something is better than nothing. I'm currently working on a new zone to be my Semi-Automated Test Zone. DG Scripts does have access to the interpreter and variety of other aspects of the code, and I believe might be able to help perform some testing/diagnostics. My initial work has already discovered some bugs that would of otherwise been exceptionally difficult to find.

4. File Format

I'm working on a module that will allow us save/load our database files in a json-type format. While everything listed above is more surface and tweaks, this would require some significant alterations to the code base. My focus for the preliminary stages of this will be lib/misc/messages file to convert/save/load it as a json instead of it's current form. This would toggle-able and default to LEGACY mode. My thought process here is that given the popularity of higher-level languages and how common place json is now, that this would provide opportunity for tbaMUD to play nicer with other programming languages and platforms, and allow for easier creation of third-party tools.

Comments & suggestions always welcome...

tbaMUD developer/programmer
Last edit: 4 weeks 1 day ago by Vatiken.

Please Log in or Create an account to join the conversation.

  • Vatiken
  • Vatiken's Avatar Topic Author
  • Offline
  • Administrator
  • Administrator
  • tbaMUD Programmer
More
4 weeks 1 day ago #10222 by Vatiken
Replied by Vatiken on topic Current Development
DG scripts allows access to the %move% command for rooms and objects.
> %move% obj_name room_vnum
> %move% all room_vnum
> %move% %uid% room_vnum

[b]Bug?:[/b]
  When given the first argument (name, all, uid), such as "sword", the do_xmove() command will first check a few things. Is the argument and uid or "all"? If it is, no problem.

Issue 1:
  If the argument is "sword", then it will search the current room for the first object with the keyword "sword" and then move it. This could easily be hijacked by a user dropping an item with an identical keyword into the room before the script fires.

Issue 2:
  If the argument is "sword" and there is NO sword in the current room. Then it will search the entire game for the first object with the keyword "sword" and move it to the target room. The first "sword" it finds can even be in someone's inventory which throws an error.

Solution:
  • For Issue 1, the problem can be easily solved by using a unique keyword if there is only a specific object you want moved. Such "zone_name_object_1" or something. "> %move% zone_name_object_1 1000
  • For Issue 2, I believe the solution is to have the %move% command search the world for a UID, but only search the room for an object name. My concern... I don't see %move% being used at all in the stock tbaMUD world but I wouldn't want to introduce bugs into someone else's game world if they are relying on %move% being able to access other rooms/zones. Opinions?

tbaMUD developer/programmer

Please Log in or Create an account to join the conversation.

  • zusuk
  • zusuk's Avatar
  • Offline
  • Elite Member
  • Elite Member
  • LuminariMUD Developer
More
4 weeks 22 hours ago #10223 by zusuk
Replied by zusuk on topic Current Development
Just a quick, off the top of my mind thing - adding the new Grapevine and/or older Intermud systems would probably be generally a great tool for adding dimension to a new MUD.

Trying to launch a new MUD without any players around is rough, so that would at least give your new players a way to talk to other players on other MUDs while there are no other players around.

www.reddit.com/r/MUD/comments/xnyq09/gra...ba_or_dikubased_mud/

wotf.org/i3/

Also these issues might be a good direction to revise on the core codebase if they still exist:

github.com/LuminariMUD/Luminari-Source/issues/5

github.com/LuminariMUD/Luminari-Source/issues/12

github.com/LuminariMUD/Luminari-Source/issues/24

Website
www.luminariMUD.com

Main Game Port
luminariMUD.com:4100
The following user(s) said Thank You: Vatiken

Please Log in or Create an account to join the conversation.

  • zusuk
  • zusuk's Avatar
  • Offline
  • Elite Member
  • Elite Member
  • LuminariMUD Developer
More
4 weeks 22 hours ago #10224 by zusuk
Replied by zusuk on topic Current Development
Another generally good idea... Performance monitoring...

Someone started that project for us as an example:
github.com/LuminariMUD/Luminari-Source/blob/master/perfmon.cpp

Website
www.luminariMUD.com

Main Game Port
luminariMUD.com:4100
The following user(s) said Thank You: Vatiken

Please Log in or Create an account to join the conversation.

More
3 weeks 6 days ago #10225 by Rumble
Replied by Rumble on topic Current Development
Thanks Vatiken, I have been less active recently. But I am more than happy to help by at least putting together the annual release and looking through the idea/bug/typo logs. Let me know how else I can help.

Rumble
The Builder Academy
tbamud.com 9091
This email address is being protected from spambots. You need JavaScript enabled to view it.
The following user(s) said Thank You: Vatiken

Please Log in or Create an account to join the conversation.

  • Vatiken
  • Vatiken's Avatar Topic Author
  • Offline
  • Administrator
  • Administrator
  • tbaMUD Programmer
More
2 weeks 4 days ago - 2 weeks 4 days ago #10235 by Vatiken
Replied by Vatiken on topic Current Development

Just a quick, off the top of my mind thing - adding the new Grapevine and/or older Intermud systems would probably be generally a great tool for adding dimension to a new MUD.

Trying to launch a new MUD without any players around is rough, so that would at least give your new players a way to talk to other players on other MUDs while there are no other players around.

www.reddit.com/r/MUD/comments/xnyq09/gra...ba_or_dikubased_mud/

wotf.org/i3/

Also these issues might be a good direction to revise on the core codebase if they still exist:

github.com/LuminariMUD/Luminari-Source/issues/5

github.com/LuminariMUD/Luminari-Source/issues/12

github.com/LuminariMUD/Luminari-Source/issues/24

I will look into as much as I can.

Further increasing the stability and improving upon the usability is my main goal with the limited time I have available. The interMUD chat looks interesting and "relatively" simple to integrate into tbaMUD. I'm going to say it probably falls outside of the scope of what tbaMUD is for an official release, but if I get time I will see if I can get a tbaMUD version 3.XX patch for it or just an branch on github.

tbaMUD developer/programmer
Last edit: 2 weeks 4 days ago by Vatiken.
The following user(s) said Thank You: zusuk

Please Log in or Create an account to join the conversation.

  • Vatiken
  • Vatiken's Avatar Topic Author
  • Offline
  • Administrator
  • Administrator
  • tbaMUD Programmer
More
1 week 6 days ago #10237 by Vatiken
Replied by Vatiken on topic Current Development
I just updated my master github branch with the latest in the development. Details Here

To summarize:
  • The JSON module is in testing, but included. I've run the server through valgrind, and tested it thoroughly. While I'm sure there are still some bugs, but it is working as intended in it's limited capacity.
  • I've dealt with a significant amount of the sprintf() functions and upgraded them to snprintf(). Most of the instances were pretty safe to begin with, but some were in pretty high risk of buffer overflows. Thanks Zusuk for the suggestion. I haven't touched strlcpy and strlcat yet. But I will get to those.
  • I've addressed and corrected several bugs, some blatant, some more obscure.
  • Spent a good chunk of time in the dg_XXXX.c files, doing clean up. Addressing formatting issues, and adding comments & context to error messages to improve useability and readability.
  • There is a new scripts folder in the base directory with a "messages.py" script in it. If the new JSON message format is enabled, running the script will do an inspection & analysis of the current game messages and provide the user with direct info as well as 2 reports, 1 in JSON, and one as an HTML. This is just a dirty script and not meant to be taken overly seriously but it gives an example of the benefit of utilizing the JSON system as the script took about 15 minutes to throw together.

tbaMUD developer/programmer
The following user(s) said Thank You: zusuk

Please Log in or Create an account to join the conversation.

  • zusuk
  • zusuk's Avatar
  • Offline
  • Elite Member
  • Elite Member
  • LuminariMUD Developer
More
1 week 6 days ago #10238 by zusuk
Replied by zusuk on topic Current Development
Wow, great stuff Vatiken... appreciate everything!

Website
www.luminariMUD.com

Main Game Port
luminariMUD.com:4100
The following user(s) said Thank You: Vatiken

Please Log in or Create an account to join the conversation.

Time to create page: 0.205 seconds