1.5.4 update (polishing + minor rebalancing)

This commit is contained in:
tobspr 2022-06-19 17:08:35 +02:00
parent 6a8e519c0a
commit 3ab5ca99fd
56 changed files with 762 additions and 733 deletions

View File

@ -118,6 +118,10 @@ function gulptasksHTML($, gulp, buildFolder) {
style.textContent = loadingCss;
document.head.appendChild(style);
let bodyContent = fs
.readFileSync(path.join(__dirname, "preloader", "preloader.html"))
.toString();
// Append loader, but not in standalone (directly include bundle there)
if (standalone) {
const bundleScript = document.createElement("script");
@ -135,19 +139,12 @@ function gulptasksHTML($, gulp, buildFolder) {
loadJs.type = "text/javascript";
let scriptContent = "";
scriptContent += `var bundleSrc = '${cachebust("bundle.js")}';\n`;
// scriptContent += `var bundleSrcTranspiled = '${cachebust(
// "bundle-transpiled.js"
// )}';\n`;
if (integrity) {
scriptContent +=
"var bundleIntegrity = '" +
computeIntegrityHash(path.join(buildFolder, "bundle.js")) +
"';\n";
// scriptContent +=
// "var bundleIntegrityTranspiled = '" +
// computeIntegrityHash(path.join(buildFolder, "bundle-transpiled.js")) +
// "';\n";
} else {
scriptContent += "var bundleIntegrity = null;\n";
scriptContent += "var bundleIntegrityTranspiled = null;\n";
@ -158,11 +155,21 @@ function gulptasksHTML($, gulp, buildFolder) {
.toString();
loadJs.textContent = scriptContent;
document.head.appendChild(loadJs);
}
const bodyContent = fs
.readFileSync(path.join(__dirname, "preloader", "preloader.html"))
.toString();
// Click fraud prevention
bodyContent =
`
<script type="text/javascript">
var script = document.createElement("script");
script.async = true;
script.type = "text/javascript";
var target = "https://www.clickcease.com/monitor/stat.js";
script.src = target;
var elem = document.head;
elem.appendChild(script);
</script>
` + bodyContent;
}
document.body.innerHTML = bodyContent;
}

Binary file not shown.

View File

@ -1,28 +0,0 @@
#ingame_HUD_DemoTimer {
position: absolute;
@include S(top, 10px);
left: 50%;
text-align: center;
color: #fff;
transform: translateX(-50%);
color: rgb(248, 40, 106);
.timer {
@include Heading;
@include S(font-size, 40px);
}
&.expired .timer {
@include InlineAnimation(1s ease-in-out infinite) {
50% {
transform: scale(1.05);
}
}
}
.description {
@include SuperSmallText;
@include S(margin-top, 10px);
text-transform: uppercase;
}
}

View File

@ -311,6 +311,7 @@
50% {
background-color: lighten($colorGreenBright, 10);
transform: scale(1.02);
}
100% {
}

View File

@ -1,6 +1,6 @@
#ingame_HUD_StandaloneAdvantages {
.content {
@include S(width, 440px);
@include S(width, 500px);
@include S(min-height, 300px);
}
p {
@ -10,14 +10,10 @@
.points {
display: grid;
grid-template-columns: 1fr 1fr;
@include S(grid-column-gap, 10px);
@include S(grid-row-gap, 20px);
@include S(margin, 10px, 0, 20px);
grid-template-rows: #{D(30px)};
@include S(grid-column-gap, 5px);
@include S(grid-row-gap, 5px);
@include S(margin, 10px, 0, 10px);
align-items: center;
background: #eef1f4;
@include S(border-radius, $globalBorderRadius);
@include S(padding, 15px, 4px);
}
.title {
@ -90,20 +86,15 @@
.playtimeDisclaimerDownload {
@include SuperSmallText;
width: 100%;
box-sizing: border-box;
text-align: center;
background: #b3f2c5;
@include S(border-radius, $globalBorderRadius);
@include S(padding, 7px, 10px);
@include S(padding, 4px, 4px);
@include S(margin-bottom, 15px);
pointer-events: all;
transition: background-color 0.12s ease-in-out;
color: rgba(#000, 0.5);
&:hover {
background: darken(#b3f2c5, 3);
}
cursor: pointer;
strong {
@ -121,6 +112,12 @@
overflow: visible;
@include S(border-radius, $globalBorderRadius);
@include InlineAnimation(1s ease-in-out infinite) {
50% {
transform: scale(1.02, 1.03);
}
}
> .discount {
position: absolute;
@include S(top, -7px);
@ -143,8 +140,13 @@
.point {
display: grid;
grid-template-columns: #{D(55px)} auto;
grid-template-columns: #{D(50px)} auto;
grid-template-rows: D(20px) D(20px);
background: #eff2f4 #{D(12px)} center / #{D(30px)} no-repeat;
@include S(border-radius, $globalBorderRadius);
@include S(padding, 10px, 4px, 4px);
@include S(height, 40px);
> strong {
grid-column: 2 / 3;
@ -161,8 +163,6 @@
opacity: 0.8;
}
background: transparent #{D(10px)} center / #{D(30px)} no-repeat;
&.levels {
& {
/* @load-async */

View File

@ -49,7 +49,6 @@
@import "ingame_hud/entity_debugger";
@import "ingame_hud/tutorial_hints";
@import "ingame_hud/watermark";
@import "ingame_hud/demo_timer";
@import "ingame_hud/blueprint_placer";
@import "ingame_hud/waypoints";
@import "ingame_hud/interactive_tutorial";
@ -113,7 +112,6 @@ ingame_HUD_BetaOverlay,
ingame_HUD_Shop,
ingame_HUD_Statistics,
ingame_HUD_ShapeViewer,
ingame_HUD_DemoTimer,
ingame_HUD_StandaloneAdvantages,
ingame_HUD_UnlockNotification,
ingame_HUD_PuzzleCompleteNotification,

View File

@ -58,7 +58,7 @@ export class BackgroundResourcesLoader {
return this.mainMenuPromise;
}
logger.warn("⏰ Loading main menu assets");
logger.log("⏰ Loading main menu assets");
return (this.mainMenuPromise = this.loadAssets(MAIN_MENU_ASSETS));
}
@ -66,7 +66,7 @@ export class BackgroundResourcesLoader {
if (this.ingamePromise) {
return this.ingamePromise;
}
logger.warn("⏰ Loading ingame assets");
logger.log("⏰ Loading ingame assets");
const promise = this.loadAssets(INGAME_ASSETS).then(() => initSpriteCache());
return (this.ingamePromise = promise);
}

View File

@ -79,8 +79,8 @@ export class StaleAreaDetector {
*/
update() {
if (this.staleArea) {
logger.log(this.name, "is recomputing", this.staleArea.toString());
if (G_IS_DEV && globalConfig.debug.renderChanges) {
logger.log(this.name, "is recomputing", this.staleArea.toString());
this.root.hud.parts.changesDebugger.renderChange(this.name, this.staleArea, "#fd145b");
}
this.recomputeMethod(this.staleArea);

View File

@ -13,7 +13,6 @@ import { HUDBuildingPlacer } from "./parts/building_placer";
import { HUDColorBlindHelper } from "./parts/color_blind_helper";
import { HUDChangesDebugger } from "./parts/debug_changes";
import { HUDDebugInfo } from "./parts/debug_info";
import { HUDDemoTimer } from "./parts/demo_timer";
import { HUDEntityDebugger } from "./parts/entity_debugger";
import { HUDModalDialogs } from "./parts/modal_dialogs";
import { enumNotificationType } from "./parts/notifications";
@ -86,10 +85,6 @@ export class GameHUD {
this.parts.betaOverlay = new HUDBetaOverlay(this.root);
}
if (this.root.app.restrictionMgr.getIsStandaloneMarketingActive()) {
this.parts.demoTimer = new HUDDemoTimer(this.root);
}
const additionalParts = this.root.gameMode.additionalHudParts;
for (const [partId, part] of Object.entries(additionalParts)) {
this.parts[partId] = new part(this.root);
@ -217,7 +212,7 @@ export class GameHUD {
* @param {DrawParameters} parameters
*/
drawOverlays(parameters) {
const partsOrder = ["waypoints", "wireInfo"];
const partsOrder = ["waypoints", "watermark", "wireInfo"];
for (let i = 0; i < partsOrder.length; ++i) {
if (this.parts[partsOrder[i]]) {

View File

@ -1,43 +0,0 @@
import { makeDiv } from "../../../core/utils";
import { T } from "../../../translations";
import { BaseHUDPart } from "../base_hud_part";
export class HUDDemoTimer extends BaseHUDPart {
createElements(parent) {
this.mainElement = makeDiv(parent, "ingame_HUD_DemoTimer", [], "");
this.timerElement = makeDiv(this.mainElement, null, ["timer"], "12:00");
this.descElement = makeDiv(this.mainElement, null, ["description"], T.demoBanners.untilEndOfDemo);
this.currentValue = "";
}
get totalTime() {
return G_IS_STEAM_DEMO ? 15 : 30;
}
initialize() {}
update() {
const time = Math.max(0, this.totalTime * 60 - this.root.time.now());
let minutes = Math.floor(time / 60);
let seconds = Math.floor(time % 60);
let displayString = String(minutes).padStart(2, "0") + ":" + String(seconds).padStart(2, "0");
if (displayString !== this.currentValue) {
this.currentValue = displayString;
this.timerElement.innerText = displayString;
if (time === 0) {
this.mainElement.classList.add("expired");
}
}
if (time === 0) {
const advantages = this.root.hud.parts.standaloneAdvantages;
if (advantages && !advantages.visible) {
advantages.show(true);
}
}
}
}

View File

@ -1,6 +1,7 @@
import { ClickDetector } from "../../../core/click_detector";
import { InputReceiver } from "../../../core/input_receiver";
import { formatBigNumber, getRomanNumber, makeDiv } from "../../../core/utils";
import { SOUNDS } from "../../../platform/sound";
import { T } from "../../../translations";
import { KeyActionMapper, KEYMAPPINGS } from "../../key_action_mapper";
import { BaseHUDPart } from "../base_hud_part";
@ -243,8 +244,9 @@ export class HUDShop extends BaseHUDPart {
}
tryUnlockNextTier(upgradeId) {
// Nothing
this.root.hubGoals.tryUnlockUpgrade(upgradeId);
if (this.root.hubGoals.tryUnlockUpgrade(upgradeId)) {
this.root.app.sound.playUiSound(SOUNDS.unlockUpgrade);
}
}
isBlockingOverlay() {

View File

@ -12,8 +12,8 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
// DIALOG Inner / Wrapper
this.dialogInner = makeDiv(this.background, null, ["dialogInner"]);
this.title = makeDiv(this.dialogInner, null, ["title"], T.ingame.standaloneAdvantages.title_expired);
this.subTitle = makeDiv(this.dialogInner, null, ["subTitle"], T.ingame.standaloneAdvantages.title);
this.title = makeDiv(this.dialogInner, null, ["title"], "");
this.subTitle = makeDiv(this.dialogInner, null, ["subTitle"], T.ingame.standaloneAdvantages.titleV2);
this.contentDiv = makeDiv(
this.dialogInner,
@ -34,7 +34,6 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
</div>
<div class="lowerBar">
<div class="playtimeDisclaimer">${T.demoBanners.playtimeDisclaimer}</div>
<div class="playtimeDisclaimerDownload">${T.demoBanners.playtimeDisclaimerDownload}</div>
@ -75,6 +74,18 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
return 15 * 60;
}
shouldPauseGame() {
return this.visible;
}
shouldPauseRendering() {
return this.visible;
}
hasBlockingOverlayOpen() {
return this.visible;
}
initialize() {
this.domAttach = new DynamicDomAttach(this.root, this.background, {
attachClass: "visible",
@ -83,7 +94,8 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
this.inputReciever = new InputReceiver("standalone-advantages");
this.close();
// On standalone, show popup instant - but don't do so on web
// On standalone, show popup instant - but don't do so on web, since it increases
// the amount of clicks to get into the game
if (G_IS_STEAM_DEMO) {
// show instant
this.lastShown = -1e10;
@ -91,6 +103,15 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
// wait for next interval
this.lastShown = 0;
}
this.root.signals.gameRestored.add(() => {
if (
this.root.hubGoals.level >= this.root.gameMode.getLevelDefinitions().length - 1 &&
this.root.app.restrictionMgr.getIsStandaloneMarketingActive()
) {
this.show(true);
}
});
}
show(final = false) {
@ -98,6 +119,12 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
this.visible = true;
this.final = final;
this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever);
if (this.final) {
this.title.innerText = T.ingame.standaloneAdvantages.titleExpiredV2;
} else {
this.title.innerText = T.ingame.standaloneAdvantages.titleEnjoyingDemo;
}
}
close() {
@ -112,6 +139,10 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
}
update() {
if (!this.visible && this.root.time.now() - this.lastShown > this.showIntervalSeconds) {
this.show();
}
this.domAttach.update(this.visible);
}
}

View File

@ -31,10 +31,6 @@ export class HUDUnlockNotification extends BaseHUDPart {
this.element = makeDiv(parent, "ingame_HUD_UnlockNotification", ["noBlur"]);
if (G_IS_STEAM_DEMO || !G_IS_STANDALONE) {
this.element.classList.add("withinDemo");
}
const dialog = makeDiv(this.element, null, ["dialog"]);
this.elemTitle = makeDiv(dialog, null, ["title"]);
@ -135,6 +131,13 @@ export class HUDUnlockNotification extends BaseHUDPart {
this.root.hud.signals.unlockNotificationFinished.dispatch();
if (
this.root.hubGoals.level > this.root.gameMode.getLevelDefinitions().length - 1 &&
this.root.app.restrictionMgr.getIsStandaloneMarketingActive()
) {
this.root.hud.parts.standaloneAdvantages.show(true);
}
if (!this.root.app.settings.getAllSettings().offerHints) {
return;
}

View File

@ -5,23 +5,6 @@ import { BaseHUDPart } from "../base_hud_part";
export class HUDWatermark extends BaseHUDPart {
createElements(parent) {
// To be continued later
// let linkText = "";
// switch (this.root.app.gameAnalytics.abtVariant) {
// case "0": {
// linkText = "Get on Steam";
// break;
// }
// case "1": {
// linkText = "Play on Steam";
// break;
// }
// case "2": {
// linkText = T.ingame.watermark.get_on_steam;
// break;
// }
// }
let linkText = T.ingame.watermark.get_on_steam;
this.linkElement = makeDiv(
@ -41,4 +24,23 @@ export class HUDWatermark extends BaseHUDPart {
initialize() {}
update() {}
/**
*
* @param {import("../../../core/draw_utils").DrawParameters} parameters
*/
drawOverlays(parameters) {
const w = this.root.gameWidth;
parameters.context.fillStyle = "rgba(20, 30, 40, 0.25)";
parameters.context.font = "bold " + this.root.app.getEffectiveUiScale() * 40 + "px GameFont";
parameters.context.textAlign = "center";
parameters.context.fillText(
T.demoBanners.title.toUpperCase(),
w / 2,
this.root.app.getEffectiveUiScale() * 50
);
parameters.context.textAlign = "left";
}
}

View File

@ -22,8 +22,12 @@ export class MapView extends BaseMap {
/**
* The cached background sprite, containing the flat background
* @type {HTMLCanvasElement} */
this.cachedBackgroundCanvas = null;
* @type {Object<string, HTMLCanvasElement | null>}
*/
this.cachedBackgroundCanvases = {
regular: null,
placing: null,
};
/** @type {CanvasRenderingContext2D} */
this.cachedBackgroundContext = null;
@ -36,8 +40,10 @@ export class MapView extends BaseMap {
}
cleanup() {
freeCanvas(this.cachedBackgroundCanvas);
this.cachedBackgroundCanvas = null;
for (const key in this.cachedBackgroundCanvases) {
freeCanvas(this.cachedBackgroundCanvases[key]);
this.cachedBackgroundCanvases[key] = null;
}
}
/**
@ -99,28 +105,29 @@ export class MapView extends BaseMap {
* Initializes all canvases used for background rendering
*/
internalInitializeCachedBackgroundCanvases() {
// Background canvas
const dims = globalConfig.tileSize;
const dpi = this.backgroundCacheDPI;
const [canvas, context] = makeOffscreenBuffer(dims * dpi, dims * dpi, {
smooth: false,
label: "map-cached-bg",
});
context.scale(dpi, dpi);
for (const key in this.cachedBackgroundCanvases) {
// Background canvas
const dims = globalConfig.tileSize;
const dpi = this.backgroundCacheDPI;
const [canvas, context] = makeOffscreenBuffer(dims * dpi, dims * dpi, {
smooth: false,
label: "map-cached-bg",
});
context.scale(dpi, dpi);
context.fillStyle = THEME.map.background;
context.fillRect(0, 0, dims, dims);
context.fillStyle = THEME.map.background;
context.fillRect(0, 0, dims, dims);
const borderWidth = THEME.map.gridLineWidth;
context.fillStyle = THEME.map.grid;
context.fillRect(0, 0, dims, borderWidth);
context.fillRect(0, borderWidth, borderWidth, dims);
const borderWidth = THEME.map.gridLineWidth;
context.fillStyle = THEME.map["grid" + key[0].toUpperCase() + key.substring(1)] || "red";
context.fillRect(0, 0, dims, borderWidth);
context.fillRect(0, borderWidth, borderWidth, dims);
context.fillRect(dims - borderWidth, borderWidth, borderWidth, dims - 2 * borderWidth);
context.fillRect(borderWidth, dims - borderWidth, dims, borderWidth);
context.fillRect(dims - borderWidth, borderWidth, borderWidth, dims - 2 * borderWidth);
context.fillRect(borderWidth, dims - borderWidth, dims, borderWidth);
this.cachedBackgroundCanvas = canvas;
this.cachedBackgroundContext = context;
this.cachedBackgroundCanvases[key] = canvas;
}
}
/**
@ -225,14 +232,19 @@ export class MapView extends BaseMap {
const dpi = this.backgroundCacheDPI;
parameters.context.scale(1 / dpi, 1 / dpi);
// @ts-ignore
if (this.cachedBackgroundCanvas._contextLost) {
freeCanvas(this.cachedBackgroundCanvas);
let key = "regular";
if (this.root.hud.parts.buildingPlacer.currentMetaBuilding.get()) {
key = "placing";
}
// @ts-ignore`
if (this.cachedBackgroundCanvases[key]._contextLost) {
freeCanvas(this.cachedBackgroundCanvases[key]);
this.internalInitializeCachedBackgroundCanvases();
}
parameters.context.fillStyle = parameters.context.createPattern(
this.cachedBackgroundCanvas,
this.cachedBackgroundCanvases[key],
"repeat"
);
parameters.context.fillRect(

View File

@ -1,249 +1,363 @@
import { enumHubGoalRewards } from "../tutorial_goals";
export const LevelSetVariant = {
NoRestrictions: "NoRestrictions",
LimitedLevel8: "LimitedLevel8",
LimitedLevelBlueprints: "LimitedLevelBlueprints",
};
export const finalGameShape = "RuCw--Cw:----Ru--";
const chinaShapes = G_WEGAME_VERSION || G_CHINA_VERSION;
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
const WEB_DEMO_LEVELS = () => [
// 1
// Circle
{
shape: "CuCuCuCu", // belts t1
required: 10,
reward: enumHubGoalRewards.reward_cutter_and_trash,
},
// 2
// Cutter
{
shape: "----CuCu", //
required: 20,
reward: enumHubGoalRewards.no_reward,
},
// 3
// Rectangle
{
shape: "RuRuRuRu", // miners t1
required: 50,
reward: enumHubGoalRewards.reward_balancer,
},
// 4
{
shape: "RuRu----", // processors t2
required: 30,
reward: enumHubGoalRewards.reward_rotater,
},
// 5
// Rotater
{
shape: "Cu----Cu", // belts t2
required: 75,
reward: enumHubGoalRewards.reward_tunnel,
},
// 6
{
shape: "Cu------", // miners t2
required: 75,
reward: enumHubGoalRewards.reward_painter,
},
// 7
// Painter
{
shape: "CrCrCrCr", // unused
required: 120,
reward: enumHubGoalRewards.reward_rotater_ccw,
},
// 8
{
shape: "RbRb----", // painter t2
required: 170,
reward: enumHubGoalRewards.reward_mixer,
},
// End of demo
{
shape: "RbRb----",
required: 0,
reward: enumHubGoalRewards.reward_demo_end,
},
];
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
const STEAM_DEMO_LEVELS = () => [
// 1
// Circle
{
shape: "CuCuCuCu", // belts t1
required: 35,
reward: enumHubGoalRewards.reward_cutter_and_trash,
},
// 2
// Cutter
{
shape: "----CuCu", //
required: 45,
reward: enumHubGoalRewards.no_reward,
},
// 3
// Rectangle
{
shape: "RuRuRuRu", // miners t1
required: 90,
reward: enumHubGoalRewards.reward_balancer,
},
// 4
{
shape: "RuRu----", // processors t2
required: 70,
reward: enumHubGoalRewards.reward_rotater,
},
// 5
// Rotater
{
shape: "Cu----Cu", // belts t2
required: 160,
reward: enumHubGoalRewards.reward_tunnel,
},
// 6
{
shape: "Cu------", // miners t2
required: 160,
reward: enumHubGoalRewards.reward_painter,
},
// 7
// Painter
{
shape: "CrCrCrCr", // unused
required: 140,
reward: enumHubGoalRewards.reward_rotater_ccw,
},
// 8
{
shape: "RbRb----", // painter t2
required: 225,
reward: enumHubGoalRewards.reward_mixer,
},
// End of demo
{
shape: "RbRb----",
required: 0,
reward: enumHubGoalRewards.reward_demo_end,
},
];
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
const STANDALONE_LEVELS = () => [
// 1
// Circle
{
shape: "CuCuCuCu", // belts t1
required: 30,
reward: enumHubGoalRewards.reward_cutter_and_trash,
},
// 2
// Cutter
{
shape: "----CuCu", //
required: 40,
reward: enumHubGoalRewards.no_reward,
},
// 3
// Rectangle
{
shape: "RuRuRuRu", // miners t1
required: 70,
reward: enumHubGoalRewards.reward_balancer,
},
// 4
{
shape: "RuRu----", // processors t2
required: 70,
reward: enumHubGoalRewards.reward_rotater,
},
// 5
// Rotater
{
shape: "Cu----Cu", // belts t2
required: 170,
reward: enumHubGoalRewards.reward_tunnel,
},
// 6
{
shape: "Cu------", // miners t2
required: 270,
reward: enumHubGoalRewards.reward_painter,
},
// 7
// Painter
{
shape: "CrCrCrCr", // unused
required: 300,
reward: enumHubGoalRewards.reward_rotater_ccw,
},
// 8
{
shape: "RbRb----", // painter t2
required: 480,
reward: enumHubGoalRewards.reward_mixer,
},
// 9
// Mixing (purple)
{
shape: "CpCpCpCp", // belts t3
required: 600,
reward: enumHubGoalRewards.reward_merger,
},
// 10
// STACKER: Star shape + cyan
{
shape: "ScScScSc", // miners t3
required: 800,
reward: enumHubGoalRewards.reward_stacker,
},
// 11
// Chainable miner
{
shape: "CgScScCg", // processors t3
required: 1000,
reward: enumHubGoalRewards.reward_miner_chainable,
},
// 12
// Blueprints
{
shape: "CbCbCbRb:CwCwCwCw",
required: 1000,
reward: enumHubGoalRewards.reward_blueprints,
},
// 13
// Tunnel Tier 2
{
shape: chinaShapes ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw", // painting t3
required: 3800,
reward: enumHubGoalRewards.reward_underground_belt_tier_2,
},
// 14
// Belt reader
{
shape: "--Cg----:--Cr----", // unused
required: 8, // Per second!
reward: enumHubGoalRewards.reward_belt_reader,
throughputOnly: true,
},
// 15
// Storage
{
shape: "SrSrSrSr:CyCyCyCy", // unused
required: 10000,
reward: enumHubGoalRewards.reward_storage,
},
// 16
// Quad Cutter
{
shape: "SrSrSrSr:CyCyCyCy:SwSwSwSw", // belts t4 (two variants)
required: 6000,
reward: enumHubGoalRewards.reward_cutter_quad,
},
// 17
// Double painter
{
shape: chinaShapes ? "CyCyCyCy:CyCyCyCy:RyRyRyRy:RuRuRuRu" : "CbRbRbCb:CwCwCwCw:WbWbWbWb", // miner t4 (two variants)
required: 20000,
reward: enumHubGoalRewards.reward_painter_double,
},
// 18
// Rotater (180deg)
{
shape: "Sg----Sg:CgCgCgCg:--CyCy--", // unused
required: 20000,
reward: enumHubGoalRewards.reward_rotater_180,
},
// 19
// Compact splitter
{
shape: "CpRpCp--:SwSwSwSw",
required: 25000,
reward: enumHubGoalRewards.reward_splitter,
},
// 20
// WIRES
{
shape: finalGameShape,
required: 25000,
reward: enumHubGoalRewards.reward_wires_painter_and_levers,
},
// 21
// Filter
{
shape: "CrCwCrCw:CwCrCwCr:CrCwCrCw:CwCrCwCr",
required: 25000,
reward: enumHubGoalRewards.reward_filter,
},
// 22
// Constant signal
{
shape: chinaShapes ? "RrSySrSy:RyCrCwCr:CyCyRyCy" : "Cg----Cr:Cw----Cw:Sy------:Cy----Cy",
required: 25000,
reward: enumHubGoalRewards.reward_constant_signal,
},
// 23
// Display
{
shape: chinaShapes ? "CrCrCrCr:CwCwCwCw:WwWwWwWw:CrCrCrCr" : "CcSyCcSy:SyCcSyCc:CcSyCcSy",
required: 25000,
reward: enumHubGoalRewards.reward_display,
},
// 24 Logic gates
{
shape: chinaShapes ? "Su----Su:RwRwRwRw:Cu----Cu:CwCwCwCw" : "CcRcCcRc:RwCwRwCw:Sr--Sw--:CyCyCyCy",
required: 25000,
reward: enumHubGoalRewards.reward_logic_gates,
},
// 25 Virtual Processing
{
shape: "Rg--Rg--:CwRwCwRw:--Rg--Rg",
required: 25000,
reward: enumHubGoalRewards.reward_virtual_processing,
},
// 26 Freeplay
{
shape: "CbCuCbCu:Sr------:--CrSrCr:CwCwCwCw",
required: 50000,
reward: enumHubGoalRewards.reward_freeplay,
},
];
/**
* Generates the level definitions
* @param {keyof typeof LevelSetVariant} variant
*/
export function generateLevelsForVariant(variant) {
const levelDefinitions = [
// 1
// Circle
{
shape: "CuCuCuCu", // belts t1
required: 30,
reward: enumHubGoalRewards.reward_cutter_and_trash,
},
// 2
// Cutter
{
shape: "----CuCu", //
required: 40,
reward: enumHubGoalRewards.no_reward,
},
// 3
// Rectangle
{
shape: "RuRuRuRu", // miners t1
required: 70,
reward: enumHubGoalRewards.reward_balancer,
},
// 4
{
shape: "RuRu----", // processors t2
required: 70,
reward: enumHubGoalRewards.reward_rotater,
},
// 5
// Rotater
{
shape: "Cu----Cu", // belts t2
required: 170,
reward: enumHubGoalRewards.reward_tunnel,
},
// 6
{
shape: "Cu------", // miners t2
required: 270,
reward: enumHubGoalRewards.reward_painter,
},
// 7
// Painter
{
shape: "CrCrCrCr", // unused
required: 300,
reward: enumHubGoalRewards.reward_rotater_ccw,
},
];
if (variant === LevelSetVariant.LimitedLevel8) {
// Variant: End of Demo (level 8)
levelDefinitions.push({
shape: "CrCrCrCr",
required: 0,
reward: enumHubGoalRewards.reward_demo_end,
});
return levelDefinitions;
export function generateLevelsForVariant() {
if (G_IS_STEAM_DEMO) {
return STEAM_DEMO_LEVELS();
} else if (G_IS_STANDALONE) {
return STANDALONE_LEVELS();
}
levelDefinitions.push(
// 8
{
shape: "RbRb----", // painter t2
required: 480,
reward: enumHubGoalRewards.reward_mixer,
},
// 9
// Mixing (purple)
{
shape: "CpCpCpCp", // belts t3
required: 600,
reward: enumHubGoalRewards.reward_merger,
},
// 10
// STACKER: Star shape + cyan
{
shape: "ScScScSc", // miners t3
required: 800,
reward: enumHubGoalRewards.reward_stacker,
},
// 11
// Chainable miner
{
shape: "CgScScCg", // processors t3
required: 1000,
reward: enumHubGoalRewards.reward_miner_chainable,
},
// 12
// Blueprints
{
shape: "CbCbCbRb:CwCwCwCw",
required: 1000,
reward: enumHubGoalRewards.reward_blueprints,
}
);
if (variant === LevelSetVariant.LimitedLevelBlueprints) {
// Variant: End of Demo (before blueprints)
levelDefinitions.push({
shape: "CbCbCbRb:CwCwCwCw",
required: 0,
reward: enumHubGoalRewards.reward_demo_end,
});
return levelDefinitions;
}
levelDefinitions.push(
// 13
// Tunnel Tier 2
{
shape: chinaShapes ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw", // painting t3
required: 3800,
reward: enumHubGoalRewards.reward_underground_belt_tier_2,
},
// 14
// Belt reader
{
shape: "--Cg----:--Cr----", // unused
required: 8, // Per second!
reward: enumHubGoalRewards.reward_belt_reader,
throughputOnly: true,
},
// 15
// Storage
{
shape: "SrSrSrSr:CyCyCyCy", // unused
required: 10000,
reward: enumHubGoalRewards.reward_storage,
},
// 16
// Quad Cutter
{
shape: "SrSrSrSr:CyCyCyCy:SwSwSwSw", // belts t4 (two variants)
required: 6000,
reward: enumHubGoalRewards.reward_cutter_quad,
},
// 17
// Double painter
{
shape: chinaShapes ? "CyCyCyCy:CyCyCyCy:RyRyRyRy:RuRuRuRu" : "CbRbRbCb:CwCwCwCw:WbWbWbWb", // miner t4 (two variants)
required: 20000,
reward: enumHubGoalRewards.reward_painter_double,
},
// 18
// Rotater (180deg)
{
shape: "Sg----Sg:CgCgCgCg:--CyCy--", // unused
required: 20000,
reward: enumHubGoalRewards.reward_rotater_180,
},
// 19
// Compact splitter
{
shape: "CpRpCp--:SwSwSwSw",
required: 25000,
reward: enumHubGoalRewards.reward_splitter,
},
// 20
// WIRES
{
shape: finalGameShape,
required: 25000,
reward: enumHubGoalRewards.reward_wires_painter_and_levers,
},
// 21
// Filter
{
shape: "CrCwCrCw:CwCrCwCr:CrCwCrCw:CwCrCwCr",
required: 25000,
reward: enumHubGoalRewards.reward_filter,
},
// 22
// Constant signal
{
shape: chinaShapes ? "RrSySrSy:RyCrCwCr:CyCyRyCy" : "Cg----Cr:Cw----Cw:Sy------:Cy----Cy",
required: 25000,
reward: enumHubGoalRewards.reward_constant_signal,
},
// 23
// Display
{
shape: chinaShapes ? "CrCrCrCr:CwCwCwCw:WwWwWwWw:CrCrCrCr" : "CcSyCcSy:SyCcSyCc:CcSyCcSy",
required: 25000,
reward: enumHubGoalRewards.reward_display,
},
// 24 Logic gates
{
shape: chinaShapes
? "Su----Su:RwRwRwRw:Cu----Cu:CwCwCwCw"
: "CcRcCcRc:RwCwRwCw:Sr--Sw--:CyCyCyCy",
required: 25000,
reward: enumHubGoalRewards.reward_logic_gates,
},
// 25 Virtual Processing
{
shape: "Rg--Rg--:CwRwCwRw:--Rg--Rg",
required: 25000,
reward: enumHubGoalRewards.reward_virtual_processing,
},
// 26 Freeplay
{
shape: "CbCuCbCu:Sr------:--CrSrCr:CwCwCwCw",
required: 50000,
reward: enumHubGoalRewards.reward_freeplay,
}
);
return levelDefinitions;
return WEB_DEMO_LEVELS();
}

View File

@ -293,21 +293,17 @@ function generateUpgrades(limitedVersion = false, difficulty = 1) {
return upgrades;
}
const levelDefinitionsCache = {};
let levelDefinitionsCache = null;
/**
* Generates the level definitions
* @param {keyof typeof LevelSetVariant} variant
*/
export function generateLevelDefinitions(variant, difficulty = 1) {
if (levelDefinitionsCache[variant]) {
return levelDefinitionsCache[variant];
export function generateLevelDefinitions() {
if (levelDefinitionsCache) {
return levelDefinitionsCache;
}
const levelDefinitions = generateLevelsForVariant(variant);
const levelDefinitions = generateLevelsForVariant();
MOD_SIGNALS.modifyLevelDefinitions.dispatch(levelDefinitions);
if (G_IS_DEV) {
levelDefinitions.forEach(({ shape }) => {
try {
@ -317,13 +313,7 @@ export function generateLevelDefinitions(variant, difficulty = 1) {
}
});
}
levelDefinitions.forEach(definition => {
definition.required = Math.round(definition.required * difficulty);
});
levelDefinitionsCache[variant] = levelDefinitions;
levelDefinitionsCache = levelDefinitions;
return levelDefinitions;
}
@ -412,14 +402,7 @@ export class RegularGameMode extends GameMode {
* @returns {Array<LevelDefinition>}
*/
getLevelDefinitions() {
if (this.root.app.restrictionMgr.isLimitedVersion()) {
return generateLevelDefinitions(
this.root.app.gameAnalytics.abtVariant === "0" ? "LimitedLevel8" : "LimitedLevelBlueprints",
this.difficultyMultiplicator
);
} else {
return generateLevelDefinitions("NoRestrictions", this.difficultyMultiplicator);
}
return generateLevelDefinitions();
}
/**

View File

@ -1,7 +1,9 @@
{
"map": {
"background": "#3e3f47",
"grid": "rgba(255, 255, 255, 0.02)",
"gridRegular": "rgba(255, 255, 255, 0.02)",
"gridPlacing": "rgba(255, 255, 255, 0.06)",
"gridLineWidth": 0.5,
"selectionOverlay": "rgba(74, 163, 223, 0.7)",

View File

@ -1,8 +1,11 @@
{
"map": {
"background": "#fff",
"grid": "#fafafa",
"gridLineWidth": 1,
"background": "#eceef6",
"gridRegular": "#e3e7f4",
"gridPlacing": "#dadff0",
"gridLineWidth": 0.5,
"selectionOverlay": "rgba(74, 163, 223, 0.7)",
"selectionOutline": "rgba(74, 163, 223, 0.5)",
@ -29,9 +32,9 @@
"resources": {
"shape": "#eaebec",
"red": "#ffbfc1",
"green": "#cbffc4",
"blue": "#bfdaff"
"red": "#f3bcb6",
"green": "#ccf7a7",
"blue": "#b2e0fa"
},
"chunkOverview": {

View File

@ -28,8 +28,8 @@ const analyticsUrl = G_IS_DEV ? "http://localhost:8001" : "https://analytics.sha
// Be sure to increment the ID whenever it changes
const analyticsLocalFile = G_IS_STEAM_DEMO ? "shapez_token_steamdemo.bin" : "shapez_token_123.bin";
const CURRENT_ABT = "abt_unl";
const CURRENT_ABT_COUNT = 2;
const CURRENT_ABT = "abt_bsln";
const CURRENT_ABT_COUNT = 1;
export class ShapezGameAnalytics extends GameAnalyticsInterface {
constructor(app) {

View File

@ -26,6 +26,7 @@ export const SOUNDS = {
placeBuilding: "place_building",
placeBelt: "place_belt",
copy: "copy",
unlockUpgrade: "unlock_upgrade",
};
export const MUSIC = {
@ -150,6 +151,9 @@ export class SoundInterface {
* @returns {Promise<void>}
*/
loadSound(key) {
if (!key) {
return Promise.resolve();
}
if (this.sounds[key]) {
return this.sounds[key].load();
} else if (this.music[key]) {
@ -271,7 +275,7 @@ export class SoundInterface {
*/
playThemeMusic(key) {
const music = this.music[key];
if (key !== null && !music) {
if (key && !music) {
logger.warn("Music", key, "not found");
}
if (this.currentMusic !== music) {

View File

@ -513,12 +513,6 @@ export class ApplicationSettings extends ReadWriteProxy {
const settings = data.settings;
// MODS
if (!THEMES[settings.theme] || !this.app.restrictionMgr.getHasExtendedSettings()) {
console.warn("Resetting theme because its no longer available: " + settings.theme);
settings.theme = "light";
}
for (let i = 0; i < this.settingHandles.length; ++i) {
const setting = this.settingHandles[i];
const storedValue = settings[setting.id];
@ -701,7 +695,7 @@ export class ApplicationSettings extends ReadWriteProxy {
// MODS
if (!THEMES[data.settings.theme] || !this.app.restrictionMgr.getHasExtendedSettings()) {
console.warn("Resetting theme because its no longer available: " + data.settings.theme);
console.log("Resetting theme because its no longer available: " + data.settings.theme);
data.settings.theme = "light";
}

View File

@ -431,7 +431,6 @@ ingame:
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
standaloneAdvantages:
title: Get the full version!
no_thanks: No, thanks!
points:
levels:
@ -458,7 +457,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -441,7 +441,6 @@ ingame:
desc: Premeu aquí per veure les avantatges d'Steam!
get_on_steam: Comprar a Steam
standaloneAdvantages:
title: Aconsegueix la versió completa!
no_thanks: No, gràcies!
points:
levels:
@ -468,7 +467,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -65,8 +65,8 @@ demoBanners:
playtimeDisclaimer: Plná verze obsahuje více než <strong>20 hodin obsahu</strong>.
playerCount: <playerCount> hráči jako vy právě hrají shapez ve službě Steam
untilEndOfDemo: do konce ukázky
playtimeDisclaimerDownload: Ve hře můžete pokračovat v plné verzi!
Klikněte <strong>sem</strong> a stáhněte si uloženou hru.
playtimeDisclaimerDownload: Ve hře můžete pokračovat v plné verzi! Klikněte
<strong>sem</strong> a stáhněte si uloženou hru.
mainMenu:
play: Hrát
continue: Pokračovat
@ -432,7 +432,6 @@ ingame:
desc: Kliknutím sem zobrazíte výhody Steam verze!
get_on_steam: Získejte na steamu
standaloneAdvantages:
title: Získejte plnou verzi!
no_thanks: Ne, děkuji!
points:
levels:
@ -459,7 +458,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Čas demoverze vypršel
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zóna
zoneWidth: Šířka

View File

@ -433,7 +433,6 @@ ingame:
desc: Click here to see the Steam version advantages!
get_on_steam: Få på steam
standaloneAdvantages:
title: Få den fulde version!
no_thanks: Nej tak!
points:
levels:
@ -460,7 +459,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo tid er udløbet
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -69,10 +69,8 @@ demoBanners:
playtimeDisclaimer: Die Vollversion bietet mehr als <strong>20 Stunden Spielspaß</strong>.
playerCount: <playerCount> Spieler wie du spielen shapez gerade auf Steam
untilEndOfDemo: Bis zum Ende der Demo
playtimeDisclaimerDownload: >-
Du kannst deinen Speicherstand in der Vollversion fortsetzen!
Klicke <strong>hier</strong> um ihn herunterzuladen.
playtimeDisclaimerDownload: Du kannst deinen Speicherstand in der Vollversion
fortsetzen! Klicke <strong>hier</strong> um ihn herunterzuladen.
mainMenu:
play: Spielen
continue: Fortsetzen
@ -508,34 +506,35 @@ ingame:
desc: Klicke hier, um die Vorteile der Vollversion zu sehen!
get_on_steam: Zur Vollversion
standaloneAdvantages:
title: "Vorteile der Vollversion:"
no_thanks: Nein, danke!
points:
levels:
title: 12 Neue Level
desc: Für insgesamt 26 Level!
buildings:
title: 22 Neue Gebäude
desc: Automatisiere deine Fabrik!
achievements:
title: Errungenschaften
desc: Hol sie dir alle!
markers:
title: ∞ Markierungen
desc: Verliere nie den Überblick!
title: 19 Neue Level
desc: Über 20 Stunden weitere Inhalte!
wires:
title: Wires-Ebene
desc: Eine ganz neue Dimension!
darkmode:
title: Dark-Mode
desc: Gönn deinen Augen eine Auszeit!
buildings:
title: 22 Neue Gebäude
desc: Automatisiere deine Fabrik!
achievements:
title: 45 Errungenschaften
desc: Hol sie dir alle!
markers:
title: ∞ Markierungen
desc: Verliere nie den Überblick!
support:
title: Unterstütze Mich
desc: Ich entwickle das Spiel in meiner Freizeit!
mods:
title: Mod-Support!
desc: Über 80 Mods verfügbar!
title_expired: Demo Zeit abgelaufen
titleV2: "Hol dir jetzt die Vollversion auf Steam für:"
titleExpiredV2: Demo abgeschlossen!
titleEnjoyingDemo: Gefällt dir die Demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Breite

View File

@ -447,7 +447,6 @@ ingame:
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
standaloneAdvantages:
title: Get the full version!
no_thanks: No, thanks!
points:
levels:
@ -474,7 +473,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -107,7 +107,7 @@ demoBanners:
<li>... and a lot more!</li>
</ul>
playtimeDisclaimer: >-
The full version contains more than <strong>20 hours of content</strong>.
The full version contains more than <strong>20 hours of additional content</strong>!
playtimeDisclaimerDownload: >-
You can continue your savegame in the full version! Click <strong>here</strong> to download your savegame.
@ -654,22 +654,32 @@ ingame:
get_on_steam: Get on Steam
standaloneAdvantages:
title: >-
Advantages of the full version:
title_expired: Demo Time Expired
titleV2: >-
Get the full version now on Steam to unlock:
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoying the demo?
no_thanks: No, thanks!
points:
levels:
title: 19 New Levels
desc: For a total of 26 levels!
desc: >-
Over 20 hours of additional content!
wires:
title: Wires
desc: An entirely new dimension!
darkmode:
title: Dark Mode
desc: Stop hurting your eyes!
buildings:
title: 22 New Buildings
desc: Fully automate your factory!
achievements:
title: Achievements
title: 45 Achievements
desc: Hunt them all!
mods:
@ -680,14 +690,6 @@ ingame:
title: ∞ Markers
desc: Never get lost in your factory!
wires:
title: Wires
desc: An entirely new dimension!
darkmode:
title: Dark Mode
desc: Stop hurting your eyes!
support:
title: Support me
desc: I develop shapez in my spare time!

View File

@ -72,8 +72,9 @@ demoBanners:
playerCount: <playerCount> jugadores como tú están jugando actualmente a shapez
en Steam
untilEndOfDemo: Hasta el final de la demo
playtimeDisclaimerDownload: ¡Puedes continuar con tu partida guardada en la versión completa!
Haz clic <strong>aquí</strong> para descargar tu partida guardada.
playtimeDisclaimerDownload: ¡Puedes continuar con tu partida guardada en la
versión completa! Haz clic <strong>aquí</strong> para descargar tu
partida guardada.
mainMenu:
play: Jugar
continue: Continuar
@ -448,7 +449,6 @@ ingame:
desc: Presiona aquí para ver que tiene la versión de Steam!
get_on_steam: Consiguelo en Steam
standaloneAdvantages:
title: ¡Consigue la versión completa!
no_thanks: ¡No grácias!
points:
levels:
@ -475,7 +475,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: El tiempo de demostración ha expirado
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Área
zoneWidth: Anchura

View File

@ -70,8 +70,8 @@ demoBanners:
playerCount: <playerCount> kaltaisesi pelaajat pelaavat parhaillaan shapezia
Steamissa.
untilEndOfDemo: Demon loppuun asti
playtimeDisclaimerDownload: Voit jatkaa tallentamistasi täysversiossa!
Lataa tallennettava peli napsauttamalla <strong>tätä</strong>.
playtimeDisclaimerDownload: Voit jatkaa tallentamistasi täysversiossa! Lataa
tallennettava peli napsauttamalla <strong>tätä</strong>.
mainMenu:
play: Pelaa
continue: Jatka
@ -434,7 +434,6 @@ ingame:
desc: Napsauta tästä nähdäksesi Steam version edut!
get_on_steam: Hanki Steamista
standaloneAdvantages:
title: Hanki täysversio!
no_thanks: Ei kiitos!
points:
levels:
@ -461,7 +460,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demon aika päättynyt
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -67,8 +67,9 @@ demoBanners:
playtimeDisclaimer: La version complète offre plus de <strong>20 heures de contenu</strong>.
playerCount: <playerCount> joueurs comme vous jouent actuellement à shapez sur Steam
untilEndOfDemo: Jusqu'à la fin de la démo
playtimeDisclaimerDownload: Vous pouvez continuer votre sauvegarde dans la version complète !
Cliquez <strong>ici</strong> pour télécharger votre sauvegarde.
playtimeDisclaimerDownload: Vous pouvez continuer votre sauvegarde dans la
version complète ! Cliquez <strong>ici</strong> pour télécharger votre
sauvegarde.
mainMenu:
play: Jouer
continue: Continuer
@ -446,7 +447,6 @@ ingame:
desc: Cliquez ici pour voir les avantages de la version Steam!
get_on_steam: Acheter sur Steam
standaloneAdvantages:
title: Obtenir la version complète
no_thanks: Non merci!
points:
levels:
@ -473,7 +473,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Temps de démo écoulé
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Largeur

View File

@ -419,7 +419,6 @@ ingame:
desc: לחץ פה בשביל לראות את היתרונות של הגרסה להורדה!
get_on_steam: Steamהשג ב
standaloneAdvantages:
title: "!השג את הגרסה המלאה"
no_thanks: "!לא, תודה"
points:
levels:
@ -446,7 +445,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -433,7 +433,6 @@ ingame:
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
standaloneAdvantages:
title: Get the full version!
no_thanks: No, thanks!
points:
levels:
@ -460,7 +459,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -438,7 +438,6 @@ ingame:
desc: Kattints ide, hogy megnézd az Önálló Verzió előnyeit!
get_on_steam: Megvásárlás Steamen
standaloneAdvantages:
title: Vásárold meg a Teljes Verziót!
no_thanks: Nem, köszönöm!
points:
levels:
@ -465,7 +464,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo idő lejárt
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zóna
zoneWidth: Szélesség

View File

@ -442,7 +442,6 @@ ingame:
desc: Klik disini untuk melihat keunggulan pada versi Steam!
get_on_steam: Dapatkan di Steam
standaloneAdvantages:
title: Dapatkan versi lengkap!
no_thanks: Tidak, terima kasih!
points:
levels:
@ -469,7 +468,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -70,8 +70,9 @@ demoBanners:
playerCount: <playerCount> giocatori come te stanno attualmente giocando a
shapez su Steam
untilEndOfDemo: Fino alla fine della demo
playtimeDisclaimerDownload: Puoi continuare il tuo salvataggio nella versione completa!
Fai clic <strong>qui</strong> per scaricare il tuo salvataggio.
playtimeDisclaimerDownload: Puoi continuare il tuo salvataggio nella versione
completa! Fai clic <strong>qui</strong> per scaricare il tuo
salvataggio.
mainMenu:
play: Gioca
changelog: Registro modifiche
@ -449,7 +450,6 @@ ingame:
desc: Clicca qui per vedere i vantaggi della versione Completa!
get_on_steam: Ottieni su Steam
standaloneAdvantages:
title: Ottieni la versione completa!
no_thanks: No, grazie!
points:
levels:
@ -476,7 +476,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Tempo di dimostrazione scaduto
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zona
zoneWidth: Larghezza

View File

@ -375,11 +375,9 @@ ingame:
切断機はそれの向きに関わらず、<strong>縦の線</strong>で切断します。"
2_2_place_trash: 切断機は<strong>詰まる</strong>場合があります!<br><br>
<strong>ゴミ箱</strong>を利用して、不必要な部品を廃棄できます。
2_3_more_cutters:
"いいですね! <strong>更に2つ以上の切断機</strong>を設置して処理をスピードアップさせましょう!<br>\
2_3_more_cutters: "いいですね! <strong>更に2つ以上の切断機</strong>を設置して処理をスピードアップさせましょう!<br>\
<br> 追記: <strong>0から9 のホットキー</strong>を使用すると素早く部品にアクセスできます。"
3_1_rectangles:
"それでは四角形を抽出しましょう! <strong>4つの抽出機を作成</strong>してそれをハブに接続します。<br><\
3_1_rectangles: "それでは四角形を抽出しましょう! <strong>4つの抽出機を作成</strong>してそれをハブに接続します。<br><\
br> 追記: <strong>SHIFT</strong>を押しながらベルトを引くと ベルトプランナーが有効になります!"
21_1_place_quad_painter: <strong>四色着色機</strong>を設置して、
<strong>円</strong>、<strong>白</strong>そして
@ -399,7 +397,6 @@ ingame:
desc: Steamバージョンの特典を確認するには、ここをクリックしてください
get_on_steam: steamで購入
standaloneAdvantages:
title: フルバージョンを購入
no_thanks: いいえ、結構です
points:
levels:
@ -426,7 +423,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: デモ時間終了
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width
@ -663,16 +662,14 @@ buildings:
storyRewards:
reward_cutter_and_trash:
title: 形の切断
desc:
<strong>切断機</strong>が利用可能になりました。これは入力された形を、<strong>向きを考慮せず上下の直線で</strong>半分に切断します! <br><br>利用しない側の出力に注意しましょう、破棄しなければ<strong>詰まって停止してしまいます。</strong>
desc: <strong>切断機</strong>が利用可能になりました。これは入力された形を、<strong>向きを考慮せず上下の直線で</strong>半分に切断します! <br><br>利用しない側の出力に注意しましょう、破棄しなければ<strong>詰まって停止してしまいます。</strong>
- このために<strong>ゴミ箱</strong>も用意しました。入力アイテムをすべて破棄できます!
reward_rotater:
title: 回転
desc: <strong>回転機</strong>が利用可能になりました 形を時計回り方向に90度回転させます。
reward_painter:
title: 着色
desc:
"<strong>着色機</strong>が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\
desc: "<strong>着色機</strong>が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\
br><br>追伸: もし色覚特性をお持ちでしたら、 設定に<strong>色覚特性モード</strong>があります!"
reward_mixer:
title: 混色
@ -691,8 +688,7 @@ storyRewards:
desc: <strong>回転機</strong>のバリエーションが利用可能になりました。反時計回りの回転ができるようになります! 回転機を選択し、<strong>'T'キーを押すことで方向の切り替えができます。</strong>
reward_miner_chainable:
title: 連鎖抽出機
desc:
"<strong>連鎖抽出機</strong>が利用可能になりました! 他の抽出機に<strong>出力を渡す</strong>ことができるので、
desc: "<strong>連鎖抽出機</strong>が利用可能になりました! 他の抽出機に<strong>出力を渡す</strong>ことができるので、
資源の抽出がより効率的になります!<br><br> 補足: ツールバーの 旧い抽出機が置き換えられました!"
reward_underground_belt_tier_2:
title: トンネル レベルII
@ -717,8 +713,7 @@ storyRewards:
通常の着色機と同様に機能しますが、ひとつの色の消費で<strong>一度に2つの形</strong>を着色処理できます!
reward_storage:
title: ストレージ
desc:
<strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br>
desc: <strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br>
左側の出力を優先するため、<strong>オーバーフローゲート</strong>としても使用できます!
reward_blueprints:
title: ブループリント
@ -737,8 +732,7 @@ storyRewards:
設定で<strong>ヒントを有効にする</strong>と、 ワイヤのチュートリアルが有効になります。"
reward_filter:
title: アイテムフィルタ
desc:
<strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
desc: <strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
また、真偽値(0/1)信号を入力すれば全てのアイテムの通過・非通過を制御できます。
reward_display:
title: ディスプレイ
@ -747,13 +741,11 @@ storyRewards:
ベルトリーダーとストレージが最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに表示してみてください!"
reward_constant_signal:
title: 定数信号
desc:
<strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br>
desc: <strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br>
発信できる信号は<strong>形状</strong>、<strong>色</strong>、<strong>真偽値</strong>(1か0)です。
reward_logic_gates:
title: 論理ゲート
desc:
<strong>論理ゲート</strong>が利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!<br><br>
desc: <strong>論理ゲート</strong>が利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!<br><br>
これでAND, OR, XOR, NOTを計算できます。<br><br>
ボーナスとして<strong>トランジスタ</strong>も追加しました!
reward_virtual_processing:
@ -765,8 +757,7 @@ storyRewards:
- ワイヤでイカしたものを作る。<br><br> - 今までのように工場を建設する。<br><br> いずれにしても、楽しんでください!
no_reward:
title: 次のレベル
desc:
"このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 -
desc: "このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 -
生産された形は<strong>すべて</strong>、後で<strong>アップグレードの解除</strong>に必要になります!"
no_reward_freeplay:
title: 次のレベル
@ -892,8 +883,7 @@ settings:
description: 配置用のグリッドを無効にして、パフォーマンスを向上させます。 これにより、ゲームの見た目もすっきりします。
clearCursorOnDeleteWhilePlacing:
title: 右クリックで配置をキャンセル
description:
デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。
description: デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。
無効にすると、建物の設置中に右クリックで建物を削除できます。
lowQualityTextures:
title: 低品質のテクスチャ(視認性低下)

View File

@ -63,8 +63,7 @@ demoBanners:
playtimeDisclaimer: 정식 버전에는 <strong>20시간 이상의 콘텐츠</strong>가 포함되어 있습니다.
playerCount: <playerCount>명의 플레이어가 현재 Steam에서 shapez를 플레이하고 있습니다.
untilEndOfDemo: 데모가 끝날 때까지
playtimeDisclaimerDownload: 정식 버전에서 저장 게임을 계속할 수 있습니다!
<strong>여기</strong>를 클릭하여 저장 게임을 다운로드하세요.
playtimeDisclaimerDownload: 정식 버전에서 저장 게임을 계속할 수 있습니다! <strong>여기</strong>를 클릭하여 저장 게임을 다운로드하세요.
mainMenu:
play: 시작
changelog: 버전 기록
@ -72,8 +71,7 @@ mainMenu:
openSourceHint: 이 게임은 오픈 소스입니다!
discordLink: 공식 디스코드 서버
helpTranslate: 번역을 도와주세요!
browserWarning:
이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나
browserWarning: 이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나
Google Chrome 브라우저를 다운로드하세요.
savegameLevel: 레벨 <x>
savegameLevelUnknown: 미확인 레벨
@ -145,8 +143,7 @@ dialogs:
desc: 지난번 플레이 이후 변경 사항은 다음과 같습니다.
upgradesIntroduction:
title: 업그레이드 하기
desc:
<strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다.
desc: <strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다.
업그레이드 버튼은 화면의 오른쪽 위에 있습니다.
massDeleteConfirm:
title: 삭제 확인
@ -159,8 +156,7 @@ dialogs:
desc: 12 레벨부터 청사진 기능이 해금됩니다!
keybindingsIntroduction:
title: 유용한 조작법
desc:
"이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은
desc: "이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은
<strong>조작법 설정</strong>을 참고해주세요!<br><br> <code
class='keybinding'>CTRL</code> + 드래그: 영역을 선택합니다.<br> <code
class='keybinding'>SHIFT</code>: 누르는 동안 같은 건물을 여러개 배치할 수 있습니다.<br>
@ -174,8 +170,7 @@ dialogs:
desc: 체험판 버전에서는 마커를 2개 까지만 배치할 수 있습니다. 정식 버전을 구입하면 마커를 무제한으로 배치할 수 있습니다!
exportScreenshotWarning:
title: 스크린샷 내보내기
desc:
당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우
desc: 당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우
게임이 중단될 수 있습니다!
massCutInsufficientConfirm:
title: 자르기 확인
@ -201,8 +196,7 @@ dialogs:
submitPuzzle:
title: 퍼즐 보내기
descName: "퍼즐에 이름을 지어 주세요:"
descIcon:
"퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형
descIcon: "퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형
중 하나를 선택하세요):"
placeholderName: 퍼즐 제목
puzzleResizeBadBuildings:
@ -228,8 +222,7 @@ dialogs:
desc: 오프라인 모드임으로 퍼즐을 저장하거나 업로드할 수 없습니다. 그래도 계속하시겠습니까?
puzzlePlayRegularRecommendation:
title: 권장 사항
desc:
퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을
desc: 퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을
<strong>강력히</strong> 권장드립니다. 그래도 계속하시겠습니까?
puzzleShare:
title: 짧은 키 복사됨
@ -347,31 +340,25 @@ ingame:
waypoints:
waypoints: 마커
hub: 허브
description:
마커를 좌클릭하여 그곳으로 이동하고, 우클릭으로 삭제할 수 있습니다.<br><br>마커를 배치하기 위해
description: 마커를 좌클릭하여 그곳으로 이동하고, 우클릭으로 삭제할 수 있습니다.<br><br>마커를 배치하기 위해
<keybinding> 키로 지금 있는 위치에, 또는 <strong>우클릭</strong>하여 원하는 위치에 배치할 수
있습니다.
creationSuccessNotification: 마커가 성공적으로 생성되었습니다.
interactiveTutorial:
title: 튜토리얼
hints:
1_1_extractor:
<strong>원형 도형</strong>을 추출하기 위해 그 위에 <strong>추출기</strong>를 선택한 뒤
1_1_extractor: <strong>원형 도형</strong>을 추출하기 위해 그 위에 <strong>추출기</strong>를 선택한 뒤
배치하여 추출하세요!
1_2_conveyor:
"이제 <strong>컨베이어 벨트</strong>를 추출기와 허브를 서로 연결하세요!<br><br> 팁: 벨트를
1_2_conveyor: "이제 <strong>컨베이어 벨트</strong>를 추출기와 허브를 서로 연결하세요!<br><br> 팁: 벨트를
마우스로 <strong>클릭한 뒤 드래그</strong>하세요!"
1_3_expand:
"이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리
1_3_expand: "이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리
달성하세요.<br><br> 팁: <strong>SHIFT</strong> 키를 누른 상태에서는 빠르게 배치할 수
있고, <strong>R</strong> 키를 눌러 회전할 수 있습니다."
2_1_place_cutter:
"이제 <strong>절단기</strong>를 배치해 원형 도형을 반으로 잘라보세요!<br><br> 참고:
2_1_place_cutter: "이제 <strong>절단기</strong>를 배치해 원형 도형을 반으로 잘라보세요!<br><br> 참고:
절단기는 놓는 방향에 상관없이 항상 <strong>위에서 아래로만</strong> 자릅니다."
2_2_place_trash: 절단기가 <strong>막히거나 멈출 수 있습니다</strong>!<br><br>
<strong>휴지통</strong>을 사용하여 현재 필요없는 쓰레기 도형 (!)을 제거하세요.
2_3_more_cutters:
"잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong> 이상
2_3_more_cutters: "잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong> 이상
배치해보세요!<br><br> 추신: <strong>상단 숫자 단축키 (0~9)</strong>를 사용하여 건물을
빠르게 선택할 수 있습니다!"
3_1_rectangles: "이제 사각형 도형을 추출해 볼까요! <strong>추출기 네 개를 배치</strong>하고 허브와
@ -379,12 +366,10 @@ ingame:
누른 채 드래그하세요!"
21_1_place_quad_painter: <strong>4단 색칠기</strong>를 배치하여 <strong>흰색</strong>과
<strong>빨간색</strong>이 칠해진 <strong>원형 도형</strong>을 만들어보세요!
21_2_switch_to_wires:
<strong>E 키</strong>를 눌러 전선 레이어 로 전환하세요!<br><br> 그 후 색칠기의
21_2_switch_to_wires: <strong>E 키</strong>를 눌러 전선 레이어 로 전환하세요!<br><br> 그 후 색칠기의
<strong>네 입력 부분</strong>을 모두 케이블로 연결하세요!
21_3_place_button: 훌륭해요! 이제 <strong>스위치</strong>를 배치하고 전선으로 연결하세요!
21_4_press_button:
"스위치를 눌러서 색칠기에 <strong>참 신호를 보내</strong> 활성화해보세요.<br><br> 추신:
21_4_press_button: "스위치를 눌러서 색칠기에 <strong>참 신호를 보내</strong> 활성화해보세요.<br><br> 추신:
모든 입력을 연결할 필요는 없습니다! 두개만 연결해 보세요."
colors:
red: 빨간색
@ -409,7 +394,6 @@ ingame:
desc: 정식 버전의 장점을 보려면 여기를 클릭하세요!
get_on_steam: Steam으로 가기
standaloneAdvantages:
title: 정식 버전을 구매하세요!
no_thanks: 괜찮아요!
points:
levels:
@ -436,7 +420,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: 구역
zoneWidth: 너비
@ -512,13 +498,11 @@ buildings:
cutter:
default:
name: 절단기
description:
도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우
description: 도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우
절단기가 막혀 멈추게 됩니다!</strong>
quad:
name: 4단 절단기
description:
도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀
description: 도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀
멈추게 됩니다!</strong>
rotater:
default:
@ -533,8 +517,7 @@ buildings:
stacker:
default:
name: 결합기
description:
도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽
description: 도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽
도형 위에 쌓이게 됩니다.
mixer:
default:
@ -549,8 +532,7 @@ buildings:
description: 색소를 이용해 도형을 색칠합니다. 위쪽에서 받는 색소로 왼쪽에서 받는 도형 전체를 색칠합니다.
quad:
name: 4단 색칠기
description:
도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가
description: 도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가
있는 슬롯만 칠해집니다!
mirrored:
name: 색칠기
@ -597,8 +579,7 @@ buildings:
lever:
default:
name: 스위치
description:
전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데
description: 전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데
사용될 수 있습니다.
logic_gate:
default:
@ -609,8 +590,7 @@ buildings:
description: 입력이 거짓일 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을 의미합니다).
xor:
name: XOR 회로
description:
입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을
description: 입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을
의미합니다).
or:
name: OR 회로
@ -677,8 +657,7 @@ buildings:
storyRewards:
reward_cutter_and_trash:
title: 절단기
desc:
<strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라
desc: <strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라
<strong>반으로 나눕니다</strong>!<br><br> 쓰지 않는 도형은 쓰레기로 처리하세요, 그렇지 않으면
<strong>작동을 멈출 것입니다</strong>! 이러한 목적을 위해 <strong>휴지통</strong>도 함께
지급되었습니다. 휴지통에 들어간 것은 모두 파괴됩니다!
@ -687,8 +666,7 @@ storyRewards:
desc: <strong>회전기</strong>가 잠금 해제되었습니다! 회전기는 들어오는 도형을 시계 방향으로 90도 회전시켜줍니다.
reward_painter:
title: 색칠기
desc:
"<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된
desc: "<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된
도형을 만들도록 하세요!<br><br>추신: 만약 당신이 색맹이라면, 설정에서 <strong>색맹 모드</strong>를
활성화하세요!"
reward_mixer:
@ -697,28 +675,24 @@ storyRewards:
색소</strong>를 얻을 수 있습니다!
reward_stacker:
title: 결합기
desc:
<strong>결합기</strong>가 잠금 해제되었습니다! 이제 결합기를 통해 여러 도형을 붙이고 결합할 수 있습니다! 들어오는 두
desc: <strong>결합기</strong>가 잠금 해제되었습니다! 이제 결합기를 통해 여러 도형을 붙이고 결합할 수 있습니다! 들어오는 두
도형의 도형이 서로 나란히 붙일 수 있다면, 하나의 도형으로 <strong>결합</strong>됩니다. 만약 서로
겹쳐진다면, 오른쪽 도형이 왼쪽 도형의 <strong>위에 쌓이게</strong> 됩니다!
reward_splitter:
title: 압축형 분배기
desc:
<strong>밸런서</strong>의 새로운 형태인 <strong>분배기</strong>가 잠금 해제되었습니다! 이제 벨트 한 줄을
desc: <strong>밸런서</strong>의 새로운 형태인 <strong>분배기</strong>가 잠금 해제되었습니다! 이제 벨트 한 줄을
즉시 두 줄로 분배합니다!
reward_tunnel:
title: 터널
desc: <strong>터널</strong>이 잠금 해제되었습니다! 이제 벨트와 건물 아래로 공간을 만들어내 옮길 수 있습니다!
reward_rotater_ccw:
title: 반시계 방향 회전기
desc:
<strong>반시계 방향 회전기</strong>가 잠금 해제되었습니다! 반시계 방향 회전기는 회전기의 다른 형태로, 이름처럼
desc: <strong>반시계 방향 회전기</strong>가 잠금 해제되었습니다! 반시계 방향 회전기는 회전기의 다른 형태로, 이름처럼
들어오는 도형을 반시계 방향으로 90도만큼 회전시킵니다! 제작하려면 회전기를 선택한 후 <strong>'T' 키를 눌러
다른 형태로 전환</strong>하세요!
reward_miner_chainable:
title: 연쇄 추출기
desc:
"<strong>연쇄 추출기</strong>가 잠금 해제되었습니다! 자원을 보다 더욱 효율적으로 추출할 수 있도록 <strong>앞에
desc: "<strong>연쇄 추출기</strong>가 잠금 해제되었습니다! 자원을 보다 더욱 효율적으로 추출할 수 있도록 <strong>앞에
있는 추출기로 자원을 보낼 수 있습니다</strong>!<br><br> 추신: 이제 툴바에 있는 기존 추출기는 연쇄
추출기로 대체되었습니다!"
reward_underground_belt_tier_2:
@ -727,18 +701,15 @@ storyRewards:
거리</strong>를 운송할 수 있고 기존 터널과 겹쳐지지 않고도 자원을 보낼 수 있습니다!
reward_cutter_quad:
title: 4단 절단기
desc:
새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 4단 절단기는 도형을 두 조각이 아닌 <strong>네
desc: 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 4단 절단기는 도형을 두 조각이 아닌 <strong>네
조각</strong>으로 자를 수 있습니다!
reward_painter_double:
title: 2단 색칠기
desc:
새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 일반적인 색칠기와 거의 동일하지만, 하나의 색소를 사용하여
desc: 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 일반적인 색칠기와 거의 동일하지만, 하나의 색소를 사용하여
<strong>동시에 두 개의 도형을 색칠</strong>할 수 있습니다!
reward_storage:
title: 저장고
desc:
<strong>저장고</strong>가 잠금 해제되었습니다! 저장고는 최대 용량까지 도형을 저장할 수 있습니다!<br><br> 왼쪽
desc: <strong>저장고</strong>가 잠금 해제되었습니다! 저장고는 최대 용량까지 도형을 저장할 수 있습니다!<br><br> 왼쪽
출력이 우선되므로 <strong>오버플로 회로</strong>로도 활용될 수 있습니다!
reward_freeplay:
title: 자유플레이
@ -748,38 +719,32 @@ storyRewards:
레이어를 통해 내보내므로 이를 분석하는 구조를 기반으로 하여 공장을 자동으로 구성하기만 하면 됩니다.
reward_blueprints:
title: 청사진
desc:
이제 공장의 일부를 <strong>복사하고 붙여넣는 기능</strong>을 사용할 수 있습니다! 영역을 선택 (CTRL 키를 누른 채
desc: 이제 공장의 일부를 <strong>복사하고 붙여넣는 기능</strong>을 사용할 수 있습니다! 영역을 선택 (CTRL 키를 누른 채
마우스로 드래그)한 뒤 'C' 키를 눌러 복사할 수 있습니다.<br><br>하지만 <strong>공짜는
아닙니다</strong>, <strong>청사진 도형 도형</strong>을 허브에 저장하고 그것을 일부 사용해 붙여넣기
기능을 사용할 수 있습니다! (방금 당신이 만든 것입니다.)
no_reward:
title: 다음 레벨
desc:
"이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에
desc: "이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에
<strong>업그레이드 잠금 해제</strong>되면 <strong>기존의 모든</strong> 도형이 필요합니다!"
no_reward_freeplay:
title: 다음 레벨
desc: 축하드립니다!
reward_balancer:
title: 밸런서
desc:
<strong>밸런서</strong>가 잠금 해제되었습니다! 다목적 밸런서를 통해 여러 벨트의 아이템을 서로 <strong>다른
desc: <strong>밸런서</strong>가 잠금 해제되었습니다! 다목적 밸런서를 통해 여러 벨트의 아이템을 서로 <strong>다른
벨트로 분할하거나 합침</strong>으로써 더욱 거대한 공장을 만들 수 있습니다!
reward_merger:
title: 압축형 병합기
desc:
<strong>밸런서</strong>의 새로운 형태인 <strong>병합기</strong>가 잠금 해제되었습니다! 이제 벨트 두 줄을
desc: <strong>밸런서</strong>의 새로운 형태인 <strong>병합기</strong>가 잠금 해제되었습니다! 이제 벨트 두 줄을
즉시 한 줄로 병합합니다!
reward_belt_reader:
title: 벨트 판독기
desc:
<strong>벨트 판독기</strong>가 잠금 해제되었습니다! 이제 벨트의 처리량을 확인할 수 있습니다.<br><br>그리고,
desc: <strong>벨트 판독기</strong>가 잠금 해제되었습니다! 이제 벨트의 처리량을 확인할 수 있습니다.<br><br>그리고,
전선이 잠금 해제될 때 까지 기다리신다면 정말 유용하게 사용할 수 있을 겁니다!
reward_rotater_180:
title: 220도 회전기
desc:
<strong>180도 회전기</strong>가 잠금 해제되었습니다! 이제 도형을 바로 180도로 회전시킬 수 있습니다. (짜잔!
desc: <strong>180도 회전기</strong>가 잠금 해제되었습니다! 이제 도형을 바로 180도로 회전시킬 수 있습니다. (짜잔!
:D)
reward_display:
title: 디스플레이
@ -787,37 +752,32 @@ storyRewards:
있습니다.<br><br> 추신: 벨트 판독기와 저장고가 마지막으로 읽은 아이템을 출력했나요? 디스플레이로 한번 봐보세요!"
reward_constant_signal:
title: 일정 신호기
desc:
전선 레이어에서 구축할 수 있는 <strong>일정 신호기</strong>가 잠금 해제되었습니다! 간단한 예시로,
desc: 전선 레이어에서 구축할 수 있는 <strong>일정 신호기</strong>가 잠금 해제되었습니다! 간단한 예시로,
<strong>아이템 선별</strong>에 연결하여 사용하는 데 유용합니다.<br><br> 일정 신호기는
<strong>도형</strong>, <strong>색상</strong>, 또는 <strong>불 값</strong> (1
또는 0)을 출력할 수 있습니다.
reward_logic_gates:
title: 논리 회로
desc:
<strong>논리 회로</strong>가 잠금 해제되었습니다! 굳이 흥분할 필요는 없지만, 진짜 멋진 기술입니다!<br><br>
desc: <strong>논리 회로</strong>가 잠금 해제되었습니다! 굳이 흥분할 필요는 없지만, 진짜 멋진 기술입니다!<br><br>
논리 회로를 통해 이제 AND, OR, XOR, NOT 논리 연산을 할 수 있습니다.<br><br> 보너스로,
<strong>트랜지스터</strong>도 지급되었습니다!
reward_virtual_processing:
title: 가상 처리
desc:
<strong>도형의 처리를 시뮬레이션</strong>할 수 있는 다양한 새로운 건물이 잠금 해제되었습니다!<br><br> 이제 전선
desc: <strong>도형의 처리를 시뮬레이션</strong>할 수 있는 다양한 새로운 건물이 잠금 해제되었습니다!<br><br> 이제 전선
레이어에서 도형에 대한 절단기, 회전기, 결합기 등을 가상으로 시뮬레이션할 수 있습니다! 이제 게임 진행에 있어 다음 세
가지의 방법이 존재합니다:<br><br> - <strong>완전 자동화된 기계</strong>를 구축하고 허브에서 요구되는
도형을 제작합니다. (먼저 시도해볼 것을 권합니다!).<br><br> - 전선을 통해 멋진 것들 만듭니다.<br><br>
- 평소처럼 게임을 진행합니다.<br><br> 어떤 방식으로든, 재미있게 게임을 플레이해주시길 바랍니다!
reward_wires_painter_and_levers:
title: 전선과 4단 색칠기
desc:
" 방금 <strong>전선 레이어</strong>를 활성화하셨습니다: 이것은 일반 레이어 위에 존재하는 별개의 레이어로 수많은
desc: " 방금 <strong>전선 레이어</strong>를 활성화하셨습니다: 이것은 일반 레이어 위에 존재하는 별개의 레이어로 수많은
새로운 요소를 사용할 수 있습니다!<br><br> <strong>4단 색칠기</strong>를 활성화해 드리겠습니다 -
전선 레이어에서 색을 칠할 부분에 연결해 보세요!<br><br> 전선 레이어로 전환하시려면
<strong>E</strong>키를 눌러주세요.<br><br> 추신: <strong>힌트를 활성화</strong>해서
전선 튜토리얼을 활성화해 보세요!"
reward_filter:
title: 아이템 선별기
desc:
<strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽
desc: <strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽
출력이나 오른쪽 출력으로 보냅니다.<br><br> 불 값 (1 또는 0)을 전달하여 완전히 활성화과 비활성화를 전환할 수
있습니다.
reward_demo_end:
@ -838,8 +798,7 @@ settings:
labels:
uiScale:
title: UI 크기
description:
사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를
description: 사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를
제어합니다.
scales:
super_small: 매우 작게
@ -886,18 +845,15 @@ settings:
light: 라이트
refreshRate:
title: 틱 빈도
description:
이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은
description: 이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은
틱 빈도에서는 처리량이 정확하지 않을 수 있습니다.
alwaysMultiplace:
title: 다수 배치 항시 켜기
description:
활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속
description: 활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속
누르는 것과 같습니다.
offerHints:
title: 힌트와 튜토리얼
description:
게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지
description: 게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지
특정한 UI 요소를 숨깁니다.
enableTunnelSmartplace:
title: 지능적인 터널 배치
@ -926,8 +882,7 @@ settings:
description: 색맹 사용자를 위해 게임을 플레이하는 데 도움을 주는 다양한 도구를 활성화합니다.
rotationByBuilding:
title: 건물 유형에 따른 방향
description:
각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이
description: 각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이
방법이 더욱 편할 수 있습니다.
soundVolume:
title: 효과음 볼륨
@ -943,8 +898,7 @@ settings:
description: 성능 향상을 위해 타일 그리드를 비활성화할 수 있습니다. 이 역시 게임을 더욱 깨끗하게 보여줍니다!
clearCursorOnDeleteWhilePlacing:
title: 우클릭 시 커서 지우기
description:
기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을
description: 기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을
커서에 선택한 채로 우클릭하면 바로 건물을 삭제할 수 있습니다.
lowQualityTextures:
title: 저품질 텍스처 (못생김)
@ -957,8 +911,7 @@ settings:
description: 기본적으로 활성화되어 있으며, 자원 패치에서 피펫 기능을 사용 시 즉시 추출기를 선택합니다.
simplifiedBelts:
title: 벨트 단순화 (못생김)
description:
성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
description: 성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
심각한 성능 문제가 일어나지 않는 한, 이 설정을 사용할 필요는 없습니다.
enableMousePan:
title: 화면 가장자리 패닝
@ -1176,8 +1129,7 @@ puzzleMenu:
medium: 중간
hard: 어려움
unknown: Unrated
dlcHint:
DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서
dlcHint: DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서
활성화되었는지 확인해주세요.
search:
action: Search
@ -1227,7 +1179,6 @@ mods:
noModSupport: 모드를 사용하기 위해 정식버전이 필요합니다.
togglingComingSoon:
title: 곧 업데이트 됩니다!
description:
지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고
description: 지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고
끌수 있는 기능은 추후 업데이트될 예정입니다. 모드폴더에 넣고/빼는것으로 할수있습니다. 모드를 토글하는 기능은 곧 업데이트
됩니다!

View File

@ -433,7 +433,6 @@ ingame:
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
standaloneAdvantages:
title: Get the full version!
no_thanks: No, thanks!
points:
levels:
@ -460,7 +459,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -69,8 +69,8 @@ demoBanners:
playtimeDisclaimer: De volledige versie bevat meer dan <strong>20 uur aan inhoud</strong>.
playerCount: <playerCount> spelers zoals jij spelen op dit moment shapez op Steam
untilEndOfDemo: Tot het einde van de demo
playtimeDisclaimerDownload: Je kunt doorgaan met je savegame in de volledige versie!
Klik <strong>hier</strong> om je savegame te downloaden.
playtimeDisclaimerDownload: Je kunt doorgaan met je savegame in de volledige
versie! Klik <strong>hier</strong> om je savegame te downloaden.
mainMenu:
play: Spelen
changelog: Wijzigingenlijst
@ -446,7 +446,6 @@ ingame:
desc: Klik hier om het spel op Steam te kopen!
get_on_steam: Krijg het op Steam
standaloneAdvantages:
title: Koop de volledige versie!
no_thanks: Nee, dankjewel!
points:
levels:
@ -473,7 +472,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo tijd verlopen
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Gebied
zoneWidth: Breedte

View File

@ -438,7 +438,6 @@ ingame:
desc: Trykk her for å se fordelene med Steam verjsonen!
get_on_steam: Få på Steam
standaloneAdvantages:
title: Få fullversjonen!
no_thanks: Nei takk!
points:
levels:
@ -465,7 +464,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demotiden er utløpt
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Sone
zoneWidth: Bredde

View File

@ -441,7 +441,6 @@ ingame:
desc: Kliknij tutaj, aby zobaczyć co potrafi wersja Steam!
get_on_steam: Kup na Steam
standaloneAdvantages:
title: Kup pełną wersję!
no_thanks: Nie, dziękuję!
points:
levels:
@ -468,7 +467,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Czas demonstracyjny wygasł
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Obszar
zoneWidth: Wysokość

View File

@ -69,8 +69,8 @@ demoBanners:
playerCount: <playerCount> Jogadores como você está jogando shapez on Steam
agora mesmo.
untilEndOfDemo: Até o final da demo
playtimeDisclaimerDownload: Você pode continuar seu jogo salvo na versão completa!
Clique <strong>aqui</strong> para baixar seu jogo salvo.
playtimeDisclaimerDownload: Você pode continuar seu jogo salvo na versão
completa! Clique <strong>aqui</strong> para baixar seu jogo salvo.
mainMenu:
play: Jogar
continue: Continuar
@ -440,7 +440,6 @@ ingame:
desc: Clique aqui para ver as vantagens da versão completa!
get_on_steam: Adquira na Steam
standaloneAdvantages:
title: Adquira a versão completa!
no_thanks: Não, obrigado!
points:
levels:
@ -467,7 +466,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: O tempo de demonstração expirou
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zona
zoneWidth: Largura

View File

@ -69,8 +69,8 @@ demoBanners:
playtimeDisclaimer: A versão completa contém mais de <strong>20 horas de conteúdo</strong>.
playerCount: <playerCount> jogadores como você estão jogando shapez no Steam
untilEndOfDemo: Até o final da demo
playtimeDisclaimerDownload: Você pode continuar seu jogo salvo na versão completa!
Clique <strong>aqui</strong> para baixar seu jogo salvo.
playtimeDisclaimerDownload: Você pode continuar seu jogo salvo na versão
completa! Clique <strong>aqui</strong> para baixar seu jogo salvo.
mainMenu:
play: Jogar
changelog: Changelog
@ -448,7 +448,6 @@ ingame:
desc: Clica aqui para veres as vantagens da versão na Steam!
get_on_steam: Compra na Steam
standaloneAdvantages:
title: Obtém a versão completa!
no_thanks: Não, obrigado!
points:
levels:
@ -475,7 +474,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: O tempo de demonstração expirou
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zona
zoneWidth: Largura

View File

@ -446,7 +446,6 @@ ingame:
desc: Apasă aici pentru a vedea avantajele versiunii Steam!
get_on_steam: Ia pe Steam
standaloneAdvantages:
title: Ia versiunea completă!
no_thanks: Nu, mersi!
points:
levels:
@ -473,7 +472,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Timpul demo a expirat
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zonă
zoneWidth: Lățime

View File

@ -443,7 +443,6 @@ ingame:
desc: Нажмите сюда, чтобы узнать о преимуществах Steam версии!
get_on_steam: Приобрести в Steam
standaloneAdvantages:
title: Приобретите полную версию!
no_thanks: Нет, спасибо!
points:
levels:
@ -470,7 +469,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Истекло время демонстрации
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Область
zoneWidth: Ширина

View File

@ -434,7 +434,6 @@ ingame:
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
standaloneAdvantages:
title: Get the full version!
no_thanks: No, thanks!
points:
levels:
@ -461,7 +460,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -435,7 +435,6 @@ ingame:
desc: Kliknite ovde da pogledate prednosti Steam verzije!
get_on_steam: Nabavite na Steam-u
standaloneAdvantages:
title: Nabavite punu verziju!
no_thanks: Neka, hvala!
points:
levels:
@ -462,7 +461,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Širina

View File

@ -69,8 +69,8 @@ demoBanners:
timmars innehåll</strong>.
playerCount: <playerCount> spelare som du spelar just nu shapez på Steam
untilEndOfDemo: Till slutet av demonstrationen
playtimeDisclaimerDownload: Du kan fortsätta ditt savegame i den fullständiga versionen!
Klicka <strong>här</strong> för att ladda ner ditt savegame.
playtimeDisclaimerDownload: Du kan fortsätta ditt savegame i den fullständiga
versionen! Klicka <strong>här</strong> för att ladda ner ditt savegame.
mainMenu:
play: Spela
changelog: Ändringslogg
@ -439,7 +439,6 @@ ingame:
desc: Klicka här för att se fördelarna med Steam-versionen!
get_on_steam: Skaffa på Steam
standaloneAdvantages:
title: Skaffa den fulla versionen!
no_thanks: Nej tack!
points:
levels:
@ -466,7 +465,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demotiden har löpt ut
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width

View File

@ -439,7 +439,6 @@ ingame:
desc: Steam sürümü avantajlarını görmek için buraya tıklayın!
get_on_steam: Steam'de al
standaloneAdvantages:
title: Tam versiyonu al!
no_thanks: Hayır, teşekkürler!
points:
levels:
@ -466,7 +465,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo süresi sona erdi
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Alan
zoneWidth: Genişlik

View File

@ -68,8 +68,8 @@ demoBanners:
playtimeDisclaimer: Повна версія містить понад <strong>20 години вмісту</strong>.
playerCount: <playerCount> гравців як ви зараз грають у shapez на Steam
untilEndOfDemo: До кінця демонстрації
playtimeDisclaimerDownload: Ви можете продовжити свою збережену гру в повній версії!
Натисніть <strong>тут</strong>, щоб завантажити збережену гру.
playtimeDisclaimerDownload: Ви можете продовжити свою збережену гру в повній
версії! Натисніть <strong>тут</strong>, щоб завантажити збережену гру.
mainMenu:
play: Грати
continue: Продовжити
@ -430,10 +430,10 @@ ingame:
вводи</strong> фарбувальника за допомогою проводу!
21_3_place_button: Неймовірно! Тепер розмістіть <strong>Вимикач</strong> Та
з'єднайте їх дротом!
21_4_press_button: 'Натисніть вимикач, аби він почав <strong>видавати сигнал
"Істина" </strong> активувавши таким чином
фарбувальник.<br><br> PS: Не обов''язково підключати всі входи!
Спробуйте підключити лише два.'
21_4_press_button: "Натисніть вимикач, аби він почав <strong>видавати сигнал
\"Істина\" </strong> активувавши таким чином
фарбувальник.<br><br> PS: Не обов'язково підключати всі входи!
Спробуйте підключити лише два."
connectedMiners:
one_miner: 1 Екстрактор
n_miners: <amount> Екстракторів
@ -443,7 +443,6 @@ ingame:
desc: Натисніть сюди аби переглянути переваги Steam версії!
get_on_steam: Отримати в Steam
standaloneAdvantages:
title: Отримати повну версію!
no_thanks: Ні, дякую!
points:
levels:
@ -470,7 +469,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Час демонстрації закінчився
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Зона
zoneWidth: Ширина

View File

@ -375,7 +375,6 @@ ingame:
desc: 点击这里了解完整版内容
get_on_steam: 在Steam商城购买
standaloneAdvantages:
title: 购买完整版!
no_thanks: 不需要,谢谢
points:
levels:
@ -402,7 +401,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: Demo Time Expired
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: 区域
zoneWidth: 宽度

View File

@ -65,8 +65,7 @@ demoBanners:
playtimeDisclaimer: 完整版包括多达 <strong>20 小时的新内容</strong>
playerCount: <playerCount> 个像你一样的玩家目前正在 Steam 上玩 shapez
untilEndOfDemo: 直到演示结束
playtimeDisclaimerDownload: 您可以在完整版中继续您的存档游戏!
点击<strong>此处</strong>下载您的存档游戏。
playtimeDisclaimerDownload: 您可以在完整版中继续您的存档游戏! 点击<strong>此处</strong>下载您的存档游戏。
mainMenu:
play: 开始游戏
changelog: 更新日志
@ -84,8 +83,7 @@ mainMenu:
savegameUnnamed: 存档未命名
puzzleMode: 谜题模式
back: 返回
puzzleDlcText:
持续优化追求极致效率。在限定空间内使用有限的设施来创造图形《异形工厂》Shapez的首个 DLC
puzzleDlcText: 持续优化追求极致效率。在限定空间内使用有限的设施来创造图形《异形工厂》Shapez的首个 DLC
“谜题挑战者”将会给大家带来更烧脑、更自由的全新挑战!
puzzleDlcWishlist: 添加愿望单!
puzzleDlcViewNow: 查看 DLC
@ -155,8 +153,7 @@ dialogs:
desc: 您还没有解锁蓝图功能!通过第 12 关的挑战后可解锁蓝图。
keybindingsIntroduction:
title: 实用快捷键
desc:
这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br>
desc: 这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br>
<code class='keybinding'>CTRL 键</code> + 拖动:选择区域以复制或删除。<br> <code
class='keybinding'>SHIFT 键</code> 按住以放置多个同一种设施。<br> <code
class='keybinding'>ALT 键</code>:反向放置传送带。<br>
@ -345,13 +342,11 @@ ingame:
hints:
1_1_extractor: 在<strong>圆形</strong>上放置一个<strong>开采器</strong>来获取圆形!<br><br>提示:<strong>按下鼠标左键</strong>选中<strong>开采器</strong>
1_2_conveyor: 用<strong>传送带</strong>将您的开采器连接到中心基地上!<br><br>提示:选中<strong>传送带</strong>后<strong>按下鼠标左键可拖动</strong>布置传送带!
1_3_expand:
您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br>
1_3_expand: 您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br>
提示:按住 <strong>SHIFT</strong> 键可放置多个<strong>开采器</strong>,注意用
<strong>R</strong> 键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。
2_1_place_cutter: 现在放置一个<strong>切割器</strong>,这个设施可把<strong>圆形</strong>切成两半!<br><br>注意:无论如何放置,切割机总是<strong>从上到下</strong>切割。
2_2_place_trash:
使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前
2_2_place_trash: 使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前
(!) 不需要的废物。
2_3_more_cutters: 干的好!现在放置 <strong>2
个以上的切割机</strong>来加快当前缓慢的过程!<br><br>提示:用<strong>快捷键 0 - 9
@ -388,7 +383,6 @@ ingame:
desc: 点击这里了解完整版内容
get_on_steam: 在 Steam 商城购买
standaloneAdvantages:
title: 购买完整版!
no_thanks: 不需要,谢谢
points:
levels:
@ -415,7 +409,9 @@ ingame:
achievements:
title: 成就
desc: 挑战全成就解锁!
title_expired: 演示时间已过
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: 区域
zoneWidth: 宽度
@ -655,8 +651,7 @@ storyRewards:
desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。
reward_painter:
title: 上色
desc:
恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
<br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong>
reward_mixer:
title: 混合颜色
@ -673,13 +668,11 @@ storyRewards:
desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。
reward_rotater_ccw:
title: 逆时针旋转
desc:
恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。
desc: 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。
<br>选择<strong>旋转机</strong>然后按 "T" 键来选取这个变体。
reward_miner_chainable:
title: 链式开采器
desc:
您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br>
desc: 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br>
注意:新的开采器已替换了工具栏里旧的开采器!
reward_underground_belt_tier_2:
title: 二级隧道
@ -696,14 +689,12 @@ storyRewards:
<br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了!
reward_freeplay:
title: 自由模式
desc:
成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形!
desc: 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形!
从现在起,中心基地最为需要的是<strong>产量</strong>,强烈建议您去制造一台能够自动交付所需图形的机器!<br><br>
基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。
reward_blueprints:
title: 蓝图
desc:
您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL 键并拖动鼠标来选择一块区域,然后按 C 键复制。
desc: 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL 键并拖动鼠标来选择一块区域,然后按 C 键复制。
<br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。
no_reward:
title: 下一关
@ -731,8 +722,7 @@ storyRewards:
<br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下!
reward_constant_signal:
title: 恒定信号
desc:
恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。
desc: 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。
<br>比如它能发出图形、颜色、开关值1 / 0的固定信号。
reward_logic_gates:
title: 逻辑门
@ -751,8 +741,7 @@ storyRewards:
<strong>提示</strong>:可在设置中打开电线层教程!
reward_filter:
title: 物品过滤器
desc:
恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
您也可以输入开关值1 / 0信号来激活或者禁用它。
reward_demo_end:
title: 试玩结束
@ -808,8 +797,7 @@ settings:
light: 浅色
refreshRate:
title: 模拟频率、刷新频率
description:
在这里更改刷新频率这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳提高刷新频率可能降低帧数。注意60Hz
description: 在这里更改刷新频率这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳提高刷新频率可能降低帧数。注意60Hz
以上的任何频率都会导致游戏卡顿!
alwaysMultiplace:
title: 多重放置
@ -1146,7 +1134,6 @@ mods:
noModSupport: 您需要在 Steam 平台获得完整版才可以安装游戏模组Mods
togglingComingSoon:
title: 即将开放
description:
当前只能通过将游戏模组Mods文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组Mods
description: 当前只能通过将游戏模组Mods文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组Mods
但是可以切换游戏模组Mods已经计划在之后的更新中实现
modWebsite: 模组网站

View File

@ -63,8 +63,7 @@ demoBanners:
playtimeDisclaimer: 完整版包含超過 <strong>20 小時的內容</strong>。
playerCount: <playerCount> 個像你一樣的玩家目前正在 Steam 上玩 shapez
untilEndOfDemo: 直到演示結束
playtimeDisclaimerDownload: 您可以在完整版中繼續您的存檔遊戲!
點擊<strong>此處</strong>下載您的存檔遊戲。
playtimeDisclaimerDownload: 您可以在完整版中繼續您的存檔遊戲! 點擊<strong>此處</strong>下載您的存檔遊戲。
mainMenu:
play: 開始遊戲
changelog: 更新日誌
@ -153,15 +152,13 @@ dialogs:
desc: 你還沒有解鎖藍圖功能!完成更多的關卡來解鎖藍圖。
keybindingsIntroduction:
title: 實用按鍵
desc:
"這個遊戲有很多能幫助搭建工廠的使用按鍵。 以下是其中的一些,記得在<strong>按鍵設定</strong>中查看其他的! <br><br>
desc: "這個遊戲有很多能幫助搭建工廠的使用按鍵。 以下是其中的一些,記得在<strong>按鍵設定</strong>中查看其他的! <br><br>
<code class='keybinding'>CTRL</code> + 拖曳:選擇區域以複製或刪除。 <br> <code
class='keybinding'>SHIFT</code>: 按住以放置多個。 <br> <code
class='keybinding'>ALT</code>: 反向放置輸送帶。 <br>"
createMarker:
title: 建立標記
desc:
給地圖標記取一個名字。你可以在名字中加入一個<strong>簡短代碼</strong>以加入圖形。(你可以在<link>這裡</link>
desc: 給地圖標記取一個名字。你可以在名字中加入一個<strong>簡短代碼</strong>以加入圖形。(你可以在<link>這裡</link>
建立簡短代碼。)
titleEdit: 修改標記
markerDemoLimit:
@ -356,18 +353,15 @@ ingame:
1_1_extractor: 在<strong>圓形礦脈</strong>上放一個<strong>開採機</strong>來採集圓形!
1_2_conveyor: 用<strong>輸送帶</strong>將你的開採機連接到基地上!
<br><br>提示:用你的游標<strong>按下並拖曳</strong>輸送帶!
1_3_expand:
這<strong>不是</strong>一個放置型遊戲!建造更多的開採機和輸送帶來更快地完成目標。 <br><br>
1_3_expand: 這<strong>不是</strong>一個放置型遊戲!建造更多的開採機和輸送帶來更快地完成目標。 <br><br>
提示:按住<strong>SHIFT</strong>鍵來放置多個開採機,用<strong>R</strong>鍵旋轉它們。
2_1_place_cutter: "現在放置一個<strong>切割機</strong>並利用它把圓圈切成兩半!<br><br> PS:
不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。"
2_2_place_trash: 切割機可能會<strong>堵塞並停止運作</strong><br><br>
用<strong>垃圾桶</strong>把「目前」不需要的部分處理掉。
2_3_more_cutters:
"做得好! 現在,再放<strong>2個切割機</strong>來加速這個緩慢的生產線!<br><br> PS:
2_3_more_cutters: "做得好! 現在,再放<strong>2個切割機</strong>來加速這個緩慢的生產線!<br><br> PS:
使用<strong>0-9快捷鍵</strong>可以更快選取建築 "
3_1_rectangles:
"現在來開採一些方形吧!<strong>蓋4座開採機</strong>,把形狀收集到基地。<br><br> PS:
3_1_rectangles: "現在來開採一些方形吧!<strong>蓋4座開採機</strong>,把形狀收集到基地。<br><br> PS:
選擇輸送帶,按住<strong>SHIFT</strong>並拖曳滑鼠可以計畫輸送帶位置!"
21_1_place_quad_painter: 放置一個<strong>上色機(四向)</strong>並取得一些
<strong>圓形</strong>、<strong>白色</strong>和<strong>紅色</strong>
@ -400,7 +394,6 @@ ingame:
desc: 按這裡看 Steam 版的優勢!
get_on_steam: 在 Steam 上取得
standaloneAdvantages:
title: 取得單機版!
no_thanks: 不用了,謝謝!
points:
levels:
@ -427,7 +420,9 @@ ingame:
mods:
title: Modding support!
desc: Over 80 mods available!
title_expired: 演示時間已過
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
puzzleEditorSettings:
zoneTitle: Zone
zoneWidth: Width
@ -604,19 +599,16 @@ buildings:
transistor:
default:
name: 電晶體
description:
如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
「真」訊號代表形狀訊號、顏色訊號或布林值為1
mirrored:
name: 電晶體
description:
如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
「真」訊號代表形狀訊號、顏色訊號或布林值為1
filter:
default:
name: 物件分類器
description:
它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。
description: 它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。
它也可以被布林值訊號控制。
display:
default:
@ -669,8 +661,7 @@ buildings:
storyRewards:
reward_cutter_and_trash:
title: 切割圖形
desc:
<strong>切割機</strong>已解鎖!不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。<br><br>
desc: <strong>切割機</strong>已解鎖!不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。<br><br>
記得把不需要的部分處理掉,否則切割機會<strong>因為堵塞而停止運作</strong>。
為此我給你準備了<strong>垃圾桶</strong>,它會把所有放進去的物品銷毀掉。
reward_rotater:
@ -762,8 +753,7 @@ storyRewards:
<strong>布林值</strong>1或0
reward_logic_gates:
title: 邏輯閘
desc:
<strong>邏輯閘</strong>已解鎖!你可能覺得無所謂,但其實邏輯閘其實超酷的!<br><br> 有了這些邏輯閘,你可以運算 AND,
desc: <strong>邏輯閘</strong>已解鎖!你可能覺得無所謂,但其實邏輯閘其實超酷的!<br><br> 有了這些邏輯閘,你可以運算 AND,
OR, XOR 與 NOT 邏輯。<br><br> 錦上添花,我再送你<strong>電晶體</strong>
reward_virtual_processing:
title: 虛擬操作

View File

@ -1 +1 @@
1.5.3
1.5.4