|
@ -0,0 +1,7 @@
|
|||
SHOW_LIGHTS 1
|
||||
SHOW_ITEM 1
|
||||
SHOW_CROSSHAIRS 1
|
||||
SHOW_INFO_TEXT 1
|
||||
SHOW_CHAT_TEXT 1
|
||||
SHOW_PLAYER_NAMES 1
|
||||
FONT_SIZE 16
|
|
@ -24,33 +24,34 @@ void main() {
|
|||
discard;
|
||||
}
|
||||
|
||||
float df = cloud ? 1.0 - diffuse * 0.2 : diffuse;
|
||||
float ao = cloud ? 1.0 - (1.0 - fragment_ao) * 0.2 : fragment_ao;
|
||||
ao = min(1.0, ao + fragment_light);
|
||||
df = min(1.0, df + fragment_light);
|
||||
float df = cloud ? 1.0 - diffuse * 0.2 : diffuse;
|
||||
float ao = cloud ? 1.0 - (1.0 - fragment_ao) * 0.3 : fragment_ao;
|
||||
ao = min(1.0, ao + fragment_light);
|
||||
df = min(1.0, df + fragment_light);
|
||||
|
||||
float value = max(0.3, daylight + fragment_light);
|
||||
value = (value*0.5+0.2) + (value*0.3+0.1) * df;
|
||||
value = (value*1.2) * (ao*0.7);
|
||||
vec4 light_color = vec4(value, value, value, 1.0);
|
||||
|
||||
vec3 a = vec3(texture2D(sky_sampler, vec2(timer, fog_height))) * sky_tint;
|
||||
vec4 sky_color = vec4(a, 1.0);
|
||||
float value = max(0.3, daylight + fragment_light);
|
||||
value = (value*0.5+0.2) + (value*0.3+0.1) * df;
|
||||
value = (value*1.2) * (ao*0.7);
|
||||
vec4 light_color = vec4(value, value, value, 1.0);
|
||||
|
||||
vec3 a = vec3(texture2D(sky_sampler, vec2(timer, fog_height))) * sky_tint;
|
||||
vec4 sky_color = vec4(a, 1.0);
|
||||
|
||||
if (color == vec4(1.0, 0.0, 1.0, 1.0)) {
|
||||
discard;
|
||||
}
|
||||
|
||||
if (color == vec4(1.0, 0.0, 1.0, 1.0)) {
|
||||
discard;
|
||||
}
|
||||
|
||||
if (color.a < 1.0) {
|
||||
//color.a = 0.0;
|
||||
//color = vec4(0.0);
|
||||
discard;
|
||||
} else {
|
||||
//color.a = 0.0;
|
||||
//color = vec4(0.0);
|
||||
discard;
|
||||
} else {
|
||||
color.a = 1.0;
|
||||
}
|
||||
|
||||
color = color * light_color;
|
||||
color = mix(color, sky_color, fog_factor);
|
||||
|
||||
gl_FragColor = vec4(color);
|
||||
color = color * light_color;
|
||||
color = mix(color, sky_color, fog_factor);
|
||||
|
||||
gl_FragColor = vec4(color);
|
||||
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@ void main() {
|
|||
discard;
|
||||
}
|
||||
|
||||
//else {
|
||||
//color.a = max(color.a, 0.4);
|
||||
//}
|
||||
else {
|
||||
color.a = max(color.a, 0.4);
|
||||
}
|
||||
gl_FragColor = color;
|
||||
}
|
||||
|
|
30
src/config.h
|
@ -1,6 +1,10 @@
|
|||
#ifndef _config_h_
|
||||
#define _config_h_
|
||||
|
||||
|
||||
// TODO: Transfer the maximum of stuff to ingame tweakable config (main.c)
|
||||
|
||||
|
||||
//game
|
||||
#define FLY_SPEED 70
|
||||
#define WALK_SPEED 6
|
||||
|
@ -16,9 +20,9 @@
|
|||
// app parameters
|
||||
#define DEBUG 1
|
||||
#define FULLSCREEN 0 //put to zero, fullscreen bugs
|
||||
#define WINDOW_WIDTH 1024
|
||||
#define WINDOW_WIDTH 1366
|
||||
#define WINDOW_HEIGHT 768
|
||||
#define VSYNC 1
|
||||
#define VSYNC 0
|
||||
#define SCROLL_THRESHOLD 0.1
|
||||
#define MAX_MESSAGES 10
|
||||
#define DB_PATH "world/omicron-world.db"
|
||||
|
@ -26,17 +30,9 @@
|
|||
#define DAY_LENGTH 500
|
||||
#define INVERT_MOUSE 0
|
||||
|
||||
// rendering options
|
||||
#define SHOW_LIGHTS 1
|
||||
#define SHOW_PLANTS 1
|
||||
#define SHOW_CLOUDS 1
|
||||
#define SHOW_TREES 1
|
||||
#define SHOW_ITEM 1
|
||||
#define SHOW_CROSSHAIRS 1
|
||||
#define SHOW_INFO_TEXT 1
|
||||
#define SHOW_CHAT_TEXT 1
|
||||
#define SHOW_PLAYER_NAMES 1
|
||||
#define FONT_SIZE 16 // 12 small, 16 average, 24, big
|
||||
// rendering options
|
||||
// were transfered to
|
||||
// options in main.c
|
||||
|
||||
// key bindings
|
||||
#define CRAFT_KEY_FORWARD 'W'
|
||||
|
@ -57,10 +53,10 @@
|
|||
#define CRAFT_KEY_SIGN '-'
|
||||
|
||||
// advanced parameters
|
||||
#define CREATE_CHUNK_RADIUS 10
|
||||
#define RENDER_CHUNK_RADIUS 6
|
||||
#define RENDER_SIGN_RADIUS 6
|
||||
#define DELETE_CHUNK_RADIUS 14
|
||||
#define CREATE_CHUNK_RADIUS 5
|
||||
#define RENDER_CHUNK_RADIUS 4
|
||||
#define RENDER_SIGN_RADIUS 1.5
|
||||
#define DELETE_CHUNK_RADIUS 6
|
||||
#define CHUNK_SIZE 32
|
||||
#define COMMIT_INTERVAL 5
|
||||
|
||||
|
|
10
src/cube.c
|
@ -10,6 +10,14 @@ void make_cube_faces(
|
|||
int wleft, int wright, int wtop, int wbottom, int wfront, int wback,
|
||||
float x, float y, float z, float scale, NonCubeType noncube)
|
||||
{
|
||||
/*static const float positions[6][4][3] = {
|
||||
{{-1, -1, -1}, {-1, -1, +1}, {-1, +1, -1}, {-1, +1, +1}},
|
||||
{{+1, -1, -1}, {+1, -1, +1}, {+1, +1, -1}, {+1, +1, +1}},
|
||||
{{-1, +1, -1}, {-1, +1, +1}, {+1, +1, -1}, {+1, +1, +1}},
|
||||
{{-1, -1, -1}, {-1, -1, +1}, {+1, -1, -1}, {+1, -1, +1}},
|
||||
{{-1, -1, -1}, {-1, +1, -1}, {+1, -1, -1}, {+1, +1, -1}},
|
||||
{{-1, -1, +1}, {-1, +1, +1}, {+1, -1, +1}, {+1, +1, +1}}
|
||||
};*/
|
||||
static const float positions[6][4][3] = {
|
||||
{{-1, -1, -1}, {-1, -1, +1}, {-1, +1, -1}, {-1, +1, +1}},
|
||||
{{+1, -1, -1}, {+1, -1, +1}, {+1, +1, -1}, {+1, +1, +1}},
|
||||
|
@ -18,6 +26,7 @@ void make_cube_faces(
|
|||
{{-1, -1, -1}, {-1, +1, -1}, {+1, -1, -1}, {+1, +1, -1}},
|
||||
{{-1, -1, +1}, {-1, +1, +1}, {+1, -1, +1}, {+1, +1, +1}}
|
||||
};
|
||||
|
||||
static const float normals[6][3] = {
|
||||
{-1, 0, 0},
|
||||
{+1, 0, 0},
|
||||
|
@ -185,6 +194,7 @@ void make_plant(
|
|||
mat_apply(data, ma, 24, 0, 10);
|
||||
}
|
||||
|
||||
// Player model
|
||||
void make_player(
|
||||
float *data,
|
||||
float x, float y, float z, float rx, float ry)
|
||||
|
|
11
src/item.c
|
@ -21,6 +21,7 @@ const int items[] = {
|
|||
Item_COBBLE,
|
||||
Item_LIGHT_STONE,
|
||||
Item_DARK_STONE,
|
||||
Item_TORCH,
|
||||
Item_CHEST,
|
||||
Item_TNT,
|
||||
Item_LEAVES,
|
||||
|
@ -191,6 +192,7 @@ const int blocks[256][6] = {
|
|||
{0, 0, 0, 0, 0, 0}, // 88
|
||||
{19, 19, 35, 0, 19, 19}, // 89 - swamp dirt
|
||||
{0, 0, 0, 0, 0, 0}, // 90
|
||||
{0, 0, 0, 0, 0, 16}, // 91
|
||||
{0, 0, 0, 0, 0, 0} // - empty
|
||||
};
|
||||
|
||||
|
@ -221,12 +223,13 @@ const int plants[256] = {
|
|||
58, // 87 - mushroom
|
||||
59, // 88 - mushroom patch
|
||||
0,
|
||||
60 // 90 - swamp tall grass
|
||||
60, // 90 - swamp tall grass
|
||||
96 // 91 - torch
|
||||
|
||||
};
|
||||
|
||||
const int obj[256] = {
|
||||
60 // 90 - swamp tall grass
|
||||
6 // test
|
||||
};
|
||||
|
||||
int is_plant(int w) {
|
||||
|
@ -244,6 +247,7 @@ int is_plant(int w) {
|
|||
case Item_MUSHROOM:
|
||||
case Item_MUSHROOMS:
|
||||
case Item_SWAMP_TALL_GRASS:
|
||||
case Item_TORCH:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
|
@ -262,6 +266,7 @@ int is_obstacle(int w) {
|
|||
case Item_EMPTY:
|
||||
case Item_CLOUD:
|
||||
case Item_WATER:
|
||||
case Item_TORCH:
|
||||
return 0;
|
||||
default:
|
||||
return 1;
|
||||
|
@ -284,6 +289,7 @@ int is_transparent(int w) {
|
|||
case Item_GLASS:
|
||||
//case Item_LEAVES: //for better performance (8 fps -> 60fps OPTIMIZATION NEEDED!)
|
||||
case Item_WATER: //Just to stop Xray-ing
|
||||
case Item_TORCH:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
|
@ -322,6 +328,7 @@ int buildable_to(int w) {
|
|||
switch (w) {
|
||||
case Item_WATER:
|
||||
case Item_CLOUD:
|
||||
case Item_TORCH:
|
||||
return 0;
|
||||
default:
|
||||
return 1;
|
||||
|
|
|
@ -84,6 +84,7 @@ typedef enum {
|
|||
Item_MUSHROOMS,
|
||||
Item_SWAMP_GRASS,
|
||||
Item_SWAMP_TALL_GRASS,
|
||||
Item_TORCH,
|
||||
Item_max
|
||||
} Item;
|
||||
|
||||
|
|
5920
src/main.c
|
@ -31,7 +31,7 @@ void generateBaseTerrain(int dx, int dz, int x, int z, int start_h, int h, int f
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Caves
|
||||
for (int y = 1; y < 37; y++) {
|
||||
if (simplex3(
|
||||
|
@ -46,5 +46,6 @@ void generateBaseTerrain(int dx, int dz, int x, int z, int start_h, int h, int f
|
|||
func(x, y, z, 0 * flag, arg);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ void generateTemperate(int dx, int dz, int x, int z, int start_h, int h, int fla
|
|||
for (int y = start_h; y < h - 1; y++) {
|
||||
func(x, y, z, Item_STONE * flag, arg);
|
||||
}
|
||||
for (int y = 0; y < 5; y++) {
|
||||
for (int y = 0; y < 3; y++) {
|
||||
func(x, h-y-1, z, Item_SAND * flag, arg);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,12 +33,28 @@ void create_world(int p, int q, world_func func, void *arg) {
|
|||
int mh = g * simplex2(-x * 0.0005, -z * 0.0005, 2, 16.0, 2);
|
||||
|
||||
mh += simplex2(-x * 0.0002, -z * 0.0002, 2, 16.0, 2) * simplex2(-x * 0.002, -z * 0.002, 2, 16.0, 2) * 100;
|
||||
|
||||
mh += 16;
|
||||
|
||||
mh += simplex2(-x * 0.02, -z * 0.02, 3, 8.0, 2);
|
||||
|
||||
if (simplex2(-x * 0.0004, -z * 0.0004, 4, 4.0, 3)> 0.59) {
|
||||
mh += 8;
|
||||
}
|
||||
|
||||
int h = f * mh;
|
||||
|
||||
|
||||
// Floating balls test
|
||||
|
||||
/*for (int y = 0; y < 25; y++) {
|
||||
if (simplex3(
|
||||
x * 0.001, (y+h) * 0.001, z * 0.001, 6, 1, 2) > 0.52)
|
||||
{
|
||||
if (y < 255) {
|
||||
func(x, (y+h), z, Item_COLOR_13 * flag, arg);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
// Ocean system (generates water under y == 45)
|
||||
for (int y = 22; y < 45; y++) {
|
||||
func(x, y, z, Item_WATER * flag, arg);
|
||||
|
@ -46,9 +62,9 @@ void create_world(int p, int q, world_func func, void *arg) {
|
|||
|
||||
// ice on frigid biomes
|
||||
float biomen = simplex3(-x * 0.0005 * (1 / BIOME_SIZE), -z * 0.0005 * (1 / BIOME_SIZE), q * 0.001, 2, 16.0, 1);
|
||||
if(biomen > (4.0f/5.0f) && biomen < (5.0f/5.0f)) {
|
||||
if(biomen > (1.0f/6.0f) && biomen < (2.0f/6.0f)) {
|
||||
// 2 ice layers on water
|
||||
if (simplex2(x * 0.0004, z * 0.0004, 8, 1.5, 2) > 0.6) {
|
||||
if (simplex2(x * 0.0004, z * 0.0004, 8, 1.5, 2) > 0.59) {
|
||||
func(x, 43, z, Item_ICE * flag, arg);
|
||||
func(x, 44, z, Item_ICE * flag, arg);
|
||||
}
|
||||
|
@ -78,7 +94,7 @@ void create_world(int p, int q, world_func func, void *arg) {
|
|||
|
||||
|
||||
// clouds
|
||||
for (int y = 120; y < 200; y++) {
|
||||
for (int y = 100; y < 180; y++) {
|
||||
if (simplex3(
|
||||
x * 0.001, y * 0.004, z * 0.001, 6, 1, 2) > 0.7)
|
||||
{
|
||||
|
@ -108,23 +124,23 @@ Biome biome_at_pos(int q, int x, int z) {
|
|||
Biome biome = Biome_max;
|
||||
|
||||
if(biomen > (1.0f/6.0f)) {
|
||||
biome = Biome_TEMPERATE;
|
||||
biome = Biome_TAIGA;
|
||||
}
|
||||
if(biomen > (2.0f/6.0f)) {
|
||||
biome = Biome_DESERT;
|
||||
biome = Biome_SWAMP;
|
||||
}
|
||||
if(biomen > (3.0f/6.0f)) {
|
||||
biome = Biome_RAINFOREST;
|
||||
biome = Biome_TEMPERATE;
|
||||
}
|
||||
|
||||
if(biomen > (4.0f/6.0f)) {
|
||||
biome = Biome_TAIGA;
|
||||
biome = Biome_RAINFOREST;
|
||||
}
|
||||
if(biome == (5.0/6.0)) {
|
||||
biome = Biome_MESA;
|
||||
biome = Biome_DESERT;
|
||||
}
|
||||
if(biome == (Biome_max)) {
|
||||
biome = Biome_SWAMP;
|
||||
biome = Biome_MESA;
|
||||
}
|
||||
return biome;
|
||||
}
|
||||
|
|
After Width: | Height: | Size: 168 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 825 KiB |
After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
BIN
textures/ui.png
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 3.2 KiB |