-_-
-_-
-_-
-_-
-_-
-_-
-_-
-_-
-_-
-_-
0_-
0_0
0_0
:pill:
๐
๐ฃ
๐
0_0
-
Want to improve your coding skills? You can code While Playing 'minecraft
-
Been wanting to play Minecraft but can't afford it? Well here you go.
-
An Open Source license means no one can steal and destroy your items. AKA Notch, Jeb, Mojang, and Microsoft...
-
Do you want to build the city of your dreams? To become the master of the world you inhabit and wreak destruction on the natural environment? Unfortunately cube programs all too often fail to give their users what they really want. What makes this repo different? Everything here is 100% Pure Free and Open Source Common Lisp. If you are not familiar with Common Lisp, do yourself a favor and click here.
๐
๐
๐
๐
๐
(๏พโใฎโ)๏พ
๐
๐ฃ
๐
0_0
:bomb:
:pill:
:meat_on_bone:
๐ฃ
๐
๐
๐
๐ฃ
๐
๐
๐ฃ
๐
๐
๐
๐
๐
๐
(๏พโใฎโ)๏พ
๐
๐ฃ
๐
๐ฃ
๐
๐
๐ฃ ๐
๐ฃ
๐
๐
๐ฃ
๐
๐
๐ฃ
๐
๐
๐ฃ
๐
๐
๐
๐
๐ฃ
๐
๐
๐
๐
๐
๐
(๏พโใฎโ)๏พ
๐
๐ฃ
- Edit the source code on the fly, making it very easy to write mods
- Livecode the graphics, play around with shaders, textures, display lists
- Create ad-hoc functions for manipulating terrain and creating structures,
- Read and write Minecraft McRegion and Anvil world formats [see cl-nbt]
- 3d block physics
- Quite fast, depending on the Common Lisp implementation
- Generate a world based on perlin noise or some random function
- Fly around touching up the world with different "brushes" to use on the world. Create brushes at the REPL or in a source file and C-C C-C it
- Examples:
- Convert stone to dirt and grass
- Grow trees and cacti
- Flood fills pools with water
- Round edges or fill holes
- Draw lines and spheres
- Draw boxes
- Use the resulting terrain as the ultimate parkour experience
- Repeat 2-3
- Be a creative and interesting and artistic mineman pvp parkour legend
- are aware of a voxel engine that is superior in modding capabilities
- share that burning passion for Minecraft
- have a suggestion on how to get a real, non Minecraft life
- do not know what Minecraft is
It would be great if everyone could pool together their Common Lisp game engines. That way I'd have a better Minecraft clone.
https://github.com/terminal625/sucle/blob/master/INSTALL.md
- Requirements
- How to install Common Lisp
- How to install quicklisp
- How to install GLFW
- How to install this repository and how to use
- Opengl Mishaps
If you are:
- New to Common Lisp, start at the beginning.
- Familiar with Common Lisp and Quicklisp, skip to step 4, installing GLFW.
- A suitable Common Lisp
- This other utility library
- sucle, this repository
- quicklisp
- OpenGL
- GLFW 3.2
- an internet connection to download quicklisp libraries
Install SBCL. This means clicking on your architecture from this table and running the platform specific installer.
If using Linux, an easier way to install is to enter
apt-get install sbcl
at the command line.
Otherwise [skip if using SBCL]: Things to keep in mind when using another Common Lisp implementation:
- ECL has been tested before, but I do not recommend it as ECL creates a lot more garbage than SBCL thus causing frame stuttering on garbage collection.
- If the implementation's internal-time-units-per-second is too low, the microsecond clock may become too coarse grained, thus messing up frames.
- The implementation needs to support CFFI and bordeaux-threads
Most implementations start through an executable that has a similar name as the implementation. In the case of installing SBCL with a Linux package manager, entering sbcl
at the command line will run SBCL. However, there are installation situations in which you may need to execute a script or navigate to a directory to run the Common Lisp implementation, and this is implementation specific.
Quicklisp webpage
What is Quicklisp? Quicklisp is the de facto package manager for Common Lisp.
- Download the quicklisp.lisp file.
- Open up your Common Lisp REPL
- Load the file into Common Lisp. It should look something like this:
CL-USER> (load "~/path-to-the-quicklisp-file-goes-here/quicklisp.lisp")
- Install quicklisp in the default home location. For a custom installation directory, see the quicklisp website.
CL-USER> (quicklisp-quickstart:install)
- [optional] Add quicklisp to implementation startup with
CL-USER> (ql:add-to-init-file)
Everything Quicklisp downloads, which is for the most part Common Lisp code, should be inside the quicklisp
directory. Removing quicklisp amounts to deleting the quicklisp
directory and being careful to remove the [Optional from step 5 above] code added by quicklisp to the implementation initialization file.
- Open the Common Lisp REPL
- If quicklisp has been added to implementation startup as in step 5 above then it is already loaded. Otherwise:
CL-USER (load "~/path-to-quicklisp/quicklisp/setup.lisp")
Linux:
apt-get install libglfw3-dev
Windows:
Get the Windows binaries for GLFW from their website here and put them in C:\Windows\System32
. If you do not want to modify that directory, please open an issue for loading from a different directory.
macOS: This is easy if you have a macOS package manager like Homebrew, but more involved if you do not as you must compile GLFW3 yourself.
The quicklisp
directory you choose will have a local-projects
sub-directory. For the default quicklisp installation, this will be ~/quicklisp/local-projects
. This is a directory quicklisp will be able to find when searching for projects to load. Clone or download and extract this repository and this utility library into the local-projects
directory as subdirectories.
(ql:quickload :sucle)
(sucle:start)
F - fly
E - toggle input
WASD move
Space jump
shift down when flying
Scroll wheel change block
Right click to place block left click to remove
Using the command line as a REPL is a very difficult way to progam.
Recommended IDEs:
Yes if:
- If your OpenGL driver provides a compatibility profile, which is likely for NVidia GPUs, for supporting display lists.
- Your OpenGL driver supports GLSL version 110.
Otherwise:
Unfortunately a configuration API for multiple GL versions is unimplemented. In the case of unsupported GLSL 110, a straightforward edit is sufficient. However, for unsupported display lists, a few places would need minor edits to switch from display lists to vertex arrays for creation, deletion, rendering, and iterating, which requires an ability to refactor Common Lisp code.
- If display lists are not supported, the code must be refactored to use vertex arrays. If you are having trouble with this please open an issue. The transition is straightforward as the display lists are used as nothing but interleaved float data. Display lists were chosen over vertex arrays because they were faster on my particular NVidia GPUs.
- If GLSL version 110 is not supported, the GLSL generator version number will need to be changed to match the supported GL version found here. This means changing the default
110
to the new number in this file inside thedefclass shader-program-data
form.
'(iterate alexandria closer-mop read-number cffi split-sequence opticl bordeaux-threads lparallel cl-opengl sb-cga cl-reexport trivial-features cl-glfw3)