Git Product home page Git Product logo

archea's Introduction

Archea

Archea is a 3D Falling Sand Simulation I am developing because I am bored and love falling sand simulations. I also needed an excuse to learn graphics programming and to make a custom game engine. This project has been a bit of a challenge so far and has been through multiple rewrites. See Journey Of Archea

You can watch my streams of making this project on YouTube here.
If you don't feel like watching the streams (I don't blame you, they are long), you can watch my dev log videos instead

Development Setup

Make sure to follow the specific OS instructions.

(SOON) For VSCode, there should be a run and debug configuration already provided.

JetBrains CLion will automatically set up the build configs.

Linux

First you need to install OpenGL development libraries. This is really easy on linux.

sudo apt install libglew-dev libglfw3-dev libglm-dev

You will also need to install CMake.

# TODO add CMake install instructions

Then configure CMake in your IDE of choice.

Windows

Install packages with vcpkg (builtin to CLion)

  • glew
  • glfw3
  • glm

Have fun good luck.

MacOS

I have no idea, you are on your own for this. (I will look later I guess)

Cross Compiling

I have to look up how to do these.

Compile for Windows on Linux

TODO

Compile for Linux on Windows

TODO

Wording

  1. Particle - Refers to a voxel which is simulated (i.e. sand, water)
  2. Voxel - The cubes you see in the world, duh

Journey Of Archea

Here is the journey I went through and some history LOL.

I started out trying to make a 2D falling sand simulation in Godot using C# with a friend. We made some progress but kept dealing with performance issues. We stopped working on it shortly after.

Later I started trying to make a 3D simulation in rust using the Bevy game library. I quickly learned two things:

  1. I needed to make my own engine specifically for the simulation.
  2. Rust wasn't working well for me. I needed to switch to a language I was more comfortable with.

So I decided to switch to c++ and start learning graphics programming. I started out by following a YouTube tutorial to learn directx11. (My learning_d3d11 repository).

I started making a 2d falling sand game in directx11 and quickly made it 3D because I am impatient.
Then decided my code was too messy.
I started looking for ways to render the particles and discovered ray marching. Ray marching seemed interesting so I started experimenting with it in shader toys.
I started learning opengl and messing with ray marching. Once I had a handle on that I came back here (to Archea) and started rewriting it in c++.
3 Days later I have a basic engine working, ray marching working, opengl working, ImGui set up, and a very basic simulation of particles.

I have been spending way too much time working on the shader. I really need to start working on the simulation itself.

archea's People

Contributors

insberr avatar

Watchers

 avatar

archea's Issues

Fix development environment

There are issues with the CMake file and having the developer install glfw, glew, and glm using vcpkg is not ideal.

ImGui Repository Linkage Broken

I need to figure out how to fix this. I might just have the imgui folder contain the imgui assets directly, then updates to ImGui can't cause breakages. I should probably think about some compression, better yet pre-compile it into a lib/dll?

Cloning and compiling the repository doesn't work.

A few things that don't work nicely. I should probably create separate issues for these.

  1. Issue #3 ImGui source code linkage is broken
  2. User needs to manually install OpenGL development onto their system, and the compiler executable will not run without OpenGL development being installed
  3. I need to provide debug and build launch configs for vscode.
  4. [#2] Add cross platform support and cross compiling support. Currently the code will compile on most systems, and will run fine provided that OpenGL is available, but once in a while there are small things that msvc might catch but gcc says is just fine when it's not.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.