Tuesday, March 17, 2015

For Real This Time

I will be unable to work on Femtocraft until May.

I will only look at Femtocraft code to walk someone else through it, on the condition they want to work on it.  This doesn't seem likely to happen, but hey, always good to stay optimistic.

See you in a few months!

As you may have noticed, this isn't entirely true.

I'm working on critical bug fixes to support the Genesis modpack.  No new content, just allowing people to actually progress and use the mod.

Sunday, March 8, 2015

I Lied!


I gave myself two days this spring break to get some ideas out of my head and into code.

Design Talk

    So, as I said in the past, I am dissatisfied with the current state of the 'industry' machines in Femtocraft.  What I mean by that is, all of the machines that are not power machines are getting the boot.  There is no variety in how they're used, and they're used for everything.  My intent is to distribute some of the items to different machines, and incorporate more multiblocks.

    Additionally, I am a fan of non-standard mechanics.  As such, I had a thought.  What if, at every tier, I introduce a new mechanic for all machines of that tier, and possibly later tiers?  Beyond simply power and sticking items in, you would have something else to fiddle with.  And that's what I'm going to do.  Don't worry, it starts off really simple, and you can complete everything in Femtocraft without worrying too much about the fine tuning of these mechanics.  But, you can definitely supercharge your machines/optimize your setup for the tinkerers amongst you.

So, what are these mechanics?  Well, let me start with the first one I made.


So, This was the first one I thought of, and I feel it fits the technology level of Nano pretty darn well.

What is it?


I know, I know.  Not really an inspired idea, but I have a feeling you'll come around.  So, how do they work?

    Lasers have a strength and a modularity.  By default, the basic laser block consumes nano-tier power and generates a weak unmodulated laser, that goes for a short distance.  You can toggle the direction the laser outputs from the block.  Additionally, you can toggle the direction that the block looks for reflector chambers.  These chambers increase the power usage per tick, but also increase the strength and distance of the projected laser.  And yes, Lasers will set you on fire.

    So, what about modularity you ask?  Well, that's where this block comes in.  

The Modulation Lens Mount block can accept any modulation lens.  All lasers that pass through this block gain the modulation of these lens.  However, different lenses affect the laser differently.  Some may increase the strength of the laser but decrease the distance, or visa versa.

Different machines in the Nano tier might require different laser modulations, and/or accept a different range of laser strengths.  Stronger lasers will work to make them work faster, so long as they're within acceptable bounds.

Along with the lens mount, there are two more blocks to interact with lasers.

This block reflects an incoming laser at either of its configured faces, and puts it at its output.

This block can accept a laser at its main face, and splits the laser into two separate directions, each with half strength.  Alternatively, it can accept two lasers at the secondary faces, and it merges them together at the main face, totalling their strength and averaging their remaining distance.

The default modulation merges with these special modulations to join the special modulation.

However, add two specialized modulations together and their modulations interfere, decomposing them down to the default modulation.


    So, now that you have an idea of what I mean by 'extra mechanics', let me take a step back a tier.
This is the tier that I had the most trouble with, simply because I didn't know what I wanted to try and model.  Anytime I thought about a mechanical process, I was reminded by n0rw0lf that I had intended to have the micro tier be "Tesla"-ish, with lots of electricity and such.  The mechanical processes I had already committed to the Macro tier (that which comes before Micro, should I expand Femtocraft in that direction.)  

    However, a couple things came to a head this week and I finally got a decent idea out, which got refined by some good discussion in the irc channel (hint hint you should join in!).

    Computation!  Micro machines (and thus, potentially later tiers as well) have a computational requirement to performing certain operations.  For example, if you're decomposing, say, cobblestone, the machine will need to do some calculations to plan out how it's going to do that.  This will be modeled by a certain # of specific types of computation problems that the machine must complete.  The machines will have installed a minimal cpu, so that they are never deadlocked.  However, you upgrade their cpus so that they perform their computations much faster.  Continuing with the example, though, you will only need to perform the calculation for cobblestone once, so long as you continue to only decompose cobblestone.  Once you switch to a new type, the machine will need to compute new plan for decomposition.  

    Later tiers might have new computational problems that need to be solved, requiring newer generations of cpus.  I was thinking of also extending this to the research console.  Thus, technologies will have a computational requirement as well.  Upgrading your cpu increases the rate at which technologies will be researched.  However, again certain technologies may require solving new computational problems that older generations simply may not be able to solve, thus prompting newer generations of cpus in order to continue with your research.

Overall, though, it's pretty much self-contained, and a rather simple mechanic.  It also fits the theme rather well, which is why it quickly gained traction in my mind and is now most probably the micro mechanic (hence why I'm telling you about it now :)


So.  This one is fun.