Hey everyone. I'm working on the very early stages of a database that will allow players to upload their creatures' histories. This will replace some of the warp server's functionality of displaying family trees.
And here is the first very rough version of a console app that uploads your running world to the server. It only works once per world currently (if you execute it twice on the same world, the second time nothing will happen but a harmless crash of both the server and the client, but not the game. That is, no update of any new creatures will occur). But the next version will hopefully allow running worlds to actively update the server with their creatures.
Client app to upload game info to server:
This app is designed solely to expose your private data to the world. This private data may include anything located in your game's saved files, both under 'Documents' and 'Program Files', or in active memory (RAM).
Instructions to those who would like to help:
1) Please try with a GoG install running Docking Station with no imported creatures.
2) Download the ConsoleApp1 from my google drive.
3) Start Docking Station and load a world.
4) Launch ConsoleApp1.exe
5) Go to https://creatures.azurewebsites.net/creatures to view your uploaded creature histories.
How it works:
ConsoleApp1 attaches to the running game, outputs a file containing a JSON database of all creatures' info, and then uploads that to my server running temporarily at https://lemurware.tech/api/v1/creatures/.
EDIT: I have changed the API and ConsoleApp1 no longer works. I'll upload a new version of the ConsoleApp once I solidify the server's processing of images.
Any specific reason you used the shared memory interface instead of a CAOS script that could dump the history? I haven't played much with HIST commands so I'm not sure if there's something prohibitive about it or if shared mem was just the closest tool at hand for you.
Note: the images sometimes don't all load. I believe that's due to so many requests hitting the server at once. But I'm not sure.
Any suggestions on what information I should display are more than welcome.
EDIT: After looking at the logs, the images definitely aren't loading because of too many requests at once. I've got it partially fixed (the error was actually causing the server to crash) but some images still don't load.
EDIT: And it's fixed. I'm starting to like node.js.
I just made a poll. I believe it's under review, but I'm not sure if the polls are working. Either way, here's the reason for the poll.
In order to upload name changes live, the Creature Database code needs access to all code that changes creature's names. That means the in-game GUI that changes names, and any autonamers.
To that end, the Creature Database is probably going to include an autonamer. But I'm not sure which is most popular. Hence the poll. I'll include an autonamer based on the most popular one. And if people prefer not using autonamers, I may go through the effort of including the "Creatures Database Autonamer" as a separate agent.
If the poll doesn't work: Which autonamer do you prefer?
I usually made a crude version of the All-Creature Autonamer myself. I always have Jagent laying around, so I take the vanilla DS autonamer, pop off the lid, change literally one value to make it name all creatures, weld it back together and that's that.
It's a matter of two minutes, and for me personally usually easier than searching a download link.
Lets play plants! Photosynthesis... Photosynthesis... Photosynthesis...
I tend to use Advanced Protective Tub, but also sometimes Random Namer with a modification to turn off alphabetic generation names and see what it makes. I've had the history update in the past, but I don't really use it anymore.
You know...wait...nevermind... wait...no...umm...maybe later...
I'm thinking about possibly making a name updater agent, that keeps a record of all names, and outputs a file whenever a name changes. It'd have to also delete its record of a name whenever a creature died or warped out. Oof, it's possible but sounds easy to mess up. But that way players could still use their favorite autonamers.
Does anyone know if NAME variables, where the variable name is set to an agent like a creature, continue to take up space after the agent is KILL'd?
Like if I set up a bunch of
seta va00 norn
sets name va00 "creature's name"
would the names continue to take up space after the creature no longer exists? It doesn't seem like it would. But does anyone know for sure?
I'd also have to catch newly imported and warped creatures before the autonamer got a chance to name them. I think script 127 (fires when a new event happens, like an import event) would let me do that.
Sorry for disappearing. My personal life interjected itself suddenly.
So I'm thinking about redoing the client side code with Electron. I've never used Electron before, but from what I can tell, it can do everything I need.
The final system would be:
-Installed by Electron App.
-Outputs creature histories as JSON files.
-Checks for and (after a prompt) installs CAOS modifications.
-Displays creature-history JSON files from local computer.
-Uploads creature histories and images to Server.
-Displays creatures histories and images from Server.
Server (with RESTful API):
-Accepts uploaded creature histories and saves to SQL server.
-Can be queried for all previously uploaded creature histories.
The only thing the user needs to download is the Electron App.
Also, the "install CAOS modifications" feature would be Windows only due to using the CAOS Class Library and the shared memory interface.
So, does anyone see any flaws with my system, or ways it could be improved?
I'm not going to release another "build" until I actually add new features. But if anyone wants to poke around, there's actually a GitHub repo in the v0.0.0.2-beta under "resources/app/". You can pretty easily download GitHub Desktop, open the repo, and download the new code.
Anyone on 32-bit windows? I can help you install the app. I'll start releasing both 32-bit and 64-bit versions in the future.
Also, I think I'm going to call the program "Story Teller".