Code Monkey home page Code Monkey logo

robotrider's Introduction

                                              
                                       _         _         _    _           
                             ___  ___ | |_  ___ | |_  ___ |_| _| | ___  ___ 
                            |  _|| . || . || . ||  _||  _|| || . || -_||  _|
                            |_|  |___||___||___||_|  |_|  |_||___||___||_|  
                                                

                                                                        

This is a (very work in progress) game engine & game where I get to experiment with a lot of game development ideas and rediscover the joy of coding along the way.

Features

  • Totally isolated platform / renderer / game layers (only Windows platform & OpenGL for now, there's also a PS4 branch which is private for obvious reasons)
  • Hot code reloading (any change in the game layer code is immediately applied live)
  • Looped live code editing a la Handmade Hero (press F1 and input will start recording, press F1 again and whatever was recorded will be played back in a loop.. you can still modify the code live as per the previous point!)
  • Live shaders recompilation (a la ShaderToy)
  • Debug overlay (tilde) & editor mode (F11)
  • Infinite procedural world (WIP)
  • Minimal dependencies (only ImGui and stb_image so far)
  • Pure C++ without all the OOP crap (a.k.a. "C+")

If you wanna have a peek, there's usually a ready to run .exe in the dist/ folder (might be a bit outdated). Otherwise, building on a modern Windows machine should be relatively easy. You'll need to run the build.py script using any version of Python 3. If you encounter any problems, please let me know.

References

A list of papers, articles, sites, etc. that have been useful so far during development:

Marching cubes
http://paulbourke.net/geometry/polygonise/
http://alphanew.net/index.php?section=articles&site=marchoptim&lang=eng

Fast quadric mesh simplification
https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification

Resampling meshes using MC
http://vcg.isti.cnr.it/publications/papers/mi_smi01.pdf

Wave Function Collapse
https://github.com/mxgmn/WaveFunctionCollapse
https://adamsmith.as/papers/wfc_is_constraint_solving_in_the_wild.pdf

Dual Contouring
https://www.cse.wustl.edu/~taoju/research/dualContour.pdf
https://people.eecs.berkeley.edu/~jrs/meshpapers/SchaeferWarren2.pdf
https://www.boristhebrave.com/2018/04/15/dual-contouring-tutorial/

QEF Minimization
https://graphics.rwth-aachen.de/media/papers/308/probabilistic-quadrics.pdf
https://github.com/nickgildea/qef

Zen of Programming

After many many years dedicated to the beautiful art of programming (or 'coding' as I prefer to call it), I've grown more and more frustrated with the way software is conceived these days, what the industry considers 'best practices' and the path software development has taken in general. From a philosophical standpoint I believe this actually merely reflects the sad state of the modern world at large, but that's certainly a huge topic for another time.

In the last few years, however, thanks to the internet, I've discovered I'm not alone in thinking so, and have introduced myself to the ideas of some great minds out there, people like Casey Muratori, Jonathan Blow, Mike Acton, Sean Barrett, Brian Will, Omar Ocornut and others (to all of them, my most sincere thanks!). They showed me there is indeed another way, and above all, that this way is actually superior. This project is my first serious attempt to put some of these ideas into practice, to see where they take me.

With time, I found some of these ideas I actually knew already, I had only be taught very early on to forget about that stuff and write yet another stupid class hierarchy instead. Now I've seriously rediscovered the joy of programming, and why I started doing this in the first place. And so, just for fun, and also to make sure I don't forget these ideas ever again, I've decided to write down my very own


ZEN OF PROGRAMMING
  • Complexity is the enemy
  • Quality is a metric
  • Beauty matters
  • Code is for people, not machines
  • Your dependencies will enslave you
  • Your turnaround is way too long
  • Dumb code is very easy to debug
  • Marrying data and behaviour is like marrying Heaven and Hell
  • C++ is just evil
  • When tempted to abstract away, think twice
  • When tempted to design for the future, don't
  • When in doubt, make it explicit
  • Don't be afraid of long functions
  • Focus. Pay attention. The devil is in the details

robotrider's People

Contributors

n00bmind avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

robotrider's Issues

Need to Get IMGUI work with win32 for fixed function OpenGL

Hello there

I have a working c++ opengl app with minimal dependencies and I want to integrate imgui in a way that
is portable across mobile devices also
I did not find an example like examples/imgui_win32_opengl2/main.cpp
I came across that u have worked on this can u help me
I don't want to use glfw, sdl, glut etc

Bilal
Acnodelabs
facebook.com/algesdk (<<<<<<This is what I am developing)

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.