Tuesday, December 30, 2014

Actual Content

Hey Guys,

Been taking these couple of days to just unwind and think about actual usable things to add to Femtocraft.

Had a good bit of fun coding up a block + tileEntity movement system.

Crappy Gifs:

Moving blocks


Moving pistons


Moving TileEntities



The way I think I'm going to implement it is as a configurable-face block.  With an interface device, you'll mark 2 sides.  The block will only work if 2 and only 2 sides are marked.  A redstone rising pulse will cause the blocks on those sides to swap.

EDIT:

Some more crappy gifs, but...

The one in the center back has its sides configured to swap the two closest to the cam.


Placing a redstone block triggers the pulse as well, pulling the redstone to the top of the block.

 Placing the block on top of the one on the left, moves it inbetween the two blocks.  This then triggers the block on the right, moving it to the top of that block.



Here we can see the coloring to let you know the block is setup wrong.  Here we have too many active sides.  The two reflecting the two connected blocks, plus the one on top.  Thus, the block stops working and every side turns red to reflect invalid state.




So I started to have some fun...



What horror hath I wrought?

Monday, December 29, 2014

The Moment is Finally Here

DISCLAIMER:  This is an alpha version.  Things may break.  Do not say I didn't warn you.  Various mechanics are still in the works.  Feel free to post bug reports on the github issue tracker.  If it crashes, include logs.



I'm finally at a point where almost everything works.  I know people have been interested, and honestly I just want to get something out for people to look at, even though certain things are still in development.


Known "Issues":
  •     Femto Stellarator is craftable, but not implemented.  It says this in the research.  Build at your own consequence.  Not risk.  Consequence.
  •     Industry and crafting system over-reliance on Assembler.  The next thing I am working on is redesigning the crafting and industry tree.  I want to add about 4-5 more machines spread out over the entire tech tree for use in crafting the majority of items so schematics aren't required for every little fiddly bit.  Also included in this is additional crafting items to replace the 'builds out of precurser tiers'.  The feel I want to go towards is the Femto logic gates.  I would like to have a 'start fresh' feel to each new tier, rather than the current setup with the plating or nanochips.  As such, expect the industry system to change dramatically as I'm working on making it easier and a lot more interesting.
  • Vacuum Tubes are fiddly.  Yes they are.  I am rewriting them to be a lot easier and more manageable.  A simple rule of thumb is, place tubes at the DESTINATION, leading back to the source.
  • Suction Pipes are spammy.  I need to rethink how I'm going to do packets for suction pipes.  For small systems without constant transfer, they're fine.  They quickly go overboard for other uses though.  As such, all Suction Pipes start out in Blackout mode, which means they don't send packet updates.  Shift-right-click with an interface device toggles this mode.
  • Machine sidedness.  Machine inputs are accessible from the top.  The sides are generally for output.  For the Furnace and Deconstructor, the bottom is the input and only enabled if the machine doesn't know what to do with the input.  The Reconstructor accepts input anywhere but 'East' face, which is for output.  Configurability is also in the works.

The API is mostly stable.  If anything, only more things will add to it.  There is already a developer working to make a RF->OP conversion mod.





Please feel free to join #Femtocraft on irc.esper.net if you have any questions about the mechanics.


Download the latest build here, or on the sidebar.


I want to give a big thanks to Cozza38 and the wonderful people at OTEGamers for hosting the Jenkins server, and just being a great place to play.


If you're expecting a fully functional mod with tons of content to just drop into any pack and have a hayday with, you've come to the wrong place.
This is for people who want to support the development of this mod, or to see what all the fuss is about.
Additionally, due to unforeseeable cross-mod interactions, the larger the pack you drop this into the more configuration you will need to do. 


DISCLAIMER:  This is an alpha version.  Things may break.  Do not say I didn't warn you.  Various mechanics are still in the works.  Feel free to post bug reports on the github issue tracker.  If it crashes, include logs.

Thursday, December 18, 2014

Done Streaming

I really should have updated or posted with the stream link.  Hopefully those who came here were redirected from somewhere with the actual link.

Edit:  I did. I'm just so tired I forgot doing it.

Thank you all who came for watching!  Was a really productive stream and was great talking to you all!

A lot of people were interested if I was going to stream again.  I wasn't planning on it originally, but knowing that people are interested I might plan a few more.

Follow my stream at twitch.tv/Itszuvalex to know when I go live.

Tuesday, December 16, 2014

End of Exam Celebratory Stream

Hey everyone.

I finish my exams for the year tomorrow!

To celebrate, I'll be livestreaming me attempting to polish off the remaining systems code for Femtocraft.

The stream will start at around 7:00 PM EST Wednesday 17th, and continue until whenever I feel like stopping.  I anticipate at least a 5 hour stream.  Feel free to hop in whenever you want and say hi!  I will be talking about what I'm doing and answering questions.  If I get enough done I may show what's there for those who haven't seen yet.

Looking forward to seeing some of you!

Friday, December 5, 2014

Content!

I realize that what I've been posting up here has been a lot of talk and not a lot of show.  I don't like showing off things until they're pretty much complete, and everything else is still in its final stages.  However, I do want to show off the core driving mechanic behind everything Femtocraft.


The Goal


As I said in the past, I was inspired to make Femtocraft to fulfill the void left by Equivalent Exchange 2.  However, I definitely did not want to follow in the footsteps of this mod, as it was a polarising force in the modding community.  Some people loved it because it essentially gave you creative mode in survival within a few days.  Other people hated it because it essentially gave you creative mode in survival within a few days.  As such, this is not an easy problem to tackle.

When I set about designing Femtocraft, I had to analyze EE2 to attempt to understand what made it so ridiculously powerful.  I essentially boiled it down to 2 main mechanics.  First, EE2 had means of generating free mass.  Not only this, but it contained multiple tiers, so called "Power Flowers", that were capable of generating diamonds, dark matter, and even red matter in matters of seconds.  This output was greater than any quarry would ever be capable of, and completely eliminated the need for mining anything that could be converted.  Secondly, it was extremely simple to use.  Most mining setups devolved into saving a single stack of every item, and otherwise just pumping the quarry output directly into a chest that converts it into a more compact form, such as diamonds. 

Thus, I set about attempting to keep the core mechanics of EE2 -> Equivalent Exchange, while minimizing the influence of these other 2 mechanics.  First off, I did away completely with free item generation.  This is arguably the most influential thing of EE2 when combined with its exchange, as it was balanced for exponential item requirements, where all other mods were much more linear.  As for ease of use, I personally love automation.  However, I love automation through clever machine set ups, and resource costs.  I set about designing all core machines such that, with clever set ups and resource investiture, you can completely automate all aspects of Femtocraft.  This works particularly well with an automated crafting system such as AE2 or Logistics Pipes.  However, it is not unreasonable for the player to also utilize the full capabilities of Femtocraft, if used for a small number of cases.  Using Femtocraft to its full potential will be hard but rewarding.

As such, let's dig down into what you've all been waiting for.  Let's see actual in-game mechanics.

The Assembler Manager

When you start up Femtocraft for the first time, it will scrape through all recipes in the Minecraft recipe tree and attempt to map them to something called an Assembler Recipe.  These are basically 1:1 mappings of 9 Inputs to 1 Output.  The mapping is determined by ItemStack id and damage, and location in the recipe crafting grid.  What this allows me to do is to look up input items based on an output item, and visa versa.  Essentially, it maps the entire crafting system such that I can go up or down the item tree.

These recipes are then cached in a database and will never have to be computed again, saving several minutes of load time in larger packs.

The Machines

All tiers have 2 main machines, termed the "Deconstructor" and "Reconstructor", or thesaurus-ized equivalents.

 The Deconstructor

The deconstructor's job is to locate an Assembler Recipe with a given output, and break it down into its inputs.  As it does so, it may potentially generate a fluid called mass.  This is generated in miniscule amounts, based upon the tier of the decomposition recipe.  Mass is used for rebuilding the recipe, as well as encoding recipes into schematics, which we'll get into later.


The Encoder

This block is the player's access to the Assembler Manager database.  Simply place an item in the left hand crafting grid to see the equivalent recipe output on the right.  Now that the player has discovered the recipe he wants to use, he needs to transfer it over to a reconstructor.  The way to communicate the recipe is via an item called a Schematic.  Lower tier schematics have limited uses, with the final tier allowing for infinite uses.  Every time the recipe is created via a schematic, the schematic loses a use.  When a schematic has used its final use, it reverts to an un-encoded schematic, and can be re-encoded.


The encoder uses mass and power to encode the given recipe on a specific schematic.


Higher tier recipes require more mass, as do higher tier schematics.
Advanced tooltips will show you the recipe encoded on a particular schematic.


The Reconstructor

You can think of this as the nemesis machine to the deconstructor.  This machine takes in the input components and a recipe, and automatically creates the output.
Here we can see the recipe shown for us for reference in the reconstructor machine, once we have put in the encoded schematic.  There are no items in the inventory of the reconstructor, so no crafting is currently being done.
Once we put some Mineral Lattice in the inventory, we can see the reconstructor use one of its uses , consume some power and the required mass, and begin to craft.
And here we can see the output dirt.  Thus, we have successfully deconstructed Stone into Mineral Lattice, created a schematic, and turned it back into Dirt.


The Implication

Now, you have seen me use an item called a Mineral Lattice.  This is one of many items in the Micro tier that regular minecraft items will decompose into.  I will henceforth refer to these types of items as Components.  Micro tier Components are not the end of the line, however.  Once you have a Nano Deconstructor, you can break down Micro tier Components into their Nano tier.  With a Nano Reconstructor, you can reassemble those Nano tier Components into Micro tier.  The same occurs with Nano -> Femto and back.

Thus, as you progress down Femtocraft, the decomposition/recomposition tree widens, as you can start breaking items down further into the Components required for a particular reconstructed item.

However, it is not entirely equivalent.  It is very unlikely that you can use 100% of the deconstructed Components from one particular Item in the reconstruction of another.  However, those items still exist for use in another particular cause.

The Tease

Tuesday, November 18, 2014

Why it's taking so long.

Hey everyone, long time no message.

Several recent Reddit posts have brought significantly more interest to Femtocraft. 
Unfortunately, I haven't been working on this nearly as much as I want to.  School right now consumes so much of my time that I can maybe eke out a day every couple of weeks to make a few changes, but nothing major.

However, that isn't to say that I'm giving up.  I know that Femtocraft will have a long run ahead of it if I can push it out, and that's definitely something I'm committed towards doing. 


If you want to stop in and say hi, I sit in the irc channel #Femtocraft on esper.net.  Feel free to come in and talk.  If you want to contribute, Femtocraft is open source.  I'm always happy to see more people interested in modding!



Thursday, October 23, 2014

Major Hurdle Vaulted


That's right folks.  1.7.10.

Just have to do some last bug fixing, but so far packets work.  Sound system does not.  Oh well, that never really worked well anyways, so will just have to figure out the new one.

But it feels so good having it ported now.  No more block or item ids to track.  Netty message system makes packets so much nicer.

Now we're literally on the home stretch.

Saturday, September 20, 2014

Testing

So this occurred awhile ago, but I felt like showing off a bit, as well as alleviating any fears people might have about 'yet another power system.'

Unfortunately, I do not have a screen shot for a before, and you'll just have to take my word for this, but a single dimension usually runs around 4-6ms / tick.

What is this, you might ask?  This is a 10x10x10 cube of wiring, all transmitting power in every direction.  The pink cubes at the bottom left a re debug blocks that simply generate power, while the blocks in the top right do the same, but consume it.

What this picture actually shows is 1000 tile entities all distributing power in every direction, every tick, and only adding ~.5 ms to the tick time.  The algorithm also does not allocate any memory while it is running, adding no overhead due to Garbage Collection.  To drop TPS below 20, the mean tick time needs to go over 50 ms/tick.

Multiplayer

As you may have noticed, there is another player in that picture.  I also tested the Assistants system, to allow other players to interface/remove your machines.  Additionally, packet sending, GUIs, etc.

It's all there, and it all works.  Which is nice, because it should mean fewer surprises in the future.



I'm in the final stretch guys.  Just a few more weeks (and one long conversion weekend) and I should have a 1.7.10 alpha.

Thursday, September 18, 2014

News!

Hey guys, just started up grad school again, so my time is going to be whittled away towards homework and other things.  Regardless, I still have progress to report.

Configs!

That's right!  I promised configurability, and now you've got it.  I implemented a registration system to easily register class constants to pull their values from the Femtocraft configuration file.  This means that you can alter things like power usage, ticks to craft, or other values.

I generalized the configurable loading system so that it will even work with instances of classes.  Remember that flexible tech tree plotting algorithm? I'll give you three guesses to how I combined the two.

If you guessed: fully configurable technology tree, you guessed right!

That's right folks.  By default, Femtocraft will generate a technology tree with dependencies, names, recipe hooks, and other things. Set a single false to true in the configs, and instead Femtocraft will parse the Technology section and build up a list of Technology instances from that.  Yes, this means new Technology nodes can be made in the tech tree from configs alone.

Some of you may be worried about how built-in Femtocraft tiles or systems might break if their dependant technologies are removed, but due to the configurability of the classes, the names of technologies that the machines look for can easily be swapped out in the configuration files.



Also, to support more than simple text rendering for Technologies, I also wrote a parsing system.  Mod pack makers or others have a sub-system for rendering things such as Crafting Grids, Assembler Recipe, Temporal Recipe, or Dimensional Recipes anywhere in the description text.



Soon, I will also port over the Femtocraft crafting recipes and other defaults to load from configs as well, offering full customizability to aspiring tinkerers.

Work has not stopped, guys!  Stay tuned for more updates!

Saturday, August 9, 2014

Hi Reddit

So I guess no more hiding for me.

As such, this is both an acknowledgement post and a miniature update.

I have just finished my summer job, so time has opened up again.  I am continuing to work on this, and am slowly but surely whittling down all the little odds and ends. 

I'm not certain whether to release this as 1.6.4, or to spend a couple days updating to 1.7.10 before the first release.  The issue there being, 1.6.4 is dying off and almost everything has gone on to 1.7.*.  If I release 1.6.4, I can't guarantee many fixes/updates to that version, as I'm probably going to try and update it asap.  However, if I don't release a 1.6.4 version, there are still several large packs that haven't updated yet, and I miss potential users there.  Oh well, something to think about for the future.

Otherwise, I'll be updating this some more in the near future with all the extra things I have been working on but just haven't found the time to format together into a post.


Sunday, June 8, 2014

The Status

I'm officially a Programmer TA for the NHSGA Program at Carnegie Mellon this summer.  Yay!

This also means that the job comes first.  However, I want to be true to myself and continue to work on this.  Unfortunately, due to moving out / moving in, and recent family matters...I haven't touched this code in the last 3 weeks.  However, there's actually not all that much left to do, if I can crank it out.

I still am planning for an Alpha release by the end of this month.  That means, everything below works.  Maybe not well, maybe not perfectly, the design is likely unfinished and technology / decomposition trees are likely to change...but it will be out.

Here's an update on what I have been able to work on though.

finished
in progress
unfinished

 

Research

Gui
  • Graphing Algorithm
 TileEntities -
  • Research Console
    • For putting research materials into, and performing the actual work of researching.
  • Research Computer
    • Allows players to view their current Technologies, and see what is required to advance into other areas.
Items -
  • Portable Computer
    • Portable research computer

 

Industry 

Deconstruction/Reconstruction
  • Rebalance  
Systems
  • Assembler Recipes
  • Time Recipes
  • Dimension Recipes

Ores -
  • Titanium
  • Platinum
  • Farenite
  • Malenite - Nether
TileEntities -
  • Encoder
  • Reconstructor (Micro, Nano, Femto)
  • Deconstructor (Micro, Nano, Femto)
  • Furnace (Micro, Nano, Femto)
  • Crystallizer (Micro, Nano, Femto) Being moved to mining submodule
  • Horologe (Nano, Femto)
  • Entangler (Nano, Femto)
  • Vacuum Tube (discriminating)
  • Vacuum Hub
  • Suction Pipe
  • Compression Chest (Micro, Nano, Femto) Being moved to storage/utility submodule
Items -
  • Ores
  • Schematics
  • Deconstruction/Reconstruction materials
  • Interface Devices (Micro, Nano, Femto)

 

Power

  Algorithm -
  • Performance enhancements
  • Event-based connections for TileEntities
 Systems -
  • Fission Reactor
  • Fusion Reactor/Plasma

Ores -
  • Thorium
TileEntities
  • Cable (Micro, Nano, Femto)
  • MicroCube
  • MicroEngine
  • Atmospheric Charging Base (Micro)
  • Atmospheric Charging Coil (Micro)
  • Atmospheric Charging Cap (Micro)
  • Orbital Equalizer (Micro <-> Nano)
  • NanoCube Frame
  • NanoCube Port
  • Geothermal Charging Coil (Nano)
  • Geothermal Charging Base (Nano)
  • Fission Reactor Core (Nano)
  • Fission Reactor Housing (Nano)
  • Null Energy Equalizer (Nano <-> Femto)
  • FemtoCube Frame
  • FemtoCube Port
  • FemtoCube Chassis
  • Stellarator Core (Femto)
  • Stellarator Housing (Femto)
  • Stellarator Focus (Femto)
  • Stellarator Optical Maser (Femto)
  • Plasma Turbine (Femto)
  • Plasma Condenser (Femto)
  • Plasma Vent (Femto)

Items
  • Micro
  • Nano
  • Femto

Sunday, May 4, 2014

Progress Update 2


 It's been awhile.  Finishing the semester and all that.  Job for this summer is coming through, which means it's extremely likely I'll be TA-ing at the NHSGA program at Carnegie Mellon this summer!  Yay!  However, it also means that I won't be able to work much on this for a large chunk of the summer.  I'll likely be heading out around the second week of June, which means that my time frame will move to to compensate.  Hopefully, I can finish the rest of the basics this month, leaving June for bug testing/catching.  Depending on the timeline, I may release earlier than that.

This will be a short post so I can get back to work.


finished
in progress
unfinished

 

Research

Gui
  • Graphing Algorithm
 TileEntities -
  • Research Console
    • For putting research materials into, and performing the actual work of researching.
  • Research Computer
    • Allows players to view their current Technologies, and see what is required to advance into other areas.
Items -
  • Portable Computer
    • Portable research computer

 

Industry 

Deconstruction/Reconstruction
  • Rebalance  
Systems
  • Assembler Recipes
  • Time Recipes
  • Dimension Recipes

Ores -
  • Titanium
  • Platinum
  • Farenite
  • Malenite - Nether
TileEntities -
  • Encoder
  • Reconstructor (Micro, Nano, Femto)
  • Deconstructor (Micro, Nano, Femto)
  • Furnace (Micro, Nano, Femto)
  • Crystallizer (Micro, Nano, Femto) Being moved to mining submodule
  • Horologe (Nano, Femto)
  • Entangler (Nano, Femto)
  • Vacuum Tube (discriminating)
  • Vacuum Hub
  • Suction Pipe
  • Compression Chest (Micro, Nano, Femto) Being moved to storage/utility submodule
Items -
  • Ores
  • Schematics
  • Deconstruction/Reconstruction materials
  • Interface Devices (Micro, Nano, Femto)

 

Power

  Algorithm -
  • Performance enhancements
  • Event-based connections for TileEntities
 Systems -
  • Fission Reactor
  • Fusion Reactor/Plasma

Ores -
  • Thorium
TileEntities
  • Cable (Micro, Nano, Femto)
  • MicroCube
  • MicroEngine
  • Atmospheric Charging Base (Micro)
  • Atmospheric Charging Coil (Micro)
  • Atmospheric Charging Cap (Micro)
  • Orbital Equalizer (Micro <-> Nano)
  • NanoCube Frame
  • NanoCube Port
  • Geothermal Charging Coil (Nano)
  • Geothermal Charging Base (Nano)
  • Fission Reactor Core (Nano)
  • Fission Reactor Housing (Nano)
  • Null Energy Equalizer (Nano <-> Femto)
  • FemtoCube Frame
  • FemtoCube Port
  • FemtoCube Chassis
  • Stellarator Core (Femto)
  • Stellarator Housing (Femto)
  • Stellarator Focus (Femto)
  • Stellarator Optical Maser (Femto)
  • Plasma Turbine (Femto)
  • Plasma Condenser (Femto)
  • Plasma Vent (Femto)

Items
  • Micro
  • Nano
  • Femto

Tuesday, April 22, 2014

Technology Tree Cont'd

Well that was fun!

For the most part, the algorithm is finished.  It may require a few tweaks here and there, and will ultimately be slightly customizable by the user in question (i.e. choosing x and y padding), but it will get the job done splendidly.

Well, I won't keep you in the dark any longer.  Bear in mind that this is generated on a per-user basis, however, it attempts to minimize # of connections, then total distance of lines, so it's very likely that most (if not all) of the trees end up looking like this one.

Any node without an icon is simply that - I just havn't gotten around to making art for everything yet.  The color of the line corresponds to the tech of the Technology it's leading towards.

Micro
Nano
Femto
Temporal
Dimensional

Voila.
Hmm...  looking at this now, it might be useful to prune unnecessary prerequisites.

 And here it is, pruned.

Saturday, April 19, 2014

Technology Tree

Technology

The technology tree is finally finished!  What I mean by this is that all of the major unlocks (new machines or major technology uplocks) are finally mapped to their Technologies.  Non-major Items used in crafting/assembling these machines will simply be bundled into the the existing technologies.

For your perusal, I'll link it here.
Femtocraft Technology Tree

Now something you may notice is that there are a LOT of connections.  Not only this, but these often span across technologies and overall make it difficult to read and understand.

Another problem is that this isn't extensible.  If I, or someone else, wants to add in technologies somewhere, they need to manually place where their technology goes, and pray that it doesn't overlap someone else's technology.  As such, I'm currently looking into acyclic directed graph drawing algorithms.  This will, when the mod is loading and all technologies have been registered, compute this graph in hopefully a neat and readable manner.  This will also allow for other mods to add in their Technologies and not have to worry about placing them. 

Yes, this will take time.  Yes, it might be buggy.  However, it'll solve a lot more headaches in the future than it'll cause now, and since I have the time to work on this at the moment, I feel it's something worth investing time into.  Plus, it'll be fun!

Also, as part of a mini-update.  Almost done with classes!  One week and one paper left.
Still waiting on hearing back from a University about a summer teaching position.  If I get in (which I dearly hope), then I've got the next two months free to try and pump this out before heading there.  If not, its likely that I'm going to pick up a research job at my University here, which means that it'll be competing for time with this.  Either way, I'm not going to give up on Femtocraft, and I still am intending to hold to my end of June deadline.

Saturday, April 5, 2014

Progress Update


Progress

 

...has not stopped!  I just have been working on many little things that I don't feel were worth individual posts, but now I have something big done I felt I could throw them in here.

I broke down the research data into individual files per character.  Thus, if one character's research got corrupted, it would be easier to save/restore/edit, and in the end wouldn't break anyone else's research. 

I've also been refactoring the majority of my industry TileEntity classes.  Long/short of it is that it is very simple to make the upgradeable tiers and I can pump each one out in under an hour.  Also, the 3 main machines (Furnace/Reconstructor/Deconstructor) all support working on an ItemStack whose size is greater than 1.  I.E.  Furnace can smelt a stack of Iron of size 8.  They also all support instant work.

I finished the Encoder TileEntity (look for an update concerning this and the Reconstructor) soon.  This finishes the Encoder/Deconstructor/Reconstructor trifecta.

The GUIs for the majority of the Industry/Power machines have been made.

Long and not least, the Tech Tree is almost finished.  I just need to wrap up the Femto tier technologies, and then put it all into code.  This also means that I have decided on a scope for release of Femtocraft, and will discuss that now.

 

What will be in the first release?

 

As I said in previous posts, Femtocraft is intended to be the core mod for several up and coming mods I intend to release.  As such, it will provide a solid base and not much else.

Each additional mod will address a portion of the game/Femtocraft and I will refer to these portions as "Submodules."

Current list of planned Submodules

  • Industry
    • Smelting/Ores/Deconstruction - Reconstruction, Mass
  • Power
    • Femtocraft  core Power generation
  • Research
    • Femtocraft Tech Tree system
  • Nanites
    • Player-based upgrades, World Generation (Nanite infested biomes, stable, unstable)
  • Creatures
    • Machine-based Creature harvesting.  Vats and Feeding.
  • Tools
  • Utility
    • Teleportation, Anti-Gravity fields.



Femtocraft will release with Industry, Power, and Research submodules.

 

 

 

finished
in progress
unfinished

 

Research

 

 TileEntities -
  • Research Console
    • For putting research materials into, and performing the actual work of researching.
  • Research Computer
    • Allows players to view their current Technologies, and see what is required to advance into other areas.
Items -
  • Portable Computer
    • Portable research computer

 

Industry 


Ores -
  • Titanium
  • Platinum
  • Farenite
  • Malenite - Nether
TileEntities -
  • Encoder
  • Reconstructor (Micro, Nano, Femto)
  • Deconstructor (Micro, Nano, Femto)
  • Furnace (Micro, Nano, Femto)
  • Crystallizer (Micro, Nano, Femto)
  • Horologe (Nano, Femto)
  • Entangler (Nano, Femto)
  • Vacuum Tube (discriminating)
  • Vacuum Relay
  • Suction Pipe
  • Compression Chest (Micro, Nano, Femto)
Items -
  • Ores
  • Schematics
  • Deconstruction/Reconstruction materials
  • Interface Devices (Micro, Nano, Femto)

 

Power

 

Ores -
  • Thorium
TileEntities
  • Cable (Micro, Nano, Femto)
  • MicroCube
  • MicroEngine
  • Atmospheric Charging Base (Micro)
  • Atmospheric Charging Coil (Micro)
  • Orbital Equalizer (Micro <-> Nano)
  • NanoCube Frame
  • NanoCube Port
  • Geothermal Charging Coil (Nano)
  • Geothermal Charging Base (Nano)
  • Fission Reactor Core (Nano)
  • Fission Reactor Housing (Nano)
  • Null Energy Equalizer (Nano <-> Femto)
  • FemtoCube Frame
  • FemtoCube Port
  • FemtoCube Chassis
  • Stellarator Core (Femto)
  • Stellarator Housing (Femto)
  • Stellarator Focus (Femto)
  • Stellarator Optical Maser (Femto)
  • Plasma Turbine (Femto)
  • Plasma Condenser (Femto)
  • Plasma Vent (Femto)


I have not yet thought about the items required to make these, and so they aren't listed as of yet.  This list is 90% set in stone.  I may add/remove minor things, as I come close to my intended release sometime in June.


TL;DR

 

Work hasn't stopped.  Lots of minor things.  Look for more soon.  First release is industry, power, research and ore gen, no biomes or monster entities. 

Friday, March 14, 2014

Research


Research Computer

 The research computer serves one simple purpose.  It allows you to view the technology tree as you understand it.  You start with a few technologies, such as knowledge of the new metals, basic understanding of the makeup of materials, and basic circuity.  The computer gives you insight into how the technologies you know may be combined together, with a hint towards what you're working towards.  Thus you can always see what is available for you to head towards next.

Technology

 Technologies are the individual milestones in the research tech tree.  Technologies are either hidden, discovered, or researched.  When all prerequisite technologies are researched, a technology becomes discovered, and visible in the tech tree.  Clicking on the technology at this point will give you a name, a crafting grid, and a small descriptor of what the possibility of this technology is.  Putting the listed materials into a Research Console allows you to create a data card with the information corresponding to this technology, which can be used to unlock it for a player.  Only players who have the technology discovered can use the data card.

Once a technology is discovered, it will give recipe patterns for all of the items associated with this particular technology.  It may also give additional information about the technology as a whole.

Research Console

This is where the research actually happens.  Placing the materials from a discovered Technology into the console, you can begin the process of analyzing these materials.  This takes time, but nothing else.  It will continue even if you walk away from the console.  Once this process is done, you receive a data card that can be used to change the corresponding Technology from discovered to research.

Additionally, certain technologies may generate items as part of the discovery process.  This is often the case when the technology research items correspond to a recipe, or portion of one.  By creating this object, you discover additional uses, and thus, technologies.

Tuesday, March 4, 2014

Utility

Suction Pipes


Suction pipes are liquid transportation pipes.  When attached to a non-pipe Liquid Tank, they automatically attempt to output liquid into said tank.  Pipes can be configured to pull liquid from said tanks, instead.  Pipes are always on - they either pull, or push, liquid.  Suction Pipes use a system similar to the power algorithm.

Pipes maintain a pressure value.  Pipes that are pulling from tanks have higher pressure, the greater the amount of liquid in said tank.  Pipes that are pushing into tanks have a negative pressure, where there is more negative pressure the more empty room in the tank this is.  As such, when a pipe distributes its liquid, it divides its storage among all neighboring pipes with lesser pressure.  This ensures that liquid flows from areas of high pressure to low pressure, with more liquid going to locations that have more room for it.

This continues the trend of being server friendly, for the same reasons as the power system.

Vacuum Tubes


Vacuum tubes are all-purpose item transportation devices.  These are one-directional tube systems whose sole purpose is simply to move items from one place to another.  A vacuum tube only has one input, and one output.  Pipes have 4 slots, with an emergency fifth overflow slot.  Every tick, vacuum tubes with their inputs attached to inventories pull an item stack from the inventory, and propagate forward all items already in the tube, 1 slot forward.  If a vacuum tube cannot move items out of it, such as if the inventory at its output is completely full, and no item stacks can be combined, then the pipe begins to overflow.  This is signified by the slot marker turning red.  This can cause backups down the pipe system as each next pipe fills up and begins to overflow.

 If vacuum tubes have empty space as their input, they attempt to suck in all items in a 1 block area of the end, pulling them into the system.  This behavior is disabled if the tube is overflowing.  Tubes with no output inventory, when moving the 4th slot, will eject the item into the world.  This keeps the flow of items moving, and can be used for trash disposal, etc.  Tubes, once placed, can be manipulated to change direction or attach to different tube systems.

Power System

 

Tiers of Power

 

Femtocraft is all about tiers and encapsulation.  Each tier, once researched, exposes another layer underneath it.  This theme propogates into the power system as well.  Each tier of decomposition has an accompanying tier of power - Micro, Nano, and Femto.

Each power storage is a wrapper around the previous tier.  The picture shown above is the Nano-Cube, which is the Nano-tier power storage device.  At the core of this multi-block is the Micro-Cube.  When the Femto-Cube is built, it is a wrapper around the Nano-Cube.  In this way, the latest tiers of Femtocraft still require infrastructure and items from the previous tiers.

Server-Friendly

 

The power system of Femtocraft is not coded using an energy net, nor does it require any pathfinding algorithm of any kind.  Each Femtocraft power block simply pushes power to neighboring blocks with less power.  In layman's terms, power flows from where it is generated to where it is needed.

In programming terms, each power block is a node in a greedy distribution system, where every tick a portion of the node's power is distributed among neighboring nodes with less power.

What this means is that there are no computational bottlenecks.  Power can't get lost in the system because there is no path-finding algorithm to confuse.  Power producers don't need to determine a path to every potential consumer, which could potentially require traversing hundreds of blocks.  Instead, they simply push their power out to the wire, which then pushes it out to the next wire, etc.  Each block only ever needs to perform a certain amount of computation every tick, and the amount of computation is capped to the number of neighbors it has.

This does mean that power does not propagate instantly when a new machine is connected to the system.  I feel that this fits the theme of Femtocraft better, and isn't much of a problem in usability.

Liquid Distribution

 

The liquid distribution system uses a near-identical algorithm.  This will be covered more in the following posts about utility transportation implementations.

Wednesday, February 26, 2014

What is Femtocraft?

 

Femtocraft is...

 

A tech mod for Minecraft.  Femtocraft is intended to be a late-game oriented utility mod that performs many functions that other mods currently do not.  

Theme

 

Femtocraft is based upon a world of Pseudo-science, where the chemistry of Minecraft is slowly being discovered by the player.  They begin with Tesla-inspired electrical masterpieces, progress into a Borg-ian universe of Nanites and green,  pulsating circuitry, and end with their attempts at manipulating the fabric of reality itself.  All Technological Tiers have their own primary color, enabling users to see at-a-glance what interactions are possible.   

What makes it Special?

 

Femtocraft's draw is its rich and detailed Tech Tree, with an immersive theme.  Those who play Femtocraft begin with Vanilla minecraft materials, but within the course of one or two hours find themselves deep inside of Femtocraft's Persistent Tech Tree.  Items in Femtocraft are made primarily with other items in Femtocraft.  The goal is to avoid recipe collisions as much as possible by mainly incorporating items other mods could not provide.  A united GUI theme and a simple but striking texture theme set apart Femtocraft machines from others.

Persistent Tech Tree

 

All player technological trees are stored separate from their player data.  This enables Femtocraft to look up a particular player's progression even while they are not online.  Research data is also safer in that it has no ties to any common data storage, meaning it's separate from potential corruption or unintended modification.  

The practical aspect of this is that player advancements in the Tech Tree can and do persist across their machines.  Finish the technology that is a 20% speed upgrade to your machines?  All machines you own from here on out have that 20% speed upgrade, whether you're online or not.

Multiplayer Design

 

A large percentage of Minecraft players play online with other players in servers.  Femtocraft attempts to accomodate and deal with potential hazards through various mechanisms.  The first is TileEntity ownership.  All Femtocraft TileEntities remember who placed them.  Only their owner, his authorized 'assistants', and moderators can interact with or destroy these TileEntities. 

The other side affect is as stated before.  Because machines know who owned them, they can interact with the Tech Tree to see what technologies their owner has researched, and how these technologies will affect how they perform.

 Configurability

 

 Femtocraft is being coded with the mentality of being used in modpacks.  To this end, there will always be unexpected naming collisions, ore generation modifications, and inter-mod exploits.  My goal is that any constant in Femtocraft will be loaded from Configurations.  From ore generation locations, amounts, to power generation constants.  I will not use this as a cop-out in attempting to balance the mod.  However, I understand that often it is the case that mod owners and pack creators have different ideas of what constitutes balance.  In this case, the pack creator often has a greater visualization of his end goals and a larger view of inter-mod interactivity that enables him to have a better understanding of what would or would not constitute balance.  To this end, I will leave the ultimate decisions up to them.

Cross-Mod Compatability 

 

It will be possible to play this mod completely stand-alone with Vanilla Minecraft, but I am developing it with the goal of it being used in major modpacks.  To this end, once I am far enough along in Femtocraft, I will attempt to keep up-to-date native cross-mod support as miniature child mods of Femtocraft.  This will be accomplished through the use of peripherals, such as Femtocraft Power -> MJ Engines, and visa versa. 


Femtocraft as a parent Mod

 

Femtocraft is Open Source.  I am also planning on having Femtocraft only be the core mod for a suite of addons that I intend to release, all based upon the Femtocraft Fundamentals - Technology, Power, and Theme.  To this end, Femtocraft is being designed as an API towards these main ideas - because, in the end, I myself will be using this mod as an API for other mods.  If you are interested in contributing to Femtocraft, or in developing an addon, please shoot me an email.  I want to know your opinions!




Femtocraft is currently in development.  I will be posting snapshot updates as I implement certain features.  I am planning on releasing, at the latest, by the end of June 2014.