StreamMinecraftClone - A Minecraft Clone developed live on stream at twitch.tv/gameswthgabe

Overview

Minecraft Clone

This is a Minecraft clone that will be used for an education YouTube series. I will link the YouTube series here once I begin creating it.

To Build

Note: Currently this code only supports Windows and Linux (almost)

Windows

In order to build this, you must have git installed. Then you can create a new directory where you want to install this code and open a command prompt. Then run:

git clone --recursive https://github.com/codingminecraft/StreamMinecraftClone
cd StreamMinecraftClone
build.bat vs2019

This should create a Visual Studio solution file, and all you need to do is double click the solution file, then build and run the project within Visual Studio.

Linux (Ubuntu) In order to build this, you must have git and a few other dependencies installed. You cun run the following commands to ensure you have all the dependencies:
# Get the dependencies for libcurl
sudo apt-get install libcurl4-gnutls-dev

# Get the dependencies for freetype
wget https://download.savannah.gnu.org/releases/freetype/freetype-2.10.4.tar.gz
tar xvfz freetype-2.10.4.tar.gz
cd freetype-2.10.4
./configure --prefix=/usr/local/freetype/2_10_4 --enable-freetype-config
make
make install
cd ..
rm -rf ./freetype-2.10.4
rm ./freetype-2.10.4.tar.gz

# Get dependencies for GLFW
sudo apt-get install xorg-dev

# Clone the repository and change into the directory
git clone --recursive https://github.com/codingminecraft/StreamMinecraftClone

# Compile and install GLFW
cd StreamMinecraftClone/Minecraft/vendor/GLFW
cmake .
make 
sudo make install
cd ../../../

# Finally build the project 
./build.sh gmake2
make Minecraft

If you ever need to rebuild the project simply run these two commands:

./build.sh gmake2
make Minecraft config=release

Note: If you want to use a different build system, just run build.bat which will print out all available build systems.

Bug Reporting

This game is still very much in development, there are no official releases yet. However, bug reporting is still very helpful so I can keep track of everything. If you encounter any bugs please report them at the issues tab of the repository at: https://github.com/codingminecraft/StreamMinecraftClone.

TODOs

This is a list of tasks that still need to be done.

Most Important


  • Save chunks when they unload from the chunk radius
  • Make GUI stuff look pretty
  • Clean up the code in ChunkManager.cpp
  • Make the application handle out of memory errors gracefully (Sort of done...)
    • Either make it allocate more memory, or just de-prioritize the furthest chunks
  • Add block level lighting
    • Add light sources
    • Add multi-color lighting
  • Add proper transparency support
  • Add inventory management
    • Add icons for blocks in the inventory
    • Add indicators for number of blocks in a slot
  • Add crafting support
  • Cubemaps
  • Day/Night cycle
  • Biome generation
    • Ore generation
    • Structure generation
    • Tree generation
  • Water/Lava
  • Fullscreen support
  • Add sounds
  • Add Command Line Parsing
  • Add Multiplayer Support

Less Important


  • Support for different block types
    • E.g stairs, slabs, door, beds, etc.
  • 3D Rigged models and animations
  • Mobs
  • True survival mode
  • Settings Menu

Bugs


  • Linux Fileystem doesn't like numbers
Issues
  • rand() is very slow, prefer using something else

    rand() is very slow, prefer using something else

    rand is slow, unreliable and only supports x16 bit numbers, it's used in chunk gen code, which is usually critical part (performance wise). I have a very good rng which should be ~15x faster, reliable and supports x64 bit (best from all the rngs I tested), I will put the code tomorrow here. (It's late)

    opened by GeorgeAzma 8
  • when i launch the game almost all of the textures are missing and i dont really like that please fix that all the textures are black for me

    when i launch the game almost all of the textures are missing and i dont really like that please fix that all the textures are black for me

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS, Linux]

    Additional context Add any other context about the problem here.

    opened by 6AMer 2
  • [Pre-Release 0.6] Floating leaf blocks in midair

    [Pre-Release 0.6] Floating leaf blocks in midair

    When loading in a new world, leaf blocks that are connected to nothing are being generated

    Steps to reproduce the behavior:

    1. Create a new world
    2. Look around for a while

    I believe that those leaf blocks should have been turned into a tree or either that they shouldn't have been generated at all

    https://user-images.githubusercontent.com/86744385/147682745-ec1154d0-fb79-4cf8-ad2c-94c6e4e521fe.png

    I am currently using Windows 10 Home (21H2).

    opened by ghost 2
  • Please support building on android iOS device

    Please support building on android iOS device

    Hi @codingminecraft I am very impressed with your youtube content I think this code and YouTube series will awesome too! If you can please support this code to build for android and ios devices! Thank you so much!

    opened by codingwatching 2
  • Unresolved externals

    Unresolved externals

    When downloading the zip file and then building it, you get an error saying that you have unresolved external symbols.

    Here is a image of the error: https://user-images.githubusercontent.com/86744385/146460718-93a75a57-a305-40a5-86f0-236ccee261ef.png

    opened by ghost 1
  • Add FOV slider

    Add FOV slider

    Is your feature request related to a problem? Please describe. On my 14 inch laptop I have to run games at 60% FOV, and on my 17 inch laptop I have to run them at 80 FOV. It's not a constant amount, and the game looks really weird on my big laptop.

    Describe the solution you'd like A slider that allows me to set the FOV in-game. A slider is much better than buttons, since it can get more precise and isn't stuck to one or two options.

    Describe alternatives you've considered I've considered dynamic scaling of the FOV based on screen size and resolution, but that just isn't a good answer, since individuals see things differently based on eyesight, screen resolution, and many other factors.

    opened by du64 0
  • [PreRelease-0.7] Lighting bug

    [PreRelease-0.7] Lighting bug

    Sometimes when generating a world, certain sections of the world are not light up correctly

    Steps to reproduce the behavior:

    1. Create a new world
    2. Look around for a while
    3. You might find a area where the lighting is not functioning correctly

    The area where the lighting is not functioning correctly is supposed to be lit up, like other parts of the world

    https://user-images.githubusercontent.com/86744385/148605188-2ffca952-12b3-4f29-b123-c67751622e0d.png

    Windows 21H2 (Home Version)

    opened by ghost 0
  • [PreRelease-0.7] Water rendered on top of player box

    [PreRelease-0.7] Water rendered on top of player box

    When rendering a second player during multiplayer and the other player is in front of water, the water covers part of the player box

    Steps to reproduce the behavior:

    1. Create a new world
    2. Open a LAN server
    3. Have another person join the server
    4. Have that person be in front of a water body

    The box showing the location of the player should render infront of the water, not behind the water

    https://user-images.githubusercontent.com/86744385/148604321-28b1722d-58ac-46bf-b49e-13a445941778.png

    Windows 21H2

    opened by ghost 0
  • Typo in README

    Typo in README

    There is currently a type on the bottom of the README. The bottom of the README is supposed to say "Linux Filesystem doesn't like numbers" but instead "Linux Fileystem doesn't like numbers" is written

    To Reproduce Steps to reproduce the behavior:

    1. Scroll down to the bottom of the page
    2. Look at the bugs section of the README

    Expected behavior "Linux Fileystem doesn't like numbers" is supposed to be written as "Linux Filesystem doesn't like numbers"

    Screenshots https://user-images.githubusercontent.com/86744385/148583355-5d13a451-9053-494d-80b1-2141239d4a79.png

    opened by ghost 0
Releases(PreRelease0.7)
  • PreRelease0.7(Dec 31, 2021)

    This pre-release completes multiplayer (for the most part). The only thing I still need to add is chunk loading around all players. Currently, only the player hosting the lan server will generate new chunks around them, and the new chunks will not be sent to players that are acting like clients. This will be fixed in the next prerelease.

    To start a multiplayer game:

    1. Join or create a new world
    2. Press escape and click Start LAN Server
    3. Have a friend click Join LAN Server on their computer * Note: The computers must be connected to the same network.
    4. Click your friends user name and enter a username to join as
    Source code(tar.gz)
    Source code(zip)
    CrumblePreRelease0.7.zip(33.14 MB)
  • PreRelease0.6(Dec 24, 2021)

    This release adds:

    • Improvements to chunk generation
    • New terrain generation
    • Better lighting (but still pretty broken)
    • Creative mode
    • Notifications
    • Input Boxes work correctly

    Some hotkeys:

    • F4 - Switch gamemode
    • F5 - Possess the red entity
    • F10 - Quick Save and Exit
    • F2 - Lock Cursor
    • // - Type double slash to type a command

    Some commands:

    • /give [block] where block is the name of the block you want to give the player
    • /setTime [time] where time is an hour ranging from 0-2400
    • /generateCubemap Generates a cubemap where the player is currently at
    • /doDaylightCycle [true|false] turns the daylight cycle on or off depending on if the parameter is true or false
    • /reloadShaders Quick reload of shaders. If you modify any of them you can hot reload them to see the effects immediately
    • /screenshot Takes a screenshot and saves it to the screenshots folder
      • Screenshots folder is located at %appdata%/.minecraftClone/screenshots on Windows and ~/.minecraftClone/screenshots on Linux
    • /regenerateWorld Quick regeneration of the world. This is useful if you're messing with terrain generation stuff
    Source code(tar.gz)
    Source code(zip)
    CrumblePreRelease0.6.zip(35.11 MB)
  • PreRelease0.5(Nov 7, 2021)

  • PreRelease0.4(Oct 27, 2021)

  • PreRelease0.3(Oct 25, 2021)

    Make the game not so crashy and stuff. I fixed some bugs that would make you teleport to invalid locations, and I added support for saving chunks that are not in the spawn area. I also added a debug stat to show how much chunk RAM is being used and how much is available.

    Source code(tar.gz)
    Source code(zip)
    CrumblePreRelease0-3.zip(7.83 MB)
  • PreRelease0.2(Oct 22, 2021)

  • PreRelease0.1(Sep 25, 2021)

    This is a very bare-bones pre-release. Windows only for now. Use basic WASD and mouse for movement, and some hotkeys are listed below.

    Hot keys

    F2: Locks/Unlocks the cursor F3: Show debug stats F12: Quick-Exit Forward-slash: Command-line T: Chat Esc: Exit any open dialog

    Source code(tar.gz)
    Source code(zip)
    PreRelease0.1.zip(4.22 MB)
A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC)

PolyMC is a custom launcher for Minecraft that focuses on predictability, long term stability and simplicity. This is a fork of the MultiMC Launcher a

null 1.7k Jul 31, 2022
A voxel game/Minecraft clone for the iCE40 UP5K FPGA

FPGA craft A voxel game/Minecraft clone for the iCE40 UP5K FPGA (for the iCEBreaker board). Disclaimer Use this project at your own risk. This project

null 155 Jul 20, 2022
A Minecraft-clone written in C++/Vulkan

Minecraft A Minecraft-clone written in C++/Vulkan Current state It is currently very bare-bones. Planned features Textures Procedural generation Colli

null 4 Feb 27, 2022
A minecraft clone built in c++ opengl for the purpose of prefecting graphics programming skills.

LearnOpenGL - CLion This is a project template for OpenGL development with JetBrains CLion IDE. It was created mainly for LearnOpenGL tutorials. Inclu

Jeremy Dellock 1 Dec 28, 2021
Minecraft Classic Clone in C

Minecraft Classic Clone in C This was my first large-scale OpenGL project. I've personally never used OpenGL, and so I apologize for any bizzare/slopp

null 2 Jan 25, 2022
How to use Live Update to improve the load speed of HTML5 game.

ResZip: use Live Update to improve load speed of HTML5 game In short, HTML5 games should load as fast as possible! Why -> https://vimeo.com/350139974

Indiesoft LLC 19 Jul 27, 2022
A UE4 plugin wrapper for Molecular Matter's Live++ Hot-Reloading Library

Good News Everyone: Natively integrated in UE4.22+ Details here: https://docs.unrealengine.com/en-us/Builds/4_22 UE4 LivePP: C/C++ live coding A UE4 p

Kite & Lightning 100 Jul 13, 2022
Minecraft Classic 0.0.30a reimplemented in C.

MinecraftC - A 0.0.30a implementation in C Features True to the original version Implemented fully in C using SDL2 and OpenGL 1.1 Two different binari

John Payne 181 Aug 1, 2022
Replace Minecraft entity with MMD model.

KAIMyEntity Replace Minecraft entity with MMD model. KAIMyEntitySaba 将Github项目 benikabocha/saba (https://github.com/benikabocha/saba) 魔改成一个以JNI形式Expor

null 27 Jul 26, 2022
Minecraft 4k: decompiled, translated to C using SDL for graphics and input, and improved upon

M4KC Minecraft 4K - C Rewrite For those who don't know, Minecraft 4K was a stripped down version of Minecraft submitted by Notch to the Java 4K Game P

Sasha Koshka 34 Jul 25, 2022
A simplified version of the famous game Minecraft.

This program uses the concept of the famous game Minecraft but with better graphics. It procedurally generates an infinite world, the player has an animated character and can break blocks, there are also different biomes and mobs.

Angel Uriot 56 Jul 26, 2022
A fully-featured Minecraft server startup script

A fully-featured Minecraft server startup script suite that offers a friendly user interface, blazing fast speeds, and wide compatibility.

null 77 Jul 20, 2022
Randomizes Minecraft's loot tables.

Minecraft Loot Randomizer Randomizes Minecraft's loot tables. Use Instructions To use this program, which you can either do via the provided exe file

bryceio 1 Oct 20, 2021
MotorMC is a blazing fast, multi threaded, asynchronous Minecraft server software

MotorMC is a blazing fast, multi threaded, asynchronous Minecraft server software that aims to handle many players (1000+) on a single world while still providing an experience as close to vanilla Minecraft as possible.

Garet Halliday 62 Jul 26, 2022
A Minecraft like game with basic rendering, movement, block placement.. All made from scratch

Voxel-Game-Demo A Minecraft like game with basic rendering, movement, block placement.. All made from scratch Downlod Pre-compiled binaries (executabl

null 1 Dec 30, 2021
📦 A familiar Minecraft Launcher with native support for macOS arm64 (M1)

ManyMC A familiar Minecraft Launcher with native support for macOS arm64 (M1) ⚠️ This is an UNOFFICIAL project. DO NOT report any issues to the MultiM

Minecraft Machina 492 Aug 5, 2022
A third party program to change Minecraft RTX's settings externally, directly in-memory.

RenderBender A third party program to change Minecraft RTX's settings externally, directly in-memory. Get the latest release here. About RenderBender

Jesse Daems 10 Jul 31, 2022
tiny game made in ~15 hours on stream

A small game made entirely on live stream over about 15 hours. I intend to add more documentation and clarify some of the code and assets over the next few days.

Noel Berry 172 Jul 7, 2022
Stream Raspberry Pi games to the GBA via the Link Cable

gba-remote-play video-only.mp4 This software streams games from a Raspberry Pi to a Game Boy Advance, through its Link Port. Video and audio are compr

Rodrigo Alfonso 344 Jul 26, 2022