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

Game Projects

Astero Checklist

Posted April 10, 2023 by Xhin

The project should go something like this:

Phase 1 (player is a god)

  • Basic stuff obviously

  • Rooms/Fixtures/Pipes placement

  • Build mechanics that manipulate the above.

  • An inventory that ties into stuff above but also more generally for other systems. Like in shatterloop make it abstract and clone it so other inventories can exist.

  • The basic space game

  • Material transformation systems from the environment/internal/storage.

  • Fixture "checking", "activation" (via pipes) and these mechanics that tie into other systems. Including power, cooling, etc.

  • Fixture properties and mechanics thereof

  • Component properties, tie into fixture properties and component construction

    Phase 2 (player limits)

  • Debug functions to get around the loss of player autonomy

  • Life support and spacesuit mechanics

  • Virtualization limits and virtualizer building

  • Timing systems on all processes

  • Modulation

  • Starting conditions

    I think that covers everything.

  • There are 2 Replies


    Pipes Framework

    Basic stuff

  • Create pipes{}, with .data{}

  • .add(obj) should use the index variable to create a new pipe in data and increment the index variable. "path" should be a list of coords, which can totally just be one in the case of a new pipe. There also needs to be a "type". Have also "mouth" and "tail" properties that can either be a fixture index or false --starting conditions should always be false however. I can handle breaks/etc later.

  • .remove(index) should do what you expect without changing indexes in any capacity.

    Pathing

    Pathing for starting fixtures doesn't need to be optimal, and optimal pathings don't need to be calculated for player involvement, so that will simplify this a bit.

  • pipes.find_path(from,to) should find a path from one coord to another via dirs.move_3d() recursive searching. Make sure this works like selmagic{} and isn't infinite. Return a list of coords starting with from and ending in to.

    Starting Conditions

  • In pipes{}, have .starting{}.

  • List out all starting pipe connections in whatever way makes sense. May need a separate checklist. Since there's only one life node connection, there only needs to be one entry herein.

    Performing starting conditions

  • Create pipes.gen() and bootstrap into gen.gen() at the bottom.

  • fixure_locs is no longer just debugging -- indicate accordingly and put wherever it makes the most sense.

  • Loop through all pipe connections, referencing fixture_locs to find paths, and then push to pipes.add(). Set mouths and tails as well.

    Mouths/Tails

  • pipes.attach(pipe_id,loc,fixture_id) should alter the properties accordingly -- loc can be "mouth" or "tail".

  • pipes.detach(pipe_id,loc) should do the opposite.

  • Attaching needs to also alter the fixture data itself. Detaching should work similarly. Keep data as constrained as possible -- can always pull pipe data manually. So literally just a pipe_id, though I guess the type also needs to be specified.

  • In pipes.gen(), also attach the mouths and tails to the appropriate fixtures.

  • April 19, 2023
    Xhin
    Sky's the limit

    Basic Room Testing Outline

    This isn't the full system yet but it'll pave the way for it and also be a good way of debugging the above framework.

    This isn't a checklist, more an outline for checklists.

    Room Pipes

  • Index room pipes somehow. I may want to rethink the way paths are put into place, so I can go ahead and make builder functions as well.

  • Rooms let you see all pipes in them and their properties.

  • You should also be able to "trace" pipes -- this will keep the pipes menu open and let you switch rooms by following the 1D path instead.

  • Fixtures should let you connect to or "trace" pipes.

    Final Pipes steps

    Assuming all of this works well, my next steps are:

  • Pipe discretion

  • Pipe "breaks".

  • Pipe splitting

  • Pipe joining

  • UI for all of the above.

  • Functions for fixtures to easily check their uninterrupted connections.

    Then it would be onto the Building engine.

  • April 19, 2023
    Xhin
    Sky's the limit

    Reply to: Astero Checklist

    Username
    Password