I am doing this all on my laptop that runs Linux (Arch + Minimal GUI).
The first thing I wanted to do was set up a little playground for myself. I was inspired to do this a few days ago when reading a town hall manuscript. (http://www.sindome.org/town-hall-01-14-17-raw-log.html)
Towards the end Nyron and Fengshui provide a few links and suggest one install a mood if one is interested in doing some code work.
The links provides are:
Fengshui: http://sindo.me/m6ntf7
Nyron: http://sindo.me/mjhgyy
These links both seem to be guides on coding LambdaMoo. I have started with Fengshui's for nor particular reason.
The first thing I did was clone the LambdaMoo repo Fengshui pointed to (Repo Location: https://github.com/wrog/lambdamoo).
Once on my system I read through the README and it turns out that building the moo is not hard at all. (I already had common dev tools installed [base-devel in arch]).
This included three steps for me (all in the lambdamoo directory where I cloned the lambdamoo source too from github):
1. I ran 'sh configure'
2. I edited options.h (nothing needed changed on my end so far)
3. I ran 'make'
And so the mo server was born!
Having read a little ahead in Fengshui's doc I decided to download the lambdacore database from the location he provided (http://lambda.moo.mud.org/pub/MOO/). I wasn't sure which database was best so I took LambdaCore-latest.dp. I put this into the lambdamoo directory. It looks like there is already a minimal.db that comes with the lambdamoo cource but Fengshui's doc suggests that there are programs in the lambdacore database that are useful but not present in the minimal database that comes with the source.
With the server built and the lambdacore database present it was time to start the moo. The lambdamoo README suggests you use the restart script as it does some nice database management stuff before running. It turns out, however, that this script is set to be executed by a c-shell and I only had bash available. I did not care to try and see if I could get the script working on bash (the scripting syntax can be very different I think) so I just installed tcsh on my arch maching and the script ran fine and started the moo.
Then I simply telneted to localhost on port 7777 and I was in my own lambdamoo - complete with one room!
The first is that, though it is unmentioned in the README, there is a bourne-shell compatible version of the 'restart' script called 'restart.sh'. No need to install a c-shell.
However, the script tries to compress a copy of the old database file using the 'compress' command which was not on my system. I did a little research and this seems to be an older program and it ended up being easier to update 'restart.sh' to use gzip than finding and installing compress.
I don't have a video for this, but a bit of advice once you're ready to start programming an environment ("game" or other type of environment) full of stuff is to program verbs and set properties on a generic object, and then create children of that object to put into the game world.
It's a little bit like prorotypes in Javascript, or a little bit like an abstract class in any object-oriented language, except that MOO doesn't have classes or prototypes. But you can make an object which you decide is a generic for all of the ones you'll put into your MOO world.
I was already thinking about this too Linekin. I was thinking about how in Java (something I haven't seriously touched in over six years) you have a class and you create objects from it. So I might have a weapon class with a gun descendant with a pistol descendant with a Beretta 9mm descendant. From then on I would create individual Beretta 9mm objects using the class.
I noticed that lambdamood did not seem to have classes, just objects. Which made me wonder how people go about organizing their objects and if they created object templates or something. Looking forward to learning more.
The problem is that Nyron's doc assumes you are doing work on already up and running lambdamoo and you just need a wizard (a lambdamoo superuser I think) to make your user a programmer. The default LambdaCore.db has a wizard account and I can use it to do anything I want but Fengshui's doc suggests it is better to avoid using the wizard account as much as possible.
To fix this I created a new user and then had my wizard account make it a programmer (just ran the @programmer
It turns out that this has two benefits. For now I am constantly logged into my programmer account (where I am doing the actual work) and the wizard. This way I can see how things look from multiple perspectives. I am betting that later on I will probably want to be logged into three or more characters so I can things from every angle.
This is all just suspicion at this point...
There is a compiler.
I'm not too clear on exactly when your program is compiled: Maybe at startup time, maybe at the time the program (or edits to it) are saved in the database of a running MOO, maybe both.
Say here: Anatomy of a LambdaMOO db file
Love this thread!
- Installed lambdamoo with LambdaCore
- Created a pet rock
- Created a simple timer.
I have to say that based on this limited experience I am INCREDIBLY at where Sindome is today. All the time and effort if must have taken to get all the rooms, weapons, Armour, NPCs, electronics and so much more in place is just plain mind boggling.
All of you who have contributed to this game: You are awesome.
I'm not done yet. Next items on my list:
- Try and move my moo to a PI so I can remotely access it from anywhere. (I'm too cheap to pay for AWS).
- Watch Slither's videos.
- Start building my house in the moo.
The thing that bugs me most so far is having to edit and view all this in-moo. I miss editing source files using VIM/Geany/Whatever. I am curious how other people deal with this. Do most of you write everything up in a text editor and copy-paste it over? Do you just do everything in-moo? Something else entirely?
There is an older public fork of the webclient available here:
https://github.com/JavaChilly/dome-client.js
We need to update it with a stripped down version of what you all play with, pick up the bug fixes and improvements. (We take out all the SD specific bits)
Do you mean an equivalent of LambdaCore.db? I had thought about suggesting a SindomeCore.db. It would be nice to see some of the scaffolding behind Sindome. Slither mentioned in one of his videos that there are some convenient additions the he uses when working on Sindome in one of his videos.
http://alesnosek.com/blog/2015/07/04/running-wine-within-docker/
Step by step:
1. Install Docker. (Linux only)
2. docker run --rm wine1.4 wine "C:\windows\system32\notepad.exe"
So easy!