jonm / sillymud Goto Github PK
View Code? Open in Web Editor NEWSillyMUD, a derivative of DikuMud
License: Other
SillyMUD, a derivative of DikuMud
License: Other
In particular, the source code comes with some empty files (e.g. players
) in the lib/
directory, but once you have the game up and running, a subsequent make install
will put the empty versions over the existing ones, which is not the desired behavior. Really for the length-zero files, we should either have the game attempt to create them empty if they don't already exist (in which case we don't have to install them at all) or we should have the install target do a touch
instead of a cp
.
Can't list
or value
in shops in Midgaard anymore. You get:
Sorry, but you cannot do that here!
Proposal: use semantic versioning for release numbers.
<major>.<minor>.<patch>
Currently we are at 0.1.10
. I would characterize our progress thus far as we've made things runnable but probably not cleaned up enough to warrant a 1.0.0
. As a 0.x.y
version, we should get some leeway on backwards compatibility. So I propose, for now:
1.0.0
; thereafter those are probably major releases unless we can do them in a backwards-compatible fashionAs a new character, trying to practice a skill at the GuildMaster does not seem to work exactly right:
H:5 M:112 V:110 > pr bless
You practice for a while...
The Guildmaster says 'Hey, I'm not your guildmaster. Get lost!'
Which class???
Go to your guildmaster to see the spells you don't have
The net effect is that the skill got learned, but there are some extraneous error-looking messages in here.
Made a level 1 thief and was wandering around the Chessboard and ran across a mortally wounded pawn. Tried to backstab it and the game crashed. Last log line was:
Dec 29 22:55:52 ip-172-30-0-252 silly[24918]: BS multiplier for 1th level char is 4.
I'll try to replicate it locally.
H:10 M:16 V:105 > att
Pardon?
CONTRIBUTING asks for CLA signing, but points towards https://www.clahub.com/agreements/jonm/SillyMUD which, currently, is not the document it was supposed to be (the entire clahub.com seems to be a spam/ad host, nowadays).
Given that Travis CI changed their long-term free CI/CD hosting for open source projects back in 2020, it might be worth considering moving the build elsewhere. While the build still appears to be working, as we probably got moved to the "10k credits" plan, and as a hobby project we are not in any danger of running out of credits anytime soon, it might be long-term simpler to move things to GitHub Actions, which is free for public repositories using the GitHub-hosted runners. Plus we'd get to play with GitHub Actions. :)
Just learned riding from the ninja master, and got:
H:34 M:81 V:114 > pr riding
The ninja master says 'That will be 0 coins.'
The ninja master says 'We will now begin practicing.'
Which class???
Go to your guildmaster to see the spells you don't have
Despite the error message, I did successfully learn riding, though.
Mobs with an S
designation in tinyworld.mob
should have the following format for the second line of stats according to the code in db.c
:
%d %d %d %dd%d+%d %dd%d+%d
But at least a handful of them have:
%d %d %d %d %dd%d+%d
That is, the 4th stat is just a number instead of a die + bonus spec. This is causing random values to be read off the stack in db.c
. It seems to work almost all of the time, shockingly, but I've seen it crash the game on occasion.
There are 141 mobs with the S
designation and 36 of them have this problem:
grep -A 1 'S$' tinyworld.mob | grep -v 'S$' | grep -v -- '--' | grep ' [0-9]\+ [0-9]\+d[0-9]+[0-9]\+$' | wc -l
Probably this is just a matter of doing a make dist
, then unpacking the resultant tarball and trying to do a ./configure && make
in that directory.
Something happened recently such that sometimes if you try to invoke a parallel build (make -j
) it will rerun ./configure
even if it isn't required. I'm sure it has something to do with the autoconf checks that happen in the beginning.
The game currently logs to syslog
when running in daemon mode; we should figure out a configuration for rsyslogd
that allows for periodic rotation/truncation of logs (and then document that in the INSTALL
doc).
I don't know how to say this via a message - but this is Loki. I meant to say hi sooner, but got distracted by the holidays, and then forgot until earlier today.
I'm super-excited you're trying to refactor it. It should be an epic adventure in its own right, heh.
good luck! Let me know if there's anything I can do to help, other than code, can't really commit to that right now.
H:36 M:63 V:96 > split 1
You keep 0 gold
You give $N 0 goldA dust devil gives you 0 gold
You give $N 0 goldKeith gives you 0 gold
And you keep the 1 gold left over.
It'd be nice to be able to direct output to /usr/local/var/log/sillymud/XXXX
so we can look at things there instead of nohup.out
which is how I'm running the prod instance currently. I suspect there is probably a good C logging library/best practice that could be used here.
Have discovered that offer
predicts I would have 0 gold/day rent, but then when I log in after renting, it says I ran up, say 81 gold in rent and I've lost my stuff ("you deadbeat").
Seeing Board-message file corrupt, nonexistent, or empty.
in log but it seems to be restoring the board.
Again, now that there is a production instance, it'd be good to have a command-line option to run as a daemon.
The production box does have an IPv6 address, after all.
It seems as though some of the open bugs (e.g. #59, and I definitely cleaned up some other formatting errors in my initial efforts to get things running again) come from improperly writing (editing?) the files with something that doesn't match the (implied) schema. I think moving to some form of database would help prevent these issues (and, to be honest, probably bring good things like transactional integrity and possibly better performance).
My current thinking is to gradually migrate some--or all?--file-based storage to SQLite. It is public domain software, so we should be license-compatible by using it. Since they are simple files, distributing the databases should be just as easy as distributing the existing files.
Thoughts? If I get sufficient time and motivation, I'll just do it, but I figured I'd gather some input. ๐
If you attempt to access a numbered item, say, by doing wield 2.hammer
to wield the second hammer in your inventory, we get a segfault in get_number
in handler.c
.
The code seems to intentionally not write to the board file after a message has been composed unless either another message is written to the board or a user gives an write
command with no message subject. I can't imagine the benefit of this. A MUD shutdown doesn't force the write either.
Code like this exists in db.h
in the definition of struct index_data
. There are a few more like it in in the fight.c
(damage functions) and in the iteration functions in hash.c
.
/* mob special procs are:
int (*func)(struct char_data *, int, char *, char *, int);
obj special procs are:
int (*func)(struct char_data *, int, char *, struct obj_data *, int);
*/
int (*func) ();
This warning on startup should probably be addressed:
Attempting to call a non-existing mob func on valik wizened mage
There are 3rd party hash table implementations that are undoubtedly more battle-hardened and robust, such as the one in the Apache Portable Runtime (APR):
https://apr.apache.org/docs/apr/1.4/group__apr__hash.html
The APR is available via Homebrew as well as via yum
on the production Linux box.
The idea is to have less of our own code to manage; this would also make it easier to introduce hash tables in other areas. For example, the mob and object indices likely want to be hash tables instead of a binary search array. There are also other parts of the code where a linear search though a list is done to find a particular mob, object, or character.
Hi there,
This project has the hacktoberfest
tag, but hacktoberfest is "month-long celebration of open-source projects", while this project isn't Open Source (according to the LICENSE file it is under the original DikuMud license).
For wizard security files, they can be restricted to logging in from specific IP prefixes, although it seems to be more like string prefixes. Would be better to specify these as actual IP address blocks like '8.8.8.0/24' and then to allow multiple blocks per security file.
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.