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

Deprecated

Merchant Checklist

Posted March 9, 2023 by Xhin

I think this game's Notes are actually done. The scope is very small and all the content and technology already exists, so it's just a matter of putting it together.

There are 1 Replies


Province Generation Checklist

  • Objectify all inputs

  • Each province gets 2 arteries

    Language init

  • Generate three languages, in the data here also store the language key [province_x:province_y:language_index]. Stick them internally.

    Novodes

  • Store all nine novodes internally, with the center one getting the "nexus" indicator, and [3,8] of the other ones getting a "city" indicator.

  • Novode size should range from 9 to 20, however it should always be odd so I guess it should range from 4-9 with the actual amt being (R*2)+1. I want the actual obj size to be 9-20, so reduce these numbers to generate an actual range and then flip back.

    Nonads

  • For each novode, subdivide it into N nonads, where N is (novode size)*2. Store all coords internally.

  • Have a function to set a settlement at a specified location within the current nonad -- this uses the local nonad coord, adding to it the novode address and then storing the data as a keed coord. The data should be whatever the input data is. This will then pull that coord out of the internal list. Use .settlements{} to store all this and future data.

  • When creating a settlement, clone over the language data and name it according to the language.

  • If the novode is a city, set the central coord to one, or if it's a nexus, do that instead.

  • Via a calculated "percentage" stat, pick some amount of remaining coords in the novode and turn them into towns.

    Roads

  • I think I have an existing distance formula in dirs{}. If not, import polar{}.

  • Have a separate function to store transport data so both the normal route can be stored as well as the reverse. Increment also a "total" int so the number of total transports can be checked easily.

  • Roads -- Loop through every single settlement and connect it to stuff within a specified distance -- maybe 5 for now and can vary it later.

    Shipping Lanes

  • For each settlement on the west novodes, index the furthest western settlement on each row. Sort them from top to bottom.

  • Connect everything in sequence as a .transport.shipping_lane.

  • Do the same for the other 3 edges.

  • The northernmost west edge settlement should connect to the westernmost north edge settlement.

  • Same deal with the other "corners".

    I've technically done this before, so if I get lost, could look into how Shatterloop is doing it. I should be able to manage it however.

    Freeways

  • Index cities/nexuses separately as "polises".

  • Index cities and the nexus individually as well.

  • Loop through all settlements, ignoring cities and nexuses. If there are no connections (via .transport.total) , loop through all polises and double-connect to the nearest one with a "freeway".

    Superhighways

  • Loop through all cities and connect them to the Nexus via a "superhighway".

  • Loop through all cities and connect them to adjacent cities if obj['city_superhighway'] is set -- 10-90 chance.

    Arteries

  • Somewhere in all of that, index the northmost, westmost, southmost and eastmost settlements.

  • Loop through each corner novode settlement and find the one closest to the corner coord ([0,0] in the case of nw). Set these as nwmost, nemost, swmost, semost.

  • If there's an artery in the specified direction, set that settlement to have an arterty transport the specified direction. The other calculations can be made elsewhere.

    Grand Debugging

    I'd like to be able to debug all of this easily outside of basic function checks which I'll be doing through the course of this checklist.

    Basic Stuff

  • Create provinces_debug{} with .render().

  • This grabs the player's province position and tells you the calculated province data (which may require functionalization).

  • Stick this in the ui, along with dirs.moves.all paths to other provinces.

  • Have a function to actually move provinces hooked in.

    Province Enter/Exit

  • The player should have a .settlement[] coord which is the appropriate province settlement.

  • There should be a player{} function to set it.

  • The top-level provinces_debug{} ui should have "Enter" as its top-level path.

  • This teleports you to the nexus and then renders your location.

  • The back should unset your coord and render that instead. Call it "Exit".

    In-province navigation

  • Each settlement should display its name and all its data (such as its settlement TYPE), outside of transport stuff.

  • Have paths that loop through all the transports, prefixing the names with the type and the suffix with the town name. Ignore arteries, but indicate them in the above.

  • The paths should set your .settlement accordingly and then re-render.

  • March 10, 2023
    Xhin
    Sky's the limit

    Reply to: Merchant Checklist

    Username
    Password