The Journey So Far, Part 7/7

The containment chamber’s ‘send all creatures’ button had been broken from the start, and portals still weren’t sending creatures to friends properly. There were some problems with creatures trying to warp when they had already, or copies of creatures that had already been exported throwing errors when they tried to warp. Testers had also expressed some annoyance at having to start a new world with every update, or manually re-inject the 15+ cosfiles that the Albian Warp scripts had come to encompass, so I made an agent to make that less painful too.

The break I had taken for minor bugfixing was pretty morale boosting. Most of the fixes turned out to be easier than I thought. It was especially satisfying to finally be able to warp out a whole bunch of creatures at once– and a bit faster than the old warp too, if memory serves me correctly.

Creatures now warped through portals as soon as they pushed them as well– an improvement over the several second delay in in the original warp scripts.

Feeling optimistic, I dove back into fixing the chat function. If nothing else, testing the group chat could be… entertaining as I filled it with fake users to chat with.

The contacts book attempts to add every user it ever encounters, via chat, creature warp, or otherwise, to the contacts list. This includes those that don’t exist, and even those ones that have a tint tag as part of their username (please do not make a tint tag as part of your username).

Finally, on May 15th, after several days of re-coding and testing with Ham5ter, Mea, and Pilla, the chat function was finally considered functional.

And well? I guess that’s where we are now. Is it ready for the public? Not quite, as you’ll see if you take a look at the Game Modifications issues page (and that’s just the CAOS part, there’s the client and server issues pages too). But wow, we’ve come so far just in the last couple months and it’s really exciting! With the help of our testers, we’re getting closer to Beta all the time– check out the the Beta Roadmap board on our project page to see what’s left to do before the public release.

But if you just can’t wait to start warping norns around, don’t mind bugs and crashes, and want to help out, you can get involved in the Alpha test by joining us on the Caos Coding Cave discord server and checking out the project Wiki for directions to get started.

In the meantime, keep an eye on this blog for updates! We’re getting so close it’s hard to believe this all happened so fast. But like I said at the very beginning, I want this to be the time it happens. For real.

The Journey So Far, Part 6/7

Even though I can’t imagine the chat function of DS will be widely used in this day and age with so many better communication platforms available, I still felt like it was important to get it running for nostalgia’s sake if nothing else. Chatting and group chatting with strangers via DS was how I met a lot of people in the community for the first time back in those days, and if nothing else I’d like to have the ability to relive those memories. Besides, from a completion standpoint, I wanted to make sure Albian Warp could be capable of everything that the old warp was.

I had taken on a personal guideline for this project of making it work first, then optimizing and debugging later. Switching tasks frequently and not spending too much time on one thing was important to me to avoid getting too frustrated or burning out. I’m really grateful that all the testers were so patient with me while I flitted from task to task, probably working on everything but the most wanted features and annoying bugs.

The chat code was quite something to untangle and translate, and it wasn’t until April 26th that I made some visible progress. The newest version of the client ham5ter developed included support for Real Time Direct Message Agents, or RTDMAs. Utilizing a websocket, these messages would be sent and recieved much faster than DMAs, making them perfect for chatting.

I couldn’t always bother someone else to test chat with me though, so the majority of my chat development was injecting fake RTDMAs to make sure the scripts were functioning properly. In short, I did a lot of talking to myself.

The first actual live chat conversation on Albian Warp happened a few days later. It felt really nice!

Too nice, in fact. I had to overhaul a lot of the chat code in order to get this working, most of which I didn’t even fully understand, and I was expected to run into way more bugs than this. One on one chats worked so flawlessly that it was utterly unnerving.

Pilla was right. The second we closed the window to the first chat, they began:

Ham5ter released the “Alpha Baboon” client, giving all alpha testers access to chat. Ham5ter, Pilla and Riakodoadam were awesome enough to hang around for several hours while we nailed down frustrating bug after frustrating bug, putting out updated scripts and burning and making new worlds like nothing else.

Even after a lot of effort and fixing a handful of problems, there were still a bunch of bugs with chat, particularly group chat. The invites wouldn’t send correctly, messages were only sending to part of the user list, messages went missing, and so on. I decided to take a break from working on chat a while and do some more general bug-fixing.

The Journey So Far, Part 5/7

(This is a multi-part post. Part 1 Part 2 Part 3 Part 4)

“Alpha Andromeda” was the second version of the client, released on April 15th. With the help of Malkin (of Malkin’s Little Creatures Blog) and Pilla, we warped norns like crazy between each other, finding plenty of new bugs to squash.

Meanwhile, Civvi (of Civilian Life) channeled her warp-enthusiasm into crafting us this gorgeous artwork:

We decided as mascot for Albian Warp, she would be a portal-blue tinted Chichi– a descendant of Warpy (the mascot for the Warp Week celebrations of days past). We named her Meili, after a Norse god of safe travel. She’s become quite the inspiration when the coding gets tough!

And the coding got pretty tough at this point. One of the biggest challenges of this project for me was having to rewrite the Who’s Wanted Registers. Previously handled with NET: commands, the WWR was a mechanic that kept track of users as they went online and offline and sent messages to the agents that needed to know that information. It was quite a frustrating piece of code to write from scratch and still doesn’t function perfectly but, it was enormously satisfying the first time I got a notification that a friend had come online.

Having (mostly) functioning Who’s Wanted Registers meant portals were a lot more accurate too, lighting up when the people they were connected to went online, and blinking out when they weren’t.

More testers hanging out in the discord began to take notice at this point, and Mea and Verm joined in on the testing and bug-searching party! It was great to see that contacts list start to fill up.

We ran into a frustrating problem at this point– the Albian Warp client was being treated as a virus by AVG and other programs. This seems to be an unfortunate side effect of programs compiled with PyInstaller, as this issue details. Thankfully our testers were able to work around it and join in the portal-y chaos!

Civvi and Riakodoadam also joined in the testing party later on, and ham5ter released a threaded version of the Alpha Andromeda client. A later restructured version of the client actually removed outgoing creatures from the My Creatures folder occasionally, so we didn’t have to clear it out as often. With all the interest, we finally put together a simple “How to get started” guide on the github-hosted project Wiki. We left worlds running with portals open and were excited to see what we came back to. It was starting to feel more and more like the actual warp!

But… something important was definitely still missing.

 Read part 6

The Journey So Far, Part 4/7

( This is a multi-part post. Part 1 Part 2 Part 3)

Even though we had managed to successfully send the first creature through the Albian Warp, there were a ton of bugs to tackle at this stage. Even though creatures were being sent, they were not being removed from the exports folder, putting a lot of strain on the immigrant checker script. Often times, the script would get stuck and creatures would stop warping in at all. Furthermore, while Creatures could be sent to offline users, the client and engine still had no way of telling who was online and offline. For testing purposes, I left my code treating everyone as online for the time being.

At this point ham5ter set up a Project Board on github for tracking what we still needed to do. We quickly filled the board with cards containing our hopes and dreams. We’re still doing it, too! These boards are a lovely way to organize and keep track of what’s going on within a bigger project like this, and anyone can take a look to see what’s going on.

While ham5ter was sorting out the client side of creature-management, I tackled portals next. For the most part the existing code worked okay after a few simple edits, but only for sending and receiving creatures to/from random users. Because I had to rewrite the way contacts worked, it was having a harder time dealing with sending to individuals, groups, and friends. It was also inaccurate with displaying its ‘open’ status properly, since we still didn’t have any way to detect who was online or offline.

Things were starting to get really complicated and messy at this point, CAOS-wise. Find-replacing and copy-pasting long blocks of code to make the original code Albian-Warp compatible was getting difficult to both read and deal with. Essentially we were having to replace every NET: command with our own scripts, and there were a lot of NET: commands.

So I tried out a CAOS method that I’ve been toying with for a while now, but haven’t actually used in any large capacity. I’ve been referring to them as ‘CAOS Functions’ and they involve storing scripts in a GAME variable string and then executing them later using the caos command literally called ‘CAOS’.

It’s still pretty messy, but this method allowed me to essentially find and replace a single NET: command line with a single CAOS line in most instances, making the Albian Warp conversions much less painful to read and write for both myself and hopefully any future developers.

Read part 5

The Journey So Far, Part 3/7

( This is a multi-part post. Part 1 Part 2)

Creatures weren’t actually traveling across the web yet, but you could log in on one account, send a creature to another account, and then log in on that account to receive the creature as long as you stayed on the same computer. Ham5ter was able to implement the creatures warp out/in code from the CAOS side, but while he was working on getting the server side running, I decided to test things out and start refining the immigrant checker code. But… that’s when things got a little weird.

The Bedbug-Bug, as it would later be known, was thankfully (mostly) remedied by the time the server side of things was running.

Finally, after more testing and debugging, on April 4th, the very first norn, ‘hans’ traveled safely through the Albian Warp from ham5ter’s computer to mine:

How does it feel, hans?

Read part 4/7!

The Journey So Far, Part 2/7

( This is a multi-part post. Read part 1 here)

Inspired by the progress so far, I rigged up some CAOS to allow for the agent-messages sent between the clients to show up in the in-game inbox:

Mail was working! Well, sort of. You still couldn’t compose messages within the game yet, or pick someone from a list of contacts, or.. anything else really. But we also had a lot of fun testing, stressing, and crashing the client by sending message full of nonsense syllables, line breaks, and super long subject lines.

Around this time, ham5ter was nice enough to give me a crash course in using github. This was kind of new and scary to me, but if anything is going to push me into learning newer technologies, it’s probably going to be something Creatures-related. The AlbianWarpGameModifications repository was put to good use. Things were getting official! The ball was really rolling now.

Getting contacts working was the next task. If you used the warp back in the day, you might recall that adding specific people to your contacts could be a bit of a pain. Your contacts list was world-specific, so each time you started a new world you had to either reimport your contacts from an exported file, or start over. While the Docking Station site website was active, you could manually add contacts via the web interface, but once that was down you either had to resort to using CAOS or warp creatures out to random people until you happened to warp one to the person you were looking for. Ham5ter proposed having the client simply automatically fill in the contacts with everyone that was registered, making that struggle a thing of the past. Excitement was rising over the realization that maybe we could not only bring back the warp: maybe we could make it better!

But maybe it was too early to get excited. After all, what’s a warp without… warping?


Read part 3/7 now!

The Journey So Far, Part 1/7

Hey everyone! Aiko here, aka Amaikokonut of Naturing :: Nurturing. As a lot of you know, I dove in pretty hard when I heard that Albian Warp was kicking up again and have really gotten my hands messy with the CAOS side of things. Thank heavens ham5ter has been able to handle all the client and server side stuff that I don’t understand.

Anyway, it’s been a while since this blog has had an update, so I wanted to try to share with you the journey as it’s been so far from my perspective, along with some of the hilarities and mishaps we’ve run into along the way. While my view of the story is almost purely about the CAOS side, maybe ham5ter will post his viewpoints at some point too. The client and server development side of things is a whole other story in and of itself!

This post got so long (over 2000 words and 40+ screenshots!) that I split it up and will be posting one part every couple days until you’re all caught up. It’s been quite a long road so far and trying to cram it all into one post was a little overwhelming, so be sure to check back for the rest of this travelogue.

This chapter of our story starts around the end of March this year, when ham5ter posted about his intent to continue the Albian Warp Project as “a very basic client, server and basic tools that do nothing more then bridging CAOS and the network communication.” Not long after, he began posting live updates on his progress in the #AlbianWarp channel of the Caos Coding Cave discord server. Discovering that the Caos Class Library could be used from within Python, he decided that the Albian Warp Client would be written in Python as well, much to the joy of everyone who dislikes using Visual Studio.

Around the same time, ham5ter explained how exactly these tools were going to work:

I expressed an interest in helping out with the CAOS side of things. Pilla (of Pilla’s DS Agents) posted a neat mockup of what a message on the receiving end might look like:

Excitement was building, and it didn’t even have to build for long. The very next day, the first “Alpha Alpaca” client was shared with the development channel, and ham5ter, myself, and Mea (of Caos of the Creatures Realm) took part in the first “green light” test in a very long time. Although nothing in the game itself was really working yet, the client was sending and receiving agent messages (now referred to as DMAs) just fine!

At this stage it was discovered that due to Windows protection mechanisms, the client and the DLL often needed to be unblocked before they would function. We also learned, after some frustration, that the CAOS Class Library was incompatible with other tools that interface with the game such as the CAOS Tool and the CAOS Debugger, as these tools interfere with the Shared Memory. These are still problems we are looking to mitigate, but they didn’t stop us from moving forward.


Read part 2/7 now!