borodust / cl-bodge

Feature-rich game framework for Common Lisp
http://borodust.org/projects/cl-bodge/
MIT License
174 stars 14 forks source link

Smaller executable with installation directory? #93

Closed gregcman closed 5 years ago

gregcman commented 5 years ago

Just installed ball-z-2d and bamboozy. However, I was a bit put off by the size of the unzipped directories, as ballz-2d is 70 MiB and bamboozy is 80 MiB! Perhaps C:\Program Files on windows, ~/Library/Application Support/~ on mac, and somewhere on Linux could be used to house the /lib/ cl-bodge binaries and a Common Lisp executable, instead of having to distribute it each time. Maybe an installer could run the first time that downloads the cl-bodge binaries to the correct location? I'm interested in using cl-bodge for all my Common Lisp apps.

borodust commented 5 years ago

Common Lisp executable is the thing that contains all your application code. Unfortunately, Common Lisp executables are quite big (~16mb for CCL and up to ~80mb for SBCL) and we cannot do a whole lot about that, because those executables contain the whole CL runtime (tree shaking isn't available on free implementations yet).

As for libraries, it's just easier to ship them with an application (most games do that regardless of the programming language). cl-bodge doesn't have required number of shared libraries - number of libraries included into distribution depends on the subsystems used (2d, UI, physics, etc). With preinstalled runtime one needs to be really careful about versioning and stuff, so user would still need to install several runtimes if games use different ones.

Native installers for Windows (NSIS-based), Linux (AppImage-based) and MacOS (.app/.dmg-based) are planned.

I'm glad you chose cl-bodge for your applications, but beware - it's not production-ready atm. It's something of a beta quality right now. Documentation is severely lacking and out-of-date. Honestly, I can't recommend using it directly in this state. On the other hand, trivial-gamekit is a stable 2D-oriented framework on top of cl-bodge with fine documentation - I highly recommend starting with it and slowly move from it onto cl-bodge later, once I stabilize it enough (1.0.0 planned for Q1 next year).

gregcman commented 5 years ago

Okay, so libraries are more convenient to distribute with the download.

But what if the common lisp was installed once? And then cl-bodge and application was loaded from a fasl file? Also, does trivial-gamekit support 3d? I can't wait until Q1. Do you have any tips on how to contribute?

borodust commented 5 years ago

There are several problems with that approach:

You can use any 3d thing from cl-bodge in trivial-gamekit and render it in gamekit:draw method just fine.

As for contributions, I think best way around that is to start using those projects, and once you stumble upon something you need - make an issue, we will discuss the details and then you can make a PR out of that :)