So, I’m not sure I’ve actually developed for Creatures exclusively on a Linux install before. I hosted Live Nornish Action on a Linux PC for a long time, but all the actual development for that still took place in a Windows environment where I have access to nice things like the CAOS tool and the debugger.
At some point I’d like to try out the CAOS Tool 2020 that is embedded in Storyteller and see if I can tweak that for talking nicely to lc2e. But for now, I’m just going to use good ol’ jEdit along with the CAOS syntax highlighting provided in the Jagent package.
Not too much trouble getting that running. I just have to remember to make the appropriate catalog file edits.
The next thing I need is a debugger.
I’m not super sure where I got this little bash file (I feel like it was somewhere in the official gameware pages for lc2e), but it’s an effective command-line replacement for the debugging monitor:
The nice thing about lc2e is that it can communicate with external tools via netcat, which is far easier to deal with than the shared memory hoops you have to jump through to talk to the game on windows. In the future, I’d like to make some nicer tools for Linux players, especially since as DS becomes more and more dated, running the game in a Linux VM might eventually be the best way to get up and running. Of course, maybe openC2E will catch up first. I guess we’ll see.
Anyway, now that I have the basics for development, I need to start thinking about what I need to do here. When considering how to allow creatures to travel between worlds running on the same machine, a few different ideas come to mind:
The quickest, easiest, and least elegant way to do this is to modify the old Albian Warp scripts so the game thinks that it is always online. Instead of usernames, the contacts list will instead be populated by lists of other worlds on the machine. The Albian Warp scripts already “warp out” creatures by exporting them with the name of the recipient embedded into the export file, and “warp in” creatures by checking the exports folder constantly and importing creatures that are “addressed” to them, so if the script with changed to check for norns addressed to their world name instead of their username, the rest should go fairly smoothly.
Of course, it would take a little more work to do things like checking to see if a world was actually running or not. Without external scripts, I believe the different worlds can only communicate with each other via journal folders. I could probably do something like have a world output the time to a journal file every few minutes and then have each world check for those journal files periodically to determine if that world was active recently, flagging it as online or offline accordingly. I could even use the same technique to allow worlds to send messages or chat with each other, though there wouldn’t be a whole lot of point to that. But that method, while plausible, feels awfully messy.
Having an external script run things would give us a little more control. The script could sort of act like the old Albian Warp client and monitor the online status of the worlds, pass messages between the worlds, and ensure the safe return of creatures who get sent to offline worlds. (I am concerned about the possibility of setting up four worlds for a wolfling run, only to have one crash or freeze but creatures still “warp” to it and get stuck in the exports folder). It could also be expanded upon in the future.
Both options have their pros and cons. There’s a lot of convenience to just being able to run something without an external script to handle it, but the external script would give us more options, and give me more experience in writing in a non-caos language.
I think I’m going to try for a sort of hybrid model. I want to get the portals between worlds up and running on CAOS alone first, and maybe implement some very basic online/offline detection. In truth, that should be enough for most usages of the system. Later I can add an optional, external script to monitor and expand things, maybe add some fancy features, but I want to ensure that the portals function perfectly fine without the external scripts running.
There is, of course, a third option that comes to mind. So far, all the options that involve modifying the Albian Warp scripts also involve, essentially, breaking them. Worlds that are linked in this way will never be allowed to actually go online. If we want words that can still use Albian Warp and link together with other worlds on the same computer, we need to write an entirely new system that doesn’t conflict at all with Albian Warp. There are a number of ways this could be done, and it would take a lot of time, but it might give us more ease and flexibility. For example, we could set doors instead of portals, and possibly create pseudo-CA links between worlds to allow for more natural travel decisions. I haven’t thought too much into this yet, but maybe more ideas will come to mind as I play with linked worlds. Honestly, the online aspect isn’t a high priority for me right now, but the idea of building a totally new system for linking worlds, free from any previous constraints, is kind of exciting.
Well, I guess now that I have my ideas figured out, I should start working on modifying those cosfiles.