gregcman / sucle Goto Github PK
View Code? Open in Web Editor NEWCommon Lisp Voxel Game Engine
License: MIT License
Common Lisp Voxel Game Engine
License: MIT License
http://report.quicklisp.org/2020-03-26/failure-report/sucle.html#sucle has the full log.
; (during macroexpansion of (CFFI:DEFCALLBACK CHAR-MODS-CALLBACK ...))
; Unknown CFFI type %GLFW:WINDOW```
I just wanna say thank you for creating and realizing this project. This is pretty amazing!!
Running the latest Sucle from master branch (on OSX):
[art@art-osx:~/projects/lisp/sucle]% CL_SOURCE_REGISTRY=`pwd`// rlwrap ros run
* (ql-dist:all-dists)
(#<QL-DIST:DIST quicklisp 2019-12-27> #<QL-DIST:DIST ultralisp 20200119224507>)
* (ql:quickload :sucle)
To load "sucle":
Load 1 ASDF system:
sucle
; Loading "sucle"
debugger invoked on a QUICKLISP-CLIENT:SYSTEM-NOT-FOUND in thread
#<THREAD "main thread" RUNNING {10005084C3}>:
System "claw-support" not found
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE] Try again
1: [ABORT ] Give up on "bodge-glfw"
2: Give up on "sucle"
3: Exit debugger, returning to top level.
I get this: Unhandled SB-KERNEL:SIMPLE-PACKAGE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING {10005E05B3}>: Error finding package for symbol "OBJECT": The name "STRUCT-TO-CLOS" does not designate any package.
http://report.quicklisp.org/2019-04-28/failure-report/sucle.html#text-subsystem
I see that the physics system is not super extensible at the moment. Leaning in to generic functions and CLOS could make it easier to deal with as long as it wouldn't be too slow, though that could be premature optimization talking.
I did some light refactoring purely for my own benefit here (not change reccomendations)
https://github.com/Drainful/sucle/blob/physics-refactor/src/sucle/physics%2B%2B.lisp
I'm curious about your plans/goals for the physics system, and I'm interested in helping out if you're open to it.
Is it intended, that dirt block have height 1/2 now?
Are you planning to add other minecraftish features, like char models, ui and all other stuff?
As this isn’t registered in the ql library, you should explain in the installation instructions where to d/l it to, and how to ql load it locally.
What CL implementation are you using?
Improved config and build instructions wouldn't hurt.
I get this fatal build warning today:
; caught WARNING:
; Duplicate definition for 5FUN found in one file.
; See also:
; The ANSI Standard, Section 3.2.2.3
When I call start
function, lisp exists with SIGABRT and prints following traces in the inferior lisp
buffer:
2018-12-02 00:34:11.848 sbcl[27721:28050727] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /Library/Caches/com.apple.xbs/Sources/Foundation/Foundation-1259.32/Misc.subproj/NSUndoManager.m:359
2018-12-02 00:34:11.849 sbcl[27721:28050727] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.
2018-12-02 00:34:11.850 sbcl[27721:28050727] (
0 CoreFoundation 0x00007fff904f9452 __exceptionPreprocess + 178
1 libobjc.A.dylib 0x00007fff94f9ef7e objc_exception_throw + 48
2 CoreFoundation 0x00007fff904fe16a +[NSException raise:format:arguments:] + 106
3 Foundation 0x00007fff8ea0c866 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198
4 Foundation 0x00007fff8e9918d1 +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 170
5 AppKit 0x00007fff87b87e22 -[NSApplication run] + 844
6 libglfw.3.dylib 0x0000000002419f7c initializeAppKit + 1420
7 libglfw.3.dylib 0x0000000002419641 _glfwPlatformCreateWindow + 35
8 libglfw.3.dylib 0x0000000002415430 glfwCreateWindow + 487
9 ??? 0x00000000228f5375 0x0 + 579818357
)
2018-12-02 00:34:11.851 sbcl[27721:28050727] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /Library/Caches/com.apple.xbs/Sources/Foundation/Foundation-1259.32/Misc.subproj/NSUndoManager.m:359
2018-12-02 00:34:11.851 sbcl[27721:28050727] An uncaught exception was raised
2018-12-02 00:34:11.851 sbcl[27721:28050727] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.
2018-12-02 00:34:11.851 sbcl[27721:28050727] (
0 CoreFoundation 0x00007fff904f9452 __exceptionPreprocess + 178
1 libobjc.A.dylib 0x00007fff94f9ef7e objc_exception_throw + 48
2 CoreFoundation 0x00007fff904fe16a +[NSException raise:format:arguments:] + 106
3 Foundation 0x00007fff8ea0c866 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198
4 Foundation 0x00007fff8e9918d1 +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 170
5 AppKit 0x00007fff87b87ebe -[NSApplication run] + 1000
6 libglfw.3.dylib 0x0000000002419f7c initializeAppKit + 1420
7 libglfw.3.dylib 0x0000000002419641 _glfwPlatformCreateWindow + 35
8 libglfw.3.dylib 0x0000000002415430 glfwCreateWindow + 487
9 ??? 0x00000000228f5375 0x0 + 579818357
)
2018-12-02 00:34:11.851 sbcl[27721:28050727] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff904f9452 __exceptionPreprocess + 178
1 libobjc.A.dylib 0x00007fff94f9ef7e objc_exception_throw + 48
2 CoreFoundation 0x00007fff904fe16a +[NSException raise:format:arguments:] + 106
3 Foundation 0x00007fff8ea0c866 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198
4 Foundation 0x00007fff8e9918d1 +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 170
5 AppKit 0x00007fff87b87ebe -[NSApplication run] + 1000
6 libglfw.3.dylib 0x0000000002419f7c initializeAppKit + 1420
7 libglfw.3.dylib 0x0000000002419641 _glfwPlatformCreateWindow + 35
8 libglfw.3.dylib 0x0000000002415430 glfwCreateWindow + 487
9 ??? 0x00000000228f5375 0x0 + 579818357
)
libc++abi.dylib: terminating with uncaught exception of type NSException
fatal error encountered in SBCL pid 27721(tid 0xb0010000):
SIGABRT received.
Welcome to LDB, a low-level debugger for the Lisp runtime environment.
ldb>
Process inferior-lisp exited abnormally with code 1
I installed sucle per the instructions on my Windows 10 x64 box, and everything works up until (sucle:start), when I get this message:
* (ql:quickload :sucle)
To load "sucle":
Load 1 ASDF system:
sucle
; Loading "sucle"
.............
(:SUCLE)
* (sucle:start)
#<SB-THREAD:THREAD "Anonymous thread" RUNNING {1006207803}>
*
debugger invoked on a SIMPLE-ERROR in thread
#<THREAD "Anonymous thread" RUNNING {1006207803}>:
An exception occurred in context #.(SB-SYS:INT-SAP #X03C0D0F0): #.(SB-SYS:INT-SAP #X03C0DD50). (Exception code: 1073807370)`
On Guix, trying to quickload sucle, I get this error:
Unable to load foreign library (LIBGLFW.SO.BODGED-586).
Error opening shared object "/home/ambrevar/.quicklisp/dists/quicklisp/software/glfw-blob-stable-5af92db3-git/x86_64/libglfw.so.bodged":
libX11.so.6: cannot open shared object file: No such file or directory.
Indeed:
> ldd libglfw.so.bodged
ldd: warning: you do not have execution permission for `./libglfw.so.bodged'
linux-vdso.so.1 (0x00007fff48701000)
librt.so.1 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/librt.so.1 (0x00007f05cd4d9000)
libm.so.6 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libm.so.6 (0x00007f05cd358000)
libdl.so.2 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libdl.so.2 (0x00007f05cd353000)
libX11.so.6 => not found
libpthread.so.0 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libpthread.so.0 (0x00007f05cd332000)
libXrandr.so.2 => not found
libXinerama.so.1 => not found
libXxf86vm.so.1 => not found
libXcursor.so.1 => not found
libc.so.6 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libc.so.6 (0x00007f05cd177000)
/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/ld-linux-x86-64.so.2 (0x00007f05cd705000)
This is because Guix (like Nix) does not follow the FHS and the libraries are stored in /gnu/store
, with symlinks created to ~/.guix-profile/
if the user installs them.
I can hard-patch the libraries, but this is not ideal.
Any other way?
More generally, why do we need to rely on binary libraries here, why not glfw as provided by the system?
I'm also uncomfortable running a random untrusted binary distributed over the Internet, this is a huge security issue. What do you think?
Any plans on supporting PCs with OpenGL 2.1? Aforementioned Minecraft supports it and its widespread across old PCs like mine.
plz help.
Unable to load Sucle with the latest quicklisp dists:
…
[package claw-utils]..............................
[package glfw]....................................
[package window]..
;
; caught ERROR:
; READ error during COMPILE-FILE:
;
; Symbol "DEFCALLBACK" not found in the CLAW package.
;
; Line: 377, Column: 20, File-Position: 9755
;
; Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /Users/art/projects/lisp/sucle/src/window/glfw3.lisp" {100548B903}>
; Debugger entered on #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {1002AC3463}>
;
; compilation unit aborted
; caught 2 fatal ERROR conditions
; caught 1 ERROR condition
[1] CL-USER>
; Evaluation aborted on #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {1002AC3463}>
CL-USER> (ql:where-is-system :claw)
#P"/Users/art/.roswell/lisp/quicklisp/dists/org.borodust.bodge/software/claw-20191116131925/"
CL-USER> (ql-dist:all-dists)
(#<QL-DIST:DIST org.borodust.bodge 20191116132028>
#<QL-DIST:DIST quicklisp 2019-12-27> #<QL-DIST:DIST ultralisp 20200129120504>)
Compare the following 2 screenshots:
Current formatting. Without counting parentheses (or using delimiter coloration) it's unclear how many arguments are being passed to sucle-mp:submit.
Formatted with slime. Indentation makes it clear that it has been called with 1 standard argument and 2 keyword arguments
There seem to be many cases resembling the above. If this is how you prefer to indent your code then feel free to ignore/close, but otherwise I'd be happy to tweak the formatting as I read through.
I'm using SBCL, Emacs + SLIME and quicklisp and i unfortunately can't get it to work 😞
Here's the output of glxinfo:
OpenGL vendor string: X.Org OpenGL renderer string: AMD PALM (DRM 2.50.0 / 4.18.0-18-generic, LLVM 7.0.0) OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.2.8 OpenGL core profile shading language version string: 3.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.1 Mesa 18.2.8 OpenGL shading language version string: 1.40 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.1 Mesa 18.2.8 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10 OpenGL ES profile extensions:
And here's a screenshot of what i have achieved so far...
Hi, this project looks like a lot of fun - thanks for putting it out there! Unfortunately it hasn't worked for me yet.
I'm running with glfw-3.2.1 installed via homebrew on OSX high sierra, SBCL 1.4.12 installed via roswell.
(ql:quickload :sucle) ;; works
(sucle:start) ;; hangs and emits the following in inferior-lisp buffer:
2018-12-02 18:25:29.384 sbcl[3798:3804716] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /BuildRoot/Library/Caches/com.apple.xbs/Sources/Foundation/Foundation-1454.90/Foundation/Misc.subproj/NSUndoManager.m:361
2018-12-02 18:25:29.385 sbcl[3798:3804716] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff4cd9a2db __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00007fff73f4fc76 objc_exception_throw + 48
2 CoreFoundation 0x00007fff4cda0072 +[NSException raise:format:arguments:] + 98
3 Foundation 0x00007fff4eec9340 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193
4 Foundation 0x00007fff4ee57f44 +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 469
5 AppKit 0x00007fff4a2a496e -[NSApplication run] + 997
6 libglfw.3.dylib 0x00000000001ef03f initializeAppKit + 1393
7 libglfw.3.dylib 0x00000000001ee706 _glfwPlatformCreateWindow + 34
8 libglfw.3.dylib 0x00000000001ea592 glfwCreateWindow + 443
9 ??? 0x00000000228606e8 0x0 + 579208936
10 ??? 0x00000000228680b8 0x0 + 579240120
11 ??? 0x0000000022875040 0x0 + 579293248
12 ??? 0x00000000228aabbf 0x0 + 579513279
13 ??? 0x0000000021c7a1f6 0x0 + 566731254
14 ??? 0x0000000021b36753 0x0 + 565405523
)
libc++abi.dylib: terminating with uncaught exception of type NSException
fatal error encountered in SBCL pid 3798(tid 0xb000e000):
SIGABRT received.
Error opening /dev/tty: Device not configured
Welcome to LDB, a low-level debugger for the Lisp runtime environment.
ldb>
Hi! Just a nitpick, but on Ubuntu 16.04, I needed apt-get install libglfw3-dev
(instead of libglfw3
as described in current INSTALL.md) to compile.
COMPILE-FILE-ERROR while
compiling #<CL-SOURCE-FILE "window" "glfw3">
[Condition of type UIOP/LISP-BUILD:COMPILE-FILE-ERROR]
I think you'll need to put the .asd
files in the root of the project to this works, probably.
Hello! I am a Lisp beginner, and this project looks like a fun way to tinker with an existing codebase.
However, I have the same issue as #9 , where textures do not appear. glxinfo | grep -i opengl
confirms I am using OpenGL version 3.2, which no longer supports display lists. (For other OpenGL newbies like me, I found these online class notes helpful for understanding the difference between display lists and vertex arrays.)
I can confirm my local development setup (using lem) is working, as I can make some changes to things like the sky-color
here and re-evaluate it and see my changes.
My current understanding is that the code change will need to be in application/subsystems/sandbox/change-world.lisp
, where at the top of the file you find a draw-world
function that iterates over all the data in the *g/chunk-call-list*
and uses gl:call-list
to execute the display list. The equivalent for vertex arrays seems to be something like gl:draw-elements
, which i see in use in the draw-vertex-array
function in src/opengl/glhelp.lisp
.
So it looks like this functionality is (partly) implemented? But I'm not sure how to plug this into the existing code. I'm thinking i'll need to initialize a vao object, and then change set-chunk-display-list
to update this vao object, and then call draw-vertex-array
in the draw-world
function.
I see some code that looks apropos in dump.lisp
under the 'drawing' heading, but my first attempts at cargo-culting what i saw there were unsuccessful, so i figured I'd try opening an issue as the INSTALL.md suggested. Any pointers would be greatly appreciated!
Thank you for releasing this! I'm hoping i can see it for myself soon 🙂
[package window]..
;
; caught ERROR:
; READ error during COMPILE-FILE:
;
; Symbol "DEFCALLBACK" not found in the CLAW package.
;
; Line: 393, Column: 20, File-Position: 10436
;
; Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /home/aun/quicklisp/dists/quicklisp/software/sucle-20200325-git/src/window/glfw3.lisp" {1004CE9A73}>
.
; Debugger entered on #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {1005999FF3}>
I even deleted all the directories to make quicklisp load me a new one.
Semantic versioning?
https://semver.org/
See #43
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.