gpt4 book ai didi

opengl - 常见的 lisp : portability

转载 作者:行者123 更新时间:2023-12-03 12:15:26 31 4
gpt4 key购买 nike

问题

如果我在 windows 上使用 clozure cl 在普通 lisp 中制作 2d 游戏(使用:lispbuilder-sdl、quicklisp、cffi),我以后能否轻松地将其移植到其他平台(linux/iPhone(也许)/android)? lisp“适合”可安装程序吗?

资讯

  • 游戏将使用 OpenGL 绘制图形。很可能它将使用 sdl 进行输入/opengl 初始化,并使用 sdl 或 openal 进行音频。以后可能会使用我自己的库而不是 sdl。
  • 为 cffi 编写几个 C++ 库(以“可移植”方式包装功能)不是问题。

  • 推理

    我真的,真的厌倦了 C++。想尝试一些语法更简单+功能更强大的东西(不是python)。有一个游戏项目,想知道如果我以后突然决定分发/移植游戏,为游戏选择 lisp 是否意味着严重的麻烦。

    - 编辑 -

    附加信息

    What do you mean by "suitable" and "installable programs"?



    如果我尝试将可以在我的机器上运行的已完成程序转换为可安装包(例如 Windows 上的 Windows 安装程序),我不确定 CFFI/quicklisp 的性能如何。例如,quicklisp 在用户的主目录中设置路径/存储库(这可能是 Not Acceptable 行为)并尝试从外部源自动下载包,当您尝试分发程序并确保它作为故意的。 CFFI 在某些时候将外部库“绑定(bind)”到 lisp 函数,我不清楚它的工作情况,例如,如果我转储程序镜像,将其嵌入 exe 并在另一台机器上运行该 exe。根据常识,这应该可以正常工作,但在最坏的情况下,它可能导致我不得不编写特定于 lisp 发行版的复杂安装程序。

    最佳答案

    ** 注意:对不起,如果我在这篇文章中陈述了明显的内容,我不确定你是否熟悉 Common Lisp **

    从 sds 继续:

    在 android 上运行 clozure 似乎有一点生命,但可用的性能还有待观察。我们不太可能在 iphone 商店中看到 lisp 游戏,除非它们编译成编译器在运行时不可用的其他语言(见 Nu 或专有选项见 mocl,两者都有解决这个问题)

    可移植性 - 跨实现

    在库中,让它们在尽可能多的实现中可移植地工作是绝对值得的,但是对于游戏,我真的只是选择一个实现并在那里磨练你的代码。您可能会将您的游戏作为每个平台的包分发,而不是通过 quicklisp 对吗?

    可移植性 - 跨平台

    请务必检查您在每个平台上首选实现的进度,可能会有一些微妙的陷阱。对我来说,我使用 SBCL,在 Windows 下仅完全支持 32 位,而 64 位仍在开发中。

    包装

    这对您来说是一个很好的时机,因为 packaging Clozure apps for Apple Mac Store was posted on openmcl-devel today 上的一些信息.我还没有好好阅读,但该线程可能会提供更多信息。

    Zach Beane 还制作了 buildapp for SBCL

    lispbuilder 的人似乎也有一些 info on making standalone executables .

    工具

    cl-opengl是一个非常好的opengl 包装器。它同时支持旧的和现代的 opengl 风格,所以我发现尝试提供更高级别抽象的领域有点限制(我个人避开了 cl-opengl 的 gl-arrays)。一定要阅读源代码,因为那里有一些很棒的东西,尤其是当您开始编写更多 cffi 代码时。
    {cl-opengl 仍在开发中,可通过 quicklisp 获得——我已经在 linux 和 windows 下愉快地使用它}

    lispbuilder-sdl非常酷,但您可能会再次找到控制某些区域的冲动。例如 sdl:with-events 宏很棒,但它可以控制您的主循环和时间步处理。这可能对您非常有用,但如果不是,请不要害怕挖掘并编写更好的东西来替换这些部分!

    lispbuilder 还提供了一系列库,因此在使用它们之前,请检查 quicklisp 中是否有更新的等价物。例如 lispbuilder 有 lispbuilder-opengl。不要使用这个,坚持使用 cl-opengl。同样 lispbuilder 具有 lispbuilder-regex 而使用 CL-PPCRE 可能要好得多.

    我可能不建议按原样使用它,但我花了一点时间回来剥离所有 lispbuilder-sdl that didn’t pertain to modern opengl games (所以没有 sdl 软件表面等)。我不认为人们应该使用它,但它可能会给你一些想法! {lispbuilder 没有进行大量开发,但可以通过 quicklisp 获得 - 我已经在 linux 和 windows 下愉快地使用它}

    此外,当我在拉皮条由伟大人物编写的代码然后被我撕毁时,请参阅 this video on how to recompile parts of your game whilst it is running .这不是我的技术,但效果很好。

    以上将要求您使用 SLIMESLIMV这意味着使用 Vim 或 Emacs。 SLIME 真的值得你花时间去看看!

    总而言之,祝你好运,Common lisp 开发起来非常有趣,虽然你可能会发现需要一段时间才能获得你喜欢的 opengl 工作流程,但如果你有时间,我相信你会玩得很开心。

    期待看到比赛!

    关于opengl - 常见的 lisp : portability,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978182/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com