使用 Love2D 开发游戏

2022-11-18 14:19:05 浏览数 (1)

Love2D 笔记
  • Love2D 简介
  • Love2D 安装与运行
  • 使用Love2D开发游戏

Love2D 简介


Love2D 是一款让开发者可以使用Lua语言进行开发的 2D游戏框架免费开源。其官网上有详细的介绍与手册,但需要访问国外网站且为全英文。 Love2D 国外的开发者社区比较活跃,但国内的资料就比较少了,可能会有语言障碍。但Lua语言本身的简洁性加上框架的轻量级,英文的社区和手册其实也很好理解。

PICO-8、TIC-80 和 Love2D 一样,都是适合用于2D小游戏的开发工具,三者的共同点是易于上手、适合需要快速开发游戏原型的场景。三者比较而言,开发者社区PICO-8最活跃,TIC-80 和 Love2D 次之;成本而言,PICO-8需要15美金进行购买(不是那么严格);从作品来看,PICO-8 有著名的 蔚蓝Celeste ,但其他两者也有很多有趣的小游戏;从开发角度而言,PICO-8 虽有画面限制,但图形化界面完备,能更快上手,TIC-80 和 Love2D 则更自由,但没有提供图形化用户界面。

这里只提到这三种工具是因为作者要在Gameshell平台上进行游戏开发 (GameJam ),必须三选一,不代表无法用其他工具开发2D游戏,开发者可以根据需要自行选择。

Love2D 安装与运行


  1. 安装和运行 以 macOS 为例,首先在官网 下载官方提供的对应不同系统的 zip 文件 (支持 Windows/Linux/macOS),解压后得到一个 love.app 文件。

在当前目录下输入 love 命令或者直接点击打开文件,出现如下页面即安装成功。

对于macOS,可以通过设置在终端全目录下使用love命令。 先将刚刚解压得到的 love.app 先拖入 Application 目录,然后编辑 ~/.bash_profile,添加如下代码,保存后执行 source ~/.bash_profile 即可。更详细的操作步骤在这里。 alias love="/Applications/love.app/Contents/MacOS/love"

  1. 运行、保存和发布 使用 Love2D 开发的游戏应该满足如下的目录结构,main.lua 和 conf.lua 是必须的,其他的文件目录可自行定义。其中 main.lua 是游戏的入口,而 conf.lua 用于配置窗口大小等信息。 在控制台中可以直接切换到项目路径下,使用 love . 运行,也可以切换到上级目录,输入 love project_name 运行。

如果需要在其他机器上运行和测试,需要先在对应的机器上按照上述步骤安装Love2D。然后将整个文件夹打包为压缩文件(可将后缀修改为.love),在其他机器上使用同样的方式运行。 : 打包后若在新机器上无法正常运行,可能是打包时目录层级不对,main.lua 一定要在第一层目录下。

使用Love2D开发游戏


Love2D在国外的社区比较活跃,但国内的社区并不多,下面先列举一些想要了解或者使用Love2D进行开发的开发者可以参考的资料:

  • 教程:
    • Love2D的安装以及示例程序,中文版本,官网虽然也有但连不上的同学可以看这个。
    • sheepolution这个教程虽然是英文的,但很流畅,过起来非常简单,用于熟悉API很有效。
    • 一个经典的贪吃蛇例子,项目结构简单清晰,可以学习到很多绘图函数以及游戏流程控制,适合入门。
    • 半山无极 这个教程是中文教程里比较经典的了,后来作者又用Love2D复刻了金庸群侠传,适合作为中文手册参考。
    • Alexar 的教程也很不错,有几个不同类型的小游戏的实现过程,而且介绍了游戏的整体框架和实现步骤,可以作为进阶教程。
  • 其他资料:
    • 官方论坛
    • bitbucket仓库
    • redit Love2D频道 (有关于Love2D的问题讨论以及介绍)
    • 简单的小游戏示例代码 (不知道从何下手开始第一个游戏的同学可以看这里)
    • itch 上的 Love2D 频道,有许多国内外玩家开发的小游戏。( 悄悄的说,如果想要开发比较复杂的游戏,比如射击类、平台跳跃、动作类,可以下载一些游戏下来参考大佬的游戏架构)
  • 第三方库: Love2D 本身没有提供复杂的接口,但有许多第三方库可以使用,能让开发者更快的从其他语言过度到 Lua,下面介绍几个常用的库。
    • middleclass,一个简单的让开发者可以使用面向对象方法进行 Lua 开发的库。
    • anim8,方便开发者控制素材切割、动画播放等。
    • bump ,实现物体的碰撞。
    • hump,包括几个常见的库,比如计时器 timer、场景控制 gamestate、镜头控制 camera 等等。

作者使用Love2D进行开发主要是因为参加GameJam,这里给看到最后的小伙伴偷偷放一个机核的链接吧~ 如果之后有测试版本或者策划允许把 love2d 的源码放出来的话,也会附上链接。


本文为博主原创,转载请注明出处

0 人点赞