eternaldensity / Sandcastle-Builder

xkcd: 1190: Time: The Game
Other
81 stars 67 forks source link

Shards/pane track - lots of boosts coded, what comes next? #1346

Open charmsRace opened 9 years ago

charmsRace commented 9 years ago

So, I've coded most of what's in my head for the shards/panes track, and most of it is pushed. I'll be backing off of coding new content now as we evaluate what to do next and which boosts need work or need scrapped.

What's left relevant to those boosts is A) unlock conditions, specifically the numbers involved (e.g. how many CatPix does the player need to drain before boost X unlocks, &c.), and B) prices, specifically related to non-shard pacing (e.g. how does this mesh with the bonemeal/vacuum/logicat/qq track). I need a lot of help calibrating both of these things as they're very important for QA. What is SOP for deciding things like this?

Next question: should this update wait to be released with TaTPix, or not? Personally, I am torn. On one hand, only three boosts (Aperture Science, Dimension Keyhole, and Green Sun, none of which is fully coded since neither is TaTPix) directly relate to TaTPix so far, since I have been focused on handling CatPix. There is plenty of CatPix content to be released, imo. But I also don't want that content to run out of steam before TaTPix is coded, or the whole point of shards is ruined. I would lean to releasing at least some of it earlier, but I'm not sure it would feel like it had a point. What do you guys think?

In short, I'm just not sure what needs to happen next. I would really appreciate thoughts on the current content of the track, as I've been working mostly in isolation and I don't want to code a bunch of stuff that's considered bad. If I have made any questionable design decisions, please let me know; that's my big question here. I'm still extremely new to both JS and game development so I'm constantly worried about doing something dumb.

pickten commented 9 years ago

For variegation, sure. Though I like variegate, because I really want to use the pun that comes out of it either way.

Anyways, I've got a gist going (linked on the drafting gist) with all important code (i.e. everything that would goo into boosts.js) and notes about all other changes I need to make (not many), so it's moving at a decent pace. I'd also like to get at least the early part coded myself, if that's ok.

Part of the issue is that Photoelectricity is a little weird: two thirds of it makes Blueness production grow quadratically, while the other half slows it down dramatically, but gives you good stuff if you use it (a splosion), so I know players get a big boost from it (since splosions can never put base production below 1, and Blue's Hints power never decreases), but don't know where they end up at all. The weirdest thing is that, while splosion sounds atrocious, you get a lot of stuff from it (though the amount probably needs to be raised), and chaining resets the timer (though the timer will be very short), so you can get a lot of resources before you take the hit if you get lucky. All in all, all I know is that photoelectricity will speed things up (at least, once I tweak it a bit), and will almost certainly be worth the resources invested.

So, once I code what I've got, test/balance it (to see where players end up after the dust settles), and add a few more things to even out the beginning (like a timer-increaser for splosion), go ahead and add/code stuff. I'll edit the drafting gist at that point.

charmsRace commented 9 years ago

Okay, sure! I agree, all the early stuff should be done by one person. Let me know how it goes. I can't seem to subscribe to the gist the same way I'm subscribed to this repo, so I'll periodically check.

pickten commented 9 years ago

I believe starring does the trick, but I'm not sure. Besides, I edit rather than post comments, and I don't think github has an edits-tracker. This is partly why I've never used gist before.

Anyways, I've been keeping a small log of what's going on at the top, which is reasonably up to date. I'm making a rigorous crafting system, though, which should be easy to reuse if crafting ever makes a return. The only parts that require new changes when it comes to new recipes/tables are Molpy.Crafts, and a function that displays the buttons in the relevant description. I believe the rest is (or will be when complete) automated, including such things as catalysts and multicrafting.

It's not ideal, though. I've obviously not found everything wrong with it, but:

charmsRace commented 9 years ago

That sounds really awesome so far, and it's coming together very quickly! Generalized crafting is something to look forward to.

By the way, I think I've finished bugfixing Mario, so you don't need to worry about it. I'm reasonably certain he always opens exactly the right number of boxes (with exactly the right number of locks left), regardless of power. The approximation just happens within the opening of those boxes. Hooray for the power of math! Thanks Euclid. I'll push it after the TaT merge.

pickten commented 9 years ago

Nice! Amusingly enough, I'm in the middle of Photoelectricity ATM, so I have to recreate a version of that system. RewardRepeatable will get a few more options, and the repeatable list as well.

charmsRace commented 9 years ago

Ah, I see. Well, in case it helps, here's how I changed the Mario section of Molpy.RunFastFactory():

for (var i = 0; i < runs; i++) {
    Molpy.RewardLogicat(Molpy.Level('QQ'), Math.floor(l/runs);
}
Molpy.RewardLogicat(Molpy.Level('QQ'), l % runs);

It comes from the identity a = floor(a/b)*b + a%b (division algorithm). This technically does runs + 1 calls of Molpy.RewardLogicat(), but who cares.

pickten commented 9 years ago

Why not do runs-- at the beginning? It solves that problem quite easily.

Anyways, makes sense, though I'm going to use the approach I used originally (1/25, 1/24 left, 1/23 left, ...) because it's nice and easy. always spits out the right answer, and keeps all runs roughly the same size (plus or minus 1), which looks nice to the player.

eternaldensity commented 9 years ago

:+1:

eternaldensity commented 9 years ago

Here's another suggestion for NP0, from mscha:

http://xkcd.mscha.org/tmp/np0.png

It's a bit simpler and more obvious than the other idea.

pickten commented 9 years ago

That's pretty neat. It would make a lot of sense as NP0 of OTC, and it works fine for coding purposes. I added it.

Also, if you didn't see the note on the drafting gist, I've got the Blueness parts planned earlier as fully coded as I can get before editing SB's files (i.e. all code needed is on a separate file) and before balancing. This goes all the way up through Photoelectricity (it says up through Diluted/Concentrated Boom, but Photoelectricity is a bit mario-like and these are the most recent boosts I've come up with for it to unlock), which is really weird and unpredictable because of the three repeatable boosts: splosion, blue fragment, and Atomic Pump. I've also got a jsfiddle (linked on the drafting gist) that I'm editing to try to simulate Photoelectricity (it's outdated though because infinites were happening, and, besides, is still broken). It's really just that weird. I think it does it's job, though, which is to have splosion produce quite a bit of stuff, to have ocean blue vary around 1-3, and have hints slowly creep up at a reasonable rate. I think this moves players to 1k levels. Really not sure, because I actually had a few (very slow) inf-causing cycles before, so I changed a few things that really affected the balance. Anyways, this may sort of be dependent on having a bit of outside content to smoothen the bumps as photo does its thing. We'll see.

charmsRace commented 9 years ago

Woo! Everything works pretty well so far. I've pushed some minor touchups, and I can successfully ONG into and out of t1i, and successfully advance t1i by buying keyholes. Good job!

So far, the problems I've encountered are A) Molpy.highestNPvisited is set to 40 (?) when I'm in OTC B) ONGing normally at NP3430 (without signpost or hysteresis) sends me to NP2 C) Some extreme shenanigans ensue when you switch hysteresis and you're not on NP0, but that wasn't intended anyway, so I removed that option.

charmsRace commented 9 years ago

Oh, and D) Using Negator on NP n sends you to NP -(n+1) in t1i. Should be a simple floor/ceil swap but I'm not sure where to put it.

eternaldensity commented 9 years ago

The negator button does:

onclick="if(Molpy.Spend({FluxCrystals:1})){Molpy.newpixNumber*=-1;Molpy.UpdateBeach()}"

It really ought to be moved into a real function rather than text, and any necessary cleanup can then be added to it.

charmsRace commented 9 years ago

You're right, I'll write that in a couple hours.

pickten commented 9 years ago

The first two bugs are strange, since highestNP is always whatever story is being looked at's largestNP value, and ONG has nothing with the number 2 anywhere in it. I'll look at that. One question though: for the first, when is highestNP set to 40? Is it when you arrive, or when ong/mNP happens? And for the second, is it just NP3430?

My guess is those are tied to storyline switches and possibly negative np numbers. It's also probably related to the weird bug that happens (afaik only) if you manually change np and then manually ONG within 1mNP.

Also, I can take a look when I finish transferring blueness (should take 10-20 minutes more). EDIT: finished. It's not tested or anything, but it's finished. I'll try to resolve these bugs, then test Blueness.

LuminousLeopards commented 9 years ago

I should be ready with my stuff in two to three days. I just need to code Marketing and one other Breath-related boost, do some cleanup and a couple other minor things. Most of my stuff still needs to be playtested, though.

I had a boost named Catalyzer, but it sounds like that might be confusing w/r/t what you guys have coded. I'll think of a different name.

pickten commented 9 years ago

Catalyzer should be fine. My stuff has the following boost names (in no order): (stuffs) Blueness, _Other_ness (alias Otherness), Whiteness, Blackness, Grayness, (boosts) Argy, Ocean Blue, Blue's Hints (alias bluhint), Meteor, Hallowed Ground, Polarizer, A Splosion (alias splosion), Blue Fragment, Atomic Pump, Diluted Bomb, Concentrated Bomb, Not a Priest (alias NaP), Equilibrium Constant, and Photoelectricity.

None of those are very similar, except possibly Equilibrium Constant or Polarizer, but those are still pretty clearly different. You can also see Calamitizer's boosts, and they don't have similar names to Catalyzer either.

The word catalyst was only running around because I added a crafting system, and was explaining its API above, and it allows for catalysts in recipes. Still, players probably aren't going to see that, since crafting itself happens on boosts. They also probably won't know about catalysts in crafting for the simple reason that no recipes currently use any. So, if you think Molpy.Boosts['Catalyzer'] is different enough from Molpy.Crafts[table_name][recipe_number].recipe.catalysts, you're fine.

Anyways, I'll almost certainly be ready with the first stage of Variegated content by the time you are with your content since it's already fully coded and just needs bugfixes/testing, so there'll be that as well. This is shaping up to be a heck of an update.

charmsRace commented 9 years ago

Dare I say 4.0? =3

charmsRace commented 9 years ago

Back home now. I'll investigate that highestNPvisited glitch in a bit, I'm having trouble figuring out exactly how to "retry" since I've had problems with localstorage.

pickten commented 9 years ago

You're having trouble with localstorage too (there was a reddit post about someone else having trouble with this)? As far as I can tell from the reddit post, it seems Firefox did something weird to it in an update.

Anyways, if we're doing this much for 3.7, I know what one part of 4.0 will have to be. I'm just hoping I have time to finish drafting that part (I've been working on that since late may/early june, because it's the first part of two, it needs to include on the order of 75 boosts, and it wouldn't make much sense to only have part of it). The drafting is about 1/2-5/8 done for the first part (11 pages in google docs, though a lot of it is notes clarifying stuff!), but quite a few of the first 1/4 need to be changed around a bit, I may have to change some parts around to account for 3.7 content, and the back half of drafting this part is harder since it involves content I'm not very familiar with.

And no, I'm not going into any more detail about it now, and probably won't until I'm at least 7/8 done drafting the first part, besides the fact that it probably won't affect the progression in any way that could screw things up. cue evil laugh

LuminousLeopards commented 9 years ago

I would be good with versioning it as 4.0. There are a couple relatively important additions to dragon stuff as it is, without even considering all the content you guys have contributed. I was tentatively going to go with the version name EXCELsior! since it feels like I've spent more time playing with spreadsheets than actually coding lately.

charmsRace commented 9 years ago

I use Chrome actually; I'm 95% sure that I have brought all my localstorage problems on myself by adding and removing discoveries to test Molpy.Marco(). =[

I feel like at this point we need at least three different version names, lol. I'm very partial to "One More Time" for obvious reasons. =p

charmsRace commented 9 years ago

Weird things are happening with Now Where Was I? that I'm not sure how to fix. My Molpy.highestNPvisited is 1.1 even when I'm in OTC, resulting in NWWI taking me into t1i.

Also, sometimes it's possible to get the NP info box to say "Newpix 0 of t1i".

EDIT: My Molpy.largestNPvisited is {0: 1.1, 0.1: 0}, when I'm currently sitting in t1i 1, too. Then it goes to 2.1 once I ONG.

pickten commented 9 years ago

For versioning, why not 4.0 and "One More EXCELlent Kitty Genocide Simulator" It's a mix of all three names, and one of the only combinations I could figure out that made any sense. Alternatively, "EXCELsior: Simulate Kitty Genocide One More Time" which is longer, but almost has the full names (though KGS had to be swapped around and lose the 2015).

That bug's never happened to me before. Oh yeah, whatever redraws the box needs to do it after ONGs() because Hysteresis (originally) just set NP to the frac part, so that ONGs() can take care of incrementing it. Once I start variegated testing, I'll look into that. Also yeah, where was I was the last change I made and it was a pain because of Molpy.TTT... which might be the source of the bug.

So, anyways, 0.1:0 should happen only at first load/transfer, and fractional np nums should never ever happen on OTC. What did you do to get this to happen?

LuminousLeopards commented 9 years ago

4.0 it is. I have no strong feelings about the name; we could take the EXCEL part out and use it later if nothing else. Up to you guys.

charmsRace commented 9 years ago

I would be fine with "One More Time: Kitty Genocide Simulator 2015". EXCELsior is a good name, but I have a feeling as long as dragon content is being developed, there will be no shortage of spreadsheets lol.

I notice now that there are lots of things in persist.js under if (version < 3.7) that I never ran because I was testing on something called 3.7. Later I will try restarting my save and running those and see whether it fixes those bugs. My contributions will probably taper off somewhat over the next few days, though, since school is starting on Wednesday.

pickten commented 9 years ago

Ouch. I think I have an orientation thing in a few days, but nothing else for almost a week after.

Anyways, there were a few versioning things in persist.js that came from the TaT changes. Still, I don't think there were that many changes that the bugs you were mentioning could happen. There were int->float changes, and there was a defaulter for highest/largest, but that was pretty much it, I think.

Oh, actually, there were dragon changes as well, so dragon stuff probably got somewhat broke for you.

eternaldensity commented 9 years ago

From the amount of stuff we've done, I'm okay with going directly to 4.0.

I think I'll even announce the update on /r/incremental_games when we make the update, cos it's significant enough for that.

Anyways, if we're doing this much for 3.7, I know what one part of 4.0 will have to be. I'm just hoping I have time to finish drafting that part (I've been working on that since late may/early june, because it's the first part of two, it needs to include on the order of 75 boosts, and it wouldn't make much sense to only have part of it). The drafting is about 1/2-5/8 done for the first part (11 pages in google docs, though a lot of it is notes clarifying stuff!), but quite a few of the first 1/4 need to be changed around a bit, I may have to change some parts around to account for 3.7 content, and the back half of drafting this part is harder since it involves content I'm not very familiar with.

And no, I'm not going into any more detail about it now, and probably won't until I'm at least 7/8 done drafting the first part, besides the fact that it probably won't affect the progression in any way that could screw things up. cue evil laugh

:D :D

pickten commented 9 years ago

Well, not 4.0 then. But I'll finish by 5.0.

eternaldensity commented 9 years ago

There's a limitless number of numbers between 4.0 and 5.0. The numbers only go up as quickly as we do stuff.

pickten commented 9 years ago

True, but it's not like the rate that the version goes up changes all that much (besides the 3.67->4.0 we're doing). Besides, I only said "by 5.0", not "for 5.0". It can certainly be part of 4.5 if I get it done fast enough, or even earlier.

Also, I said I wouldn't spoil it, but you can probably figure the basic idea out already with a bit of thought from what I've already said, the stuff that has been in the game since before this update, the fact that this update doesn't accomplish any part of it, and this sentence.

charmsRace commented 9 years ago

... Nope, I got nothing. =p

eternaldensity commented 9 years ago

Yet again, I managed to hold contradictory thoughts (or forget that 4 equals 4). Oops. Yeah, if we're going to 4.0, then the next big thing can be 5.0.

eternaldensity commented 9 years ago

Or maybe 3.7 is a big enough change, as the last 26 versions have been 3.6x Or just jump to 3.8?

Nah, I think this is monumental (heh) enough for 4.0.

In any case, I expect the changelog will require some filling out. There's a fair amount in the readme but I doubt that's absolutely everything (I'll be happy to be proven wrong)

pickten commented 9 years ago

Yeah, the readme doesn't have Variegation (but does have TaT) or Luminous' stuff.

And 4 is totally NaN, so 4!==4 is reasonable.

LuminousLeopards commented 9 years ago

Last time I just dug through the Git history and copy+pasted commit descriptions; seemed to work fairly well. I have a log of all my changes as well.

eternaldensity - how exactly did you configure things to get castle.chirpingmustard.com pointed at your GitHub Pages branch? I have a CNAME DNS record pointing sandcastle.hobbitcakes.com to luminousleopards.github.io, and a CNAME file in my repository pointing the other way, but it just gives a GitHub 404.

Alternatively, if you wouldn't mind forking the master again and setting it up under a different subdomain, we could host a test copy of the game on your site. Either way works for me, I just think that for such a substantial release there should be some playtesting so we don't break people's saves or cause mass confusion.

pickten commented 9 years ago

You're missing a gh-pages branch in your repo. That's the one that gets used, I'm pretty sure. Anyways, if this doesn't work, we can always use github pages to test, but we should try to have a dedicated url that has the ED master (might take some work) so that we (or curious players) can test what's coming easily.

When we're ready, we can just post our own logs here and put them together.

charmsRace commented 9 years ago

Because of the shenanigans going on with save data / version updating / constant updates I am wary of encouraging non-devs to try trunk. But a game called Dungeon Crawl Stone Soup does a system much like this.

pickten commented 9 years ago

True. Maybe we could push to it after every stable update to master, and do smaller version increments (i.e. instead of 3.67->3.7, do 3.67->3.671->3.672->...) in unfinished updates to account for that, (and probably start using <= instead of < in persist.js versioning checks). It would be nice to have a dedicated testing system, though. It's also not that uncommon these days for games to have unstable/nightly branches like that (e.g. Stone Soup, Starbound), and players who do that sort of thing usually do at least understand that they need to update a lot more often.

Anyways, just having a fixed testing URL, even if its only active when we're ready to playtest, would be nice.

charmsRace commented 9 years ago

I definitely agree with at least a plastering branch. I do think a stable trunk would be fine, as long as it includes a warning something like "If you aren't comfortable with JS/console commands/source-diving, don't get to attached to these saves".

charmsRace commented 9 years ago

... *playtesting. Thanks phone.

EPSIL0N commented 9 years ago

Yeah, we need to be sure the save situation is somewhat idiot proofed. I liked what we have but if there are so many of us working in parallel I guess it would be good to have a more common branch to push tests to.

eternaldensity commented 9 years ago

Yes, gh-pages branch is needed for your github to be online.

https://help.github.com/categories/github-pages-basics/

And the proper url to be pointing to must include the project name (capitalised correctly) like http://eternaldensity.github.io/Sandcastle-Builder/

EPSIL0N commented 9 years ago

I was curious, do we have anywhere where people are making note of what they are working on or is it mainly just this thread so far? I am starting to play with ideas tho nothing as big as what some of you are working on so far.

charmsRace commented 9 years ago

Not really. I posted a bunch of my thoughts on shards in this topic and a previous topic, and pickten has his gists he was working in, but other than that there's not really anything like that I know of. Feel free to share your ideas if you want, I'd love to hear them!

pickten commented 9 years ago

Would it be worth looking into starting some sort of gist/doc/whatever to keep track of what's being worked on (and by whom)?

EPSIL0N commented 9 years ago

It might be good but I am not really sure what we need, I was just trying to figure out if anyone is working on any dragon related stuff without having to make another topic that is just asking that as Dragons, Prizes and TaT were among the big topics a while back and I have begun to fuss over the Dragons in my own mind.

LuminousLeopards commented 9 years ago

I'd favor Gist for a "live" view of what's being worked on. There's also piratenpad or Google Docs.

For playtesting: https://docs.google.com/spreadsheets/d/1ry0g-n26zvJiuPVQr4AnTlcY8B2F3_6FTAUa5sYloaA/edit#gid=493290078 . The idea is you put every discrete "thing" that you've been working on and possible problems/concerns/etc. and other people can check your work.

I don't have a pretty URL but http://luminousleopards.github.io/Sandcastle-Builder/ hosts a copy of the game that will be suitable for playtesting once I merge in my changes (tonight). You are all collaborators so you can merge pull requests or edit the code itself on GitHub. The repo URL is https://github.com/LuminousLeopards/Sandcastle-Builder-tree-gh-pages

I have a modified-for-Wyverns version of the dragon simulator that I will add into that spreadsheet as well.

LuminousLeopards commented 9 years ago

http://luminousleopards.github.io/Sandcastle-Builder/ is live with my changes! I am still working on several things but you should be able to upgrade to Wyverns and start playtesting (pretty pretty please). There are probably several things broken as I had to manually resolve a bunch of conflicts. From now on I will commit a lot more often to avoid this...

My somewhat ugly revision of the dragon simulator spreadsheet is up on Google Docs as well, so please feel free to use it if you're playtesting.

eternaldensity commented 9 years ago

Some relevant game exports would ptobably be a good idea too.