Skip to content

benevolent-games/benevolent.games

Repository files navigation


community-powered games

see the new discussions board for updates and asking questions

join our discord


why are we making games on the web?

let's make something new!

➡️ our unifying vision is that modern games should be instantly playable on the web, for free, without game installations, and playing multiplayer with friends should be as easy as sharing simple invite links.

➡️ we are building our web-native prototype with babylonjs. this provides some important qualities:

  • flexibility – on the web, we can seamlessly integrate with other web apis, to provide a great user experience.
  • not monolithic – we believe the best software systems are a mosaic of great purpose-driven tools. developers should be able to freely mix-and-match the best available tools.
  • 100% open source – developers deserve a platform that is completely free of licensing restrictions, and completely open source.

➡️ we're often asked, "why not use unity?" or "why not use unreal engine?"

  • we have plans to integrate game engines like unity, unreal, and bevy, later down the road.
  • ideally, we'd like benevolent technologies to be game-engine agnostic, allowing developers to use their favorite engine.
  • fully integrating these engines will take a great deal of research and development. we have to start somewhere, and web-native is a good choice for us to start prototyping.

how to work on benevolent games as a developer

💡 getting started

  fundamental skills

  • ℹ️ you don't have to master these skills. just be aware of them, so you know what to study when you encounter the need
  • learn how to use git and github so you can collaborate
    • fork projects on github
    • use a visualization tool like gitk to understand git graphs
    • make and manage branches
    • add and reset staged changes, make and amend commits
    • manage git remotes, fetch, pull, and pull branches
    • interactive rebase to rewrite and cleanup history
    • keep your branches up to date by rebasing onto master regularly
    • resolve and merge conflicts
    • make pull requests on github, and respond to code reviews
  • learn the basics of using a bash shell
  • learn the basics of typescript
  • learn npm to install dependencies and run npm package scripts
  • learn how to write code that blends in with the style and formatting of the rest of the codebase
  • please be aware of the whitespace you author (the vscode setting Render whitespace setting Boundary is great for this)

  technical prerequisites

  • if you're on windows, first, setup wsl and learn how it works
    • or otherwise install a linux virtual machine for development (we recommend debian+kde on vmware)
  • install vscode, git, and nodejs (probably install node via nvm)
  • connect your github with ssh keys
  • install git lfs, and enter git lfs install to setup your user account

  initial setup

  • fork the benevolent games project on github, and git clone your fork
  • open a terminal (linux shell) in your cloned directory, and run these commands
    • npm install to install the project's dependencies
    • npm run build to run a full build of the project

  during your development sessions

  • first, run npm install && npm run build, especially if you've recently pulled any changes
  • run these background processes, each in their own shell
    • npm run watch to continually rebuild source files on save
    • npm start to run a local http server at http://localhost:8080/
      (if npm start fails, try it again, it often works the second time)
    • note: tmux is a great way to split terminal windows
    • note: of course, when you're done, end each process by pressing ctrl+c
  • open vscode by running code .
  • open your web browser
    • disable your browser's caching
      • open chrome's developer tools
      • in the network tab, enable "disable cache" mode
      • or find the equivalent in your plebeian browser
    • see the benevolent games website at http://localhost:8080/
  • now you are ready to code
    • whenever you save a typescript file, the watch routine will automatically rebuild it, then you can refresh the browser to see your changes
    • you can also press vscode hotkey ctrl+shift+b to run the typescript build, which allows vscode to nicely highlight typescript errors for you to address

  the more you know

  • this is an open source project, all contributions are under the mit license