This is the source code for the Ludum Dare family of websites! It's currently live here:
Want to help out? Setup Instructions are here:
Development discussion (site-dev only please):
Many folder are documented. Just browse the tree to learn about the contents.
Source code is found here:
These folders contain the live sites that are served. They tend to be simple
PHP files that include things from the
/src folder. They also contain the output of the toolchain (in the
- /public-ludumdare.com - Ludum Dare focused version of the common site -- https://ldjam.com
- This will be moving to
- This will be moving to
- /public-jammer.tv - Not yet in this repository. Coming soon. -- https://jammer.tv
- The TV widget uses the backend. The frontend site is not currently in active development.
- /public-url.shortener - A variety of URL shortening services. -- https://ldj.am, https://jam.mr
These are not currently in active development.
- /public-jammer.vg - Jammer, the general version of the common site -- https://jammer.vg
- /public-jammer.bio - Jammer Bio's, a variant focused on user pages. i.e.
- /public-api - Restful API calls. https://api.ldjam.com
/vx/is experimental and may change. We are working towards a
- /public-static - Where static files go. Images, etc. -- https://static.jam.vg
- /sandbox - Old code, experiments, and debugging tools. Very chaotic here.
Makefile is the core build script. It is used to build the project. Invoke it with the
make command from inside the VM (or outside with appropriate config).
make- Compile all changed files and build the target
make clean- Delete all intermediate files. NOTE: When you
makeagain, everything needs to be recompiled
make lint- Run all code through the linter. NOTE:
makeonly lints files that have changed. This lints everything
- Advanced build options
make all- Build all targets (default, until you set TARGET in
make TARGET=public-ludumdare.com- Make a specific target (in this case,
make mini- Like
make, but refreshes the UID (used to bypass caching proxies, etc)
make clean-all- Clean all targets
make clean-js- Clean specifically the SVG, CSS, or JS
make clean-all-js- Clean specifically the SVG, CSS, or JS of all targets
make lint-all- Lint all code for all targets
make lint-php- Lint specifically the CSS, JS and PHP code
make lint-all-php- Lint specifically the CSS, JS, or PHP code of all targets
make clean-lint- Force re-linting of everything on build
config.mk- Create this file and you can hardcode makefile settings
TARGET=public-ludumdare.comto build just Ludum Dare
DEBUG=trueto enable debug builds (append
?debugto the URL)
SOURCEMAPS=trueto enable Source Maps. NOTE: Requires a full rebuild when changed
JOBS=2to compile using 2 threads (parallel build)
- NOTE: VirtualBox is really bad at threads. Beyond 2, you start seeing serious diminishing returns, to the point where it actually gets worse than 2 the higher you go.
- If you actually want to try values other than
2, it you'll need to change the number of CPUs in
Vagrantfile, as well as set JOBS.
- Below is a list of benchmarks, testing different combinations of CPUs and Jobs. Testing on an AMD FX-8350 (8 core, which is not Hyperthreaded, but rather has 2 cores per die that share caches)
C,J Sec Change Diff ----------------------- 1,1: 901 = 100% = 0% 2,2: 521 = 173% = 73% 3,3: 427 = 211% = 38% 4,4: 401 = 225% = 14% 8,8: 824 = 109% = -116%