Warptorio2


Factorio but you build your factory in a restricted space that teleports yourself, the platform, and everything on it to a new and uncharted planet in an unknown corner of space, time and the universe while constantly under attack from enemies. This mod increases the difficulty of factorio by making construction harder and making biters a more significant threat, resulting in a unique experience of factorio'ing in a tight space and under pressure, almost like a tower defence game.

Overhaul
11 months ago
0.17 - 1.1
27.8K
Combat Environment

FAQ

Gameplay

Q: What is different in warptorio from vanilla factorio?

A: Quite a lot.
You are situated on a small platform that frequently warps yourself, the platform, and everything on it, to a new, uncharted planet in an unknown corner of the universe.
This has an enraging effect on the alien population of these planets, causing biter base expansion to be significantly ramped up wherever you go.

Anything not on the platform upon warping is left behind on the planet, and this can include players.
Your only option then is to death warp back to the platform, as you will not otherwise stand a chance against the alien hordes.

Q: The start is overwhelming and i don't have space or time to build meaningful automation.

A: You may be approaching warptorio as you might to vanilla.
In this mod, this will get you overrun with biters.
You need to consider that everything you place on the planet will need to be deconstructed if you want to take it with you, and in the beginning you will only be able to survive about 20 minutes.
Plus you are building in a restricted space, so you will need to reconsider your usual building habits.
You can manually warp out at any time, such as if you feel the biters are becoming too strong, but beware as this propels you deeper into the unknown and you never know where you will land next.
If it is still too much for you, consider using the carebear chest in the settings which should help you get established.
If you're still struggling, scroll to the very bottom of the FAQ if you need some SPOILERS / Hints on how to beat the early game.

Q: How does warptorio pollution work?

A: Warptorio has 4 factors that go into it's pollution mechanics.
First, all pollution produced by your factory on the other platform levels are dumped onto the planet surface.
Second, the platform generates it's own additional pollution, unaffected by your factory.
Third, the amount of pollution the platform generates per second is multiplied by a pollution factor every second. This factor is around 1.01.
Finally, the amount of pollution the platform generates each tick is reset back to 1 upon warping.
What this results in is exponential growth of the platform's pollution amount.
Example: Say your pollution factor starts at 100. 1 second later, it becomes 101. 30 seconds later, your pollution will be around 134. After 5 minutes (360 seconds), your pollution will be about 3594. this pollution is "spawned" every second.


Modding Information

Q: How do I make a planet?

This section has moved to our Official Planets Pack: https://mods.factorio.com/mod/warptorio_planet_pack

Q: What are your other remote interfaces?

A full list of functions and some notes about what they do can be found at the bottom of warptorio2's control.lua

  • Warp Blacklist. This table prevents a certain entity (by name) from being cloned.
    The blacklist is saved in the global table, and can be interfaced with using the following functions:
    Ensure "modname" is the same name as your mod file, or this will do nothing.
    remote.call("warptorio2","insert_warp_blacklist","modname","entity_name")
    remote.call("warptorio2","remove_warp_blacklist","modname","entity_name")
    remote.call("warptorio2","is_warp_blacklisted","modname","entity_name")

  • Warp Events. This allows your mod to interface with the warping events of warptorio (if you want to or need to).
    script.on_event(remote.call("warptorio2","event_warp"), function(event) end)
    script.on_event(remote.call("warptorio2","event_post_warp"), function(event) end)

  • Warp Function. This allows you to forcibly warp the platform to a random or specific planet. This is useful for testing and debugging purposes.
    remote.call("warptorio2","warp",(OPTIONAL) "planet_name")

Q: My mod is not compatible with Warptorio, what are the common problems as a mod author?

Odds are you're facing a problem relating to how warptorio handles the "warping" of entities to a new surface, and is primarily done with cloning.
This is purely because LuaControl.teleport(position,surface) doesn't work between surfaces, however even if it did, you would still need to update your internal caching.

This function is defined as warptorio.Warpout(vplanet) in control.lua
The warpout procedure functions as follows, in order:

First it handles warp settings such as updating timers and guis for the next planet.
It then selects a random planet from the warptorio.Planets table and creates & prepares its surface.
Refer to How do I make a planet? for more information.
This includes placing the platform tiles.

After this, the "warp" event is called, which you can hook thanks to this remote function: script.on_event( remote.call("warptorio2","event_warp"), function(new_surface, new_planet_table, old_surface, old_planet_table) end)

All entities on the planet's surface are then searched for using find_entities_filtered on the "current" planet 5 times (due to the circle corners).
Warptorio then filters out any blacklisted entities, by name, that have been registered with remote.call("warptorio2","insert_warp_blacklist","my_modfolder_name","entity_name").

Warptorio then uses LuaSurface.clone_entities from the current_planet.surface to the new_planet.surface
Each new entity created this way has defines.events.on_entity_cloned raised for it.
In this event you need to simply update your internal caching and duplicate everything to the new entity so the 2 are identical, but on a different surface.
Cloning does not typically happen in normal play, but to test it without mods, you can use the Clone feature in /editor.
All players are then teleported to the new planet.

After this, all the warped entities are destroyed with {raise_destroy=true}, which raises the following event: defines.events.script_raised_destroy
Without raising destroy, there would be no destroy event.
This event behaves in a similar way to your defines.events.on_entity_died event.

Now that entity cloning is finished, the platform tiles are replaced with void tiles, destroying anything in the way in the process.
This is mostly for aesthetic effect when a player is not on the platform during warp.
All old or abandoned surfaces with no players on them created by warptorio matching the string pattern warpsurf_ are then destroyed, except for nauvis and the "homeworld".
You may need to clean up any leftover caching code for these entities with defines.events.on_pre_surface_deleted at this stage.

And finally, the "post_warp" event is called, which you can hook thanks to this remote function: script.on_event( remote.call("warptorio2","event_post_warp"), function(new_surface, new_planet_table) end)

Q: Are there any ways to improve my mod's compatability with other mods like angels, bobs etc?

In certain unusual circumstances, you may need to handle entities directly created by warptorio, and not just the ones cloned between warps.
You might want to review this event as well, as this may be a factor: defines.events.script_raised_built
This event should hopefully already exist in your mod.
If not, adding this will improve your mods compatability with other mods in a rather general way.


SPOILERS / Strategy Guide

Pre Game

  • Hand inserting will be your friend!
  • The platform is not big enough to build anything meaningful on it, instead use it as storage by placing chests.
  • Don't be afraid to build on the hazard tiles for now.
  • Although you will be warping through planets very quickly, choosing a good first planet with resources closely clustered together can make getting started a lot easier.
  • At default biter settings, it is intended you will start being attacked Before you can complete your first research, so don't over-commit to getting it.
  • It is suggested to get turrets first, but military is good too.
  • Remember your factory produces pollution as well. If you rush a lot of drills and furnaces, you will attract more biters earlier.
  • Try to balance your income versus how long it will take to tear down when biter attacks begin.
  • When biters start attacking, they do not stop. Do not wait for the autowarp, warp out early!
  • The only real penalty for warping fast is that the more challenging planets start appearing after a number of warps, so warp fast but also make each one count!
  • Build simple, and build fast.

Red Science

  • Hand inserting will be your friend!
  • Avoid all non-essential automation. E.g. a chest with coal in it inserting into a boiler is good, but a chest inserting into and out of assemblers is not!
  • Inserters filling assemblers will stop if that assembler has 1 or 2 items on it's output until it is emptied. This can be unhelpful, and setting up inserters/chests can take precious time. Instead...
  • Hand-filled assemblers will craft entire stacks at a time. This "hand-assembling" can effectively increase your "hand-crafting" speed by about 10~20x by using rows of standalone assemblers.
  • Don't be afraid to build temporary hand-managed rows of assemblers on the planet (outside the platform) to gain access to serious levels of productivity to create red science.
  • This hand-filled assemblers strategy is effective enough to complete most of green science as well.

Early Game

  • The main objective is to maximise profit from setting up / tearing down miners between planets.
  • The longer you stay on a planet, the bigger the biter waves become, and the more ammo it's going to cost you to survive in less and less time.
  • The ammunition cost of biters should be balanced against iron income. You do not want to spend more iron on ammunition than you mined from that planet, so warp out early.
  • You should consider getting the bullet damage upgrades early, as this effectively makes bullets cheaper on iron.
  • Ammunition costs can be deceptive - your turrets may be beating the biter waves easily, but there may be lots of turrets attacking the huge packs of the smallest biters. Pay attention to this.
  • Biter pack size should be monitored, because when an evolution happens this can create a difficulty spike, and you will be quickly and unexpectedly overwhelmed.
  • For research you will want to aim for the Warp Miner Productivity. These are cheap and numerous for a reason, and are intended to help balance your income in between warping and rebuilding - they give you a huge boost to production with zero added effort!
  • After a few Warp Miner Productivity upgrades, burner drills will start producing more than a stone furnace can refine, so it may be good to then switch to steel furnaces.
  • Try to avoid using walls - they are expensive.

Green Science

  • By this point you should have enough space to start building a serious factory on the platform.
  • Start automating a few of the more complicated recipes, but also keep hand-assembling some things. E.g. Ammo is better hand-assembled because 100 iron only makes 20 bullets, but inserters take several steps.
  • You will want to work towards unlocking the Teleporter and the Harvesters and the platform logistics researches, as this will make resource collection and automated smelting easier.
  • Splitting your income between automated and hand-collected can produce a lot more than either method on their own.

Mid Game

  • Tip for smelting: Iron/Copper Ores can be freely mixed into furnaces, as they both turn 1 ore to 1 plate, but stone bricks takes 2 stone ore which can clog your furnaces.
  • Tip for scouting: Consider placing standard radars on the surface platform to help scout for oil and resources when landing on a new planet.
  • Tip for Water: The platform pipes have a limited throughput which can strain your water logistics - It may help to put boilers and steam tanks on the surface and pump the steam around, until you get the boiler water upgrades.
  • Tip for Defence: Did you know; you can place inserters between the turrets and they'll move ammo between each other, meaning you can set it up so you only have to fill and check the ammo on one turret.

Blue Science

  • Hand inserting is still your friend.