Merge branch 'master' into fix-typescript-errors

pull/1452/head
ExE Boss 2 years ago
commit 4155bbfd58
No known key found for this signature in database
GPG Key ID: BF4FA5DD733D8D1A

@ -290,11 +290,7 @@ gulp.task(
// Bundling (pre upload)
gulp.task(
"bundle.steam.from-darwin",
gulp.series(
"utils.cleanBuildOutputFolder",
"bundle.standalone-steam.from-darwin",
"bundle.standalone-steam-china.from-darwin"
)
gulp.series("utils.cleanBuildOutputFolder", "bundle.standalone-steam.from-darwin")
);
gulp.task(
"bundle.steam.from-windows",

@ -28,8 +28,6 @@
"@babel/plugin-transform-classes": "^7.5.5",
"@babel/preset-env": "^7.5.4",
"@nastyox/rando.js": "^2.0.5",
"@openreplay/tracker": "^3.5.12",
"@openreplay/tracker-fetch": "^3.5.3",
"@types/cordova": "^0.0.34",
"@types/filesystem": "^0.0.32",
"ajv": "^6.10.2",

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

@ -83,7 +83,7 @@ body {
right: 0;
bottom: 0;
background: rgba(50, 60, 70, 0.8);
z-index: 9999;
z-index: 999999;
display: flex;
justify-content: center;
align-items: center;

@ -142,22 +142,25 @@
> .discount {
position: absolute;
@include S(top, -7px);
@include S(right, -5px);
@include S(top, -12px);
@include S(right, -15px);
background: #4c6b22;
color: #c5ea3f;
@include S(border-radius, $globalBorderRadius);
@include S(padding, 1px, 3px, 1px, 4px);
@include SuperSmallText;
@include PlainText;
text-transform: uppercase;
transform: rotate(1deg);
@include InlineAnimation(1.3s ease-in-out infinite) {
50% {
transform: rotate(4deg) scale(1.1);
}
}
transform: rotate(3deg);
}
}
.specialOffer {
color: #000000;
@include PlainText;
align-self: center;
text-align: center;
@include S(margin-top, 5px);
}
}
.point {

@ -38,6 +38,7 @@
.exitAppButton {
background-image: uiResource("icons/main_menu_exit.png");
background-size: 56%;
}
.languageChoose {
@ -51,14 +52,13 @@
}
}
&::before,
&::after {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: uiResource("vignette.lossless.png") center center / cover no-repeat;
background: uiResource("vignette-strong.lossless.png") center center / cover no-repeat;
pointer-events: none;
z-index: 2;
content: "";
@ -185,6 +185,23 @@
transition: transform 0.5s ease-in-out;
}
.close {
position: absolute;
pointer-events: all;
background: uiResource("icons/main_menu_exit.png") center center / 50% no-repeat;
display: inline-flex;
@include S(width, 15px);
@include S(height, 15px);
@include S(top, 2px);
opacity: 0.3;
@include S(right, 2px);
z-index: 200;
transition: opacity 0.12s ease-in-out;
&:hover {
opacity: 0.7;
}
}
&:hover::before {
transform: translate(0, -51%);
}
@ -309,13 +326,20 @@
color: #c5ea3f;
@include S(border-radius, $globalBorderRadius);
@include S(padding, 1px, 3px, 1px, 4px);
@include SuperSmallText;
@include PlainText;
text-transform: uppercase;
transform: rotate(1deg);
@include InlineAnimation(1.3s ease-in-out infinite) {
50% {
transform: rotate(4deg) scale(1.1);
}
transform: rotate(5deg);
}
}
.specialOffer {
color: #000000;
@include PlainText;
align-self: center;
text-align: center;
@include S(margin-top, 5px);
@include InlineAnimation(1s ease-in-out infinite) {
50% {
transform: scale(1.02, 1.03) translateY(2%);
}
}
}
@ -788,6 +812,9 @@
.description {
@include SuperSmallText;
color: rgba(0, 10, 20, 0.5);
@include DarkThemeOverride {
color: rgba(#fff, 0.7);
}
}
// &:hover {
// .tooltip {
@ -854,6 +881,10 @@
text-align: center;
@include S(padding, 0, 20px);
opacity: 0.5;
@include DarkThemeOverride {
color: #fff;
}
}
.savegames {
@ -1233,22 +1264,5 @@
color: $accentColorBright;
}
}
.footer {
> a,
.sidelinks > a {
background-color: rgba($darkModeControlsBackground, 0.3);
color: #333538;
&:hover {
background-color: rgba(darken($darkModeControlsBackground, 5), 0.4);
}
}
.thirdpartyLogo.githubLogo {
// filter: invert(1);
opacity: 0.7;
}
}
}
}

@ -134,6 +134,9 @@ export class Application {
/** @type {TypedTrackedState<boolean>} */
this.trackedIsRenderable = new TrackedState(this.onAppRenderableStateChanged, this);
/** @type {TypedTrackedState<boolean>} */
this.trackedIsPlaying = new TrackedState(this.onAppPlayingStateChanged, this);
// Dimensions
this.screenWidth = 0;
this.screenHeight = 0;
@ -330,6 +333,14 @@ export class Application {
this.sound.onPageRenderableStateChanged(renderable);
}
onAppPlayingStateChanged(playing) {
try {
this.adProvider.setPlayStatus(playing);
} catch (ex) {
console.warn("Play status changed");
}
}
/**
* Internal before-unload handler
*/
@ -386,6 +397,7 @@ export class Application {
}
const currentState = this.stateMgr.getCurrentState();
this.trackedIsPlaying.set(currentState && currentState.getIsIngame());
if (currentState) {
currentState.onRender(dt);
}

@ -31,6 +31,11 @@ const INGAME_ASSETS = {
css: ["async-resources.css"],
};
if (G_IS_STANDALONE) {
MAIN_MENU_ASSETS.sounds = [...Array.from(Object.values(MUSIC)), ...Array.from(Object.values(SOUNDS))];
INGAME_ASSETS.sounds = [];
}
const LOADER_TIMEOUT_PER_RESOURCE = 180000;
// Cloudflare does not send content-length headers with brotli compression,

@ -22,9 +22,7 @@ export const THIRDPARTY_URLS = {
twitter: "https://twitter.com/tobspr",
privacyPolicy: "https://tobspr.io/privacy.html",
standaloneCampaignLink: G_IS_STANDALONE
? "https://get.shapez.io/bundle/$campaign"
: "https://get.shapez.io/$campaign",
standaloneCampaignLink: "https://get.shapez.io/bundle/$campaign",
puzzleDlcStorePage: "https://get.shapez.io/mm_puzzle_dlc?target=dlc",
levelTutorialVideos: {

@ -229,6 +229,14 @@ export class GameState {
return MUSIC.menu;
}
/**
* Should return true if the player is currently ingame
* @returns {boolean}
*/
getIsIngame() {
return false;
}
/**
* Should return whether to clear the whole body content before entering the state.
* @returns {boolean}

@ -4,6 +4,9 @@ const options = queryString.parse(location.search);
export let queryParamOptions = {
embedProvider: null,
abtVariant: null,
campaign: null,
fbclid: null,
gclid: null,
};
if (options.embed) {
@ -13,3 +16,14 @@ if (options.embed) {
if (options.abtVariant) {
queryParamOptions.abtVariant = options.abtVariant;
}
if (options.fbclid) {
queryParamOptions.fbclid = options.fbclid;
}
if (options.gclid) {
queryParamOptions.gclid = options.gclid;
}
if (options.utm_campaign) {
queryParamOptions.campaign = options.utm_campaign;
}

@ -168,7 +168,11 @@ export class Camera extends BasicSerializableObject {
* Finds a good initial zoom level
*/
findInitialZoom() {
const desiredWorldSpaceWidth = 18 * globalConfig.tileSize;
let desiredWorldSpaceWidth = 18 * globalConfig.tileSize;
if (window.innerWidth < 1000) {
desiredWorldSpaceWidth = 12 * globalConfig.tileSize;
}
const zoomLevelX = this.root.gameWidth / desiredWorldSpaceWidth;
const zoomLevelY = this.root.gameHeight / desiredWorldSpaceWidth;

@ -61,7 +61,9 @@ export class HUDSettingsMenu extends BaseHUDPart {
}
returnToMenu() {
this.root.gameState.goBackToMenu();
this.root.app.adProvider.showVideoAd().then(() => {
this.root.gameState.goBackToMenu();
});
}
goToSettings() {

@ -42,10 +42,14 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
<button class="steamLinkButton steam_dlbtn_0">
${
globalConfig.currentDiscount > 0
? `<span class='discount'>-${globalConfig.currentDiscount}%!</span>`
? `<span class='discount'>${T.global.discount.replace(
"<percentage>",
String(globalConfig.currentDiscount)
)}</span>`
: ""
}
</button>
${!G_IS_STEAM_DEMO ? `<span class="specialOffer">${T.global.discountSummerSale}</span>` : ""}
<button class="otherCloseButton" data-btn-variant="${G_IS_STEAM_DEMO ? "steam-demo" : "prod"}">${
T.ingame.standaloneAdvantages.no_thanks
}</button>
@ -121,15 +125,16 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
this.root.app.gameAnalytics.noteMinor("game.std_advg.show");
this.root.app.gameAnalytics.noteMinor("game.std_advg.show-" + (final ? "final" : "nonfinal"));
}
this.lastShown = this.root.time.now();
this.visible = true;
this.final = final;
this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever);
if (this.root.time.now() < 120) {
this.title.innerText = "";
} else if (this.final) {
if (this.final) {
this.title.innerText = T.ingame.standaloneAdvantages.titleExpiredV2;
} else if (this.root.time.now() < 120) {
this.title.innerText = "";
} else {
this.title.innerText = T.ingame.standaloneAdvantages.titleEnjoyingDemo;
}

@ -28,6 +28,10 @@ export class HUDUnlockNotification extends BaseHUDPart {
this.root.app.gameAnalytics.noteMinor("game.started");
}
shouldPauseGame() {
return !G_IS_STANDALONE && this.visible;
}
createElements(parent) {
this.inputReciever = new InputReceiver("unlock-notification");

@ -13,7 +13,10 @@ export class HUDWatermark extends BaseHUDPart {
globalConfig.currentDiscount > 0 ? ["withDiscount"] : [],
linkText +
(globalConfig.currentDiscount > 0
? `<span class='discount'>-${globalConfig.currentDiscount}%!</span>`
? `<span class='discount'>${T.global.discount.replace(
"<percentage>",
String(globalConfig.currentDiscount)
)}</span>`
: "")
);
this.trackClicks(this.linkElement, () => {

@ -1,3 +1,6 @@
/* typehints:start */
import { Application } from "../../application";
/* typehints:end */
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
import { enumHubGoalRewards } from "../tutorial_goals";
@ -7,73 +10,82 @@ 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,
},
];
/**
*
* @param {Application} app
* @returns
*/
const WEB_DEMO_LEVELS = app => {
const 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: 30,
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
// Painter
{
shape: "Cu------", // miners t2
required: 50,
reward: enumHubGoalRewards.reward_painter,
},
// 7
{
shape: "CrCrCrCr", // unused
required: 85,
reward: enumHubGoalRewards.reward_rotater_ccw,
},
// 8
{
shape: "RbRb----", // painter t2
required: 100,
reward: enumHubGoalRewards.reward_mixer,
},
{
shape: "RpRp----",
required: 0,
reward: enumHubGoalRewards.reward_demo_end,
},
];
return levels;
};
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
@ -140,7 +152,7 @@ const STEAM_DEMO_LEVELS = () => [
},
// End of demo
{
shape: "RbRb----",
shape: "CpCpCpCp",
required: 0,
reward: enumHubGoalRewards.reward_demo_end,
},
@ -354,11 +366,11 @@ const STANDALONE_LEVELS = () => [
/**
* Generates the level definitions
*/
export function generateLevelsForVariant() {
export function generateLevelsForVariant(app) {
if (G_IS_STEAM_DEMO) {
return STEAM_DEMO_LEVELS();
} else if (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) {
return STANDALONE_LEVELS();
}
return WEB_DEMO_LEVELS();
return WEB_DEMO_LEVELS(app);
}

@ -299,11 +299,11 @@ let levelDefinitionsCache = null;
/**
* Generates the level definitions
*/
export function generateLevelDefinitions() {
export function generateLevelDefinitions(app) {
if (levelDefinitionsCache) {
return levelDefinitionsCache;
}
const levelDefinitions = generateLevelsForVariant();
const levelDefinitions = generateLevelsForVariant(app);
MOD_SIGNALS.modifyLevelDefinitions.dispatch(levelDefinitions);
if (G_IS_DEV) {
levelDefinitions.forEach(({ shape }) => {
@ -403,7 +403,7 @@ export class RegularGameMode extends GameMode {
* @returns {Array<LevelDefinition>}
*/
getLevelDefinitions() {
return generateLevelDefinitions();
return generateLevelDefinitions(this.root.app);
}
/**

@ -93,6 +93,7 @@ declare interface Window {
grecaptcha: any;
gtag: any;
cpmstarAPI: any;
CrazyGames: any;
// Mods
$shapez_registerMod: any;

@ -39,7 +39,7 @@ if (G_IS_DEV && IS_DEBUG) {
/* typehints:start */
// @ts-ignore
assert(false, "typehints built in, this should never be the case!");
throw new Error("typehints built in, this should never be the case!");
/* typehints:end */
/* dev:start */

@ -44,4 +44,6 @@ export class AdProviderInterface {
showVideoAd() {
return Promise.resolve();
}
setPlayStatus(playing) {}
}

@ -0,0 +1,99 @@
import { AdProviderInterface } from "../ad_provider";
import { createLogger } from "../../core/logging";
import { timeoutPromise } from "../../core/utils";
const logger = createLogger("crazygames");
export class CrazygamesAdProvider extends AdProviderInterface {
getHasAds() {
return true;
}
getCanShowVideoAd() {
return this.getHasAds() && this.sdkInstance;
}
get sdkInstance() {
try {
return window.CrazyGames.CrazySDK.getInstance();
} catch (ex) {
return null;
}
}
initialize() {
if (!this.getHasAds()) {
return Promise.resolve();
}
logger.log("🎬 Initializing crazygames SDK");
const scriptTag = document.createElement("script");
scriptTag.type = "text/javascript";
return timeoutPromise(
new Promise((resolve, reject) => {
scriptTag.onload = resolve;
scriptTag.onerror = reject;
scriptTag.src = "https://sdk.crazygames.com/crazygames-sdk-v1.js";
document.head.appendChild(scriptTag);
})
.then(() => {
logger.log("🎬 Crazygames SDK loaded, now initializing");
this.sdkInstance.init();
})
.catch(ex => {
console.warn("Failed to init crazygames SDK:", ex);
})
);
}
showVideoAd() {
const instance = this.sdkInstance;
if (!instance) {
return Promise.resolve();
}
logger.log("Set sound volume to 0");
this.app.sound.setMusicVolume(0);
this.app.sound.setSoundVolume(0);
return timeoutPromise(
new Promise(resolve => {
console.log("🎬 crazygames: Start ad");
document.body.classList.add("externalAdOpen");
const finish = () => {
instance.removeEventListener("adError", finish);
instance.removeEventListener("adFinished", finish);
resolve();
};
instance.addEventListener("adError", finish);
instance.addEventListener("adFinished", finish);
instance.requestAd();
}),
60000
)
.catch(ex => {
console.warn("Error while resolving video ad:", ex);
})
.then(() => {
document.body.classList.remove("externalAdOpen");
logger.log("Restored sound volume");
this.app.sound.setMusicVolume(this.app.settings.getSetting("musicVolume"));
this.app.sound.setSoundVolume(this.app.settings.getSetting("soundVolume"));
});
}
setPlayStatus(playing) {
console.log("crazygames::playing:", playing);
if (playing) {
this.sdkInstance.gameplayStart();
} else {
this.sdkInstance.gameplayStop();
}
}
}

@ -32,8 +32,6 @@ export class GamedistributionAdProvider extends AdProviderInterface {
* When we showed the last video ad
*/
this.lastVideoAdShowTime = -1e20;
console.error("X");
}
getHasAds() {

@ -35,4 +35,7 @@ export class AnalyticsInterface {
* @param {string} name
*/
trackDecision(name) {}
// LEGACY 1.5.3
trackUiClick() {}
}

@ -1,4 +1,4 @@
import { globalConfig, THIRDPARTY_URLS } from "../../core/config";
import { globalConfig } from "../../core/config";
import { createLogger } from "../../core/logging";
import { queryParamOptions } from "../../core/query_parameters";
import { randomInt } from "../../core/utils";
@ -10,26 +10,8 @@ import { InGameState } from "../../states/ingame";
import { SteamAchievementProvider } from "../electron/steam_achievement_provider";
import { GameAnalyticsInterface } from "../game_analytics";
import { FILE_NOT_FOUND } from "../storage";
import OR from "@openreplay/tracker";
import OR_fetch from "@openreplay/tracker-fetch";
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
let eventConnector;
if (!G_IS_STANDALONE && !G_IS_DEV) {
eventConnector = new OR({
projectKey: "mhZgUFQBI6QAtt3PRLer",
respectDoNotTrack: true,
revID: G_BUILD_COMMIT_HASH,
// @ts-ignore
heatmaps: false,
verbose: false,
captureIFrames: false,
});
eventConnector.start({});
eventConnector.use(OR_fetch({ overrideGlobal: true }));
}
const logger = createLogger("game_analytics");
const analyticsUrl = G_IS_DEV ? "http://localhost:8001" : "https://analytics.shapez.io";
@ -37,7 +19,7 @@ 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_mmnd";
const CURRENT_ABT = "abt_bsl2";
const CURRENT_ABT_COUNT = 1;
export class ShapezGameAnalytics extends GameAnalyticsInterface {
@ -124,15 +106,7 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface {
}
}
noteMinor(action, payload = "") {
if (eventConnector) {
try {
eventConnector.event(action, payload);
} catch (ex) {
console.warn("Failed to note event:", ex);
}
}
}
noteMinor(action, payload = "") {}
/**
* @returns {Promise<void>}
@ -176,9 +150,6 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface {
syncKey => {
this.syncKey = syncKey;
logger.log("Player sync key read:", this.syncKey);
if (eventConnector) {
eventConnector.setUserID(syncKey);
}
},
error => {
// File was not found, retrieve new key
@ -218,9 +189,6 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface {
this.syncKey = res.key;
logger.log("Key retrieved:", this.syncKey);
this.app.storage.writeFileAsync(analyticsLocalFile, res.key);
if (eventConnector) {
eventConnector.setUserID(eventConnector);
}
} else {
throw new Error("Bad response from analytics server: " + res);
}

@ -3,6 +3,7 @@ import { createLogger } from "../../core/logging";
import { queryParamOptions } from "../../core/query_parameters";
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
import { clamp } from "../../core/utils";
import { CrazygamesAdProvider } from "../ad_providers/crazygames";
import { GamedistributionAdProvider } from "../ad_providers/gamedistribution";
import { NoAdProvider } from "../ad_providers/no_ad_provider";
import { SteamAchievementProvider } from "../electron/steam_achievement_provider";
@ -22,13 +23,11 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
adProvider: NoAdProvider,
iframed: false,
externalLinks: true,
iogLink: true,
};
if (!G_IS_STANDALONE && !WEB_STEAM_SSO_AUTHENTICATED && queryParamOptions.embedProvider) {
const providerId = queryParamOptions.embedProvider;
this.embedProvider.iframed = true;
this.embedProvider.iogLink = false;
switch (providerId) {
case "armorgames": {
@ -38,7 +37,6 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
case "iogames.space": {
this.embedProvider.id = "iogames.space";
this.embedProvider.iogLink = true;
break;
}
@ -61,6 +59,7 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
case "crazygames": {
this.embedProvider.id = "crazygames";
this.embedProvider.adProvider = CrazygamesAdProvider;
break;
}

@ -140,7 +140,7 @@ function initializeSettings() {
options: Object.keys(LANGUAGES),
valueGetter: key => key,
textGetter: key => LANGUAGES[key].name,
category: enumCategories.general,
category: G_CHINA_VERSION || G_WEGAME_VERSION ? null : enumCategories.general,
restartRequired: true,
changeCb: (app, id) => null,
magicValue: "auto-detect",
@ -286,7 +286,10 @@ function initializeSettings() {
new BoolSetting("lowQualityMapResources", enumCategories.performance, (app, value) => {}),
new BoolSetting("disableTileGrid", enumCategories.performance, (app, value) => {}),
new BoolSetting("lowQualityTextures", enumCategories.performance, (app, value) => {}),
new BoolSetting("simplifiedBelts", enumCategories.performance, (app, value) => {}),
new BoolSetting("showKiwiClicker", null, (app, value) => {}),
];
}
@ -331,6 +334,8 @@ class SettingsStorage {
* @type {Object.<string, number>}
*/
this.keybindingOverrides = {};
this.showKiwiClicker = true;
}
}
@ -547,7 +552,7 @@ export class ApplicationSettings extends ReadWriteProxy {
}
getCurrentVersion() {
return 31;
return 32;
}
/** @param {{settings: SettingsStorage, version: number}} data */
@ -699,6 +704,11 @@ export class ApplicationSettings extends ReadWriteProxy {
data.version = 31;
}
if (data.version < 32) {
data.settings.showKiwiClicker = true;
data.version = 32;
}
// MODS
if (!THEMES[data.settings.theme] || !this.app.restrictionMgr.getHasExtendedSettings()) {
console.log("Resetting theme because its no longer available: " + data.settings.theme);

@ -203,6 +203,14 @@ export class InGameState extends GameState {
// do nothing
}
getIsIngame() {
return (
this.stage === GAME_LOADING_STATES.s10_gameRunning &&
this.core &&
!this.core.root.hud.shouldPauseGame()
);
}
/**
* Called when the game somehow failed to initialize. Resets everything to basic state and
* then goes to the main menu, showing the error

@ -30,11 +30,6 @@ export class LoginState extends GameState {
throw new Error("No next state id");
}
if (this.app.clientApi.isLoggedIn()) {
this.finishLoading();
return;
}
this.dialogs = new HUDModalDialogs(null, this.app);
const dialogsElement = document.body.querySelector(".modalDialogParent");
this.dialogs.initializeToElement(dialogsElement);

@ -4,6 +4,7 @@ import { GameState } from "../core/game_state";
import { DialogWithForm } from "../core/modal_dialog_elements";
import { FormElementInput } from "../core/modal_dialog_forms";
import { ReadWriteProxy } from "../core/read_write_proxy";
import { STOP_PROPAGATION } from "../core/signal";
import { WEB_STEAM_SSO_AUTHENTICATED } from "../core/steam_sso";
import {
formatSecondsToTimeAgo,
@ -41,8 +42,7 @@ export class MainMenuState extends GameState {
const showLanguageIcon = !G_CHINA_VERSION && !G_WEGAME_VERSION;
const showExitAppButton = G_IS_STANDALONE;
const showPuzzleDLC =
G_IS_DEV ||
(!G_WEGAME_VERSION && (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) && !G_IS_STEAM_DEMO);
!G_WEGAME_VERSION && (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) && !G_IS_STEAM_DEMO;
const showWegameFooter = G_WEGAME_VERSION;
const hasMods = MODS.anyModsActive();
@ -65,7 +65,8 @@ export class MainMenuState extends GameState {
}
const showDemoAdvertisement =
showExternalLinks && this.app.restrictionMgr.getIsStandaloneMarketingActive();
(showExternalLinks || G_CHINA_VERSION) &&
this.app.restrictionMgr.getIsStandaloneMarketingActive();
const ownsPuzzleDLC =
WEB_STEAM_SSO_AUTHENTICATED ||
@ -73,6 +74,8 @@ export class MainMenuState extends GameState {
!G_IS_STEAM_DEMO &&
/** @type { PlatformWrapperImplElectron}*/ (this.app.platformWrapper).dlcs.puzzle);
const showKiwiClicker = this.app.settings.getSetting("showKiwiClicker") && MODS.mods.length === 0;
const bannerHtml = `
<h3>${T.demoBanners.titleV2}</h3>
@ -99,11 +102,15 @@ export class MainMenuState extends GameState {
<a href="#" class="steamLink steam_dlbtn_0" target="_blank">
${
globalConfig.currentDiscount > 0
? `<span class='discount'>-${globalConfig.currentDiscount}%!</span>`
? `<span class='discount'>${T.global.discount.replace(
"<percentage>",
String(globalConfig.currentDiscount)
)}</span>`
: ""
}
Play shapez on Steam
</a>
${!G_IS_STEAM_DEMO ? `<span class="specialOffer">${T.global.discountSummerSale}</span>` : ""}
${!G_IS_STEAM_DEMO ? `<div class="onlinePlayerCount"></div>` : ""}
`;
@ -138,14 +145,18 @@ export class MainMenuState extends GameState {
<div class="buttons"></div>
<div class="savegamesMount"></div>
${
G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED
? ""
: `<div class="steamSso">
<span class="description">${T.mainMenu.playFullVersionV2}</span>
<a class="ssoSignIn" href="${
G_IS_STANDALONE || !WEB_STEAM_SSO_AUTHENTICATED
? `<div class="steamSso">
<span class="description">${
G_IS_STANDALONE
? T.mainMenu.playFullVersionStandalone
: T.mainMenu.playFullVersionV2
}</span>
<a class="ssoSignIn" target="_blank" href="${
this.app.clientApi.getEndpoint() + "/v1/noauth/steam-sso"
}">Sign in</a>
</div>`
: ""
}
${
WEB_STEAM_SSO_AUTHENTICATED
@ -191,10 +202,15 @@ export class MainMenuState extends GameState {
}
<div class="mainNews kiwiClicker">
${
showKiwiClicker
? `<div class="mainNews kiwiClicker">
<div class="text">Check out this small side project I am working on right now!</div>
<div class="close"></div>
</div>
</div>`
: ""
}
`
: ""
}
@ -258,7 +274,7 @@ export class MainMenuState extends GameState {
<div class="socialLinks">
${
showExternalLinks
showExternalLinks && (!G_IS_STANDALONE || G_IS_STEAM_DEMO)
? `<a class="steamLinkSocial boxLink" target="_blank">
<span class="thirdpartyLogo steamLogo"></span>
<span class="label">steam</span>
@ -447,6 +463,7 @@ export class MainMenuState extends GameState {
".steamLink": this.onSteamLinkClicked,
".steamLinkSocial": this.onSteamLinkClickedSocial,
".kiwiClicker": this.onKiwiClickerClicked,
".kiwiClicker .close": this.hideKiwiClicker,
".discordLink": () => {
this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.discord);
},
@ -568,6 +585,13 @@ export class MainMenuState extends GameState {
);
}
hideKiwiClicker() {
this.app.settings.updateSetting("showKiwiClicker", false);
this.app.settings.save();
this.htmlElement.querySelector(".kiwiClicker").remove();
return STOP_PROPAGATION;
}
onBackButtonClicked() {
this.renderMainMenu();
this.renderSavegames();

@ -1,8 +1,9 @@
import { CHANGELOG } from "../changelog";
import { cachebust } from "../core/cachebust";
import { globalConfig } from "../core/config";
import { globalConfig, THIRDPARTY_URLS } from "../core/config";
import { GameState } from "../core/game_state";
import { createLogger } from "../core/logging";
import { queryParamOptions } from "../core/query_parameters";
import { authorizeViaSSOToken } from "../core/steam_sso";
import { getLogoSprite, timeoutPromise } from "../core/utils";
import { getRandomHint } from "../game/hints";
@ -48,19 +49,48 @@ export class PreloadState extends GameState {
}
async fetchDiscounts() {
await timeoutPromise(
fetch("https://analytics.shapez.io/v1/discounts")
.then(res => res.json())
.then(data => {
globalConfig.currentDiscount = Number(
data["1318690"].data.price_overview.discount_percent
);
logger.log("Fetched current discount:", globalConfig.currentDiscount);
}),
2000
).catch(err => {
logger.warn("Failed to fetch current discount:", err);
});
// Summer sale specific
globalConfig.currentDiscount = 60;
// Regular
// await timeoutPromise(
// fetch("https://analytics.shapez.io/v1/discounts")
// .then(res => res.json())
// .then(data => {
// globalConfig.currentDiscount = Number(data["1318690"].data.price_overview.discount_percent);
// logger.log("Fetched current discount:", globalConfig.currentDiscount);
// }),
// 2000
// ).catch(err => {
// logger.warn("Failed to fetch current discount:", err);
// });
}
async sendBeacon() {
if (G_IS_STANDALONE && !G_IS_STEAM_DEMO) {
return;
}
if (queryParamOptions.campaign) {
fetch(
"https://analytics.shapez.io/campaign/" +
queryParamOptions.campaign +
"?lpurl=nocontent&fbclid=" +
(queryParamOptions.fbclid || "") +
"&gclid=" +
(queryParamOptions.gclid || "")
).catch(err => {
console.warn("Failed to send beacon:", err);
});
}
if (queryParamOptions.embedProvider) {
fetch(
"https://analytics.shapez.io/campaign/embed_" +
queryParamOptions.embedProvider +
"?lpurl=nocontent"
).catch(err => {
console.warn("Failed to send beacon:", err);
});
}
}
onLeave() {
@ -69,8 +99,18 @@ export class PreloadState extends GameState {
startLoading() {
this.setStatus("Booting", 0)
.then(() => {
try {
window.localStorage.setItem("local_storage_feature_detection", "1");
} catch (ex) {
throw new Error(
"Could not access local storage. Make sure you are not playing in incognito mode and allow thirdparty cookies!"
);
}
})
.then(() => this.setStatus("Creating platform wrapper", 3))
.then(() => this.sendBeacon())
.then(() => authorizeViaSSOToken(this.app, this.dialogs))
.then(() => this.app.platformWrapper.initialize())
@ -317,12 +357,6 @@ export class PreloadState extends GameState {
${this.currentStatus} failed:<br/>
${text}
</div>
<div class="supportHelp">
Please send me an email with steps to reproduce and what you did before this happened:
<br /><a class="email" href="mailto:${email}?subject=App%20does%20not%20launch">${email}</a>
</div>
<div class="lower">
<button class="resetApp styledButton">Reset App</button>
<i>Build ${G_BUILD_VERSION} @ ${G_BUILD_COMMIT_HASH}</i>

@ -88,8 +88,7 @@ export class SettingsState extends TextualGameState {
for (let i = 0; i < this.app.settings.settingHandles.length; ++i) {
const setting = this.app.settings.settingHandles[i];
if ((G_CHINA_VERSION || G_WEGAME_VERSION) && setting.id === "language") {
if (!setting.categoryId) {
continue;
}
@ -170,7 +169,7 @@ export class SettingsState extends TextualGameState {
initSettings() {
this.app.settings.settingHandles.forEach(setting => {
if ((G_CHINA_VERSION || G_WEGAME_VERSION) && setting.id === "language") {
if (!setting.categoryId) {
return;
}

@ -52,6 +52,8 @@ global:
space: SPACE
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo Version
intro: |-
@ -99,6 +101,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -55,6 +55,8 @@ global:
space: ESPAI
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo - Versió de prova
intro: |-
@ -103,6 +105,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -51,6 +51,8 @@ global:
space: SPACE
loggingIn: Přihlašuji
loadingResources: Stahování dalších zdrojů (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo verze
intro: |-
@ -99,6 +101,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -53,6 +53,8 @@ global:
space: MELLEMRUM
loggingIn: Logging in
loadingResources: Downloader yderligere ressourcer (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demoversion
intro: |-
@ -100,6 +102,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -55,6 +55,8 @@ global:
shift: UMSCH
space: LEER
loadingResources: Lade zusätzliche Ressourcen (<percentage> %)
discount: -<percentage>%
discountSummerSale: SONDERANGEBOT! Angebot endet am 7. Juli
demoBanners:
title: Demoversion
titleV2: "Spiele jetzt die Vollversion für:"
@ -103,7 +105,9 @@ mainMenu:
Vollversion im Browser!
playingFullVersion: Du spielst jetzt die Vollversion!
logout: Ausloggen
noActiveSavegames: Keine Speicherstände gefunden - Klicke Spielen um ein neues Spiel zu starten!
noActiveSavegames: Keine Speicherstände gefunden - Klicke Spielen um ein neues
Spiel zu starten!
playFullVersionStandalone: You can now also play the full version in your Browser!
puzzleMenu:
play: Spielen
edit: Bearbeiten

@ -55,6 +55,8 @@ global:
space: SPACE
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo Version
intro: |-
@ -103,6 +105,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -58,6 +58,9 @@ global:
# What symbol to use to separate the integer part from the fractional part of a number, e.g. "0.4"
decimalSeparator: "."
discount: -<percentage>%
discountSummerSale: "SPECIAL PROMOTION! Offer ends 7 July"
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
suffix:
thousands: k
@ -133,6 +136,7 @@ mainMenu:
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bought shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
playingFullVersion: You are now playing the full version!
logout: Logout

@ -54,7 +54,9 @@ global:
shift: SHIFT
space: ESPACIO
loggingIn: Iniciando sesión
loadingResources: Downloading additional resources (<percentage> %)
loadingResources: Descargando recursos adicionales (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Versión de prueba
intro: >-
@ -97,15 +99,18 @@ mainMenu:
puzzleDlcText: ¿Disfrutas compactando y optimizando fábricas? ¡Consigue ahora el
DLC de Puzles en Steam para aún más diversión!
puzzleDlcWishlist: ¡Añádelo ahora a tu lista de deseos!
puzzleDlcViewNow: Ver Dlc
puzzleDlcViewNow: Ver DLC
mods:
title: Active Mods
warningPuzzleDLC: Playing the Puzzle DLC is not possible with mods. Please
disable all mods to play the DLC.
playingFullVersion: You are now playing the full version!
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
title: Mods Activos
warningPuzzleDLC: No es posible jugar el DLC Puzzle con mods. Por favor
desactiva todos los mods para jugar el DLC.
playingFullVersion: ¡Estás jugando la versión completa!
logout: Cerrar Sesión
noActiveSavegames: No se encontraron partidas guardadas activas - ¡Haz click en
Jugar para empezar una nueva partida!
playFullVersionV2: Has comprado shapez en Steam? ¡Juega la versión completa
desde tu navegador!
playFullVersionStandalone: ¡Ahora puedes jugar la versión completa desde tu navegador!
dialogs:
buttons:
ok: OK
@ -230,7 +235,7 @@ dialogs:
title: Fallo al cargar los Puzles
desc: Desafortunadamente, no se pudieron cargar los puzles.
submitPuzzle:
title: Enviar Puzzle
title: Enviar Puzle
descName: "Nombra tu puzle:"
descIcon: "Por favor ingresa una clave única, que será el icono de tu puzle
(Puedes generarlas <link>aquí</link>, o escoger una de las formas
@ -291,36 +296,38 @@ dialogs:
title: ¿Eliminar Puzle?
desc: ¿Estas seguro de querer eliminar '<title>'? ¡Esto no se puede deshacer!
modsDifference:
title: Mod Warning
desc: The currently installed mods differ from the mods the savegame was created
with. This might cause the savegame to break or not load at all. Are
you sure you want to continue?
missingMods: Missing Mods
newMods: Newly installed Mods
title: Advertencia por Mod
desc: Los mods instalados actualmente difieren a los mods de la partida guardada
en el momento de la creación. Esto puede causar que la partida
guardada se corrompa o no funcione. ¿Estás seguro de querer
consitnuar?
missingMods: Mods Faltantes
newMods: Mods Nuevos Instalados
resourceLoadFailed:
title: Resources failed to load
demoLinkText: shapez demo on Steam
descWeb: "One ore more resources could not be loaded. Make sure you have a
stable internet connection and try again. If this still doesn't
work, make sure to also disable any browser extensions (including
adblockers).<br><br> As an alternative, you can also play the
<demoOnSteamLinkText>. <br><br> Error Message:"
descSteamDemo: "One ore more resources could not be loaded. Try restarting the
game - If that does not help, try reinstalling and verifying the
game files via Steam. <br><br> Error Message:"
title: Recursos fallaron en cargar
demoLinkText: Demo de shapez en Steam
descWeb: "Uno o más recrusos no pudieron cargar. Asegurate de tener una conexión
estable de internet y vuelve a intentar. Si todavía no funciona,
asegurate de tambien desactivar extensiones del navegador
(incluyendo adblockers).<br><br> Como alternativa, puedes tambien
jugar el <demoOnSteamLinkText>. <br><br> Mensaje de Error:"
descSteamDemo: "Uno o más recursos no puedieron cargar. Intenta reiniciar el
juego - Si eso no ayuda, intenta reinstalar y verificar los archivos
del juego en Steam. <br><br> Mensaje de Error:"
steamSsoError:
title: Full Version Logout
desc: You have been logged out from the Full Browser Version since either your
network connection is unstable or you are playing on another
device.<br><br> Please make sure you don't have shapez open in any
other browser tab or another computer with the same Steam
account.<br><br> You can login again in the main menu.
title: Cierre de sesión de versión completa
desc: Se te ha cerrado sesión desde la versión completa por navegaador debido a
que tu conexión de internet es inestable o estás jugando desde otro
dispositivo.<br><br> Por favor asegurate de que no tienes shapez
abierto en otra pestaña del navegador o en otra computadora con la
misma cuenta de Steam.<br><br> Puedes iniciar sesión nuevamente
desde el menú principal.
steamSsoNoOwnership:
title: Full Edition not owned
desc: In order to play the Full Edition in your Browser, you need to own both
the base game and the Puzzle DLC on your Steam account.<br><br>
Please make sure you own both, signed in with the correct Steam
account and then try again.
title: No eres dueño de la Edición completa
desc: En orden de poder jugar la versión completa en tu nevagador, debes comprar
el juego base y el DLC Puzzle desde tu cuenta de Steam.<br><br> Por
favor asegurate de tener ambos, iniciendo sesión con la cuenta
correcta de Steam y vuelve a intentar.
ingame:
keybindingsOverlay:
moveMap: Mover
@ -468,7 +475,7 @@ ingame:
desc: Presiona aquí para ver que tiene la versión de Steam!
get_on_steam: Consiguelo en Steam
standaloneAdvantages:
no_thanks: ¡No grácias!
no_thanks: ¡No gracias!
points:
levels:
title: 12 nuevos niveles
@ -492,11 +499,11 @@ ingame:
title: Logros
desc: Atrapalos a todos!
mods:
title: Modding support!
desc: Over 80 mods available!
titleV2: "Get the full version now on Steam to unlock:"
titleExpiredV2: Demo completed!
titleEnjoyingDemo: Enjoy the demo?
title: ¡Soporte de Modificaciones!
desc: ¡Más de 80 modificaciones disponibles!
titleV2: "Obten la versión completa en Steam para desbloquear:"
titleExpiredV2: ¡Demo completada!
titleEnjoyingDemo: ¿Estás disfrutando la demo?
puzzleEditorSettings:
zoneTitle: Área
zoneWidth: Anchura
@ -506,7 +513,7 @@ ingame:
share: Compartir
report: Reportar
clearBuildings: Borrar Edificios
resetPuzzle: Reiniciar Puzzle
resetPuzzle: Reiniciar Puzle
puzzleEditorControls:
title: Editor de Puzles
instructions:
@ -534,7 +541,7 @@ ingame:
titleRatingDesc: Tu puntuación me ayudará a hacerte mejores sugerencias en el futuro
continueBtn: Continuar Jugando
menuBtn: Menú
nextPuzzle: Siguiente Puzzle
nextPuzzle: Siguiente Puzle
puzzleMetadata:
author: Autor
shortKey: Clave
@ -1128,7 +1135,7 @@ keybindings:
massSelect: Selección masiva
buildings: Atajos de edificios
placementModifiers: Modificadores de colocación
mods: Provided by Mods
mods: Provisto por Mods
mappings:
confirm: Confirmar
back: Atrás
@ -1242,7 +1249,7 @@ tips:
- Tener una buena proporción entre edificion maximizará su eficiencia
- A su máximo nivel, 5 extractores llenarán por completo una cinta
transportadora.
- ¡No te olvides de utilizár túneles!
- ¡No te olvides de utilizar túneles!
- No es necesario dividir los items de manera uniforme para conseguír la
mayor eficiencia.
- Mantener apretado <b>SHIFT</b> activará el planeador de cintas,
@ -1308,7 +1315,7 @@ puzzleMenu:
loadPuzzle: Cargar
reviewPuzzle: Revisar y Publicar
validatingPuzzle: Validando Puzle
submittingPuzzle: Enviando Puzzle
submittingPuzzle: Enviando Puzle
noPuzzles: Ahora mismo no hay puzles en esta sección.
categories:
levels: Niveles
@ -1349,7 +1356,7 @@ puzzleMenu:
derecho a shapez.io en tu biblioteca, selecionando propiedades > DLCs.
search:
action: Buscar
placeholder: Escribe un nombre de puzzle o autor
placeholder: Escribe un nombre de puzle o autor
includeCompleted: Incluir completado
difficulties:
any: Cualquier dificultad
@ -1391,20 +1398,22 @@ backendErrors:
no-permission: No tienes los permisos necesarios para llevar a cabo esta acción.
mods:
title: Mods
author: Author
version: Version
modWebsite: Website
openFolder: Open Mods Folder
folderOnlyStandalone: Opening the mod folder is only possible when running the standalone.
browseMods: Browse Mods
modsInfo: To install and manage mods, copy them to the mods folder within the
game directory. You can also use the 'Open Mods Folder' button on the
top right.
noModSupport: You need the standalone version on Steam to install mods.
author: Autor
version: Versión
modWebsite: Pagina Web
openFolder: Abrir Carpeta de Mods
folderOnlyStandalone: Solo es posible abrir la carpeta de mods corriendo la
versión de escritorio.
browseMods: Examinar Mods
modsInfo: Para instalar y manejar mods, copialos en la carpeta de mods dentro
del directorio del juego. Tambien puedes usar el boton 'Abrir Carpeta de
Mods' en la esquina superior derecha.
noModSupport: Necesitas la versión de escritorio de Steam para instalar mods.
togglingComingSoon:
title: Coming Soon
description: Enabling or disabling mods is currently only possible by copying
the mod file from or to the mods/ folder. However, being able to
toggle them here is planned for a future update!
browserNoSupport: Due to browser restrictions it is currently only possible to
install mods in the Steam version - Sorry!
title: Proximamente
description: Solo es posible activar o desactivar mods copiando o removiendo el
archivo del mod desde o en la carpeta mods/. Sin embargo, la
posibilidad de activarlos o desactivarlos aquí está planeada para
una actualización futura!
browserNoSupport: Debido a restricciones del navegador, solo es posible instalar
mods en la versión de Steam - Disculpas!

@ -55,6 +55,8 @@ global:
space: VÄLILYÖNTI
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demoversio
intro: |-
@ -89,20 +91,22 @@ mainMenu:
savegameLevel: Taso <x>
savegameLevelUnknown: Tuntematon taso
savegameUnnamed: Nimetön
puzzleMode: Puzzle Mode
back: Back
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
DLC now on Steam for even more fun!
puzzleDlcWishlist: Wishlist now!
puzzleDlcViewNow: View Dlc
puzzleMode: Pulmatila
back: Takaisin
puzzleDlcText: Nautitko tehtaiden pienentämisestä ja optimoinnista? Hanki pulma
DLC nyt Steamista lisähuviksi!
puzzleDlcWishlist: Lisää nyt toivelistallesi!
puzzleDlcViewNow: Katso DLC
mods:
title: Active Mods
warningPuzzleDLC: Playing the Puzzle DLC is not possible with mods. Please
disable all mods to play the DLC.
playingFullVersion: You are now playing the full version!
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
title: Aktiiviset modit
warningPuzzleDLC: Pulma DLC:n pelaaminen ei ole mahdollista modien kanssa. kytke
kaikki modit pois päältä pelataksesi DLC:tä.
playingFullVersion: Pelaat nyt täyttä versiota!
logout: Kirjaudu ulos
noActiveSavegames: Aktiivisia pelitallennuksia ei löytynyt - Klikkaa pelaa
aloittaaksesi uuden pelin!
playFullVersionV2: Ostitko Shapezin Steamista? Pelaa täyttä versiota selaimellasi!
playFullVersionStandalone: Voit nyt myös pelatatäyttä versiota selaimellasi!
dialogs:
buttons:
ok: OK
@ -116,9 +120,9 @@ dialogs:
viewUpdate: Näytä päivitys
showUpgrades: Näytä päivitykset
showKeybindings: Näytä pikanäppäimet
retry: Retry
continue: Continue
playOffline: Play Offline
retry: Yritä uudelleen
continue: Jatka
playOffline: Pelaa Offline-tilassa
importSavegameError:
title: Tuontivirhe
text: "Tallennuksen tuonti epäonnistui:"
@ -215,51 +219,51 @@ dialogs:
title: Ohjevideo saatavilla
desc: Tästä tasosta on saatavilla ohjevideo! Haluaisitko katsoa sen?
editConstantProducer:
title: Set Item
title: Aseta Muoto
puzzleLoadFailed:
title: Puzzles failed to load
desc: "Unfortunately the puzzles could not be loaded:"
title: Pulman lataus epäonnistui
desc: "Valitettavasti pulmaa ei pystytty lataamaan:"
submitPuzzle:
title: Submit Puzzle
descName: "Give your puzzle a name:"
descIcon: "Please enter a unique short key, which will be shown as the icon of
your puzzle (You can generate them <link>here</link>, or choose one
of the randomly suggested shapes below):"
placeholderName: Puzzle Title
title: Toimita Pulma
descName: "Anna pulmallesi nimi:"
descIcon: "Syötä yksilöllinen lyhyt avain, joka tulee olemaan pulmasi kuvake
(Voit generoida sen <link>täällä</link>, tai valitse yksi
satunnaisesti ehdotetuista muodoista alta):"
placeholderName: Pulman Nimi
puzzleResizeBadBuildings:
title: Resize not possible
desc: You can't make the zone any smaller, because then some buildings would be
outside the zone.
title: Koon muuttaminen ei ole mahdollista
desc: Et voi tehdä alueesta pienempää, koska jotkin rakennukset jäisivät alueen
ulkopuolelle.
puzzleLoadError:
title: Bad Puzzle
desc: "The puzzle failed to load:"
title: Huono Pulma
desc: "Pulman lataus epäonnistui:"
offlineMode:
title: Offline Mode
desc: We couldn't reach the servers, so the game has to run in offline mode.
Please make sure you have an active internet connection.
title: Offline tila
desc: Emme pystyneet tavoittamaan palvelinta, joten pelin täytyy olla offline
tilassa. Tarkista että sinulla on aktiivinen internet-yhteys.
puzzleDownloadError:
title: Download Error
desc: "Failed to download the puzzle:"
title: Latausvirhe
desc: "Pulman lataus epäonnistui:"
puzzleSubmitError:
title: Submission Error
desc: "Failed to submit your puzzle:"
title: Toimitusvirhe
desc: "Pulman toimitus epäonnistui:"
puzzleSubmitOk:
title: Puzzle Published
desc: Congratulations! Your puzzle has been published and can now be played by
others. You can now find it in the "My puzzles" section.
title: Pulma Julkaistu
desc: Onnittelut! Pulmasi on nyt julkaistu ja muut voivat pelata sitä. Voit nyt
löytää sen "Omat pulmani" osiosta.
puzzleCreateOffline:
title: Offline Mode
desc: Since you are offline, you will not be able to save and/or publish your
puzzle. Would you still like to continue?
title: Offline Tila
desc: Koska olet offline-tilassa, et voi tallentaa ja/tai julkaista pulmaasi.
Haluatko silti jatkaa?
puzzlePlayRegularRecommendation:
title: Recommendation
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
before attempting the puzzle DLC, otherwise you may encounter
mechanics not yet introduced. Do you still want to continue?
title: Suositus
desc: Suosittelen <strong>suuresti</strong> pelata tavallista peliä tasolle 12
ennen pulma DLC:n yrittämistä, muuten voit kohdata mekaniikkoja
joita ei ole esitelty. Haluatko silti jatkaa?
puzzleShare:
title: Short Key Copied
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
can be entered in the puzzle menu to access the puzzle.
title: Lyhyt Avain Kopioitu
desc: Pulman lyhyt avain (<key>) on kopioitu leikepöydällesi! Se voidaan syöttää
pulmavalikossa pulmaan pääsemiseksi.
puzzleReport:
title: Report Puzzle
options:

@ -52,6 +52,8 @@ global:
space: ESPACE
loggingIn: Se connecter
loadingResources: Chargement de ressources supplémentaires (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Version de démo
intro: >-
@ -102,6 +104,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -51,6 +51,8 @@ global:
space: SPACE
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: גרסאת דמו
intro: |-
@ -98,6 +100,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: אישור

@ -54,6 +54,8 @@ global:
space: SPACE
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo Verzija
intro: |-
@ -101,6 +103,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -52,6 +52,8 @@ global:
space: SZÓKÖZ
loggingIn: Bejelentkezés
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demó verzió
intro: |-
@ -100,6 +102,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -52,6 +52,8 @@ global:
space: SPACE
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Versi Demo
intro: |-
@ -99,6 +101,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -55,6 +55,8 @@ global:
space: SPAZIO
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Versione Demo
intro: |-
@ -104,6 +106,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -47,6 +47,8 @@ global:
space: SPACE
loggingIn: Logging in
loadingResources: 追加リソースのダウンロード(<percentage>
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: デモ版
intro: |-
@ -93,6 +95,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK
@ -393,9 +396,11 @@ 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>そして
@ -681,14 +686,16 @@ 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: 混色
@ -707,7 +714,8 @@ 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
@ -732,7 +740,8 @@ storyRewards:
通常の着色機と同様に機能しますが、ひとつの色の消費で<strong>一度に2つの形</strong>を着色処理できます!
reward_storage:
title: ストレージ
desc: <strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br>
desc:
<strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br>
左側の出力を優先するため、<strong>オーバーフローゲート</strong>としても使用できます!
reward_blueprints:
title: ブループリント
@ -751,7 +760,8 @@ storyRewards:
設定で<strong>ヒントを有効にする</strong>と、 ワイヤのチュートリアルが有効になります。"
reward_filter:
title: アイテムフィルタ
desc: <strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
desc:
<strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
また、真偽値(0/1)信号を入力すれば全てのアイテムの通過・非通過を制御できます。
reward_display:
title: ディスプレイ
@ -760,11 +770,13 @@ 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:
@ -776,7 +788,8 @@ storyRewards:
- ワイヤでイカしたものを作る。<br><br> - 今までのように工場を建設する。<br><br> いずれにしても、楽しんでください!
no_reward:
title: 次のレベル
desc: "このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 -
desc:
"このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 -
生産された形は<strong>すべて</strong>、後で<strong>アップグレードの解除</strong>に必要になります!"
no_reward_freeplay:
title: 次のレベル
@ -902,7 +915,8 @@ settings:
description: 配置用のグリッドを無効にして、パフォーマンスを向上させます。 これにより、ゲームの見た目もすっきりします。
clearCursorOnDeleteWhilePlacing:
title: 右クリックで配置をキャンセル
description: デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。
description:
デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。
無効にすると、建物の設置中に右クリックで建物を削除できます。
lowQualityTextures:
title: 低品質のテクスチャ(視認性低下)

@ -49,6 +49,8 @@ global:
space: SPACE
loggingIn: 로그인 중
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: 체험판 버전
intro: |-
@ -72,7 +74,8 @@ mainMenu:
openSourceHint: 이 게임은 오픈 소스입니다!
discordLink: 공식 디스코드 서버
helpTranslate: 번역을 도와주세요!
browserWarning: 이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나
browserWarning:
이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나
Google Chrome 브라우저를 다운로드하세요.
savegameLevel: 레벨 <x>
savegameLevelUnknown: 미확인 레벨
@ -93,6 +96,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: 확인
@ -148,7 +152,8 @@ dialogs:
desc: 지난번 플레이 이후 변경 사항은 다음과 같습니다.
upgradesIntroduction:
title: 업그레이드 하기
desc: <strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다.
desc:
<strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다.
업그레이드 버튼은 화면의 오른쪽 위에 있습니다.
massDeleteConfirm:
title: 삭제 확인
@ -161,7 +166,8 @@ dialogs:
desc: 12 레벨부터 청사진 기능이 해금됩니다!
keybindingsIntroduction:
title: 유용한 조작법
desc: "이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은
desc:
"이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은
<strong>조작법 설정</strong>을 참고해주세요!<br><br> <code
class='keybinding'>CTRL</code> + 드래그: 영역을 선택합니다.<br> <code
class='keybinding'>SHIFT</code>: 누르는 동안 같은 건물을 여러개 배치할 수 있습니다.<br>
@ -175,7 +181,8 @@ dialogs:
desc: 체험판 버전에서는 마커를 2개 까지만 배치할 수 있습니다. 정식 버전을 구입하면 마커를 무제한으로 배치할 수 있습니다!
exportScreenshotWarning:
title: 스크린샷 내보내기
desc: 당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우
desc:
당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우
게임이 중단될 수 있습니다!
massCutInsufficientConfirm:
title: 자르기 확인
@ -201,7 +208,8 @@ dialogs:
submitPuzzle:
title: 퍼즐 보내기
descName: "퍼즐에 이름을 지어 주세요:"
descIcon: "퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형
descIcon:
"퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형
중 하나를 선택하세요):"
placeholderName: 퍼즐 제목
puzzleResizeBadBuildings:
@ -227,7 +235,8 @@ dialogs:
desc: 오프라인 모드임으로 퍼즐을 저장하거나 업로드할 수 없습니다. 그래도 계속하시겠습니까?
puzzlePlayRegularRecommendation:
title: 권장 사항
desc: 퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을
desc:
퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을
<strong>강력히</strong> 권장드립니다. 그래도 계속하시겠습니까?
puzzleShare:
title: 짧은 키 복사됨
@ -358,25 +367,31 @@ 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>하고 허브와
@ -384,10 +399,12 @@ 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> 추신:
모든 입력을 연결할 필요는 없습니다! 두개만 연결해 보세요."
1_2_hold_and_drag: 잡고 드래그Przytrzymaj i przeciągnij
colors:
@ -517,11 +534,13 @@ buildings:
cutter:
default:
name: 절단기
description: 도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우
description:
도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우
절단기가 막혀 멈추게 됩니다!</strong>
quad:
name: 4단 절단기
description: 도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀
description:
도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀
멈추게 됩니다!</strong>
rotater:
default:
@ -536,7 +555,8 @@ buildings:
stacker:
default:
name: 결합기
description: 도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽
description:
도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽
도형 위에 쌓이게 됩니다.
mixer:
default:
@ -551,7 +571,8 @@ buildings:
description: 색소를 이용해 도형을 색칠합니다. 위쪽에서 받는 색소로 왼쪽에서 받는 도형 전체를 색칠합니다.
quad:
name: 4단 색칠기
description: 도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가
description:
도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가
있는 슬롯만 칠해집니다!
mirrored:
name: 색칠기
@ -598,7 +619,8 @@ buildings:
lever:
default:
name: 스위치
description: 전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데
description:
전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데
사용될 수 있습니다.
logic_gate:
default:
@ -609,7 +631,8 @@ buildings:
description: 입력이 거짓일 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을 의미합니다).
xor:
name: XOR 회로
description: 입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을
description:
입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을
의미합니다).
or:
name: OR 회로
@ -676,7 +699,8 @@ buildings:
storyRewards:
reward_cutter_and_trash:
title: 절단기
desc: <strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라
desc:
<strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라
<strong>반으로 나눕니다</strong>!<br><br> 쓰지 않는 도형은 쓰레기로 처리하세요, 그렇지 않으면
<strong>작동을 멈출 것입니다</strong>! 이러한 목적을 위해 <strong>휴지통</strong>도 함께
지급되었습니다. 휴지통에 들어간 것은 모두 파괴됩니다!
@ -685,7 +709,8 @@ storyRewards:
desc: <strong>회전기</strong>가 잠금 해제되었습니다! 회전기는 들어오는 도형을 시계 방향으로 90도 회전시켜줍니다.
reward_painter:
title: 색칠기
desc: "<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된
desc:
"<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된
도형을 만들도록 하세요!<br><br>추신: 만약 당신이 색맹이라면, 설정에서 <strong>색맹 모드</strong>를
활성화하세요!"
reward_mixer:
@ -694,24 +719,28 @@ 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:
@ -720,15 +749,18 @@ 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: 자유플레이
@ -738,32 +770,38 @@ 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: 디스플레이
@ -771,32 +809,37 @@ 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:
@ -817,7 +860,8 @@ settings:
labels:
uiScale:
title: UI 크기
description: 사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를
description:
사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를
제어합니다.
scales:
super_small: 매우 작게
@ -864,15 +908,18 @@ settings:
light: 라이트
refreshRate:
title: 틱 빈도
description: 이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은
description:
이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은
틱 빈도에서는 처리량이 정확하지 않을 수 있습니다.
alwaysMultiplace:
title: 다수 배치 항시 켜기
description: 활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속
description:
활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속
누르는 것과 같습니다.
offerHints:
title: 힌트와 튜토리얼
description: 게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지
description:
게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지
특정한 UI 요소를 숨깁니다.
enableTunnelSmartplace:
title: 지능적인 터널 배치
@ -901,7 +948,8 @@ settings:
description: 색맹 사용자를 위해 게임을 플레이하는 데 도움을 주는 다양한 도구를 활성화합니다.
rotationByBuilding:
title: 건물 유형에 따른 방향
description: 각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이
description:
각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이
방법이 더욱 편할 수 있습니다.
soundVolume:
title: 효과음 볼륨
@ -917,7 +965,8 @@ settings:
description: 성능 향상을 위해 타일 그리드를 비활성화할 수 있습니다. 이 역시 게임을 더욱 깨끗하게 보여줍니다!
clearCursorOnDeleteWhilePlacing:
title: 우클릭 시 커서 지우기
description: 기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을
description:
기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을
커서에 선택한 채로 우클릭하면 바로 건물을 삭제할 수 있습니다.
lowQualityTextures:
title: 저품질 텍스처 (못생김)
@ -930,7 +979,8 @@ settings:
description: 기본적으로 활성화되어 있으며, 자원 패치에서 피펫 기능을 사용 시 즉시 추출기를 선택합니다.
simplifiedBelts:
title: 벨트 단순화 (못생김)
description: 성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
description:
성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
심각한 성능 문제가 일어나지 않는 한, 이 설정을 사용할 필요는 없습니다.
enableMousePan:
title: 화면 가장자리 패닝
@ -1148,7 +1198,8 @@ puzzleMenu:
medium: 중간
hard: 어려움
unknown: Unrated
dlcHint: DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서
dlcHint:
DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서
활성화되었는지 확인해주세요.
search:
action: Search
@ -1198,7 +1249,8 @@ mods:
noModSupport: 모드를 사용하기 위해 정식버전이 필요합니다.
togglingComingSoon:
title: 곧 업데이트 됩니다!
description: 지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고
description:
지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고
끌수 있는 기능은 추후 업데이트될 예정입니다. 모드폴더에 넣고/빼는것으로 할수있습니다. 모드를 토글하는 기능은 곧 업데이트
됩니다!
browserNoSupport: Due to browser restrictions it is currently only possible to

@ -54,6 +54,8 @@ global:
space: SPACE
loggingIn: Prisijungiama
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo Versija
intro: |-
@ -102,6 +104,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -55,6 +55,8 @@ global:
space: SPATIE
loggingIn: Inloggen
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demoversie
intro: |-
@ -103,6 +105,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -55,6 +55,8 @@ global:
space: MELLOMROM
loggingIn: Logger inn
loadingResources: Laster ned tilleggsressurser (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo Versjon
intro: |-
@ -103,6 +105,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -55,6 +55,8 @@ global:
space: SPACJA
loggingIn: Logowanie
loadingResources: Pobieranie dodatkowych zasobów (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Wersja demonstracyjna
intro: |-
@ -102,6 +104,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: Ok

@ -54,6 +54,8 @@ global:
space: Espaço
loggingIn: Entrando
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Versão Demo
intro: |-
@ -102,6 +104,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -53,8 +53,10 @@ global:
escape: ESC
shift: SHIFT
space: SPACE
loggingIn: Logging in
loggingIn: A conectar
loadingResources: A Baixar recursos adicionais (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Versão Demo
intro: |-
@ -101,8 +103,9 @@ mainMenu:
desativa todos os modos antes de jogares o DLC
playingFullVersion: Estás agora a jogar a versão completa!
logout: Desconectar
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
noActiveSavegames: Não foram encontrados savegames - Clica para começar um jogo novo!
playFullVersionV2: Compraste o Shapez na Steam? Joga a versão completa no teu Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK
@ -180,8 +183,8 @@ dialogs:
desc: "Este jogo tem vários Atalhos que tornarão mais fácil a construção de
grandes fábricas. Aqui estão alguns, mas <strong>verifica os
restantes Atalhos</strong>!<br><br> <code
class='keybinding'>CTRL</code> + Drag: Seleciona a área para copiar
/ eliminar.<br> <code class='keybinding'>SHIFT</code>: Mantém
class='keybinding'>CTRL</code> + Arrasta: Seleciona a área para
copiar / eliminar.<br> <code class='keybinding'>SHIFT</code>: Mantém
pressionado para colocar várias construções.<br> <code
class='keybinding'>ALT</code>: Inverte as posições.<br>"
createMarker:
@ -362,7 +365,7 @@ ingame:
notifications:
newUpgrade: Está disponível um novo upgrade!
gameSaved: O teu jogo foi guardado.
freeplayLevelComplete: Level <level> has been completed!
freeplayLevelComplete: Nível <level> completo!
shop:
title: Upgrades
buttonUnlock: Upgrade
@ -1107,8 +1110,8 @@ settings:
zoom out).
shapeTooltipAlwaysOn:
title: Shape Tooltip - Mostrar Sempre
description: Whether to always show the shape tooltip when hovering buildings,
instead of having to hold 'ALT'.
description: Mostrar sempre a shape tooltip quando passar sobre construções, em
vez de pressionar 'ALT'.
rangeSliderPercentage: <amount> %
tickrateHz: <amount> Hz
newBadge: Novo!
@ -1186,10 +1189,10 @@ keybindings:
comparator: Comparador
item_producer: Produtor de Itens (Sandbox)
copyWireValue: "Fios: Copia o valor debaixo do cursor"
rotateToUp: "Rotate: Point Up"
rotateToDown: "Rotate: Point Down"
rotateToRight: "Rotate: Point Right"
rotateToLeft: "Rotate: Point Left"
rotateToUp: "Rotação: Para cima"
rotateToDown: "Rotação: Para baixo"
rotateToRight: "Rotação: Para a diretia"
rotateToLeft: "Rotação: Para a esquerda"
constant_producer: Produtor Constante
goal_acceptor: Recetor de Objetivo
block: Bloqueador

@ -55,6 +55,8 @@ global:
space: SPACE
loggingIn: Logare
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Versiunea Demo
intro: |-
@ -104,6 +106,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

File diff suppressed because it is too large Load Diff

@ -55,6 +55,8 @@ global:
space: SPACE
loggingIn: Logging in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo Version
intro: |-
@ -102,6 +104,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -53,6 +53,8 @@ global:
space: SPACE
loggingIn: Prijavljivanje
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Probna Verzija
intro: |-
@ -101,6 +103,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -54,6 +54,8 @@ global:
space: MELLANSLAG
loggingIn: Loggar in
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Demo-version
intro: |-
@ -103,6 +105,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -52,7 +52,9 @@ global:
shift: SHIFT
space: SPACE
loggingIn: Giriş yapılıyor
loadingResources: Downloading additional resources (<percentage> %)
loadingResources: Ek kaynaklar indiriliyor... (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Deneme Sürümü
intro: |-
@ -101,6 +103,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: OK

@ -54,6 +54,8 @@ global:
space: SPACE
loggingIn: Вхід у систему
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: Демо-версія
intro: |-
@ -102,6 +104,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: Гаразд
@ -448,10 +451,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: Не обов''язково підключати всі входи!
Спробуйте підключити лише два.'
1_2_hold_and_drag: Утримуйте і перетягніть
connectedMiners:
one_miner: 1 Екстрактор

@ -51,6 +51,8 @@ global:
space: 空格键
loggingIn: 登录
loadingResources: Downloading additional resources (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: 试玩版
intro: 购买完整版以解锁所有游戏内容!
@ -88,6 +90,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: 确认
@ -151,13 +154,15 @@ 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>"
createMarker:
title: 创建地图标记
desc: 填写一个有意义的名称, 还可以同时包含一个形状的 <strong>短代码</strong> (您可以 <link>点击这里</link>
desc:
填写一个有意义的名称, 还可以同时包含一个形状的 <strong>短代码</strong> (您可以 <link>点击这里</link>
生成短代码)
titleEdit: 编辑地图标记
markerDemoLimit:
@ -355,15 +360,18 @@ 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</strong>可以快速选择各项设施!
3_1_rectangles: 现在让我们开采一些矩形!找到<strong>矩形地带</strong>并<strong>放置4个开采器</strong>并将它们用<strong>传送带</strong>连接到中心基地。<br><br>
3_1_rectangles:
现在让我们开采一些矩形!找到<strong>矩形地带</strong>并<strong>放置4个开采器</strong>并将它们用<strong>传送带</strong>连接到中心基地。<br><br>
提示:选中<strong>传送带</strong>后按住<strong>SHIFT键</strong>可快速准确地规划<strong>传送带路线!</strong>
21_1_place_quad_painter: 放置<strong>四口上色器</strong>并且获取一些<strong>圆形</strong><strong>白色</strong>和<strong>红色</strong>
21_2_switch_to_wires: 按 <strong>E</strong> 键选择<strong>电线层</strong><br><br>
@ -660,7 +668,8 @@ storyRewards:
desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。
reward_painter:
title: 上色
desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色 (就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
desc:
恭喜!您解锁了<strong>上色器</strong>。开采一些颜色 (就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
<br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong>
reward_mixer:
title: 混合颜色
@ -677,11 +686,13 @@ 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: 二级隧道
@ -698,12 +709,14 @@ 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,7 +744,8 @@ 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: 逻辑门
@ -750,7 +764,8 @@ storyRewards:
<strong>提示</strong>:可在设置中打开电线层教程!"
reward_filter:
title: 物品过滤器
desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
desc:
恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
您也可以输入开关值1 / 0信号来激活或者禁用它。
reward_demo_end:
title: 试玩结束

@ -51,6 +51,8 @@ global:
space: 空格键
loggingIn: 登录
loadingResources: 下载其他资源 (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: 试玩版
intro: |-
@ -84,7 +86,8 @@ mainMenu:
savegameUnnamed: 存档未命名
puzzleMode: 谜题模式
back: 返回
puzzleDlcText: 持续优化追求极致效率。在限定空间内使用有限的设施来创造图形《异形工厂》Shapez的首个 DLC
puzzleDlcText:
持续优化追求极致效率。在限定空间内使用有限的设施来创造图形《异形工厂》Shapez的首个 DLC
“谜题挑战者”将会给大家带来更烧脑、更自由的全新挑战!
puzzleDlcWishlist: 添加愿望单!
puzzleDlcViewNow: 查看 DLC
@ -95,6 +98,7 @@ mainMenu:
logout: 登出
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: 确认
@ -158,7 +162,8 @@ 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>
@ -257,11 +262,13 @@ dialogs:
descWeb: “一个或多个资源载入失败,请确认您的网络连接正常并再次尝试。如果仍然载入失败,
请确认您已经关闭了所有浏览器插件(比如"广告屏蔽")。<br><br>或者,你也可以试玩
<demoOnSteamLinkText>。<br><br> 错误提示:”
descSteamDemo: “一个或多个资源载入失败,请重新启动游戏。 如果仍然存在问题请重新安装游戏或者通过Steam验证游戏安装文件。 <br><br>
descSteamDemo:
“一个或多个资源载入失败,请重新启动游戏。 如果仍然存在问题请重新安装游戏或者通过Steam验证游戏安装文件。 <br><br>
错误提示:”
steamSsoError:
title: 从完整版登出
desc: 由于您的网络连接不稳定,或者您已在另一台设备上开始游戏。您已经从浏览器登出了完整版游戏。 <br><br>
desc:
由于您的网络连接不稳定,或者您已在另一台设备上开始游戏。您已经从浏览器登出了完整版游戏。 <br><br>
请确认您没有在其他浏览器或电脑用同一Steam账号登录《异形工厂》Shapez。<br><br> 您可以从主界面再次登录。
steamSsoNoOwnership:
title: 尚未获得完整版
@ -351,11 +358,13 @@ 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
@ -661,7 +670,8 @@ storyRewards:
desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。
reward_painter:
title: 上色
desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
desc:
恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
<br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong>
reward_mixer:
title: 混合颜色
@ -678,11 +688,13 @@ 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: 二级隧道
@ -699,12 +711,14 @@ 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: 下一关
@ -732,7 +746,8 @@ 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,7 +766,8 @@ storyRewards:
<strong>提示</strong>:可在设置中打开电线层教程!
reward_filter:
title: 物品过滤器
desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
desc:
恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
您也可以输入开关值1 / 0信号来激活或者禁用它。
reward_demo_end:
title: 试玩结束
@ -807,7 +823,8 @@ settings:
light: 浅色
refreshRate:
title: 模拟频率、刷新频率
description: 在这里更改刷新频率这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳提高刷新频率可能降低帧数。注意60Hz
description:
在这里更改刷新频率这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳提高刷新频率可能降低帧数。注意60Hz
以上的任何频率都会导致游戏卡顿!
alwaysMultiplace:
title: 多重放置
@ -1144,7 +1161,8 @@ mods:
noModSupport: 您需要在 Steam 平台获得完整版才可以安装游戏模组Mods
togglingComingSoon:
title: 即将开放
description: 当前只能通过将游戏模组Mods文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组Mods
description:
当前只能通过将游戏模组Mods文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组Mods
但是可以切换游戏模组Mods已经计划在之后的更新中实现
modWebsite: 模组网站
browserNoSupport: 由于浏览器功能限制目前游戏模组Mods只能在Steam版本中安装进行。敬请理解

@ -49,6 +49,8 @@ global:
space: 空白鍵
loggingIn: Logging in
loadingResources: 下載其他資源 (<percentage> %)
discount: -<percentage>%
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
demoBanners:
title: 試玩版
intro: |-
@ -94,6 +96,7 @@ mainMenu:
logout: Logout
noActiveSavegames: No active savegames found - Click play to start a new game!
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
playFullVersionStandalone: You can now also play the full version in your Browser!
dialogs:
buttons:
ok: 確認
@ -157,13 +160,15 @@ 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:
@ -371,15 +376,18 @@ 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>
@ -618,16 +626,19 @@ buildings:
transistor:
default:
name: 電晶體
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
description:
如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
「真」訊號代表形狀訊號、顏色訊號或布林值為1
mirrored:
name: 電晶體
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
description:
如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
「真」訊號代表形狀訊號、顏色訊號或布林值為1
filter:
default:
name: 物件分類器
description: 它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。
description:
它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。
它也可以被布林值訊號控制。
display:
default:
@ -680,7 +691,8 @@ 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:
@ -772,7 +784,8 @@ 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: 虛擬操作

@ -1102,18 +1102,6 @@
dependencies:
"@types/node" ">= 8"
"@openreplay/tracker-fetch@^3.5.3":
version "3.5.3"
resolved "https://registry.yarnpkg.com/@openreplay/tracker-fetch/-/tracker-fetch-3.5.3.tgz#f4a8308cfffc83918e8d34716bae771cb442b41b"
integrity sha512-09vcR1H8178uDpaA2U4u1GvzAQD94ASmvrWM8dVXY0SmZdQHTTmNdkb4xijhkUY99gtJdB8qFgnIr+dP3FsSbg==
"@openreplay/tracker@^3.5.12":
version "3.5.12"
resolved "https://registry.yarnpkg.com/@openreplay/tracker/-/tracker-3.5.12.tgz#141205bfefa42c767eaad1938cd206e3d551e171"
integrity sha512-R8s87HevJRzC/yujzswll+UyF0kybEax9UJr2eu7Y2nf1QhioD589HwDPlsXb1SxkMDd2yDQYfhbF0FXpCEfQA==
dependencies:
error-stack-parser "^2.0.6"
"@sindresorhus/is@^0.7.0":
version "0.7.0"
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz"
@ -3348,13 +3336,6 @@ error-ex@^1.2.0, error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
error-stack-parser@^2.0.6:
version "2.1.4"
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286"
integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
dependencies:
stackframe "^1.3.4"
es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5:
version "1.17.5"
resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz"
@ -7819,11 +7800,6 @@ stable@^0.1.8:
resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
stackframe@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
static-extend@^0.1.1:
version "0.1.2"
resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz"

Loading…
Cancel
Save