aboutsummaryrefslogtreecommitdiff
path: root/src/unittest/test_random.cpp
blob: bbee577193d90275ee1b412f3df1247fb63e4462 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
 /*
Minetest
Copyright (C) 2010-2014 kwolekr, Ryan Kwolek <kwolekr@minetest.net>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

#include "test.h"

#include "util/numeric.h"
#include "exceptions.h"
#include "noise.h"

class TestRandom : public TestBase {
public:
	TestRandom() { TestManager::registerTestModule(this); }
	const char *getName() { return "TestRandom"; }

	void runTests(IGameDef *gamedef);

	void testPseudoRandom();
	void testPseudoRandomRange();
	void testPcgRandom();
	void testPcgRandomRange();
	void testPcgRandomBytes();
	void testPcgRandomNormalDist();

	static const int expected_pseudorandom_results[256];
	static const u32 expected_pcgrandom_results[256];
	static const u8 expected_pcgrandom_bytes_result[24];
	static const u8 expected_pcgrandom_bytes_result2[24];
};

static TestRandom g_test_instance;

void TestRandom::runTests(IGameDef *gamedef)
{
	TEST(testPseudoRandom);
	TEST(testPseudoRandomRange);
	TEST(testPcgRandom);
	TEST(testPcgRandomRange);
	TEST(testPcgRandomBytes);
	TEST(testPcgRandomNormalDist);
}

////////////////////////////////////////////////////////////////////////////////

void TestRandom::testPseudoRandom()
{
	PseudoRandom pr(814538);

	for (u32 i = 0; i != 256; i++)
		UASSERTEQ(int, pr.next(), expected_pseudorandom_results[i]);
}


void TestRandom::testPseudoRandomRange()
{
	PseudoRandom pr((int)time(NULL));

	EXCEPTION_CHECK(PrngException, pr.range(2000, 6000));
	EXCEPTION_CHECK(PrngException, pr.range(5, 1));

	for (u32 i = 0; i != 32768; i++) {
		int min = (pr.next() % 3000) - 500;
		int max = (pr.next() % 3000) - 500;
		if (min > max)
			SWAP(int, min, max);

		int randval = pr.range(min, max);
		UASSERT(randval >= min);
		UASSERT(randval <= max);
	}
}


void TestRandom::testPcgRandom()
{
	PcgRandom pr(814538, 998877);

	for (u32 i = 0; i != 256; i++)
		UASSERTEQ(u32, pr.next(), expected_pcgrandom_results[i]);
}


void TestRandom::testPcgRandomRange()
{
	PcgRandom pr((int)time(NULL));

	EXCEPTION_CHECK(PrngException, pr.range(5, 1));

	// Regression test for bug 3027
	pr.range(pr.RANDOM_MIN, pr.RANDOM_MAX);

	for (u32 i = 0; i != 32768; i++) {
		int min = (pr.next() % 3000) - 500;
		int max = (pr.next() % 3000) - 500;
		if (min > max)
			SWAP(int, min, max);

		int randval = pr.range(min, max);
		UASSERT(randval >= min);
		UASSERT(randval <= max);
	}
}


void TestRandom::testPcgRandomBytes()
{
	char buf[32];
	PcgRandom r(1538, 877);

	memset(buf, 0, sizeof(buf));
	r.bytes(buf + 5, 23);
	UASSERT(memcmp(buf + 5, expected_pcgrandom_bytes_result,
		sizeof(expected_pcgrandom_bytes_result)) == 0);

	memset(buf, 0, sizeof(buf));
	r.bytes(buf, 17);
	UASSERT(memcmp(buf, expected_pcgrandom_bytes_result2,
		sizeof(expected_pcgrandom_bytes_result2)) == 0);
}


void TestRandom::testPcgRandomNormalDist()
{
	static const int max = 120;
	static const int min = -120;
	static const int num_trials = 20;
	static const u32 num_samples = 61000;
	s32 bins[max - min + 1];
	memset(bins, 0, sizeof(bins));

	PcgRandom r(486179 + (int)time(NULL));

	for (u32 i = 0; i != num_samples; i++) {
		s32 randval = r.randNormalDist(min, max, num_trials);
		UASSERT(randval <= max);
		UASSERT(randval >= min);
		bins[randval - min]++;
	}

	// Note that here we divide variance by the number of trials;
	// this is because variance is a biased estimator.
	int range      = (max - min + 1);
	float mean     = (max + min) / 2;
	float variance = ((range * range - 1) / 12) / num_trials;
	float stddev   = sqrt(variance);

	static const float prediction_intervals[] = {
		0.68269f, // 1.0
		0.86639f, // 1.5
		0.95450f, // 2.0
		0.98758f, // 2.5
		0.99730f, // 3.0
	};

	//// Simple normality test using the 68-95-99.7% rule
	for (u32 i = 0; i != ARRLEN(prediction_intervals); i++) {
		float deviations = i / 2.f + 1.f;
		int lbound = myround(mean - deviations * stddev);
		int ubound = myround(mean + deviations * stddev);
		UASSERT(lbound >= min);
		UASSERT(ubound <= max);

		int accum = 0;
		for (int j = lbound; j != ubound; j++)
			accum += bins[j - min];

		float actual = (float)accum / num_samples;
		UASSERT(fabs(actual - prediction_intervals[i]) < 0.02);
	}
}


const int TestRandom::expected_pseudorandom_results[256] = {
	0x02fa, 0x60d5, 0x6c10, 0x606b, 0x098b, 0x5f1e, 0x4f56, 0x3fbd, 0x77af,
	0x4fe9, 0x419a, 0x6fe1, 0x177b, 0x6858, 0x36f8, 0x6d83, 0x14fc, 0x2d62,
	0x1077, 0x23e2, 0x041b, 0x7a7e, 0x5b52, 0x215d, 0x682b, 0x4716, 0x47e3,
	0x08c0, 0x1952, 0x56ae, 0x146d, 0x4b4f, 0x239f, 0x3fd0, 0x6794, 0x7796,
	0x7be2, 0x75b7, 0x5691, 0x28ee, 0x2656, 0x40c0, 0x133c, 0x63cd, 0x2aeb,
	0x518f, 0x7dbc, 0x6ad8, 0x736e, 0x5b05, 0x160b, 0x589f, 0x6f64, 0x5edc,
	0x092c, 0x0a39, 0x199e, 0x1927, 0x562b, 0x2689, 0x3ba3, 0x366f, 0x46da,
	0x4e49, 0x0abb, 0x40a1, 0x3846, 0x40db, 0x7adb, 0x6ec1, 0x6efa, 0x01cc,
	0x6335, 0x4352, 0x72fb, 0x4b2d, 0x509a, 0x257e, 0x2f7d, 0x5891, 0x2195,
	0x6107, 0x5269, 0x56e3, 0x4849, 0x38f7, 0x2791, 0x04f2, 0x4e05, 0x78ff,
	0x6bae, 0x50b3, 0x74ad, 0x31af, 0x531e, 0x7d56, 0x11c9, 0x0b5e, 0x405e,
	0x1e15, 0x7f6a, 0x5bd3, 0x6649, 0x71b4, 0x3ec2, 0x6ab4, 0x520e, 0x6ad6,
	0x287e, 0x10b8, 0x18f2, 0x7107, 0x46ea, 0x1d85, 0x25cc, 0x2689, 0x35c1,
	0x3065, 0x6237, 0x3edd, 0x23d9, 0x6fb5, 0x37a1, 0x3211, 0x526a, 0x4b09,
	0x23f1, 0x58cc, 0x2e42, 0x341f, 0x5e16, 0x3d1a, 0x5e8c, 0x7a82, 0x4635,
	0x2bf8, 0x6577, 0x3603, 0x1daf, 0x539f, 0x2e91, 0x6bd8, 0x42d3, 0x7a93,
	0x26e3, 0x5a91, 0x6c67, 0x1b66, 0x3ac7, 0x18bf, 0x20d8, 0x7153, 0x558d,
	0x7262, 0x653d, 0x417d, 0x3ed3, 0x3117, 0x600d, 0x6d04, 0x719c, 0x3afd,
	0x6ba5, 0x17c5, 0x4935, 0x346c, 0x5479, 0x6ff6, 0x1fcc, 0x1054, 0x3f14,
	0x6266, 0x3acc, 0x3b77, 0x71d8, 0x478b, 0x20fa, 0x4e46, 0x7e77, 0x5554,
	0x3652, 0x719c, 0x072b, 0x61ad, 0x399f, 0x621d, 0x1bba, 0x41d0, 0x7fdc,
	0x3e6c, 0x6a2a, 0x5253, 0x094e, 0x0c10, 0x3f43, 0x73eb, 0x4c5f, 0x1f23,
	0x12c9, 0x0902, 0x5238, 0x50c0, 0x1b77, 0x3ffd, 0x0124, 0x302a, 0x26b9,
	0x3648, 0x30a6, 0x1abc, 0x3031, 0x4029, 0x6358, 0x6696, 0x74e8, 0x6142,
	0x4284, 0x0c00, 0x7e50, 0x41e3, 0x3782, 0x79a5, 0x60fe, 0x2d15, 0x3ed2,
	0x7f70, 0x2b27, 0x6366, 0x5100, 0x7c44, 0x3ee0, 0x4e76, 0x7d34, 0x3a60,
	0x140e, 0x613d, 0x1193, 0x268d, 0x1e2f, 0x3123, 0x6d61, 0x4e0b, 0x51ce,
	0x13bf, 0x58d4, 0x4f43, 0x05c6, 0x4d6a, 0x7eb5, 0x2921, 0x2c36, 0x1c89,
	0x63b9, 0x1555, 0x1f41, 0x2d9f,
};

const u32 TestRandom::expected_pcgrandom_results[256] = {
	0x48c593f8, 0x054f59f5, 0x0d062dc1, 0x23852a23, 0x7fbbc97b, 0x1f9f141e,
	0x364e6ed8, 0x995bba58, 0xc9307dc0, 0x73fb34c4, 0xcd8de88d, 0x52e8ce08,
	0x1c4a78e4, 0x25c0882e, 0x8a82e2e0, 0xe3bc3311, 0xb8068d42, 0x73186110,
	0x19988df4, 0x69bd970b, 0x7214728c, 0x0aee320c, 0x2a5a536c, 0xaf48d715,
	0x00bce504, 0xd2b8f548, 0x520df366, 0x96d8fff5, 0xa1bb510b, 0x63477049,
	0xb85990b7, 0x7e090689, 0x275fb468, 0x50206257, 0x8bab4f8a, 0x0d6823db,
	0x63faeaac, 0x2d92deeb, 0x2ba78024, 0x0d30f631, 0x338923a0, 0xd07248d8,
	0xa5db62d3, 0xddba8af6, 0x0ad454e9, 0x6f0fd13a, 0xbbfde2bf, 0x91188009,
	0x966b394d, 0xbb9d2012, 0x7e6926cb, 0x95183860, 0x5ff4c59b, 0x035f628a,
	0xb67085ef, 0x33867e23, 0x68d1b887, 0x2e3298d7, 0x84fd0650, 0x8bc91141,
	0x6fcb0452, 0x2836fee9, 0x2e83c0a3, 0xf1bafdc5, 0x9ff77777, 0xfdfbba87,
	0x527aebeb, 0x423e5248, 0xd1756490, 0xe41148fa, 0x3361f7b4, 0xa2824f23,
	0xf4e08072, 0xc50442be, 0x35adcc21, 0x36be153c, 0xc7709012, 0xf0eeb9f2,
	0x3d73114e, 0x1c1574ee, 0x92095b9c, 0x1503d01c, 0xd6ce0677, 0x026a8ec1,
	0x76d0084d, 0x86c23633, 0x36f75ce6, 0x08fa7bbe, 0x35f6ff2a, 0x31cc9525,
	0x2c1a35e6, 0x8effcd62, 0xc782fa07, 0x8a86e248, 0x8fdb7a9b, 0x77246626,
	0x5767723f, 0x3a78b699, 0xe548ce1c, 0x5820f37d, 0x148ed9b8, 0xf6796254,
	0x32232c20, 0x392bf3a2, 0xe9af6625, 0xd40b0d88, 0x636cfa23, 0x6a5de514,
	0xc4a69183, 0xc785c853, 0xab0de901, 0x16ae7e44, 0x376f13b5, 0x070f7f31,
	0x34cbc93b, 0xe6184345, 0x1b7f911f, 0x631fbe4b, 0x86d6e023, 0xc689b518,
	0x88ef4f7c, 0xddf06b45, 0xc97f18d4, 0x2aaee94b, 0x45694723, 0x6db111d2,
	0x91974fce, 0xe33e29e2, 0xc5e99494, 0x8017e02b, 0x3ebd8143, 0x471ffb80,
	0xc0d7ca1b, 0x4954c860, 0x48935d6a, 0xf2d27999, 0xb93d608d, 0x40696e90,
	0x60b18162, 0x1a156998, 0x09b8bbab, 0xc80a79b6, 0x8adbcfbc, 0xc375248c,
	0xa584e2ea, 0x5b46fe11, 0x58e84680, 0x8a8bc456, 0xd668b94f, 0x8b9035be,
	0x278509d4, 0x6663a140, 0x81a9817a, 0xd4f9d3cf, 0x6dc5f607, 0x6ae04450,
	0x694f22a4, 0x1d061788, 0x2e39ad8b, 0x748f4db2, 0xee569b52, 0xd157166d,
	0xdabc161e, 0xc8d50176, 0x7e3110e5, 0x9f7d033b, 0x128df67f, 0xb0078583,
	0xa3a75d26, 0xc1ad8011, 0x07dd89ec, 0xef04f456, 0x91bf866c, 0x6aac5306,
	0xdd5a1573, 0xf73ff97a, 0x4e1186ad, 0xb9680680, 0xc8894515, 0xdc95a08e,
	0xc894fd8e, 0xf84ade15, 0xd787f8c1, 0x40dcecca, 0x1b24743e, 0x1ce6ab23,
	0x72321653, 0xb80fbaf7, 0x1bcf099b, 0x1ff26805, 0x78f66c8e, 0xf93bf51a,
	0xfb0c06fe, 0xe50d48cf, 0x310947e0, 0x1b78804a, 0xe73e2c14, 0x8deb8381,
	0xe576122a, 0xe5a8df39, 0x42397c5e, 0xf5503f3c, 0xbe3dbf8d, 0x1b360e5c,
	0x9254caaf, 0x7a9f6744, 0x6d4144fa, 0xd77c65fe, 0x44ca7b12, 0xf58a4c00,
	0x159500d0, 0x92769857, 0x7134fdd4, 0xa3fea693, 0xbd044831, 0xeded39a1,
	0xe4570204, 0xaea37f2f, 0x9a302971, 0x620f8402, 0x1d2f3e5e, 0xf9c2f49c,
	0x738e813a, 0xb3c92251, 0x7ecba63b, 0xbe7eebc7, 0xf800267c, 0x3fdeb760,
	0xf12d5e7d, 0x5a18dce1, 0xb35a539c, 0xe565f057, 0x2babf38c, 0xae5800ad,
	0x421004dd, 0x6715acb6, 0xff529b64, 0xd520d207, 0x7cb193e7, 0xe9b18e4c,
	0xfd2a8a59, 0x47826ae3, 0x56ba43f8, 0x453b3d99, 0x8ae1675f, 0xf66f5c34,
	0x057a6ac1, 0x010769e4, 0xa8324158, 0x410379a5, 0x5dfc8c97, 0x72848afe,
	0x59f169e5, 0xe32acb78, 0x5dfaa9c4, 0x51bb956a,
};

const u8 TestRandom::expected_pcgrandom_bytes_result[24] = {
	0xf3, 0x79, 0x8f, 0x31, 0xac, 0xd9, 0x34, 0xf8, 0x3c, 0x6e, 0x82, 0x37,
	0x6b, 0x4b, 0x77, 0xe3, 0xbd, 0x0a, 0xee, 0x22, 0x79, 0x6e, 0x40, 0x00,
};

const u8 TestRandom::expected_pcgrandom_bytes_result2[24] = {
	0x47, 0x9e, 0x08, 0x3e, 0xd4, 0x21, 0x2d, 0xf6, 0xb4, 0xb1, 0x9d, 0x7a,
	0x60, 0x02, 0x5a, 0xb2, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_server.lua #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Delete" msgstr "Kustuta" #: builtin/mainmenu/tab_multiplayer.lua #, fuzzy msgid "Name / Password :" msgstr "Nimi/Parool" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy msgid "Public Serverlist" msgstr "Avatud serverite nimekiri:" #: builtin/mainmenu/tab_multiplayer.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy msgid "PvP enabled" msgstr "Sisse lülitatud" #: builtin/mainmenu/tab_server.lua msgid "Bind Address" msgstr "" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Configure" msgstr "Konfigureeri" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_singleplayer.lua msgid "Creative Mode" msgstr "Kujunduslik mängumood" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua #: builtin/mainmenu/tab_singleplayer.lua msgid "Enable Damage" msgstr "Lülita valu sisse" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_simple_main.lua msgid "Name/Password" msgstr "Nimi/Parool" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "New" msgstr "Uus" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua #, fuzzy msgid "No world created or selected!" msgstr "No nimi või no mäng valitud" #: builtin/mainmenu/tab_server.lua msgid "Port" msgstr "" #: builtin/mainmenu/tab_server.lua msgid "Public" msgstr "Avalik" #: builtin/mainmenu/tab_server.lua builtin/mainmenu/tab_singleplayer.lua msgid "Select World:" msgstr "Vali maailm:" #: builtin/mainmenu/tab_server.lua msgid "Server" msgstr "" #: builtin/mainmenu/tab_server.lua msgid "Server Port" msgstr "" #: builtin/mainmenu/tab_server.lua msgid "Start Game" msgstr "Alusta mängu" #: builtin/mainmenu/tab_settings.lua msgid "2x" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "3D Clouds" msgstr "3D pilved" #: builtin/mainmenu/tab_settings.lua msgid "4x" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "8x" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy msgid "Bilinear Filter" msgstr "Bi-lineaarsed Filtreerimine" #: builtin/mainmenu/tab_settings.lua #, fuzzy msgid "Bumpmapping" msgstr "Väga hea kvaliteet" #: builtin/mainmenu/tab_settings.lua msgid "Change keys" msgstr "Vaheta nuppe" #: builtin/mainmenu/tab_settings.lua #, fuzzy msgid "Connected Glass" msgstr "Liitu" #: builtin/mainmenu/tab_settings.lua msgid "Enable Particles" msgstr "Lülita osakesed sisse" #: builtin/mainmenu/tab_settings.lua #, fuzzy msgid "Fancy Leaves" msgstr "Uhked puud" #: builtin/mainmenu/tab_settings.lua msgid "GUI scale factor" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Generate Normalmaps" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "No!!!" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" msgstr "" #: builtin/mainmenu/tab_settings.lua builtin/mainmenu/tab_texturepacks.lua msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy msgid "Opaque Leaves" msgstr "Läbipaistmatu vesi" #: builtin/mainmenu/tab_settings.lua #, fuzzy msgid "Opaque Water" msgstr "Läbipaistmatu vesi" #: builtin/mainmenu/tab_settings.lua msgid "Parallax Occlusion" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy msgid "Reset singleplayer world" msgstr "Üksikmäng" #: builtin/mainmenu/tab_settings.lua msgid "Scaling factor applied to menu elements: " msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Settings" msgstr "Sätted" #: builtin/mainmenu/tab_settings.lua msgid "Shaders" msgstr "Varjutajad" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" msgstr "Ilus valgustus" #: builtin/mainmenu/tab_settings.lua msgid "Texturing:" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." msgstr "Aktiveerimiseks varjud, nad vajavad OpenGL draiver." #: builtin/mainmenu/tab_settings.lua msgid "Touch free target" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua #, fuzzy msgid "Trilinear Filter" msgstr "Tri-Linear Filtreerimine" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Waving Water" msgstr "" #: builtin/mainmenu/tab_simple_main.lua #, fuzzy msgid "Config mods" msgstr "Konfigureeri" #: builtin/mainmenu/tab_simple_main.lua #, fuzzy msgid "Main" msgstr "Menüü" #: builtin/mainmenu/tab_simple_main.lua #, fuzzy msgid "Start Singleplayer" msgstr "Üksikmäng" #: builtin/mainmenu/tab_singleplayer.lua src/keycode.cpp msgid "Play" msgstr "Mängi" #: builtin/mainmenu/tab_singleplayer.lua msgid "Singleplayer" msgstr "Üksikmäng" #: builtin/mainmenu/tab_texturepacks.lua msgid "No information available" msgstr "Informatsioon ei ole kättesaadav" #: builtin/mainmenu/tab_texturepacks.lua msgid "Select texture pack:" msgstr "Vali graafika:" #: builtin/mainmenu/tab_texturepacks.lua #, fuzzy msgid "Texturepacks" msgstr "Vali graafika:" #: src/client.cpp #, fuzzy msgid "Connection timed out." msgstr "Ühenduse viga (Aeg otsas?)" #: src/client.cpp msgid "Done!" msgstr "" #: src/client.cpp msgid "Initializing nodes" msgstr "" #: src/client.cpp msgid "Initializing nodes..." msgstr "" #: src/client.cpp msgid "Item textures..." msgstr "" #: src/client.cpp msgid "Loading textures..." msgstr "" #: src/client.cpp msgid "Rebuilding shaders..." msgstr "" #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" msgstr "Ühenduse viga (Aeg otsas?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" msgstr "Ei leia ega suuda jätkata mängu \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." msgstr "Vale mängu ID." #: src/client/clientlauncher.cpp msgid "Main Menu" msgstr "Menüü" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." msgstr "Pole valitud ei maailma ega IP aadressi. Pole midagi teha." #: src/client/clientlauncher.cpp msgid "Player name too long." msgstr "" #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " msgstr "" #: src/fontengine.cpp msgid "needs_fallback_font" msgstr "" #: src/game.cpp msgid "" "\n" "Check debug.txt for details." msgstr "" "\n" "Vaata debug.txt info jaoks." #: src/game.cpp #, fuzzy msgid "Change Keys" msgstr "Vaheta nuppe" #: src/game.cpp msgid "Change Password" msgstr "Vaheta parooli" #: src/game.cpp msgid "Connecting to server..." msgstr "" #: src/game.cpp msgid "Continue" msgstr "Jätka" #: src/game.cpp msgid "Creating client..." msgstr "" #: src/game.cpp msgid "Creating server..." msgstr "" #: src/game.cpp msgid "" "Default Controls:\n" "- WASD: move\n" "- Space: jump/climb\n" "- Shift: sneak/go down\n" "- Q: drop item\n" "- I: inventory\n" "- Mouse: turn/look\n" "- Mouse left: dig/punch\n" "- Mouse right: place/use\n" "- Mouse wheel: select item\n" "- T: chat\n" msgstr "" #: src/game.cpp msgid "" "Default Controls:\n" "No menu visible:\n" "- single tap: button activate\n" "- double tap: place/use\n" "- slide finger: look around\n" "Menu/Inventory visible:\n" "- double tap (outside):\n" " -->close\n" "- touch stack, touch slot:\n" " --> move stack\n" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" #: src/game.cpp msgid "Exit to Menu" msgstr "Välju menüüsse" #: src/game.cpp msgid "Exit to OS" msgstr "Välju mängust" #: src/game.cpp msgid "Item definitions..." msgstr "" #: src/game.cpp msgid "KiB/s" msgstr "" #: src/game.cpp msgid "Media..." msgstr "" #: src/game.cpp msgid "MiB/s" msgstr "" #: src/game.cpp msgid "Node definitions..." msgstr "" #: src/game.cpp src/guiFormSpecMenu.cpp msgid "Proceed" msgstr "Jätka" #: src/game.cpp msgid "Resolving address..." msgstr "" #: src/game.cpp msgid "Respawn" msgstr "Ärka ellu" #: src/game.cpp msgid "Shutting down..." msgstr "" #: src/game.cpp msgid "Sound Volume" msgstr "Hääle volüüm" #: src/game.cpp msgid "You died." msgstr "Sa surid." #: src/guiFormSpecMenu.cpp msgid "Enter " msgstr "" #: src/guiFormSpecMenu.cpp msgid "ok" msgstr "" #: src/guiKeyChangeMenu.cpp msgid "\"Use\" = climb down" msgstr "\"Tegevus\" = Roni alla" #: src/guiKeyChangeMenu.cpp msgid "Backward" msgstr "Tagasi" #: src/guiKeyChangeMenu.cpp msgid "Chat" msgstr "Jututuba" #: src/guiKeyChangeMenu.cpp msgid "Command" msgstr "Käsklus" #: src/guiKeyChangeMenu.cpp msgid "Console" msgstr "Konsool" #: src/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine" #: src/guiKeyChangeMenu.cpp msgid "Drop" msgstr "Viska maha" #: src/guiKeyChangeMenu.cpp msgid "Forward" msgstr "Edasi" #: src/guiKeyChangeMenu.cpp msgid "Inventory" msgstr "Seljakott" #: src/guiKeyChangeMenu.cpp msgid "Jump" msgstr "Hüppamine" #: src/guiKeyChangeMenu.cpp msgid "Key already in use" msgstr "Nupp juba kasutuses" #: src/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" "Nupusätted. (Kui see menüü sassi läheb, siis kustuta asju failist minetest." "conf)" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Left" msgstr "Vasakule" #: src/guiKeyChangeMenu.cpp msgid "Print stacks" msgstr "Prindi kogused" #: src/guiKeyChangeMenu.cpp msgid "Range select" msgstr "Kauguse valik" #: src/guiKeyChangeMenu.cpp src/keycode.cpp msgid "Right" msgstr "Paremale" #: src/guiKeyChangeMenu.cpp msgid "Sneak" msgstr "Hiilimine" #: src/guiKeyChangeMenu.cpp #, fuzzy msgid "Toggle Cinematic" msgstr "Lülita kiirus sisse" #: src/guiKeyChangeMenu.cpp msgid "Toggle fast" msgstr "Lülita kiirus sisse" #: src/guiKeyChangeMenu.cpp msgid "Toggle fly" msgstr "Lülita lendamine sisse" #: src/guiKeyChangeMenu.cpp msgid "Toggle noclip" msgstr "Lülita läbi seinte minek sisse" #: src/guiKeyChangeMenu.cpp msgid "Use" msgstr "Tegevus" #: src/guiKeyChangeMenu.cpp msgid "press key" msgstr "Vajuta nuppu" #: src/guiPasswordChange.cpp msgid "Change" msgstr "Muuda" #: src/guiPasswordChange.cpp msgid "Confirm Password" msgstr "Kinnita parooli" #: src/guiPasswordChange.cpp msgid "New Password" msgstr "Uus parool" #: src/guiPasswordChange.cpp msgid "Old Password" msgstr "Vana parool" #: src/guiPasswordChange.cpp msgid "Passwords do not match!" msgstr "Paroolid ei ole samad!" #: src/guiVolumeChange.cpp msgid "Exit" msgstr "Välju" #: src/guiVolumeChange.cpp msgid "Sound Volume: " msgstr "Hääle Volüüm: " #: src/keycode.cpp msgid "Apps" msgstr "Aplikatsioonid" #: src/keycode.cpp msgid "Attn" msgstr "Attn" #: src/keycode.cpp msgid "Back" msgstr "Tagasi" #: src/keycode.cpp msgid "Capital" msgstr "Caps Lock" #: src/keycode.cpp msgid "Clear" msgstr "Tühjenda" #: src/keycode.cpp msgid "Comma" msgstr "Koma" #: src/keycode.cpp msgid "Control" msgstr "CTRL" #: src/keycode.cpp msgid "Convert" msgstr "Konverteeri" #: src/keycode.cpp msgid "CrSel" msgstr "CrSel" #: src/keycode.cpp msgid "Down" msgstr "Alla" #: src/keycode.cpp msgid "End" msgstr "Lõpeta" #: src/keycode.cpp msgid "Erase OEF" msgstr "Kustuta OEF" #: src/keycode.cpp msgid "Escape" msgstr "Põgene" #: src/keycode.cpp msgid "ExSel" msgstr "ExSel" #: src/keycode.cpp msgid "Execute" msgstr "Soorita" #: src/keycode.cpp msgid "Final" msgstr "Viimane" #: src/keycode.cpp msgid "Help" msgstr "Abi" #: src/keycode.cpp msgid "Home" msgstr "Kodu" #: src/keycode.cpp msgid "Insert" msgstr "Sisesta" #: src/keycode.cpp msgid "Junja" msgstr "Junja" #: src/keycode.cpp msgid "Kana" msgstr "Kana" #: src/keycode.cpp msgid "Kanji" msgstr "Kanji" #: src/keycode.cpp msgid "Left Button" msgstr "Vasak nupp" #: src/keycode.cpp msgid "Left Control" msgstr "Vasak CTRL" #: src/keycode.cpp msgid "Left Menu" msgstr "Vasak Menüü" #: src/keycode.cpp msgid "Left Shift" msgstr "Vasak Shift" #: src/keycode.cpp msgid "Left Windows" msgstr "Vasak Windowsi nupp" #: src/keycode.cpp msgid "Menu" msgstr "Menüü" #: src/keycode.cpp msgid "Middle Button" msgstr "Keskmine nupp" #: src/keycode.cpp msgid "Minus" msgstr "Miinus" #: src/keycode.cpp msgid "Mode Change" msgstr "Moodi vahetamine" #: src/keycode.cpp msgid "Next" msgstr "Järgmine" #: src/keycode.cpp msgid "Nonconvert" msgstr "Konverteerimatta" #: src/keycode.cpp msgid "Num Lock" msgstr "Numbrilaual Num Lock" #: src/keycode.cpp msgid "Numpad *" msgstr "Numbrilaual *" #: src/keycode.cpp msgid "Numpad +" msgstr "Numbrilaual +" #: src/keycode.cpp msgid "Numpad -" msgstr "Numbrilaual -" #: src/keycode.cpp msgid "Numpad /" msgstr "Numbrilaual /" #: src/keycode.cpp msgid "Numpad 0" msgstr "Numbrilaual 0" #: src/keycode.cpp msgid "Numpad 1" msgstr "Numbrilaual 1" #: src/keycode.cpp msgid "Numpad 2" msgstr "Numbrilaual 2" #: src/keycode.cpp msgid "Numpad 3" msgstr "Numbrilaual 3" #: src/keycode.cpp msgid "Numpad 4" msgstr "Numbrilaual 4" #: src/keycode.cpp msgid "Numpad 5" msgstr "Numbrilaual 5" #: src/keycode.cpp msgid "Numpad 6" msgstr "Numbrilaual 6" #: src/keycode.cpp msgid "Numpad 7" msgstr "Numbrilaual 7" #: src/keycode.cpp msgid "Numpad 8" msgstr "Numbrilaual 8" #: src/keycode.cpp msgid "Numpad 9" msgstr "Numbrilaual 9" #: src/keycode.cpp msgid "OEM Clear" msgstr "OEM Tühi" #: src/keycode.cpp msgid "PA1" msgstr "PA1" #: src/keycode.cpp msgid "Pause" msgstr "Paus" #: src/keycode.cpp msgid "Period" msgstr "Punkt" #: src/keycode.cpp msgid "Plus" msgstr "Pluss" #: src/keycode.cpp msgid "Print" msgstr "Prindi" #: src/keycode.cpp msgid "Prior" msgstr "Eelnev" #: src/keycode.cpp msgid "Return" msgstr "Enter" #: src/keycode.cpp msgid "Right Button" msgstr "Parem nupp" #: src/keycode.cpp msgid "Right Control" msgstr "Parem CTRL" #: src/keycode.cpp msgid "Right Menu" msgstr "Parem Menüü" #: src/keycode.cpp msgid "Right Shift" msgstr "Parem Shift" #: src/keycode.cpp msgid "Right Windows" msgstr "Parem Windowsi nupp" #: src/keycode.cpp msgid "Scroll Lock" msgstr "Scroll lukk" #: src/keycode.cpp msgid "Select" msgstr "Vali" #: src/keycode.cpp msgid "Shift" msgstr "Shift," #: src/keycode.cpp msgid "Sleep" msgstr "Maga" #: src/keycode.cpp msgid "Snapshot" msgstr "Mängupilt" #: src/keycode.cpp msgid "Space" msgstr "Tühik" #: src/keycode.cpp msgid "Tab" msgstr "Reavahetus" #: src/keycode.cpp msgid "Up" msgstr "Üles" #: src/keycode.cpp msgid "X Button 1" msgstr "X Nuppp 1" #: src/keycode.cpp msgid "X Button 2" msgstr "X Nupp 2" #: src/keycode.cpp msgid "Zoom" msgstr "Suumi" #, fuzzy #~ msgid "Downloading" #~ msgstr "Alla" #~ msgid "Mip-Mapping" #~ msgstr "Väga hea kvaliteet" #~ msgid "Anisotropic Filtering" #~ msgstr "Anisotroopne Filtreerimine" #~ msgid "Left click: Move all items, Right click: Move single item" #~ msgstr "" #~ "Vasak hiireklõps: Liiguta kõiki asju, Parem hiireklõps: Liiguta üksikut " #~ "asja" #~ msgid "is required by:" #~ msgstr "Seda vajavad:" #~ msgid "Configuration saved. " #~ msgstr "Konfiguratsioon salvestatud. " #~ msgid "Warning: Configuration not consistent. " #~ msgstr "Hoiatus: Konfiguratsioon pole kindel." #~ msgid "Cannot create world: Name contains invalid characters" #~ msgstr "Maailma loomine ebaõnnestus: Nimes esineb keelatud tähti" #~ msgid "Multiplayer" #~ msgstr "Mitmikmäng" #~ msgid "Advanced" #~ msgstr "Arenenud sätted" #~ msgid "Show Public" #~ msgstr "Näita avalikke" #~ msgid "Show Favorites" #~ msgstr "Näita lemmikuid" #~ msgid "Leave address blank to start a local server." #~ msgstr "Jäta IP lahter tühjaks et alustada LAN serverit." #~ msgid "Create world" #~ msgstr "Loo maailm" #~ msgid "Address required." #~ msgstr "IP on vajalkik." #~ msgid "Cannot delete world: Nothing selected" #~ msgstr "Maailma kustutamine ebaõnnestus: Maailma pole valitud" #~ msgid "Files to be deleted" #~ msgstr "Failid mida kustutada" #~ msgid "Cannot create world: No games found" #~ msgstr "Maailma loomine ebaõnnestus: Mängu ei leitud" #~ msgid "Cannot configure world: Nothing selected" #~ msgstr "Maailma konfigureerimine ebaõnnestus: Pole midagi valitud" #~ msgid "Failed to delete all world files" #~ msgstr "Kõigi maailma failide kustutamine ebaõnnestus" #~ msgid "" #~ "Default Controls:\n" #~ "- WASD: Walk\n" #~ "- Mouse left: dig/hit\n" #~ "- Mouse right: place/use\n" #~ "- Mouse wheel: select item\n" #~ "- 0...9: select item\n" #~ "- Shift: sneak\n" #~ "- R: Toggle viewing all loaded chunks\n" #~ "- I: Inventory menu\n" #~ "- ESC: This menu\n" #~ "- T: Chat\n" #~ msgstr "" #~ "Algsed nupusätted:\n" #~ "- WASD: Kõnni\n" #~ "- Vasak hiireklõps: Kaeva/löö\n" #~ "- Parem hiireklõps: Aseta/kasuta\n" #~ "- Hiireratas: Vali asi\n" #~ "- 0...9: Vali asi\n" #~ "- Shift: Hiili\n" #~ "- R: Vaheta nägemiskaugust\n" #~ "- I: Seljakott\n" #~ "- ESC: Menüü\n" #~ "- T: Jututupa\n" #~ msgid "" #~ "Warning: Some configured mods are missing.\n" #~ "Their setting will be removed when you save the configuration. " #~ msgstr "" #~ "Hoiatus: Mõned konfigureeritud modifikatsioonid on kaotsi läinud.\n" #~ "Nende sätted kustutatakse kui salvestada konfiguratsioon." #~ msgid "" #~ "Warning: Some mods are not configured yet.\n" #~ "They will be enabled by default when you save the configuration. " #~ msgstr "" #~ "Hoiatus: Mõned modifikatsioonid pole sätitud veel.\n" #~ "Need lülitatakse sisse kohe pärast sätete salvestamist." #, fuzzy #~ msgid "Finite Liquid" #~ msgstr "Löppev vedelik" #~ msgid "Preload item visuals" #~ msgstr "Lae asjade visuaale" #~ msgid "SETTINGS" #~ msgstr "Seaded" #~ msgid "Password" #~ msgstr "Parool" #~ msgid "Name" #~ msgstr "Nimi" #~ msgid "Favorites:" #~ msgstr "Lemmikud:" #, fuzzy #~ msgid "<<-- Add mod" #~ msgstr "<<-- Lisama muutus" #, fuzzy #~ msgid "Remove selected mod" #~ msgstr "Eemalda valitud muutus" #~ msgid "EDIT GAME" #~ msgstr "MUUDA MÄNGU" #~ msgid "new game" #~ msgstr "uus mängu" #, fuzzy #~ msgid "edit game" #~ msgstr "Muuda mängu" #~ msgid "Games" #~ msgstr "Mängud" #~ msgid "GAMES" #~ msgstr "MÄNGUD" #, fuzzy #~ msgid "Game Name" #~ msgstr "Mäng"