Engines NIFE Roadmap Shatterloop Game Projects
Deprecated Saepes Mundi Other Projects Blog

Deprecated

Forever Garden Game

Posted August 22, 2022 by Xhin

Seems like the most logical direction to bring the project in.

There are 3 Replies


Basic Stuff

  • Board founding dates need to be more recent, with some rarer ones going back further.

  • There definitely needs to be pagination, going back to the board's founding date.

  • All game data is stored to session tokens which are stored in localstorage -- should be the sanest way to allow replays without requiring registration.

  • Boards need to be linked into various networks. See disorganized notes below.

    Gameificiation

  • Every 3+ letter word is a link.

  • Clicked words are evaluated against the wordnet database -- if it's a valid word, you get items corresponding to those letters, with the amount being N-2, where N is the number of characters. So the 3-letter word "hay" gets you 1 H, 1 A, and 1 Y. Meanwhile the five-letter word bread gets you 3 each of B,R,E,A,D.

  • Words that are clicked can't be clicked again on that board.

    Crafting

    Letters can be crafted into items that alter various parts of the game. The recipes are procgen. The actual items are similar to a magic system and alter all relevant parts of the site, like language information, as well as all relevant parts of the game like scoring algorithms.

    Start and Goal

    The game starts at a particular board. Unlocking other boards in the network may require letters. There's a 1:1 relationship between boards and game seeds, so the name of the board is the name of the game.

    The goal of the game is spelling out a particular quote with collected letters -- there should be a database of these somewhere.

    A timer could check your progress the way the phonemaze works. You'd therefore get a high score based on shortest time, plus maybe a bonus based on whatever your inventory is, the biggest word you found, etc. Maybe the way the scoring works is also procgen based on the game -- that would be particularly cool. Especially if the magic system influences it -- that would add some extra depth.

    Because boards update themselves in real-time you could play the same seed and potentially get a very different result, though the board has an "archive" of old posts so you can still play your older strategies.

  • August 22, 2022
    Xhin
    Sky's the limit

    Network System

  • Assign each board a "region" based on its numeric value -- like "beef" would be 1650812262 (ascii-->binary-->decimal) and this region might be 1650810000 to 1650820000.

  • Seed a number representing the region (probably the lower bound, so 1650810000 in this case). From there, randomly generate an N.

  • Subdivide the region into N parts spaced by (region size)/N. So like between 1650810000 and 1650820000 you might have 5 parts. Since there's 10,000 total, each spacing is 2000 wide.

  • Take whatever the numeric value of the board is and add 2000 to it repeatedly with modulo until you hit yourself again. So like since the value is 1650812262, your network is 1650812262, 1650814262, 1650816262, 1650818262, 1650810262.

  • Convert this back to ascii to get board names, so in this case you have beef, ÄÊÚ6, ÄÊê, ÄÊùV, ÄÊ».

    Playing around with the numbers here and the way binary turns back into words will help a lot to make a network feel unique.

    This algorithm should be reversible from any other node in the network, which is the point. So like ÄÊùV goes into the same region (because it's based on the number), and the region determines the rest of the variables, then if you add 2000 enough times you get to the beef board again.

    Multiple Networks

    In order to get multiple networks (which are reversible):

  • Make regions be based on unique digits, not exact numbers. So for 1650810000 to 1650820000, it's instead represented as 165081XXXX, where the XXXX there is the number that's generated. The XXXX has to be continuous but can appear anywhere in the number, and adjust the modulo algorithm accordingly.

  • So a different network for 1650812262 might be 165XXXX262, where its value is 0812. Assuming N is still 5, the gap would be 2000. So your new values are 0812, 2812, 4812, 6812, 8812, and the corresponding values are 1650812262, 1652812262, 1654812262, 1656812262, 1658812262. This radically shifts the binary, so the network is now beef, ÅÓf, ÅDÜf, Łåf, žîf.

  • Networks can "not exist". So like maybe in th ---XXXX--- Supernetwork, 165XXXX262 exists but 165XXXX263 doesn't. This means the beeg site doesn't have a network on that space.

  • The first region always exists, so there will always be at least one network available.

    Continuity Fix

  • X's don't have to be continous. The modulo arithmetic just works regardless of where they are in the number. So a network like X7X3 for the value 1783 might subdivide into 5 parts which are then 1783, 1983, 1183, 1383, 1583. This still works.

  • Idk how the math would work to make subdivisions affect other parts of the network, like what if in the above example it was 23? Like I want to be able to do that (because it really scrambles the values of the region) but idk the solution yet.

    Network Aggregation

    The board itself determines how much of its various networks it shows. There will always be at least 3 or so links out. It's possible to still have closed loops but it's less likely. Or there might be a different solution to this problem.

    Networks definitely need to alter harmonic parts of the numeric value, like XXXX---- should complement ----XXXX. There should be at least one harmonic somewhere but there can be disharmonies as well, like XX-- would complement --XX but also having X--X without -XX- is acceptable.

    Which regions appear should be based on the character length, in a semi-handcrafted (like the above) but still procgen way. So for 8 character length you might have XXXX---- and ----XXXX, but 7-character length might have -XXX---, ---XXXX and X--X-X. This will help to scramble things even more.

    Shifting

  • Each region could also represent itself in some subdividible space (based on N) and do an rshift or lshift to further confuse the values. So like with 165XXXX262, it's 10 so there's an lshift of 2 each time, making the network for beef now 1650812262, 6216528122, 2262165481, 8122621656, 5881226216. Or something like that -- the algorithm might be off a bit.

  • Since the number of characters needs to be preserved, the algorithm would vary for things that weren't subdivisible, like for 9 characters and an N of 5 there would be a well-defined mathematical point where only one character shifts. For an N of 6 and 9 characters it might run 1, 2, 1, 2, 1, 2. The "start" of the pattern has to be defined somehow based on the region -- this is potentially a separate problem to keep stuff in the same network.

  • August 25, 2022
    Xhin
    Sky's the limit

  • don't let words duplicate:

    abs : mujuy-1661388593

  • Thicker seeds

  • Time region based posts per day and user lists -- this tree structure is the sanest way to procgen large amounts of varied data.

  • Two letter words can give wildcard points and letters can also be atomized to them. Wildcard points are necessary for unlocking network links and might tie into other recipes.

  • August 25, 2022
    Xhin
    Sky's the limit

    Reply to: Forever Garden Game

    Username
    Password