The Discover Albia Forum is Now Closed

Thank you for a short but wonderful experience! Due to time constraints and other factors, the forum is now archived and is no longer open to new registrations nor posts. All existing content can be seen for the time being. Thanks again, and I wish everyone all the best!

Please note that the forum may be permanently removed in the future, so please save any content sooner rather than later. No advance notice of this action will occur.

Setting up a brand new C3/DS!

Talk about everything else Creatures!
User avatar
Amaikokonut
Busy Bee
Posts: 89
Joined: Wed Jun 08, 2016 10:25 am
Country: USA
Currently Playing: C3/DS
Favorite Game: C2
Favorite Species: Norn

Re: Setting up a brand new C3/DS!

Postby Amaikokonut » Tue Dec 20, 2016 5:17 am

It seems doable to reduce collision problems by having a script to test several points of map space until it finds a safe, unoccupied space, and then stick the metaroom there. I had something like this functioning nicely for an old back-burnered 'ant tunnels' project that created lots of semi-randomly generated metarooms as needed. But even though they play nicely with themselves and other adaptively placed metarooms, they risk clashing with the coordinates of most current/older statically placed metarooms if the static metaroom is injected later.

Unfortunately, upgrading existing 'static' metarooms into adaptively placed metarooms, while not impossible, can be painful.

It's not just a matter of changing the coordinates of where the room is injected. You would also have to update the coordinates for every single plant/animal/foreground agent/possibly CA links/pretty much anything that is in the room. Not just to inject them into the new place, but to make sure they retain their current behavior (some C3 critters/plants rely on checking coordinates to make sure they don't wander too far one way or the other or grow where they shouldn't). You'd also have to make sure any doors in other rooms that go into that metaroom are updated to fit the new coordinates as well. It's complicated enough that I don't think any external utility could automate it with 100% accuracy. And since the DS engine is really flaky when it comes to removing metarooms, this all has to be defined before injecting the room, because afaik you can't reliably move/remove a room once it is in a world.

While we could theoretically, with a lot of effort, manually modify official rooms like the C3 ones to make them adaptively placed, it's probably bad form to modify 3rd party rooms without the creator's permission. So it might be best to just assume that is out of the question and that we're going to have to work around old static metarooms one way or another.

That leaves us with a few options:

  1. Simply making it very clear that the new adaptively placed rooms are potentially incompatible with older rooms, and encouraging users to inject any static metarooms first before injecting adaptive ones.
  2. Taking option A a step further and, in the event that we're going off a whole new bootstrap with new rooms injected from the very beginning, creating a dialogue box that upon entering a new world for the first time allows you to select any static metarooms you want to have injected beforehand. After injection, the scripts then create the new adaptively placed rooms, working around what space is left.
  3. Taking into account all known current/old metaroom placings and creating a blacklist preventing adaptively placed rooms from going into any of those spaces. This list would then need to be continuously updated if further statically placed rooms are created by community members.
Personally, option B is what I would prefer to work towards long-term, but having a new-world pre-injection selector is something I've been wanting to implement for a long time anyway. Option C is also pretty viable but I wouldn't really trust myself to keep it updated.

All that said, there are still some concerns:

  1. If replacing the bootstrap/starting from scratch, it's worth keeping in mind a lot of 3rd party metarooms still rely on certain DS metarooms existing for placement of doors, teleporters, etc. For maximum compatibility it might be necessary to keep those rooms, or at least empty rooms in the same coordinates so they don't throw errors upon injection. It's also worth mentioning that some old agents still use static coordinates for the DS injector/comms room for their placement after injection, so that might be a ongoing problem. It's possible that in either case a script could be set up to teleport anything detected in any of those spaces to whatever the new designated 'home' room is, but I haven't tested anything like that.
  2. Adaptively placed metarooms haven't really been stress-tested afaik. It's possible that there are some complications involved that just haven't surfaced yet. When I was working on the ant tunnels I was able to generate over 50 small-ish (about workshop size) empty rooms without any issue, but I didn't try injecting more, injecting lots of different shapes/sizes, or packing them all full of various agents, so it's possible there's limitations to them (I feel fairly confident the concept is at least stable enough for most normal playstyles, but again, testing will really tell).
  3. This is just flat out going to be a lot of work. I can feel myself burning out from the monstrosity of effort required already. :lol:
(Also, sorry if I'm derailing this a bit, you mentioned eliminating room collisions and I had to ramble about all my thoughts on it, heh.)

User avatar
Gio
Everyday Egg
Posts: 15
Joined: Wed Nov 16, 2016 5:13 pm
Currently Playing: DS
Favorite Game: C2
Favorite Species: Ettin

Re: Setting up a brand new C3/DS!

Postby Gio » Tue Dec 20, 2016 6:08 pm

Ahh, I hadn't realized you'd gone that far with your Project Underground! That's pretty cool.

But to the main point.. yeesh. I hadn't realized so many things referenced those coördinates! Still, you've given me a bit to work with. I'll get back to your post when I get to my PC.


-----------------------------------------------------------


Amaikokonut wrote: This is just flat out going to be a lot of work. I can feel myself burning out from the monstrosity of effort required already.

Don't look at it that way! The fact that you've established that your adaptive rooms even work at all is a tremendous leap forward in DS technology! Have you shared it with the CC at large? I'm comparing this (in my head) to the world-wrap technique that seems to be dependent upon one person, and reaching them can be difficult. If that person leaves completely, we lose that technology. We can deconstruct their work, but we'd have to basically reinvent it.

More than a COB or genome or breed, this is a new, useful thing. I, for one, find it exciting. Have you written a paper/wiki entry about this? Gah! The sheer awesomeness is overwhelming my thinkpiece.
Last edited by Gio on Tue Dec 20, 2016 7:20 pm, edited 1 time in total.

User avatar
Amaikokonut
Busy Bee
Posts: 89
Joined: Wed Jun 08, 2016 10:25 am
Country: USA
Currently Playing: C3/DS
Favorite Game: C2
Favorite Species: Norn

Re: Setting up a brand new C3/DS!

Postby Amaikokonut » Tue Dec 20, 2016 6:59 pm

Hah, yeah I guess in the case of Project Underground it was intended to be run as a its own sort of game-world completely separate from the main C3/DS rooms and incompatible with any 3rd party additions. I wasn't even planning on including access to an injector, so I thankfully didn't have to worry about any of that. Just a shame I got hung up on the sprites, as I so often do.

Edits/Additions: I haven't really written about it or released the code or anything, but it's really nowhere near as complex as the world wrap. It's really just a matter of testing the world map every 300px or so until it finds enough continuous free space to inject the room. It can be a bit slow but it only has to happen once per injection. I'll see if I find the files sometime and post them though!

User avatar
Gio
Everyday Egg
Posts: 15
Joined: Wed Nov 16, 2016 5:13 pm
Currently Playing: DS
Favorite Game: C2
Favorite Species: Ettin

Re: Setting up a brand new C3/DS!

Postby Gio » Thu Dec 22, 2016 2:15 am

Okay. I've given this a bit of thought for the past day or so, and I've determined what (hopefully) is a good angle to approach this from. The painstaking, tedious process of converting the official C3/DS metarooms should be our first step, as it covers a lot of the bases and questions you've posed so far. The converted rooms can serve as a stability test (can it handle the default game?) which then serves as our baseline for further testing (agent injecting, new worlds with static rooms, turtles) .

The hurdle is that the conversion work must be done by hand.. which, in theory, I can do. My art is pretty shoddy no matter the program, but I'm a whiz with a good text editor. Show me what needs to be done and I'll do my best to do it. =)

User avatar
Amaikokonut
Busy Bee
Posts: 89
Joined: Wed Jun 08, 2016 10:25 am
Country: USA
Currently Playing: C3/DS
Favorite Game: C2
Favorite Species: Norn

Re: Setting up a brand new C3/DS!

Postby Amaikokonut » Thu Dec 22, 2016 6:53 am

That's quite a task, but if you're up to it, it certainly would be a good stress-test.

I'll try to put together a sample annotated cosfile as a guideline to get you going here in the next few days. It'll hopefully be a good reference for others who want to try playing with adaptive metaroom placement (AMP?) too.

Hm, if you've haven't worked much with CAOS before though, it might be rather daunting. I'm not sure I'll have time/brainpower to explain every step you need to take (or I might, but I'll have to do it slowly to avoid getting overwhelmed/burning out and dropping off for months again), but if you're able to puzzle out the basics of it I certainly can help answer specific/complex questions!

Grab a copy of the official CDN CAOS Tool too if you haven't. Even if you're mostly just changing a lot of text to fit the AMP (I guess I'm making that a term now, beats typing it all out every time) standards, the tool will point out typos/syntax errors and you can also inject scripts directly from the tool to test them.

I'll try to get that sample written up/posted ASAP!

Edit: (If you don't already have it) you'll probably want a copy of the Map Editor too just so you can view your world map layout easily and see which stuff is injecting where. The information page with the serial is here, but the download link is broken; it's actually here. You'll also want to make sure you have the Creatures Remastered Patch installed the apps can talk with the game properly.

Sorry if this is all common knowledge (I'm not sure what is these days), just trying to cover all the bases and make things obvious for anyone lurking/following along too.

Edit 2: Have you ever messed with Python or similar languages? I'm thinking some of this conversion might be automate-able.

User avatar
Gio
Everyday Egg
Posts: 15
Joined: Wed Nov 16, 2016 5:13 pm
Currently Playing: DS
Favorite Game: C2
Favorite Species: Ettin

Re: Setting up a brand new C3/DS!

Postby Gio » Thu Dec 22, 2016 3:23 pm

It's not common knowledge, I don't think. The only reason I have the editors at all is from reading your reply to xan a few posts down. The Remastered Patch I learned about from these forums in general.

I've touched Python, poked at Ruby, dabbled in Lua (a few add-ons for MMOs), but am mainly familiar with C, Scheme, 6502 assembly (though I'm way out of practice there), and awk!

If I was gonna automate this, I could do it with awk and a few GNU tools.

I haven't torn into the guts of C3/DS yet, so most of my CAOS "experience" is reading code snippets on the CC forums (thanks to Jessica, again). From what I've seen, CAOS looks like an ugly mix of assembly and LOGO (ahh, my youth!) with strings. We'll see if that impression holds. xD

User avatar
Amaikokonut
Busy Bee
Posts: 89
Joined: Wed Jun 08, 2016 10:25 am
Country: USA
Currently Playing: C3/DS
Favorite Game: C2
Favorite Species: Norn

Re: Setting up a brand new C3/DS!

Postby Amaikokonut » Fri Dec 23, 2016 9:07 am

Gio wrote:I've touched Python, poked at Ruby, dabbled in Lua (a few add-ons for MMOs), but am mainly familiar with C, Scheme, 6502 assembly (though I'm way out of practice there), and awk!
Oh awesome! You might be better equipped to deal with the conversion process than I am then. My python knowledge is still very basic but I'm currently trying to fudge together something to strip out old room placement coords, subtract them from the old start-point coords and generate the CAOS to add them to the new start-point coords, as that is currently the biggest pain I've run into in writing the example. (The absurd thing is I could probably write the conversion script faster in CAOS just because I'm so frustratingly familiar with it but I've been trying to get myself to learn something besides CAOS for a good decade now. I'm kind of in a rut).

With that prior experience though you probably won't have too much trouble catching on to CAOS too. I have high hopes we can make some real progress here! :D

If you haven't already, you may want to output a copy of the CAOS documentation for perusing/reference. I'm trying to annotate this example file as much as possible but I don't often go into the depth of explaining every command, heh.

Anyway, I've done the bulk of the work on the example script; I just need to rewrite the coords and run it through tests, maybe tighten up a few things. I'll keep you posted!

Edit: Started a new project thread, just to keep things organized and so you can have this thread back to your original topic, heh. :oops:

User avatar
Gio
Everyday Egg
Posts: 15
Joined: Wed Nov 16, 2016 5:13 pm
Currently Playing: DS
Favorite Game: C2
Favorite Species: Ettin

Re: Setting up a brand new C3/DS!

Postby Gio » Fri Dec 23, 2016 11:02 pm

Amaikokonut wrote:Started a new project thread just to keep things organized and so you can have this thread back to your original topic, heh.


Topic? What topic? AMP is totally on topic! Still, you're right about an independent project thread. I'll hop over there right away.

User avatar
Amaikokonut
Busy Bee
Posts: 89
Joined: Wed Jun 08, 2016 10:25 am
Country: USA
Currently Playing: C3/DS
Favorite Game: C2
Favorite Species: Norn

Re: Setting up a brand new C3/DS!

Postby Amaikokonut » Sat Dec 24, 2016 8:22 am

Heh, well I was thinking of going back to talking about your ideal room designs with the sketches and stuff! Even if that's backburnered for now, I don't want to forget about it :P


Return to “General”

Who is online

Users browsing this forum: No registered users and 1 guest