A downloadable game for Windows, macOS, and Linux

A futuristic themed block game I made as part of a youtube devlog series.

Updated 4 days ago
StatusIn development
PlatformsWindows, macOS, Linux
Rating
Rated 4.8 out of 5 stars
(106 total ratings)
AuthorFinalForEach
GenreSurvival
Made withGIMP, Audacity, libGDX
Tags3D, blocks, Multiplayer
Average sessionAbout a half-hour
LanguagesEnglish, Spanish; Latin America
InputsKeyboard, Mouse
AccessibilityConfigurable controls
MultiplayerServer-based networked multiplayer
LinksYouTube, Discord, Official Wiki, Reddit

Download

Download
cosmic-reach-linux.zip 60 MB
Version 0.3.11 4 days ago
Download
cosmic-reach-windows.zip 56 MB
Version 0.3.11 4 days ago
Download
cosmic-reach-jar.zip 25 MB
Version 0.3.11 4 days ago
Download
cosmic-reach-server.zip 11 MB
Version 0.3.11 4 days ago

Install instructions

I recommend you download the native version for your platform if you are on x64 windows or linux.

If you want to use the jar file instead you'll need Java 17 installed to run it.

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 227 · Next page · Last page

oh hey the game just updated

correct

(1 edit)

Can we get the source code? I'm making my own voxel game, and was having issues with the block place/break raycasting skipping over blocks. Took me like 15 minutes to find the class I needed, and only found it through the debug menu. It's also really hard to understand the code because it's decompiled, there's no comments, I have to guess at some of the variable names, and have to manually find classes and methods. 

This screenshot was taken today, November 24, 2024,  18:44:05 (6:44:05 PM) UTC+1

FinalForEach, FFE, Cosmic Reach,  CR, Cosmic Reach devlog, Cosmic Reach devlogs, Cosmic Reach discord server.

A new devlog is coming out soon.

been waiting for a way to obtain AND place water in survival, great update :D

this game’s really cool how long did it take for you to make it

I've been working on it since August of last year!

It says: "unable to authenticate your account", what do I do to do that?

If you aren't running it through the itch launcher, then do so, otherwise you'll need to pass in your itch api key through an environment variable. Let me know if you still have trouble!

Thanks!

this is one of the happiest moments in my life.


This screenshot was taken today, November 3, 2024, 13:32:21 UTC+1.

Cosmic Reach multiplayer Cosmic Reach discord server

If anyone is looking for an anarchy survival server for the new update, Cosmic Anarchy has been running for a while with the discord prereleases and it has updated to the full release now.

IP: even-firefox.gl.at.ply.gg:12364

(1 edit)

Cool server, kinda laggy tho.  I played for a little while but got frustrated with how nothing would load.  Despite that, I have high hopes for the server's future


This screenshot was taken today, October 28, 2024, 15:34:43 UTC+1 by me (Sebbog)

Cosmic Reach 0.3.2-pre8 Cosmic Reach pre release versions Cosmic Reach discord versions 0.3.2 pre release 8 Cosmic Reach 0.3.2-pre7 Cosmic Reach pre release versions Cosmic Reach discord versions 0.3.2 pre release 7 Cosmic Reach Multiplayer



This screenshot was taken by Sebbog (me) today October 28, 2024 15:30:49 UTC+1

Cosmic Reach 0.3.2-pre99 Cosmic Reach pre release versions Cosmic Reach discord versions 0.3.2 pre release 9 Cosmic Reach Multiplayer

how to write a bug report??
just in case here is the bug

I pressed ESC to pause and pressed it again mistakenlly.

This screenshot was taken today, October 20, 2024, 01:01:32 UTC+2


Cosmic Reach 0.3.2-pre6 Cosmic Reach pre release versions Cosmic Reach discord versions 0.3.2 pre release 6

This screenshot was taken today, October 8, 2024, 04:38:48 UTC+2

Cosmic Reach 0.3.2-pre5


Four new Discord only updates. Screenshot was taken today, October 7, 2024,  21:16:51 UTC+2. Cosmic Reach multiplayer is nearly done.

Hopefully 0.3.2 will be fully ready within the next few weeks (?). Multiplayer will change things a lot.

agreed.

and i can't wait until we get an official character model

New Discord exclusive update. https://discord.com/invite/geAmdvpXv2

Screenshot was taken today on October 6, 2024 00:02:13 UTC+2

(1 edit)

bug

  1. water splits
(+1)

The screenshot was taken on September 14, 2024, 9:29:51 PM UTC+2.

The update has now been released, 0.3.0.

(3 edits)

its realy fun to play with collerd light and I almost dont have a lot of issues compaired to the previous time: When in a cave I dont get a lot of rendering issues, but I seem to have some dark block blobs that seem to exist, but also not! and a bit of the orginail rendering glitch, 2024-09-13_20-16-36.png but a lot less than before. my last post from 3 month ago It seem to have picked up java 21 and I have more than 3 or 4 java versions installed on my pc: java 8, 16, 17 and 21 image of java versions: image.png game debug log java 21 picked up: image.png I cant change it as far as I know, if someone knows how to change the java version used in the game when launched via itch (example: in itch, some setting), plz. reply where! I find it playeble at the moment even with the rendering glitch what may be caused by using java 21 instead of my installed java 17 (added replies with more info)

close up shot of java versions: image.png close up to logs: image.png Black blob: (note: image is dark) 2024-09-13_20-55-03.png render glitch at night: 2024-09-13_20-55-13.png render glitch at day: 2024-09-13_20-56-44.png

(1 edit)

Debug log: (1/2)

* Game version: 0.2.5
* Ran for : 6 minutes, 30 seconds
* Current time: 2024-09-13 at 21:00:38.515505400+02:00[Europe/Amsterdam]
* Operating system: Windows 10 10.0
* Arch: amd64
* Java VM name: Java HotSpot(TM) 64-Bit Server VM
* Java runtime version: 21.0.4+8-LTS-274
* System user language: nl
* CPU model: Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz
* Save location free / total space: 549,98 GB / 930,703 GB
* Available processors: 4
* Native heap use: 19 MB
* Java heap use: 19 MB
* Max memory available: 3,967 GB
* RAM available: 15,863 GB
* getGLVersion: 
Type: OpenGL
Version: 4:6:0
Vendor: Intel
Renderer: Intel(R) HD Graphics 530
* Prestart error logs: 
[LWJGL] OpenGL debug message
    ID: 0x0
    Source: SHADER COMPILER
    Type: OTHER
    Severity: MEDIUM
    Message: SHADER_ID_COMPILE other warning has been generated. GLSL compile warning(s) for shader 22, "": WARNING: 0:1: '' :  #version directive missing


[LWJGL] OpenGL debug message
    ID: 0x0
    Source: SHADER COMPILER
    Type: OTHER
    Severity: MEDIUM
    Message: SHADER_ID_COMPILE other warning has been generated. GLSL compile warning(s) for shader 23, "": WARNING: 0:5: '' :  #version directive missing


[LWJGL] OpenGL debug message
    ID: 0x0
    Source: SHADER COMPILER
    Type: OTHER
    Severity: MEDIUM
    Message: SHADER_ID_COMPILE other warning has been generated. GLSL compile warning(s) for shader 25, "": WARNING: 0:1: '' :  #version directive missing


[LWJGL] OpenGL debug message
    ID: 0x0
    Source: SHADER COMPILER
    Type: OTHER
    Severity: MEDIUM
    Message: SHADER_ID_COMPILE other warning has been generated. GLSL compile warning(s) for shader 26, "": WARNING: 0:5: '' :  #version directive missing



* Exception logs: 
java.lang.RuntimeException: Caused a manual crash, not a bug!
SHADERS:
* ChunkShader: chunk.vert.glsl, chunk.frag.glsl
    VERTEX: #version 150
    #ifndef chunk_vert_glsl
    #define chunk_vert_glsl
    
    //in vec3 a_position;
    //in int a_uvAoPackedColorAttrib;
    
    in vec4 a_lighting;
    uniform vec3 u_batchPosition;
    uniform mat4 u_projViewTrans;
    uniform mat4 u_modelMat;
    
    out vec2 v_texCoord0;
    out vec3 worldPos;
    out vec4 blocklight;
    out vec3 faceNormal;
    
    #ifndef common_bitUnpacker_glsl
    #define common_bitUnpacker_glsl
    #define GET_TEX_COORDS getTexCoordsFromUVIdx(int(a_uvIdx))
    #define GET_VERT_NORMAL getVertNormalFromIdx(int(a_uvIdx))
    #define GET_FACE_NORMAL getFaceNormalFromIdx(int(a_uvIdx))
    #define GET_BLOCK_VERT_POSITION getBlockVertexPosition(int(a_uvIdx), int(a_positionPacked))
    
    #define NUM_FLOATS_PER_FACE_UVTEXBUFF (2 + 3 + 3 + 3)
    
    in float a_positionPacked;
    in float a_uvIdx;
    uniform samplerBuffer texBuffer;
    
    vec2 getTexCoordsFromUVIdx(int modelId)
    {
        int i = NUM_FLOATS_PER_FACE_UVTEXBUFF * modelId;
        return vec2(texelFetch(texBuffer, i).r, 
                    texelFetch(texBuffer, i+1).r);
    }
    vec3 getVertNormalFromIdx(int modelId)
    {
        int i = NUM_FLOATS_PER_FACE_UVTEXBUFF * modelId;
        return vec3(texelFetch(texBuffer, i+2).r,
                    texelFetch(texBuffer, i+3).r,
                    texelFetch(texBuffer, i+4).r);
    }
    vec3 getFaceNormalFromIdx(int modelId)
    {
        int i = NUM_FLOATS_PER_FACE_UVTEXBUFF * modelId;
        return vec3(texelFetch(texBuffer, i+5).r,
                    texelFetch(texBuffer, i+6).r,
                    texelFetch(texBuffer, i+7).r);
    }
    
    vec3 getBlockVertexPosition(int modelId, int packedPosition)
    {
        int i = NUM_FLOATS_PER_FACE_UVTEXBUFF * modelId;
        vec3 offset = vec3(texelFetch(texBuffer, i+8).r,
                    texelFetch(texBuffer, i+9).r,
                    texelFetch(texBuffer, i+10).r);
    
        int px = (packedPosition >> 12) & 0x3F;
        int py = (packedPosition >> 6) & 0x3F;
        int pz = (packedPosition) & 0x3F;
        vec3 blockPos = vec3(float(px), float(py), float(pz));
    
        return blockPos + offset;
    }
    
    int getUvAoBits(int uvAoPackedColor)
    {
        return (uvAoPackedColor >> 16) & 65535;
    }
    
    int getPackedColorBits(int uvAoPackedColor)
    {
        return uvAoPackedColor & 65535;
    }
    
    vec4 getBlockLight(int packedColorBits)
    {
        return vec4(((packedColorBits) & 15), (packedColorBits >> 4) & 15, (packedColorBits >> 8) & 15, (packedColorBits >> 12)) / 16.0;
    }
    #endif //common_bitUnpacker_glsl
    
    
    void main() 
    {
        worldPos = GET_BLOCK_VERT_POSITION + u_batchPosition;
        
        //int packedColorBits = getPackedColorBits(a_uvAoPackedColorAttrib);
        blocklight = a_lighting;//getBlockLight(packedColorBits);
        
        //int uvAoBits = getUvAoBits(a_uvAoPackedColorAttrib);
        v_texCoord0 = GET_TEX_COORDS;
    
        faceNormal = GET_FACE_NORMAL;
    
        gl_Position = (u_projViewTrans * u_modelMat * vec4(worldPos, 1.0));
    }
    #endif //chunk_vert_glsl
    
    FRAG: #version 150
    #ifndef chunk_frag_glsl
    #define chunk_frag_glsl
    #ifdef GL_ES 
    precision mediump float;
    #endif
    
    uniform vec3 skyAmbientColor;
    uniform vec4 tintColor;
    uniform vec3 worldAmbientColor;
    
    in vec2 v_texCoord0;
    in vec3 worldPos;
    in vec4 blocklight;
    in vec3 faceNormal;
    
    uniform sampler2D texDiffuse;
    uniform vec3 u_sunDirection;
    
    out vec4 outColor;
    
    void main() 
    {
        vec2 tilingTexCoords = v_texCoord0;
    
        vec4 texColor = texture(texDiffuse, v_texCoord0);
    
        if(texColor.a == 0)
        {
            discard;
        }
    
        vec3 blockAmbientColor = skyAmbientColor * max(dot(u_sunDirection, faceNormal), 0.5);
    
        // https://www.desmos.com/calculator
        // y\ =\ \frac{30}{1+e^{-15\left(\frac{x}{25}\right)^{2}}}-15
        vec3 it =  pow(15*blocklight.rgb / 25.0, vec3(2));
        vec3 t = 30.0/(1.0 + exp(-15.0 * it)) - 15;
        vec3 lightTint = max(t/15, blocklight.a * blockAmbientColor);
    
        //lightTint = max(lightTint, vec3(0.1));
        //texColor = vec4(1);
       
        outColor = tintColor * vec4(texColor.rgb * lightTint, texColor.a);
    
        outColor.rgb = max(outColor.rgb, texColor.rgb * worldAmbientColor);
    
    }
    #endif //chunk_frag_glsl
    
* ChunkShader: chunk-water.vert.glsl, chunk-water.frag.glsl
    VERTEX: #version 150
    #ifndef chunk_water_vert_glsl
    #define chunk_water_vert_glsl
    
    //in vec3 a_position;
    //in int a_uvAoPackedColorAttrib;
    in vec4 a_lighting;
    uniform vec3 u_batchPosition;
    
    uniform mat4 u_projViewTrans;
    uniform mat4 u_modelMat;
    uniform float u_time;
    uniform vec3 cameraPosition;
    
    out vec2 v_texCoord0;
    out vec4 blocklight;
    out float waveStrength;
    out vec3 worldPos;
    out vec3 toCameraVector;
    
    #ifndef common_bitUnpacker_glsl
    #define common_bitUnpacker_glsl
    #define GET_TEX_COORDS getTexCoordsFromUVIdx(int(a_uvIdx))
    #define GET_VERT_NORMAL getVertNormalFromIdx(int(a_uvIdx))
    #define GET_FACE_NORMAL getFaceNormalFromIdx(int(a_uvIdx))
    #define GET_BLOCK_VERT_POSITION getBlockVertexPosition(int(a_uvIdx), int(a_positionPacked))
    
    #define NUM_FLOATS_PER_FACE_UVTEXBUFF (2 + 3 + 3 + 3)
    
    in float a_positionPacked;
    in float a_uvIdx;
    uniform samplerBuffer texBuffer;
    
    vec2 getTexCoordsFromUVIdx(int modelId)
    {
        int i = NUM_FLOATS_PER_FACE_UVTEXBUFF * modelId;
        return vec2(texelFetch(texBuffer, i).r, 
                    texelFetch(texBuffer, i+1).r);
    }
    vec3 getVertNormalFromIdx(int modelId)
    {
        int i = NUM_FLOATS_PER_FACE_UVTEXBUFF * modelId;
        return vec3(texelFetch(texBuffer, i+2).r,
                    texelFetch(texBuffer, i+3).r,
                    texelFetch(texBuffer, i+4).r);
    }
    vec3 getFaceNormalFromIdx(int modelId)
    {
        int i = NUM_FLOATS_PER_FACE_UVTEXBUFF * modelId;
        return vec3(texelFetch(texBuffer, i+5).r,
                    texelFetch(texBuffer, i+6).r,
                    texelFetch(texBuffer, i+7).r);
    }
    
    vec3 getBlockVertexPosition(int modelId, int packedPosition)
    {
        int i = NUM_FLOATS_PER_FACE_UVTEXBUFF * modelId;
        vec3 offset = vec3(texelFetch(texBuffer, i+8).r,
                    texelFetch(texBuffer, i+9).r,
                    texelFetch(texBuffer, i+10).r);
    
        int px = (packedPosition >> 12) & 0x3F;
        int py = (packedPosition >> 6) & 0x3F;
        int pz = (packedPosition) & 0x3F;
        vec3 blockPos = vec3(float(px), float(py), float(pz));
    
        return blockPos + offset;
    }
    
    int getUvAoBits(int uvAoPackedColor)
    {
        return (uvAoPackedColor >> 16) & 65535;
    }
    
    int getPackedColorBits(int uvAoPackedColor)
    {
        return uvAoPackedColor & 65535;
    }
    
    vec4 getBlockLight(int packedColorBits)
    {
        return vec4(((packedColorBits) & 15), (packedColorBits >> 4) & 15, (packedColorBits >> 8) & 15, (packedColorBits >> 12)) / 16.0;
    }
    #endif //common_bitUnpacker_glsl
    
    
    void main() 
    {
        worldPos = GET_BLOCK_VERT_POSITION + u_batchPosition;
    
        v_texCoord0 = GET_TEX_COORDS;
        blocklight = a_lighting;
    
        toCameraVector = cameraPosition - worldPos;
        vec3 normal = GET_VERT_NORMAL;
    
    
        float xOff = 0;
        float zOff = 0;
        if(normal.y < 0)
        {
            //waveStrength = 0.2;
            xOff = normal.x * -0.001;
            zOff = normal.z * -0.001;
        }
        //else
        {
            float waveSpeed = 0.25;
            float waveTime = waveSpeed * u_time;
            float scale = 5;
            float wavePositionA = 10 * (cos(worldPos.x*scale) + sin(worldPos.z*scale));
            float wavePositionB = 10 * (sin(worldPos.x*scale) + cos(worldPos.z*scale));
    
            waveStrength = 0.1 * (sin(waveTime + wavePositionA) * cos(waveTime + wavePositionB));
        }
        
        gl_Position = u_projViewTrans * u_modelMat * vec4(worldPos.x + xOff, worldPos.y + waveStrength - 0.2, worldPos.z + zOff, 1.0);
    }
    #endif //chunk_water_vert_glsl
    
    FRAG: #version 150
    #ifndef chunk_water_frag_glsl
    #define chunk_water_frag_glsl
    #ifdef GL_ES 
    precision mediump float;
    #endif
    
    uniform float u_time;
    uniform vec3 skyAmbientColor;
    uniform vec3 skyColor;
    uniform vec4 tintColor;
    uniform vec3 worldAmbientColor;
    
    in vec2 v_texCoord0;
    in vec4 blocklight;
    in float waveStrength;
    in vec3 worldPos;
    in vec3 toCameraVector;
    
    uniform sampler2D texDiffuse;
    uniform sampler2D noiseTex;
    
    out vec4 outColor;
    
    void main() 
    {
    
        vec2 numTiles = floor(v_texCoord0);
        vec2 tilingTexCoords = v_texCoord0;
        
        if(numTiles.xy != vec2(0, 0))
        {
            tilingTexCoords = (v_texCoord0 - numTiles);
            vec2 flooredTexCoords = floor((v_texCoord0 - numTiles) * 16) / 16;
            numTiles = numTiles + vec2(1,1);
    
            tilingTexCoords = flooredTexCoords + mod(((tilingTexCoords - flooredTexCoords) * numTiles) * 16, 1) / 16;
        }
    
        vec4 texColor = texture(texDiffuse, tilingTexCoords);
    
        vec3 viewVector = normalize(toCameraVector);
        vec3 faceNormal = vec3(0.0, 1.0, 0.0);
        float fresnel = abs(dot(viewVector, faceNormal));
    
        vec2 noiseUV = 0.2*vec2(waveStrength - 0.1) + worldPos.xz / 16.0;
        noiseUV+=vec2(u_time*0.02);
        vec2 distortion = fresnel * texture(noiseTex, noiseUV).rg;
        vec3 waterColor = texColor.rgb;
    
        fresnel = pow(fresnel, mix(3, 1, 2*(waveStrength - 0.1 + distortion.r/3.0)));
        fresnel = pow(fresnel, 0.35);
        waterColor = mix(waterColor * 0.5, waterColor, 0.5 + 0.5*waveStrength*(1-fresnel));```
(1 edit)

debug log: (2/2)

        waterColor = mix(waterColor, skyColor, blocklight.a * (1-fresnel));
    
    
        vec3 lightTint = max(blocklight.rgb, blocklight.a * skyAmbientColor);
        float alpha = mix(texColor.a*2.0, texColor.a*0.5, fresnel);
        
        if(alpha == 0)
        {
            discard;
        }
    
        outColor = vec4(waterColor * lightTint, alpha);
        outColor.rgb = mix(outColor.rgb, skyColor, blocklight.a * (1-fresnel));
        outColor *= tintColor;
        outColor.rgb = max(outColor.rgb, texColor.rgb * worldAmbientColor);
    }
    #endif //chunk_water_frag_glsl
    
* SkyStarShader: sky-star.vert.glsl, sky-star.frag.glsl
    VERTEX: #version 150
    #ifndef sky_star_vert_glsl
    #define sky_star_vert_glsl
    
    in vec3 a_position;
    
    uniform mat4 u_projViewTrans;
    
    void main() 
    {
        gl_Position = u_projViewTrans * vec4(a_position, 1.0);
        
    }
    #endif //sky_star_vert_glsl
    
    FRAG: #version 150
    #ifndef sky_star_frag_glsl
    #define sky_star_frag_glsl
    #ifdef GL_ES 
    precision mediump float;
    #endif
    
    out vec4 outColor;
    
    void main() 
    {
        outColor = vec4(1);
    }
    #endif //sky_star_frag_glsl
    
* SkyShader: sky.vert.glsl, sky.frag.glsl
    VERTEX: #version 150
    #ifndef sky_vert_glsl
    #define sky_vert_glsl
    
    in vec3 a_position;
    in vec3 a_normal;
    
    uniform mat4 u_projViewTrans;
    uniform vec3 cameraPosition;
    
    out vec3 v_position;
    out vec3 v_position_adjusted;
    out vec3 v_normal;
    
    void main() 
    {
        v_normal = a_normal;
        vec3 p = a_position;// - vec3(0, min(cameraPosition.y, 20), 0);
        gl_Position = u_projViewTrans * vec4(p, 1.0);
        v_position = p;
        v_position_adjusted = p;// + vec3(0, cameraPosition.y - 32, 0);
    }
    #endif //sky_vert_glsl
    
    FRAG: #version 150
    #ifndef sky_frag_glsl
    #define sky_frag_glsl
    #ifdef GL_ES 
    precision mediump float;
    #endif
    
    in vec3 v_position;
    in vec3 v_position_adjusted;
    in vec3 v_normal;
    out vec4 outColor;
    uniform vec3 u_sunDirection;
    uniform vec3 cameraPosition;
    
    void main() 
    {
        vec3 pos_normal = normalize(v_position);
        vec3 pos_adj_normal = normalize(v_position);
        float sunRadius = 0.005;
        float sun_dot = dot(u_sunDirection, pos_normal);
        float noon_dot = dot(u_sunDirection, vec3(0, 1, 0));
        float sunFactor = (sun_dot - (1 - sunRadius)) / sunRadius;
        float horizonFactor = 1-abs(pos_adj_normal.y);
        
        vec3 upperColor = vec3(0.1, 0.4, 0.7);
        float upperHalfFactor = sqrt(max(0, dot(vec3(0,1,0), pos_adj_normal)));
        float upperColorFactor = upperHalfFactor * clamp(1 - (pow(1 - noon_dot, 3)), 0, 1);
        vec3 lowerColor = vec3(0.2, 0.4, 0.7) * 3;
        float lowerColorFactor = (1 - max(0, upperHalfFactor)) * max(0, (noon_dot +0.75)/1.75);
        vec3 skyColor = (upperColor * upperColorFactor) + (lowerColor * lowerColorFactor);
    
        float sunsetOrSunRiseFactor = pow(1-abs(noon_dot), 2);
        vec3 redHorizonColor = vec3(3, 0, 0) * pow(horizonFactor,4) * sunsetOrSunRiseFactor;
        skyColor = max(skyColor, redHorizonColor);
    
        vec3 crossDir = cross(u_sunDirection, vec3(0,1,0));
        float sunHorizonFlareFactor = pow(1 - pow(dot(cross(u_sunDirection, crossDir), pos_normal), 2), 8) * pow(1 - abs(noon_dot), 4) * sun_dot;// * max(0, (noon_dot+0.25)/1.25);
        vec3 sunFlareHorizonColor = vec3(1,1,0) * sunHorizonFlareFactor;
        skyColor = max(skyColor, sunFlareHorizonColor);
    
    
        vec3 sunColor = vec3(1, 0.9, 0.6) * sunFactor;
    
        skyColor = max(skyColor, sunColor);
    
        float alpha = max(0.1, max(min(length(skyColor), (sun_dot+2)/3), min(1, round(sunFactor*2)))) + max(0, noon_dot);
        alpha = max(0, min(alpha, 1));
       
        outColor = vec4(skyColor / alpha, alpha);
    }
    #endif //sky_frag_glsl
    
* EntityShader: entity.vert.glsl, entity.frag.glsl
    VERTEX: #version 150
    #ifndef entity_vert_glsl
    #define entity_vert_glsl
    
    in vec3 a_position;
    in vec2 a_texCoord0;
    
    out vec2 v_texCoord0;
    
    uniform mat4 u_projViewTrans;
    uniform mat4 u_modelMat;
    
    void main() 
    {
        v_texCoord0 = a_texCoord0;
        gl_Position = u_projViewTrans * u_modelMat * vec4(a_position, 1.0);    
    }
    #endif //entity_vert_glsl
    
    FRAG: #version 150
    #ifndef entity_frag_glsl
    #define entity_frag_glsl
    #ifdef GL_ES 
    precision mediump float;
    #endif
    
    in vec2 v_texCoord0;
    
    uniform sampler2D texDiffuse;
    uniform vec4 tintColor;
    
    out vec4 outColor;
    
    void main() 
    {
        vec4 texColor = texture(texDiffuse, v_texCoord0);
    
        if(texColor.a == 0)
        {
            discard;
        }
    
        outColor = texColor * tintColor;
    }
    #endif //entity_frag_glsl
    
* SpriteBatchShader: death-screen.vert.glsl, death-screen.frag.glsl
    VERTEX: #version 150
    #ifndef death_screen_vert_glsl
    #define death_screen_vert_glsl
    
    in vec4 a_position;
    in vec4 a_color;
    in vec2 a_texCoord0;
    
    uniform mat4 u_projTrans;
    
    out vec4 v_color;
    out vec2 v_texCoords;
    
    void main()
    {
       v_color = a_color;
       v_color.a = v_color.a * (255.0/254.0);
       v_texCoords = a_texCoord0;
       gl_Position =  u_projTrans * a_position;
    }
    #endif //death_screen_vert_glsl
    
    FRAG: #version 150
    #ifndef death_screen_frag_glsl
    #define death_screen_frag_glsl
    
    in vec4 v_color;
    in vec2 v_texCoords;
    
    uniform sampler2D u_texture;
    uniform float u_time;
    
    out vec4 outColor;
    
    void main()
    {
        float s1 = u_time + v_texCoords.y*100 + 3*cos(u_time/10 + v_texCoords.x);
        float s2 = dot(normalize(vec2(v_texCoords)-0.5), vec2(sin(u_time), cos(u_time)));
    
        outColor = v_color * texture2D(u_texture, v_texCoords) * vec4(vec3((0.9 + 0.1*sin(s1))), 1) * (6+s2)/7;
    }
    #endif //death_screen_frag_glsl
    
* ItemShader: assets/base/shaders/item_shader.vert.glsl, assets/base/shaders/item_shader.frag.glsl
    VERTEX: #version 150
    #ifndef assets_base_shaders_item_shader_vert_glsl
    #define assets_base_shaders_item_shader_vert_glsl
    
    // Contributors: Shfloop, Mr-Zombii
    
    in vec3 a_position;
    in vec2 a_texCoord0;
    in vec3 a_normal;
    out vec2 v_texCoord0;
    
    uniform mat4 u_projViewTrans;
    uniform mat4 u_modelMat;
    
    out vec3 v_normal;
    
    void main()
    {
    
        v_normal = normalize(a_normal); // Mult by u_modelMat for world space vectors
        v_texCoord0 = a_texCoord0;
        gl_Position = u_projViewTrans * u_modelMat * vec4(a_position, 1.0);
    }
    #endif //assets_base_shaders_item_shader_vert_glsl
    
    FRAG: #version 150
    #ifndef assets_base_shaders_item_shader_frag_glsl
    #define assets_base_shaders_item_shader_frag_glsl
    #ifdef GL_ES
    precision mediump float;
    #endif
    
    // Contributors: Shfloop, Mr-Zombii
    
    in vec2 v_texCoord0;
    in vec3 v_normal;
    
    uniform sampler2D texDiffuse;
    uniform vec4 tintColor;
    uniform int isInSlot;
    
    out vec4 outColor;
    
    void main()
    {
        // arbitrary numbers might want to mess around with
        float faceShade = abs(dot(vec3(0,0,1), v_normal) ) + 0.6;
        faceShade *= abs(dot(vec3(0,1,0), v_normal) + 0.8);
        faceShade *= 1.0;
        vec4 texColor = texture(texDiffuse, v_texCoord0);
    
        if(texColor.a == 0)
        {
            discard;
        }
    
        if (isInSlot == 1) {
            outColor = texColor;
            return;
        } else outColor = vec4(texColor.rgb * faceShade , texColor.a) * tintColor;
    }
    #endif //assets_base_shaders_item_shader_frag_glsl
    

    at finalforeach.cosmicreach.gamestates.OptionsMenu$10.onClick(OptionsMenu.java:292)
    at finalforeach.cosmicreach.ui.UIElement.drawBackground(UIElement.java:145)
    at finalforeach.cosmicreach.gamestates.GameState.drawUIElements(GameState.java:121)
    at finalforeach.cosmicreach.gamestates.OptionsMenu.render(OptionsMenu.java:335)
    at finalforeach.cosmicreach.BlockGame.render(BlockGame.java:132)
    at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:387)
    at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:193)
    at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:167)
    at finalforeach.cosmicreach.lwjgl3.Lwjgl3Launcher.createApplication(Lwjgl3Launcher.java:104)
    at finalforeach.cosmicreach.lwjgl3.Lwjgl3Launcher.main(Lwjgl3Launcher.java:92)```
(+1)

good game, hell next thing you know there's gonna be modding support.

there is modding support from at least few months

(+1)

minecraft: moon edition

hopefully people don't say that this was copied/inspired by another block building game

is infinite miner like game...

It's a pixark clone

i thought it was a eaglercraft clone

(1 edit)
_01 clone

this game is actually frickin sweet

a way to wire the colored bulbs together and program how they turn on and off would be awesome! imaging using red, green, and blue bulbs to make a functioning display!

that's what makes this game awesome :D the lightning and shadows too, it's clever how they depend on daylight rather than just if a block is there or not

will you make a  mac port pls

Download cosmic-reach-jar.zip and unzip it. That will give you a .jar file. You should be able to just double click that to run it.

Although the game does state that mac is not supported, I've been following the game's development for a while now on my mac, and haven't noticed any issues.

thx but can you open it with later versions of java

Sorry for the late reply

I have java 22, 17, and 1.8 installed, pretty sure 22 is the latest, so yes

Deleted 99 days ago
Deleted 99 days ago

Mac version eventually?

There is no platform-specific release for mac yet, but you can download the "jar" version and run it. If you don't have already, you need to install a Java 17 (or later) Runtime so you can run .jar files.

posting for archival purposes, the screenshot was taken September 1, 2024 10:16:19 PM UTC+2

 -

(1 edit)

when you delete a world in the files v0.1.50-0.01 it does show up and when you click on it the game crash there has to be a delete button

or banners

(1 edit) (+1)

this game is awesome and definetely my favorite in months, but it'd be cool if when a way to set spawnpoints into the game gets added instead of a bed like MC we'd have FLAGS (reference to moon landing). just a random suggestion there :D

wow just noticed someone used my idea in a comment of a Tortellini Soup video, neat :D

(+4)(-1)

my cat thinks this is minecraft

How do I access gold in survival mode?

In today's update I added a rare chance for it to drop from interceptors, but this is temporary until the new world generation.

Thank you! :)

Jeez it must be a VERY rare drop, ran around killing interceptors for hours, and not even one dropped gold

when you pick up items in your inventory they should keep their number! Also does creative mode have flight? I just tried double space bar like MC but nothing happened.

Yes it does, you can press F4 or type /noclip in the chat for now, I'll see if I can do double space for the next update

Ok thanks, love the project, keep it up!

(+1)

The robots being little mechanical resource flowers is fun.

I like to think of them as the Amazon delivery drones used by the lost civilization. (the killer saw blades were for theft prevention)

"Gone are the days of taking a thief's hand, we have that built in."

(+1)

Had to Google™ that one, Nice scripture!

i have seem to encounter a bug this update where i cant move around upon creating a new world i can look around and place and break blocks though

doesn't happen to me

Viewing most recent comments 1 to 40 of 227 · Next page · Last page