Skip to content

Latest commit

 

History

History
65 lines (58 loc) · 3.54 KB

File metadata and controls

65 lines (58 loc) · 3.54 KB

Game engine by man who has no time to develop game engines.

Name is Ryswick until someone thinks of something cooler.

Big baller manifesto, of sorts

  • AI use only for the most detestable mundane tasks no human should devote time to.
    • An example of this can be seen in this project's .gitignore.
    • Friction fosters creativity and growth. Too little friction and you're left with neither.
    • Also, whenever Microsoft decides to give me free tab-complete, I don't turn it off.
  • Code-first engine
  • No ceremonies.
  • Cross platform
    • This means a robust API-agnostic renderer interface must be implemented.
  • Plug 'n' play with all scripting languages (within reason)
    • If you want to use Lua, you should be able to.
    • If you want to use Python, you should be able to.
    • If you want to use Squirrel, you should be able to.
    • If you want to use Wren, you should be able to.
    • If you want to use C#, you shouldn't be able to.
    • This means the requirements and typical behavior of in-engine use of scripting languages must be thought out and generically implemented.
  • No "plugins" should be supported.
    • If you want to add a feature, implement the feature into the engine.
      • There is no point in developing a wrapper around modularity when you can just write the software to do the thing.
  • All tooling should follow the Unix Philosophy
  • All tooling should be written and compiled for all platforms, within reason.
  • All code that is not overtly self-expplanatory is to be well-documented.
    • Boilerplate is not this.
    • Unless you are reciting FISR-level incantations, do not comment line by line what code is doing. Tell the reader why you wrote it, if deemed helpful.
  • All large decisions should be viewed as forks.
    • If making a decision and presented with more than one option, follow each until desired result is achieved.
      • After deciding which option to pick, but before starting work, create a new branch, such that we can return to the same state if this option doesn't pan out.
  • Code should be written with the understanding that there will be someone who comes after you.
    • Plan it out. Write good software. Treat the person who comes next to a showcase of your work in a way that helps them move forward.

Building

macOS

If on macOS, symlink compile_commands.json from build/ninja to project root.

ln -sf build/ninja/compile_commands.json compile_commands.json

  • Build configuration supports both Ninja and Xcode generators.
  • I have no idea what I'm doing with macOS. If you know how to do things better, please god help me.

Windows

Will need to change C:/Users/dev/vcpkg to your vcpkg root in Makefile.

make configure
make run-debug

Linux

Linux support will be locked arbitrarily to only support omarchy

Very near future TODOs

  • Opengl base implementation (mirror dx12 triangle)
    • Done.
    • For the time being (week or so), I'm going to move forward with just ogl. No point in working on abstractions before knowing what I should abstract.
      • Also DirectX boilerplate is nuts.
  • Textures
  • 3D
  • Asset storage and loading system
  • Linter configuration to enforce standards
  • OpenGL
  • Save file support
    • We're barely rendering triangles at the moment, but after realizing many modern save files take up 25mb~, I'm set on doing the opposite.