Live data from Hacker News

Cl-bodge: a cross-platform Common Lisp game and application framework

borodust.org

11–20 of 38 posts

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#11

I think Lisp is wonderful, and I would love to develop games using Lisp. However, I was under the impression that, by all accounts, developing games in Lisp is completely unrealistic due to the garbage collector. I'm not familiar with Common Lisp, but in Racket, “GC pauses [...] typically run from 50ms to 100ms” [0]. On a 16ms maximum frame budget, that doesn't really work. Am I missing something? [0]: https://docs.r…

Naughty Dog historically disagreed with this [0], plenty of games these days are developed in languages with GC but it is a performance trade off. For maximum performance any Lisp is probably not the way to go but I don't think it's unfeasable. I want to say in general e.g. SBCL (a popular common lisp implementation) will perform a lot better than Racket. Racket is a great language but performance is not it's strong…

Currently, but hopefully no longer in the near future, SBCL’s garbage collector is extremely meh. It’s hard to tune, it stops the world, etc.

Otherwise SBCL is a wonderful implementation.

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#12

I think Lisp is wonderful, and I would love to develop games using Lisp. However, I was under the impression that, by all accounts, developing games in Lisp is completely unrealistic due to the garbage collector. I'm not familiar with Common Lisp, but in Racket, “GC pauses [...] typically run from 50ms to 100ms” [0]. On a 16ms maximum frame budget, that doesn't really work. Am I missing something? [0]: https://docs.r…

I can't speak to the exact numbers, but in comparison to Scheme based lisps, CL has a much wider variety of optional hints you can give to the run time to drastically speed up performance thanks to its more pragmatic industrial heritage.

This is correct. You can declare the types of objects (DECLARE TYPE) which has repercussions on size and allocation, you can declare the type of optimizations you want to do (DECLARE OPTIMIZE) be them speed space or safety, and you can declare things to be stack allocated (DECLARE DYNAMIC-EXTENT), avoiding GC of a particular object altogether.

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#13

I think Lisp is wonderful, and I would love to develop games using Lisp. However, I was under the impression that, by all accounts, developing games in Lisp is completely unrealistic due to the garbage collector. I'm not familiar with Common Lisp, but in Racket, “GC pauses [...] typically run from 50ms to 100ms” [0]. On a 16ms maximum frame budget, that doesn't really work. Am I missing something? [0]: https://docs.r…

Kandria is written in Common Lisp and manages to deal with this.

https://kandria.com/

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#15

There’s a small, somewhat quiet, but very welcoming and very vibrant community of Common Lisp games developers. #lispgames on Libera is where many of them hang out. There are a few people who are trying their darndest to build and support libraries for graphics and other game-necessary things. It’s a tall order, since computers and operating systems have become so wildly complex and incompatible. (It’s no wonder peop…

Even kandria itself is open-source (I believe) here[0].

[0] https://github.com/Shinmera/kandria

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#16

Earlier quoted context omitted.

I can't speak to the exact numbers, but in comparison to Scheme based lisps, CL has a much wider variety of optional hints you can give to the run time to drastically speed up performance thanks to its more pragmatic industrial heritage.

This is correct. You can declare the types of objects (DECLARE TYPE) which has repercussions on size and allocation, you can declare the type of optimizations you want to do (DECLARE OPTIMIZE) be them speed space or safety, and you can declare things to be stack allocated (DECLARE DYNAMIC-EXTENT), avoiding GC of a particular object altogether.

This is what makes CL feel so good to use. I can declare optimizations and types and verify it with DISASSEMBLE to see the resulting assembly. (If your CL implementation compiles to assembly, such as SBCL) It's possible to make things go really fast this way, too.

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#17
post #9

I think Lisp is wonderful, and I would love to develop games using Lisp. However, I was under the impression that, by all accounts, developing games in Lisp is completely unrealistic due to the garbage collector. I'm not familiar with Common Lisp, but in Racket, “GC pauses [...] typically run from 50ms to 100ms” [0]. On a 16ms maximum frame budget, that doesn't really work. Am I missing something? [0]: https://docs.r…

The `portaudio` is a few years old, so I have a hunch that the comment refers to the old backend "Racket BC". The new backend "Racket CS" has a new garbage collection mode "incremental", which I understand is better for this usage scenario. I don't have any numbers though.

I got some more information from Flatt.

The new incremental mode means the 16ms deadline is within reach. In fact if the screen is not involved, then 1-2ms is reachable.

On macOS a screen-refresh can cause a 16ms pause.

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#18

I think Lisp is wonderful, and I would love to develop games using Lisp. However, I was under the impression that, by all accounts, developing games in Lisp is completely unrealistic due to the garbage collector. I'm not familiar with Common Lisp, but in Racket, “GC pauses [...] typically run from 50ms to 100ms” [0]. On a 16ms maximum frame budget, that doesn't really work. Am I missing something? [0]: https://docs.r…

You can write Lisp in a way that you manage your own allocations, including avoiding the heap. It defeats part of the point of Lisp, but sometimes you can use that coding style for a subset of your program that shouldn’t be leaning on the GC too much. I don’t do game development, but in scientific computing, I rely on the GC a lot for workload preparation and other administrivia, then adopt a GC-famished Lisp style f…

And with DISASSEMBLE[1] you can easily check to be 100% sure.

[1] http://clhs.lisp.se/Body/f_disass.htm

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#19
post #4

Earlier quoted context omitted.

On a somewhat related aside, the book Land of Lisp [1] is an interesting introduction to both Common Lisp and game programming. If anyone, like me, was interested in learning Common Lisp through a casual and fun mode, I highly recommend the book. [1] http://landoflisp.com/

I generally recommend people avoid Land of Lisp as an introduction to CL book. It's simultainisouly too easy and too hard for most people approaching the language in that it goes way too briefly over core concepts then all of a sudden shifts gears into much more involved programming. That being said, it's probably the best second book on CL ever. It showcases a variety of lisp techniques on some very real and fun exa…

Fair enough! I haven’t gone through it entirely. What do you recommend as primary texts? I have a few in mind (Practical Common Lisp, for example) but haven’t actually touched them yet.

Re: Cl-bodge: a cross-platform Common Lisp game and application framework

#20
post #4

Earlier quoted context omitted.

On a somewhat related aside, the book Land of Lisp [1] is an interesting introduction to both Common Lisp and game programming. If anyone, like me, was interested in learning Common Lisp through a casual and fun mode, I highly recommend the book. [1] http://landoflisp.com/

I generally recommend people avoid Land of Lisp as an introduction to CL book. It's simultainisouly too easy and too hard for most people approaching the language in that it goes way too briefly over core concepts then all of a sudden shifts gears into much more involved programming. That being said, it's probably the best second book on CL ever. It showcases a variety of lisp techniques on some very real and fun exa…

But for simply and phone based game, would concentrate on JS better than on CL due to the support, and easy of doing both desktop and phone. Wonder?
Post reply on HN